Skip to content

Instantly share code, notes, and snippets.

Last active November 10, 2015 22:49
What would you like to do?
D3 circle packing on canvas - performance issues - based on Nadieh Bremers tests
<!DOCTYPE html>
<meta charset="utf-8">
<!-- Original: -->
<!-- D3.js -->
<script src="" charset="utf-8"></script>
<script src=""></script>
<script src=""></script>
<!-- jQuery -->
<script src=""></script>
<!-- Stylesheet -->
body { text-align: center; }
<div id="chart"></div>
.defer(d3.json, "occupation.json")
function drawAll(error, dataset) {
////////////////// Create Set-up variables //////////////////
var width = Math.max($("#chart").width(),350) - 20,
height = (window.innerWidth < 768 ? width : window.innerHeight - 20);
var mobileSize = (window.innerWidth < 768 ? true : false);
var centerX = width/2,
centerY = height/2;
/////////////////////// Create SVG ///////////////////////
//Create the visible canvas and context
var canvas ="#chart").append("canvas")
.attr("id", "canvas")
.attr("width", width)
.attr("height", height);
var context = canvas.node().getContext("2d");
context.clearRect(0, 0, width, height);
//Create a hidden canvas in which each circle will have a different color
//We can use this to capture the clicked on circle
var hiddenCanvas ="#chart").append("canvas")
.attr("id", "hiddenCanvas")
.attr("width", width)
.attr("height", height)
var hiddenContext = hiddenCanvas.node().getContext("2d");
hiddenContext.clearRect(0, 0, width, height);
//Create a custom element, that will not be attached to the DOM, to which we can bind the data
var detachedContainer = document.createElement("custom");
var dataContainer =;
/////////////////////// Create Scales ///////////////////////
var colorCircle = d3.scale.ordinal()
var diameter = Math.min(width*0.9, height*0.9);
var zoomInfo = {
centerX: diameter / 2,
centerY: diameter / 2,
scale: 1
var pack = d3.layout.pack()
.size([diameter, diameter])
.value(function(d) { return d.size; })
.sort(function(d) { return d.ID; });
////////////////// Create Circle Packing /////////////////////
var nodes = pack.nodes(dataset),
root = dataset,
focus = dataset;
//Dataset to swtich between color of a circle (in the hidden canvas) and the node data
var colToCircle = {};
//First zoom to get the circles to the right location
///////////////// Canvas draw function ///////////////////////
var cWidth = canvas.attr("width");
var cHeight = canvas.attr("height");
var nodeCount = nodes.length;
var radius = diameter / 2;
//The draw function of the canvas that gets called on each frame
function drawCanvas(chosenContext, hidden) {
//Clear canvas
chosenContext.fillStyle = "#fff";
chosenContext.rect(0,0, cWidth, cHeight);
//Select our dummy nodes and draw the data to canvas.
var elements = dataContainer.selectAll(".node");
var node = null;
// It's slightly faster than nodes.forEach()
for (var i = 0; i < nodeCount; i++) {
node = nodes[i];
if(hidden) {
if(node.color == null) {
// If we have never drawn the node to the hidden canvas get a new color for it and put it in the dictionary.
node.color = genColor();
colToCircle[node.color] = node;
// On the hidden canvas each rectangle gets a unique color.
chosenContext.fillStyle = node.color;
} else {
chosenContext.fillStyle = node.children ? colorCircle(node.depth) : "white";
chosenContext.arc(((node.x - zoomInfo.centerX) * zoomInfo.scale) + radius,
((node.y - zoomInfo.centerY) * zoomInfo.scale) + radius,
node.r * zoomInfo.scale, 0, 2 * Math.PI, true);
}//function drawCanvas
/////////////////// Click functionality //////////////////////
// Listen for clicks on the main canvas
document.getElementById("canvas").addEventListener("click", function(e){
// We actually only need to draw the hidden canvas when there is an interaction.
// This sketch can draw it on each loop, but that is only for demonstration.
drawCanvas(hiddenContext, true);
//Figure out where the mouse click occurred.
var mouseX = e.layerX;
var mouseY = e.layerY;
// Get the corresponding pixel color on the hidden canvas and look up the node in our map.
// This will return that pixel's color
var col = hiddenContext.getImageData(mouseX, mouseY, 1, 1).data;
//Our map uses these rgb strings as keys to nodes.
var colString = "rgb(" + col[0] + "," + col[1] + ","+ col[2] + ")";
var node = colToCircle[colString];
if(node) {
if (focus !== node) zoomToCanvas(node); else zoomToCanvas(root);
///////////////////// Zoom Function //////////////////////////
var ease = d3.ease("cubic-in-out");
var duration = 2000;
var timeElapsed = 0;
var interpolators = null;
//Zoom into the clicked on circle
//Use the dataContainer to do the transition on
//The canvas will continuously redraw whatever happens to these circles
function zoomToCanvas(focusNode) {
focus = focusNode;
interpolators = [
d3.interpolate(zoomInfo.centerX, focusNode.x),
d3.interpolate(zoomInfo.centerY, focusNode.y),
d3.interpolate(zoomInfo.scale, diameter / (focusNode.r * 2.05))
timeElapsed = 0;
}//function zoomToCanvas
function interpolateZoom(dt) {
if (interpolators) {
timeElapsed += dt;
var pct = Math.min(ease(timeElapsed / duration), 1.0);
zoomInfo.centerX = interpolators[0](pct);
zoomInfo.centerY = interpolators[1](pct);
zoomInfo.scale = interpolators[2](pct);
if (timeElapsed >= duration) {
interpolators = null;
//////////////////// Other Functions /////////////////////////
//Generates the next color in the sequence, going from 0,0,0 to 255,255,255.
var nextCol = 1;
function genColor(){
var ret = [];
// via
if(nextCol < 16777215){
ret.push(nextCol & 0xff); // R
ret.push((nextCol & 0xff00) >> 8); // G
ret.push((nextCol & 0xff0000) >> 16); // B
nextCol += 100; // This is exagerated for this example and would ordinarily be 1.
var col = "rgb(" + ret.join(',') + ")";
return col;
}//function genColor
/////////////////////// Initiate /////////////////////////////
var stats = new Stats();
stats.setMode(0); // 0: fps, 1: ms, 2: mb
// align top-left = 'absolute'; = '0px'; = '0px';
document.body.appendChild( stats.domElement );
var dt = 0;
d3.timer(function(elapsed) {
interpolateZoom(elapsed - dt);
dt = elapsed;
"name": "occupation",
"children": [
"name": "Management, professional, and related occupations",
"children": [
"name": "Management, business, and financial operations occupations",
"children": [
"name": "Business and financial operations occupations",
"children": [
{"name": "Agents and business managers of artists, performers, and athletes", "ID": "", "size":52},
{"name": "Buyers and purchasing agents, farm products", "ID": "", "size":15},
{"name": "Wholesale and retail buyers, except farm products", "ID": "", "size":216},
{"name": "Purchasing agents, except wholesale, retail, and farm products", "ID": "", "size":271},
{"name": "Claims adjusters, appraisers, examiners, and investigators", "ID": "", "size":311},
{"name": "Compliance officers", "ID": "", "size":239},
{"name": "Cost estimators", "ID": "", "size":105},
{"name": "Human resources workers", "ID": "", "size":615},
{"name": "Compensation, benefits, and job analysis specialists", "ID": "", "size":71},
{"name": "Training and development specialists", "ID": "", "size":128},
{"name": "Logisticians", "ID": "", "size":100},
{"name": "Management analysts", "ID": "", "size":850},
{"name": "Meeting, convention, and event planners", "ID": "", "size":156},
{"name": "Fundraisers", "ID": "", "size":92},
{"name": "Market research analysts and marketing specialists", "ID": "", "size":284},
{"name": "Business operations specialists, all other", "ID": "", "size":194},
{"name": "Accountants and auditors", "ID": "", "size":1724},
{"name": "Appraisers and assessors of real estate", "ID": "", "size":95},
{"name": "Budget analysts", "ID": "", "size":48},
{"name": "Credit analysts", "ID": "", "size":28},
{"name": "Financial analysts", "ID": "", "size":261},
{"name": "Personal financial advisors", "ID": "", "size":434},
{"name": "Insurance underwriters", "ID": "", "size":113},
{"name": "Financial examiners", "ID": "", "size":16},
{"name": "Credit counselors and loan officers", "ID": "", "size":288},
{"name": "Tax examiners and collectors, and revenue agents", "ID": "", "size":70},
{"name": "Tax preparers", "ID": "", "size":103},
{"name": "Financial specialists, all other", "ID": "", "size":93}
"name": "Management occupations",
"children": [
{"name": "Chief executives", "ID": "", "size":1603},
{"name": "General and operations managers", "ID": "", "size":887},
{"name": "Legislators", "ID": "", "size":17},
{"name": "Advertising and promotions managers", "ID": "", "size":52},
{"name": "Marketing and sales managers", "ID": "", "size":917},
{"name": "Public relations and fundraising managers", "ID": "", "size":71},
{"name": "Administrative services managers", "ID": "", "size":134},
{"name": "Computer and information systems managers", "ID": "", "size":629},
{"name": "Financial managers", "ID": "", "size":1194},
{"name": "Compensation and benefits managers", "ID": "", "size":17},
{"name": "Human resources managers", "ID": "", "size":236},
{"name": "Training and development managers", "ID": "", "size":38},
{"name": "Industrial production managers", "ID": "", "size":273},
{"name": "Purchasing managers", "ID": "", "size":193},
{"name": "Transportation, storage, and distribution managers", "ID": "", "size":260},
{"name": "Farmers, ranchers, and other agricultural managers", "ID": "", "size":941},
{"name": "Construction managers", "ID": "", "size":711},
{"name": "Education administrators", "ID": "", "size":838},
{"name": "Architectural and engineering managers", "ID": "", "size":122},
{"name": "Food service managers", "ID": "", "size":1113},
{"name": "Funeral service managers", "ID": "", "size":13},
{"name": "Gaming managers", "ID": "", "size":28},
{"name": "Lodging managers", "ID": "", "size":146},
{"name": "Medical and health services managers", "ID": "", "size":593},
{"name": "Natural sciences managers", "ID": "", "size":18},
{"name": "Postmasters and mail superintendents", "ID": "", "size":33},
{"name": "Property, real estate, and community association managers", "ID": "", "size":674},
{"name": "Social and community service managers", "ID": "", "size":362},
{"name": "Emergency management directors", "ID": "", "size":8},
{"name": "Managers, all other", "ID": "", "size":4075}
"name": "Professional and related occupations",
"children": [
"name": "Architecture and engineering occupations",
"children": [
{"name": "Architects, except naval", "ID": "", "size":178},
{"name": "Surveyors, cartographers, and photogrammetrists", "ID": "", "size":41},
{"name": "Aerospace engineers", "ID": "", "size":147},
{"name": "Agricultural engineers", "ID": "", "size":4},
{"name": "Biomedical engineers", "ID": "", "size":14},
{"name": "Chemical engineers", "ID": "", "size":79},
{"name": "Civil engineers", "ID": "", "size":349},
{"name": "Computer hardware engineers", "ID": "", "size":84},
{"name": "Electrical and electronics engineers", "ID": "", "size":271},
{"name": "Environmental engineers", "ID": "", "size":42},
{"name": "Industrial engineers, including health and safety", "ID": "", "size":194},
{"name": "Marine engineers and naval architects", "ID": "", "size":9},
{"name": "Materials engineers", "ID": "", "size":35},
{"name": "Mechanical engineers", "ID": "", "size":303},
{"name": "Mining and geological engineers, including mining safety engineers", "ID": "", "size":15},
{"name": "Nuclear engineers", "ID": "", "size":5},
{"name": "Petroleum engineers", "ID": "", "size":37},
{"name": "Engineers, all other", "ID": "", "size":406},
{"name": "Drafters", "ID": "", "size":138},
{"name": "Engineering technicians, except drafters", "ID": "", "size":369},
{"name": "Surveying and mapping technicians", "ID": "", "size":77}
"name": "Arts, design, entertainment, sports, and media occupations",
"children": [
{"name": "Artists and related workers", "ID": "", "size":203},
{"name": "Designers", "ID": "", "size":830},
{"name": "Actors", "ID": "", "size":43},
{"name": "Producers and directors", "ID": "", "size":161},
{"name": "Athletes, coaches, umpires, and related workers", "ID": "", "size":294},
{"name": "Dancers and choreographers", "ID": "", "size":18},
{"name": "Musicians, singers, and related workers", "ID": "", "size":194},
{"name": "Entertainers and performers, sports and related workers, all other", "ID": "", "size":38},
{"name": "Announcers", "ID": "", "size":60},
{"name": "News analysts, reporters and correspondents", "ID": "", "size":80},
{"name": "Public relations specialists", "ID": "", "size":136},
{"name": "Editors", "ID": "", "size":163},
{"name": "Technical writers", "ID": "", "size":61},
{"name": "Writers and authors", "ID": "", "size":221},
{"name": "Miscellaneous media and communication workers", "ID": "", "size":78},
{"name": "Broadcast and sound engineering technicians and radio operators", "ID": "", "size":108},
{"name": "Photographers", "ID": "", "size":174},
{"name": "Television, video, and motion picture camera operators and editors", "ID": "", "size":72},
{"name": "Media and communication equipment workers, all other", "ID": "", "size":0}
"name": "Community and social service occupations",
"children": [
{"name": "Counselors", "ID": "", "size":737},
{"name": "Social workers", "ID": "", "size":799},
{"name": "Probation officers and correctional treatment specialists", "ID": "", "size":100},
{"name": "Social and human service assistants", "ID": "", "size":180},
{"name": "Miscellaneous community and social service specialists, including health educators and community health workers", "ID": "", "size":114},
{"name": "Clergy", "ID": "", "size":433},
{"name": "Directors, religious activities and education", "ID": "", "size":64},
{"name": "Religious workers, all other", "ID": "", "size":68}
"name": "Computer and mathematical occupations",
"children": [
{"name": "Computer and information research scientists", "ID": "", "size":29},
{"name": "Computer systems analysts", "ID": "", "size":511},
{"name": "Information security analysts", "ID": "", "size":68},
{"name": "Computer programmers", "ID": "", "size":509},
{"name": "Software developers, applications and systems software", "ID": "", "size":1235},
{"name": "Web developers", "ID": "", "size":220},
{"name": "Computer support specialists", "ID": "", "size":524},
{"name": "Database administrators", "ID": "", "size":108},
{"name": "Network and computer systems administrators", "ID": "", "size":205},
{"name": "Computer network architects", "ID": "", "size":123},
{"name": "Computer occupations, all other", "ID": "", "size":512},
{"name": "Actuaries", "ID": "", "size":28},
{"name": "Mathematicians", "ID": "", "size":3},
{"name": "Operations research analysts", "ID": "", "size":138},
{"name": "Statisticians", "ID": "", "size":85},
{"name": "Miscellaneous mathematical science occupations", "ID": "", "size":5}
"name": "Education, training, and library occupations",
"children": [
{"name": "Postsecondary teachers", "ID": "", "size":1259},
{"name": "Preschool and kindergarten teachers", "ID": "", "size":664},
{"name": "Elementary and middle school teachers", "ID": "", "size":3102},
{"name": "Secondary school teachers", "ID": "", "size":1099},
{"name": "Special education teachers", "ID": "", "size":336},
{"name": "Other teachers and instructors", "ID": "", "size":836},
{"name": "Archivists, curators, and museum technicians", "ID": "", "size":47},
{"name": "Librarians", "ID": "", "size":198},
{"name": "Library technicians", "ID": "", "size":36},
{"name": "Teacher assistants", "ID": "", "size":904},
{"name": "Other education, training, and library workers", "ID": "", "size":206}
"name": "Healthcare practitioners and technical occupations",
"children": [
{"name": "Chiropractors", "ID": "", "size":66},
{"name": "Dentists", "ID": "", "size":192},
{"name": "Dietitians and nutritionists", "ID": "", "size":123},
{"name": "Optometrists", "ID": "", "size":48},
{"name": "Pharmacists", "ID": "", "size":293},
{"name": "Physicians and surgeons", "ID": "", "size":1014},
{"name": "Physician assistants", "ID": "", "size":84},
{"name": "Podiatrists", "ID": "", "size":8},
{"name": "Audiologists", "ID": "", "size":20},
{"name": "Occupational therapists", "ID": "", "size":111},
{"name": "Physical therapists", "ID": "", "size":244},
{"name": "Radiation therapists", "ID": "", "size":17},
{"name": "Recreational therapists", "ID": "", "size":10},
{"name": "Respiratory therapists", "ID": "", "size":112},
{"name": "Speech-language pathologists", "ID": "", "size":137},
{"name": "Exercise physiologists", "ID": "", "size":5},
{"name": "Therapists, all other", "ID": "", "size":186},
{"name": "Veterinarians", "ID": "", "size":81},
{"name": "Registered nurses", "ID": "", "size":2888},
{"name": "Nurse anesthetists", "ID": "", "size":30},
{"name": "Nurse midwives", "ID": "", "size":4},
{"name": "Nurse practitioners", "ID": "", "size":128},
{"name": "Health diagnosing and treating practitioners, all other", "ID": "", "size":24},
{"name": "Clinical laboratory technologists and technicians", "ID": "", "size":293},
{"name": "Dental hygienists", "ID": "", "size":175},
{"name": "Diagnostic related technologists and technicians", "ID": "", "size":331},
{"name": "Emergency medical technicians and paramedics", "ID": "", "size":232},
{"name": "Health practitioner support technologists and technicians", "ID": "", "size":583},
{"name": "Licensed practical and licensed vocational nurses", "ID": "", "size":641},
{"name": "Medical records and health information technicians", "ID": "", "size":138},
{"name": "Opticians, dispensing", "ID": "", "size":46},
{"name": "Miscellaneous health technologists and technicians", "ID": "", "size":123},
{"name": "Other healthcare practitioners and technical occupations", "ID": "", "size":108}
"name": "Legal occupations",
"children": [
{"name": "Lawyers", "ID": "", "size":1132},
{"name": "Judicial law clerks", "ID": "", "size":12},
{"name": "Judges, magistrates, and other judicial workers", "ID": "", "size":53},
{"name": "Paralegals and legal assistants", "ID": "", "size":417},
{"name": "Miscellaneous legal support workers", "ID": "", "size":200}
"name": "Life, physical, and social science occupations",
"children": [
{"name": "Agricultural and food scientists", "ID": "", "size":31},
{"name": "Biological scientists", "ID": "", "size":110},
{"name": "Conservation scientists and foresters", "ID": "", "size":27},
{"name": "Medical scientists", "ID": "", "size":143},
{"name": "Life scientists, all other", "ID": "", "size":0},
{"name": "Astronomers and physicists", "ID": "", "size":12},
{"name": "Atmospheric and space scientists", "ID": "", "size":7},
{"name": "Chemists and materials scientists", "ID": "", "size":102},
{"name": "Environmental scientists and geoscientists", "ID": "", "size":91},
{"name": "Physical scientists, all other", "ID": "", "size":183},
{"name": "Economists", "ID": "", "size":33},
{"name": "Survey researchers", "ID": "", "size":4},
{"name": "Psychologists", "ID": "", "size":232},
{"name": "Sociologists", "ID": "", "size":3},
{"name": "Urban and regional planners", "ID": "", "size":24},
{"name": "Miscellaneous social scientists and related workers", "ID": "", "size":42},
{"name": "Agricultural and food science technicians", "ID": "", "size":39},
{"name": "Biological technicians", "ID": "", "size":25},
{"name": "Chemical technicians", "ID": "", "size":71},
{"name": "Geological and petroleum technicians", "ID": "", "size":20},
{"name": "Nuclear technicians", "ID": "", "size":6},
{"name": "Social science research assistants", "ID": "", "size":2},
{"name": "Miscellaneous life, physical, and social science technicians", "ID": "", "size":149}
"name": "Natural resources, construction, and maintenance occupations",
"children": [
"name": "Construction and extraction occupations",
"children": [
{"name": "First-line supervisors of construction trades and extraction workers", "ID": "4.2.1", "size":696},
{"name": "Boilermakers", "ID": "4.2.2", "size":17},
{"name": "Brickmasons, blockmasons, and stonemasons", "ID": "4.2.3", "size":142},
{"name": "Carpenters", "ID": "4.2.4", "size":1282},
{"name": "Carpet, floor, and tile installers and finishers", "ID": "4.2.5", "size":170},
{"name": "Cement masons, concrete finishers, and terrazzo workers", "ID": "4.2.6", "size":58},
{"name": "Construction laborers", "ID": "4.2.7", "size":1686},
{"name": "Paving, surfacing, and tamping equipment operators", "ID": "4.2.8", "size":19},
{"name": "Pile-driver operators", "ID": "4.2.9", "size":1},
{"name": "Operating engineers and other construction equipment operators", "ID": "4.2.10", "size":336},
{"name": "Drywall installers, ceiling tile installers, and tapers", "ID": "4.2.11", "size":162},
{"name": "Electricians", "ID": "4.2.12", "size":769},
{"name": "Glaziers", "ID": "4.2.13", "size":35},
{"name": "Insulation workers", "ID": "4.2.14", "size":44},
{"name": "Painters, construction and maintenance", "ID": "4.2.15", "size":561},
{"name": "Paperhangers", "ID": "4.2.16", "size":4},
{"name": "Pipelayers, plumbers, pipefitters, and steamfitters", "ID": "4.2.17", "size":564},
{"name": "Plasterers and stucco masons", "ID": "4.2.18", "size":31},
{"name": "Reinforcing iron and rebar workers", "ID": "4.2.19", "size":9},
{"name": "Roofers", "ID": "4.2.20", "size":206},
{"name": "Sheet metal workers", "ID": "4.2.21", "size":110},
{"name": "Structural iron and steel workers", "ID": "4.2.22", "size":52},
{"name": "Solar photovoltaic installers", "ID": "4.2.23", "size":14},
{"name": "Helpers, construction trades", "ID": "4.2.24", "size":57},
{"name": "Construction and building inspectors", "ID": "4.2.25", "size":78},
{"name": "Elevator installers and repairers", "ID": "4.2.26", "size":22},
{"name": "Fence erectors", "ID": "4.2.27", "size":33},
{"name": "Hazardous materials removal workers", "ID": "4.2.28", "size":23},
{"name": "Highway maintenance workers", "ID": "4.2.29", "size":123},
{"name": "Rail-track laying and maintenance equipment operators", "ID": "4.2.30", "size":17},
{"name": "Septic tank servicers and sewer pipe cleaners", "ID": "4.2.31", "size":14},
{"name": "Miscellaneous construction and related workers", "ID": "4.2.32", "size":33},
{"name": "Derrick, rotary drill, and service unit operators, oil, gas, and mining", "ID": "4.2.33", "size":54},
{"name": "Earth drillers, except oil and gas", "ID": "4.2.34", "size":29},
{"name": "Explosives workers, ordnance handling experts, and blasters", "ID": "4.2.35", "size":5},
{"name": "Mining machine operators", "ID": "4.2.36", "size":68},
{"name": "Roof bolters, mining", "ID": "4.2.37", "size":3},
{"name": "Roustabouts, oil and gas", "ID": "4.2.38", "size":11},
{"name": "Helpers--extraction workers", "ID": "4.2.39", "size":7},
{"name": "Other extraction workers", "ID": "4.2.40", "size":92}
"name": "Farming, fishing, and forestry occupations",
"children": [
{"name": "First-line supervisors of farming, fishing, and forestry workers", "ID": "4.1.1", "size":44},
{"name": "Agricultural inspectors", "ID": "4.1.2", "size":17},
{"name": "Animal breeders", "ID": "4.1.3", "size":6},
{"name": "Graders and sorters, agricultural products", "ID": "4.1.4", "size":93},
{"name": "Miscellaneous agricultural workers", "ID": "4.1.5", "size":739},
{"name": "Fishers and related fishing workers", "ID": "4.1.6", "size":32},
{"name": "Hunters and trappers", "ID": "4.1.7", "size":2},
{"name": "Forest and conservation workers", "ID": "4.1.8", "size":18},
{"name": "Logging workers", "ID": "4.1.9", "size":71}
"name": "Installation, maintenance, and repair occupations",
"children": [
{"name": "First-line supervisors of mechanics, installers, and repairers", "ID": "4.3.1", "size":284},
{"name": "Computer, automated teller, and office machine repairers", "ID": "4.3.2", "size":265},
{"name": "Radio and telecommunications equipment installers and repairers", "ID": "4.3.3", "size":134},
{"name": "Avionics technicians", "ID": "4.3.4", "size":8},
{"name": "Electric motor, power tool, and related repairers", "ID": "4.3.5", "size":35},
{"name": "Electrical and electronics installers and repairers, transportation equipment", "ID": "4.3.6", "size":5},
{"name": "Electrical and electronics repairers, industrial and utility", "ID": "4.3.7", "size":15},
{"name": "Electronic equipment installers and repairers, motor vehicles", "ID": "4.3.8", "size":17},
{"name": "Electronic home entertainment equipment installers and repairers", "ID": "4.3.9", "size":34},
{"name": "Security and fire alarm systems installers", "ID": "4.3.10", "size":58},
{"name": "Aircraft mechanics and service technicians", "ID": "4.3.11", "size":127},
{"name": "Automotive body and related repairers", "ID": "4.3.12", "size":133},
{"name": "Automotive glass installers and repairers", "ID": "4.3.13", "size":21},
{"name": "Automotive service technicians and mechanics", "ID": "4.3.14", "size":883},
{"name": "Bus and truck mechanics and diesel engine specialists", "ID": "4.3.15", "size":323},
{"name": "Heavy vehicle and mobile equipment service technicians and mechanics", "ID": "4.3.16", "size":211},
{"name": "Small engine mechanics", "ID": "4.3.17", "size":50},
{"name": "Miscellaneous vehicle and mobile equipment mechanics, installers, and repairers", "ID": "4.3.18", "size":93},
{"name": "Control and valve installers and repairers", "ID": "4.3.19", "size":19},
{"name": "Heating, air conditioning, and refrigeration mechanics and installers", "ID": "4.3.20", "size":378},
{"name": "Home appliance repairers", "ID": "4.3.21", "size":51},
{"name": "Industrial and refractory machinery mechanics", "ID": "4.3.22", "size":454},
{"name": "Maintenance and repair workers, general", "ID": "4.3.23", "size":471},
{"name": "Maintenance workers, machinery", "ID": "4.3.24", "size":37},
{"name": "Millwrights", "ID": "4.3.25", "size":48},
{"name": "Electrical power-line installers and repairers", "ID": "4.3.26", "size":115},
{"name": "Telecommunications line installers and repairers", "ID": "4.3.27", "size":184},
{"name": "Precision instrument and equipment repairers", "ID": "4.3.28", "size":85},
{"name": "Wind turbine service technicians", "ID": "4.3.29", "size":4},
{"name": "Coin, vending, and amusement machine servicers and repairers", "ID": "4.3.30", "size":43},
{"name": "Commercial divers", "ID": "4.3.31", "size":3},
{"name": "Locksmiths and safe repairers", "ID": "4.3.32", "size":30},
{"name": "Manufactured building and mobile home installers", "ID": "4.3.33", "size":4},
{"name": "Riggers", "ID": "4.3.34", "size":13},
{"name": "Signal and track switch repairers", "ID": "4.3.35", "size":7},
{"name": "Helpers--installation, maintenance, and repair workers", "ID": "4.3.36", "size":14},
{"name": "Other installation, maintenance, and repair workers", "ID": "4.3.37", "size":224}
"name": "Production, transportation, and material moving occupations",
"children": [
"name": "Production occupations",
"children": [
{"name": "First-line supervisors of production and operating workers", "ID": "5.1.1", "size":789},
{"name": "Aircraft structure, surfaces, rigging, and systems assemblers", "ID": "5.1.2", "size":15},
{"name": "Electrical, electronics, and electromechanical assemblers", "ID": "5.1.3", "size":164},
{"name": "Engine and other machine assemblers", "ID": "5.1.4", "size":10},
{"name": "Structural metal fabricators and fitters", "ID": "5.1.5", "size":24},
{"name": "Miscellaneous assemblers and fabricators", "ID": "5.1.6", "size":1002},
{"name": "Bakers", "ID": "5.1.7", "size":224},
{"name": "Butchers and other meat, poultry, and fish processing workers", "ID": "5.1.8", "size":331},
{"name": "Food and tobacco roasting, baking, and drying machine operators and tenders", "ID": "5.1.9", "size":10},
{"name": "Food batchmakers", "ID": "5.1.10", "size":95},
{"name": "Food cooking machine operators and tenders", "ID": "5.1.11", "size":16},
{"name": "Food processing workers, all other", "ID": "5.1.12", "size":128},
{"name": "Computer control programmers and operators", "ID": "5.1.13", "size":71},
{"name": "Extruding and drawing machine setters, operators, and tenders, metal and plastic", "ID": "5.1.14", "size":14},
{"name": "Forging machine setters, operators, and tenders, metal and plastic", "ID": "5.1.15", "size":5},
{"name": "Rolling machine setters, operators, and tenders, metal and plastic", "ID": "5.1.16", "size":10},
{"name": "Cutting, punching, and press machine setters, operators, and tenders, metal and plastic", "ID": "5.1.17", "size":85},
{"name": "Drilling and boring machine tool setters, operators, and tenders, metal and plastic", "ID": "5.1.18", "size":2},
{"name": "Grinding, lapping, polishing, and buffing machine tool setters, operators, and tenders, metal and plastic", "ID": "5.1.19", "size":45},
{"name": "Lathe and turning machine tool setters, operators, and tenders, metal and plastic", "ID": "5.1.20", "size":9},
{"name": "Milling and planing machine setters, operators, and tenders, metal and plastic", "ID": "5.1.21", "size":5},
{"name": "Machinists", "ID": "5.1.22", "size":391},
{"name": "Metal furnace operators, tenders, pourers, and casters", "ID": "5.1.23", "size":27},
{"name": "Model makers and patternmakers, metal and plastic", "ID": "5.1.24", "size":5},
{"name": "Molders and molding machine setters, operators, and tenders, metal and plastic", "ID": "5.1.25", "size":38},
{"name": "Multiple machine tool setters, operators, and tenders, metal and plastic", "ID": "5.1.26", "size":4},
{"name": "Tool and die makers", "ID": "5.1.27", "size":67},
{"name": "Welding, soldering, and brazing workers", "ID": "5.1.28", "size":615},
{"name": "Heat treating equipment setters, operators, and tenders, metal and plastic", "ID": "5.1.29", "size":4},
{"name": "Layout workers, metal and plastic", "ID": "5.1.30", "size":9},
{"name": "Plating and coating machine setters, operators, and tenders, metal and plastic", "ID": "5.1.31", "size":29},
{"name": "Tool grinders, filers, and sharpeners", "ID": "5.1.32", "size":10},
{"name": "Metal workers and plastic workers, all other", "ID": "5.1.33", "size":342},
{"name": "Prepress technicians and workers", "ID": "5.1.34", "size":25},
{"name": "Printing press operators", "ID": "5.1.35", "size":187},
{"name": "Print binding and finishing workers", "ID": "5.1.36", "size":21},
{"name": "Laundry and dry-cleaning workers", "ID": "5.1.37", "size":156},
{"name": "Pressers, textile, garment, and related materials", "ID": "5.1.38", "size":48},
{"name": "Sewing machine operators", "ID": "5.1.39", "size":158},
{"name": "Shoe and leather workers and repairers", "ID": "5.1.40", "size":4},
{"name": "Shoe machine operators and tenders", "ID": "5.1.41", "size":3},
{"name": "Tailors, dressmakers, and sewers", "ID": "5.1.42", "size":92},
{"name": "Textile bleaching and dyeing machine operators and tenders", "ID": "5.1.43", "size":3},
{"name": "Textile cutting machine setters, operators, and tenders", "ID": "5.1.44", "size":6},
{"name": "Textile knitting and weaving machine setters, operators, and tenders", "ID": "5.1.45", "size":12},
{"name": "Textile winding, twisting, and drawing out machine setters, operators, and tenders", "ID": "5.1.46", "size":12},
{"name": "Extruding and forming machine setters, operators, and tenders, synthetic and glass fibers", "ID": "5.1.47", "size":0},
{"name": "Fabric and apparel patternmakers", "ID": "5.1.48", "size":1},
{"name": "Upholsterers", "ID": "5.1.49", "size":40},
{"name": "Textile, apparel, and furnishings workers, all other", "ID": "5.1.50", "size":14},
{"name": "Cabinetmakers and bench carpenters", "ID": "5.1.51", "size":51},
{"name": "Furniture finishers", "ID": "5.1.52", "size":7},
{"name": "Model makers and patternmakers, wood", "ID": "5.1.53", "size":1},
{"name": "Sawing machine setters, operators, and tenders, wood", "ID": "5.1.54", "size":32},
{"name": "Woodworking machine setters, operators, and tenders, except sawing", "ID": "5.1.55", "size":19},
{"name": "Woodworkers, all other", "ID": "5.1.56", "size":28},
{"name": "Power plant operators, distributors, and dispatchers", "ID": "5.1.57", "size":45},
{"name": "Stationary engineers and boiler operators", "ID": "5.1.58", "size":96},
{"name": "Water and wastewater treatment plant and system operators", "ID": "5.1.59", "size":72},
{"name": "Miscellaneous plant and system operators", "ID": "5.1.60", "size":41},
{"name": "Chemical processing machine setters, operators, and tenders", "ID": "5.1.61", "size":63},
{"name": "Crushing, grinding, polishing, mixing, and blending workers", "ID": "5.1.62", "size":69},
{"name": "Cutting workers", "ID": "5.1.63", "size":60},
{"name": "Extruding, forming, pressing, and compacting machine setters, operators, and tenders", "ID": "5.1.64", "size":40},
{"name": "Furnace, kiln, oven, drier, and kettle operators and tenders", "ID": "5.1.65", "size":9},
{"name": "Inspectors, testers, sorters, samplers, and weighers", "ID": "5.1.66", "size":752},
{"name": "Jewelers and precious stone and metal workers", "ID": "5.1.67", "size":44},
{"name": "Medical, dental, and ophthalmic laboratory technicians", "ID": "5.1.68", "size":85},
{"name": "Packaging and filling machine operators and tenders", "ID": "5.1.69", "size":259},
{"name": "Painting workers", "ID": "5.1.70", "size":156},
{"name": "Photographic process workers and processing machine operators", "ID": "5.1.71", "size":27},
{"name": "Semiconductor processors", "ID": "5.1.72", "size":1},
{"name": "Adhesive bonding machine operators and tenders", "ID": "5.1.73", "size":6},
{"name": "Cleaning, washing, and metal pickling equipment operators and tenders", "ID": "5.1.74", "size":6},
{"name": "Cooling and freezing equipment operators and tenders", "ID": "5.1.75", "size":4},
{"name": "Etchers and engravers", "ID": "5.1.76", "size":13},
{"name": "Molders, shapers, and casters, except metal and plastic", "ID": "5.1.77", "size":31},
{"name": "Paper goods machine setters, operators, and tenders", "ID": "5.1.78", "size":31},
{"name": "Tire builders", "ID": "5.1.79", "size":12},
{"name": "Helpers--production workers", "ID": "5.1.80", "size":54},
{"name": "Production workers, all other", "ID": "5.1.81", "size":947}
"name": "Transportation and material moving occupations",
"children": [
{"name": "Supervisors of transportation and material moving workers", "ID": "5.2.1", "size":199},
{"name": "Aircraft pilots and flight engineers", "ID": "5.2.2", "size":133},
{"name": "Air traffic controllers and airfield operations specialists", "ID": "5.2.3", "size":31},
{"name": "Flight attendants", "ID": "5.2.4", "size":92},
{"name": "Ambulance drivers and attendants, except emergency medical technicians", "ID": "5.2.5", "size":19},
{"name": "Bus drivers", "ID": "5.2.6", "size":584},
{"name": "Driver/sales workers and truck drivers", "ID": "5.2.7", "size":3406},
{"name": "Taxi drivers and chauffeurs", "ID": "5.2.8", "size":383},
{"name": "Motor vehicle operators, all other", "ID": "5.2.9", "size":61},
{"name": "Locomotive engineers and operators", "ID": "5.2.10", "size":55},
{"name": "Railroad brake, signal, and switch operators", "ID": "5.2.11", "size":9},
{"name": "Railroad conductors and yardmasters", "ID": "5.2.12", "size":46},
{"name": "Subway, streetcar, and other rail transportation workers", "ID": "5.2.13", "size":19},
{"name": "Sailors and marine oilers", "ID": "5.2.14", "size":27},
{"name": "Ship and boat captains and operators", "ID": "5.2.15", "size":41},
{"name": "Ship engineers", "ID": "5.2.16", "size":7},
{"name": "Bridge and lock tenders", "ID": "5.2.17", "size":6},
{"name": "Parking lot attendants", "ID": "5.2.18", "size":78},
{"name": "Automotive and watercraft service attendants", "ID": "5.2.19", "size":97},
{"name": "Transportation inspectors", "ID": "5.2.20", "size":47},
{"name": "Transportation attendants, except flight attendants", "ID": "5.2.21", "size":27},
{"name": "Other transportation workers", "ID": "5.2.22", "size":25},
{"name": "Conveyor operators and tenders", "ID": "5.2.23", "size":6},
{"name": "Crane and tower operators", "ID": "5.2.24", "size":74},
{"name": "Dredge, excavating, and loading machine operators", "ID": "5.2.25", "size":44},
{"name": "Hoist and winch operators", "ID": "5.2.26", "size":7},
{"name": "Industrial truck and tractor operators", "ID": "5.2.27", "size":564},
{"name": "Cleaners of vehicles and equipment", "ID": "5.2.28", "size":375},
{"name": "Laborers and freight, stock, and material movers, hand", "ID": "5.2.29", "size":1867},
{"name": "Machine feeders and offbearers", "ID": "5.2.30", "size":17},
{"name": "Packers and packagers, hand", "ID": "5.2.31", "size":505},
{"name": "Pumping station operators", "ID": "5.2.32", "size":27},
{"name": "Refuse and recyclable material collectors", "ID": "5.2.33", "size":84},
{"name": "Mine shuttle car operators", "ID": "5.2.34", "size":1},
{"name": "Tank car, truck, and ship loaders", "ID": "5.2.35", "size":6},
{"name": "Material moving workers, all other", "ID": "5.2.36", "size":41}
"name": "Sales and office occupations",
"children": [
"name": "Office and administrative support occupations",
"children": [
{"name": "First-line supervisors of office and administrative support workers", "ID": "3.2.1", "size":1351},
{"name": "Switchboard operators, including answering service", "ID": "3.2.2", "size":19},
{"name": "Telephone operators", "ID": "3.2.3", "size":33},
{"name": "Communications equipment operators, all other", "ID": "3.2.4", "size":9},
{"name": "Bill and account collectors", "ID": "3.2.5", "size":165},
{"name": "Billing and posting clerks", "ID": "3.2.6", "size":507},
{"name": "Bookkeeping, accounting, and auditing clerks", "ID": "3.2.7", "size":1231},
{"name": "Gaming cage workers", "ID": "3.2.8", "size":14},
{"name": "Payroll and timekeeping clerks", "ID": "3.2.9", "size":146},
{"name": "Procurement clerks", "ID": "3.2.10", "size":31},
{"name": "Tellers", "ID": "3.2.11", "size":361},
{"name": "Financial clerks, all other", "ID": "3.2.12", "size":65},
{"name": "Brokerage clerks", "ID": "3.2.13", "size":5},
{"name": "Correspondence clerks", "ID": "3.2.14", "size":6},
{"name": "Court, municipal, and license clerks", "ID": "3.2.15", "size":69},
{"name": "Credit authorizers, checkers, and clerks", "ID": "3.2.16", "size":44},
{"name": "Customer service representatives", "ID": "3.2.17", "size":2086},
{"name": "Eligibility interviewers, government programs", "ID": "3.2.18", "size":70},
{"name": "File clerks", "ID": "3.2.19", "size":226},
{"name": "Hotel, motel, and resort desk clerks", "ID": "3.2.20", "size":120},
{"name": "Interviewers, except eligibility and loan", "ID": "3.2.21", "size":160},
{"name": "Library assistants, clerical", "ID": "3.2.22", "size":98},
{"name": "Loan interviewers and clerks", "ID": "3.2.23", "size":143},
{"name": "New accounts clerks", "ID": "3.2.24", "size":27},
{"name": "Order clerks", "ID": "3.2.25", "size":104},
{"name": "Human resources assistants, except payroll and timekeeping", "ID": "3.2.26", "size":101},
{"name": "Receptionists and information clerks", "ID": "3.2.27", "size":1301},
{"name": "Reservation and transportation ticket agents and travel clerks", "ID": "3.2.28", "size":94},
{"name": "Information and record clerks, all other", "ID": "3.2.29", "size":95},
{"name": "Cargo and freight agents", "ID": "3.2.30", "size":23},
{"name": "Couriers and messengers", "ID": "3.2.31", "size":233},
{"name": "Dispatchers", "ID": "3.2.32", "size":267},
{"name": "Meter readers, utilities", "ID": "3.2.33", "size":23},
{"name": "Postal service clerks", "ID": "3.2.34", "size":117},
{"name": "Postal service mail carriers", "ID": "3.2.35", "size":311},
{"name": "Postal service mail sorters, processors, and processing machine operators", "ID": "3.2.36", "size":61},
{"name": "Production, planning, and expediting clerks", "ID": "3.2.37", "size":244},
{"name": "Shipping, receiving, and traffic clerks", "ID": "3.2.38", "size":606},
{"name": "Stock clerks and order fillers", "ID": "3.2.39", "size":1483},
{"name": "Weighers, measurers, checkers, and samplers, recordkeeping", "ID": "3.2.40", "size":75},
{"name": "Secretaries and administrative assistants", "ID": "3.2.41", "size":2995},
{"name": "Computer operators", "ID": "3.2.42", "size":87},
{"name": "Data entry keyers", "ID": "3.2.43", "size":292},
{"name": "Word processors and typists", "ID": "3.2.44", "size":101},
{"name": "Desktop publishers", "ID": "3.2.45", "size":2},
{"name": "Insurance claims and policy processing clerks", "ID": "3.2.46", "size":288},
{"name": "Mail clerks and mail machine operators, except postal service", "ID": "3.2.47", "size":79},
{"name": "Office clerks, general", "ID": "3.2.48", "size":1230},
{"name": "Office machine operators, except computer", "ID": "3.2.49", "size":39},
{"name": "Proofreaders and copy markers", "ID": "3.2.50", "size":10},
{"name": "Statistical assistants", "ID": "3.2.51", "size":23},
{"name": "Office and administrative support workers, all other", "ID": "3.2.52", "size":497}
"name": "Sales and related occupations",
"children": [
{"name": "First-line supervisors of retail sales workers", "ID": "3.1.1", "size":3285},
{"name": "First-line supervisors of non-retail sales workers", "ID": "3.1.2", "size":1200},
{"name": "Cashiers", "ID": "3.1.3", "size":3242},
{"name": "Counter and rental clerks", "ID": "3.1.4", "size":113},
{"name": "Parts salespersons", "ID": "3.1.5", "size":93},
{"name": "Retail salespersons", "ID": "3.1.6", "size":3316},
{"name": "Advertising sales agents", "ID": "3.1.7", "size":227},
{"name": "Insurance sales agents", "ID": "3.1.8", "size":562},
{"name": "Securities, commodities, and financial services sales agents", "ID": "3.1.9", "size":256},
{"name": "Travel agents", "ID": "3.1.10", "size":82},
{"name": "Sales representatives, services, all other", "ID": "3.1.11", "size":480},
{"name": "Sales representatives, wholesale and manufacturing", "ID": "3.1.12", "size":1309},
{"name": "Models, demonstrators, and product promoters", "ID": "3.1.13", "size":66},
{"name": "Real estate brokers and sales agents", "ID": "3.1.14", "size":868},
{"name": "Sales engineers", "ID": "3.1.15", "size":43},
{"name": "Telemarketers", "ID": "3.1.16", "size":75},
{"name": "Door-to-door sales workers, news and street vendors, and related workers", "ID": "3.1.17", "size":175},
{"name": "Sales and related workers, all other", "ID": "3.1.18", "size":253}
"name": "Service occupations",
"children": [
"name": "Building and grounds cleaning and maintenance occupations",
"children": [
{"name": "First-line supervisors of housekeeping and janitorial workers", "ID": "2.4.1", "size":282},
{"name": "First-line supervisors of landscaping, lawn service, and groundskeeping workers", "ID": "2.4.2", "size":210},
{"name": "Janitors and building cleaners", "ID": "2.4.3", "size":2328},
{"name": "Maids and housekeeping cleaners", "ID": "2.4.4", "size":1514},
{"name": "Pest control workers", "ID": "2.4.5", "size":80},
{"name": "Grounds maintenance workers", "ID": "2.4.6", "size":1389}
"name": "Food preparation and serving related occupations",
"children": [
{"name": "Chefs and head cooks", "ID": "2.3.1", "size":430},
{"name": "First-line supervisors of food preparation and serving workers", "ID": "2.3.2", "size":545},
{"name": "Cooks", "ID": "2.3.3", "size":1992},
{"name": "Food preparation workers", "ID": "2.3.4", "size":885},
{"name": "Bartenders", "ID": "2.3.5", "size":416},
{"name": "Combined food preparation and serving workers, including fast food", "ID": "2.3.6", "size":428},
{"name": "Counter attendants, cafeteria, food concession, and coffee shop", "ID": "2.3.7", "size":254},
{"name": "Waiters and waitresses", "ID": "2.3.8", "size":2054},
{"name": "Food servers, nonrestaurant", "ID": "2.3.9", "size":185},
{"name": "Dining room and cafeteria attendants and bartender helpers", "ID": "2.3.10", "size":375},
{"name": "Dishwashers", "ID": "2.3.11", "size":246},
{"name": "Hosts and hostesses, restaurant, lounge, and coffee shop", "ID": "2.3.12", "size":297},
{"name": "Food preparation and serving related workers, all other", "ID": "2.3.13", "size":6}
"name": "Healthcare support occupations",
"children": [
{"name": "Nursing, psychiatric, and home health aides", "ID": "2.1.1", "size":1980},
{"name": "Occupational therapy assistants and aides", "ID": "2.1.2", "size":17},
{"name": "Physical therapist assistants and aides", "ID": "2.1.3", "size":70},
{"name": "Massage therapists", "ID": "2.1.4", "size":172},
{"name": "Dental assistants", "ID": "2.1.5", "size":273},
{"name": "Medical assistants", "ID": "2.1.6", "size":508},
{"name": "Medical transcriptionists", "ID": "2.1.7", "size":58},
{"name": "Pharmacy aides", "ID": "2.1.8", "size":45},
{"name": "Veterinary assistants and laboratory animal caretakers", "ID": "2.1.9", "size":41},
{"name": "Phlebotomists", "ID": "2.1.10", "size":118},
{"name": "Miscellaneous healthcare support occupations, including medical equipment preparers", "ID": "2.1.11", "size":179}
"name": "Personal care and service occupations",
"children": [
{"name": "First-line supervisors of gaming workers", "ID": "2.5.1", "size":151},
{"name": "First-line supervisors of personal service workers", "ID": "2.5.2", "size":202},
{"name": "Animal trainers", "ID": "2.5.3", "size":41},
{"name": "Nonfarm animal caretakers", "ID": "2.5.4", "size":201},
{"name": "Gaming services workers", "ID": "2.5.5", "size":99},
{"name": "Motion picture projectionists", "ID": "2.5.6", "size":4},
{"name": "Ushers, lobby attendants, and ticket takers", "ID": "2.5.7", "size":54},
{"name": "Miscellaneous entertainment attendants and related workers", "ID": "2.5.8", "size":189},
{"name": "Embalmers and funeral attendants", "ID": "2.5.9", "size":13},
{"name": "Morticians, undertakers, and funeral directors", "ID": "2.5.10", "size":29},
{"name": "Barbers", "ID": "2.5.11", "size":110},
{"name": "Hairdressers, hairstylists, and cosmetologists", "ID": "2.5.12", "size":760},
{"name": "Miscellaneous personal appearance workers", "ID": "2.5.13", "size":296},
{"name": "Baggage porters, bellhops, and concierges", "ID": "2.5.14", "size":85},
{"name": "Tour and travel guides", "ID": "2.5.15", "size":54},
{"name": "Childcare workers", "ID": "2.5.16", "size":1218},
{"name": "Personal care aides", "ID": "2.5.17", "size":1254},
{"name": "Recreation and fitness workers", "ID": "2.5.18", "size":404},
{"name": "Residential advisors", "ID": "2.5.19", "size":43},
{"name": "Personal care and service workers, all other", "ID": "2.5.20", "size":131}
"name": "Protective service occupations",
"children": [
{"name": "First-line supervisors of correctional officers", "ID": "2.2.1", "size":49},
{"name": "First-line supervisors of police and detectives", "ID": "2.2.2", "size":126},
{"name": "First-line supervisors of fire fighting and prevention workers", "ID": "2.2.3", "size":58},
{"name": "First-line supervisors of protective service workers, all other", "ID": "2.2.4", "size":91},
{"name": "Firefighters", "ID": "2.2.5", "size":300},
{"name": "Fire inspectors", "ID": "2.2.6", "size":13},
{"name": "Bailiffs, correctional officers, and jailers", "ID": "2.2.7", "size":395},
{"name": "Detectives and criminal investigators", "ID": "2.2.8", "size":164},
{"name": "Fish and game wardens", "ID": "2.2.9", "size":3},
{"name": "Parking enforcement workers", "ID": "2.2.10", "size":10},
{"name": "Police and sheriff's patrol officers", "ID": "2.2.11", "size":680},
{"name": "Transit and railroad police", "ID": "2.2.12", "size":3},
{"name": "Animal control workers", "ID": "2.2.13", "size":9},
{"name": "Private detectives and investigators", "ID": "2.2.14", "size":98},
{"name": "Security guards and gaming surveillance officers", "ID": "2.2.15", "size":899},
{"name": "Crossing guards", "ID": "2.2.16", "size":66},
{"name": "Transportation security screeners", "ID": "2.2.17", "size":33},
{"name": "Lifeguards and other recreational, and all other protective service workers", "ID": "2.2.18", "size":141}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment