Skip to content

Instantly share code, notes, and snippets.

@danbjoseph
Last active July 9, 2016 21:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danbjoseph/8397d08dd41e40a4274248505653760b to your computer and use it in GitHub Desktop.
Save danbjoseph/8397d08dd41e40a4274248505653760b to your computer and use it in GitHub Desktop.
Metro warp

This transformation shows the difference between the Washington, DC Metro map and the actual lines at geographic scale. The map version has been kept proportional and geo-referenced so that Metro Center, Gallery Place, and L'Enfant Plaza are approximately correct. In both versions where multiple lines run the same tracks an artificial offset has been added to improve visibility of all colors in a manner similar to the official map.

Data for the visualization is derived from the WMATA Metro map and datasets available from the District of Columbia Open Data Catalog.

// originally from Nick Rabinowitz https://gist.github.com/1756257
// box should be something like: [[0,0],[w, h]]
function fitProjection(projection, data, box, center) {
// get the bounding box for the data - might be more efficient approaches
var left = Infinity,
bottom = -Infinity,
right = -Infinity,
top = Infinity;
// reset projection
projection
.scale(1)
.translate([0, 0]);
data.forEach(function(feature) {
d3.geoBounds(feature).forEach(function(coords) {
coords = projection(coords);
var x = coords[0],
y = coords[1];
if (x < left) left = x;
if (x > right) right = x;
if (y > bottom) bottom = y;
if (y < top) top = y;
});
});
// project the bounding box, find aspect ratio
function width(bb) {
return (bb[1][0] - bb[0][0])
}
function height(bb) {
return (bb[1][1] - bb[0][1]);
}
function aspect(bb) {
return width(bb) / height(bb);
}
var startbox = [[left, top], [right, bottom]],
a1 = aspect(startbox),
a2 = aspect(box),
widthDetermined = a1 > a2,
scale = widthDetermined ?
// scale determined by width
width(box) / width(startbox) :
// scale determined by height
height(box) / height(startbox),
// set x translation
transX = box[0][0] - startbox[0][0] * scale,
// set y translation
transY = box[0][1] - startbox[0][1] * scale;
// center if requested
if (center) {
if (widthDetermined) {
transY = transY - (transY + startbox[1][1] * scale - box[1][1])/2;
} else {
transX = transX - (transX + startbox[1][0] * scale - box[1][0])/2;
}
}
return projection.scale(scale).translate([transX, transY])
}
<!DOCTYPE html>
<meta charset="utf-8">
<style>
html,
body {
margin: 0;
overflow: hidden;
}
.lines path {
fill: none;
stroke-width:3px;
}
.lines .yellow {
stroke: #ffd204;
}
.lines .yellow-rush-N, .lines .yellow-rush-S {
stroke: #ffd204;
stroke-dasharray: 2 2;
}
.lines .silver {
stroke: #a1a3a1;
}
.lines .red {
stroke: #e51937;
}
.lines .green {
stroke: #00a950;
}
.lines .blue {
stroke: #0077c0;
}
.lines .orange {
stroke: #f7941d;
}
.stations circle {
fill: white;
stroke-width: 1;
stroke: #000;
}
#state {
position: fixed;
top: 12px;
left: 12px;
}
#autoplay {
position: fixed;
top: 12px;
left: 43px;
}
.btn {
border: 1px solid #ccc;
border-radius: 2px;
background-color: #fff;
cursor: pointer;
}
.btn:hover {
background-color: #e6e6e6;
border-color: #adadad;
}
.sprite {
background-image: url(sprite.png);
}
@media (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 1.5dppx) {
.sprite {
background-image: url(sprite@2x.png);
background-size: 100px 25px;
}
}
.map {
width: 25px;
height: 25px;
background-position: 0 0;
}
.world {
width: 25px;
height: 25px;
background-position: -25px 0px;
}
.play {
width: 25px;
height: 25px;
background-position: -50px 0px;
}
.pause {
width: 25px;
height: 25px;
background-position: -75px 0px;
}
</style>
<body>
<div id="state" class="btn sprite map"></div>
<div id="autoplay" class="btn sprite pause"></div>
<svg></svg>
<script src="//d3js.org/d3.v4.min.js"></script>
<script src="fitProjection.js"></script>
<script>
var mapLines, worldLines, mapStations, worldStations,
playing = true;
projection = d3.geoMercator(),
path = d3.geoPath(),
margin = {"top": 20, "right": 20, "bottom": 20, "left": 20 },
width = window.innerWidth - margin.left - margin.right,
height = window.innerHeight - margin.top - margin.bottom;
var svg = d3.select("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom )
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
d3.queue()
.defer(d3.json, "map-lines.json")
.defer(d3.json, "world-lines.json")
.defer(d3.json, "map-stations.json")
.defer(d3.json, "world-stations.json")
.await(ready);
function ready(error, mapLinesJson, worldLinesJson, mapStationsJson, worldStationsJson){
mapLines = mapLinesJson;
worldLines = worldLinesJson;
mapStations = mapStationsJson;
worldStations = worldStationsJson;
fitProjection(projection, worldLines.features, [[0,0],[width, height]]);
path.projection(projection);
lines = svg.append("g")
.attr("class", "lines")
.selectAll("path")
.data(mapLines.features, function(d) { return d.properties.name; })
.enter().append("path")
.attr("d", path)
.attr("class", function(d){ return d.properties.name; });
stations = svg.append("g")
.attr("class", "stations")
.selectAll("circle")
.data(mapStations.features, function(d) { return d.properties.name; })
.enter().append("circle")
.attr("cx", function (d) { return projection(d.geometry.coordinates)[0]; })
.attr("cy", function (d) { return projection(d.geometry.coordinates)[1]; })
.attr("r", function (d) {
if(d.properties.type === "lg") return 2.5;
if(d.properties.type === "sm") return 1;
})
warp();
}
function warp() {
if(d3.select("#state").classed("world")){
lines.data(mapLines.features, function(d) { return d.properties.name; })
.transition().attr("d", path).duration(4000);
stations.data(mapStations.features, function(d) { return d.properties.name; })
.transition()
.attr("cx", function (d) { return projection(d.geometry.coordinates)[0]; })
.attr("cy", function (d) { return projection(d.geometry.coordinates)[1]; })
.duration(4000);
d3.select("#state").classed("world", false).classed("map", true);
} else {
lines.data(worldLines.features, function(d) { return d.properties.name; })
.transition().attr("d", path).duration(4000);
stations.data(worldStations.features, function(d) { return d.properties.name; })
.transition()
.attr("cx", function (d) { return projection(d.geometry.coordinates)[0]; })
.attr("cy", function (d) { return projection(d.geometry.coordinates)[1]; })
.duration(4000);
d3.select("#state").classed("world", true).classed("map", false);
}
setTimeout(function () {
if(playing){
warp();
}
}, 5000)
}
d3.select("#state").on("click", warp);
d3.select("#autoplay").on("click", function(){
if(d3.select("#autoplay").classed("pause")){
d3.select("#autoplay").classed("pause", false)
.classed("play", true);
playing = false;
} else {
d3.select("#autoplay").classed("pause", true)
.classed("play", false);
playing = true;
warp();
}
});
d3.select(window).on("resize", throttle);
function throttle() {
window.setTimeout(function() {
width = window.innerWidth - margin.left - margin.right;
height = window.innerHeight - margin.top - margin.bottom;
svg.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom );
fitProjection(projection, worldLines.features, [[0,0],[width, height]]);
path.projection(projection);
lines.attr("d", path);
stations.attr("cx", function (d) { return projection(d.geometry.coordinates)[0]; })
.attr("cy", function (d) { return projection(d.geometry.coordinates)[1]; });
}, 600);
}
</script>
Display the source blob
Display the rendered blob
Raw
{
"type": "FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { "name": "red" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.0265169646148, 38.945993454523482 ], [ -77.026570060803422, 38.944837095937366 ], [ -77.026509329733912, 38.943496633408628 ], [ -77.026207607127077, 38.941974172884343 ], [ -77.026548960396994, 38.939311809545003 ], [ -77.026536504861312, 38.936970900215954 ], [ -77.026689508541537, 38.935659256663833 ], [ -77.026277408403686, 38.933442699610666 ], [ -77.026647046555581, 38.931193053976827 ], [ -77.026580226844331, 38.929641411364081 ], [ -77.025792044803126, 38.928277506477336 ], [ -77.023674411783702, 38.925976594631763 ], [ -77.022254494279764, 38.924041318177593 ], [ -77.021040945867895, 38.922829681383526 ], [ -77.018983486018101, 38.921337322624893 ], [ -77.017895120608188, 38.919920315749373 ], [ -77.01626748457312, 38.91843522390176 ], [ -77.014706380447066, 38.917016118779046 ], [ -77.013897021654373, 38.916009203976529 ], [ -77.012441742395382, 38.91461901622904 ], [ -77.010921280248084, 38.913461380049931 ], [ -77.009856272346994, 38.912298004845454 ], [ -77.009822277203043, 38.911104544051199 ], [ -77.009842455737257, 38.909970722865097 ], [ -77.010076363440362, 38.908827168015264 ], [ -77.009783630315439, 38.907203081657457 ], [ -77.009997632837681, 38.905518623775777 ], [ -77.00982372886979, 38.903824800438016 ], [ -77.009908642910787, 38.902304343741491 ], [ -77.009880285073194, 38.900262154827793 ], [ -77.009889915652337, 38.899101151355865 ], [ -77.009865648780391, 38.898269966556633 ], [ -77.011203009148304, 38.89741860620731 ], [ -77.013498013947952, 38.897241877433757 ], [ -77.015950194629525, 38.897343059628191 ], [ -77.018498289872966, 38.897315511566752 ], [ -77.020962829615613, 38.897271972596315 ], [ -77.028762384539121, 38.897160243772063 ], [ -77.03475575044348, 38.897453518719821 ], [ -77.03576884685252, 38.898696151479136 ], [ -77.035535855576185, 38.900331066643787 ], [ -77.035544302105535, 38.901934622600095 ], [ -77.035456309493625, 38.903759800244032 ], [ -77.035464771946721, 38.904699441183922 ], [ -77.035466968499151, 38.905955551552715 ], [ -77.035519695486727, 38.907038184862088 ], [ -77.036502238052051, 38.908551913137018 ], [ -77.037455520903436, 38.909806640939792 ], [ -77.038841430235394, 38.911241273162183 ], [ -77.03980325559381, 38.912214729491374 ], [ -77.040404712981939, 38.912710479521699 ], [ -77.041102440470141, 38.913365746877027 ], [ -77.04203471801236, 38.914379300755598 ], [ -77.042735086026397, 38.915065027459072 ], [ -77.043294995049607, 38.915627308871791 ], [ -77.043852361679555, 38.916132495486174 ], [ -77.044548904276979, 38.916306684936856 ], [ -77.04536544809288, 38.916336692979812 ], [ -77.046088088049416, 38.916432154862747 ], [ -77.046857455198477, 38.91654524744736 ], [ -77.048320084697707, 38.917692161946526 ], [ -77.049574369819666, 38.91884634514696 ], [ -77.050940366219535, 38.920231705561108 ], [ -77.052286996866869, 38.921422707325178 ], [ -77.053686270765027, 38.922617805798453 ], [ -77.055045553377354, 38.923957633975668 ], [ -77.055899643919233, 38.925131913359685 ], [ -77.056950554842061, 38.925842094230681 ], [ -77.057846918427018, 38.927174190655386 ], [ -77.058953553821951, 38.928183284770853 ], [ -77.060310735267237, 38.929673012051289 ], [ -77.061486226846839, 38.931010492925708 ], [ -77.063324778235909, 38.932359130511834 ], [ -77.064534316516514, 38.933694495652503 ], [ -77.066596061354517, 38.935965688729823 ], [ -77.068710422810383, 38.938076240002928 ], [ -77.070869876129791, 38.93994542488138 ] ] } },
{ "type": "Feature", "properties": { "name": "blue" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.056018537208374, 38.841137553731848 ], [ -77.056030383126568, 38.842655206549999 ], [ -77.056012876909278, 38.843975738669442 ], [ -77.056005160492518, 38.845002548877218 ], [ -77.05601616641502, 38.846001828919924 ], [ -77.05550182933321, 38.846838575403822 ], [ -77.054902850607192, 38.847703118598531 ], [ -77.054319682148076, 38.848519672775161 ], [ -77.051806157382146, 38.848940412182529 ], [ -77.050235960321075, 38.848854739967521 ], [ -77.047972237829384, 38.848920823892108 ], [ -77.045671171111053, 38.848982718748779 ], [ -77.042260107275055, 38.848886985496939 ], [ -77.039421882209339, 38.84896366359024 ], [ -77.036852171820442, 38.849008287828923 ], [ -77.03488955152902, 38.848896923796644 ], [ -77.034292510097657, 38.849346505014417 ], [ -77.033863581113152, 38.849617591225972 ], [ -77.033492399389203, 38.849858842100012 ], [ -77.033428111242614, 38.850511814414105 ], [ -77.033314676297991, 38.851363433621891 ], [ -77.033347625369586, 38.852608915684243 ], [ -77.033393169110312, 38.853578934016006 ], [ -77.033295495095118, 38.854616714970255 ], [ -77.033369127746482, 38.855433328829569 ], [ -77.033362481444868, 38.856231802687049 ], [ -77.033342845824009, 38.856953320614501 ], [ -77.033388008294182, 38.857812657144351 ], [ -77.033440166056039, 38.858540737331303 ], [ -77.03340457473503, 38.859511043924584 ], [ -77.033776451276935, 38.860316859366264 ], [ -77.034053879549674, 38.860844673305841 ], [ -77.037037411625732, 38.861046832686434 ], [ -77.037980882145135, 38.861366853935984 ], [ -77.039332032108888, 38.861906754917939 ], [ -77.040570322352195, 38.863874172715022 ], [ -77.040554887809179, 38.867206794545901 ], [ -77.040657187136432, 38.872600348800809 ], [ -77.04072978166316, 38.875651151698683 ], [ -77.041837766505537, 38.877032132243315 ], [ -77.043826734514113, 38.879111955818964 ], [ -77.047329496892502, 38.882686770823497 ], [ -77.050717318926161, 38.886454619940665 ], [ -77.050825051155186, 38.88959844454147 ], [ -77.050812571633799, 38.892798840291427 ], [ -77.050970883286467, 38.895199313179695 ], [ -77.05102270031567, 38.897288546888277 ], [ -77.050983717962993, 38.899784289242483 ], [ -77.049817261794502, 38.900968671952029 ], [ -77.047304287264524, 38.900997725252552 ], [ -77.043634831312872, 38.90097166799525 ], [ -77.032985554007027, 38.900944267507406 ], [ -77.031572182029308, 38.899981209126658 ], [ -77.031470763557465, 38.89371055873638 ], [ -77.031477254202414, 38.889558161908262 ], [ -77.030897095292076, 38.886999578836203 ], [ -77.028950077059932, 38.884969802291778 ], [ -77.02645777388426, 38.884265625613303 ], [ -77.008335818608572, 38.88425540107341 ], [ -77.006466834708803, 38.885444583719639 ], [ -77.003900991306992, 38.887825444770705 ], [ -77.003430878394738, 38.888045247500223 ], [ -77.003082108349787, 38.888223357535139 ], [ -77.002626267831744, 38.888428188031554 ], [ -77.00159550592663, 38.888390089772798 ], [ -77.000354282868713, 38.888381532664319 ], [ -76.999095659634108, 38.88832657276253 ], [ -76.997457432271432, 38.888303088056347 ], [ -76.995971026717925, 38.888301719298717 ], [ -76.994627734518062, 38.888373273128217 ], [ -76.993205360994992, 38.888324367682308 ], [ -76.991722070387524, 38.888283547698514 ], [ -76.99044870494447, 38.888260061017043 ], [ -76.989027506055308, 38.888277060511221 ], [ -76.987450064834277, 38.88825478980327 ], [ -76.985916717294074, 38.888203102248561 ], [ -76.984086384875567, 38.888161348204001 ], [ -76.982266202027063, 38.888182483367459 ], [ -76.981177747415884, 38.888176108428787 ], [ -76.980096380052728, 38.888146752523937 ], [ -76.978932043218975, 38.888147263243646 ], [ -76.977584542648785, 38.8881996566015 ], [ -76.976144142556322, 38.888278015645355 ] ] } },
{ "type": "Feature", "properties": { "name": "silver" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.084156645413131, 38.904169596409282 ], [ -77.083023810800285, 38.903226468890004 ], [ -77.081673018479989, 38.902053562150904 ], [ -77.080488445825722, 38.900796684751356 ], [ -77.079593971342277, 38.899907631802776 ], [ -77.079043860943358, 38.899383133358761 ], [ -77.078503149771919, 38.898872234432616 ], [ -77.077961771035618, 38.898342494765409 ], [ -77.077476783967072, 38.897931242118673 ], [ -77.077110782635032, 38.897475815265317 ], [ -77.076696292195422, 38.897148384879095 ], [ -77.076395380068448, 38.896865809677458 ], [ -77.07609361240371, 38.896478190237154 ], [ -77.075852738051609, 38.896192350260108 ], [ -77.075571915825563, 38.895931535775382 ], [ -77.075172602947902, 38.895586816341016 ], [ -77.074912266506459, 38.895318015005145 ], [ -77.074639883975081, 38.895181632492793 ], [ -77.07440633690851, 38.894943838405517 ], [ -77.074135443290032, 38.894695668094627 ], [ -77.073903745639228, 38.89448255858381 ], [ -77.073726482735907, 38.894322412122719 ], [ -77.073579626004133, 38.894210543871139 ], [ -77.073426084155116, 38.894047146483707 ], [ -77.073184878183582, 38.893857627316237 ], [ -77.07296106159319, 38.893604650103796 ], [ -77.072677945792236, 38.893309257288685 ], [ -77.072348652288852, 38.89305787474585 ], [ -77.071895424653164, 38.892707254663627 ], [ -77.071471954178591, 38.892263668326514 ], [ -77.07113831049692, 38.89203620503207 ], [ -77.070773478820485, 38.891608783333574 ], [ -77.070347060247997, 38.891708600035081 ], [ -77.069636417245832, 38.891599758016334 ], [ -77.069094624578042, 38.891610259423267 ], [ -77.068427716317828, 38.89159179012524 ], [ -77.067911708572296, 38.891530142798239 ], [ -77.067186404174933, 38.891685356516213 ], [ -77.066378214481361, 38.891626805895505 ], [ -77.065668930820252, 38.891693534693182 ], [ -77.064749423397458, 38.891637980156432 ], [ -77.063818094842432, 38.891665112210831 ], [ -77.063188925926681, 38.891596718589888 ], [ -77.062158940198472, 38.891530903806753 ], [ -77.0611459321903, 38.891493475255992 ], [ -77.060141852894517, 38.891475091847305 ], [ -77.059121002077816, 38.891408673081173 ], [ -77.058354995349248, 38.891419053009699 ], [ -77.057567880663697, 38.891506557453184 ], [ -77.055063290509906, 38.891917987510674 ], [ -77.053640666620822, 38.892802125577845 ], [ -77.053061887361679, 38.894300640532059 ], [ -77.052836402853444, 38.90085699327566 ], [ -77.05016522674093, 38.903104557923506 ], [ -77.044487784572127, 38.902929167046338 ], [ -77.041140441532804, 38.902908506533414 ], [ -77.037674100752525, 38.902935281992384 ], [ -77.032914691036169, 38.902976791676643 ], [ -77.030442929121008, 38.901920335538954 ], [ -77.029386747609578, 38.900271430653547 ], [ -77.02933293993668, 38.894487838881524 ], [ -77.02944633211753, 38.889522950467097 ], [ -77.029252540816799, 38.887834362085869 ], [ -77.028207271324334, 38.886691155364012 ], [ -77.026353667115615, 38.886188301199695 ], [ -77.024367466092372, 38.886113851329917 ], [ -77.022343030868441, 38.886138465952591 ], [ -77.019519773356805, 38.886079340582036 ], [ -77.016992285659072, 38.886097911411731 ], [ -77.014910104726397, 38.886148188851379 ], [ -77.012400100807284, 38.886092775102171 ], [ -77.009517208320318, 38.886167147634254 ], [ -77.007639575058832, 38.88699402232649 ], [ -77.005716890213691, 38.888984661324564 ], [ -77.004752785112643, 38.889505584349529 ], [ -77.003611239246467, 38.890180161891102 ], [ -77.002461801547042, 38.890205983503172 ], [ -77.001131932238764, 38.890243521953657 ], [ -76.999477958987214, 38.890246899952075 ], [ -76.997606979289543, 38.890208405111458 ], [ -76.995944747475008, 38.890233713951424 ], [ -76.99383257717254, 38.890293094275982 ], [ -76.992313177230713, 38.890241654640903 ], [ -76.990702438030965, 38.890315646374184 ], [ -76.98872656765468, 38.890215557213033 ], [ -76.986806664997872, 38.890292325881092 ], [ -76.984357927322066, 38.890341737248711 ], [ -76.981961315345572, 38.890398864362737 ], [ -76.979798214551195, 38.890444416974496 ], [ -76.978226386194336, 38.890485413778265 ], [ -76.976235708809114, 38.890546040524896 ] ] } },
{ "type": "Feature", "properties": { "name": "orange" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.083984001172979, 38.893607572198789 ], [ -77.082700739603325, 38.893579230550472 ], [ -77.081447732669659, 38.893516984874275 ], [ -77.080213060987219, 38.89350103350003 ], [ -77.079168746294712, 38.893498178733793 ], [ -77.078320762999809, 38.893516778860203 ], [ -77.077587735549528, 38.893541000227358 ], [ -77.076536004350899, 38.893565309886256 ], [ -77.075587059452104, 38.893537144821408 ], [ -77.074496759478706, 38.893541897860047 ], [ -77.073504330898331, 38.893539955441781 ], [ -77.07240380379848, 38.893572020058443 ], [ -77.070824146859977, 38.893560174250084 ], [ -77.069355928811746, 38.893639989982418 ], [ -77.067688495169079, 38.893729503090796 ], [ -77.066466728795831, 38.893785229893567 ], [ -77.064918238841287, 38.893743158879793 ], [ -77.063645469273325, 38.89373562465137 ], [ -77.06209374195501, 38.893700469823834 ], [ -77.06017089502582, 38.893735006609198 ], [ -77.058526196506037, 38.893782124967409 ], [ -77.057351121747615, 38.89375189976198 ], [ -77.055501453955017, 38.893954352720222 ], [ -77.054814352924453, 38.894906108239354 ], [ -77.05489705285359, 38.89833715465938 ], [ -77.05505277005112, 38.900738513385015 ], [ -77.053704496330752, 38.902977591893823 ], [ -77.050949735203247, 38.904761085027815 ], [ -77.045550430469447, 38.904867918032373 ], [ -77.038684452792864, 38.904762880293177 ], [ -77.032550266482247, 38.905006594924245 ], [ -77.030212477808874, 38.904057576449027 ], [ -77.02837489126928, 38.902242239427721 ], [ -77.027686804314285, 38.900490766764527 ], [ -77.027600513854395, 38.895829786985388 ], [ -77.027600337270925, 38.889318506656188 ], [ -77.026582156933245, 38.888383202831129 ], [ -77.023591127111345, 38.888379612300398 ], [ -77.019771214440851, 38.888353330792661 ], [ -77.016697837856753, 38.888300679485461 ], [ -77.013189241859038, 38.888276369826563 ], [ -77.010925647677283, 38.888324076796366 ], [ -77.009234625424924, 38.888406600142055 ], [ -77.008037036272967, 38.889587943613961 ], [ -77.006968264768673, 38.890729908970151 ], [ -77.003961813322988, 38.892158204436917 ], [ -77.00062921219228, 38.892277869174251 ], [ -76.998082172096773, 38.892201467389185 ], [ -76.995689524822737, 38.892165591512438 ], [ -76.994430543481386, 38.892591658015746 ], [ -76.993114290231816, 38.893178562637495 ], [ -76.992501957589141, 38.893768998928827 ], [ -76.991819697888943, 38.894442017426968 ], [ -76.991167751685907, 38.89506812358097 ], [ -76.99052745999245, 38.895846091526579 ], [ -76.989335344928335, 38.89707605431628 ], [ -76.988412755113742, 38.897939959554805 ], [ -76.987173551121984, 38.899081924910988 ], [ -76.986274564632382, 38.900093748243449 ], [ -76.98512047387733, 38.901322828115745 ], [ -76.983825704951002, 38.902434774280579 ], [ -76.982901231579291, 38.903496394153983 ] ] } },
{ "type": "Feature", "properties": { "name": "yellow" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.031632385560428, 38.841018083925256 ], [ -77.031641891637705, 38.842070447881341 ], [ -77.031610224333875, 38.843169179715858 ], [ -77.031614697782004, 38.844230152116509 ], [ -77.031561045835076, 38.845259545505087 ], [ -77.031595126446462, 38.84626274567767 ], [ -77.031736393229338, 38.847620437183565 ], [ -77.0318852825324, 38.84916165778489 ], [ -77.031838988230419, 38.850721537373794 ], [ -77.031770709285368, 38.851672733711929 ], [ -77.031719029187315, 38.852990164184696 ], [ -77.03167040986952, 38.854131952957403 ], [ -77.031563576864954, 38.855211231178686 ], [ -77.031662875641103, 38.856328180542071 ], [ -77.031629148196686, 38.857193792754224 ], [ -77.031604308787365, 38.858005134977283 ], [ -77.031639743205403, 38.858677800308477 ], [ -77.031698133475672, 38.859452001139879 ], [ -77.031807909538202, 38.860258045858586 ], [ -77.031828628666375, 38.86100964400471 ], [ -77.0322763266458, 38.861719097560616 ], [ -77.032857492304515, 38.862266535774893 ], [ -77.033414083429079, 38.862643453209984 ], [ -77.034464666835092, 38.863033732128301 ], [ -77.035707726232786, 38.863142360398228 ], [ -77.037142378704772, 38.863202192766892 ], [ -77.038699197513367, 38.864326588066966 ], [ -77.03880385265505, 38.865853917434649 ], [ -77.038845379203082, 38.867401141874254 ], [ -77.038786341460082, 38.868931590883392 ], [ -77.03879979123505, 38.870469485829204 ], [ -77.038753143766101, 38.87248171342916 ], [ -77.036728525892073, 38.874204226401858 ], [ -77.033876172962039, 38.876981678506382 ], [ -77.031917038127972, 38.878613309848753 ], [ -77.023936112367451, 38.878569988035338 ], [ -77.022017974331021, 38.879548701965554 ], [ -77.021973033835707, 38.884070092504842 ], [ -77.022179342199877, 38.907808032951252 ], [ -77.022768130378736, 38.90860672002502 ], [ -77.024206461673202, 38.908570932440028 ], [ -77.026135459593561, 38.908782891475511 ], [ -77.027254645681012, 38.909652977135799 ], [ -77.028137739657538, 38.910459021854507 ], [ -77.028471423570963, 38.913812459835682 ], [ -77.028175234216178, 38.916188508262735 ], [ -77.027108434560716, 38.917142824242312 ], [ -77.026081189604469, 38.91796411400135 ], [ -77.023061788703686, 38.918034570809304 ], [ -77.020174177939083, 38.917838857453845 ], [ -77.01892967644298, 38.91909689701663 ], [ -77.017826853757896, 38.920188182914458 ] ] } },
{ "type": "Feature", "properties": { "name": "yellow-rush-N" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.017831724518913, 38.920223043436209 ], [ -77.017336584444905, 38.920707868092023 ], [ -77.016934283134731, 38.921120484820385 ], [ -77.016449458478931, 38.921625940312623 ], [ -77.016026526332354, 38.922028241622776 ], [ -77.015582963349374, 38.92249243544218 ], [ -77.015046561602517, 38.923111360534712 ], [ -77.014602998619523, 38.923534292681282 ], [ -77.014107858545486, 38.924070694428153 ], [ -77.01358177221681, 38.924617411593225 ], [ -77.013086632142787, 38.925133182503671 ], [ -77.012632753741599, 38.925545799232026 ], [ -77.012343922031747, 38.925844946360087 ], [ -77.01183846653953, 38.926381348106958 ], [ -77.011157648937726, 38.927010588617705 ], [ -77.010590300936229, 38.927588252037403 ], [ -77.01011579169861, 38.928104022947842 ], [ -77.009393712424, 38.928722948040381 ], [ -77.008702579404002, 38.929465658151429 ], [ -77.007887661365487, 38.930301207026346 ], [ -77.006783911617134, 38.931394641356491 ], [ -77.005752369796241, 38.932395236922765 ] ] } },
{ "type": "Feature", "properties": { "name": "yellow-rush-S" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.031881324119581, 38.849067288630842 ], [ -77.033181066813924, 38.847953223464273 ], [ -77.034501440344656, 38.84692168164338 ], [ -77.037265972424649, 38.846921681643373 ], [ -77.040773214615712, 38.846962943316207 ], [ -77.04473433520792, 38.846962943316214 ], [ -77.047292558923743, 38.846962943316214 ], [ -77.048943025837161, 38.846962943316214 ], [ -77.050964847806142, 38.847004204989062 ], [ -77.052666891810617, 38.847045466661889 ], [ -77.052976354356886, 38.84674631953385 ], [ -77.053296132321378, 38.846395595314739 ], [ -77.053584964031231, 38.846137709859512 ], [ -77.053863480322875, 38.84584887814966 ], [ -77.053863480322903, 38.84497206760188 ], [ -77.053832534068263, 38.843930210362785 ], [ -77.053811903231846, 38.843043084396811 ], [ -77.053811903231846, 38.842073435085176 ], [ -77.05381190323186, 38.841021262427866 ] ] } },
{ "type": "Feature", "properties": { "name": "green" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.003959436825596, 38.930799672901266 ], [ -77.004849488024135, 38.929994459801996 ], [ -77.005571494955191, 38.929293903143964 ], [ -77.006584503465703, 38.928278067266334 ], [ -77.007373193255276, 38.927494783970992 ], [ -77.008337062698573, 38.926604144608973 ], [ -77.009139476485558, 38.925812935065046 ], [ -77.01006900971808, 38.92481486009536 ], [ -77.011139401643462, 38.923813720778156 ], [ -77.01186139671367, 38.923103277816779 ], [ -77.012508407253804, 38.922477941754217 ], [ -77.013265391644666, 38.921730166773926 ], [ -77.014012316823653, 38.920986053431974 ], [ -77.014705042458445, 38.920244353192246 ], [ -77.015394601331508, 38.919664806014403 ], [ -77.016041796636515, 38.918999874821253 ], [ -77.01657542250625, 38.918531250647426 ], [ -77.017329133757329, 38.917781764512227 ], [ -77.017760817054253, 38.917357753271176 ], [ -77.018337121974128, 38.916856538262984 ], [ -77.01887847078757, 38.916346346624849 ], [ -77.019555109883967, 38.916174242471875 ], [ -77.020344196870226, 38.916010259342343 ], [ -77.021361527849905, 38.916007656469922 ], [ -77.021919049800701, 38.916025956979468 ], [ -77.022389480635326, 38.915992763558485 ], [ -77.022959504650373, 38.915980009925399 ], [ -77.023650246067945, 38.915973895781541 ], [ -77.024223700493906, 38.915973216852748 ], [ -77.024663398624966, 38.915976199420207 ], [ -77.025521990035458, 38.916021310688699 ], [ -77.025935327185962, 38.915723015485057 ], [ -77.02652658268218, 38.915293205389453 ], [ -77.026469363096055, 38.913468188682032 ], [ -77.026477249608277, 38.911830511979701 ], [ -77.025633451604179, 38.911050458413762 ], [ -77.024323430142289, 38.910740536109067 ], [ -77.022377980840773, 38.910567641262283 ], [ -77.021051819314152, 38.909817248449933 ], [ -77.020178819355507, 38.908399251950861 ], [ -77.020021142938504, 38.906352419716953 ], [ -77.019931873212514, 38.884062492287057 ], [ -77.019917367150285, 38.875666857638961 ], [ -77.01924536297112, 38.875125484603139 ], [ -77.018687300212633, 38.874654558116177 ], [ -77.013375750037753, 38.874779697832913 ], [ -77.010147925938099, 38.874604624279897 ], [ -77.008764269054737, 38.874083470822079 ], [ -77.007966349676749, 38.873195144052723 ], [ -77.007259692466036, 38.872545411277663 ], [ -77.006627840647454, 38.871892350656935 ], [ -77.005747400310355, 38.871095913439568 ], [ -77.004856959152434, 38.870287832900161 ], [ -77.003955963901561, 38.869319031350024 ], [ -77.00322851513809, 38.868491560725033 ], [ -77.00253398552789, 38.86845632572485 ], [ -77.001797568802587, 38.868389362436687 ], [ -77.001255823484982, 38.86883627390749 ], [ -77.000835789028841, 38.869272002251769 ], [ -76.99996991828705, 38.870013656760989 ], [ -76.998960620578245, 38.870080622090832 ], [ -76.998596716984196, 38.869861502535976 ], [ -76.998115838685592, 38.869570152147347 ], [ -76.997657377132541, 38.869222525055051 ], [ -76.997281887900101, 38.868839541033694 ], [ -76.996893716890568, 38.868434683349776 ], [ -76.996402333428463, 38.867857997970752 ], [ -76.996019768265526, 38.867468352418868 ], [ -76.99557700563939, 38.866999966306921 ], [ -76.995220708675092, 38.866628149466152 ], [ -76.994841137175086, 38.866243151134469 ], [ -76.994465992185525, 38.865849439971086 ], [ -76.994095753187125, 38.865513812649738 ], [ -76.993654564793218, 38.865078863692531 ], [ -76.993081079968675, 38.864496978202119 ], [ -76.992441918424831, 38.863890913641065 ] ] } }
]
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment