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
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
{
"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.054323305726101, 39.062328814829293 ], [ -77.05052731412367, 39.059048821599831 ], [ -77.049869310810706, 39.057243813992862 ], [ -77.051890313595038, 39.049416813121148 ], [ -77.052165303282351, 39.045360814547109 ], [ -77.051688302668438, 39.042090815061599 ], [ -77.049651308122705, 39.035602812066315 ], [ -77.044328302872117, 39.019980811327024 ], [ -77.042574306380672, 39.01255480625003 ], [ -77.040649306356485, 39.007286803011432 ], [ -77.040259305810906, 39.004993807968226 ], [ -77.040265307434836, 39.001763805966185 ], [ -77.039376298591733, 38.9996958023468 ], [ -77.036437297032151, 38.997687802561479 ], [ -77.031725293878168, 38.9940718091595 ], [ -77.027053295007619, 38.98973480464938 ], [ -77.023169297163989, 38.984798806506326 ], [ -77.013777290290591, 38.968248804549773 ], [ -77.012304295671854, 38.966312799590789 ], [ -77.007796291613062, 38.962400795704326 ], [ -77.005081284978871, 38.958986797716669 ], [ -76.999636280625879, 38.945479796147737 ], [ -76.995222289030025, 38.935061797371446 ], [ -76.994114286659979, 38.930609797055112 ], [ -76.993817285702249, 38.927010789648911 ], [ -76.994387279151184, 38.924855794630261 ], [ -76.996791279899369, 38.919056794627103 ], [ -76.998608283409624, 38.916234790385069 ], [ -77.002542285241674, 38.908409793341107 ], [ -77.004040289803982, 38.90421078799276 ], [ -77.006306282191687, 38.90085978629488 ], [ -77.008339286380476, 38.895681786835056 ], [ -77.009610283165799, 38.894896790068337 ], [ -77.014095286191392, 38.894852788459993 ], [ -77.01541928596869, 38.895285788567449 ], [ -77.019228289281628, 38.897912783810192 ], [ -77.020498284537382, 38.898333789917984 ], [ -77.03294329024321, 38.898354788258942 ], [ -77.036680294339007, 38.899510789780564 ], [ -77.038224299408895, 38.900819786122476 ], [ -77.045291302219056, 38.912873783756048 ], [ -77.046494293235284, 38.916202792860076 ], [ -77.047866299440685, 38.919089787825683 ], [ -77.051989304015251, 38.924475788800081 ], [ -77.063638309314769, 38.944512793045966 ], [ -77.065383307658777, 38.946026789642268 ], [ -77.066631304554519, 38.946312791639009 ], [ -77.076112307770586, 38.946339793163602 ], [ -77.078062307554674, 38.946745789855619 ], [ -77.079057314704414, 38.947818791558724 ], [ -77.087423311257268, 38.964241801414133 ], [ -77.088718310988895, 38.967949793569261 ], [ -77.089783315696337, 38.974338797638808 ], [ -77.090782319832087, 38.977446795107348 ], [ -77.093001318420406, 38.98179180072853 ], [ -77.094587320580729, 38.986278802299189 ], [ -77.096279316917233, 38.994449803453719 ], [ -77.097361315063552, 39.004334803513451 ], [ -77.097420319194043, 39.008544807517872 ], [ -77.097758323056169, 39.010648807580615 ], [ -77.099287316138017, 39.014184811053546 ], [ -77.102134327242467, 39.018590809801609 ], [ -77.102770324233688, 39.0206398060418 ], [ -77.102723319646316, 39.024750805440469 ], [ -77.103525321301035, 39.02866681080053 ], [ -77.110857326347769, 39.043544809829072 ], [ -77.113702324367793, 39.049961812238848 ], [ -77.114222326629786, 39.051733810431514 ], [ -77.114322327223491, 39.055056814334357 ], [ -77.114765326792366, 39.056596817110666 ], [ -77.116454326150674, 39.058683816634534 ], [ -77.147294339154499, 39.085305822481288 ], [ -77.148668345465339, 39.086720823650026 ], [ -77.15087333748501, 39.090909822842683 ], [ -77.157912351018354, 39.110302820231979 ], [ -77.159960348891616, 39.114138824652805 ], [ -77.164044346106564, 39.119259825078878 ] ] } },
{ "type": "Feature", "properties": { "name": "blue" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.168679326313622, 38.766279755727965 ], [ -77.162666320525034, 38.768978752018029 ], [ -77.160463328884703, 38.770712754352644 ], [ -77.158447328565671, 38.773373756363242 ], [ -77.157572326884235, 38.77559375799359 ], [ -77.155010327784453, 38.790724760487706 ], [ -77.154096324132581, 38.792573756575678 ], [ -77.152489324664487, 38.794374763645578 ], [ -77.148676322079439, 38.796488762029355 ], [ -77.146397318935215, 38.796993761550311 ], [ -77.118380308755718, 38.800800766469308 ], [ -77.113795311325021, 38.802122761029352 ], [ -77.108100316776643, 38.805019764573046 ], [ -77.104868310553627, 38.805962761212413 ], [ -77.101747306544496, 38.806046763566826 ], [ -77.070428300975891, 38.804202762442401 ], [ -77.066346296302356, 38.804435764023651 ], [ -77.062865563348737, 38.805474723491955 ], [ -77.059678846350039, 38.807606123921062 ], [ -77.05673995575512, 38.810188623905958 ], [ -77.047097016803718, 38.823168702758778 ], [ -77.046224269213496, 38.829021424361599 ], [ -77.046742350342981, 38.833614229340583 ], [ -77.046408407633407, 38.836246823981924 ], [ -77.047269602599386, 38.839032343627764 ], [ -77.048916837158458, 38.841563454577397 ], [ -77.049980099720187, 38.844805171911617 ], [ -77.048902985892028, 38.847003364376292 ], [ -77.044328215055543, 38.849099834084882 ], [ -77.043229414609812, 38.850808480348121 ], [ -77.045550507880364, 38.856772828950511 ], [ -77.047324304550898, 38.858009448973235 ], [ -77.049008358807839, 38.858014717775177 ], [ -77.054440934520528, 38.857271529900004 ], [ -77.057524721576442, 38.857496405956113 ], [ -77.059078036745575, 38.858439992744195 ], [ -77.059771408285712, 38.860197489945847 ], [ -77.058928632835432, 38.865118506811996 ], [ -77.052031300877843, 38.87092577781101 ], [ -77.051682295438184, 38.872621783281488 ], [ -77.052529298090576, 38.873677775848137 ], [ -77.055953304237505, 38.876543784769524 ], [ -77.06154630075207, 38.882201783441758 ], [ -77.065119307165389, 38.887550782523476 ], [ -77.068414589365375, 38.890593665810513 ], [ -77.069202950869737, 38.892876004351592 ], [ -77.0693335241304, 38.896343472110743 ], [ -77.06799506395862, 38.898445433307643 ], [ -77.065647264318216, 38.898999766165502 ], [ -77.047146774801604, 38.899343844391865 ], [ -77.043871100007266, 38.899947836986257 ], [ -77.030465354600267, 38.899605411572566 ], [ -77.029248873201198, 38.897854790877204 ], [ -77.029501857770924, 38.892174812222891 ], [ -77.030374666961961, 38.890109455528489 ], [ -77.029676373704433, 38.886684553910356 ], [ -77.028398783439684, 38.884733533597398 ], [ -77.026103370842691, 38.883714331993076 ], [ -77.003177285447862, 38.883782863684644 ], [ -77.00024509242337, 38.884302618363449 ], [ -76.997669404492626, 38.883995923015902 ], [ -76.987591031342106, 38.880012111891176 ], [ -76.983107559145424, 38.880081932107828 ], [ -76.977581786227063, 38.88194064346493 ], [ -76.975724083891635, 38.883802539290173 ], [ -76.975418091082304, 38.888401221722177 ], [ -76.973686930458939, 38.890403768367321 ], [ -76.966752346530484, 38.89581446363195 ], [ -76.963070611024989, 38.896187186973748 ], [ -76.950839269825622, 38.894575326355778 ], [ -76.940655265552493, 38.890923323320521 ], [ -76.93649426307536, 38.888677328855806 ], [ -76.915315260130512, 38.888496329711415 ], [ -76.908499259386247, 38.887627321601656 ], [ -76.905248248246664, 38.886384329306054 ], [ -76.900210248406438, 38.885466323205264 ], [ -76.888988235386194, 38.8854836363343 ], [ -76.882659258286537, 38.886745182143272 ], [ -76.86259055189322, 38.894319094482739 ], [ -76.850030463794553, 38.895392325818364 ], [ -76.844455777998974, 38.899370026226848 ], [ -76.841257505989461, 38.902927071884733 ], [ -76.840919693137437, 38.907081065906709 ] ] } },
{ "type": "Feature", "properties": { "name": "silver" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.340061540340798, 38.94774192292391 ], [ -77.329747983521997, 38.944838865944917 ], [ -77.326437261742001, 38.944614977681056 ], [ -77.320775797585043, 38.945235506395534 ], [ -77.311505203515935, 38.947894957310837 ], [ -77.304064393753436, 38.948133799814286 ], [ -77.300655996319904, 38.947726055070234 ], [ -77.29293508651017, 38.945628371835255 ], [ -77.284620697021012, 38.942566056708813 ], [ -77.274630410500038, 38.941419496835465 ], [ -77.270904670815355, 38.939575699972522 ], [ -77.26619907511315, 38.935362950433273 ], [ -77.262812997403955, 38.933345494915955 ], [ -77.259364027988852, 38.93242009900996 ], [ -77.253120894038034, 38.93261316292643 ], [ -77.248554152203951, 38.93365070953206 ], [ -77.246767133867593, 38.933443800705447 ], [ -77.244741130240698, 38.932131460517269 ], [ -77.234212795801568, 38.921351309020451 ], [ -77.232559636143094, 38.919824026851643 ], [ -77.23102819579799, 38.919414924394857 ], [ -77.227859461614059, 38.919688025498544 ], [ -77.225556682476622, 38.920308551939797 ], [ -77.218615595446124, 38.921176696373266 ], [ -77.20843032632115, 38.925360914526379 ], [ -77.204462012920885, 38.928037516085283 ], [ -77.20142468045816, 38.928092847489268 ], [ -77.199125142076866, 38.926789292289129 ], [ -77.197805419311635, 38.925499969149882 ], [ -77.192162347223302, 38.916938148682334 ], [ -77.187764428767309, 38.912110008866705 ], [ -77.186986980362519, 38.910094012764034 ], [ -77.187076332700485, 38.908667147570611 ], [ -77.188263726648756, 38.903771951502904 ], [ -77.189207354203063, 38.901884415959387 ], [ -77.188953062671203, 38.90050431145778 ], [ -77.185507476154328, 38.898833458890181 ], [ -77.173476473399944, 38.894697458633232 ], [ -77.171595480212659, 38.893937459574317 ], [ -77.169194467965269, 38.892312459785728 ], [ -77.162993466419493, 38.887140457817338 ], [ -77.158802465710437, 38.8849394595386 ], [ -77.139275450635921, 38.878310459936756 ], [ -77.135563456173372, 38.877584458388242 ], [ -77.127453440437421, 38.877877123220173 ], [ -77.121415437055703, 38.880128131817457 ], [ -77.105169028962564, 38.880928208180876 ], [ -77.085752746112234, 38.88906713765806 ], [ -77.081829744291156, 38.890021137231088 ], [ -77.073424734921844, 38.890680137325603 ], [ -77.072167157724095, 38.890986611973062 ], [ -77.070845668353911, 38.892608911945786 ], [ -77.070496398827174, 38.898711386288198 ], [ -77.068815502862719, 38.899968670787985 ], [ -77.057939089916601, 38.900618513367533 ], [ -77.047123384093993, 38.900680376200285 ], [ -77.043945875023553, 38.901284815078952 ], [ -77.030727822375866, 38.90128506309037 ], [ -77.02829732213354, 38.900146083607012 ], [ -77.028107635751667, 38.899322412178321 ], [ -77.028177613097284, 38.892713586949583 ], [ -77.02907497706201, 38.889646735485599 ], [ -77.027973428958887, 38.886513988555123 ], [ -77.026886897793588, 38.885494566851776 ], [ -77.024496891837998, 38.884826665996115 ], [ -77.003200227927607, 38.885041047836182 ], [ -77.000268035901286, 38.885560802532893 ], [ -76.997692348426654, 38.88525410712532 ], [ -76.987613974599981, 38.881270295689944 ], [ -76.984087635118044, 38.881238049783917 ], [ -76.97930823919296, 38.882729948766041 ], [ -76.977291841835552, 38.884000909810368 ], [ -76.976940890468995, 38.888892059276941 ], [ -76.976091009117567, 38.889995572309033 ], [ -76.96813305047084, 38.896355022040268 ], [ -76.965774285256032, 38.897359692964528 ], [ -76.95084344882946, 38.895838201845265 ], [ -76.94728544918803, 38.894844198474857 ], [ -76.940659444359767, 38.892186198575359 ], [ -76.936498441819708, 38.88994020423803 ], [ -76.915319438753841, 38.889759204713812 ], [ -76.908503437748095, 38.888890197399576 ], [ -76.901764436192536, 38.886858197468371 ], [ -76.888992414490701, 38.886746511673891 ], [ -76.882663437630242, 38.88800805771632 ], [ -76.865579870206261, 38.894810479056616 ], [ -76.862594730783599, 38.895581969698867 ], [ -76.849511345542624, 38.896835685325129 ], [ -76.842561890699301, 38.902162732059878 ], [ -76.842145389181837, 38.903276532357381 ], [ -76.841805178710047, 38.907463326387585 ] ] } },
{ "type": "Feature", "properties": { "name": "orange" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.273540126180691, 38.877474258119996 ], [ -77.266294552886265, 38.878498089128989 ], [ -77.239438677957978, 38.880230726221136 ], [ -77.223844944128658, 38.884877343877349 ], [ -77.212897827955558, 38.889681473996482 ], [ -77.195689591381267, 38.899644137276326 ], [ -77.194193222983515, 38.900431699590939 ], [ -77.192027426618324, 38.900786102632516 ], [ -77.187065784036264, 38.900943615095436 ], [ -77.185490659407037, 38.900628590169596 ], [ -77.17302748577832, 38.896356064612824 ], [ -77.171019201876064, 38.895470057008886 ], [ -77.168676203990088, 38.893776798032469 ], [ -77.162493839820371, 38.888657642987489 ], [ -77.158319759552938, 38.886570602853773 ], [ -77.139221373423581, 38.880014146584621 ], [ -77.135795477355018, 38.879384096732934 ], [ -77.127683585514504, 38.879541609195854 ], [ -77.12173749003918, 38.881786161792498 ], [ -77.105434950126707, 38.882573724107111 ], [ -77.086336563997378, 38.890646237831888 ], [ -77.082004971267011, 38.891709446956611 ], [ -77.074739708914706, 38.892221362461115 ], [ -77.073361474864143, 38.892595454560549 ], [ -77.07249515631807, 38.893757108974604 ], [ -77.072258887623647, 38.899624448218454 ], [ -77.071116922267464, 38.901120816616221 ], [ -77.069187394596668, 38.901790244583637 ], [ -77.058279656539284, 38.902144647625214 ], [ -77.04741129659763, 38.902184025740944 ], [ -77.044103534876271, 38.90269594124544 ], [ -77.030006169444704, 38.90269594124544 ], [ -77.027879751195258, 38.901829622699367 ], [ -77.02673778583906, 38.900490766764527 ], [ -77.02681654207052, 38.892693899849867 ], [ -77.027682860616594, 38.88993743174872 ], [ -77.02654089526041, 38.887062829300383 ], [ -77.024375098895234, 38.88627526698577 ], [ -77.003307806979365, 38.88639340133296 ], [ -77.000275692068101, 38.887062829300383 ], [ -76.997716114545611, 38.886708426258807 ], [ -76.9876746950343, 38.88269185845428 ], [ -76.984209420850007, 38.882691858454287 ], [ -76.97991720623537, 38.883873201926207 ], [ -76.978538972184793, 38.88501516728239 ], [ -76.978420837837604, 38.889228625665567 ], [ -76.97735762871288, 38.891040018989173 ], [ -76.968497552673497, 38.89781305489484 ], [ -76.965898597035277, 38.89899439836676 ], [ -76.949950460164374, 38.897419273737533 ], [ -76.948139066840781, 38.898088701704957 ], [ -76.934199213872134, 38.90903581787807 ], [ -76.932072795622688, 38.910492808160093 ], [ -76.928450008975474, 38.91206793278932 ], [ -76.922858316541721, 38.913918704228657 ], [ -76.919314286125967, 38.91580885378373 ], [ -76.909272866614657, 38.919313506083753 ], [ -76.906713289092167, 38.920455471439944 ], [ -76.900491546806734, 38.925180845327617 ], [ -76.894427316984221, 38.93140258761305 ], [ -76.879227364312214, 38.94179841016593 ], [ -76.869225322916634, 38.950658486205313 ] ] } },
{ "type": "Feature", "properties": { "name": "yellow" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.075369758766413, 38.792752242125566 ], [ -77.07473970891472, 38.796414406888516 ], [ -77.073676499789997, 38.798028909633473 ], [ -77.070132469374244, 38.800864133966073 ], [ -77.066509682727016, 38.802202989900913 ], [ -77.064934558097804, 38.803226820909913 ], [ -77.061981199418, 38.804171895687446 ], [ -77.058437169002246, 38.806455826399819 ], [ -77.055523188438187, 38.809212294500966 ], [ -77.050049630351637, 38.816930405184166 ], [ -77.045954306315664, 38.822167694576336 ], [ -77.045245500232511, 38.824175978478593 ], [ -77.044891097190927, 38.829216377292113 ], [ -77.045403012695431, 38.83346921379102 ], [ -77.045245500232497, 38.837800806521386 ], [ -77.047490052829147, 38.841541727515789 ], [ -77.04847450572241, 38.844731354889966 ], [ -77.047253784134767, 38.846660882560769 ], [ -77.042370897784167, 38.848787300810223 ], [ -77.041937738511137, 38.851189365869779 ], [ -77.044654828496547, 38.857923023659716 ], [ -77.045875550084205, 38.858986232784446 ], [ -77.048041346449381, 38.859301257710285 ], [ -77.055838213364041, 38.858474317279942 ], [ -77.057885875382027, 38.859222501478826 ], [ -77.058515925233721, 38.860128198140629 ], [ -77.057885875382027, 38.864656681449652 ], [ -77.050522167740411, 38.870681533156436 ], [ -77.049222689921294, 38.871114692429472 ], [ -77.044418559802168, 38.871035936198012 ], [ -77.042843435172941, 38.871232826776662 ], [ -77.041662091701028, 38.872296035901392 ], [ -77.036976095929077, 38.877690837756482 ], [ -77.03536159318412, 38.878714668765483 ], [ -77.031463159726783, 38.879108449922789 ], [ -77.024926392515511, 38.880014146584593 ], [ -77.022327436877291, 38.881549893098082 ], [ -77.021973033835707, 38.884070092504842 ], [ -77.021973033835707, 38.914863779006176 ], [ -77.0226030836874, 38.916281391172483 ], [ -77.023587536580663, 38.917029575371366 ], [ -77.02811601988968, 38.916911441024169 ], [ -77.03059684118071, 38.917699003338782 ], [ -77.031975075231273, 38.919825421588236 ], [ -77.032762637545886, 38.929079278784933 ], [ -77.032053831462747, 38.930300000372583 ], [ -77.030203060023396, 38.931914503117532 ], [ -77.027525348153716, 38.932859577895073 ], [ -77.0173264161795, 38.946051246664823 ], [ -77.013861141995207, 38.949280252154729 ], [ -77.00968706172776, 38.951446048519912 ], [ -77.002312464771634, 38.951918409325202 ] ] } },
{ "type": "Feature", "properties": { "name": "yellow-rush-N" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.002317335532652, 38.951932639010522 ], [ -76.991444884740432, 38.952737241630821 ], [ -76.974280028840738, 38.951416868100075 ], [ -76.971886851816265, 38.952077054865448 ], [ -76.970483954939837, 38.95372752177888 ], [ -76.968916011372087, 38.95661583887739 ], [ -76.968420871298051, 38.958678922519177 ], [ -76.968998534717741, 38.962062379691716 ], [ -76.9682558246067, 38.963547799913805 ], [ -76.966687881038936, 38.964826911771709 ], [ -76.964707320742818, 38.96536331351858 ], [ -76.950843398669988, 38.965404575191414 ], [ -76.948408959972667, 38.96622980864813 ], [ -76.941188167226429, 38.971057424369924 ], [ -76.939537700312997, 38.971717611135297 ], [ -76.933719804443143, 38.971470041098279 ], [ -76.931697982474191, 38.972088966190817 ], [ -76.929964992215091, 38.974152049832604 ], [ -76.920763639172705, 38.996598399855287 ], [ -76.917545228691509, 39.003695407583045 ], [ -76.915482145049722, 39.00650120133588 ], [ -76.911190931074799, 39.011287555384833 ] ] } },
{ "type": "Feature", "properties": { "name": "yellow-rush-S" }, "geometry": { "type": "LineString", "coordinates": [ [ -77.06583968086349, 38.802771691709061 ], [ -77.068459797088565, 38.802235289962198 ], [ -77.071059282477208, 38.802276551635032 ], [ -77.101469135357192, 38.8040920652398 ], [ -77.104646284165554, 38.804050803566966 ], [ -77.107740909628234, 38.803060523418907 ], [ -77.113600067170907, 38.800213467993245 ], [ -77.118138851182849, 38.798728047771156 ], [ -77.137861930798366, 38.796087300709665 ], [ -77.143803611686721, 38.795509637289967 ], [ -77.14764094726047, 38.794725665506093 ], [ -77.149745292575091, 38.793611600339524 ], [ -77.152014684581061, 38.791135899969376 ], [ -77.153004964729121, 38.789402909710269 ], [ -77.155521926772138, 38.774177352433853 ], [ -77.156470945247349, 38.771907960427889 ], [ -77.158410243870634, 38.769184690020722 ], [ -77.160638374203771, 38.76753422310729 ], [ -77.166703840110642, 38.764852214372965 ] ] } },
{ "type": "Feature", "properties": { "name": "green" }, "geometry": { "type": "LineString", "coordinates": [ [ -76.909775348369635, 39.010436635539293 ], [ -76.913281065344563, 39.006472503002385 ], [ -76.915170061622007, 39.003860498276993 ], [ -76.917350059478906, 38.999645501949772 ], [ -76.925704059514032, 38.979707496968899 ], [ -76.928358051458986, 38.972639862273411 ], [ -76.930005526496814, 38.970762145406979 ], [ -76.933108074374331, 38.969764070437293 ], [ -76.93743798826722, 38.970151246032174 ], [ -76.93982998533312, 38.969682249142465 ], [ -76.946332063111186, 38.965374860486975 ], [ -76.948738928991759, 38.964224675387243 ], [ -76.953288629799488, 38.963842731152795 ], [ -76.962210642376931, 38.963885730645984 ], [ -76.964288516162071, 38.963748834599528 ], [ -76.966163062331361, 38.962741854804847 ], [ -76.967260062368325, 38.960039854468107 ], [ -76.966726061237182, 38.956533859014712 ], [ -76.96737907009981, 38.954942858427273 ], [ -76.969806461569135, 38.95126260347547 ], [ -76.970790461513957, 38.950450604247749 ], [ -76.973197464123984, 38.949795607951444 ], [ -76.988332471868432, 38.951130602516855 ], [ -76.990295466628822, 38.951228602174297 ], [ -77.000450469928353, 38.950361600421047 ], [ -77.006192473327701, 38.950026599410478 ], [ -77.009931477033376, 38.949138603767608 ], [ -77.012604088289208, 38.947522849145969 ], [ -77.015773087985565, 38.944463853309401 ], [ -77.024945085708566, 38.932112845209929 ], [ -77.026206087238506, 38.930970846626053 ], [ -77.0292350901654, 38.9298878516895 ], [ -77.030953093996061, 38.928089847187778 ], [ -77.030332500242707, 38.922361452321752 ], [ -77.030360507260923, 38.920502450053732 ], [ -77.029315504197086, 38.918897455742922 ], [ -77.027341506038113, 38.918406448884468 ], [ -77.022800511466187, 38.918384457832474 ], [ -77.021333506397752, 38.917865450838804 ], [ -77.020460506439122, 38.916447454339732 ], [ -77.020343071034063, 38.906935914390147 ], [ -77.020294042320018, 38.883901528239278 ], [ -77.020742307895148, 38.877900233801881 ], [ -77.018903314369595, 38.876252232937588 ], [ -77.017520310866246, 38.876103234546179 ], [ -77.004281281338308, 38.876429579322632 ], [ -77.001858277477538, 38.875932577674064 ], [ -76.999750282379182, 38.873600578678747 ], [ -76.997101276451758, 38.867923571488006 ], [ -76.994000279030331, 38.858380575073227 ], [ -76.994012283402867, 38.855232571711952 ], [ -76.992870276488134, 38.851337576574849 ], [ -76.987211275414779, 38.844030572606414 ], [ -76.984640278168229, 38.840023574654481 ], [ -76.982484273480736, 38.838773573404069 ], [ -76.980542272500259, 38.838275566766526 ], [ -76.977371274552297, 38.839204568523996 ], [ -76.971276269586383, 38.84400756953778 ], [ -76.967355267091079, 38.845992576841923 ], [ -76.963129271851926, 38.849128571561835 ], [ -76.959162259765208, 38.850704574839597 ], [ -76.948597259643236, 38.852175577786397 ], [ -76.946426258842962, 38.851441576266382 ], [ -76.942205262673099, 38.848860573011166 ], [ -76.940240253468858, 38.847974576340505 ], [ -76.935707258229058, 38.846543572851999 ], [ -76.933777258589942, 38.845413573558744 ], [ -76.931151257011095, 38.842961576144717 ], [ -76.928998251377323, 38.840219572857904 ], [ -76.927022253682253, 38.838982574260342 ], [ -76.920727253426435, 38.836092572935115 ], [ -76.919708252245755, 38.835316572158263 ], [ -76.917708252263594, 38.832747568673994 ], [ -76.916462243630804, 38.830300569119572 ], [ -76.914802251483763, 38.828531573776786 ], [ -76.909847241408897, 38.825430566475177 ] ] } }
]
}
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