diff --git a/common/components/charts/AggregateLineChart.tsx b/common/components/charts/AggregateLineChart.tsx index efefe64a1..b1fc21220 100644 --- a/common/components/charts/AggregateLineChart.tsx +++ b/common/components/charts/AggregateLineChart.tsx @@ -44,12 +44,15 @@ export const AggregateLineChart: React.FC = ({ suggestedYMax, showLegend = true, byTime = false, + yUnit = 'Minutes', }) => { const ref = useRef(); const hourly = timeUnit === 'hour'; const isMobile = !useBreakpoint('md'); const labels = useMemo(() => data.map((item) => item[pointField]), [data, pointField]); + const multiplier = yUnit === 'Minutes' ? 1 / 60 : 1; + return ( @@ -72,7 +75,7 @@ export const AggregateLineChart: React.FC = ({ pointRadius: byTime ? 0 : 3, pointHitRadius: 10, stepped: byTime, - data: data.map((item: AggregateDataPoint) => (item['50%'] / 60).toFixed(2)), + data: data.map((item: AggregateDataPoint) => (item['50%'] * multiplier).toFixed(2)), }, { label: '25th percentile', @@ -81,7 +84,7 @@ export const AggregateLineChart: React.FC = ({ stepped: byTime, tension: 0.4, pointRadius: 0, - data: data.map((item: AggregateDataPoint) => (item['25%'] / 60).toFixed(2)), + data: data.map((item: AggregateDataPoint) => (item['25%'] * multiplier).toFixed(2)), }, { label: '75th percentile', @@ -90,7 +93,7 @@ export const AggregateLineChart: React.FC = ({ stepped: byTime, tension: 0.4, pointRadius: 0, - data: data.map((item: AggregateDataPoint) => (item['75%'] / 60).toFixed(2)), + data: data.map((item: AggregateDataPoint) => (item['75%'] * multiplier).toFixed(2)), }, ], }} @@ -99,7 +102,7 @@ export const AggregateLineChart: React.FC = ({ y: { title: { display: true, - text: 'Minutes', + text: yUnit, }, ticks: { precision: 1, @@ -146,10 +149,11 @@ export const AggregateLineChart: React.FC = ({ position: 'nearest', callbacks: { label: (tooltipItem) => { - return `${tooltipItem.dataset.label}: ${getFormattedTimeString( - tooltipItem.parsed.y, - 'minutes' - )}`; + return `${tooltipItem.dataset.label}: ${ + yUnit === 'Minutes' + ? getFormattedTimeString(tooltipItem.parsed.y, 'minutes') + : `${tooltipItem.parsed.y} ${yUnit}` + }`; }, }, }, diff --git a/common/components/charts/SingleChartWrapper.tsx b/common/components/charts/SingleChartWrapper.tsx index b209f74d2..7231a18e5 100644 --- a/common/components/charts/SingleChartWrapper.tsx +++ b/common/components/charts/SingleChartWrapper.tsx @@ -6,12 +6,13 @@ import { ChartPlaceHolder } from '../graphics/ChartPlaceHolder'; import { TravelTimesSingleChart } from '../../../modules/traveltimes/charts/TravelTimesSingleChart'; import { HeadwaysSingleChart } from '../../../modules/headways/charts/HeadwaysSingleChart'; import { DwellsSingleChart } from '../../../modules/dwells/charts/DwellsSingleChart'; +import { SpeedBetweenStationsSingleChart } from '../../../modules/speed/charts/SpeedBetweenStationsSingleChart'; interface SingleChartWrapperProps { query: UseQueryResult; toStation: Station | undefined; fromStation: Station | undefined; - type: 'headways' | 'traveltimes' | 'dwells'; + type: 'headways' | 'traveltimes' | 'dwells' | 'speeds'; showLegend?: boolean; } @@ -47,5 +48,14 @@ export const SingleChartWrapper: React.FC = ({ return ( ); + case 'speeds': + return ( + + ); } }; diff --git a/common/components/charts/SingleDayLineChart.tsx b/common/components/charts/SingleDayLineChart.tsx index a03c6b469..c359f1cc2 100644 --- a/common/components/charts/SingleDayLineChart.tsx +++ b/common/components/charts/SingleDayLineChart.tsx @@ -65,6 +65,7 @@ export const SingleDayLineChart: React.FC = ({ fname, bothStops = false, location, + units, showLegend = true, }) => { const ref = useRef(); @@ -79,10 +80,15 @@ export const SingleDayLineChart: React.FC = ({ ); const displayBenchmarkData = benchmarkData.every((datapoint) => datapoint !== undefined); // Have to use `as number` because typescript doesn't understand `datapoint` is not undefined. + const multiplier = units === 'Minutes' ? 1 / 60 : 1; const benchmarkDataFormatted = displayBenchmarkData - ? benchmarkData.map((datapoint) => ((datapoint as number) / 60).toFixed(2)) + ? benchmarkData.map((datapoint) => ((datapoint as number) * multiplier).toFixed(2)) : null; + const convertedData = data.map((datapoint) => + ((datapoint[metricField] as number) * multiplier).toFixed(2) + ); + return ( @@ -103,7 +109,7 @@ export const SingleDayLineChart: React.FC = ({ pointHoverBackgroundColor: pointColors(data, metricField, benchmarkField), pointRadius: 3, pointHitRadius: 10, - data: data.map((datapoint) => ((datapoint[metricField] as number) / 60).toFixed(2)), + data: convertedData, }, { label: `Benchmark MBTA`, @@ -133,10 +139,11 @@ export const SingleDayLineChart: React.FC = ({ ) { return ''; } - return `${tooltipItem.dataset.label}: ${getFormattedTimeString( - tooltipItem.parsed.y, - 'minutes' - )}`; + return `${tooltipItem.dataset.label}: ${ + units === 'Minutes' + ? getFormattedTimeString(tooltipItem.parsed.y, 'minutes') + : `${tooltipItem.parsed.y} ${units}` + }`; }, afterBody: (tooltipItems) => { return departureFromNormalString( @@ -162,7 +169,7 @@ export const SingleDayLineChart: React.FC = ({ }, title: { display: true, - text: 'Minutes', + text: units, color: COLORS.design.subtitleGrey, }, }, diff --git a/common/constants/station_distances.json b/common/constants/station_distances.json new file mode 100644 index 000000000..e0b34f568 --- /dev/null +++ b/common/constants/station_distances.json @@ -0,0 +1,6114 @@ +{ + "place-wondl": { + "place-rbmnl": 0.386049255473037, + "place-bmmnl": 1.136689745014117, + "place-sdmnl": 1.64653959439374, + "place-orhte": 2.1289871935397278, + "place-wimnl": 3.2120840814642477, + "place-aport": 3.7597550560973896, + "place-mvbcl": 4.388216288127335, + "place-aqucl": 5.33715780902032, + "place-state": 5.649446981503021, + "place-gover": 5.7735038910264045, + "place-bomnl": 5.949268349091305 + }, + "place-rbmnl": { + "place-bmmnl": 0.75064048954108, + "place-sdmnl": 1.260490338920703, + "place-orhte": 1.742937938066691, + "place-wimnl": 2.826034825991211, + "place-aport": 3.3737058006243528, + "place-mvbcl": 4.002167032654298, + "place-aqucl": 4.951108553547283, + "place-state": 5.263397726029984, + "place-gover": 5.387454635553367, + "place-bomnl": 5.563219093618268, + "place-wondl": 0.386049255473037 + }, + "place-bmmnl": { + "place-sdmnl": 0.509849849379623, + "place-orhte": 0.992297448525611, + "place-wimnl": 2.075394336450131, + "place-aport": 2.623065311083273, + "place-mvbcl": 3.251526543113218, + "place-aqucl": 4.200468064006203, + "place-state": 4.512757236488904, + "place-gover": 4.636814146012287, + "place-bomnl": 4.812578604077188, + "place-rbmnl": 0.75064048954108, + "place-wondl": 1.136689745014117 + }, + "place-sdmnl": { + "place-orhte": 0.482447599145988, + "place-wimnl": 1.565544487070508, + "place-aport": 2.11321546170365, + "place-mvbcl": 2.741676693733595, + "place-aqucl": 3.69061821462658, + "place-state": 4.002907387109281, + "place-gover": 4.126964296632664, + "place-bomnl": 4.302728754697565, + "place-bmmnl": 0.509849849379623, + "place-rbmnl": 1.260490338920703, + "place-wondl": 1.64653959439374 + }, + "place-orhte": { + "place-wimnl": 1.08309688792452, + "place-aport": 1.6307678625576618, + "place-mvbcl": 2.259229094587607, + "place-aqucl": 3.208170615480592, + "place-state": 3.520459787963293, + "place-gover": 3.644516697486676, + "place-bomnl": 3.820281155551577, + "place-sdmnl": 0.482447599145988, + "place-bmmnl": 0.992297448525611, + "place-rbmnl": 1.742937938066691, + "place-wondl": 2.1289871935397278 + }, + "place-wimnl": { + "place-aport": 0.547670974633142, + "place-mvbcl": 1.176132206663087, + "place-aqucl": 2.125073727556072, + "place-state": 2.437362900038773, + "place-gover": 2.561419809562156, + "place-bomnl": 2.737184267627057, + "place-orhte": 1.08309688792452, + "place-sdmnl": 1.565544487070508, + "place-bmmnl": 2.075394336450131, + "place-rbmnl": 2.826034825991211, + "place-wondl": 3.2120840814642477 + }, + "place-aport": { + "place-mvbcl": 0.628461232029945, + "place-aqucl": 1.57740275292293, + "place-state": 1.889691925405631, + "place-gover": 2.013748834929014, + "place-bomnl": 2.189513292993915, + "place-wimnl": 0.547670974633142, + "place-orhte": 1.6307678625576618, + "place-sdmnl": 2.11321546170365, + "place-bmmnl": 2.623065311083273, + "place-rbmnl": 3.3737058006243528, + "place-wondl": 3.7597550560973896 + }, + "place-mvbcl": { + "place-aqucl": 0.948941520892985, + "place-state": 1.261230693375686, + "place-gover": 1.385287602899069, + "place-bomnl": 1.56105206096397, + "place-aport": 0.628461232029945, + "place-wimnl": 1.176132206663087, + "place-orhte": 2.259229094587607, + "place-sdmnl": 2.741676693733595, + "place-bmmnl": 3.251526543113218, + "place-rbmnl": 4.002167032654298, + "place-wondl": 4.388216288127335 + }, + "place-aqucl": { + "place-state": 0.312289172482701, + "place-gover": 0.436346082006084, + "place-bomnl": 0.612110540070985, + "place-mvbcl": 0.948941520892985, + "place-aport": 1.57740275292293, + "place-wimnl": 2.125073727556072, + "place-orhte": 3.208170615480592, + "place-sdmnl": 3.69061821462658, + "place-bmmnl": 4.200468064006203, + "place-rbmnl": 4.951108553547283, + "place-wondl": 5.33715780902032 + }, + "place-state": { + "place-gover": 0.124056909523383, + "place-bomnl": 0.29982136758828404, + "place-aqucl": 0.312289172482701, + "place-mvbcl": 1.261230693375686, + "place-aport": 1.889691925405631, + "place-wimnl": 2.437362900038773, + "place-orhte": 3.520459787963293, + "place-sdmnl": 4.002907387109281, + "place-bmmnl": 4.512757236488904, + "place-rbmnl": 5.263397726029984, + "place-wondl": 5.649446981503021, + "place-ogmnl": 5.795672741812817, + "place-mlmnl": 5.061042771464649, + "place-welln": 3.3080358773512692, + "place-astao": 2.674762902151436, + "place-sull": 2.097212165329477, + "place-ccmnl": 1.229412632724887, + "place-north": 0.522600064374056, + "place-haecl": 0.286489697044262, + "place-dwnxg": 0.281779185804899, + "place-chncl": 0.527514722147657, + "place-tumnl": 0.743945754294917, + "place-bbsta": 1.415917412312097, + "place-masta": 2.038755231945438, + "place-rugg": 2.455368848425196, + "place-rcmnl": 2.973873570224886, + "place-jaksn": 3.524121106488109, + "place-sbmnl": 4.006258620282549, + "place-grnst": 4.544769488686071, + "place-forhl": 5.233504873414258 + }, + "place-gover": { + "place-bomnl": 0.175764458064901, + "place-state": 0.124056909523383, + "place-aqucl": 0.436346082006084, + "place-mvbcl": 1.385287602899069, + "place-aport": 2.013748834929014, + "place-wimnl": 2.561419809562156, + "place-orhte": 3.644516697486676, + "place-sdmnl": 4.126964296632664, + "place-bmmnl": 4.636814146012287, + "place-rbmnl": 5.387454635553367, + "place-wondl": 5.7735038910264045, + "place-pktrm": 0.284019446432832, + "place-boyls": 0.575161677677364, + "place-armnl": 0.8988083442694661, + "place-coecl": 1.291035730707667, + "place-prmnl": 1.652678239083751, + "place-symcl": 1.915332086862721, + "place-nuniv": 2.247991070274596, + "place-mfa": 2.541224951284498, + "place-lngmd": 2.80901315504951, + "place-brmnl": 3.073916630627137, + "place-fenwd": 3.1490647636552525, + "place-mispk": 3.3417939172731246, + "place-rvrwy": 3.5471297746162405, + "place-bckhl": 3.6933715097580135, + "place-hymnl": 1.820381712672989, + "place-kencl": 2.220675037157997, + "place-fenwy": 2.7971361107382884, + "place-longw": 3.1533082933170284, + "place-bvmnl": 3.8916259705818024, + "place-brkhl": 4.424528220194066, + "place-bcnfd": 5.222040770028035, + "place-rsmnl": 5.621198164593772, + "place-chhil": 6.642106478167502, + "place-newto": 8.111257998289993, + "place-newtn": 8.920870672149652, + "place-eliot": 9.69325469818759, + "place-waban": 10.540593756213719, + "place-woodl": 11.36729626667761, + "place-river": 11.895180819016948, + "place-lake": 6.454213915732123, + "place-sougr": 5.94662911347729, + "place-chill": 5.665381616981825, + "place-chswk": 5.4898786990227055, + "place-sthld": 5.2450623875318145, + "place-wascm": 4.965034551966515, + "place-wrnst": 4.6717769668883715, + "place-alsgr": 4.515361798347651, + "place-grigg": 4.326906821040127, + "place-harvd": 4.132396856110316, + "place-brico": 3.7757729385389327, + "place-babck": 3.4840847481955377, + "place-amory": 3.2124434086186673, + "place-bucen": 2.8277943572039286, + "place-buest": 2.676676819250577, + "place-bland": 2.460570577825499, + "place-unsqu": 2.476522336430249, + "place-lech": 1.4620733820736902, + "place-spmnl": 0.895285088831226, + "place-north": 0.488451131641216, + "place-haecl": 0.253817981736658, + "place-esomr": 2.270857265444802, + "place-gilmn": 3.04026938802394, + "place-mgngl": 3.720471891031377, + "place-balsq": 4.195887671622724, + "place-mdftf": 4.769861345989422, + "place-hsmnl": 13.34749019103436, + "place-clmnl": 5.125324155680824, + "place-smary": 2.869922826319295, + "place-engav": 4.943149247146663, + "place-hwsst": 3.089076977327408, + "place-denrd": 4.780835662232562, + "place-kntst": 3.275469839885071, + "place-tapst": 4.550404134852461, + "place-stpul": 3.435516746575002, + "place-bcnwa": 4.3540821657768625, + "place-cool": 3.663099057131353, + "place-fbkst": 4.173842530869721, + "place-sumav": 3.883001556534837, + "place-bndhl": 4.046689041621928 + }, + "place-bomnl": { + "place-gover": 0.175764458064901, + "place-state": 0.29982136758828404, + "place-aqucl": 0.612110540070985, + "place-mvbcl": 1.56105206096397, + "place-aport": 2.189513292993915, + "place-wimnl": 2.737184267627057, + "place-orhte": 3.820281155551577, + "place-sdmnl": 4.302728754697565, + "place-bmmnl": 4.812578604077188, + "place-rbmnl": 5.563219093618268, + "place-wondl": 5.949268349091305 + }, + "place-pktrm": { + "place-boyls": 0.245430402076871, + "place-armnl": 0.614788897836634, + "place-coecl": 1.007016284274835, + "place-prmnl": 1.394627391036348, + "place-symcl": 1.657281238815318, + "place-nuniv": 1.989940222227193, + "place-mfa": 2.283174103237095, + "place-lngmd": 2.550962307002107, + "place-brmnl": 2.815865782579734, + "place-fenwd": 2.8910139156078496, + "place-mispk": 3.0837430692257217, + "place-rvrwy": 3.2890789265688376, + "place-bckhl": 3.4353206617106107, + "place-hymnl": 1.536362266240157, + "place-kencl": 1.936655590725165, + "place-fenwy": 2.539085262690885, + "place-longw": 2.895257445269625, + "place-bvmnl": 3.633575122534399, + "place-brkhl": 4.166477372146663, + "place-bcnfd": 4.963989921980632, + "place-rsmnl": 5.363147316546369, + "place-chhil": 6.384055630120099, + "place-newto": 7.853207150242589, + "place-newtn": 8.662819824102248, + "place-eliot": 9.435203850140185, + "place-waban": 10.282542908166315, + "place-woodl": 11.109245418630206, + "place-river": 11.637170267512731, + "place-lake": 6.170194469299291, + "place-sougr": 5.662609667044459, + "place-chill": 5.381362170548993, + "place-chswk": 5.205859252589874, + "place-sthld": 4.961042941098983, + "place-wascm": 4.6810151055336835, + "place-wrnst": 4.38775752045554, + "place-alsgr": 4.231342351914819, + "place-grigg": 4.042887374607295, + "place-harvd": 3.848377409677484, + "place-brico": 3.491753492106101, + "place-babck": 3.200065301762706, + "place-amory": 2.9284239621858354, + "place-bucen": 2.5437749107710967, + "place-buest": 2.3926573728177454, + "place-bland": 2.1765511313926673, + "place-gover": 0.284019446432832, + "place-haecl": 0.53783742816949, + "place-north": 0.772470578074048, + "place-spmnl": 1.1793045352640579, + "place-lech": 1.746092828506522, + "place-esomr": 2.554876711877634, + "place-gilmn": 3.324288834456772, + "place-mgngl": 4.004491337464209, + "place-balsq": 4.479907118055556, + "place-mdftf": 5.053880792422254, + "place-alfcl": 5.945387666030385, + "place-davis": 4.953975575141179, + "place-portr": 4.315595128201306, + "place-harsq": 3.2499242132197956, + "place-cntsq": 2.278665943390598, + "place-knncl": 1.3105006443619258, + "place-chmnl": 0.589480859281794, + "place-dwnxg": 0.127226172278891, + "place-sstat": 0.462768172000517, + "place-brdwy": 1.288142114426749, + "place-andrw": 2.148112788813331, + "place-jfk": 2.9329617291269, + "place-nqncy": 6.47780623036467, + "place-wlsta": 7.273996222063151, + "place-qnctr": 8.56750609503002, + "place-qamnl": 9.877604532654292, + "place-shmnl": 3.616599340476617, + "place-fldcr": 4.610146185029428, + "place-smmnl": 5.198303553497575, + "place-asmnl": 5.803362015827568, + "place-brntn": 11.680436881735652, + "place-hsmnl": 13.631509637467193, + "place-unsqu": 2.7904041982323218, + "place-bndhl": 4.33070848805476, + "place-smary": 3.153942272752127, + "place-clmnl": 5.409343602113656, + "place-hwsst": 3.3730964237602397, + "place-engav": 5.227168693579495, + "place-kntst": 3.559489286317903, + "place-denrd": 5.064855108665394, + "place-stpul": 3.719536193007834, + "place-tapst": 4.834423581285293, + "place-cool": 3.9471185035641847, + "place-bcnwa": 4.638101612209694, + "place-sumav": 4.167021002967669, + "place-fbkst": 4.457861977302553 + }, + "place-boyls": { + "place-armnl": 0.323646666592102, + "place-coecl": 0.7158740530303029, + "place-prmnl": 1.1492372855026651, + "place-symcl": 1.411891133281635, + "place-nuniv": 1.74455011669351, + "place-mfa": 2.037783997703412, + "place-lngmd": 2.305572201468424, + "place-brmnl": 2.570475677046051, + "place-fenwd": 2.6456238100741665, + "place-mispk": 2.8383529636920386, + "place-rvrwy": 3.0436888210351545, + "place-bckhl": 3.1899305561769276, + "place-hymnl": 1.245220034995625, + "place-kencl": 1.645513359480633, + "place-fenwy": 2.2936951571572024, + "place-longw": 2.6498673397359425, + "place-bvmnl": 3.3881850170007164, + "place-brkhl": 3.9210872666129806, + "place-bcnfd": 4.718599816446949, + "place-rsmnl": 5.1177572110126865, + "place-chhil": 6.138665524586417, + "place-newto": 7.607817044708907, + "place-newtn": 8.417429718568565, + "place-eliot": 9.189813744606502, + "place-waban": 10.037152802632631, + "place-woodl": 10.863855313096522, + "place-river": 11.391739865435861, + "place-lake": 5.87905223805476, + "place-sougr": 5.371467435799927, + "place-chill": 5.090219939304461, + "place-chswk": 4.914717021345342, + "place-sthld": 4.669900709854451, + "place-wascm": 4.389872874289152, + "place-wrnst": 4.096615289211008, + "place-alsgr": 3.9402001206702866, + "place-grigg": 3.7517451433627627, + "place-harvd": 3.5572351784329523, + "place-brico": 3.200611260861569, + "place-babck": 2.908923070518174, + "place-amory": 2.6372817309413032, + "place-bucen": 2.252632679526565, + "place-buest": 2.101515141573213, + "place-bland": 1.8854089001481351, + "place-pktrm": 0.245430402076871, + "place-gover": 0.575161677677364, + "place-haecl": 0.828979659414022, + "place-north": 1.06361280931858, + "place-spmnl": 1.4704467665085899, + "place-lech": 2.037235059751054, + "place-esomr": 2.8460189431221656, + "place-gilmn": 3.6154310657013036, + "place-mgngl": 4.295633568708741, + "place-balsq": 4.771049349300088, + "place-mdftf": 5.345023023666786, + "place-hsmnl": 13.922651868711725, + "place-unsqu": 3.0815464294768535, + "place-bndhl": 4.621850719299292, + "place-smary": 3.445084503996659, + "place-clmnl": 5.700485833358188, + "place-hwsst": 3.664238655004772, + "place-engav": 5.518310924824027, + "place-kntst": 3.850631517562435, + "place-denrd": 5.355997339909926, + "place-stpul": 4.010678424252366, + "place-tapst": 5.125565812529825, + "place-cool": 4.238260734808717, + "place-bcnwa": 4.929243843454227, + "place-sumav": 4.458163234212201, + "place-fbkst": 4.749004208547085 + }, + "place-armnl": { + "place-coecl": 0.392227386438201, + "place-prmnl": 0.779853142646941, + "place-symcl": 1.042506990425911, + "place-nuniv": 1.375165973837786, + "place-mfa": 1.668399854847688, + "place-lngmd": 1.9361880586127, + "place-brmnl": 2.201091534190327, + "place-fenwd": 2.2762396672184426, + "place-mispk": 2.4689688208363147, + "place-rvrwy": 2.6743046781794306, + "place-bckhl": 2.8205464133212037, + "place-hymnl": 0.921573368403523, + "place-kencl": 1.321866692888531, + "place-fenwy": 1.924311014301478, + "place-longw": 2.280483196880218, + "place-bvmnl": 3.018800874144992, + "place-brkhl": 3.551703123757256, + "place-bcnfd": 4.349215673591225, + "place-rsmnl": 4.748373068156962, + "place-chhil": 5.769281381730692, + "place-newto": 7.238432901853182, + "place-newtn": 8.048045575712841, + "place-eliot": 8.820429601750778, + "place-waban": 9.667768659776907, + "place-woodl": 10.494471170240798, + "place-river": 11.022355722580137, + "place-lake": 5.555405571462658, + "place-sougr": 5.047820769207825, + "place-chill": 4.7665732727123595, + "place-chswk": 4.59107035475324, + "place-sthld": 4.346254043262349, + "place-wascm": 4.06622620769705, + "place-wrnst": 3.7729686226189063, + "place-alsgr": 3.6165534540781845, + "place-grigg": 3.4280984767706606, + "place-harvd": 3.2335885118408503, + "place-brico": 2.876964594269467, + "place-babck": 2.585276403926072, + "place-amory": 2.313635064349201, + "place-bucen": 1.928986012934463, + "place-buest": 1.7778684749811111, + "place-bland": 1.561762233556033, + "place-boyls": 0.323646666592102, + "place-pktrm": 0.614788897836634, + "place-gover": 0.8988083442694661, + "place-haecl": 1.152626326006124, + "place-north": 1.387259475910682, + "place-spmnl": 1.794093433100692, + "place-lech": 2.360881726343156, + "place-esomr": 3.1696656097142677, + "place-gilmn": 3.9390777322934056, + "place-mgngl": 4.619280235300843, + "place-balsq": 5.09469601589219, + "place-mdftf": 5.668669690258888, + "place-hsmnl": 14.246298535303826, + "place-unsqu": 3.405193096068956, + "place-bndhl": 4.945497385891394, + "place-smary": 3.768731170588761, + "place-clmnl": 6.02413249995029, + "place-hwsst": 3.987885321596874, + "place-engav": 5.841957591416129, + "place-kntst": 4.174278184154537, + "place-denrd": 5.679644006502028, + "place-stpul": 4.334325090844468, + "place-tapst": 5.449212479121927, + "place-cool": 4.561907401400819, + "place-bcnwa": 5.252890510046329, + "place-sumav": 4.781809900804303, + "place-fbkst": 5.072650875139187 + }, + "place-coecl": { + "place-hymnl": 0.529345981965322, + "place-kencl": 0.92963930645033, + "place-fenwy": 1.570601364282589, + "place-longw": 1.926773546861329, + "place-bvmnl": 2.665091224126103, + "place-brkhl": 3.197993473738367, + "place-bcnfd": 3.995506023572336, + "place-rsmnl": 4.394663418138073, + "place-chhil": 5.415571731711803, + "place-newto": 6.884723251834293, + "place-newtn": 7.694335925693952, + "place-eliot": 8.46671995173189, + "place-waban": 9.314059009758019, + "place-woodl": 10.14076152022191, + "place-river": 10.668646072561248, + "place-lake": 5.163178185024457, + "place-sougr": 4.6555933827696245, + "place-chill": 4.374345886274159, + "place-chswk": 4.19884296831504, + "place-sthld": 3.9540266568241482, + "place-wascm": 3.673998821258849, + "place-wrnst": 3.380741236180705, + "place-alsgr": 3.2243260676399834, + "place-grigg": 3.0358710903324595, + "place-harvd": 2.841361125402649, + "place-brico": 2.484737207831266, + "place-babck": 2.193049017487871, + "place-amory": 1.921407677911, + "place-bucen": 1.5367586264962618, + "place-buest": 1.38564108854291, + "place-bland": 1.169534847117832, + "place-armnl": 0.392227386438201, + "place-boyls": 0.7158740530303029, + "place-pktrm": 1.007016284274835, + "place-gover": 1.291035730707667, + "place-haecl": 1.544853712444325, + "place-north": 1.7794868623488829, + "place-spmnl": 2.186320819538893, + "place-lech": 2.753109112781357, + "place-esomr": 3.561892996152469, + "place-gilmn": 4.331305118731607, + "place-mgngl": 5.011507621739044, + "place-balsq": 5.486923402330391, + "place-mdftf": 6.060897076697089, + "place-bckhl": 2.428367721257854, + "place-hsmnl": 2.516731768347848, + "place-rvrwy": 2.249637096232999, + "place-mispk": 2.098575999910522, + "place-fenwd": 1.8795757420414771, + "place-brmnl": 1.7260194203352408, + "place-lngmd": 1.514569811053447, + "place-mfa": 1.2461596843185792, + "place-nuniv": 0.9267693302364189, + "place-symcl": 0.650255019436491, + "place-prmnl": 0.387603785766126, + "place-unsqu": 3.7974204825071567, + "place-bndhl": 5.337724772329595, + "place-smary": 4.160958557026962, + "place-clmnl": 6.4163598863884905, + "place-hwsst": 4.380112708035075, + "place-engav": 6.23418497785433, + "place-kntst": 4.566505570592738, + "place-denrd": 6.071871392940229, + "place-stpul": 4.726552477282669, + "place-tapst": 5.841439865560128, + "place-cool": 4.95413478783902, + "place-bcnwa": 5.645117896484529, + "place-sumav": 5.174037287242504, + "place-fbkst": 5.464878261577388 + }, + "place-hymnl": { + "place-kencl": 0.400649134678478, + "place-bland": 0.64018886515251, + "place-buest": 0.856295106577588, + "place-bucen": 1.00741264453094, + "place-amory": 1.392061695945678, + "place-babck": 1.663703035522549, + "place-brico": 1.955391225865944, + "place-harvd": 2.312015143437327, + "place-grigg": 2.5065251083671374, + "place-alsgr": 2.6949800856746613, + "place-wrnst": 2.851395254215383, + "place-wascm": 3.144652839293527, + "place-sthld": 3.424680674858826, + "place-chswk": 3.669496986349718, + "place-chill": 3.844999904308837, + "place-sougr": 4.126247400804303, + "place-lake": 4.633832203059136, + "place-coecl": 0.529345981965322, + "place-armnl": 0.921573368403523, + "place-boyls": 1.245220034995625, + "place-pktrm": 1.536362266240157, + "place-gover": 1.820381712672989, + "place-haecl": 2.0741996944096472, + "place-north": 2.3088328443142054, + "place-spmnl": 2.7156668015042156, + "place-lech": 3.2824550947466795, + "place-esomr": 4.091238978117792, + "place-gilmn": 4.86065110069693, + "place-mgngl": 5.540853603704367, + "place-balsq": 6.016269384295714, + "place-mdftf": 6.590243058662412, + "place-clmnl": 3.3052982532013044, + "place-engav": 3.1231233446671443, + "place-denrd": 2.9608097597530425, + "place-tapst": 2.730378232372942, + "place-bcnwa": 2.534056263297344, + "place-fbkst": 2.3538166283902022, + "place-bndhl": 2.226663139142409, + "place-sumav": 2.062975654055318, + "place-cool": 1.8430731546518337, + "place-stpul": 1.615490844095483, + "place-kntst": 1.455443937405552, + "place-hwsst": 1.269051074847889, + "place-smary": 1.049896923839776, + "place-prmnl": 13.038743921125628, + "place-hsmnl": 15.16787190370735, + "place-symcl": 13.301395154795992, + "place-bckhl": 15.079507856617354, + "place-nuniv": 13.57790946559592, + "place-rvrwy": 14.9007772315925, + "place-mfa": 13.89729981967808, + "place-mispk": 14.749716135270024, + "place-lngmd": 14.16570994641295, + "place-fenwd": 14.53071587740098, + "place-brmnl": 14.377159555694742, + "place-river": 23.258190467668825, + "place-fenwy": 32.39722402544143, + "place-woodl": 23.82672607161677, + "place-longw": 32.024559931251495, + "place-waban": 24.634717531491102, + "place-bvmnl": 31.276100373195543, + "place-eliot": 25.495654073336723, + "place-brkhl": 30.761221329311823, + "place-newtn": 26.254367788987327, + "place-bcnfd": 29.97560783897042, + "place-newto": 27.07385785574745, + "place-rsmnl": 29.568161128385235, + "place-chhil": 28.54383540871313, + "place-unsqu": 4.326766464472479 + }, + "place-kencl": { + "place-bland": 0.239895540667502, + "place-buest": 0.45600178209258, + "place-bucen": 0.6071193200459319, + "place-amory": 0.9917683714606699, + "place-babck": 1.263409711037541, + "place-brico": 1.555097901380936, + "place-harvd": 1.911721818952319, + "place-grigg": 2.106231783882129, + "place-alsgr": 2.294686761189653, + "place-wrnst": 2.4511019297303753, + "place-wascm": 2.7443595148085187, + "place-sthld": 3.024387350373818, + "place-chswk": 3.2692036618647102, + "place-chill": 3.4447065798238294, + "place-sougr": 3.725954076319295, + "place-lake": 4.2335388785741275, + "place-hymnl": 0.400649134678478, + "place-coecl": 0.92963930645033, + "place-armnl": 1.321866692888531, + "place-boyls": 1.645513359480633, + "place-pktrm": 1.936655590725165, + "place-gover": 2.220675037157997, + "place-haecl": 2.474493018894655, + "place-north": 2.709126168799213, + "place-spmnl": 3.1159601259892233, + "place-lech": 3.6827484192316873, + "place-esomr": 4.491532302602799, + "place-gilmn": 5.260944425181937, + "place-mgngl": 5.941146928189374, + "place-balsq": 6.416562708780721, + "place-mdftf": 6.99089219334089, + "place-smary": 0.649247789161298, + "place-hwsst": 0.868401940169411, + "place-kntst": 1.054794802727074, + "place-stpul": 1.214841709417005, + "place-cool": 1.4424240199733558, + "place-sumav": 1.66232651937684, + "place-bndhl": 1.826014004463931, + "place-fbkst": 1.953167493711724, + "place-bcnwa": 2.133407128618866, + "place-tapst": 2.329729097694464, + "place-denrd": 2.5601606250745643, + "place-engav": 2.722474209988666, + "place-clmnl": 2.9046491185228263, + "place-river": 9.70007706431937, + "place-woodl": 9.131541460371423, + "place-waban": 8.32355000049709, + "place-eliot": 7.462613458651469, + "place-newtn": 6.703899743000869, + "place-newto": 5.884409676240748, + "place-chhil": 4.414432123275068, + "place-rsmnl": 3.390106403602958, + "place-bcnfd": 2.982659693017776, + "place-brkhl": 2.19704620267637, + "place-bvmnl": 1.682167158792651, + "place-longw": 0.9337076007366971, + "place-fenwy": 0.561043506546766, + "place-prmnl": 13.439393055804105, + "place-hsmnl": 15.568521038385828, + "place-symcl": 13.70204428947447, + "place-bckhl": 15.480156991295832, + "place-nuniv": 13.978558600274397, + "place-rvrwy": 15.301426366270977, + "place-mfa": 14.297948954356558, + "place-mispk": 15.150365269948502, + "place-lngmd": 14.566359081091427, + "place-fenwd": 14.931365012079457, + "place-brmnl": 14.77780869037322, + "place-unsqu": 4.7270597889574875 + }, + "place-bland": { + "place-buest": 0.216106241425078, + "place-bucen": 0.36722377937843, + "place-amory": 0.7518728307931679, + "place-babck": 1.023514170370039, + "place-brico": 1.315202360713434, + "place-harvd": 1.671826278284817, + "place-grigg": 1.866336243214627, + "place-alsgr": 2.054791220522151, + "place-wrnst": 2.2112063890628733, + "place-wascm": 2.5044639741410166, + "place-sthld": 2.784491809706316, + "place-chswk": 3.029308121197208, + "place-chill": 3.2048110391563274, + "place-sougr": 3.486058535651793, + "place-lake": 3.993643337906626, + "place-kencl": 0.239895540667502, + "place-hymnl": 0.64018886515251, + "place-coecl": 1.169534847117832, + "place-armnl": 1.561762233556033, + "place-boyls": 1.8854089001481351, + "place-pktrm": 2.1765511313926673, + "place-gover": 2.460570577825499, + "place-haecl": 2.714388559562157, + "place-north": 2.9490217094667153, + "place-spmnl": 3.3558556666567254, + "place-lech": 3.9226439598991893, + "place-esomr": 4.731427843270302, + "place-gilmn": 5.50083996584944, + "place-mgngl": 6.181042468856877, + "place-balsq": 6.656458249448224, + "place-mdftf": 7.230431923814922, + "place-prmnl": 13.678932786278137, + "place-hsmnl": 15.80806076885986, + "place-symcl": 13.941584019948502, + "place-bckhl": 15.719696721769864, + "place-nuniv": 14.218098330748429, + "place-rvrwy": 15.54096609674501, + "place-mfa": 14.53748868483059, + "place-mispk": 15.389905000422534, + "place-lngmd": 14.80589881156546, + "place-fenwd": 15.170904742553489, + "place-brmnl": 15.017348420847252, + "place-river": 23.898379332821335, + "place-fenwy": 33.03741289059394, + "place-woodl": 24.466914936769278, + "place-longw": 32.664748796404005, + "place-waban": 25.274906396643612, + "place-bvmnl": 31.916289238348053, + "place-eliot": 26.135842938489233, + "place-brkhl": 31.401410194464333, + "place-newtn": 26.894556654139837, + "place-bcnfd": 30.61579670412293, + "place-newto": 27.714046720899958, + "place-rsmnl": 30.208349993537745, + "place-chhil": 29.18402427386564, + "place-unsqu": 4.966955329624989, + "place-bndhl": 6.507259619447427, + "place-smary": 5.330493404144795, + "place-clmnl": 7.585894733506323, + "place-hwsst": 5.549647555152907, + "place-engav": 7.403719824972162, + "place-kntst": 5.73604041771057, + "place-denrd": 7.241406240058061, + "place-stpul": 5.896087324400501, + "place-tapst": 7.01097471267796, + "place-cool": 6.123669634956852, + "place-bcnwa": 6.814652743602362, + "place-sumav": 6.343572134360336, + "place-fbkst": 6.63441310869522 + }, + "place-buest": { + "place-bucen": 0.151117537953352, + "place-amory": 0.53576658936809, + "place-babck": 0.8074079289449609, + "place-brico": 1.099096119288356, + "place-harvd": 1.455720036859739, + "place-grigg": 1.650230001789549, + "place-alsgr": 1.838684979097073, + "place-wrnst": 1.9951001476377952, + "place-wascm": 2.2883577327159386, + "place-sthld": 2.5683855682812378, + "place-chswk": 2.81320187977213, + "place-chill": 2.9887047977312493, + "place-sougr": 3.269952294226715, + "place-lake": 3.777537096481548, + "place-bland": 0.216106241425078, + "place-kencl": 0.45600178209258, + "place-hymnl": 0.856295106577588, + "place-coecl": 1.38564108854291, + "place-armnl": 1.7778684749811111, + "place-boyls": 2.101515141573213, + "place-pktrm": 2.3926573728177454, + "place-gover": 2.676676819250577, + "place-haecl": 2.930494800987235, + "place-north": 3.1651279508917933, + "place-spmnl": 3.5719619080818035, + "place-lech": 4.138750201324267, + "place-esomr": 4.94753408469538, + "place-gilmn": 5.716946207274518, + "place-mgngl": 6.397148710281955, + "place-balsq": 6.872564490873302, + "place-mdftf": 7.44653816524, + "place-prmnl": 13.895039027703216, + "place-hsmnl": 16.024167010284938, + "place-symcl": 14.157690261373581, + "place-bckhl": 15.935802963194943, + "place-nuniv": 14.434204572173508, + "place-rvrwy": 15.757072338170088, + "place-mfa": 14.75359492625567, + "place-mispk": 15.606011241847611, + "place-lngmd": 15.022005052990536, + "place-fenwd": 15.387010983978566, + "place-brmnl": 15.23345466227233, + "place-river": 24.114485574246412, + "place-fenwy": 33.253519132019015, + "place-woodl": 24.683021178194355, + "place-longw": 32.880855037829086, + "place-waban": 25.49101263806869, + "place-bvmnl": 32.13239547977313, + "place-eliot": 26.351949179914314, + "place-brkhl": 31.617516435889414, + "place-newtn": 27.110662895564914, + "place-bcnfd": 30.831902945548006, + "place-newto": 27.93015296232503, + "place-rsmnl": 30.424456234962825, + "place-chhil": 29.400130515290712, + "place-unsqu": 5.183061571050067, + "place-bndhl": 6.723365860872505, + "place-smary": 5.546599645569872, + "place-clmnl": 7.802000974931401, + "place-hwsst": 5.765753796577985, + "place-engav": 7.61982606639724, + "place-kntst": 5.952146659135648, + "place-denrd": 7.457512481483139, + "place-stpul": 6.11219356582558, + "place-tapst": 7.227080954103038, + "place-cool": 6.33977587638193, + "place-bcnwa": 7.03075898502744, + "place-sumav": 6.559678375785414, + "place-fbkst": 6.850519350120298 + }, + "place-bucen": { + "place-amory": 0.384649051414738, + "place-babck": 0.6562903909916089, + "place-brico": 0.9479785813350039, + "place-harvd": 1.304602498906387, + "place-grigg": 1.499112463836197, + "place-alsgr": 1.687567441143721, + "place-wrnst": 1.8439826096844432, + "place-wascm": 2.1372401947625868, + "place-sthld": 2.417268030327886, + "place-chswk": 2.6620843418187783, + "place-chill": 2.8375872597778975, + "place-sougr": 3.118834756273363, + "place-lake": 3.626419558528196, + "place-buest": 0.151117537953352, + "place-bland": 0.36722377937843, + "place-kencl": 0.6071193200459319, + "place-hymnl": 1.00741264453094, + "place-coecl": 1.5367586264962618, + "place-armnl": 1.928986012934463, + "place-boyls": 2.252632679526565, + "place-pktrm": 2.5437749107710967, + "place-gover": 2.8277943572039286, + "place-haecl": 3.0816123389405865, + "place-north": 3.3162454888451447, + "place-spmnl": 3.723079446035155, + "place-lech": 4.289867739277619, + "place-esomr": 5.098651622648731, + "place-gilmn": 5.868063745227869, + "place-mgngl": 6.548266248235306, + "place-balsq": 7.023682028826653, + "place-mdftf": 7.597655703193351, + "place-prmnl": 14.046156565656567, + "place-hsmnl": 16.175284548238288, + "place-symcl": 14.308807799326932, + "place-bckhl": 16.086920501148295, + "place-nuniv": 14.58532211012686, + "place-rvrwy": 15.90818987612344, + "place-mfa": 14.90471246420902, + "place-mispk": 15.757128779800961, + "place-lngmd": 15.173122590943887, + "place-fenwd": 15.538128521931917, + "place-brmnl": 15.38457220022568, + "place-river": 24.265603112199763, + "place-fenwy": 33.40463666997236, + "place-woodl": 24.834138716147706, + "place-longw": 33.03197257578243, + "place-waban": 25.64213017602204, + "place-bvmnl": 32.28351301772648, + "place-eliot": 26.50306671786766, + "place-brkhl": 31.76863397384276, + "place-newtn": 27.261780433518265, + "place-bcnfd": 30.983020483501356, + "place-newto": 28.081270500278386, + "place-rsmnl": 30.575573772916172, + "place-chhil": 29.551248053244066, + "place-unsqu": 5.3341791090034185, + "place-bndhl": 6.8744833988258565, + "place-smary": 5.697717183523224, + "place-clmnl": 7.953118512884752, + "place-hwsst": 5.916871334531336, + "place-engav": 7.770943604350592, + "place-kntst": 6.103264197089, + "place-denrd": 7.60863001943649, + "place-stpul": 6.26331110377893, + "place-tapst": 7.37819849205639, + "place-cool": 6.490893414335281, + "place-bcnwa": 7.181876522980791, + "place-sumav": 6.710795913738766, + "place-fbkst": 7.00163688807365 + }, + "place-amory": { + "place-babck": 0.271641339576871, + "place-brico": 0.563329529920266, + "place-harvd": 0.919953447491649, + "place-grigg": 1.114463412421459, + "place-alsgr": 1.3029183897289829, + "place-wrnst": 1.4593335582697051, + "place-wascm": 1.752591143347849, + "place-sthld": 2.032618978913148, + "place-chswk": 2.2774352904040405, + "place-chill": 2.4529382083631597, + "place-sougr": 2.7341857048586253, + "place-lake": 3.241770507113458, + "place-bucen": 0.384649051414738, + "place-buest": 0.53576658936809, + "place-bland": 0.7518728307931679, + "place-kencl": 0.9917683714606699, + "place-hymnl": 1.392061695945678, + "place-coecl": 1.921407677911, + "place-armnl": 2.313635064349201, + "place-boyls": 2.6372817309413032, + "place-pktrm": 2.9284239621858354, + "place-gover": 3.2124434086186673, + "place-haecl": 3.466261390355325, + "place-north": 3.7008945402598834, + "place-spmnl": 4.1077284974498935, + "place-lech": 4.6745167906923575, + "place-esomr": 5.48330067406347, + "place-gilmn": 6.252712796642608, + "place-mgngl": 6.932915299650045, + "place-balsq": 7.408331080241392, + "place-mdftf": 7.98230475460809, + "place-prmnl": 14.430805617071305, + "place-hsmnl": 16.55993359965303, + "place-symcl": 14.69345685074167, + "place-bckhl": 16.471569552563032, + "place-nuniv": 14.969971161541597, + "place-rvrwy": 16.292838927538178, + "place-mfa": 15.289361515623758, + "place-mispk": 16.141777831215702, + "place-lngmd": 15.557771642358627, + "place-fenwd": 15.922777573346657, + "place-brmnl": 15.76922125164042, + "place-river": 24.650252163614503, + "place-fenwy": 33.7892857213871, + "place-woodl": 25.218787767562446, + "place-longw": 33.41662162719717, + "place-waban": 26.02677922743678, + "place-bvmnl": 32.66816206914122, + "place-eliot": 26.8877157692824, + "place-brkhl": 32.1532830252575, + "place-newtn": 27.646429484933005, + "place-bcnfd": 31.367669534916097, + "place-newto": 28.465919551693126, + "place-rsmnl": 30.960222824330913, + "place-chhil": 29.935897104658807, + "place-unsqu": 5.718828160418157, + "place-bndhl": 7.259132450240595, + "place-smary": 6.082366234937963, + "place-clmnl": 8.33776756429949, + "place-hwsst": 6.301520385946075, + "place-engav": 8.15559265576533, + "place-kntst": 6.487913248503738, + "place-denrd": 7.993279070851229, + "place-stpul": 6.647960155193669, + "place-tapst": 7.762847543471128, + "place-cool": 6.87554246575002, + "place-bcnwa": 7.56652557439553, + "place-sumav": 7.095444965153504, + "place-fbkst": 7.386285939488388 + }, + "place-babck": { + "place-brico": 0.291688190343395, + "place-harvd": 0.648312107914778, + "place-grigg": 0.842822072844588, + "place-alsgr": 1.031277050152112, + "place-wrnst": 1.187692218692834, + "place-wascm": 1.480949803770978, + "place-sthld": 1.760977639336277, + "place-chswk": 2.0057939508271696, + "place-chill": 2.181296868786289, + "place-sougr": 2.4625443652817545, + "place-lake": 2.9701291675365873, + "place-amory": 0.271641339576871, + "place-bucen": 0.6562903909916089, + "place-buest": 0.8074079289449609, + "place-bland": 1.023514170370039, + "place-kencl": 1.263409711037541, + "place-hymnl": 1.663703035522549, + "place-coecl": 2.193049017487871, + "place-armnl": 2.585276403926072, + "place-boyls": 2.908923070518174, + "place-pktrm": 3.200065301762706, + "place-gover": 3.4840847481955377, + "place-haecl": 3.7379027299321956, + "place-north": 3.972535879836754, + "place-spmnl": 4.379369837026764, + "place-lech": 4.946158130269228, + "place-esomr": 5.75494201364034, + "place-gilmn": 6.524354136219478, + "place-mgngl": 7.204556639226915, + "place-balsq": 7.679972419818262, + "place-mdftf": 8.25394609418496, + "place-prmnl": 14.702446956648174, + "place-hsmnl": 16.831574939229895, + "place-symcl": 14.965098190318539, + "place-bckhl": 16.743210892139903, + "place-nuniv": 15.241612501118468, + "place-rvrwy": 16.564480267115048, + "place-mfa": 15.561002855200627, + "place-mispk": 16.413419170792572, + "place-lngmd": 15.829412981935496, + "place-fenwd": 16.194418912923524, + "place-brmnl": 16.04086259121729, + "place-river": 24.92189350319137, + "place-fenwy": 34.06092706096398, + "place-woodl": 25.490429107139313, + "place-longw": 33.68826296677404, + "place-waban": 26.298420567013647, + "place-bvmnl": 32.93980340871809, + "place-eliot": 27.15935710885927, + "place-brkhl": 32.42492436483437, + "place-newtn": 27.918070824509872, + "place-bcnfd": 31.639310874492963, + "place-newto": 28.737560891269993, + "place-rsmnl": 31.23186416390778, + "place-chhil": 30.207538444235674, + "place-unsqu": 5.990469499995028, + "place-bndhl": 7.530773789817466, + "place-smary": 6.354007574514833, + "place-clmnl": 8.60940890387636, + "place-hwsst": 6.5731617255229455, + "place-engav": 8.4272339953422, + "place-kntst": 6.759554588080609, + "place-denrd": 8.2649204104281, + "place-stpul": 6.919601494770539, + "place-tapst": 8.034488883047999, + "place-cool": 7.147183805326891, + "place-bcnwa": 7.8381669139724, + "place-sumav": 7.367086304730375, + "place-fbkst": 7.657927279065259 + }, + "place-brico": { + "place-harvd": 0.356623917571383, + "place-grigg": 0.551133882501193, + "place-alsgr": 0.739588859808717, + "place-wrnst": 0.896004028349439, + "place-wascm": 1.189261613427583, + "place-sthld": 1.469289448992882, + "place-chswk": 1.7141057604837748, + "place-chill": 1.889608678442894, + "place-sougr": 2.1708561749383595, + "place-lake": 2.6784409771931923, + "place-babck": 0.291688190343395, + "place-amory": 0.563329529920266, + "place-bucen": 0.9479785813350039, + "place-buest": 1.099096119288356, + "place-bland": 1.315202360713434, + "place-kencl": 1.555097901380936, + "place-hymnl": 1.955391225865944, + "place-coecl": 2.484737207831266, + "place-armnl": 2.876964594269467, + "place-boyls": 3.200611260861569, + "place-pktrm": 3.491753492106101, + "place-gover": 3.7757729385389327, + "place-haecl": 4.029590920275591, + "place-north": 4.264224070180148, + "place-spmnl": 4.671058027370158, + "place-lech": 5.237846320612622, + "place-esomr": 6.046630203983734, + "place-gilmn": 6.816042326562872, + "place-mgngl": 7.496244829570309, + "place-balsq": 7.971660610161656, + "place-mdftf": 8.545634284528354, + "place-prmnl": 14.994135146991571, + "place-hsmnl": 17.123263129573292, + "place-symcl": 15.256786380661936, + "place-bckhl": 17.0348990824833, + "place-nuniv": 15.533300691461863, + "place-rvrwy": 16.856168457458445, + "place-mfa": 15.852691045544024, + "place-mispk": 16.705107361135966, + "place-lngmd": 16.12110117227889, + "place-fenwd": 16.48610710326692, + "place-brmnl": 16.332550781560684, + "place-river": 25.213581693534767, + "place-fenwy": 34.35261525130737, + "place-woodl": 25.78211729748271, + "place-longw": 33.97995115711744, + "place-waban": 26.590108757357044, + "place-bvmnl": 33.231491599061485, + "place-eliot": 27.45104529920267, + "place-brkhl": 32.71661255517777, + "place-newtn": 28.20975901485327, + "place-bcnfd": 31.93099906483636, + "place-newto": 29.029249081613386, + "place-rsmnl": 31.52355235425118, + "place-chhil": 30.499226634579067, + "place-unsqu": 6.282157690338422, + "place-bndhl": 7.822461980160861, + "place-smary": 6.645695764858228, + "place-clmnl": 8.901097094219757, + "place-hwsst": 6.8648499158663405, + "place-engav": 8.718922185685596, + "place-kntst": 7.051242778424004, + "place-denrd": 8.556608600771494, + "place-stpul": 7.211289685113934, + "place-tapst": 8.326177073391394, + "place-cool": 7.438871995670286, + "place-bcnwa": 8.129855104315794, + "place-sumav": 7.65877449507377, + "place-fbkst": 7.949615469408654 + }, + "place-harvd": { + "place-grigg": 0.19450996492981, + "place-alsgr": 0.382964942237334, + "place-wrnst": 0.539380110778056, + "place-wascm": 0.8326376958562, + "place-sthld": 1.112665531421499, + "place-chswk": 1.3574818429123918, + "place-chill": 1.532984760871511, + "place-sougr": 1.8142322573669767, + "place-lake": 2.321817059621809, + "place-brico": 0.356623917571383, + "place-babck": 0.648312107914778, + "place-amory": 0.919953447491649, + "place-bucen": 1.304602498906387, + "place-buest": 1.455720036859739, + "place-bland": 1.671826278284817, + "place-kencl": 1.911721818952319, + "place-hymnl": 2.312015143437327, + "place-coecl": 2.841361125402649, + "place-armnl": 3.2335885118408503, + "place-boyls": 3.5572351784329523, + "place-pktrm": 3.848377409677484, + "place-gover": 4.132396856110316, + "place-haecl": 4.386214837846974, + "place-north": 4.620847987751532, + "place-spmnl": 5.027681944941541, + "place-lech": 5.594470238184005, + "place-esomr": 6.4032541215551175, + "place-gilmn": 7.1726662441342555, + "place-mgngl": 7.8528687471416925, + "place-balsq": 8.32828452773304, + "place-mdftf": 8.902258202099738, + "place-prmnl": 15.350759064562954, + "place-hsmnl": 17.479887047144675, + "place-symcl": 15.613410298233319, + "place-bckhl": 17.391523000054683, + "place-nuniv": 15.889924609033246, + "place-rvrwy": 17.212792375029828, + "place-mfa": 16.209314963115407, + "place-mispk": 17.06173127870735, + "place-lngmd": 16.477725089850274, + "place-fenwd": 16.842731020838304, + "place-brmnl": 16.689174699132067, + "place-river": 25.57020561110615, + "place-fenwy": 34.70923916887875, + "place-woodl": 26.138741215054093, + "place-longw": 34.336575074688824, + "place-waban": 26.946732674928427, + "place-bvmnl": 33.58811551663287, + "place-eliot": 27.807669216774052, + "place-brkhl": 33.07323647274915, + "place-newtn": 28.566382932424652, + "place-bcnfd": 32.28762298240774, + "place-newto": 29.38587299918477, + "place-rsmnl": 31.880176271822563, + "place-chhil": 30.85585055215045, + "place-unsqu": 6.638781607909805, + "place-bndhl": 8.179085897732243, + "place-smary": 7.0023196824296114, + "place-clmnl": 9.25772101179114, + "place-hwsst": 7.221473833437724, + "place-engav": 9.075546103256979, + "place-kntst": 7.407866695995387, + "place-denrd": 8.913232518342877, + "place-stpul": 7.5679136026853175, + "place-tapst": 8.682800990962777, + "place-cool": 7.795495913241669, + "place-bcnwa": 8.486479021887178, + "place-sumav": 8.015398412645153, + "place-fbkst": 8.306239386980037 + }, + "place-grigg": { + "place-alsgr": 0.188454977307524, + "place-wrnst": 0.344870145848246, + "place-wascm": 0.63812773092639, + "place-sthld": 0.9181555664916891, + "place-chswk": 1.162971877982582, + "place-chill": 1.338474795941701, + "place-sougr": 1.6197222924371668, + "place-lake": 2.127307094691999, + "place-harvd": 0.19450996492981, + "place-brico": 0.551133882501193, + "place-babck": 0.842822072844588, + "place-amory": 1.114463412421459, + "place-bucen": 1.499112463836197, + "place-buest": 1.650230001789549, + "place-bland": 1.866336243214627, + "place-kencl": 2.106231783882129, + "place-hymnl": 2.5065251083671374, + "place-coecl": 3.0358710903324595, + "place-armnl": 3.4280984767706606, + "place-boyls": 3.7517451433627627, + "place-pktrm": 4.042887374607295, + "place-gover": 4.326906821040127, + "place-haecl": 4.580724802776785, + "place-north": 4.815357952681342, + "place-spmnl": 5.222191909871352, + "place-lech": 5.788980203113816, + "place-esomr": 6.597764086484928, + "place-gilmn": 7.367176209064066, + "place-mgngl": 8.047378712071502, + "place-balsq": 8.522794492662848, + "place-mdftf": 9.096768167029547, + "place-prmnl": 15.545269029492761, + "place-hsmnl": 17.674397012074486, + "place-symcl": 15.807920263163126, + "place-bckhl": 17.58603296498449, + "place-nuniv": 16.084434573963055, + "place-rvrwy": 17.407302339959635, + "place-mfa": 16.403824928045214, + "place-mispk": 17.256241243637156, + "place-lngmd": 16.67223505478008, + "place-fenwd": 17.037240985768115, + "place-brmnl": 16.883684664061875, + "place-river": 25.76471557603596, + "place-fenwy": 34.90374913380856, + "place-woodl": 26.333251179983904, + "place-longw": 34.53108503961863, + "place-waban": 27.141242639858238, + "place-bvmnl": 33.782625481562675, + "place-eliot": 28.00217918170386, + "place-brkhl": 33.26774643767896, + "place-newtn": 28.760892897354463, + "place-bcnfd": 32.482132947337554, + "place-newto": 29.580382964114584, + "place-rsmnl": 32.07468623675237, + "place-chhil": 31.050360517080264, + "place-unsqu": 6.833291572839616, + "place-bndhl": 8.373595862662054, + "place-smary": 7.196829647359422, + "place-clmnl": 9.452230976720951, + "place-hwsst": 7.4159837983675345, + "place-engav": 9.27005606818679, + "place-kntst": 7.602376660925198, + "place-denrd": 9.107742483272688, + "place-stpul": 7.762423567615128, + "place-tapst": 8.877310955892588, + "place-cool": 7.99000587817148, + "place-bcnwa": 8.680988986816988, + "place-sumav": 8.209908377574964, + "place-fbkst": 8.500749351909848 + }, + "place-alsgr": { + "place-wrnst": 0.156415168540722, + "place-wascm": 0.44967275361886594, + "place-sthld": 0.729700589184165, + "place-chswk": 0.974516900675058, + "place-chill": 1.150019818634177, + "place-sougr": 1.431267315129643, + "place-lake": 1.938852117384475, + "place-grigg": 0.188454977307524, + "place-harvd": 0.382964942237334, + "place-brico": 0.739588859808717, + "place-babck": 1.031277050152112, + "place-amory": 1.3029183897289829, + "place-bucen": 1.687567441143721, + "place-buest": 1.838684979097073, + "place-bland": 2.054791220522151, + "place-kencl": 2.294686761189653, + "place-hymnl": 2.6949800856746613, + "place-coecl": 3.2243260676399834, + "place-armnl": 3.6165534540781845, + "place-boyls": 3.9402001206702866, + "place-pktrm": 4.231342351914819, + "place-gover": 4.515361798347651, + "place-haecl": 4.7691797800843085, + "place-north": 5.003812929988866, + "place-spmnl": 5.410646887178876, + "place-lech": 5.97743518042134, + "place-esomr": 6.786219063792452, + "place-gilmn": 7.55563118637159, + "place-mgngl": 8.235833689379028, + "place-balsq": 8.711249469970374, + "place-mdftf": 9.285223144337072, + "place-prmnl": 15.733724006800287, + "place-hsmnl": 17.86285198938201, + "place-symcl": 15.996375240470652, + "place-bckhl": 17.774487942292016, + "place-nuniv": 16.27288955127058, + "place-rvrwy": 17.59575731726716, + "place-mfa": 16.59227990535274, + "place-mispk": 17.444696220944685, + "place-lngmd": 16.86069003208761, + "place-fenwd": 17.225695963075637, + "place-brmnl": 17.072139641369404, + "place-river": 25.953170553343483, + "place-fenwy": 35.09220411111609, + "place-woodl": 26.521706157291426, + "place-longw": 34.71954001692615, + "place-waban": 27.32969761716576, + "place-bvmnl": 33.971080458870205, + "place-eliot": 28.19063415901138, + "place-brkhl": 33.45620141498648, + "place-newtn": 28.949347874661985, + "place-bcnfd": 32.670587924645076, + "place-newto": 29.768837941422106, + "place-rsmnl": 32.26314121405989, + "place-chhil": 31.238815494387786, + "place-unsqu": 7.02174655014714, + "place-bndhl": 8.56205083996958, + "place-smary": 7.385284624666946, + "place-clmnl": 9.640685954028474, + "place-hwsst": 7.604438775675058, + "place-engav": 9.458511045494314, + "place-kntst": 7.790831638232722, + "place-denrd": 9.296197460580213, + "place-stpul": 7.950878544922652, + "place-tapst": 9.065765933200112, + "place-cool": 8.178460855479003, + "place-bcnwa": 8.869443964124514, + "place-sumav": 8.398363354882488, + "place-fbkst": 8.689204329217372 + }, + "place-wrnst": { + "place-wascm": 0.293257585078144, + "place-sthld": 0.573285420643443, + "place-chswk": 0.818101732134336, + "place-chill": 0.993604650093455, + "place-sougr": 1.2748521465889209, + "place-lake": 1.782436948843753, + "place-alsgr": 0.156415168540722, + "place-grigg": 0.344870145848246, + "place-harvd": 0.539380110778056, + "place-brico": 0.896004028349439, + "place-babck": 1.187692218692834, + "place-amory": 1.4593335582697051, + "place-bucen": 1.8439826096844432, + "place-buest": 1.9951001476377952, + "place-bland": 2.2112063890628733, + "place-kencl": 2.4511019297303753, + "place-hymnl": 2.851395254215383, + "place-coecl": 3.380741236180705, + "place-armnl": 3.7729686226189063, + "place-boyls": 4.096615289211008, + "place-pktrm": 4.38775752045554, + "place-gover": 4.6717769668883715, + "place-haecl": 4.9255949486250294, + "place-north": 5.160228098529587, + "place-spmnl": 5.567062055719597, + "place-lech": 6.133850348962061, + "place-esomr": 6.942634232333173, + "place-gilmn": 7.712046354912311, + "place-mgngl": 8.392248857919748, + "place-balsq": 8.867664638511094, + "place-mdftf": 9.441638312877792, + "place-prmnl": 15.890139175341009, + "place-hsmnl": 18.01926715792273, + "place-symcl": 16.152790409011374, + "place-bckhl": 17.930903110832737, + "place-nuniv": 16.4293047198113, + "place-rvrwy": 17.752172485807883, + "place-mfa": 16.74869507389346, + "place-mispk": 17.601111389485403, + "place-lngmd": 17.01710520062833, + "place-fenwd": 17.38211113161636, + "place-brmnl": 17.228554809910122, + "place-river": 26.109585721884205, + "place-fenwy": 35.24861927965681, + "place-woodl": 26.678121325832148, + "place-longw": 34.87595518546688, + "place-waban": 27.48611278570648, + "place-bvmnl": 34.12749562741092, + "place-eliot": 28.347049327552106, + "place-brkhl": 33.612616583527206, + "place-newtn": 29.105763043202707, + "place-bcnfd": 32.827003093185795, + "place-newto": 29.925253109962824, + "place-rsmnl": 32.41955638260062, + "place-chhil": 31.395230662928505, + "place-unsqu": 7.178161718687861, + "place-bndhl": 8.7184660085103, + "place-smary": 7.541699793207666, + "place-clmnl": 9.797101122569195, + "place-hwsst": 7.760853944215779, + "place-engav": 9.614926214035034, + "place-kntst": 7.9472468067734425, + "place-denrd": 9.452612629120933, + "place-stpul": 8.107293713463374, + "place-tapst": 9.222181101740833, + "place-cool": 8.334876024019724, + "place-bcnwa": 9.025859132665234, + "place-sumav": 8.55477852342321, + "place-fbkst": 8.845619497758094 + }, + "place-wascm": { + "place-sthld": 0.280027835565299, + "place-chswk": 0.524844147056192, + "place-chill": 0.700347065015311, + "place-sougr": 0.981594561510777, + "place-lake": 1.489179363765609, + "place-wrnst": 0.293257585078144, + "place-alsgr": 0.44967275361886594, + "place-grigg": 0.63812773092639, + "place-harvd": 0.8326376958562, + "place-brico": 1.189261613427583, + "place-babck": 1.480949803770978, + "place-amory": 1.752591143347849, + "place-bucen": 2.1372401947625868, + "place-buest": 2.2883577327159386, + "place-bland": 2.5044639741410166, + "place-kencl": 2.7443595148085187, + "place-hymnl": 3.144652839293527, + "place-coecl": 3.673998821258849, + "place-armnl": 4.06622620769705, + "place-boyls": 4.389872874289152, + "place-pktrm": 4.6810151055336835, + "place-gover": 4.965034551966515, + "place-haecl": 5.218852533703173, + "place-north": 5.453485683607731, + "place-spmnl": 5.860319640797741, + "place-lech": 6.427107934040205, + "place-esomr": 7.235891817411317, + "place-gilmn": 8.005303939990455, + "place-mgngl": 8.685506442997891, + "place-balsq": 9.160922223589237, + "place-mdftf": 9.734895897955935, + "place-prmnl": 16.18339676041915, + "place-hsmnl": 18.31252474300087, + "place-symcl": 16.446047994089515, + "place-bckhl": 18.22416069591088, + "place-nuniv": 16.722562304889443, + "place-rvrwy": 18.045430070886024, + "place-mfa": 17.041952658971603, + "place-mispk": 17.894368974563548, + "place-lngmd": 17.310362785706474, + "place-fenwd": 17.6753687166945, + "place-brmnl": 17.521812394988267, + "place-river": 26.402843306962346, + "place-fenwy": 35.541876864734945, + "place-woodl": 26.97137891091029, + "place-longw": 35.169212770545016, + "place-waban": 27.779370370784623, + "place-bvmnl": 34.42075321248906, + "place-eliot": 28.640306912630244, + "place-brkhl": 33.905874168605344, + "place-newtn": 29.399020628280848, + "place-bcnfd": 33.12026067826394, + "place-newto": 30.21851069504097, + "place-rsmnl": 32.712813967678755, + "place-chhil": 31.68848824800665, + "place-unsqu": 7.471419303766004, + "place-bndhl": 9.011723593588442, + "place-smary": 7.834957378285811, + "place-clmnl": 10.09035870764734, + "place-hwsst": 8.054111529293923, + "place-engav": 9.908183799113178, + "place-kntst": 8.240504391851587, + "place-denrd": 9.745870214199076, + "place-stpul": 8.400551298541517, + "place-tapst": 9.515438686818976, + "place-cool": 8.628133609097869, + "place-bcnwa": 9.319116717743377, + "place-sumav": 8.848036108501352, + "place-fbkst": 9.138877082836236 + }, + "place-sthld": { + "place-chswk": 0.244816311490893, + "place-chill": 0.420319229450012, + "place-sougr": 0.701566725945478, + "place-lake": 1.20915152820031, + "place-wascm": 0.280027835565299, + "place-wrnst": 0.573285420643443, + "place-alsgr": 0.729700589184165, + "place-grigg": 0.9181555664916891, + "place-harvd": 1.112665531421499, + "place-brico": 1.469289448992882, + "place-babck": 1.760977639336277, + "place-amory": 2.032618978913148, + "place-bucen": 2.417268030327886, + "place-buest": 2.5683855682812378, + "place-bland": 2.784491809706316, + "place-kencl": 3.024387350373818, + "place-hymnl": 3.424680674858826, + "place-coecl": 3.9540266568241482, + "place-armnl": 4.346254043262349, + "place-boyls": 4.669900709854451, + "place-pktrm": 4.961042941098983, + "place-gover": 5.2450623875318145, + "place-haecl": 5.4988803692684725, + "place-north": 5.73351351917303, + "place-spmnl": 6.14034747636304, + "place-lech": 6.707135769605504, + "place-esomr": 7.515919652976616, + "place-gilmn": 8.285331775555754, + "place-mgngl": 8.96553427856319, + "place-balsq": 9.440950059154536, + "place-mdftf": 10.014923733521234, + "place-prmnl": 16.46342459598445, + "place-hsmnl": 18.59255257856617, + "place-symcl": 16.726075829654814, + "place-bckhl": 18.504188531476178, + "place-nuniv": 17.002590140454743, + "place-rvrwy": 18.325457906451323, + "place-mfa": 17.321980494536902, + "place-mispk": 18.174396810128847, + "place-lngmd": 17.590390621271773, + "place-fenwd": 17.9553965522598, + "place-brmnl": 17.801840230553566, + "place-river": 26.682871142527645, + "place-fenwy": 35.82190470030025, + "place-woodl": 27.25140674647559, + "place-longw": 35.449240606110315, + "place-waban": 28.059398206349922, + "place-bvmnl": 34.70078104805437, + "place-eliot": 28.920334748195543, + "place-brkhl": 34.18590200417064, + "place-newtn": 29.679048463846147, + "place-bcnfd": 33.40028851382924, + "place-newto": 30.498538530606268, + "place-rsmnl": 32.992841803244055, + "place-chhil": 31.96851608357195, + "place-unsqu": 7.751447139331304, + "place-bndhl": 9.291751429153742, + "place-smary": 8.11498521385111, + "place-clmnl": 10.37038654321264, + "place-hwsst": 8.334139364859222, + "place-engav": 10.188211634678478, + "place-kntst": 8.520532227416886, + "place-denrd": 10.025898049764375, + "place-stpul": 8.680579134106816, + "place-tapst": 9.795466522384276, + "place-cool": 8.908161444663168, + "place-bcnwa": 9.599144553308676, + "place-sumav": 9.128063944066652, + "place-fbkst": 9.418904918401536 + }, + "place-chswk": { + "place-chill": 0.175502917959119, + "place-sougr": 0.456750414454585, + "place-lake": 0.964335216709417, + "place-sthld": 0.244816311490893, + "place-wascm": 0.524844147056192, + "place-wrnst": 0.818101732134336, + "place-alsgr": 0.974516900675058, + "place-grigg": 1.162971877982582, + "place-harvd": 1.3574818429123918, + "place-brico": 1.7141057604837748, + "place-babck": 2.0057939508271696, + "place-amory": 2.2774352904040405, + "place-bucen": 2.6620843418187783, + "place-buest": 2.81320187977213, + "place-bland": 3.029308121197208, + "place-kencl": 3.2692036618647102, + "place-hymnl": 3.669496986349718, + "place-coecl": 4.19884296831504, + "place-armnl": 4.59107035475324, + "place-boyls": 4.914717021345342, + "place-pktrm": 5.205859252589874, + "place-gover": 5.4898786990227055, + "place-haecl": 5.7436966807593635, + "place-north": 5.978329830663921, + "place-spmnl": 6.385163787853931, + "place-lech": 6.951952081096395, + "place-esomr": 7.760735964467507, + "place-gilmn": 8.530148087046646, + "place-mgngl": 9.210350590054084, + "place-balsq": 9.68576637064543, + "place-mdftf": 10.259740045012128, + "place-prmnl": 16.708240907475343, + "place-hsmnl": 18.837368890057064, + "place-symcl": 16.970892141145708, + "place-bckhl": 18.74900484296707, + "place-nuniv": 17.247406451945636, + "place-rvrwy": 18.570274217942217, + "place-mfa": 17.566796806027796, + "place-mispk": 18.41921312161974, + "place-lngmd": 17.835206932762667, + "place-fenwd": 18.200212863750693, + "place-brmnl": 18.04665654204446, + "place-river": 26.92768745401854, + "place-fenwy": 36.066721011791145, + "place-woodl": 27.496223057966482, + "place-longw": 35.69405691760121, + "place-waban": 28.304214517840816, + "place-bvmnl": 34.94559735954526, + "place-eliot": 29.165151059686437, + "place-brkhl": 34.43071831566154, + "place-newtn": 29.92386477533704, + "place-bcnfd": 33.64510482532013, + "place-newto": 30.743354842097162, + "place-rsmnl": 33.23765811473495, + "place-chhil": 32.21333239506284, + "place-unsqu": 7.996263450822195, + "place-bndhl": 9.536567740644633, + "place-smary": 8.359801525342, + "place-clmnl": 10.61520285470353, + "place-hwsst": 8.578955676350112, + "place-engav": 10.433027946169368, + "place-kntst": 8.765348538907777, + "place-denrd": 10.270714361255267, + "place-stpul": 8.925395445597708, + "place-tapst": 10.040282833875168, + "place-cool": 9.152977756154058, + "place-bcnwa": 9.843960864799568, + "place-sumav": 9.372880255557543, + "place-fbkst": 9.663721229892428 + }, + "place-chill": { + "place-sougr": 0.281247496495466, + "place-lake": 0.788832298750298, + "place-chswk": 0.175502917959119, + "place-sthld": 0.420319229450012, + "place-wascm": 0.700347065015311, + "place-wrnst": 0.993604650093455, + "place-alsgr": 1.150019818634177, + "place-grigg": 1.338474795941701, + "place-harvd": 1.532984760871511, + "place-brico": 1.889608678442894, + "place-babck": 2.181296868786289, + "place-amory": 2.4529382083631597, + "place-bucen": 2.8375872597778975, + "place-buest": 2.9887047977312493, + "place-bland": 3.2048110391563274, + "place-kencl": 3.4447065798238294, + "place-hymnl": 3.844999904308837, + "place-coecl": 4.374345886274159, + "place-armnl": 4.7665732727123595, + "place-boyls": 5.090219939304461, + "place-pktrm": 5.381362170548993, + "place-gover": 5.665381616981825, + "place-haecl": 5.919199598718483, + "place-north": 6.15383274862304, + "place-spmnl": 6.56066670581305, + "place-lech": 7.127454999055514, + "place-esomr": 7.936238882426626, + "place-gilmn": 8.705651005005764, + "place-mgngl": 9.385853508013202, + "place-balsq": 9.861269288604548, + "place-mdftf": 10.435242962971246, + "place-prmnl": 16.88374382543446, + "place-hsmnl": 19.012871808016186, + "place-symcl": 17.146395059104826, + "place-bckhl": 18.92450776092619, + "place-nuniv": 17.422909369904755, + "place-rvrwy": 18.745777135901335, + "place-mfa": 17.742299723986914, + "place-mispk": 18.594716039578856, + "place-lngmd": 18.01070985072178, + "place-fenwd": 18.375715781709815, + "place-brmnl": 18.222159460003574, + "place-river": 27.10319037197766, + "place-fenwy": 36.24222392975027, + "place-woodl": 27.671725975925604, + "place-longw": 35.86955983556033, + "place-waban": 28.479717435799937, + "place-bvmnl": 35.12110027750438, + "place-eliot": 29.34065397764556, + "place-brkhl": 34.60622123362066, + "place-newtn": 30.099367693296163, + "place-bcnfd": 33.820607743279254, + "place-newto": 30.918857760056284, + "place-rsmnl": 33.41316103269407, + "place-chhil": 32.388835313021964, + "place-unsqu": 8.171766368781315, + "place-bndhl": 9.712070658603754, + "place-smary": 8.53530444330112, + "place-clmnl": 10.790705772662648, + "place-hwsst": 8.754458594309233, + "place-engav": 10.608530864128488, + "place-kntst": 8.940851456866895, + "place-denrd": 10.446217279214387, + "place-stpul": 9.100898363556826, + "place-tapst": 10.215785751834286, + "place-cool": 9.328480674113177, + "place-bcnwa": 10.019463782758688, + "place-sumav": 9.548383173516662, + "place-fbkst": 9.839224147851546 + }, + "place-sougr": { + "place-lake": 0.507584802254832, + "place-chill": 0.281247496495466, + "place-chswk": 0.456750414454585, + "place-sthld": 0.701566725945478, + "place-wascm": 0.981594561510777, + "place-wrnst": 1.2748521465889209, + "place-alsgr": 1.431267315129643, + "place-grigg": 1.6197222924371668, + "place-harvd": 1.8142322573669767, + "place-brico": 2.1708561749383595, + "place-babck": 2.4625443652817545, + "place-amory": 2.7341857048586253, + "place-bucen": 3.118834756273363, + "place-buest": 3.269952294226715, + "place-bland": 3.486058535651793, + "place-kencl": 3.725954076319295, + "place-hymnl": 4.126247400804303, + "place-coecl": 4.6555933827696245, + "place-armnl": 5.047820769207825, + "place-boyls": 5.371467435799927, + "place-pktrm": 5.662609667044459, + "place-gover": 5.94662911347729, + "place-haecl": 6.200447095213948, + "place-north": 6.435080245118506, + "place-spmnl": 6.841914202308516, + "place-lech": 7.40870249555098, + "place-esomr": 8.217486378922091, + "place-gilmn": 8.98689850150123, + "place-mgngl": 9.667101004508666, + "place-balsq": 10.142516785100012, + "place-mdftf": 10.71649045946671, + "place-prmnl": 17.164991321929925, + "place-hsmnl": 19.294119304511646, + "place-symcl": 17.42764255560029, + "place-bckhl": 19.205755257421654, + "place-nuniv": 17.70415686640022, + "place-rvrwy": 19.0270246323968, + "place-mfa": 18.023547220482378, + "place-mispk": 18.875963536074323, + "place-lngmd": 18.29195734721725, + "place-fenwd": 18.656963278205275, + "place-brmnl": 18.50340695649904, + "place-river": 27.38443786847312, + "place-fenwy": 36.52347142624572, + "place-woodl": 27.952973472421064, + "place-longw": 36.15080733205579, + "place-waban": 28.760964932295398, + "place-bvmnl": 35.402347773999836, + "place-eliot": 29.62190147414102, + "place-brkhl": 34.88746873011612, + "place-newtn": 30.380615189791623, + "place-bcnfd": 34.101855239774714, + "place-newto": 31.200105256551744, + "place-rsmnl": 33.69440852918953, + "place-chhil": 32.670082809517424, + "place-unsqu": 8.45301386527678, + "place-bndhl": 9.993318155099217, + "place-smary": 8.816551939796586, + "place-clmnl": 11.071953269158115, + "place-hwsst": 9.035706090804698, + "place-engav": 10.889778360623954, + "place-kntst": 9.222098953362362, + "place-denrd": 10.727464775709851, + "place-stpul": 9.382145860052292, + "place-tapst": 10.497033248329751, + "place-cool": 9.609728170608644, + "place-bcnwa": 10.300711279254152, + "place-sumav": 9.829630670012127, + "place-fbkst": 10.120471644347012 + }, + "place-lake": { + "place-sougr": 0.507584802254832, + "place-chill": 0.788832298750298, + "place-chswk": 0.964335216709417, + "place-sthld": 1.20915152820031, + "place-wascm": 1.489179363765609, + "place-wrnst": 1.782436948843753, + "place-alsgr": 1.938852117384475, + "place-grigg": 2.127307094691999, + "place-harvd": 2.321817059621809, + "place-brico": 2.6784409771931923, + "place-babck": 2.9701291675365873, + "place-amory": 3.241770507113458, + "place-bucen": 3.626419558528196, + "place-buest": 3.777537096481548, + "place-bland": 3.993643337906626, + "place-kencl": 4.2335388785741275, + "place-hymnl": 4.633832203059136, + "place-coecl": 5.163178185024457, + "place-armnl": 5.555405571462658, + "place-boyls": 5.87905223805476, + "place-pktrm": 6.170194469299291, + "place-gover": 6.454213915732123, + "place-haecl": 6.708031897468781, + "place-north": 6.942665047373339, + "place-spmnl": 7.349499004563349, + "place-lech": 7.9162872978058125, + "place-esomr": 8.725071181176924, + "place-gilmn": 9.494483303756063, + "place-mgngl": 10.174685806763499, + "place-balsq": 10.650101587354845, + "place-mdftf": 11.224075261721543, + "place-prmnl": 17.672576124184758, + "place-hsmnl": 19.80170410676648, + "place-symcl": 17.935227357855123, + "place-bckhl": 19.713340059676487, + "place-nuniv": 18.21174166865505, + "place-rvrwy": 19.53460943465163, + "place-mfa": 18.53113202273721, + "place-mispk": 19.383548338329156, + "place-lngmd": 18.79954214947208, + "place-fenwd": 19.164548080460108, + "place-brmnl": 19.010991758753875, + "place-river": 27.892022670727954, + "place-fenwy": 37.03105622850056, + "place-woodl": 28.460558274675897, + "place-longw": 36.658392134310624, + "place-waban": 29.26854973455023, + "place-bvmnl": 35.909932576254675, + "place-eliot": 30.129486276395852, + "place-brkhl": 35.39505353237095, + "place-newtn": 30.888199992046456, + "place-bcnfd": 34.60944004202955, + "place-newto": 31.707690058806577, + "place-rsmnl": 34.20199333144436, + "place-chhil": 33.17766761177226, + "place-unsqu": 8.960598667531613, + "place-bndhl": 10.50090295735405, + "place-smary": 9.324136742051419, + "place-clmnl": 11.579538071412948, + "place-hwsst": 9.543290893059531, + "place-engav": 11.397363162878786, + "place-kntst": 9.729683755617195, + "place-denrd": 11.235049577964684, + "place-stpul": 9.889730662307125, + "place-tapst": 11.004618050584584, + "place-cool": 10.117312972863477, + "place-bcnwa": 10.808296081508985, + "place-sumav": 10.33721547226696, + "place-fbkst": 10.628056446601844 + }, + "place-smary": { + "place-hwsst": 0.219154151008113, + "place-kntst": 0.405547013565776, + "place-stpul": 0.565593920255707, + "place-cool": 0.7931762308120579, + "place-sumav": 1.013078730215542, + "place-bndhl": 1.176766215302633, + "place-fbkst": 1.303919704550426, + "place-bcnwa": 1.484159339457568, + "place-tapst": 1.680481308533166, + "place-denrd": 1.910912835913266, + "place-engav": 2.073226420827368, + "place-clmnl": 2.2554013293615283, + "place-kencl": 0.649247789161298, + "place-hymnl": 1.049896923839776, + "place-mdftf": 7.640139982502188, + "place-prmnl": 14.088640844965404, + "place-coecl": 14.47624463073153, + "place-unsqu": 18.273665113238685, + "place-river": 24.3080873915086, + "place-pktrm": 15.483260915006365, + "place-hsmnl": 16.217768827547125, + "place-symcl": 14.351292078635769, + "place-bckhl": 16.12940478045713, + "place-nuniv": 14.627806389435696, + "place-rvrwy": 15.950674155432276, + "place-mfa": 14.947196743517857, + "place-mispk": 15.799613059109799, + "place-lngmd": 15.215606870252724, + "place-fenwd": 15.580612801240754, + "place-brmnl": 15.427056479534517, + "place-balsq": 8.214113656868886, + "place-lech": 11.001509412530822, + "place-esomr": 10.139144063046807, + "place-mgngl": 8.689529437460232, + "place-gilmn": 9.36973194046767, + "place-gover": 15.767280361439198, + "place-haecl": 16.021098343175854, + "place-spmnl": 16.662565450270424, + "place-north": 16.255731493080415, + "place-bland": 15.645779477849363, + "place-chhil": 19.891816362443333, + "place-fenwy": 16.04684599501412, + "place-woodl": 24.61700615095344, + "place-longw": 16.40301817759286, + "place-waban": 23.790303640489547, + "place-bvmnl": 17.141335854857633, + "place-eliot": 22.942964582463418, + "place-brkhl": 17.674238104469897, + "place-newtn": 22.170580556425485, + "place-bcnfd": 18.471750654303868, + "place-newto": 21.360967882565824, + "place-rsmnl": 18.8709080488696, + "place-boyls": 15.192118683761834, + "place-buest": 15.86188571927444, + "place-armnl": 14.868472017169731, + "place-bucen": 16.013003257227794, + "place-lake": 19.63942281575599, + "place-amory": 16.39765230864253, + "place-sougr": 19.131838013501156, + "place-babck": 16.6692936482194, + "place-chill": 18.85059051700569, + "place-brico": 16.960981838562795, + "place-chswk": 18.67508759904657, + "place-harvd": 17.317605756134178, + "place-sthld": 18.43027128755568, + "place-grigg": 17.51211572106399, + "place-wascm": 18.15024345199038, + "place-alsgr": 17.700570698371514, + "place-wrnst": 17.856985866912236 + }, + "place-hwsst": { + "place-kntst": 0.186392862557663, + "place-stpul": 0.346439769247594, + "place-cool": 0.5740220798039449, + "place-sumav": 0.793924579207429, + "place-bndhl": 0.9576120642945201, + "place-fbkst": 1.084765553542313, + "place-bcnwa": 1.265005188449455, + "place-tapst": 1.461327157525053, + "place-denrd": 1.6917586849051531, + "place-engav": 1.854072269819255, + "place-clmnl": 2.036247178353415, + "place-smary": 0.219154151008113, + "place-kencl": 0.868401940169411, + "place-hymnl": 1.269051074847889, + "place-mdftf": 7.859294133510301, + "place-prmnl": 14.307794995973516, + "place-coecl": 14.695398781739643, + "place-unsqu": 18.492819264246798, + "place-river": 24.527241542516713, + "place-pktrm": 15.702415066014478, + "place-hsmnl": 16.436922978555238, + "place-symcl": 14.570446229643881, + "place-bckhl": 16.348558931465245, + "place-nuniv": 14.84696054044381, + "place-rvrwy": 16.16982830644039, + "place-mfa": 15.16635089452597, + "place-mispk": 16.01876721011791, + "place-lngmd": 15.434761021260837, + "place-fenwd": 15.799766952248866, + "place-brmnl": 15.64621063054263, + "place-balsq": 8.433267807876998, + "place-lech": 11.220663563538935, + "place-esomr": 10.358298214054921, + "place-mgngl": 8.908683588468346, + "place-gilmn": 9.588886091475782, + "place-gover": 15.98643451244731, + "place-haecl": 16.240252494183967, + "place-spmnl": 16.881719601278537, + "place-north": 16.474885644088527, + "place-bland": 15.864933628857475, + "place-chhil": 20.110970513451445, + "place-fenwy": 16.266000146022233, + "place-woodl": 24.836160301961552, + "place-longw": 16.62217232860097, + "place-waban": 24.00945779149766, + "place-bvmnl": 17.360490005865746, + "place-eliot": 23.16211873347153, + "place-brkhl": 17.89339225547801, + "place-newtn": 22.389734707433597, + "place-bcnfd": 18.69090480531198, + "place-newto": 21.580122033573936, + "place-rsmnl": 19.090062199877714, + "place-boyls": 15.411272834769946, + "place-buest": 16.081039870282552, + "place-armnl": 15.087626168177843, + "place-bucen": 16.232157408235906, + "place-lake": 19.8585769667641, + "place-amory": 16.616806459650643, + "place-sougr": 19.350992164509268, + "place-babck": 16.888447799227514, + "place-chill": 19.0697446680138, + "place-brico": 17.180135989570907, + "place-chswk": 18.894241750054682, + "place-harvd": 17.53675990714229, + "place-sthld": 18.649425438563792, + "place-grigg": 17.7312698720721, + "place-wascm": 18.369397602998493, + "place-alsgr": 17.919724849379627, + "place-wrnst": 18.07614001792035 + }, + "place-kntst": { + "place-stpul": 0.160046906689931, + "place-cool": 0.38762921724628197, + "place-sumav": 0.607531716649766, + "place-bndhl": 0.7712192017368571, + "place-fbkst": 0.8983726909846501, + "place-bcnwa": 1.0786123258917921, + "place-tapst": 1.27493429496739, + "place-denrd": 1.5053658223474902, + "place-engav": 1.6676794072615921, + "place-clmnl": 1.849854315795752, + "place-hwsst": 0.186392862557663, + "place-smary": 0.405547013565776, + "place-kencl": 1.054794802727074, + "place-hymnl": 1.455443937405552, + "place-mdftf": 8.045686996067964, + "place-prmnl": 14.49418785853118, + "place-coecl": 14.881791644297307, + "place-unsqu": 18.679212126804465, + "place-river": 24.713634405074377, + "place-pktrm": 15.888807928572142, + "place-hsmnl": 16.623315841112902, + "place-symcl": 14.756839092201545, + "place-bckhl": 16.53495179402291, + "place-nuniv": 15.033353403001472, + "place-rvrwy": 16.356221168998054, + "place-mfa": 15.352743757083633, + "place-mispk": 16.205160072675575, + "place-lngmd": 15.6211538838185, + "place-fenwd": 15.98615981480653, + "place-brmnl": 15.832603493100294, + "place-balsq": 8.619660670434662, + "place-lech": 11.407056426096599, + "place-esomr": 10.544691076612583, + "place-mgngl": 9.095076451026008, + "place-gilmn": 9.775278954033446, + "place-gover": 16.172827375004974, + "place-haecl": 16.42664535674163, + "place-spmnl": 17.0681124638362, + "place-north": 16.66127850664619, + "place-bland": 16.05132649141514, + "place-chhil": 20.29736337600911, + "place-fenwy": 16.452393008579897, + "place-woodl": 25.022553164519216, + "place-longw": 16.808565191158635, + "place-waban": 24.195850654055327, + "place-bvmnl": 17.54688286842341, + "place-eliot": 23.348511596029198, + "place-brkhl": 18.079785118035673, + "place-newtn": 22.576127569991257, + "place-bcnfd": 18.87729766786964, + "place-newto": 21.7665148961316, + "place-rsmnl": 19.27645506243538, + "place-boyls": 15.59766569732761, + "place-buest": 16.267432732840216, + "place-armnl": 15.274019030735507, + "place-bucen": 16.418550270793567, + "place-lake": 20.044969829321765, + "place-amory": 16.803199322208307, + "place-sougr": 19.537385027066932, + "place-babck": 17.074840661785178, + "place-chill": 19.256137530571465, + "place-brico": 17.366528852128575, + "place-chswk": 19.080634612612347, + "place-harvd": 17.723152769699958, + "place-sthld": 18.835818301121456, + "place-grigg": 17.917662734629765, + "place-wascm": 18.555790465556157, + "place-alsgr": 18.10611771193729, + "place-wrnst": 18.262532880478012 + }, + "place-stpul": { + "place-cool": 0.227582310556351, + "place-sumav": 0.447484809959835, + "place-bndhl": 0.611172295046926, + "place-fbkst": 0.7383257842947191, + "place-bcnwa": 0.9185654192018611, + "place-tapst": 1.114887388277459, + "place-denrd": 1.3453189156575591, + "place-engav": 1.507632500571661, + "place-clmnl": 1.689807409105821, + "place-kntst": 0.160046906689931, + "place-hwsst": 0.346439769247594, + "place-smary": 0.565593920255707, + "place-kencl": 1.214841709417005, + "place-hymnl": 1.615490844095483, + "place-mdftf": 8.205733902757895, + "place-prmnl": 14.654234765221112, + "place-coecl": 15.041838550987238, + "place-unsqu": 18.839259033494393, + "place-river": 24.873681311764308, + "place-pktrm": 16.048854835262073, + "place-hsmnl": 16.783362747802833, + "place-symcl": 14.916885998891477, + "place-bckhl": 16.694998700712837, + "place-nuniv": 15.193400309691404, + "place-rvrwy": 16.516268075687982, + "place-mfa": 15.512790663773565, + "place-mispk": 16.365206979365507, + "place-lngmd": 15.781200790508432, + "place-fenwd": 16.146206721496462, + "place-brmnl": 15.992650399790225, + "place-balsq": 8.779707577124594, + "place-lech": 11.56710333278653, + "place-esomr": 10.704737983302515, + "place-mgngl": 9.25512335771594, + "place-gilmn": 9.935325860723378, + "place-gover": 16.332874281694906, + "place-haecl": 16.586692263431562, + "place-spmnl": 17.228159370526132, + "place-north": 16.821325413336123, + "place-bland": 16.21137339810507, + "place-chhil": 20.45741028269904, + "place-fenwy": 16.612439915269828, + "place-woodl": 25.182600071209148, + "place-longw": 16.968612097848567, + "place-waban": 24.355897560745255, + "place-bvmnl": 17.70692977511334, + "place-eliot": 23.508558502719126, + "place-brkhl": 18.239832024725604, + "place-newtn": 22.736174476681192, + "place-bcnfd": 19.037344574559576, + "place-newto": 21.92656180282153, + "place-rsmnl": 19.43650196912531, + "place-boyls": 15.757712604017541, + "place-buest": 16.427479639530148, + "place-armnl": 15.434065937425439, + "place-bucen": 16.578597177483502, + "place-lake": 20.205016736011697, + "place-amory": 16.96324622889824, + "place-sougr": 19.697431933756864, + "place-babck": 17.23488756847511, + "place-chill": 19.416184437261396, + "place-brico": 17.526575758818502, + "place-chswk": 19.240681519302278, + "place-harvd": 17.883199676389886, + "place-sthld": 18.995865207811388, + "place-grigg": 18.077709641319696, + "place-wascm": 18.71583737224609, + "place-alsgr": 18.266164618627222, + "place-wrnst": 18.422579787167944 + }, + "place-cool": { + "place-sumav": 0.219902499403484, + "place-bndhl": 0.383589984490575, + "place-fbkst": 0.510743473738368, + "place-bcnwa": 0.69098310864551, + "place-tapst": 0.887305077721108, + "place-denrd": 1.117736605101208, + "place-engav": 1.28005019001531, + "place-clmnl": 1.46222509854947, + "place-stpul": 0.227582310556351, + "place-kntst": 0.38762921724628197, + "place-hwsst": 0.5740220798039449, + "place-smary": 0.7931762308120579, + "place-kencl": 1.4424240199733558, + "place-hymnl": 1.8430731546518337, + "place-mdftf": 8.433316213314246, + "place-prmnl": 14.881817075777462, + "place-coecl": 15.269420861543589, + "place-unsqu": 19.066841344050744, + "place-river": 25.10126362232066, + "place-pktrm": 16.276437145818424, + "place-hsmnl": 17.010945058359184, + "place-symcl": 15.144468309447827, + "place-bckhl": 16.922581011269187, + "place-nuniv": 15.420982620247754, + "place-rvrwy": 16.743850386244333, + "place-mfa": 15.740372974329915, + "place-mispk": 16.592789289921857, + "place-lngmd": 16.008783101064783, + "place-fenwd": 16.373789032052812, + "place-brmnl": 16.220232710346576, + "place-balsq": 9.007289887680944, + "place-lech": 11.79468564334288, + "place-esomr": 10.932320293858865, + "place-mgngl": 9.48270566827229, + "place-gilmn": 10.162908171279728, + "place-gover": 16.560456592251256, + "place-haecl": 16.814274573987912, + "place-spmnl": 17.455741681082483, + "place-north": 17.048907723892473, + "place-bland": 16.43895570866142, + "place-chhil": 20.68499259325539, + "place-fenwy": 16.84002222582618, + "place-woodl": 25.410182381765498, + "place-longw": 17.196194408404917, + "place-waban": 24.583479871301606, + "place-bvmnl": 17.93451208566969, + "place-eliot": 23.736140813275476, + "place-brkhl": 18.467414335281955, + "place-newtn": 22.963756787237543, + "place-bcnfd": 19.264926885115926, + "place-newto": 22.154144113377882, + "place-rsmnl": 19.66408427968166, + "place-boyls": 15.985294914573892, + "place-buest": 16.6550619500865, + "place-armnl": 15.66164824798179, + "place-bucen": 16.806179488039852, + "place-lake": 20.432599046568047, + "place-amory": 17.19082853945459, + "place-sougr": 19.925014244313214, + "place-babck": 17.46246987903146, + "place-chill": 19.643766747817747, + "place-brico": 17.754158069374853, + "place-chswk": 19.46826382985863, + "place-harvd": 18.110781986946236, + "place-sthld": 19.22344751836774, + "place-grigg": 18.305291951876047, + "place-wascm": 18.94341968280244, + "place-alsgr": 18.493746929183573, + "place-wrnst": 18.650162097724294 + }, + "place-sumav": { + "place-bndhl": 0.163687485087091, + "place-fbkst": 0.290840974334884, + "place-bcnwa": 0.471080609242026, + "place-tapst": 0.667402578317624, + "place-denrd": 0.897834105697724, + "place-engav": 1.0601476906118261, + "place-clmnl": 1.242322599145986, + "place-cool": 0.219902499403484, + "place-stpul": 0.447484809959835, + "place-kntst": 0.607531716649766, + "place-hwsst": 0.793924579207429, + "place-smary": 1.013078730215542, + "place-kencl": 1.66232651937684, + "place-hymnl": 2.062975654055318, + "place-mdftf": 8.653218712717731, + "place-prmnl": 15.101719575180947, + "place-coecl": 15.489323360947074, + "place-unsqu": 19.286743843454232, + "place-river": 25.321166121724143, + "place-pktrm": 16.49633964522191, + "place-hsmnl": 17.23084755776267, + "place-symcl": 15.364370808851312, + "place-bckhl": 17.142483510672676, + "place-nuniv": 15.640885119651239, + "place-rvrwy": 16.96375288564782, + "place-mfa": 15.9602754737334, + "place-mispk": 16.812691789325342, + "place-lngmd": 16.228685600468268, + "place-fenwd": 16.593691531456297, + "place-brmnl": 16.44013520975006, + "place-balsq": 9.227192387084429, + "place-lech": 12.014588142746366, + "place-esomr": 11.15222279326235, + "place-mgngl": 9.702608167675775, + "place-gilmn": 10.382810670683213, + "place-gover": 16.78035909165474, + "place-haecl": 17.034177073391398, + "place-spmnl": 17.675644180485968, + "place-north": 17.268810223295958, + "place-bland": 16.658858208064906, + "place-chhil": 20.904895092658876, + "place-fenwy": 17.059924725229664, + "place-woodl": 25.630084881168983, + "place-longw": 17.416096907808402, + "place-waban": 24.803382370705094, + "place-bvmnl": 18.154414585073177, + "place-eliot": 23.956043312678965, + "place-brkhl": 18.68731683468544, + "place-newtn": 23.183659286641024, + "place-bcnfd": 19.484829384519408, + "place-newto": 22.374046612781367, + "place-rsmnl": 19.88398677908515, + "place-boyls": 16.205197413977377, + "place-buest": 16.874964449489983, + "place-armnl": 15.881550747385274, + "place-bucen": 17.026081987443334, + "place-lake": 20.652501545971532, + "place-amory": 17.410731038858074, + "place-sougr": 20.1449167437167, + "place-babck": 17.682372378434945, + "place-chill": 19.86366924722123, + "place-brico": 17.97406056877834, + "place-chswk": 19.688166329262113, + "place-harvd": 18.330684486349725, + "place-sthld": 19.443350017771223, + "place-grigg": 18.525194451279532, + "place-wascm": 19.163322182205924, + "place-alsgr": 18.713649428587058, + "place-wrnst": 18.87006459712778 + }, + "place-bndhl": { + "place-fbkst": 0.127153489247793, + "place-bcnwa": 0.307393124154935, + "place-tapst": 0.503715093230533, + "place-denrd": 0.7341466206106331, + "place-engav": 0.896460205524735, + "place-clmnl": 1.078635114058895, + "place-sumav": 0.163687485087091, + "place-cool": 0.383589984490575, + "place-stpul": 0.611172295046926, + "place-kntst": 0.7712192017368571, + "place-hwsst": 0.9576120642945201, + "place-smary": 1.176766215302633, + "place-kencl": 1.826014004463931, + "place-hymnl": 2.226663139142409, + "place-mdftf": 8.81690619780482, + "place-prmnl": 15.265407060268036, + "place-coecl": 15.653010846034162, + "place-unsqu": 19.45043132854132, + "place-river": 25.484853606811235, + "place-pktrm": 16.660027130308997, + "place-hsmnl": 17.39453504284976, + "place-symcl": 15.5280582939384, + "place-bckhl": 17.306170995759764, + "place-nuniv": 15.804572604738329, + "place-rvrwy": 17.12744037073491, + "place-mfa": 16.12396295882049, + "place-mispk": 16.97637927441243, + "place-lngmd": 16.392373085555356, + "place-fenwd": 16.75737901654339, + "place-brmnl": 16.60382269483715, + "place-balsq": 9.390879872171519, + "place-lech": 12.178275627833454, + "place-esomr": 11.315910278349442, + "place-mgngl": 9.866295652762865, + "place-gilmn": 10.546498155770303, + "place-gover": 16.94404657674183, + "place-haecl": 17.197864558478486, + "place-spmnl": 17.839331665573056, + "place-north": 17.432497708383046, + "place-bland": 16.822545693151994, + "place-chhil": 21.068582577745964, + "place-fenwy": 17.22361221031675, + "place-woodl": 25.79377236625607, + "place-longw": 17.57978439289549, + "place-waban": 24.967069855792182, + "place-bvmnl": 18.318102070160265, + "place-eliot": 24.119730797766053, + "place-brkhl": 18.851004319772528, + "place-newtn": 23.347346771728112, + "place-bcnfd": 19.648516869606496, + "place-newto": 22.537734097868455, + "place-rsmnl": 20.047674264172237, + "place-boyls": 16.368884899064465, + "place-buest": 17.03865193457707, + "place-armnl": 16.045238232472364, + "place-bucen": 17.189769472530422, + "place-lake": 20.81618903105862, + "place-amory": 17.574418523945162, + "place-sougr": 20.308604228803787, + "place-babck": 17.846059863522033, + "place-chill": 20.02735673230832, + "place-brico": 18.13774805386543, + "place-chswk": 19.8518538143492, + "place-harvd": 18.494371971436813, + "place-sthld": 19.60703750285831, + "place-grigg": 18.68888193636662, + "place-wascm": 19.327009667293012, + "place-alsgr": 18.877336913674146, + "place-wrnst": 19.033752082214868 + }, + "place-fbkst": { + "place-bcnwa": 0.180239634907142, + "place-tapst": 0.37656160398274, + "place-denrd": 0.60699313136284, + "place-engav": 0.769306716276942, + "place-clmnl": 0.951481624811102, + "place-bndhl": 0.127153489247793, + "place-sumav": 0.290840974334884, + "place-cool": 0.510743473738368, + "place-stpul": 0.7383257842947191, + "place-kntst": 0.8983726909846501, + "place-hwsst": 1.084765553542313, + "place-smary": 1.303919704550426, + "place-kencl": 1.953167493711724, + "place-hymnl": 2.3538166283902022, + "place-mdftf": 8.944059687052615, + "place-prmnl": 15.392560549515832, + "place-coecl": 15.780164335281958, + "place-unsqu": 19.577584817789116, + "place-river": 25.612007096059028, + "place-pktrm": 16.787180619556793, + "place-hsmnl": 17.521688532097553, + "place-symcl": 15.655211783186196, + "place-bckhl": 17.43332448500756, + "place-nuniv": 15.931726093986123, + "place-rvrwy": 17.254593859982705, + "place-mfa": 16.251116448068284, + "place-mispk": 17.103532763660226, + "place-lngmd": 16.51952657480315, + "place-fenwd": 16.88453250579118, + "place-brmnl": 16.730976184084945, + "place-balsq": 9.518033361419313, + "place-lech": 12.30542911708125, + "place-esomr": 11.443063767597234, + "place-mgngl": 9.99344914201066, + "place-gilmn": 10.673651645018097, + "place-gover": 17.071200065989625, + "place-haecl": 17.32501804772628, + "place-spmnl": 17.96648515482085, + "place-north": 17.559651197630842, + "place-bland": 16.94969918239979, + "place-chhil": 21.19573606699376, + "place-fenwy": 17.350765699564548, + "place-woodl": 25.920925855503867, + "place-longw": 17.706937882143286, + "place-waban": 25.09422334503998, + "place-bvmnl": 18.44525555940806, + "place-eliot": 24.24688428701385, + "place-brkhl": 18.978157809020324, + "place-newtn": 23.47450026097591, + "place-bcnfd": 19.775670358854292, + "place-newto": 22.66488758711625, + "place-rsmnl": 20.174827753420033, + "place-boyls": 16.49603838831226, + "place-buest": 17.165805423824867, + "place-armnl": 16.17239172172016, + "place-bucen": 17.316922961778218, + "place-lake": 20.943342520306416, + "place-amory": 17.70157201319296, + "place-sougr": 20.435757718051583, + "place-babck": 17.97321335276983, + "place-chill": 20.154510221556116, + "place-brico": 18.264901543113226, + "place-chswk": 19.979007303596998, + "place-harvd": 18.62152546068461, + "place-sthld": 19.734190992106107, + "place-grigg": 18.816035425614416, + "place-wascm": 19.454163156540808, + "place-alsgr": 19.00449040292194, + "place-wrnst": 19.160905571462663 + }, + "place-bcnwa": { + "place-tapst": 0.196321969075598, + "place-denrd": 0.42675349645569804, + "place-engav": 0.5890670813698, + "place-clmnl": 0.77124198990396, + "place-fbkst": 0.180239634907142, + "place-bndhl": 0.307393124154935, + "place-sumav": 0.471080609242026, + "place-cool": 0.69098310864551, + "place-stpul": 0.9185654192018611, + "place-kntst": 1.0786123258917921, + "place-hwsst": 1.265005188449455, + "place-smary": 1.484159339457568, + "place-kencl": 2.133407128618866, + "place-hymnl": 2.534056263297344, + "place-mdftf": 9.124299321959755, + "place-prmnl": 15.57280018442297, + "place-coecl": 15.960403970189097, + "place-unsqu": 19.757824452696255, + "place-river": 25.79224673096617, + "place-pktrm": 16.96742025446393, + "place-hsmnl": 17.701928167004695, + "place-symcl": 15.835451418093335, + "place-bckhl": 17.6135641199147, + "place-nuniv": 16.111965728893264, + "place-rvrwy": 17.434833494889844, + "place-mfa": 16.431356082975423, + "place-mispk": 17.283772398567365, + "place-lngmd": 16.69976620971029, + "place-fenwd": 17.064772140698324, + "place-brmnl": 16.911215818992083, + "place-balsq": 9.698272996326454, + "place-lech": 12.485668751988388, + "place-esomr": 11.623303402504376, + "place-mgngl": 10.1736887769178, + "place-gilmn": 10.853891279925238, + "place-gover": 17.251439700896764, + "place-haecl": 17.50525768263342, + "place-spmnl": 18.14672478972799, + "place-north": 17.73989083253798, + "place-bland": 17.12993881730693, + "place-chhil": 21.3759757019009, + "place-fenwy": 17.531005334471686, + "place-woodl": 26.101165490411006, + "place-longw": 17.887177517050425, + "place-waban": 25.274462979947117, + "place-bvmnl": 18.6254951943152, + "place-eliot": 24.427123921920987, + "place-brkhl": 19.158397443927463, + "place-newtn": 23.654739895883047, + "place-bcnfd": 19.95590999376143, + "place-newto": 22.84512722202339, + "place-rsmnl": 20.35506738832717, + "place-boyls": 16.6762780232194, + "place-buest": 17.346045058732006, + "place-armnl": 16.3526313566273, + "place-bucen": 17.497162596685357, + "place-lake": 21.123582155213555, + "place-amory": 17.881811648100097, + "place-sougr": 20.615997352958722, + "place-babck": 18.153452987676967, + "place-chill": 20.334749856463255, + "place-brico": 18.445141178020364, + "place-chswk": 20.159246938504136, + "place-harvd": 18.801765095591747, + "place-sthld": 19.914430627013246, + "place-grigg": 18.996275060521555, + "place-wascm": 19.634402791447947, + "place-alsgr": 19.18473003782908, + "place-wrnst": 19.341145206369802 + }, + "place-tapst": { + "place-denrd": 0.2304315273801, + "place-engav": 0.392745112294202, + "place-clmnl": 0.574920020828362, + "place-bcnwa": 0.196321969075598, + "place-fbkst": 0.37656160398274, + "place-bndhl": 0.503715093230533, + "place-sumav": 0.667402578317624, + "place-cool": 0.887305077721108, + "place-stpul": 1.114887388277459, + "place-kntst": 1.27493429496739, + "place-hwsst": 1.461327157525053, + "place-smary": 1.680481308533166, + "place-kencl": 2.329729097694464, + "place-hymnl": 2.730378232372942, + "place-mdftf": 9.320621291035355, + "place-prmnl": 15.769122153498571, + "place-coecl": 16.156725939264696, + "place-unsqu": 19.954146421771853, + "place-river": 25.988568700041768, + "place-pktrm": 17.16374222353953, + "place-hsmnl": 17.898250136080293, + "place-symcl": 16.031773387168936, + "place-bckhl": 17.809886088990297, + "place-nuniv": 16.308287697968865, + "place-rvrwy": 17.63115546396544, + "place-mfa": 16.627678052051024, + "place-mispk": 17.480094367642966, + "place-lngmd": 16.89608817878589, + "place-fenwd": 17.26109410977392, + "place-brmnl": 17.107537788067685, + "place-balsq": 9.894594965402053, + "place-lech": 12.68199072106399, + "place-esomr": 11.819625371579974, + "place-mgngl": 10.3700107459934, + "place-gilmn": 11.050213249000837, + "place-gover": 17.447761669972362, + "place-haecl": 17.70157965170902, + "place-spmnl": 18.343046758803588, + "place-north": 17.93621280161358, + "place-bland": 17.326260786382527, + "place-chhil": 21.5722976709765, + "place-fenwy": 17.727327303547284, + "place-woodl": 26.297487459486604, + "place-longw": 18.083499486126026, + "place-waban": 25.470784949022715, + "place-bvmnl": 18.821817163390797, + "place-eliot": 24.623445890996585, + "place-brkhl": 19.354719413003064, + "place-newtn": 23.85106186495865, + "place-bcnfd": 20.152231962837032, + "place-newto": 23.04144919109899, + "place-rsmnl": 20.55138935740277, + "place-boyls": 16.872599992294997, + "place-buest": 17.542367027807607, + "place-armnl": 16.548953325702897, + "place-bucen": 17.693484565760958, + "place-lake": 21.319904124289152, + "place-amory": 18.078133617175695, + "place-sougr": 20.81231932203432, + "place-babck": 18.34977495675257, + "place-chill": 20.531071825538856, + "place-brico": 18.641463147095962, + "place-chswk": 20.355568907579737, + "place-harvd": 18.998087064667345, + "place-sthld": 20.110752596088844, + "place-grigg": 19.192597029597156, + "place-wascm": 19.830724760523545, + "place-alsgr": 19.381052006904678, + "place-wrnst": 19.5374671754454 + }, + "place-denrd": { + "place-engav": 0.162313584914102, + "place-clmnl": 0.344488493448262, + "place-tapst": 0.2304315273801, + "place-bcnwa": 0.42675349645569804, + "place-fbkst": 0.60699313136284, + "place-bndhl": 0.7341466206106331, + "place-sumav": 0.897834105697724, + "place-cool": 1.117736605101208, + "place-stpul": 1.3453189156575591, + "place-kntst": 1.5053658223474902, + "place-hwsst": 1.6917586849051531, + "place-smary": 1.910912835913266, + "place-kencl": 2.5601606250745643, + "place-hymnl": 2.9608097597530425, + "place-mdftf": 9.551052818415455, + "place-prmnl": 15.99955368087867, + "place-coecl": 16.387157466644794, + "place-unsqu": 20.18457794915195, + "place-river": 26.219000227421866, + "place-pktrm": 17.394173750919627, + "place-hsmnl": 18.12868166346039, + "place-symcl": 16.262204914549034, + "place-bckhl": 18.040317616370398, + "place-nuniv": 16.538719225348963, + "place-rvrwy": 17.861586991345543, + "place-mfa": 16.858109579431122, + "place-mispk": 17.710525895023068, + "place-lngmd": 17.126519706165993, + "place-fenwd": 17.49152563715402, + "place-brmnl": 17.337969315447786, + "place-balsq": 10.125026492782153, + "place-lech": 12.912422248444088, + "place-esomr": 12.050056898960076, + "place-mgngl": 10.600442273373499, + "place-gilmn": 11.280644776380937, + "place-gover": 17.67819319735246, + "place-haecl": 17.93201117908912, + "place-spmnl": 18.573478286183686, + "place-north": 18.166644328993677, + "place-bland": 17.556692313762625, + "place-chhil": 21.802729198356598, + "place-fenwy": 17.957758830927382, + "place-woodl": 26.527918986866702, + "place-longw": 18.313931013506124, + "place-waban": 25.701216476402813, + "place-bvmnl": 19.052248690770895, + "place-eliot": 24.853877418376683, + "place-brkhl": 19.585150940383162, + "place-newtn": 24.081493392338746, + "place-bcnfd": 20.38266349021713, + "place-newto": 23.27188071847909, + "place-rsmnl": 20.781820884782867, + "place-boyls": 17.103031519675095, + "place-buest": 17.772798555187705, + "place-armnl": 16.779384853082995, + "place-bucen": 17.923916093141056, + "place-lake": 21.55033565166925, + "place-amory": 18.308565144555793, + "place-sougr": 21.042750849414418, + "place-babck": 18.580206484132667, + "place-chill": 20.761503352918954, + "place-brico": 18.87189467447606, + "place-chswk": 20.586000434959836, + "place-harvd": 19.228518592047443, + "place-sthld": 20.341184123468942, + "place-grigg": 19.423028556977254, + "place-wascm": 20.061156287903643, + "place-alsgr": 19.611483534284776, + "place-wrnst": 19.767898702825498 + }, + "place-engav": { + "place-clmnl": 0.18217490853416, + "place-denrd": 0.162313584914102, + "place-tapst": 0.392745112294202, + "place-bcnwa": 0.5890670813698, + "place-fbkst": 0.769306716276942, + "place-bndhl": 0.896460205524735, + "place-sumav": 1.0601476906118261, + "place-cool": 1.28005019001531, + "place-stpul": 1.507632500571661, + "place-kntst": 1.6676794072615921, + "place-hwsst": 1.854072269819255, + "place-smary": 2.073226420827368, + "place-kencl": 2.722474209988666, + "place-hymnl": 3.1231233446671443, + "place-mdftf": 9.713366403329555, + "place-prmnl": 16.16186726579277, + "place-coecl": 16.549471051558896, + "place-unsqu": 20.346891534066053, + "place-river": 26.381313812335968, + "place-pktrm": 17.55648733583373, + "place-hsmnl": 18.290995248374493, + "place-symcl": 16.424518499463137, + "place-bckhl": 18.202631201284497, + "place-nuniv": 16.701032810263065, + "place-rvrwy": 18.023900576259642, + "place-mfa": 17.020423164345225, + "place-mispk": 17.872839479937166, + "place-lngmd": 17.288833291080092, + "place-fenwd": 17.65383922206812, + "place-brmnl": 17.500282900361885, + "place-balsq": 10.287340077696253, + "place-lech": 13.07473583335819, + "place-esomr": 12.212370483874174, + "place-mgngl": 10.7627558582876, + "place-gilmn": 11.442958361295037, + "place-gover": 17.840506782266562, + "place-haecl": 18.094324764003222, + "place-spmnl": 18.73579187109779, + "place-north": 18.32895791390778, + "place-bland": 17.719005898676727, + "place-chhil": 21.9650427832707, + "place-fenwy": 18.120072415841484, + "place-woodl": 26.690232571780804, + "place-longw": 18.476244598420227, + "place-waban": 25.863530061316915, + "place-bvmnl": 19.214562275684997, + "place-eliot": 25.016191003290785, + "place-brkhl": 19.747464525297264, + "place-newtn": 24.24380697725285, + "place-bcnfd": 20.544977075131232, + "place-newto": 23.43419430339319, + "place-rsmnl": 20.94413446969697, + "place-boyls": 17.265345104589198, + "place-buest": 17.935112140101808, + "place-armnl": 16.941698437997097, + "place-bucen": 18.086229678055158, + "place-lake": 21.712649236583353, + "place-amory": 18.470878729469895, + "place-sougr": 21.20506443432852, + "place-babck": 18.74252006904677, + "place-chill": 20.923816937833056, + "place-brico": 19.034208259390162, + "place-chswk": 20.748314019873938, + "place-harvd": 19.390832176961545, + "place-sthld": 20.503497708383044, + "place-grigg": 19.585342141891356, + "place-wascm": 20.223469872817745, + "place-alsgr": 19.77379711919888, + "place-wrnst": 19.9302122877396 + }, + "place-clmnl": { + "place-engav": 0.18217490853416, + "place-denrd": 0.344488493448262, + "place-tapst": 0.574920020828362, + "place-bcnwa": 0.77124198990396, + "place-fbkst": 0.951481624811102, + "place-bndhl": 1.078635114058895, + "place-sumav": 1.242322599145986, + "place-cool": 1.46222509854947, + "place-stpul": 1.689807409105821, + "place-kntst": 1.849854315795752, + "place-hwsst": 2.036247178353415, + "place-smary": 2.2554013293615283, + "place-kencl": 2.9046491185228263, + "place-hymnl": 3.3052982532013044, + "place-mdftf": 9.895541311863717, + "place-prmnl": 16.344042174326933, + "place-coecl": 16.731645960093058, + "place-unsqu": 20.529066442600215, + "place-river": 26.56348872087013, + "place-pktrm": 17.738662244367895, + "place-hsmnl": 18.473170156908655, + "place-symcl": 16.606693407997298, + "place-bckhl": 18.384806109818662, + "place-nuniv": 16.883207718797223, + "place-rvrwy": 18.206075484793807, + "place-mfa": 17.202598072879386, + "place-mispk": 18.055014388471328, + "place-lngmd": 17.471008199614253, + "place-fenwd": 17.836014130602283, + "place-brmnl": 17.682457808896046, + "place-balsq": 10.469514986230415, + "place-lech": 13.256910741892352, + "place-esomr": 12.394545392408336, + "place-mgngl": 10.944930766821761, + "place-gilmn": 11.625133269829199, + "place-gover": 18.022681690800724, + "place-haecl": 18.276499672537383, + "place-spmnl": 18.91796677963195, + "place-north": 18.51113282244194, + "place-bland": 17.90118080721089, + "place-chhil": 22.14721769180486, + "place-fenwy": 18.302247324375646, + "place-woodl": 26.87240748031497, + "place-longw": 18.658419506954388, + "place-waban": 26.045704969851077, + "place-bvmnl": 19.396737184219162, + "place-eliot": 25.198365911824947, + "place-brkhl": 19.929639433831426, + "place-newtn": 24.42598188578701, + "place-bcnfd": 20.727151983665394, + "place-newto": 23.61636921192735, + "place-rsmnl": 21.12630937823113, + "place-boyls": 17.44752001312336, + "place-buest": 18.11728704863597, + "place-armnl": 17.12387334653126, + "place-bucen": 18.26840458658932, + "place-lake": 21.894824145117514, + "place-amory": 18.653053638004057, + "place-sougr": 21.38723934286268, + "place-babck": 18.924694977580927, + "place-chill": 21.105991846367218, + "place-brico": 19.216383167924324, + "place-chswk": 20.930488928408096, + "place-harvd": 19.573007085495707, + "place-sthld": 20.685672616917206, + "place-grigg": 19.767517050425518, + "place-wascm": 20.405644781351906, + "place-alsgr": 19.95597202773304, + "place-wrnst": 20.11238719627376 + }, + "place-unsqu": { + "place-lech": 1.0443113697258, + "place-spmnl": 1.5812372227441762, + "place-north": 1.9880711805555573, + "place-haecl": 2.222707964860218, + "place-gover": 2.476522336430249, + "place-river": 14.371703155447197, + "place-pktrm": 26.00887342295993, + "place-fbkst": 30.466735400262483, + "place-wrnst": 30.39663094341547, + "place-sumav": 30.1758944259276, + "place-alsgr": 30.24021577487475, + "place-bcnwa": 30.646975035169625, + "place-wascm": 30.68988852849361, + "place-cool": 29.955991926524113, + "place-grigg": 30.051760797567226, + "place-tapst": 30.843297004245223, + "place-sthld": 30.96991636405891, + "place-stpul": 29.728409615967763, + "place-harvd": 29.857250832637412, + "place-denrd": 31.073728531625324, + "place-chswk": 31.214732675549804, + "place-kntst": 29.56836270927783, + "place-brico": 29.50062691506603, + "place-engav": 31.236042116539423, + "place-chill": 31.390235593508923, + "place-hwsst": 29.381969846720168, + "place-babck": 29.208938724722636, + "place-clmnl": 31.418217025073584, + "place-sougr": 31.671483090004386, + "place-smary": 29.162815695712055, + "place-amory": 28.937297385145765, + "place-bndhl": 30.33958191101469, + "place-lake": 32.17906789225922, + "place-chhil": 19.657348096491496, + "place-mdftf": 31.03965056445361, + "place-prmnl": 27.403500813996278, + "place-coecl": 27.015889707234763, + "place-symcl": 27.66615466177525, + "place-hsmnl": 39.640383060427126, + "place-nuniv": 27.998813645187123, + "place-bckhl": 29.444194084670542, + "place-mfa": 28.292047526197024, + "place-rvrwy": 29.297952349528767, + "place-lngmd": 28.559835729962035, + "place-mispk": 29.092616492185652, + "place-brmnl": 28.824739205539665, + "place-fenwd": 28.89988733856778, + "place-balsq": 30.44295783250817, + "place-esomr": 28.517456913500176, + "place-mgngl": 29.96550986364632, + "place-gilmn": 29.285248913843173, + "place-boyls": 26.2543038250368, + "place-bland": 28.185424554352597, + "place-rsmnl": 20.68167381616361, + "place-kencl": 24.071780219766566, + "place-fenwy": 23.5107367132198, + "place-woodl": 14.940238759395141, + "place-longw": 23.13807261902987, + "place-waban": 15.748230219269475, + "place-bvmnl": 22.389613060973915, + "place-eliot": 16.609166761115098, + "place-brkhl": 21.874734017090198, + "place-newtn": 17.3678804767657, + "place-bcnfd": 21.08912052674879, + "place-newto": 18.187370543525816, + "place-armnl": 26.623662320796562, + "place-buest": 28.401530795777674, + "place-hymnl": 27.545235689200087, + "place-bucen": 28.552648333731028 + }, + "place-lech": { + "place-spmnl": 0.566788293242464, + "place-north": 0.9736222504324741, + "place-haecl": 1.208255400337032, + "place-gover": 1.4620733820736902, + "place-river": 13.306577978977778, + "place-unsqu": 1.0443113697258, + "place-mdftf": 3.361369430028634, + "place-balsq": 2.764676698083195, + "place-mgngl": 2.287228729221348, + "place-gilmn": 1.606967779418198, + "place-esomr": 0.839175779075201, + "place-prmnl": 9.80987029249185, + "place-coecl": 10.197474078257976, + "place-fbkst": 15.662352339835364, + "place-wrnst": 13.578215314438681, + "place-sumav": 15.37151136550048, + "place-alsgr": 13.42180014589796, + "place-bcnwa": 15.842591974742504, + "place-wascm": 13.871472899516824, + "place-cool": 15.151608866096996, + "place-grigg": 13.233345168590436, + "place-tapst": 16.038913943818102, + "place-sthld": 14.151500735082124, + "place-stpul": 14.924026555540646, + "place-harvd": 13.038835203660625, + "place-denrd": 16.269345471198204, + "place-chswk": 14.396317046573015, + "place-kntst": 14.763979648850714, + "place-brico": 12.682211286089242, + "place-engav": 16.431659056112306, + "place-chill": 14.571819964532136, + "place-hwsst": 14.57758678629305, + "place-babck": 12.390523095745847, + "place-clmnl": 16.613833964646467, + "place-sougr": 14.8530674610276, + "place-smary": 14.358432635284938, + "place-amory": 12.118881756168976, + "place-bndhl": 15.53519885058757, + "place-lake": 15.360652263282432, + "place-chhil": 15.61304580996978, + "place-kencl": 11.127113384708306, + "place-brmnl": 11.148285927060964, + "place-symcl": 10.072521526162214, + "place-hsmnl": 11.938998275073573, + "place-nuniv": 10.349035836962141, + "place-bckhl": 11.850634227983576, + "place-mfa": 10.668426191044302, + "place-rvrwy": 11.671903602958722, + "place-lngmd": 10.936836317779171, + "place-mispk": 11.520842506636246, + "place-fenwd": 11.301842248767201, + "place-fenwy": 11.768075442540564, + "place-woodl": 20.338235598479883, + "place-longw": 12.124247625119304, + "place-waban": 19.511533088015995, + "place-bvmnl": 12.862565302384079, + "place-eliot": 18.664194029989865, + "place-brkhl": 13.395467551996344, + "place-newtn": 17.891810003951928, + "place-bcnfd": 14.192980101830312, + "place-newto": 17.08219733009227, + "place-rsmnl": 14.592137496396049, + "place-pktrm": 11.20449036253281, + "place-bland": 11.367008925375808, + "place-boyls": 10.913348131288279, + "place-buest": 11.583115166800885, + "place-armnl": 10.589701464696176, + "place-bucen": 11.734232704754238, + "place-hymnl": 10.726820060223298 + }, + "place-spmnl": { + "place-north": 0.40683395719001, + "place-haecl": 0.641467107094568, + "place-gover": 0.895285088831226, + "place-river": 12.790465932703022, + "place-lech": 0.566788293242464, + "place-esomr": 1.375572176613576, + "place-gilmn": 2.144984299192714, + "place-mgngl": 2.825186802200151, + "place-balsq": 3.300602582791498, + "place-mdftf": 3.8745762571581963, + "place-prmnl": 10.323077119621413, + "place-coecl": 10.71068090538754, + "place-fbkst": 16.175559166964927, + "place-wrnst": 14.091422141568245, + "place-sumav": 15.884718192630043, + "place-alsgr": 13.935006973027523, + "place-bcnwa": 16.35579880187207, + "place-wascm": 14.384679726646388, + "place-cool": 15.664815693226558, + "place-grigg": 13.746551995719999, + "place-tapst": 16.552120770947667, + "place-sthld": 14.664707562211687, + "place-stpul": 15.437233382670208, + "place-harvd": 13.552042030790188, + "place-denrd": 16.78255229832777, + "place-chswk": 14.909523873702579, + "place-kntst": 15.277186475980276, + "place-brico": 13.195418113218805, + "place-engav": 16.944865883241867, + "place-chill": 15.085026791661697, + "place-hwsst": 15.090793613422614, + "place-babck": 12.90372992287541, + "place-clmnl": 17.12704079177603, + "place-sougr": 15.366274288157165, + "place-smary": 14.871639462414501, + "place-amory": 12.63208858329854, + "place-bndhl": 16.048405677717135, + "place-lake": 15.873859090411997, + "place-unsqu": 14.508101387894696, + "place-bucen": 12.247439531883801, + "place-chhil": 16.12625263709934, + "place-kencl": 11.640320211837869, + "place-brmnl": 11.661492754190526, + "place-symcl": 10.585728353291778, + "place-hsmnl": 12.452205102203134, + "place-nuniv": 10.862242664091704, + "place-bckhl": 12.36384105511314, + "place-mfa": 11.181633018173866, + "place-rvrwy": 12.185110430088285, + "place-lngmd": 11.450043144908733, + "place-mispk": 12.034049333765807, + "place-fenwd": 11.815049075896763, + "place-fenwy": 12.281282269670129, + "place-woodl": 20.85144242560945, + "place-longw": 12.637454452248868, + "place-waban": 20.02473991514556, + "place-bvmnl": 13.375772129513642, + "place-eliot": 19.17740085711943, + "place-brkhl": 13.908674379125905, + "place-newtn": 18.40501683108149, + "place-bcnfd": 14.706186928959875, + "place-newto": 17.595404157221832, + "place-rsmnl": 15.105344323525612, + "place-pktrm": 11.717697189662374, + "place-bland": 11.880215752505372, + "place-boyls": 11.426554958417842, + "place-buest": 12.096321993930449, + "place-armnl": 11.10290829182574, + "place-hymnl": 11.240026887352862 + }, + "place-north": { + "place-haecl": 0.236110367329794, + "place-gover": 0.488451131641216, + "place-river": 12.38363197489164, + "place-spmnl": 0.40683395719001, + "place-lech": 0.9736222504324741, + "place-esomr": 1.782406133803586, + "place-gilmn": 2.551818256382724, + "place-mgngl": 3.232020759390161, + "place-balsq": 3.707436539981508, + "place-mdftf": 4.281410214348206, + "place-ogmnl": 5.273072677438761, + "place-mlmnl": 4.538442707090593, + "place-welln": 2.785435812977213, + "place-astao": 2.15216283777738, + "place-sull": 1.574612100955421, + "place-ccmnl": 0.706812568350831, + "place-state": 0.522600064374056, + "place-dwnxg": 0.8043792501789551, + "place-chncl": 1.050114786521713, + "place-tumnl": 1.266545818668973, + "place-bbsta": 1.938517476686153, + "place-masta": 2.561355296319494, + "place-rugg": 2.977968912799252, + "place-rcmnl": 3.4964736345989422, + "place-jaksn": 4.046721170862165, + "place-sbmnl": 4.528858684656605, + "place-grnst": 5.067369553060127, + "place-forhl": 5.756104937788314, + "place-pktrm": 0.931605422457846, + "place-fbkst": 5.389467399760399, + "place-wrnst": 5.3193629429133855, + "place-sumav": 5.098626425425515, + "place-alsgr": 5.162947774372665, + "place-bcnwa": 5.56970703466754, + "place-wascm": 5.612620527991529, + "place-cool": 4.8787239260220305, + "place-grigg": 4.974492797065141, + "place-tapst": 5.766029003743139, + "place-sthld": 5.8926483635568285, + "place-stpul": 4.65114161546568, + "place-harvd": 4.77998283213533, + "place-denrd": 5.9964605311232395, + "place-chswk": 6.1374646750477195, + "place-kntst": 4.491094708775749, + "place-brico": 4.423358914563947, + "place-engav": 6.158774116037341, + "place-chill": 6.312967593006839, + "place-hwsst": 4.3047018462180855, + "place-babck": 4.131670724220552, + "place-clmnl": 6.3409490245715014, + "place-sougr": 6.594215089502304, + "place-smary": 4.085547695209973, + "place-amory": 3.8600293846436813, + "place-bndhl": 5.2623139105126056, + "place-lake": 7.101799891757137, + "place-unsqu": 3.7220096206901676, + "place-bucen": 3.4753803332289426, + "place-chhil": 7.315661052577945, + "place-kencl": 2.868261013183011, + "place-brmnl": 3.74747120503758, + "place-coecl": 1.938621706732681, + "place-prmnl": 2.326232813494194, + "place-hsmnl": 14.563115059925039, + "place-symcl": 2.588886661273164, + "place-bckhl": 4.3669260841684565, + "place-nuniv": 2.9215456446850387, + "place-rvrwy": 4.220684349026683, + "place-mfa": 3.214779525694941, + "place-mispk": 4.015348491683568, + "place-lngmd": 3.4825677294599533, + "place-fenwd": 3.822619338065696, + "place-boyls": 1.177035824534717, + "place-bland": 3.108156553850513, + "place-rsmnl": 6.294752739004215, + "place-fenwy": 3.470690685148731, + "place-woodl": 12.040850841088051, + "place-longw": 3.8268628677274714, + "place-waban": 11.21414833062416, + "place-bvmnl": 4.565180544992245, + "place-eliot": 10.366809272598031, + "place-brkhl": 5.098082794604509, + "place-newtn": 9.594425246560094, + "place-bcnfd": 5.895595344438478, + "place-newto": 8.784812572700435, + "place-armnl": 1.54639432029448, + "place-buest": 3.324262795275591, + "place-hymnl": 2.4679676886980033 + }, + "place-haecl": { + "place-gover": 0.253817981736658, + "place-river": 12.14899519058698, + "place-north": 0.236110367329794, + "place-spmnl": 0.641467107094568, + "place-lech": 1.208255400337032, + "place-esomr": 2.017039283708144, + "place-gilmn": 2.786451406287282, + "place-mgngl": 3.466653909294719, + "place-balsq": 3.942069689886066, + "place-mdftf": 4.516043364252764, + "place-ogmnl": 5.509183044768555, + "place-mlmnl": 4.774553074420387, + "place-welln": 3.021546180307007, + "place-astao": 2.388273205107174, + "place-sull": 1.810722468285215, + "place-ccmnl": 0.942922935680625, + "place-state": 0.286489697044262, + "place-dwnxg": 0.5682688828491611, + "place-chncl": 0.8140044191919191, + "place-tumnl": 1.0304354513391791, + "place-bbsta": 1.702407109356359, + "place-masta": 2.3252449289897, + "place-rugg": 2.7418585454694577, + "place-rcmnl": 3.260363267269148, + "place-jaksn": 3.810610803532371, + "place-sbmnl": 4.292748317326811, + "place-grnst": 4.831259185730333, + "place-forhl": 5.51999457045852, + "place-pktrm": 0.6954950551280521, + "place-fbkst": 5.1533570324306055, + "place-wrnst": 5.083252575583591, + "place-sumav": 4.862516058095721, + "place-alsgr": 4.926837407042871, + "place-bcnwa": 5.333596667337746, + "place-wascm": 5.376510160661736, + "place-cool": 4.642613558692236, + "place-grigg": 4.738382429735347, + "place-tapst": 5.5299186364133455, + "place-sthld": 5.656537996227035, + "place-stpul": 4.415031248135886, + "place-harvd": 4.543872464805537, + "place-denrd": 5.760350163793445, + "place-chswk": 5.901354307717925, + "place-kntst": 4.2549843414459545, + "place-brico": 4.187248547234153, + "place-engav": 5.9226637487075475, + "place-chill": 6.0768572256770454, + "place-hwsst": 4.068591478888292, + "place-babck": 3.895560356890758, + "place-clmnl": 6.104838657241707, + "place-sougr": 6.358104722172511, + "place-smary": 3.849437327880179, + "place-amory": 3.6239190173138875, + "place-bndhl": 5.026203543182811, + "place-lake": 6.865689524427344, + "place-unsqu": 3.485899253360374, + "place-bucen": 3.239269965899149, + "place-chhil": 7.079550685248151, + "place-kencl": 2.6321506458532173, + "place-brmnl": 3.511360837707786, + "place-coecl": 1.702511339402887, + "place-prmnl": 2.0901224461644, + "place-hsmnl": 14.327004692595246, + "place-symcl": 2.35277629394337, + "place-bckhl": 4.130815716838663, + "place-nuniv": 2.685435277355245, + "place-rvrwy": 3.9845739816968897, + "place-mfa": 2.9786691583651472, + "place-mispk": 3.779238124353774, + "place-lngmd": 3.246457362130159, + "place-fenwd": 3.5865089707359017, + "place-boyls": 0.940925457204923, + "place-bland": 2.8720461865207194, + "place-rsmnl": 6.058642371674422, + "place-fenwy": 3.234580317818937, + "place-woodl": 11.804740473758258, + "place-longw": 3.5907525003976772, + "place-waban": 10.978037963294367, + "place-bvmnl": 4.329070177662452, + "place-eliot": 10.130698905268238, + "place-brkhl": 4.861972427274715, + "place-newtn": 9.358314879230301, + "place-bcnfd": 5.659484977108685, + "place-newto": 8.548702205370642, + "place-armnl": 1.3102839529646861, + "place-buest": 3.0881524279457975, + "place-hymnl": 2.231857321368209 + }, + "place-fenwy": { + "place-longw": 0.372664094189931, + "place-bvmnl": 1.121123652245885, + "place-brkhl": 1.636002696129604, + "place-bcnfd": 2.42161618647101, + "place-rsmnl": 2.829062897056192, + "place-chhil": 3.8533886167283016, + "place-newto": 5.323366169693982, + "place-newtn": 6.142856236454103, + "place-eliot": 6.901569952104703, + "place-waban": 7.762506493950324, + "place-woodl": 8.570497953824658, + "place-river": 9.139033557772603, + "place-kencl": 0.561043506546766, + "place-mdftf": 7.551935699887656, + "place-prmnl": 14.00043656235087, + "place-coecl": 14.388040348116997, + "place-fbkst": 19.852918609694385, + "place-wrnst": 17.768781584297702, + "place-sumav": 19.5620776353595, + "place-alsgr": 17.61236641575698, + "place-bcnwa": 20.033158244601527, + "place-wascm": 18.062039169375847, + "place-cool": 19.342175135956015, + "place-grigg": 17.423911438449455, + "place-tapst": 20.229480213677125, + "place-sthld": 18.342067004941146, + "place-stpul": 19.114592825399665, + "place-harvd": 17.229401473519644, + "place-denrd": 20.459911741057226, + "place-chswk": 18.586883316432036, + "place-kntst": 18.954545918709734, + "place-brico": 16.87277755594826, + "place-engav": 20.62222532597133, + "place-chill": 18.762386234391155, + "place-hwsst": 18.768153056152073, + "place-babck": 16.581089365604868, + "place-clmnl": 20.804400234505486, + "place-sougr": 19.043633730886622, + "place-smary": 18.54899890514396, + "place-amory": 16.309448026027997, + "place-bndhl": 19.725765120446592, + "place-lake": 19.551218533141455, + "place-unsqu": 18.18546083062415, + "place-bucen": 15.924798974613259, + "place-brmnl": 15.338852196919985, + "place-symcl": 14.263087796021235, + "place-hsmnl": 16.12956454493259, + "place-nuniv": 14.539602106821164, + "place-bckhl": 16.0412004978426, + "place-mfa": 14.858992460903323, + "place-rvrwy": 15.862469872817744, + "place-lngmd": 15.127402587638192, + "place-mispk": 15.711408776495267, + "place-fenwd": 15.492408518626222, + "place-balsq": 8.125909374254354, + "place-lech": 10.913305129916289, + "place-hymnl": 14.91738633008232, + "place-mgngl": 8.6013251548457, + "place-esomr": 10.050939780432277, + "place-gilmn": 9.281527657853138, + "place-spmnl": 16.57436116765589, + "place-armnl": 14.780267734555197, + "place-north": 16.16752721046588, + "place-buest": 15.773681436659906, + "place-haecl": 15.932894060561322, + "place-bland": 15.55757519523483, + "place-gover": 15.679076078824664, + "place-boyls": 15.1039144011473, + "place-pktrm": 15.395056632391832 + }, + "place-longw": { + "place-bvmnl": 0.748459558055954, + "place-brkhl": 1.2633386019396728, + "place-bcnfd": 2.048952092281079, + "place-rsmnl": 2.456398802866261, + "place-chhil": 3.4807245225383707, + "place-newto": 4.950702075504051, + "place-newtn": 5.770192142264172, + "place-eliot": 6.528905857914772, + "place-waban": 7.3898423997603935, + "place-woodl": 8.197833859634727, + "place-river": 8.766369463582672, + "place-fenwy": 0.372664094189931, + "place-kencl": 0.9337076007366971, + "place-mdftf": 7.9245997940775865, + "place-prmnl": 14.373100656540803, + "place-coecl": 14.76070444230693, + "place-fbkst": 20.225582703884317, + "place-wrnst": 18.141445678487635, + "place-sumav": 19.934741729549433, + "place-alsgr": 17.985030509946913, + "place-bcnwa": 20.40582233879146, + "place-wascm": 18.43470326356578, + "place-cool": 19.714839230145948, + "place-grigg": 17.796575532639388, + "place-tapst": 20.602144307867057, + "place-sthld": 18.71473109913108, + "place-stpul": 19.487256919589598, + "place-harvd": 17.60206556770958, + "place-denrd": 20.83257583524716, + "place-chswk": 18.95954741062197, + "place-kntst": 19.327210012899666, + "place-brico": 17.245441650138197, + "place-engav": 20.994889420161257, + "place-chill": 19.135050328581087, + "place-hwsst": 19.140817150342002, + "place-babck": 16.9537534597948, + "place-clmnl": 21.17706432869542, + "place-sougr": 19.416297825076555, + "place-smary": 18.92166299933389, + "place-amory": 16.68211212021793, + "place-bndhl": 20.098429214636525, + "place-lake": 19.923882627331388, + "place-unsqu": 18.558124924814088, + "place-bucen": 16.29746306880319, + "place-brmnl": 15.711516291109916, + "place-symcl": 14.635751890211168, + "place-hsmnl": 16.502228639122524, + "place-nuniv": 14.912266201011095, + "place-bckhl": 16.41386459203253, + "place-mfa": 15.231656555093256, + "place-rvrwy": 16.235133967007677, + "place-lngmd": 15.500066681828123, + "place-mispk": 16.084072870685198, + "place-fenwd": 15.865072612816153, + "place-balsq": 8.498573468444285, + "place-lech": 11.285969224106221, + "place-hymnl": 15.290050424272252, + "place-mgngl": 8.97398924903563, + "place-esomr": 10.423603874622206, + "place-gilmn": 9.654191752043069, + "place-spmnl": 16.947025261845823, + "place-armnl": 15.15293182874513, + "place-north": 16.540191304655814, + "place-buest": 16.14634553084984, + "place-haecl": 16.305558154751253, + "place-bland": 15.930239289424762, + "place-gover": 16.051740173014597, + "place-boyls": 15.476578495337233, + "place-pktrm": 15.767720726581764 + }, + "place-butlr": { + "place-cedgr": 0.582811809656605, + "place-asmnl": 0.907806877212081, + "place-miltt": 0.296833968374692, + "place-cenav": 0.609304169897797, + "place-valrd": 1.0353375903473712, + "place-capst": 1.3546190696333409, + "place-matt": 1.6010270656863907 + }, + "place-bvmnl": { + "place-brkhl": 0.514879043883719, + "place-bcnfd": 1.300492534225125, + "place-rsmnl": 1.707939244810307, + "place-chhil": 2.732264964482417, + "place-newto": 4.202242517448097, + "place-newtn": 5.021732584208218, + "place-eliot": 5.780446299858818, + "place-waban": 6.64138284170444, + "place-woodl": 7.449374301578773, + "place-river": 8.017909905526718, + "place-longw": 0.748459558055954, + "place-fenwy": 1.121123652245885, + "place-kencl": 1.682167158792651, + "place-mdftf": 8.67305935213354, + "place-prmnl": 15.121560214596755, + "place-coecl": 15.509164000362881, + "place-fbkst": 20.97404226194027, + "place-wrnst": 18.889905236543587, + "place-sumav": 20.683201287605385, + "place-alsgr": 18.733490068002865, + "place-bcnwa": 21.15428189684741, + "place-wascm": 19.183162821621732, + "place-cool": 20.4632987882019, + "place-grigg": 18.54503509069534, + "place-tapst": 21.35060386592301, + "place-sthld": 19.46319065718703, + "place-stpul": 20.23571647764555, + "place-harvd": 18.35052512576553, + "place-denrd": 21.58103539330311, + "place-chswk": 19.70800696867792, + "place-kntst": 20.07566957095562, + "place-brico": 17.993901208194146, + "place-engav": 21.743348978217213, + "place-chill": 19.88350988663704, + "place-hwsst": 19.889276708397958, + "place-babck": 17.702213017850752, + "place-clmnl": 21.92552388675137, + "place-sougr": 20.164757383132507, + "place-smary": 19.670122557389845, + "place-amory": 17.430571678273882, + "place-bndhl": 20.846888772692477, + "place-lake": 20.67234218538734, + "place-unsqu": 19.306584482870036, + "place-bucen": 17.045922626859145, + "place-brmnl": 16.459975849165872, + "place-symcl": 15.38421144826712, + "place-hsmnl": 17.250688197178476, + "place-nuniv": 15.660725759067049, + "place-bckhl": 17.162324150088484, + "place-mfa": 15.980116113149208, + "place-rvrwy": 16.98359352506363, + "place-lngmd": 16.24852623988408, + "place-mispk": 16.832532428741153, + "place-fenwd": 16.613532170872105, + "place-balsq": 9.247033026500239, + "place-lech": 12.034428782162173, + "place-hymnl": 16.038509982328204, + "place-mgngl": 9.722448807091585, + "place-esomr": 11.172063432678161, + "place-gilmn": 10.402651310099023, + "place-spmnl": 17.695484819901775, + "place-armnl": 15.901391386801082, + "place-north": 17.288650862711766, + "place-buest": 16.89480508890579, + "place-haecl": 17.054017712807205, + "place-bland": 16.678698847480714, + "place-gover": 16.80019973107055, + "place-boyls": 16.225038053393185, + "place-pktrm": 16.516180284637716 + }, + "place-brkhl": { + "place-bcnfd": 0.785613490341406, + "place-rsmnl": 1.193060200926588, + "place-chhil": 2.217385920598698, + "place-newto": 3.6873634735643783, + "place-newtn": 4.5068535403244985, + "place-eliot": 5.2655672559751, + "place-waban": 6.126503797820721, + "place-woodl": 6.934495257695055, + "place-river": 7.5030308616429995, + "place-bvmnl": 0.514879043883719, + "place-longw": 1.2633386019396728, + "place-fenwy": 1.636002696129604, + "place-kencl": 2.19704620267637, + "place-mdftf": 9.187938396017259, + "place-prmnl": 15.636439258480475, + "place-coecl": 16.0240430442466, + "place-fbkst": 21.488921305823986, + "place-wrnst": 19.404784280427304, + "place-sumav": 21.198080331489102, + "place-alsgr": 19.248369111886582, + "place-bcnwa": 21.66916094073113, + "place-wascm": 19.69804186550545, + "place-cool": 20.97817783208562, + "place-grigg": 19.05991413457906, + "place-tapst": 21.86548290980673, + "place-sthld": 19.978069701070748, + "place-stpul": 20.75059552152927, + "place-harvd": 18.86540416964925, + "place-denrd": 22.095914437186828, + "place-chswk": 20.222886012561638, + "place-kntst": 20.59054861483934, + "place-brico": 18.508780252077866, + "place-engav": 22.25822802210093, + "place-chill": 20.39838893052076, + "place-hwsst": 20.404155752281675, + "place-babck": 18.21709206173447, + "place-clmnl": 22.44040293063509, + "place-sougr": 20.679636427016224, + "place-smary": 20.185001601273562, + "place-amory": 17.9454507221576, + "place-bndhl": 21.361767816576194, + "place-lake": 21.187221229271056, + "place-unsqu": 19.821463526753757, + "place-bucen": 17.560801670742862, + "place-brmnl": 16.97485489304959, + "place-symcl": 15.89909049215084, + "place-hsmnl": 17.765567241062197, + "place-nuniv": 16.175604802950765, + "place-bckhl": 17.677203193972204, + "place-mfa": 16.49499515703293, + "place-rvrwy": 17.49847256894735, + "place-lngmd": 16.763405283767796, + "place-mispk": 17.34741147262487, + "place-fenwd": 17.128411214755825, + "place-balsq": 9.761912070383957, + "place-lech": 12.549307826045894, + "place-hymnl": 16.55338902621192, + "place-mgngl": 10.237327850975303, + "place-esomr": 11.686942476561878, + "place-gilmn": 10.917530353982741, + "place-spmnl": 18.210363863785492, + "place-armnl": 16.4162704306848, + "place-north": 17.803529906595482, + "place-buest": 17.40968413278951, + "place-haecl": 17.568896756690926, + "place-bland": 17.19357789136443, + "place-gover": 17.315078774954266, + "place-boyls": 16.7399170972769, + "place-pktrm": 17.031059328521437 + }, + "place-bcnfd": { + "place-rsmnl": 0.407446710585182, + "place-chhil": 1.431772430257292, + "place-newto": 2.901749983222972, + "place-newtn": 3.721240049983092, + "place-eliot": 4.479953765633693, + "place-waban": 5.340890307479315, + "place-woodl": 6.148881767353648, + "place-river": 6.717417371301593, + "place-brkhl": 0.785613490341406, + "place-bvmnl": 1.300492534225125, + "place-longw": 2.048952092281079, + "place-fenwy": 2.42161618647101, + "place-kencl": 2.982659693017776, + "place-mdftf": 9.973551886358665, + "place-prmnl": 16.42205274882188, + "place-coecl": 16.809656534588004, + "place-fbkst": 22.27453479616539, + "place-wrnst": 20.19039777076871, + "place-sumav": 21.983693821830506, + "place-alsgr": 20.033982602227987, + "place-bcnwa": 22.454774431072533, + "place-wascm": 20.483655355846853, + "place-cool": 21.763791322427025, + "place-grigg": 19.845527624920464, + "place-tapst": 22.651096400148134, + "place-sthld": 20.763683191412152, + "place-stpul": 21.536209011870675, + "place-harvd": 19.651017659990654, + "place-denrd": 22.881527927528232, + "place-chswk": 21.008499502903042, + "place-kntst": 21.376162105180743, + "place-brico": 19.29439374241927, + "place-engav": 23.043841512442334, + "place-chill": 21.184002420862164, + "place-hwsst": 21.18976924262308, + "place-babck": 19.002705552075874, + "place-clmnl": 23.226016420976496, + "place-sougr": 21.465249917357628, + "place-smary": 20.970615091614967, + "place-amory": 18.731064212499003, + "place-bndhl": 22.147381306917598, + "place-lake": 21.97283471961246, + "place-unsqu": 20.60707701709516, + "place-bucen": 18.346415161084266, + "place-brmnl": 17.760468383390993, + "place-symcl": 16.684703982492245, + "place-hsmnl": 18.551180731403605, + "place-nuniv": 16.961218293292173, + "place-bckhl": 18.46281668431361, + "place-mfa": 17.280608647374333, + "place-rvrwy": 18.284086059288754, + "place-lngmd": 17.5490187741092, + "place-mispk": 18.133024962966275, + "place-fenwd": 17.914024705097233, + "place-balsq": 10.547525560725363, + "place-lech": 13.334921316387298, + "place-hymnl": 17.339002516553325, + "place-mgngl": 11.02294134131671, + "place-esomr": 12.472555966903286, + "place-gilmn": 11.703143844324147, + "place-spmnl": 18.995977354126897, + "place-armnl": 17.201883921026205, + "place-north": 18.589143396936887, + "place-buest": 18.195297623130916, + "place-haecl": 18.35451024703233, + "place-bland": 17.979191381705835, + "place-gover": 18.10069226529567, + "place-boyls": 17.525530587618306, + "place-pktrm": 17.81667281886284 + }, + "place-rsmnl": { + "place-chhil": 1.02432571967211, + "place-newto": 2.49430327263779, + "place-newtn": 3.31379333939791, + "place-eliot": 4.072507055048511, + "place-waban": 4.933443596894133, + "place-woodl": 5.741435056768466, + "place-river": 6.309970660716411, + "place-bcnfd": 0.407446710585182, + "place-brkhl": 1.193060200926588, + "place-bvmnl": 1.707939244810307, + "place-longw": 2.456398802866261, + "place-fenwy": 2.829062897056192, + "place-kencl": 3.390106403602958, + "place-mdftf": 10.380998596943847, + "place-prmnl": 16.829499459407064, + "place-coecl": 17.21710324517319, + "place-fbkst": 22.681981506750574, + "place-wrnst": 20.597844481353892, + "place-sumav": 22.39114053241569, + "place-alsgr": 20.44142931281317, + "place-bcnwa": 22.862221141657717, + "place-wascm": 20.891102066432037, + "place-cool": 22.17123803301221, + "place-grigg": 20.252974335505648, + "place-tapst": 23.058543110733318, + "place-sthld": 21.171129901997336, + "place-stpul": 21.94365572245586, + "place-harvd": 20.058464370575837, + "place-denrd": 23.288974638113416, + "place-chswk": 21.415946213488226, + "place-kntst": 21.783608815765927, + "place-brico": 19.701840453004454, + "place-engav": 23.451288223027518, + "place-chill": 21.591449131447348, + "place-hwsst": 21.597215953208263, + "place-babck": 19.410152262661057, + "place-clmnl": 23.63346313156168, + "place-sougr": 21.872696627942812, + "place-smary": 21.37806180220015, + "place-amory": 19.138510923084187, + "place-bndhl": 22.554828017502782, + "place-lake": 22.380281430197645, + "place-unsqu": 21.014523727680345, + "place-bucen": 18.75386187166945, + "place-brmnl": 18.167915093976177, + "place-symcl": 17.09215069307743, + "place-hsmnl": 18.958627441988785, + "place-nuniv": 17.368665003877354, + "place-bckhl": 18.870263394898792, + "place-mfa": 17.688055357959517, + "place-rvrwy": 18.691532769873938, + "place-lngmd": 17.956465484694384, + "place-mispk": 18.54047167355146, + "place-fenwd": 18.321471415682414, + "place-balsq": 10.954972271310545, + "place-lech": 13.742368026972482, + "place-hymnl": 17.74644922713851, + "place-mgngl": 11.430388051901891, + "place-esomr": 12.880002677488466, + "place-gilmn": 12.11059055490933, + "place-spmnl": 19.40342406471208, + "place-armnl": 17.60933063161139, + "place-north": 18.99659010752207, + "place-buest": 18.6027443337161, + "place-haecl": 18.761956957617514, + "place-bland": 18.38663809229102, + "place-gover": 18.508138975880854, + "place-boyls": 17.93297729820349, + "place-pktrm": 18.224119529448025 + }, + "place-chhil": { + "place-newto": 1.46997755296568, + "place-newtn": 2.2894676197258, + "place-eliot": 3.048181335376401, + "place-waban": 3.909117877222023, + "place-woodl": 4.717109337096357, + "place-river": 5.285644941044302, + "place-rsmnl": 1.02432571967211, + "place-bcnfd": 1.431772430257292, + "place-brkhl": 2.217385920598698, + "place-bvmnl": 2.732264964482417, + "place-longw": 3.4807245225383707, + "place-fenwy": 3.8533886167283016, + "place-kencl": 4.414432123275068, + "place-mdftf": 11.405324316615957, + "place-prmnl": 17.853825179079173, + "place-coecl": 18.241428964845298, + "place-fbkst": 23.706307226422688, + "place-wrnst": 21.622170201026, + "place-sumav": 23.415466252087803, + "place-alsgr": 21.46575503248528, + "place-bcnwa": 23.886546861329826, + "place-wascm": 21.915427786104146, + "place-cool": 23.19556375268432, + "place-grigg": 21.277300055177758, + "place-tapst": 24.082868830405424, + "place-sthld": 22.195455621669446, + "place-stpul": 22.967981442127968, + "place-harvd": 21.082790090247947, + "place-denrd": 24.313300357785526, + "place-chswk": 22.44027193316034, + "place-kntst": 22.807934535438037, + "place-brico": 20.726166172676564, + "place-engav": 24.475613942699628, + "place-chill": 22.615774851119458, + "place-hwsst": 22.621541672880372, + "place-babck": 20.43447798233317, + "place-clmnl": 24.65778885123379, + "place-sougr": 22.89702234761492, + "place-smary": 22.40238752187226, + "place-amory": 20.162836642756297, + "place-bndhl": 23.57915373717489, + "place-lake": 23.404607149869754, + "place-unsqu": 22.038849447352455, + "place-bucen": 19.77818759134156, + "place-brmnl": 19.192240813648286, + "place-symcl": 18.116476412749538, + "place-hsmnl": 19.982953161660895, + "place-nuniv": 18.392990723549467, + "place-bckhl": 19.8945891145709, + "place-mfa": 18.712381077631626, + "place-rvrwy": 19.715858489546044, + "place-lngmd": 18.980791204366493, + "place-mispk": 19.564797393223568, + "place-fenwd": 19.345797135354523, + "place-balsq": 11.979297990982655, + "place-lech": 14.766693746644592, + "place-hymnl": 18.77077494681062, + "place-mgngl": 12.454713771574001, + "place-esomr": 13.904328397160576, + "place-gilmn": 13.134916274581439, + "place-spmnl": 20.42774978438419, + "place-armnl": 18.6336563512835, + "place-north": 20.02091582719418, + "place-buest": 19.62707005338821, + "place-haecl": 19.786282677289623, + "place-bland": 19.41096381196313, + "place-gover": 19.532464695552964, + "place-boyls": 18.9573030178756, + "place-pktrm": 19.24844524912013 + }, + "place-newto": { + "place-newtn": 0.81949006676012, + "place-eliot": 1.578203782410721, + "place-waban": 2.439140324256343, + "place-woodl": 3.2471317841306773, + "place-river": 3.815667388078621, + "place-chhil": 1.46997755296568, + "place-rsmnl": 2.49430327263779, + "place-bcnfd": 2.901749983222972, + "place-brkhl": 3.6873634735643783, + "place-bvmnl": 4.202242517448097, + "place-longw": 4.950702075504051, + "place-fenwy": 5.323366169693982, + "place-kencl": 5.884409676240748, + "place-mdftf": 12.875301869581637, + "place-prmnl": 19.323802732044854, + "place-coecl": 19.71140651781098, + "place-fbkst": 25.176284779388368, + "place-wrnst": 23.092147753991682, + "place-sumav": 24.885443805053484, + "place-alsgr": 22.93573258545096, + "place-bcnwa": 25.356524414295507, + "place-wascm": 23.385405339069827, + "place-cool": 24.66554130565, + "place-grigg": 22.74727760814344, + "place-tapst": 25.552846383371104, + "place-sthld": 23.665433174635126, + "place-stpul": 24.43795899509365, + "place-harvd": 22.552767643213627, + "place-denrd": 25.783277910751206, + "place-chswk": 23.91024948612602, + "place-kntst": 24.277912088403717, + "place-brico": 22.196143725642244, + "place-engav": 25.945591495665308, + "place-chill": 24.085752404085138, + "place-hwsst": 24.091519225846053, + "place-babck": 21.90445553529885, + "place-clmnl": 26.12776640419947, + "place-sougr": 24.366999900580602, + "place-smary": 23.87236507483794, + "place-amory": 21.632814195721977, + "place-bndhl": 25.049131290140572, + "place-lake": 24.874584702835435, + "place-unsqu": 23.508827000318135, + "place-bucen": 21.24816514430724, + "place-brmnl": 20.662218366613967, + "place-symcl": 19.58645396571522, + "place-hsmnl": 21.452930714626575, + "place-nuniv": 19.862968276515147, + "place-bckhl": 21.36456666753658, + "place-mfa": 20.182358630597307, + "place-rvrwy": 21.185836042511724, + "place-lngmd": 20.450768757332174, + "place-mispk": 21.03477494618925, + "place-fenwd": 20.815774688320204, + "place-balsq": 13.449275543948335, + "place-lech": 16.236671299610272, + "place-hymnl": 20.2407524997763, + "place-mgngl": 13.924691324539682, + "place-esomr": 15.374305950126256, + "place-gilmn": 14.60489382754712, + "place-spmnl": 21.89772733734987, + "place-armnl": 20.10363390424918, + "place-north": 21.49089338015986, + "place-buest": 21.09704760635389, + "place-haecl": 21.256260230255304, + "place-bland": 20.88094136492881, + "place-gover": 21.002442248518644, + "place-boyls": 20.42728057084128, + "place-pktrm": 20.71842280208581 + }, + "place-newtn": { + "place-eliot": 0.758713715650601, + "place-waban": 1.619650257496223, + "place-woodl": 2.427641717370557, + "place-river": 2.996177321318501, + "place-newto": 0.81949006676012, + "place-chhil": 2.2894676197258, + "place-rsmnl": 3.31379333939791, + "place-bcnfd": 3.721240049983092, + "place-brkhl": 4.5068535403244985, + "place-bvmnl": 5.021732584208218, + "place-longw": 5.770192142264172, + "place-fenwy": 6.142856236454103, + "place-kencl": 6.703899743000869, + "place-mdftf": 13.694791936341758, + "place-prmnl": 20.143292798804975, + "place-coecl": 20.5308965845711, + "place-fbkst": 25.995774846148485, + "place-wrnst": 23.911637820751803, + "place-sumav": 25.7049338718136, + "place-alsgr": 23.75522265221108, + "place-bcnwa": 26.176014481055628, + "place-wascm": 24.204895405829948, + "place-cool": 25.48503137241012, + "place-grigg": 23.56676767490356, + "place-tapst": 26.37233645013123, + "place-sthld": 24.484923241395247, + "place-stpul": 25.25744906185377, + "place-harvd": 23.37225770997375, + "place-denrd": 26.602767977511327, + "place-chswk": 24.729739552886137, + "place-kntst": 25.097402155163838, + "place-brico": 23.015633792402365, + "place-engav": 26.76508156242543, + "place-chill": 24.90524247084526, + "place-hwsst": 24.911009292606174, + "place-babck": 22.72394560205897, + "place-clmnl": 26.94725647095959, + "place-sougr": 25.186489967340723, + "place-smary": 24.69185514159806, + "place-amory": 22.452304262482098, + "place-bndhl": 25.868621356900693, + "place-lake": 25.694074769595556, + "place-unsqu": 24.328317067078256, + "place-bucen": 22.06765521106736, + "place-brmnl": 21.481708433374088, + "place-symcl": 20.40594403247534, + "place-hsmnl": 22.272420781386696, + "place-nuniv": 20.682458343275265, + "place-bckhl": 22.184056734296703, + "place-mfa": 21.001848697357428, + "place-rvrwy": 22.00532610927185, + "place-lngmd": 21.270258824092295, + "place-mispk": 21.85426501294937, + "place-fenwd": 21.635264755080325, + "place-balsq": 14.268765610708456, + "place-lech": 17.056161366370393, + "place-hymnl": 21.06024256653642, + "place-mgngl": 14.744181391299803, + "place-esomr": 16.193796016886377, + "place-gilmn": 15.42438389430724, + "place-spmnl": 22.71721740410999, + "place-armnl": 20.9231239710093, + "place-north": 22.31038344691998, + "place-buest": 21.91653767311401, + "place-haecl": 22.075750297015425, + "place-bland": 21.70043143168893, + "place-gover": 21.821932315278765, + "place-boyls": 21.2467706376014, + "place-pktrm": 21.537912868845936 + }, + "place-eliot": { + "place-waban": 0.860936541845622, + "place-woodl": 1.668928001719956, + "place-river": 2.2374636056679, + "place-newtn": 0.758713715650601, + "place-newto": 1.578203782410721, + "place-chhil": 3.048181335376401, + "place-rsmnl": 4.072507055048511, + "place-bcnfd": 4.479953765633693, + "place-brkhl": 5.2655672559751, + "place-bvmnl": 5.780446299858818, + "place-longw": 6.528905857914772, + "place-fenwy": 6.901569952104703, + "place-kencl": 7.462613458651469, + "place-mdftf": 14.453505651992359, + "place-prmnl": 20.902006514455575, + "place-coecl": 21.2896103002217, + "place-fbkst": 26.754488561799086, + "place-wrnst": 24.670351536402404, + "place-sumav": 26.4636475874642, + "place-alsgr": 24.51393636786168, + "place-bcnwa": 26.934728196706228, + "place-wascm": 24.96360912148055, + "place-cool": 26.24374508806072, + "place-grigg": 24.32548139055416, + "place-tapst": 27.13105016578183, + "place-sthld": 25.243636957045847, + "place-stpul": 26.01616277750437, + "place-harvd": 24.13097142562435, + "place-denrd": 27.361481693161927, + "place-chswk": 25.488453268536738, + "place-kntst": 25.85611587081444, + "place-brico": 23.774347508052966, + "place-engav": 27.52379527807603, + "place-chill": 25.66395618649586, + "place-hwsst": 25.669723008256774, + "place-babck": 23.48265931770957, + "place-clmnl": 27.70597018661019, + "place-sougr": 25.945203682991323, + "place-smary": 25.450568857248662, + "place-amory": 23.2110179781327, + "place-bndhl": 26.627335072551293, + "place-lake": 26.452788485246156, + "place-unsqu": 25.087030782728856, + "place-bucen": 22.82636892671796, + "place-brmnl": 22.24042214902469, + "place-symcl": 21.16465774812594, + "place-hsmnl": 23.031134497037296, + "place-nuniv": 21.441172058925865, + "place-bckhl": 22.942770449947304, + "place-mfa": 21.760562413008028, + "place-rvrwy": 22.76403982492245, + "place-lngmd": 22.028972539742895, + "place-mispk": 22.61297872859997, + "place-fenwd": 22.393978470730925, + "place-balsq": 15.027479326359057, + "place-lech": 17.814875082020993, + "place-hymnl": 21.81895628218702, + "place-mgngl": 15.502895106950403, + "place-esomr": 16.952509732536978, + "place-gilmn": 16.18309760995784, + "place-spmnl": 23.47593111976059, + "place-armnl": 21.6818376866599, + "place-north": 23.069097162570582, + "place-buest": 22.67525138876461, + "place-haecl": 22.834464012666025, + "place-bland": 22.45914514733953, + "place-gover": 22.580646030929366, + "place-boyls": 22.005484353252, + "place-pktrm": 22.296626584496536 + }, + "place-waban": { + "place-woodl": 0.807991459874334, + "place-river": 1.376527063822278, + "place-eliot": 0.860936541845622, + "place-newtn": 1.619650257496223, + "place-newto": 2.439140324256343, + "place-chhil": 3.909117877222023, + "place-rsmnl": 4.933443596894133, + "place-bcnfd": 5.340890307479315, + "place-brkhl": 6.126503797820721, + "place-bvmnl": 6.64138284170444, + "place-longw": 7.3898423997603935, + "place-fenwy": 7.762506493950324, + "place-kencl": 8.32355000049709, + "place-mdftf": 15.31444219383798, + "place-prmnl": 21.762943056301197, + "place-coecl": 22.15054684206732, + "place-fbkst": 27.61542510364471, + "place-wrnst": 25.531288078248025, + "place-sumav": 27.324584129309827, + "place-alsgr": 25.374872909707303, + "place-bcnwa": 27.79566473855185, + "place-wascm": 25.82454566332617, + "place-cool": 27.10468162990634, + "place-grigg": 25.18641793239978, + "place-tapst": 27.991986707627447, + "place-sthld": 26.10457349889147, + "place-stpul": 26.87709931934999, + "place-harvd": 24.99190796746997, + "place-denrd": 28.22241823500755, + "place-chswk": 26.349389810382362, + "place-kntst": 26.71705241266006, + "place-brico": 24.635284049898587, + "place-engav": 28.38473181992165, + "place-chill": 26.52489272834148, + "place-hwsst": 26.530659550102396, + "place-babck": 24.343595859555194, + "place-clmnl": 28.566906728455812, + "place-sougr": 26.806140224836945, + "place-smary": 26.311505399094283, + "place-amory": 24.07195451997832, + "place-bndhl": 27.488271614396915, + "place-lake": 27.313725027091778, + "place-unsqu": 25.947967324574478, + "place-bucen": 23.687305468563583, + "place-brmnl": 23.10135869087031, + "place-symcl": 22.02559428997156, + "place-hsmnl": 23.892071038882918, + "place-nuniv": 22.30210860077149, + "place-bckhl": 23.80370699179292, + "place-mfa": 22.62149895485365, + "place-rvrwy": 23.624976366768067, + "place-lngmd": 22.889909081588517, + "place-mispk": 23.47391527044559, + "place-fenwd": 23.254915012576546, + "place-balsq": 15.888415868204678, + "place-lech": 18.675811623866615, + "place-hymnl": 22.679892824032642, + "place-mgngl": 16.363831648796026, + "place-esomr": 17.8134462743826, + "place-gilmn": 17.044034151803462, + "place-spmnl": 24.336867661606213, + "place-armnl": 22.54277422850552, + "place-north": 23.930033704416203, + "place-buest": 23.536187930610232, + "place-haecl": 23.695400554511647, + "place-bland": 23.32008168918515, + "place-gover": 23.441582572774987, + "place-boyls": 22.866420895097622, + "place-pktrm": 23.157563126342154 + }, + "place-woodl": { + "place-river": 0.568535603947944, + "place-waban": 0.807991459874334, + "place-eliot": 1.668928001719956, + "place-newtn": 2.427641717370557, + "place-newto": 3.2471317841306773, + "place-chhil": 4.717109337096357, + "place-rsmnl": 5.741435056768466, + "place-bcnfd": 6.148881767353648, + "place-brkhl": 6.934495257695055, + "place-bvmnl": 7.449374301578773, + "place-longw": 8.197833859634727, + "place-fenwy": 8.570497953824658, + "place-kencl": 9.131541460371423, + "place-mdftf": 16.122433653712314, + "place-prmnl": 22.57093451617553, + "place-coecl": 22.958538301941655, + "place-fbkst": 28.42341656351904, + "place-wrnst": 26.33927953812236, + "place-sumav": 28.132575589184157, + "place-alsgr": 26.182864369581637, + "place-bcnwa": 28.603656198426183, + "place-wascm": 26.632537123200503, + "place-cool": 27.912673089780675, + "place-grigg": 25.994409392274115, + "place-tapst": 28.799978167501784, + "place-sthld": 26.912564958765802, + "place-stpul": 27.685090779224325, + "place-harvd": 25.799899427344304, + "place-denrd": 29.030409694881882, + "place-chswk": 27.157381270256693, + "place-kntst": 27.525043872534393, + "place-brico": 25.44327550977292, + "place-engav": 29.192723279795985, + "place-chill": 27.332884188215814, + "place-hwsst": 27.33865100997673, + "place-babck": 25.151587319429524, + "place-clmnl": 29.374898188330146, + "place-sougr": 27.61413168471128, + "place-smary": 27.119496858968617, + "place-amory": 24.879945979852653, + "place-bndhl": 28.29626307427125, + "place-lake": 28.12171648696611, + "place-unsqu": 26.75595878444881, + "place-bucen": 24.495296928437917, + "place-brmnl": 23.909350150744643, + "place-symcl": 22.833585749845895, + "place-hsmnl": 24.70006249875725, + "place-nuniv": 23.11010006064582, + "place-bckhl": 24.61169845166726, + "place-mfa": 23.429490414727983, + "place-rvrwy": 24.432967826642404, + "place-lngmd": 23.69790054146285, + "place-mispk": 24.281906730319925, + "place-fenwd": 24.06290647245088, + "place-balsq": 16.69640732807901, + "place-lech": 19.48380308374095, + "place-hymnl": 23.487884283906975, + "place-mgngl": 17.17182310867036, + "place-esomr": 18.621437734256933, + "place-gilmn": 17.852025611677796, + "place-spmnl": 25.144859121480547, + "place-armnl": 23.350765688379855, + "place-north": 24.738025164290537, + "place-buest": 24.344179390484566, + "place-haecl": 24.50339201438598, + "place-bland": 24.128073149059485, + "place-gover": 24.24957403264932, + "place-boyls": 23.674412354971956, + "place-pktrm": 23.96555458621649 + }, + "place-river": { + "place-woodl": 0.568535603947944, + "place-waban": 1.376527063822278, + "place-eliot": 2.2374636056679, + "place-newtn": 2.996177321318501, + "place-newto": 3.815667388078621, + "place-chhil": 5.285644941044302, + "place-rsmnl": 6.309970660716411, + "place-bcnfd": 6.717417371301593, + "place-brkhl": 7.5030308616429995, + "place-bvmnl": 8.017909905526718, + "place-longw": 8.766369463582672, + "place-fenwy": 9.139033557772603, + "place-kencl": 9.70007706431937, + "place-mdftf": 16.667947409006413, + "place-balsq": 16.071254677060974, + "place-mgngl": 15.593806708199125, + "place-gilmn": 14.913545758395976, + "place-esomr": 14.14575375805298, + "place-pktrm": 11.637170267512731, + "place-fbkst": 16.095032244815286, + "place-wrnst": 16.02492778796827, + "place-sumav": 15.8041912704804, + "place-alsgr": 15.86851261942755, + "place-bcnwa": 16.275271879722425, + "place-wascm": 16.318185373046415, + "place-cool": 15.584288771076917, + "place-grigg": 15.680057642120026, + "place-tapst": 16.471593848798022, + "place-sthld": 16.598213208611714, + "place-stpul": 15.356706460520565, + "place-harvd": 15.485547677190215, + "place-denrd": 16.702025376178124, + "place-chswk": 16.843029520102604, + "place-kntst": 15.196659553830635, + "place-brico": 15.128923759618832, + "place-engav": 16.864338961092226, + "place-chill": 17.018532438061726, + "place-hwsst": 15.010266691272971, + "place-babck": 14.837235569275437, + "place-clmnl": 17.046513869626388, + "place-sougr": 17.29977993455719, + "place-smary": 14.791112540264859, + "place-amory": 14.565594229698567, + "place-bndhl": 15.96787875556749, + "place-lake": 17.807364736812023, + "place-unsqu": 14.427574465745053, + "place-bucen": 14.180945178283828, + "place-brmnl": 14.453036050092464, + "place-coecl": 12.644186551787566, + "place-prmnl": 13.03179765854908, + "place-hsmnl": 25.268679904979926, + "place-symcl": 13.294451506328048, + "place-bckhl": 15.072490929223342, + "place-nuniv": 13.627110489739923, + "place-rvrwy": 14.926249194081569, + "place-mfa": 13.920344370749827, + "place-mispk": 14.720913336738453, + "place-lngmd": 14.188132574514839, + "place-fenwd": 14.528184183120581, + "place-lech": 13.383263096019252, + "place-hymnl": 13.173532533752889, + "place-spmnl": 12.816474802776789, + "place-armnl": 12.251959165349366, + "place-north": 12.409640845586779, + "place-buest": 14.029827640330478, + "place-haecl": 12.175007695682222, + "place-bland": 13.813721398905399, + "place-gover": 11.921189713945564, + "place-boyls": 11.882600669589602 + }, + "place-mdftf": { + "place-balsq": 0.573973674366698, + "place-mgngl": 1.049389454958045, + "place-gilmn": 1.7295919579654822, + "place-esomr": 2.49900408054462, + "place-lech": 3.361369430028634, + "place-river": 16.667947409006413, + "place-bckhl": 8.489264797954943, + "place-hsmnl": 8.577628845044938, + "place-rvrwy": 8.310534172930089, + "place-mispk": 8.159473076607611, + "place-fenwd": 7.9404728187385665, + "place-brmnl": 7.78691649703233, + "place-lngmd": 7.575466887750537, + "place-mfa": 7.3070567610156685, + "place-nuniv": 6.987666406933508, + "place-symcl": 6.71115209613358, + "place-prmnl": 6.448500862463216, + "place-coecl": 6.836104648229342, + "place-fbkst": 12.30098290980673, + "place-wrnst": 10.216845884410047, + "place-sumav": 12.010141935471847, + "place-alsgr": 10.060430715869325, + "place-bcnwa": 12.481222544713871, + "place-wascm": 10.510103469488191, + "place-cool": 11.790239436068362, + "place-grigg": 9.871975738561801, + "place-tapst": 12.67754451378947, + "place-sthld": 10.79013130505349, + "place-stpul": 11.562657125512011, + "place-harvd": 9.67746577363199, + "place-denrd": 12.90797604116957, + "place-chswk": 11.034947616544382, + "place-kntst": 11.40261021882208, + "place-brico": 9.320841856060607, + "place-engav": 13.070289626083671, + "place-chill": 11.2104505345035, + "place-hwsst": 11.216217356264416, + "place-babck": 9.029153665717214, + "place-clmnl": 13.252464534617832, + "place-sougr": 11.491698030998966, + "place-smary": 10.997063205256303, + "place-amory": 8.757512326140342, + "place-bndhl": 12.173829420558937, + "place-lake": 11.9992828332538, + "place-unsqu": 10.633525130736498, + "place-bucen": 8.372863274725603, + "place-chhil": 12.251676379941145, + "place-pktrm": 7.843120932504177, + "place-spmnl": 9.022425467768235, + "place-hymnl": 7.365450630194664, + "place-rsmnl": 11.230768066367414, + "place-boyls": 7.551978701259645, + "place-north": 8.615591510578225, + "place-buest": 8.221745736772252, + "place-newto": 13.720827900063636, + "place-gover": 8.127140378937009, + "place-haecl": 8.380958360673667, + "place-armnl": 7.228332034667543, + "place-bland": 8.005639495347173, + "place-bcnfd": 10.831610671801677, + "place-kencl": 7.765743954679672, + "place-fenwy": 8.40670601251193, + "place-woodl": 16.976866168451252, + "place-longw": 8.762878195090671, + "place-waban": 16.15016365798736, + "place-bvmnl": 9.501195872355446, + "place-eliot": 15.30282459996123, + "place-brkhl": 10.034098121967709, + "place-newtn": 14.530440573923293 + }, + "place-balsq": { + "place-mgngl": 0.475415780591347, + "place-gilmn": 1.155618283598784, + "place-esomr": 1.925030406177922, + "place-lech": 2.764676698083195, + "place-river": 16.071254677060974, + "place-mdftf": 0.573973674366698, + "place-newtn": 15.104414248289991, + "place-pktrm": 8.417094606870874, + "place-fbkst": 12.874956584173429, + "place-wrnst": 10.790819558776745, + "place-sumav": 12.584115609838545, + "place-alsgr": 10.634404390236023, + "place-bcnwa": 13.05519621908057, + "place-wascm": 11.08407714385489, + "place-cool": 12.36421311043506, + "place-grigg": 10.445949412928499, + "place-tapst": 13.251518188156169, + "place-sthld": 11.364104979420189, + "place-stpul": 12.13663079987871, + "place-harvd": 10.251439447998688, + "place-denrd": 13.481949715536269, + "place-chswk": 11.60892129091108, + "place-kntst": 11.976583893188778, + "place-brico": 9.894815530427305, + "place-engav": 13.644263300450369, + "place-chill": 11.784424208870199, + "place-hwsst": 11.790191030631114, + "place-babck": 9.603127340083912, + "place-clmnl": 13.82643820898453, + "place-sougr": 12.065671705365665, + "place-smary": 11.571036879623001, + "place-amory": 9.33148600050704, + "place-bndhl": 12.747803094925635, + "place-lake": 12.573256507620497, + "place-unsqu": 11.207498805103196, + "place-bucen": 8.946836949092301, + "place-chhil": 12.825650054307843, + "place-boyls": 8.125952375626342, + "place-hsmnl": 9.151602519411636, + "place-coecl": 7.41007832259604, + "place-prmnl": 7.022474536829914, + "place-bckhl": 9.063238472321641, + "place-symcl": 7.2851257705002785, + "place-rvrwy": 8.884507847296787, + "place-nuniv": 7.561640081300206, + "place-mispk": 8.73344675097431, + "place-mfa": 7.881030435382367, + "place-fenwd": 8.514446493105265, + "place-lngmd": 8.149440562117235, + "place-brmnl": 8.360890171399028, + "place-spmnl": 9.596399142134933, + "place-hymnl": 7.939424304561362, + "place-rsmnl": 11.804741740734112, + "place-gover": 8.701114053303707, + "place-haecl": 8.954932035040365, + "place-buest": 8.79571941113895, + "place-newto": 14.294801574430334, + "place-bland": 8.579613169713872, + "place-bcnfd": 11.405584346168375, + "place-north": 9.189565184944923, + "place-armnl": 7.802305709034241, + "place-woodl": 17.55083984281795, + "place-kencl": 8.339717629046369, + "place-fenwy": 8.980679686878629, + "place-waban": 16.724137332354058, + "place-longw": 9.33685186945737, + "place-eliot": 15.876798274327928, + "place-bvmnl": 10.075169546722144, + "place-brkhl": 10.608071796334407 + }, + "place-mgngl": { + "place-gilmn": 0.680202503007437, + "place-esomr": 1.449614625586575, + "place-lech": 2.287228729221348, + "place-river": 15.593806708199125, + "place-balsq": 0.475415780591347, + "place-mdftf": 1.049389454958045, + "place-newtn": 15.579830028881338, + "place-pktrm": 8.892510387462222, + "place-fbkst": 13.350372364764775, + "place-wrnst": 11.266235339368091, + "place-sumav": 13.05953139042989, + "place-alsgr": 11.10982017082737, + "place-bcnwa": 13.530611999671915, + "place-wascm": 11.559492924446236, + "place-cool": 12.839628891026406, + "place-grigg": 10.921365193519845, + "place-tapst": 13.726933968747515, + "place-sthld": 11.839520760011535, + "place-stpul": 12.612046580470055, + "place-harvd": 10.726855228590034, + "place-denrd": 13.957365496127615, + "place-chswk": 12.084337071502427, + "place-kntst": 12.451999673780124, + "place-brico": 10.370231311018651, + "place-engav": 14.119679081041715, + "place-chill": 12.259839989461545, + "place-hwsst": 12.26560681122246, + "place-babck": 10.078543120675258, + "place-clmnl": 14.301853989575877, + "place-sougr": 12.54108748595701, + "place-smary": 12.046452660214348, + "place-amory": 9.806901781098386, + "place-bndhl": 13.22321887551698, + "place-lake": 13.048672288211844, + "place-unsqu": 11.682914585694542, + "place-bucen": 9.422252729683647, + "place-chhil": 13.30106583489919, + "place-boyls": 8.60136815621769, + "place-hsmnl": 9.627018300002982, + "place-coecl": 7.885494103187387, + "place-prmnl": 7.497890317421261, + "place-bckhl": 9.538654252912988, + "place-symcl": 7.760541551091626, + "place-rvrwy": 9.359923627888133, + "place-nuniv": 8.037055861891552, + "place-mispk": 9.208862531565655, + "place-mfa": 8.356446215973714, + "place-fenwd": 8.98986227369661, + "place-lngmd": 8.624856342708581, + "place-brmnl": 8.836305951990374, + "place-spmnl": 10.07181492272628, + "place-hymnl": 8.414840085152708, + "place-rsmnl": 12.280157521325458, + "place-gover": 9.176529833895053, + "place-haecl": 9.43034781563171, + "place-buest": 9.271135191730297, + "place-newto": 14.77021735502168, + "place-bland": 9.055028950305218, + "place-bcnfd": 11.881000126759721, + "place-north": 9.66498096553627, + "place-armnl": 8.277721489625588, + "place-woodl": 18.0262556234093, + "place-kencl": 8.815133409637717, + "place-fenwy": 9.456095467469975, + "place-waban": 17.199553112945406, + "place-longw": 9.812267650048716, + "place-eliot": 16.352214054919276, + "place-bvmnl": 10.55058532731349, + "place-brkhl": 11.083487576925753 + }, + "place-gilmn": { + "place-esomr": 0.769412122579138, + "place-lech": 1.606967779418198, + "place-river": 14.913545758395976, + "place-mgngl": 0.680202503007437, + "place-balsq": 1.155618283598784, + "place-mdftf": 1.7295919579654822, + "place-newtn": 16.260032531888776, + "place-pktrm": 9.57271289046966, + "place-fbkst": 14.030574867772213, + "place-wrnst": 11.946437842375529, + "place-sumav": 13.739733893437329, + "place-alsgr": 11.790022673834807, + "place-bcnwa": 14.210814502679353, + "place-wascm": 12.239695427453674, + "place-cool": 13.519831394033844, + "place-grigg": 11.601567696527283, + "place-tapst": 14.407136471754953, + "place-sthld": 12.519723263018973, + "place-stpul": 13.292249083477493, + "place-harvd": 11.407057731597472, + "place-denrd": 14.637567999135053, + "place-chswk": 12.764539574509865, + "place-kntst": 13.132202176787562, + "place-brico": 11.05043381402609, + "place-engav": 14.799881584049153, + "place-chill": 12.940042492468983, + "place-hwsst": 12.945809314229898, + "place-babck": 10.758745623682696, + "place-clmnl": 14.982056492583315, + "place-sougr": 13.221289988964449, + "place-smary": 12.726655163221785, + "place-amory": 10.487104284105824, + "place-bndhl": 13.903421378524419, + "place-lake": 13.728874791219281, + "place-unsqu": 12.36311708870198, + "place-bucen": 10.102455232691085, + "place-chhil": 13.981268337906627, + "place-boyls": 9.281570659225128, + "place-hsmnl": 10.30722080301042, + "place-coecl": 8.565696606194823, + "place-prmnl": 8.178092820428699, + "place-bckhl": 10.218856755920426, + "place-symcl": 8.440744054099063, + "place-rvrwy": 10.04012613089557, + "place-nuniv": 8.71725836489899, + "place-mispk": 9.889065034573093, + "place-mfa": 9.036648718981152, + "place-fenwd": 9.670064776704049, + "place-lngmd": 9.305058845716019, + "place-brmnl": 9.516508454997812, + "place-spmnl": 10.752017425733717, + "place-hymnl": 9.095042588160146, + "place-rsmnl": 12.960360024332896, + "place-gover": 9.85673233690249, + "place-haecl": 10.110550318639149, + "place-buest": 9.951337694737735, + "place-newto": 15.450419858029118, + "place-bland": 9.735231453312656, + "place-bcnfd": 12.561202629767159, + "place-north": 10.345183468543707, + "place-armnl": 8.957923992633024, + "place-woodl": 18.706458126416734, + "place-kencl": 9.495335912645153, + "place-fenwy": 10.136297970477413, + "place-waban": 17.879755615952842, + "place-longw": 10.492470153056153, + "place-eliot": 17.032416557926712, + "place-bvmnl": 11.230787830320928, + "place-brkhl": 11.763690079933191 + }, + "place-esomr": { + "place-lech": 0.839175779075201, + "place-river": 14.14575375805298, + "place-gilmn": 0.769412122579138, + "place-mgngl": 1.449614625586575, + "place-balsq": 1.925030406177922, + "place-mdftf": 2.49900408054462, + "place-newtn": 17.029444654467913, + "place-pktrm": 10.342125013048797, + "place-fbkst": 14.79998699035135, + "place-wrnst": 12.715849964954668, + "place-sumav": 14.509146016016466, + "place-alsgr": 12.559434796413946, + "place-bcnwa": 14.980226625258492, + "place-wascm": 13.009107550032812, + "place-cool": 14.28924351661298, + "place-grigg": 12.37097981910642, + "place-tapst": 15.17654859433409, + "place-sthld": 13.289135385598112, + "place-stpul": 14.06166120605663, + "place-harvd": 12.17646985417661, + "place-denrd": 15.406980121714192, + "place-chswk": 13.533951697089002, + "place-kntst": 13.901614299366699, + "place-brico": 11.819845936605226, + "place-engav": 15.56929370662829, + "place-chill": 13.70945461504812, + "place-hwsst": 13.715221436809035, + "place-babck": 11.528157746261833, + "place-clmnl": 15.751468615162452, + "place-sougr": 13.990702111543587, + "place-smary": 13.496067285800923, + "place-amory": 11.256516406684963, + "place-bndhl": 14.672833501103558, + "place-lake": 14.49828691379842, + "place-unsqu": 13.132529211281117, + "place-bucen": 10.871867355270222, + "place-chhil": 14.750680460485764, + "place-boyls": 10.050982781804265, + "place-hsmnl": 11.076632925589557, + "place-coecl": 9.335108728773962, + "place-prmnl": 8.947504943007836, + "place-bckhl": 10.988268878499564, + "place-symcl": 9.2101561766782, + "place-rvrwy": 10.80953825347471, + "place-nuniv": 9.48667048747813, + "place-mispk": 10.65847715715223, + "place-mfa": 9.806060841560289, + "place-fenwd": 10.439476899283186, + "place-lngmd": 10.074470968295156, + "place-brmnl": 10.285920577576949, + "place-spmnl": 11.521429548312856, + "place-hymnl": 9.864454710739285, + "place-rsmnl": 13.729772146912033, + "place-gover": 10.62614445948163, + "place-haecl": 10.879962441218286, + "place-buest": 10.720749817316872, + "place-newto": 16.219831980608255, + "place-bland": 10.504643575891794, + "place-bcnfd": 13.330614752346296, + "place-north": 11.114595591122846, + "place-armnl": 9.727336115212163, + "place-woodl": 19.47587024899587, + "place-kencl": 10.264748035224292, + "place-fenwy": 10.905710093056552, + "place-waban": 18.64916773853198, + "place-longw": 11.26188227563529, + "place-eliot": 17.80182868050585, + "place-bvmnl": 12.000199952900065, + "place-brkhl": 12.533102202512328 + }, + "place-cedgr": { + "place-asmnl": 0.324995067555476, + "place-cedgr": 0.641043370466476, + "place-butlr": 0.582811809656605, + "place-miltt": 0.884430273453034, + "place-cenav": 1.1969004749761392, + "place-valrd": 1.6229338954257133, + "place-capst": 1.942215374711683, + "place-matt": 2.188623370764733 + }, + "place-ogmnl": { + "place-mlmnl": 0.734629970348168, + "place-welln": 2.487636864461548, + "place-astao": 3.120909839661381, + "place-sull": 3.69846057648334, + "place-ccmnl": 4.5662601090879305, + "place-north": 5.273072677438761, + "place-haecl": 5.509183044768555, + "place-state": 5.795672741812817, + "place-dwnxg": 6.077451927617716, + "place-chncl": 6.323187463960474, + "place-tumnl": 6.5396184961077335, + "place-bbsta": 7.211590154124914, + "place-masta": 7.834427973758255, + "place-rugg": 8.251041590238014, + "place-rcmnl": 8.769546312037702, + "place-jaksn": 9.319793848300925, + "place-sbmnl": 9.801931362095365, + "place-grnst": 10.340442230498887, + "place-forhl": 11.029177615227075 + }, + "place-mlmnl": { + "place-welln": 1.75300689411338, + "place-astao": 2.386279869313213, + "place-sull": 2.963830606135172, + "place-ccmnl": 3.8316301387397624, + "place-north": 4.538442707090593, + "place-haecl": 4.774553074420387, + "place-state": 5.061042771464649, + "place-dwnxg": 5.342821957269548, + "place-chncl": 5.588557493612306, + "place-tumnl": 5.8049885257595655, + "place-bbsta": 6.476960183776746, + "place-masta": 7.099798003410087, + "place-rugg": 7.516411619889845, + "place-rcmnl": 8.034916341689534, + "place-jaksn": 8.585163877952757, + "place-sbmnl": 9.067301391747197, + "place-grnst": 9.605812260150719, + "place-forhl": 10.294547644878907, + "place-ogmnl": 0.734629970348168 + }, + "place-welln": { + "place-astao": 0.633272975199833, + "place-sull": 1.2108237120217922, + "place-ccmnl": 2.078623244626382, + "place-north": 2.785435812977213, + "place-haecl": 3.021546180307007, + "place-state": 3.3080358773512692, + "place-dwnxg": 3.589815063156168, + "place-chncl": 3.835550599498926, + "place-tumnl": 4.051981631646186, + "place-bbsta": 4.723953289663366, + "place-masta": 5.346791109296707, + "place-rugg": 5.763404725776465, + "place-rcmnl": 6.281909447576154, + "place-jaksn": 6.8321569838393765, + "place-sbmnl": 7.314294497633816, + "place-grnst": 7.852805366037338, + "place-forhl": 8.541540750765527, + "place-mlmnl": 1.75300689411338, + "place-ogmnl": 2.487636864461548 + }, + "place-astao": { + "place-sull": 0.577550736821959, + "place-ccmnl": 1.445350269426549, + "place-north": 2.15216283777738, + "place-haecl": 2.388273205107174, + "place-state": 2.674762902151436, + "place-dwnxg": 2.956542087956335, + "place-chncl": 3.202277624299093, + "place-tumnl": 3.418708656446353, + "place-bbsta": 4.090680314463533, + "place-masta": 4.713518134096875, + "place-rugg": 5.130131750576632, + "place-rcmnl": 5.648636472376321, + "place-jaksn": 6.198884008639544, + "place-sbmnl": 6.6810215224339835, + "place-grnst": 7.2195323908375055, + "place-forhl": 7.908267775565694, + "place-welln": 0.633272975199833, + "place-mlmnl": 2.386279869313213, + "place-ogmnl": 3.120909839661381 + }, + "place-sull": { + "place-ccmnl": 0.86779953260459, + "place-north": 1.574612100955421, + "place-haecl": 1.810722468285215, + "place-state": 2.097212165329477, + "place-dwnxg": 2.378991351134376, + "place-chncl": 2.624726887477134, + "place-tumnl": 2.841157919624394, + "place-bbsta": 3.513129577641574, + "place-masta": 4.135967397274915, + "place-rugg": 4.552581013754673, + "place-rcmnl": 5.071085735554362, + "place-jaksn": 5.621333271817585, + "place-sbmnl": 6.103470785612025, + "place-grnst": 6.641981654015547, + "place-forhl": 7.330717038743735, + "place-astao": 0.577550736821959, + "place-welln": 1.2108237120217922, + "place-mlmnl": 2.963830606135172, + "place-ogmnl": 3.69846057648334 + }, + "place-ccmnl": { + "place-north": 0.706812568350831, + "place-haecl": 0.942922935680625, + "place-state": 1.229412632724887, + "place-dwnxg": 1.511191818529786, + "place-chncl": 1.756927354872544, + "place-tumnl": 1.973358387019804, + "place-bbsta": 2.645330045036984, + "place-masta": 3.268167864670325, + "place-rugg": 3.684781481150083, + "place-rcmnl": 4.203286202949773, + "place-jaksn": 4.753533739212996, + "place-sbmnl": 5.235671253007435, + "place-grnst": 5.774182121410957, + "place-forhl": 6.462917506139145, + "place-sull": 0.86779953260459, + "place-astao": 1.445350269426549, + "place-welln": 2.078623244626382, + "place-mlmnl": 3.8316301387397624, + "place-ogmnl": 4.5662601090879305 + }, + "place-dwnxg": { + "place-chncl": 0.245735536342758, + "place-tumnl": 0.462166568490018, + "place-bbsta": 1.134138226507198, + "place-masta": 1.7569760461405388, + "place-rugg": 2.1735896626202966, + "place-rcmnl": 2.692094384419987, + "place-jaksn": 3.24234192068321, + "place-sbmnl": 3.72447943447765, + "place-grnst": 4.262990302881172, + "place-forhl": 4.951725687609359, + "place-state": 0.281779185804899, + "place-haecl": 0.5682688828491611, + "place-north": 0.8043792501789551, + "place-ccmnl": 1.511191818529786, + "place-sull": 2.378991351134376, + "place-astao": 2.956542087956335, + "place-welln": 3.589815063156168, + "place-mlmnl": 5.342821957269548, + "place-ogmnl": 6.077451927617716, + "place-alfcl": 6.072613838309276, + "place-davis": 5.08120174742007, + "place-portr": 4.442821300480197, + "place-harsq": 3.3771503854986866, + "place-cntsq": 2.405892115669489, + "place-knncl": 1.4377268166408168, + "place-chmnl": 0.7167070315606849, + "place-pktrm": 0.127226172278891, + "place-sstat": 0.335541999721626, + "place-brdwy": 1.160915942147858, + "place-andrw": 2.02088661653444, + "place-jfk": 2.805735556848009, + "place-nqncy": 6.350580058085779, + "place-wlsta": 7.14677004978426, + "place-qnctr": 8.44027992275113, + "place-qamnl": 9.7503783603754, + "place-shmnl": 3.489373168197726, + "place-fldcr": 4.482920012750537, + "place-smmnl": 5.071077381218684, + "place-asmnl": 5.676135843548677, + "place-brntn": 11.55321070945676 + }, + "place-chncl": { + "place-tumnl": 0.21643103214726, + "place-bbsta": 0.88840269016444, + "place-masta": 1.5112405097977808, + "place-rugg": 1.9278541262775388, + "place-rcmnl": 2.446358848077229, + "place-jaksn": 2.996606384340452, + "place-sbmnl": 3.478743898134892, + "place-grnst": 4.017254766538414, + "place-forhl": 4.705990151266602, + "place-dwnxg": 0.245735536342758, + "place-state": 0.527514722147657, + "place-haecl": 0.8140044191919191, + "place-north": 1.050114786521713, + "place-ccmnl": 1.756927354872544, + "place-sull": 2.624726887477134, + "place-astao": 3.202277624299093, + "place-welln": 3.835550599498926, + "place-mlmnl": 5.588557493612306, + "place-ogmnl": 6.323187463960474 + }, + "place-tumnl": { + "place-bbsta": 0.67197165801718, + "place-masta": 1.2948094776505208, + "place-rugg": 1.7114230941302788, + "place-rcmnl": 2.229927815929969, + "place-jaksn": 2.780175352193192, + "place-sbmnl": 3.262312865987632, + "place-grnst": 3.8008237343911544, + "place-forhl": 4.489559119119342, + "place-chncl": 0.21643103214726, + "place-dwnxg": 0.462166568490018, + "place-state": 0.743945754294917, + "place-haecl": 1.0304354513391791, + "place-north": 1.266545818668973, + "place-ccmnl": 1.973358387019804, + "place-sull": 2.841157919624394, + "place-astao": 3.418708656446353, + "place-welln": 4.051981631646186, + "place-mlmnl": 5.8049885257595655, + "place-ogmnl": 6.5396184961077335 + }, + "place-bbsta": { + "place-masta": 0.622837819633341, + "place-rugg": 1.0394514361130989, + "place-rcmnl": 1.557956157912789, + "place-jaksn": 2.108203694176012, + "place-sbmnl": 2.590341207970452, + "place-grnst": 3.1288520763739744, + "place-forhl": 3.8175874611021614, + "place-tumnl": 0.67197165801718, + "place-chncl": 0.88840269016444, + "place-dwnxg": 1.134138226507198, + "place-state": 1.415917412312097, + "place-haecl": 1.702407109356359, + "place-north": 1.938517476686153, + "place-ccmnl": 2.645330045036984, + "place-sull": 3.513129577641574, + "place-astao": 4.090680314463533, + "place-welln": 4.723953289663366, + "place-mlmnl": 6.476960183776746, + "place-ogmnl": 7.211590154124914 + }, + "place-masta": { + "place-rugg": 0.416613616479758, + "place-rcmnl": 0.9351183382794479, + "place-jaksn": 1.485365874542671, + "place-sbmnl": 1.967503388337111, + "place-grnst": 2.5060142567406336, + "place-forhl": 3.1947496414688206, + "place-bbsta": 0.622837819633341, + "place-tumnl": 1.2948094776505208, + "place-chncl": 1.5112405097977808, + "place-dwnxg": 1.7569760461405388, + "place-state": 2.038755231945438, + "place-haecl": 2.3252449289897, + "place-north": 2.561355296319494, + "place-ccmnl": 3.268167864670325, + "place-sull": 4.135967397274915, + "place-astao": 4.713518134096875, + "place-welln": 5.346791109296707, + "place-mlmnl": 7.099798003410087, + "place-ogmnl": 7.834427973758255 + }, + "place-rugg": { + "place-rcmnl": 0.51850472179969, + "place-jaksn": 1.068752258062913, + "place-sbmnl": 1.5508897718573529, + "place-grnst": 2.089400640260876, + "place-forhl": 2.7781360249890628, + "place-masta": 0.416613616479758, + "place-bbsta": 1.0394514361130989, + "place-tumnl": 1.7114230941302788, + "place-chncl": 1.9278541262775388, + "place-dwnxg": 2.1735896626202966, + "place-state": 2.455368848425196, + "place-haecl": 2.7418585454694577, + "place-north": 2.977968912799252, + "place-ccmnl": 3.684781481150083, + "place-sull": 4.552581013754673, + "place-astao": 5.130131750576632, + "place-welln": 5.763404725776465, + "place-mlmnl": 7.516411619889845, + "place-ogmnl": 8.251041590238014 + }, + "place-rcmnl": { + "place-jaksn": 0.550247536263223, + "place-sbmnl": 1.032385050057663, + "place-grnst": 1.570895918461186, + "place-forhl": 2.259631303189373, + "place-rugg": 0.51850472179969, + "place-masta": 0.9351183382794479, + "place-bbsta": 1.557956157912789, + "place-tumnl": 2.229927815929969, + "place-chncl": 2.446358848077229, + "place-dwnxg": 2.692094384419987, + "place-state": 2.973873570224886, + "place-haecl": 3.260363267269148, + "place-north": 3.4964736345989422, + "place-ccmnl": 4.203286202949773, + "place-sull": 5.071085735554362, + "place-astao": 5.648636472376321, + "place-welln": 6.281909447576154, + "place-mlmnl": 8.034916341689534, + "place-ogmnl": 8.769546312037702 + }, + "place-jaksn": { + "place-sbmnl": 0.48213751379444, + "place-grnst": 1.020648382197963, + "place-forhl": 1.7093837669261498, + "place-rcmnl": 0.550247536263223, + "place-rugg": 1.068752258062913, + "place-masta": 1.485365874542671, + "place-bbsta": 2.108203694176012, + "place-tumnl": 2.780175352193192, + "place-chncl": 2.996606384340452, + "place-dwnxg": 3.24234192068321, + "place-state": 3.524121106488109, + "place-haecl": 3.810610803532371, + "place-north": 4.046721170862165, + "place-ccmnl": 4.753533739212996, + "place-sull": 5.621333271817585, + "place-astao": 6.198884008639544, + "place-welln": 6.8321569838393765, + "place-mlmnl": 8.585163877952757, + "place-ogmnl": 9.319793848300925 + }, + "place-sbmnl": { + "place-grnst": 0.538510868403523, + "place-forhl": 1.2272462531317099, + "place-jaksn": 0.48213751379444, + "place-rcmnl": 1.032385050057663, + "place-rugg": 1.5508897718573529, + "place-masta": 1.967503388337111, + "place-bbsta": 2.590341207970452, + "place-tumnl": 3.262312865987632, + "place-chncl": 3.478743898134892, + "place-dwnxg": 3.72447943447765, + "place-state": 4.006258620282549, + "place-haecl": 4.292748317326811, + "place-north": 4.528858684656605, + "place-ccmnl": 5.235671253007435, + "place-sull": 6.103470785612025, + "place-astao": 6.6810215224339835, + "place-welln": 7.314294497633816, + "place-mlmnl": 9.067301391747197, + "place-ogmnl": 9.801931362095365 + }, + "place-grnst": { + "place-forhl": 0.688735384728187, + "place-grnst": 1.378145264157322, + "place-sbmnl": 0.538510868403523, + "place-jaksn": 1.020648382197963, + "place-rcmnl": 1.570895918461186, + "place-rugg": 2.089400640260876, + "place-masta": 2.5060142567406336, + "place-bbsta": 3.1288520763739744, + "place-tumnl": 3.8008237343911544, + "place-chncl": 4.017254766538414, + "place-dwnxg": 4.262990302881172, + "place-state": 4.544769488686071, + "place-haecl": 4.831259185730333, + "place-north": 5.067369553060127, + "place-ccmnl": 5.774182121410957, + "place-sull": 6.641981654015547, + "place-astao": 7.2195323908375055, + "place-welln": 7.852805366037338, + "place-mlmnl": 9.605812260150719, + "place-ogmnl": 10.340442230498887 + }, + "place-forhl": { + "place-grnst": 0.688735384728187, + "place-sbmnl": 1.2272462531317099, + "place-jaksn": 1.7093837669261498, + "place-rcmnl": 2.259631303189373, + "place-rugg": 2.7781360249890628, + "place-masta": 3.1947496414688206, + "place-bbsta": 3.8175874611021614, + "place-tumnl": 4.489559119119342, + "place-chncl": 4.705990151266602, + "place-dwnxg": 4.951725687609359, + "place-state": 5.233504873414258, + "place-haecl": 5.51999457045852, + "place-north": 5.756104937788314, + "place-ccmnl": 6.462917506139145, + "place-sull": 7.330717038743735, + "place-astao": 7.908267775565694, + "place-welln": 8.541540750765527, + "place-mlmnl": 10.294547644878907, + "place-ogmnl": 11.029177615227075 + }, + "place-alfcl": { + "place-davis": 0.991412090889206, + "place-portr": 1.629792537829079, + "place-harsq": 2.6954634528105887, + "place-cntsq": 3.6667217226397866, + "place-knncl": 4.634887021668459, + "place-chmnl": 5.3559068067485915, + "place-pktrm": 5.945387666030385, + "place-dwnxg": 6.072613838309276, + "place-sstat": 6.408155838030902, + "place-brdwy": 7.233529780457134, + "place-andrw": 8.093500454843715, + "place-jfk": 8.878349395157285, + "place-nqncy": 12.423193896395054, + "place-wlsta": 13.219383888093537, + "place-qnctr": 14.512893761060406, + "place-qamnl": 15.822992198684679, + "place-shmnl": 9.561987006507001, + "place-fldcr": 10.555533851059813, + "place-smmnl": 11.14369121952796, + "place-asmnl": 11.748749681857953, + "place-brntn": 17.625824547766037 + }, + "place-davis": { + "place-portr": 0.638380446939873, + "place-harsq": 1.7040513619213828, + "place-cntsq": 2.6753096317505807, + "place-knncl": 3.6434749307792527, + "place-chmnl": 4.364494715859386, + "place-pktrm": 4.953975575141179, + "place-dwnxg": 5.08120174742007, + "place-sstat": 5.416743747141696, + "place-brdwy": 6.2421176895679285, + "place-andrw": 7.102088363954509, + "place-jfk": 7.886937304268079, + "place-nqncy": 11.431781805505848, + "place-wlsta": 12.227971797204331, + "place-qnctr": 13.5214816701712, + "place-qamnl": 14.831580107795473, + "place-shmnl": 8.570574915617795, + "place-fldcr": 9.564121760170607, + "place-smmnl": 10.152279128638755, + "place-asmnl": 10.757337590968747, + "place-alfcl": 0.991412090889206, + "place-brntn": 16.63441245687683 + }, + "place-portr": { + "place-harsq": 1.06567091498151, + "place-cntsq": 2.036929184810708, + "place-knncl": 3.00509448383938, + "place-chmnl": 3.7261142689195124, + "place-pktrm": 4.315595128201306, + "place-dwnxg": 4.442821300480197, + "place-sstat": 4.778363300201823, + "place-brdwy": 5.603737242628055, + "place-andrw": 6.463707917014636, + "place-jfk": 7.2485568573282055, + "place-nqncy": 10.793401358565974, + "place-wlsta": 11.589591350264458, + "place-qnctr": 12.883101223231327, + "place-qamnl": 14.1931996608556, + "place-shmnl": 7.932194468677922, + "place-fldcr": 8.925741313230734, + "place-smmnl": 9.513898681698882, + "place-asmnl": 10.118957144028874, + "place-davis": 0.638380446939873, + "place-alfcl": 1.629792537829079, + "place-brntn": 15.99603200993696 + }, + "place-harsq": { + "place-cntsq": 0.971258269829198, + "place-knncl": 1.93942356885787, + "place-chmnl": 2.6604433539380024, + "place-pktrm": 3.2499242132197956, + "place-dwnxg": 3.3771503854986866, + "place-sstat": 3.712692385220313, + "place-brdwy": 4.538066327646545, + "place-andrw": 5.398037002033126, + "place-jfk": 6.1828859423466955, + "place-nqncy": 9.727730443584464, + "place-wlsta": 10.523920435282948, + "place-qnctr": 11.817430308249817, + "place-qamnl": 13.12752874587409, + "place-shmnl": 6.866523553696412, + "place-fldcr": 7.860070398249223, + "place-smmnl": 8.448227766717372, + "place-asmnl": 9.053286229047364, + "place-portr": 1.06567091498151, + "place-davis": 1.7040513619213828, + "place-alfcl": 2.6954634528105887, + "place-brntn": 14.93036109495545 + }, + "place-cntsq": { + "place-knncl": 0.968165299028672, + "place-chmnl": 1.689185084108804, + "place-pktrm": 2.278665943390598, + "place-dwnxg": 2.405892115669489, + "place-sstat": 2.741434115391115, + "place-brdwy": 3.566808057817347, + "place-andrw": 4.426778732203928, + "place-jfk": 5.211627672517498, + "place-nqncy": 8.756472173755267, + "place-wlsta": 9.55266216545375, + "place-qnctr": 10.846172038420619, + "place-qamnl": 12.156270476044892, + "place-shmnl": 5.895265283867214, + "place-fldcr": 6.888812128420025, + "place-smmnl": 7.476969496888173, + "place-asmnl": 8.082027959218166, + "place-harsq": 0.971258269829198, + "place-portr": 2.036929184810708, + "place-davis": 2.6753096317505807, + "place-alfcl": 3.6667217226397866, + "place-brntn": 13.959102825126251 + }, + "place-knncl": { + "place-chmnl": 0.721019785080132, + "place-pktrm": 1.3105006443619258, + "place-dwnxg": 1.4377268166408168, + "place-sstat": 1.7732688163624428, + "place-brdwy": 2.598642758788675, + "place-andrw": 3.4586134331752567, + "place-jfk": 4.243462373488826, + "place-nqncy": 7.7883068747265956, + "place-wlsta": 8.584496866425077, + "place-qnctr": 9.878006739391946, + "place-qamnl": 11.188105177016219, + "place-shmnl": 4.927099984838542, + "place-fldcr": 5.9206468293913534, + "place-smmnl": 6.508804197859501, + "place-asmnl": 7.113862660189493, + "place-cntsq": 0.968165299028672, + "place-harsq": 1.93942356885787, + "place-portr": 3.00509448383938, + "place-davis": 3.6434749307792527, + "place-alfcl": 4.634887021668459, + "place-brntn": 12.990937526097579 + }, + "place-chmnl": { + "place-pktrm": 0.589480859281794, + "place-dwnxg": 0.7167070315606849, + "place-sstat": 1.052249031282311, + "place-brdwy": 1.877622973708543, + "place-andrw": 2.7375936480951246, + "place-jfk": 3.522442588408694, + "place-nqncy": 7.067287089646464, + "place-wlsta": 7.8634770813449455, + "place-qnctr": 9.156986954311813, + "place-qamnl": 10.467085391936086, + "place-shmnl": 4.206080199758411, + "place-fldcr": 5.199627044311222, + "place-smmnl": 5.787784412779369, + "place-asmnl": 6.392842875109362, + "place-knncl": 0.721019785080132, + "place-cntsq": 1.689185084108804, + "place-harsq": 2.6604433539380024, + "place-portr": 3.7261142689195124, + "place-davis": 4.364494715859386, + "place-alfcl": 5.3559068067485915, + "place-brntn": 12.269917741017446 + }, + "place-sstat": { + "place-brdwy": 0.825373942426232, + "place-andrw": 1.685344616812814, + "place-jfk": 2.470193557126383, + "place-nqncy": 6.015038058364152, + "place-wlsta": 6.811228050062634, + "place-qnctr": 8.104737923029504, + "place-qamnl": 9.414836360653775, + "place-shmnl": 3.1538311684761, + "place-fldcr": 4.147378013028911, + "place-smmnl": 4.7355353814970575, + "place-asmnl": 5.34059384382705, + "place-dwnxg": 0.335541999721626, + "place-pktrm": 0.462768172000517, + "place-chmnl": 1.052249031282311, + "place-knncl": 1.7732688163624428, + "place-cntsq": 2.741434115391115, + "place-harsq": 3.712692385220313, + "place-portr": 4.778363300201823, + "place-davis": 5.416743747141696, + "place-alfcl": 6.408155838030902, + "place-brntn": 11.217668709735134 + }, + "place-brdwy": { + "place-andrw": 0.859970674386582, + "place-jfk": 1.644819614700151, + "place-nqncy": 5.18966411593792, + "place-wlsta": 5.985854107636402, + "place-qnctr": 7.279363980603272, + "place-qamnl": 8.589462418227543, + "place-shmnl": 2.328457226049868, + "place-fldcr": 3.322004070602679, + "place-smmnl": 3.9101614390708255, + "place-asmnl": 4.515219901400818, + "place-sstat": 0.825373942426232, + "place-dwnxg": 1.160915942147858, + "place-pktrm": 1.288142114426749, + "place-chmnl": 1.877622973708543, + "place-knncl": 2.598642758788675, + "place-cntsq": 3.566808057817347, + "place-harsq": 4.538066327646545, + "place-portr": 5.603737242628055, + "place-davis": 6.2421176895679285, + "place-alfcl": 7.233529780457134, + "place-brntn": 10.392294767308902 + }, + "place-andrw": { + "place-jfk": 0.784848940313569, + "place-shmnl": 1.4684865516632861, + "place-fldcr": 2.462033396216097, + "place-smmnl": 3.050190764684243, + "place-asmnl": 3.6552492270142363, + "place-brdwy": 0.859970674386582, + "place-sstat": 1.685344616812814, + "place-dwnxg": 2.02088661653444, + "place-pktrm": 2.148112788813331, + "place-chmnl": 2.7375936480951246, + "place-knncl": 3.4586134331752567, + "place-cntsq": 4.426778732203928, + "place-harsq": 5.398037002033126, + "place-portr": 6.463707917014636, + "place-davis": 7.102088363954509, + "place-alfcl": 8.093500454843715, + "place-qamnl": 7.72949174384096, + "place-brntn": 9.53232409292232, + "place-qnctr": 6.419393306216691, + "place-wlsta": 5.12588343324982, + "place-nqncy": 4.329693441551338 + }, + "place-jfk": { + "place-shmnl": 0.705335739903961, + "place-fldcr": 1.698882584456772, + "place-smmnl": 2.287039952924918, + "place-asmnl": 2.892098415254911, + "place-andrw": 0.784848940313569, + "place-brdwy": 1.644819614700151, + "place-sstat": 2.470193557126383, + "place-dwnxg": 2.805735556848009, + "place-pktrm": 2.9329617291269, + "place-chmnl": 3.522442588408694, + "place-knncl": 4.243462373488826, + "place-cntsq": 5.211627672517498, + "place-harsq": 6.1828859423466955, + "place-portr": 7.2485568573282055, + "place-davis": 7.886937304268079, + "place-alfcl": 8.878349395157285, + "place-nqncy": 3.54484450123777, + "place-wlsta": 4.3410344929362505, + "place-qnctr": 5.634544365903121, + "place-qamnl": 6.94464280352739, + "place-brntn": 8.74747515260875 + }, + "place-shmnl": { + "place-fldcr": 0.993546844552811, + "place-smmnl": 1.581704213020957, + "place-asmnl": 2.18676267535095, + "place-jfk": 0.705335739903961, + "place-andrw": 1.4684865516632861, + "place-brdwy": 2.328457226049868, + "place-sstat": 3.1538311684761, + "place-dwnxg": 3.489373168197726, + "place-pktrm": 3.616599340476617, + "place-chmnl": 4.206080199758411, + "place-knncl": 4.927099984838542, + "place-cntsq": 5.895265283867214, + "place-harsq": 6.866523553696412, + "place-portr": 7.932194468677922, + "place-davis": 8.570574915617795, + "place-alfcl": 9.561987006507001, + "place-brntn": 27.18781155427304, + "place-nqncy": 21.985180902902055, + "place-qamnl": 25.38497920519168, + "place-wlsta": 22.78137089460054, + "place-qnctr": 24.074880767567407 + }, + "place-fldcr": { + "place-smmnl": 0.588157368468146, + "place-asmnl": 1.193215830798139, + "place-shmnl": 0.993546844552811, + "place-jfk": 1.698882584456772, + "place-andrw": 2.462033396216097, + "place-brdwy": 3.322004070602679, + "place-sstat": 4.147378013028911, + "place-dwnxg": 4.482920012750537, + "place-pktrm": 4.610146185029428, + "place-chmnl": 5.199627044311222, + "place-knncl": 5.9206468293913534, + "place-cntsq": 6.888812128420025, + "place-harsq": 7.860070398249223, + "place-portr": 8.925741313230734, + "place-davis": 9.564121760170607, + "place-alfcl": 10.555533851059813, + "place-brntn": 28.18135839882585, + "place-nqncy": 22.97872774745487, + "place-qamnl": 26.378526049744494, + "place-wlsta": 23.774917739153352, + "place-qnctr": 25.068427612120217 + }, + "place-smmnl": { + "place-asmnl": 0.605058462329993, + "place-fldcr": 0.588157368468146, + "place-shmnl": 1.581704213020957, + "place-jfk": 2.287039952924918, + "place-andrw": 3.050190764684243, + "place-brdwy": 3.9101614390708255, + "place-sstat": 4.7355353814970575, + "place-dwnxg": 5.071077381218684, + "place-pktrm": 5.198303553497575, + "place-chmnl": 5.787784412779369, + "place-knncl": 6.508804197859501, + "place-cntsq": 7.476969496888173, + "place-harsq": 8.448227766717372, + "place-portr": 9.513898681698882, + "place-davis": 10.152279128638755, + "place-alfcl": 11.14369121952796, + "place-brntn": 28.769515767293996, + "place-nqncy": 23.566885115923014, + "place-qamnl": 26.96668341821264, + "place-wlsta": 24.363075107621498, + "place-qnctr": 25.656584980588367 + }, + "place-asmnl": { + "place-smmnl": 0.605058462329993, + "place-fldcr": 1.193215830798139, + "place-shmnl": 2.18676267535095, + "place-jfk": 2.892098415254911, + "place-andrw": 3.6552492270142363, + "place-brdwy": 4.515219901400818, + "place-sstat": 5.34059384382705, + "place-dwnxg": 5.676135843548677, + "place-pktrm": 5.803362015827568, + "place-chmnl": 6.392842875109362, + "place-knncl": 7.113862660189493, + "place-cntsq": 8.082027959218166, + "place-harsq": 9.053286229047364, + "place-portr": 10.118957144028874, + "place-davis": 10.757337590968747, + "place-alfcl": 11.748749681857953, + "place-cedgr": 0.324995067555476, + "place-butlr": 0.907806877212081, + "place-miltt": 1.198289122773005, + "place-cenav": 1.520633463697009, + "place-valrd": 1.945859852834446, + "place-capst": 2.24913190094846, + "place-matt": 2.5073426365028233, + "place-brntn": 29.37457422962399, + "place-nqncy": 24.171943578253007, + "place-qamnl": 27.571741880542632, + "place-wlsta": 24.96813356995149, + "place-qnctr": 26.26164344291836 + }, + "place-nqncy": { + "place-wlsta": 0.796189991698481, + "place-qnctr": 2.089699864665351, + "place-qamnl": 3.399798302289621, + "place-brntn": 5.20263065137098, + "place-jfk": 3.54484450123777, + "place-andrw": 4.329693441551338, + "place-alfcl": 12.423193896395054, + "place-davis": 11.431781805505848, + "place-portr": 10.793401358565974, + "place-harsq": 9.727730443584464, + "place-cntsq": 8.756472173755267, + "place-knncl": 7.7883068747265956, + "place-chmnl": 7.067287089646464, + "place-pktrm": 6.47780623036467, + "place-dwnxg": 6.350580058085779, + "place-sstat": 6.015038058364152, + "place-brdwy": 5.18966411593792, + "place-asmnl": 9.704884017338738, + "place-shmnl": 7.518121341987788, + "place-smmnl": 9.099825555008746, + "place-fldcr": 8.5116681865406 + }, + "place-wlsta": { + "place-qnctr": 1.29350987296687, + "place-qamnl": 2.60360831059114, + "place-brntn": 4.4064406596725, + "place-nqncy": 0.796189991698481, + "place-jfk": 4.3410344929362505, + "place-andrw": 5.12588343324982, + "place-alfcl": 13.219383888093537, + "place-davis": 12.227971797204331, + "place-portr": 11.589591350264458, + "place-harsq": 10.523920435282948, + "place-cntsq": 9.55266216545375, + "place-knncl": 8.584496866425077, + "place-chmnl": 7.8634770813449455, + "place-pktrm": 7.273996222063151, + "place-dwnxg": 7.14677004978426, + "place-sstat": 6.811228050062634, + "place-brdwy": 5.985854107636402, + "place-asmnl": 10.50107400903722, + "place-shmnl": 8.31431133368627, + "place-smmnl": 9.896015546707227, + "place-fldcr": 9.30785817823908 + }, + "place-qnctr": { + "place-qamnl": 1.31009843762427, + "place-brntn": 3.11293078670563, + "place-wlsta": 1.29350987296687, + "place-nqncy": 2.089699864665351, + "place-jfk": 5.634544365903121, + "place-andrw": 6.419393306216691, + "place-alfcl": 14.512893761060406, + "place-davis": 13.5214816701712, + "place-portr": 12.883101223231327, + "place-harsq": 11.817430308249817, + "place-cntsq": 10.846172038420619, + "place-knncl": 9.878006739391946, + "place-chmnl": 9.156986954311813, + "place-pktrm": 8.56750609503002, + "place-dwnxg": 8.44027992275113, + "place-sstat": 8.104737923029504, + "place-brdwy": 7.279363980603272, + "place-asmnl": 11.79458388200409, + "place-shmnl": 9.60782120665314, + "place-smmnl": 11.189525419674098, + "place-fldcr": 10.601368051205952 + }, + "place-qamnl": { + "place-brntn": 1.80283234908136, + "place-qamnl": 3.60566470934741, + "place-qnctr": 1.31009843762427, + "place-wlsta": 2.60360831059114, + "place-nqncy": 3.399798302289621, + "place-jfk": 6.94464280352739, + "place-andrw": 7.72949174384096, + "place-alfcl": 15.822992198684679, + "place-davis": 14.831580107795473, + "place-portr": 14.1931996608556, + "place-harsq": 13.12752874587409, + "place-cntsq": 12.156270476044892, + "place-knncl": 11.188105177016219, + "place-chmnl": 10.467085391936086, + "place-pktrm": 9.877604532654292, + "place-dwnxg": 9.7503783603754, + "place-sstat": 9.414836360653775, + "place-brdwy": 8.589462418227543, + "place-asmnl": 13.10468231962836, + "place-shmnl": 10.917919644277411, + "place-smmnl": 12.499623857298367, + "place-fldcr": 11.911466488830222 + }, + "place-brntn": { + "place-qamnl": 1.80283234908136, + "place-qnctr": 3.11293078670563, + "place-wlsta": 4.4064406596725, + "place-nqncy": 5.20263065137098, + "place-jfk": 8.74747515260875, + "place-andrw": 9.53232409292232, + "place-alfcl": 17.625824547766037, + "place-davis": 16.63441245687683, + "place-portr": 15.99603200993696, + "place-harsq": 14.93036109495545, + "place-cntsq": 13.959102825126251, + "place-knncl": 12.990937526097579, + "place-chmnl": 12.269917741017446, + "place-pktrm": 11.680436881735652, + "place-dwnxg": 11.55321070945676, + "place-sstat": 11.217668709735134, + "place-brdwy": 10.392294767308902, + "place-asmnl": 14.90751466870972, + "place-shmnl": 12.720751993358771, + "place-smmnl": 14.302456206379727, + "place-fldcr": 13.714298837911581 + }, + "place-prmnl": { + "place-symcl": 0.262651233670365, + "place-nuniv": 0.539165544470293, + "place-mfa": 0.8585558985524531, + "place-lngmd": 1.126966025287321, + "place-brmnl": 1.338415634569115, + "place-fenwd": 1.491971956275351, + "place-mispk": 1.710972214144396, + "place-rvrwy": 1.862033310466873, + "place-bckhl": 2.040763935491728, + "place-hsmnl": 2.129127982581722, + "place-coecl": 0.387603785766126, + "place-mdftf": 6.448500862463216, + "place-newtn": 20.97894143638651, + "place-pktrm": 14.291621794967392, + "place-fbkst": 18.749483772269947, + "place-wrnst": 16.66534674687326, + "place-sumav": 18.458642797935063, + "place-alsgr": 16.50893157833254, + "place-bcnwa": 18.929723407177086, + "place-wascm": 16.958604331951406, + "place-cool": 18.238740298531578, + "place-grigg": 16.320476601025018, + "place-tapst": 19.126045376252687, + "place-sthld": 17.238632167516705, + "place-stpul": 18.011157987975228, + "place-harvd": 16.125966636095207, + "place-denrd": 19.356476903632785, + "place-chswk": 17.4834484790076, + "place-kntst": 17.851111081285296, + "place-brico": 15.769342718523824, + "place-engav": 19.518790488546887, + "place-chill": 17.658951396966717, + "place-hwsst": 17.664718218727632, + "place-babck": 15.47765452818043, + "place-clmnl": 19.70096539708105, + "place-sougr": 17.94019889346218, + "place-smary": 17.44556406771952, + "place-amory": 15.206013188603556, + "place-bndhl": 18.62233028302215, + "place-lake": 18.447783695717014, + "place-unsqu": 17.082025993199714, + "place-bucen": 14.82136413718882, + "place-chhil": 18.70017724240436, + "place-boyls": 14.00047956372286, + "place-balsq": 7.022474536829914, + "place-brkhl": 16.482598984430926, + "place-gover": 14.575641241400223, + "place-mgngl": 7.497890317421261, + "place-bvmnl": 15.949696734818662, + "place-bland": 14.454140357810388, + "place-rsmnl": 17.67926892883063, + "place-haecl": 14.829459223136883, + "place-hymnl": 13.813951492657878, + "place-newto": 20.169328762526852, + "place-buest": 14.670246599235469, + "place-bcnfd": 17.280111534264893, + "place-north": 15.06409237304144, + "place-armnl": 13.676832897130758, + "place-gilmn": 8.178092820428699, + "place-eliot": 21.751325462424447, + "place-spmnl": 15.47092633023145, + "place-waban": 22.598664520450576, + "place-esomr": 8.947504943007836, + "place-longw": 15.211379057553888, + "place-lech": 9.80987029249185, + "place-woodl": 23.42536703091447, + "place-kencl": 14.214244817142887, + "place-fenwy": 14.855206874975146, + "place-river": 23.11644827146963 + }, + "place-symcl": { + "place-nuniv": 0.276514310799928, + "place-mfa": 0.595904664882088, + "place-lngmd": 0.864314791616956, + "place-brmnl": 1.07576440089875, + "place-fenwd": 1.229320722604986, + "place-mispk": 1.448320980474031, + "place-rvrwy": 1.599382076796508, + "place-bckhl": 1.7781127018213632, + "place-hsmnl": 1.8664767489113572, + "place-prmnl": 0.262651233670365, + "place-coecl": 0.650255019436491, + "place-mdftf": 6.71115209613358, + "place-newtn": 21.241592670056875, + "place-pktrm": 14.554273028637757, + "place-fbkst": 19.012135005940312, + "place-wrnst": 16.927997980543626, + "place-sumav": 18.721294031605428, + "place-alsgr": 16.771582812002904, + "place-bcnwa": 19.19237464084745, + "place-wascm": 17.22125556562177, + "place-cool": 18.501391532201943, + "place-grigg": 16.583127834695382, + "place-tapst": 19.388696609923052, + "place-sthld": 17.50128340118707, + "place-stpul": 18.273809221645593, + "place-harvd": 16.38861786976557, + "place-denrd": 19.61912813730315, + "place-chswk": 17.746099712677964, + "place-kntst": 18.11376231495566, + "place-brico": 16.03199395219419, + "place-engav": 19.781441722217252, + "place-chill": 17.921602630637082, + "place-hwsst": 17.927369452397997, + "place-babck": 15.740305761850795, + "place-clmnl": 19.963616630751414, + "place-sougr": 18.202850127132546, + "place-smary": 17.708215301389885, + "place-amory": 15.468664422273921, + "place-bndhl": 18.884981516692516, + "place-lake": 18.71043492938738, + "place-unsqu": 17.34467722687008, + "place-bucen": 15.084015370859184, + "place-chhil": 18.962828476074726, + "place-boyls": 14.263130797393226, + "place-balsq": 7.2851257705002785, + "place-brkhl": 16.74525021810129, + "place-gover": 14.838292475070588, + "place-mgngl": 7.760541551091626, + "place-bvmnl": 16.212347968489027, + "place-bland": 14.716791591480753, + "place-rsmnl": 17.941920162500995, + "place-haecl": 15.092110456807248, + "place-hymnl": 14.076602726328243, + "place-newto": 20.431979996197217, + "place-buest": 14.932897832905834, + "place-bcnfd": 17.54276276793526, + "place-north": 15.326743606711805, + "place-armnl": 13.939484130801123, + "place-gilmn": 8.440744054099063, + "place-eliot": 22.01397669609481, + "place-spmnl": 15.733577563901815, + "place-waban": 22.86131575412094, + "place-esomr": 9.2101561766782, + "place-longw": 15.474030291224253, + "place-lech": 10.072521526162214, + "place-woodl": 23.688018264584834, + "place-kencl": 14.476896050813252, + "place-fenwy": 15.11785810864551, + "place-river": 23.379099505139994 + }, + "place-nuniv": { + "place-mfa": 0.31939035408216, + "place-lngmd": 0.5878004808170281, + "place-brmnl": 0.799250090098822, + "place-fenwd": 0.952806411805058, + "place-mispk": 1.171806669674103, + "place-rvrwy": 1.32286776599658, + "place-bckhl": 1.5015983910214352, + "place-hsmnl": 1.5899624381114292, + "place-symcl": 0.276514310799928, + "place-prmnl": 0.539165544470293, + "place-coecl": 0.9267693302364189, + "place-mdftf": 6.987666406933508, + "place-newtn": 21.5181069808568, + "place-pktrm": 14.830787339437684, + "place-fbkst": 19.28864931674024, + "place-wrnst": 17.204512291343555, + "place-sumav": 18.997808342405357, + "place-alsgr": 17.048097122802833, + "place-bcnwa": 19.46888895164738, + "place-wascm": 17.4977698764217, + "place-cool": 18.777905843001868, + "place-grigg": 16.859642145495307, + "place-tapst": 19.665210920722977, + "place-sthld": 17.777797711987, + "place-stpul": 18.550323532445518, + "place-harvd": 16.6651321805655, + "place-denrd": 19.89564244810308, + "place-chswk": 18.022614023477892, + "place-kntst": 18.39027662575559, + "place-brico": 16.308508262994117, + "place-engav": 20.057956033017177, + "place-chill": 18.198116941437007, + "place-hwsst": 18.203883763197922, + "place-babck": 16.016820072650724, + "place-clmnl": 20.240130941551342, + "place-sougr": 18.479364437932475, + "place-smary": 17.98472961218981, + "place-amory": 15.74517873307385, + "place-bndhl": 19.161495827492445, + "place-lake": 18.986949240187307, + "place-unsqu": 17.621191537670008, + "place-bucen": 15.360529681659111, + "place-chhil": 19.23934278687465, + "place-boyls": 14.539645108193152, + "place-balsq": 7.561640081300206, + "place-brkhl": 17.021764528901215, + "place-gover": 15.114806785870517, + "place-mgngl": 8.037055861891552, + "place-bvmnl": 16.488862279288952, + "place-bland": 14.993305902280682, + "place-rsmnl": 18.218434473300924, + "place-haecl": 15.368624767607175, + "place-hymnl": 14.353117037128172, + "place-newto": 20.708494306997146, + "place-buest": 15.20941214370576, + "place-bcnfd": 17.819277078735183, + "place-north": 15.603257917511733, + "place-armnl": 14.215998441601052, + "place-gilmn": 8.71725836489899, + "place-eliot": 22.29049100689474, + "place-spmnl": 16.010091874701743, + "place-waban": 23.13783006492087, + "place-esomr": 9.48667048747813, + "place-longw": 15.75054460202418, + "place-lech": 10.349035836962141, + "place-woodl": 23.96453257538476, + "place-kencl": 14.75341036161318, + "place-fenwy": 15.394372419445439, + "place-river": 23.655613815939923 + }, + "place-mfa": { + "place-lngmd": 0.268410126734868, + "place-brmnl": 0.479859736016662, + "place-fenwd": 0.633416057722898, + "place-mispk": 0.8524163155919431, + "place-rvrwy": 1.00347741191442, + "place-bckhl": 1.1822080369392751, + "place-hsmnl": 1.2705720840292694, + "place-nuniv": 0.31939035408216, + "place-symcl": 0.595904664882088, + "place-prmnl": 0.8585558985524531, + "place-coecl": 1.2461596843185792, + "place-mdftf": 7.3070567610156685, + "place-newtn": 21.837497334938963, + "place-pktrm": 15.150177693519845, + "place-fbkst": 19.6080396708224, + "place-wrnst": 17.523902645425714, + "place-sumav": 19.317198696487516, + "place-alsgr": 17.367487476884993, + "place-bcnwa": 19.78827930572954, + "place-wascm": 17.81716023050386, + "place-cool": 19.09729619708403, + "place-grigg": 17.17903249957747, + "place-tapst": 19.98460127480514, + "place-sthld": 18.097188066069158, + "place-stpul": 18.86971388652768, + "place-harvd": 16.98452253464766, + "place-denrd": 20.215032802185238, + "place-chswk": 18.342004377560052, + "place-kntst": 18.70966697983775, + "place-brico": 16.627898617076276, + "place-engav": 20.37734638709934, + "place-chill": 18.51750729551917, + "place-hwsst": 18.523274117280085, + "place-babck": 16.336210426732883, + "place-clmnl": 20.559521295633502, + "place-sougr": 18.798754792014634, + "place-smary": 18.304119966271973, + "place-amory": 16.06456908715601, + "place-bndhl": 19.480886181574604, + "place-lake": 19.306339594269467, + "place-unsqu": 17.940581891752167, + "place-bucen": 15.679920035741272, + "place-chhil": 19.558733140956814, + "place-boyls": 14.859035462275314, + "place-balsq": 7.881030435382367, + "place-brkhl": 17.34115488298338, + "place-gover": 15.434197139952676, + "place-mgngl": 8.356446215973714, + "place-bvmnl": 16.808252633371115, + "place-bland": 15.312696256362841, + "place-rsmnl": 18.537824827383083, + "place-haecl": 15.688015121689336, + "place-hymnl": 14.672507391210331, + "place-newto": 21.027884661079305, + "place-buest": 15.528802497787922, + "place-bcnfd": 18.138667432817346, + "place-north": 15.922648271593893, + "place-armnl": 14.535388795683211, + "place-gilmn": 9.036648718981152, + "place-eliot": 22.6098813609769, + "place-spmnl": 16.329482228783903, + "place-waban": 23.45722041900303, + "place-esomr": 9.806060841560289, + "place-longw": 16.06993495610634, + "place-lech": 10.668426191044302, + "place-woodl": 24.28392292946692, + "place-kencl": 15.07280071569534, + "place-fenwy": 15.713762773527598, + "place-river": 23.975004170022082 + }, + "place-lngmd": { + "place-brmnl": 0.211449609281794, + "place-fenwd": 0.36500593098803, + "place-mispk": 0.584006188857075, + "place-rvrwy": 0.735067285179552, + "place-bckhl": 0.913797910204407, + "place-hsmnl": 1.0021619572944014, + "place-mfa": 0.268410126734868, + "place-nuniv": 0.5878004808170281, + "place-symcl": 0.864314791616956, + "place-prmnl": 1.126966025287321, + "place-coecl": 1.514569811053447, + "place-mdftf": 7.575466887750537, + "place-newtn": 22.10590746167383, + "place-pktrm": 15.418587820254714, + "place-fbkst": 19.876449797557267, + "place-wrnst": 17.792312772160585, + "place-sumav": 19.585608823222383, + "place-alsgr": 17.63589760361986, + "place-bcnwa": 20.05668943246441, + "place-wascm": 18.08557035723873, + "place-cool": 19.3657063238189, + "place-grigg": 17.447442626312338, + "place-tapst": 20.253011401540007, + "place-sthld": 18.36559819280403, + "place-stpul": 19.138124013262548, + "place-harvd": 17.252932661382527, + "place-denrd": 20.483442928920105, + "place-chswk": 18.61041450429492, + "place-kntst": 18.978077106572616, + "place-brico": 16.896308743811144, + "place-engav": 20.645756513834208, + "place-chill": 18.785917422254037, + "place-hwsst": 18.791684244014952, + "place-babck": 16.60462055346775, + "place-clmnl": 20.82793142236837, + "place-sougr": 19.067164918749505, + "place-smary": 18.57253009300684, + "place-amory": 16.33297921389088, + "place-bndhl": 19.749296308309475, + "place-lake": 19.574749721004338, + "place-unsqu": 18.208992018487034, + "place-bucen": 15.94833016247614, + "place-chhil": 19.82714326769168, + "place-boyls": 15.127445589010183, + "place-balsq": 8.149440562117235, + "place-brkhl": 17.609565009718246, + "place-gover": 15.702607266687545, + "place-mgngl": 8.624856342708581, + "place-bvmnl": 17.076662760105982, + "place-bland": 15.58110638309771, + "place-rsmnl": 18.80623495411795, + "place-haecl": 15.956425248424203, + "place-hymnl": 14.9409175179452, + "place-newto": 21.296294787814173, + "place-buest": 15.797212624522789, + "place-bcnfd": 18.407077559552214, + "place-north": 16.191058398328764, + "place-armnl": 14.803798922418078, + "place-gilmn": 9.305058845716019, + "place-eliot": 22.878291487711767, + "place-spmnl": 16.597892355518773, + "place-waban": 23.725630545737896, + "place-esomr": 10.074470968295156, + "place-longw": 16.338345082841208, + "place-lech": 10.936836317779171, + "place-woodl": 24.55233305620179, + "place-kencl": 15.341210842430208, + "place-fenwy": 15.982172900262468, + "place-river": 24.24341429675695 + }, + "place-brmnl": { + "place-fenwd": 0.153556321706236, + "place-mispk": 0.372556579575281, + "place-rvrwy": 0.523617675897758, + "place-bckhl": 0.702348300922613, + "place-hsmnl": 0.7907123480126074, + "place-lngmd": 0.211449609281794, + "place-mfa": 0.479859736016662, + "place-nuniv": 0.799250090098822, + "place-symcl": 1.07576440089875, + "place-prmnl": 1.338415634569115, + "place-coecl": 1.7260194203352408, + "place-mdftf": 7.78691649703233, + "place-newtn": 22.317357070955623, + "place-pktrm": 15.630037429536507, + "place-fbkst": 20.08789940683906, + "place-wrnst": 18.003762381442378, + "place-sumav": 19.797058432504176, + "place-alsgr": 17.847347212901653, + "place-bcnwa": 20.268139041746203, + "place-wascm": 18.297019966520523, + "place-cool": 19.57715593310069, + "place-grigg": 17.65889223559413, + "place-tapst": 20.4644610108218, + "place-sthld": 18.577047802085822, + "place-stpul": 19.34957362254434, + "place-harvd": 17.46438227066432, + "place-denrd": 20.6948925382019, + "place-chswk": 18.821864113576712, + "place-kntst": 19.18952671585441, + "place-brico": 17.107758353092937, + "place-engav": 20.857206123116, + "place-chill": 18.99736703153583, + "place-hwsst": 19.003133853296745, + "place-babck": 16.816070162749543, + "place-clmnl": 21.039381031650162, + "place-sougr": 19.278614528031298, + "place-smary": 18.783979702288633, + "place-amory": 16.544428823172673, + "place-bndhl": 19.960745917591268, + "place-lake": 19.78619933028613, + "place-unsqu": 18.420441627768827, + "place-bucen": 16.159779771757933, + "place-chhil": 20.038592876973475, + "place-boyls": 15.338895198291976, + "place-balsq": 8.360890171399028, + "place-brkhl": 17.82101461900004, + "place-gover": 15.914056875969338, + "place-mgngl": 8.836305951990374, + "place-bvmnl": 17.288112369387775, + "place-bland": 15.792555992379503, + "place-rsmnl": 19.017684563399744, + "place-haecl": 16.167874857705996, + "place-hymnl": 15.152367127226993, + "place-newto": 21.507744397095966, + "place-buest": 16.008662233804582, + "place-bcnfd": 18.618527168834007, + "place-north": 16.402508007610557, + "place-armnl": 15.015248531699871, + "place-gilmn": 9.516508454997812, + "place-eliot": 23.08974109699356, + "place-spmnl": 16.809341964800566, + "place-waban": 23.93708015501969, + "place-esomr": 10.285920577576949, + "place-longw": 16.549794692123, + "place-lech": 11.148285927060964, + "place-woodl": 24.763782665483582, + "place-kencl": 15.552660451712, + "place-fenwy": 16.193622509544262, + "place-river": 24.454863906038742 + }, + "place-fenwd": { + "place-mispk": 0.219000257869045, + "place-rvrwy": 0.370061354191522, + "place-bckhl": 0.548791979216377, + "place-hsmnl": 0.6371560263063714, + "place-brmnl": 0.153556321706236, + "place-lngmd": 0.36500593098803, + "place-mfa": 0.633416057722898, + "place-nuniv": 0.952806411805058, + "place-symcl": 1.229320722604986, + "place-prmnl": 1.491971956275351, + "place-coecl": 1.8795757420414771, + "place-mdftf": 7.9404728187385665, + "place-newtn": 22.47091339266186, + "place-pktrm": 15.783593751242744, + "place-fbkst": 20.241455728545297, + "place-wrnst": 18.15731870314861, + "place-sumav": 19.950614754210413, + "place-alsgr": 18.000903534607893, + "place-bcnwa": 20.421695363452436, + "place-wascm": 18.450576288226756, + "place-cool": 19.730712254806928, + "place-grigg": 17.812448557300367, + "place-tapst": 20.618017332528037, + "place-sthld": 18.730604123792055, + "place-stpul": 19.503129944250578, + "place-harvd": 17.617938592370557, + "place-denrd": 20.84844885990814, + "place-chswk": 18.97542043528295, + "place-kntst": 19.343083037560646, + "place-brico": 17.261314674799173, + "place-engav": 21.010762444822237, + "place-chill": 19.150923353242067, + "place-hwsst": 19.156690175002982, + "place-babck": 16.96962648445578, + "place-clmnl": 21.1929373533564, + "place-sougr": 19.43217084973753, + "place-smary": 18.93753602399487, + "place-amory": 16.697985144878906, + "place-bndhl": 20.1143022392975, + "place-lake": 19.939755651992364, + "place-unsqu": 18.573997949475064, + "place-bucen": 16.31333609346417, + "place-chhil": 20.19214919867971, + "place-boyls": 15.492451519998212, + "place-balsq": 8.514446493105265, + "place-brkhl": 17.974570940706275, + "place-gover": 16.067613197675577, + "place-mgngl": 8.98986227369661, + "place-bvmnl": 17.441668691094012, + "place-bland": 15.94611231408574, + "place-rsmnl": 19.17124088510598, + "place-haecl": 16.321431179412233, + "place-hymnl": 15.30592344893323, + "place-newto": 21.661300718802202, + "place-buest": 16.16221855551082, + "place-bcnfd": 18.772083490540243, + "place-north": 16.55606432931679, + "place-armnl": 15.168804853406108, + "place-gilmn": 9.670064776704049, + "place-eliot": 23.243297418699797, + "place-spmnl": 16.9628982865068, + "place-waban": 24.090636476725926, + "place-esomr": 10.439476899283186, + "place-longw": 16.703351013829238, + "place-lech": 11.301842248767201, + "place-woodl": 24.91733898718982, + "place-kencl": 15.706216773418237, + "place-fenwy": 16.347178831250496, + "place-river": 24.60842022774498 + }, + "place-mispk": { + "place-rvrwy": 0.151061096322477, + "place-bckhl": 0.32979172134733203, + "place-hsmnl": 0.4181557684373264, + "place-fenwd": 0.219000257869045, + "place-brmnl": 0.372556579575281, + "place-lngmd": 0.584006188857075, + "place-mfa": 0.8524163155919431, + "place-nuniv": 1.171806669674103, + "place-symcl": 1.448320980474031, + "place-prmnl": 1.710972214144396, + "place-coecl": 2.098575999910522, + "place-mdftf": 8.159473076607611, + "place-newtn": 22.689913650530904, + "place-pktrm": 16.00259400911179, + "place-fbkst": 20.460455986414342, + "place-wrnst": 18.37631896101766, + "place-sumav": 20.169615012079458, + "place-alsgr": 18.219903792476934, + "place-bcnwa": 20.640695621321484, + "place-wascm": 18.669576546095804, + "place-cool": 19.949712512675973, + "place-grigg": 18.031448815169412, + "place-tapst": 20.837017590397082, + "place-sthld": 18.949604381661104, + "place-stpul": 19.722130202119622, + "place-harvd": 17.8369388502396, + "place-denrd": 21.06744911777718, + "place-chswk": 19.194420693151994, + "place-kntst": 19.56208329542969, + "place-brico": 17.480314932668218, + "place-engav": 21.229762702691282, + "place-chill": 19.369923611111112, + "place-hwsst": 19.375690432872027, + "place-babck": 17.188626742324825, + "place-clmnl": 21.411937611225444, + "place-sougr": 19.65117110760658, + "place-smary": 19.156536281863914, + "place-amory": 16.916985402747954, + "place-bndhl": 20.33330249716655, + "place-lake": 20.158755909861412, + "place-unsqu": 18.79299820734411, + "place-bucen": 16.532336351333214, + "place-chhil": 20.411149456548756, + "place-boyls": 15.711451777867257, + "place-balsq": 8.73344675097431, + "place-brkhl": 18.19357119857532, + "place-gover": 16.286613455544618, + "place-mgngl": 9.208862531565655, + "place-bvmnl": 17.660668948963057, + "place-bland": 16.165112571954786, + "place-rsmnl": 19.390241142975025, + "place-haecl": 16.540431437281278, + "place-hymnl": 15.524923706802275, + "place-newto": 21.880300976671247, + "place-buest": 16.381218813379864, + "place-bcnfd": 18.991083748409288, + "place-north": 16.775064587185838, + "place-armnl": 15.387805111275153, + "place-gilmn": 9.889065034573093, + "place-eliot": 23.46229767656884, + "place-spmnl": 17.181898544375848, + "place-waban": 24.30963673459497, + "place-esomr": 10.65847715715223, + "place-longw": 16.922351271698282, + "place-lech": 11.520842506636246, + "place-woodl": 25.136339245058863, + "place-kencl": 15.925217031287282, + "place-fenwy": 16.566179089119544, + "place-river": 24.827420485614024 + }, + "place-rvrwy": { + "place-bckhl": 0.178730625024855, + "place-hsmnl": 0.2670946721148494, + "place-mispk": 0.151061096322477, + "place-fenwd": 0.370061354191522, + "place-brmnl": 0.523617675897758, + "place-lngmd": 0.735067285179552, + "place-mfa": 1.00347741191442, + "place-nuniv": 1.32286776599658, + "place-symcl": 1.599382076796508, + "place-prmnl": 1.862033310466873, + "place-coecl": 2.249637096232999, + "place-mdftf": 8.310534172930089, + "place-newtn": 22.840974746853384, + "place-pktrm": 16.153655105434265, + "place-fbkst": 20.611517082736817, + "place-wrnst": 18.527380057340135, + "place-sumav": 20.320676108401933, + "place-alsgr": 18.370964888799413, + "place-bcnwa": 20.79175671764396, + "place-wascm": 18.82063764241828, + "place-cool": 20.100773608998452, + "place-grigg": 18.18250991149189, + "place-tapst": 20.98807868671956, + "place-sthld": 19.10066547798358, + "place-stpul": 19.8731912984421, + "place-harvd": 17.987999946562077, + "place-denrd": 21.21851021409966, + "place-chswk": 19.34548178947447, + "place-kntst": 19.713144391752166, + "place-brico": 17.631376028990694, + "place-engav": 21.38082379901376, + "place-chill": 19.52098470743359, + "place-hwsst": 19.526751529194506, + "place-babck": 17.3396878386473, + "place-clmnl": 21.56299870754792, + "place-sougr": 19.802232203929055, + "place-smary": 19.307597378186394, + "place-amory": 17.06804649907043, + "place-bndhl": 20.484363593489025, + "place-lake": 20.309817006183888, + "place-unsqu": 18.944059303666585, + "place-bucen": 16.683397447655693, + "place-chhil": 20.562210552871235, + "place-boyls": 15.862512874189733, + "place-balsq": 8.884507847296787, + "place-brkhl": 18.3446322948978, + "place-gover": 16.437674551867097, + "place-mgngl": 9.359923627888133, + "place-bvmnl": 17.811730045285536, + "place-bland": 16.316173668277262, + "place-rsmnl": 19.5413022392975, + "place-haecl": 16.691492533603757, + "place-hymnl": 15.675984803124752, + "place-newto": 22.031362072993723, + "place-buest": 16.53227990970234, + "place-bcnfd": 19.142144844731767, + "place-north": 16.926125683508314, + "place-armnl": 15.538866207597632, + "place-gilmn": 10.04012613089557, + "place-eliot": 23.613358772891317, + "place-spmnl": 17.332959640698324, + "place-waban": 24.460697830917447, + "place-esomr": 10.80953825347471, + "place-longw": 17.07341236802076, + "place-lech": 11.671903602958722, + "place-woodl": 25.287400341381343, + "place-kencl": 16.07627812760976, + "place-fenwy": 16.71724018544202, + "place-river": 24.9784815819365 + }, + "place-bckhl": { + "place-hsmnl": 0.0883640470899944, + "place-bckhl": 0.1768010214099658, + "place-rvrwy": 0.178730625024855, + "place-mispk": 0.32979172134733203, + "place-fenwd": 0.548791979216377, + "place-brmnl": 0.702348300922613, + "place-lngmd": 0.913797910204407, + "place-mfa": 1.1822080369392751, + "place-nuniv": 1.5015983910214352, + "place-symcl": 1.7781127018213632, + "place-prmnl": 2.040763935491728, + "place-coecl": 2.428367721257854, + "place-mdftf": 8.489264797954943, + "place-newtn": 23.01970537187824, + "place-pktrm": 16.33238573045912, + "place-fbkst": 20.790247707761672, + "place-wrnst": 18.70611068236499, + "place-sumav": 20.499406733426788, + "place-alsgr": 18.54969551382427, + "place-bcnwa": 20.970487342668815, + "place-wascm": 18.999368267443135, + "place-cool": 20.279504234023307, + "place-grigg": 18.361240536516746, + "place-tapst": 21.166809311744416, + "place-sthld": 19.279396103008434, + "place-stpul": 20.051921923466956, + "place-harvd": 18.166730571586932, + "place-denrd": 21.397240839124514, + "place-chswk": 19.524212414499324, + "place-kntst": 19.89187501677702, + "place-brico": 17.81010665401555, + "place-engav": 21.559554424038616, + "place-chill": 19.699715332458446, + "place-hwsst": 19.70548215421936, + "place-babck": 17.518418463672155, + "place-clmnl": 21.741729332572774, + "place-sougr": 19.98096282895391, + "place-smary": 19.48632800321125, + "place-amory": 17.246777124095285, + "place-bndhl": 20.66309421851388, + "place-lake": 20.488547631208743, + "place-unsqu": 19.12278992869144, + "place-bucen": 16.862128072680548, + "place-chhil": 20.74094117789609, + "place-boyls": 16.041243499214588, + "place-balsq": 9.063238472321641, + "place-brkhl": 18.523362919922654, + "place-gover": 16.616405176891952, + "place-mgngl": 9.538654252912988, + "place-bvmnl": 17.99046067031039, + "place-bland": 16.494904293302117, + "place-rsmnl": 19.720032864322356, + "place-haecl": 16.87022315862861, + "place-hymnl": 15.854715428149607, + "place-newto": 22.210092698018578, + "place-buest": 16.711010534727194, + "place-bcnfd": 19.320875469756622, + "place-north": 17.10485630853317, + "place-armnl": 15.717596832622487, + "place-gilmn": 10.218856755920426, + "place-eliot": 23.792089397916172, + "place-spmnl": 17.51169026572318, + "place-waban": 24.6394284559423, + "place-esomr": 10.988268878499564, + "place-longw": 17.252142993045616, + "place-lech": 11.850634227983576, + "place-woodl": 25.466130966406197, + "place-kencl": 16.255008752634616, + "place-fenwy": 16.895970810466874, + "place-river": 25.157212206961354 + }, + "place-hsmnl": { + "place-bckhl": 0.0883640470899944, + "place-rvrwy": 0.2670946721148494, + "place-mispk": 0.4181557684373264, + "place-fenwd": 0.6371560263063714, + "place-brmnl": 0.7907123480126074, + "place-lngmd": 1.0021619572944014, + "place-mfa": 1.2705720840292694, + "place-nuniv": 1.5899624381114292, + "place-symcl": 1.8664767489113572, + "place-prmnl": 2.129127982581722, + "place-coecl": 2.516731768347848, + "place-mdftf": 8.577628845044938, + "place-newtn": 23.10806941896823, + "place-pktrm": 16.420749777549116, + "place-fbkst": 20.87861175485167, + "place-wrnst": 18.794474729454983, + "place-sumav": 20.587770780516784, + "place-alsgr": 18.638059560914265, + "place-bcnwa": 21.058851389758807, + "place-wascm": 19.087732314533127, + "place-cool": 20.3678682811133, + "place-grigg": 18.44960458360674, + "place-tapst": 21.25517335883441, + "place-sthld": 19.367760150098427, + "place-stpul": 20.14028597055695, + "place-harvd": 18.255094618676928, + "place-denrd": 21.48560488621451, + "place-chswk": 19.61257646158932, + "place-kntst": 19.980239063867018, + "place-brico": 17.898470701105545, + "place-engav": 21.64791847112861, + "place-chill": 19.78807937954844, + "place-hwsst": 19.793846201309353, + "place-babck": 17.60678251076215, + "place-clmnl": 21.83009337966277, + "place-sougr": 20.069326876043903, + "place-smary": 19.57469205030124, + "place-amory": 17.335141171185278, + "place-bndhl": 20.751458265603873, + "place-lake": 20.576911678298735, + "place-unsqu": 19.211153975781436, + "place-bucen": 16.95049211977054, + "place-chhil": 20.829305224986083, + "place-boyls": 16.129607546304584, + "place-balsq": 9.151602519411636, + "place-brkhl": 18.611726967012647, + "place-gover": 16.70476922398195, + "place-mgngl": 9.627018300002982, + "place-bvmnl": 18.078824717400384, + "place-bland": 16.58326834039211, + "place-rsmnl": 19.808396911412352, + "place-haecl": 16.958587205718604, + "place-hymnl": 15.943079475239601, + "place-newto": 22.298456745108574, + "place-buest": 16.79937458181719, + "place-bcnfd": 19.409239516846615, + "place-north": 17.19322035562316, + "place-armnl": 15.80596087971248, + "place-gilmn": 10.30722080301042, + "place-eliot": 23.880453445006168, + "place-spmnl": 17.60005431281317, + "place-waban": 24.727792503032298, + "place-esomr": 11.076632925589557, + "place-longw": 17.34050704013561, + "place-lech": 11.938998275073573, + "place-woodl": 25.55449501349619, + "place-kencl": 16.34337279972461, + "place-fenwy": 16.984334857556867, + "place-river": 25.24557625405135 + }, + "place-miltt": { + "place-cenav": 0.312470201523105, + "place-valrd": 0.738503621972679, + "place-capst": 1.057785101258649, + "place-matt": 1.3041930973116989, + "place-butlr": 0.296833968374692, + "place-cedgr": 0.884430273453034, + "place-asmnl": 1.20942534100851 + }, + "place-cenav": { + "place-valrd": 0.426033420449574, + "place-capst": 0.745314899735544, + "place-matt": 0.991722895788594, + "place-miltt": 0.312470201523105, + "place-butlr": 0.609304169897797, + "place-cedgr": 1.1969004749761392, + "place-asmnl": 1.5218955425316152 + }, + "place-valrd": { + "place-capst": 0.31928147928597, + "place-matt": 0.56568947533902, + "place-cenav": 0.426033420449574, + "place-miltt": 0.738503621972679, + "place-butlr": 1.0353375903473712, + "place-cedgr": 1.6229338954257133, + "place-asmnl": 1.9479289629811893 + }, + "place-capst": { + "place-matt": 0.24640799605305, + "place-valrd": 0.31928147928597, + "place-cenav": 0.745314899735544, + "place-miltt": 1.057785101258649, + "place-butlr": 1.3546190696333409, + "place-cedgr": 1.942215374711683, + "place-asmnl": 2.2672104422671593 + }, + "place-matt": { + "place-capst": 0.24640799605305, + "place-valrd": 0.56568947533902, + "place-cenav": 0.991722895788594, + "place-miltt": 1.3041930973116989, + "place-butlr": 1.6010270656863907, + "place-cedgr": 2.188623370764733, + "place-asmnl": 2.5136184383202087 + } +} \ No newline at end of file diff --git a/common/constants/station_distances.ts b/common/constants/station_distances.ts new file mode 100644 index 000000000..0c84c9b8e --- /dev/null +++ b/common/constants/station_distances.ts @@ -0,0 +1,3 @@ +import stationDistancesJson from './station_distances.json'; + +export const station_distances = stationDistancesJson; diff --git a/common/constants/stations.json b/common/constants/stations.json index 51bafd46c..8d26a85a1 100644 --- a/common/constants/stations.json +++ b/common/constants/stations.json @@ -8,12 +8,19 @@ "stations": [ { "stop_name": "Alewife", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-alfcl", "order": 1, "stops": { - "0": ["70061"], - "1": ["70061"] + "0": [ + "70061" + ], + "1": [ + "70061" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -22,12 +29,19 @@ }, { "stop_name": "Davis", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-davis", "order": 2, "stops": { - "0": ["70064"], - "1": ["70063"] + "0": [ + "70064" + ], + "1": [ + "70063" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -35,34 +49,55 @@ }, { "stop_name": "Porter", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-portr", "order": 3, "stops": { - "0": ["70066"], - "1": ["70065"] + "0": [ + "70066" + ], + "1": [ + "70065" + ] }, "accessible": true }, { "stop_name": "Harvard", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-harsq", "order": 4, "stops": { - "0": ["70068"], - "1": ["70067"] + "0": [ + "70068" + ], + "1": [ + "70067" + ] }, "accessible": true }, { "stop_name": "Central", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-cntsq", "order": 5, "stops": { - "0": ["70070"], - "1": ["70069"] + "0": [ + "70070" + ], + "1": [ + "70069" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -70,140 +105,219 @@ { "stop_name": "Kendall/MIT", "short": "Kendall", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-knncl", "order": 6, "stops": { - "0": ["70072"], - "1": ["70071"] + "0": [ + "70072" + ], + "1": [ + "70071" + ] }, "accessible": true }, { "stop_name": "Charles/MGH", "short": "MGH", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-chmnl", "order": 7, "stops": { - "0": ["70074"], - "1": ["70073"] + "0": [ + "70074" + ], + "1": [ + "70073" + ] }, "accessible": true }, { "stop_name": "Park Street", "short": "Park St.", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-pktrm", "order": 8, "stops": { - "0": ["70076"], - "1": ["70075"] + "0": [ + "70076" + ], + "1": [ + "70075" + ] }, "accessible": true }, { "stop_name": "Downtown Crossing", "short": "DTX", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-dwnxg", "order": 9, "stops": { - "0": ["70078"], - "1": ["70077"] + "0": [ + "70078" + ], + "1": [ + "70077" + ] }, "accessible": true }, { "stop_name": "South Station", "short": "S. Station", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-sstat", "order": 10, "stops": { - "0": ["70080"], - "1": ["70079"] + "0": [ + "70080" + ], + "1": [ + "70079" + ] }, "accessible": true }, { "stop_name": "Broadway", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-brdwy", "order": 11, "stops": { - "0": ["70082"], - "1": ["70081"] + "0": [ + "70082" + ], + "1": [ + "70081" + ] }, "accessible": true }, { "stop_name": "Andrew", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-andrw", "order": 12, "stops": { - "0": ["70084"], - "1": ["70083"] + "0": [ + "70084" + ], + "1": [ + "70083" + ] }, "accessible": true }, { "stop_name": "JFK/UMass (Ashmont)", "short": "JFK (A)", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-jfk", "order": 101, "stops": { - "0": ["70086"], - "1": ["70085"] + "0": [ + "70086" + ], + "1": [ + "70085" + ] }, "accessible": true }, { "stop_name": "Savin Hill", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-shmnl", "order": 102, "stops": { - "0": ["70088"], - "1": ["70087"] + "0": [ + "70088" + ], + "1": [ + "70087" + ] }, "accessible": true }, { "stop_name": "Fields Corner", "short": "Fields Cor.", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-fldcr", "order": 103, "stops": { - "0": ["70090"], - "1": ["70089"] + "0": [ + "70090" + ], + "1": [ + "70089" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Shawmut", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-smmnl", "order": 104, "stops": { - "0": ["70092"], - "1": ["70091"] + "0": [ + "70092" + ], + "1": [ + "70091" + ] }, "accessible": true }, { "stop_name": "Ashmont", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-asmnl", "order": 105, "stops": { - "0": ["70094"], - "1": ["70093"] + "0": [ + "70094" + ], + "1": [ + "70093" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -213,36 +327,54 @@ { "stop_name": "JFK/UMass (Braintree)", "short": "JFK (B)", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-jfk", "order": 201, "stops": { - "0": ["70096"], - "1": ["70095"] + "0": [ + "70096" + ], + "1": [ + "70095" + ] }, "accessible": true }, { "stop_name": "North Quincy", "short": "N. Quincy", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-nqncy", "order": 202, "stops": { - "0": ["70098"], - "1": ["70097"] + "0": [ + "70098" + ], + "1": [ + "70097" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Wollaston", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-wlsta", "order": 203, "stops": { - "0": ["70100"], - "1": ["70099"] + "0": [ + "70100" + ], + "1": [ + "70099" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -251,35 +383,53 @@ { "stop_name": "Quincy Center", "short": "Quincy Ctr.", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-qnctr", "order": 204, "stops": { - "0": ["70102"], - "1": ["70101"] + "0": [ + "70102" + ], + "1": [ + "70101" + ] }, "accessible": true }, { "stop_name": "Quincy Adams", "short": "Q. Adams", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-qamnl", "order": 205, "stops": { - "0": ["70104"], - "1": ["70103"] + "0": [ + "70104" + ], + "1": [ + "70103" + ] }, "accessible": true }, { "stop_name": "Braintree", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-brntn", "order": 206, "stops": { - "0": ["70105"], - "1": ["70105"] + "0": [ + "70105" + ], + "1": [ + "70105" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -301,8 +451,12 @@ "station": "place-ogmnl", "order": 1, "stops": { - "0": ["70036"], - "1": ["70036"] + "0": [ + "70036" + ], + "1": [ + "70036" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -316,8 +470,12 @@ "station": "place-mlmnl", "order": 2, "stops": { - "0": ["70035"], - "1": ["70034"] + "0": [ + "70035" + ], + "1": [ + "70034" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -329,8 +487,12 @@ "station": "place-welln", "order": 3, "stops": { - "0": ["70033"], - "1": ["70032"] + "0": [ + "70033" + ], + "1": [ + "70032" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -341,8 +503,12 @@ "station": "place-astao", "order": 4, "stops": { - "0": ["70279"], - "1": ["70278"] + "0": [ + "70279" + ], + "1": [ + "70278" + ] }, "accessible": true }, @@ -353,8 +519,12 @@ "station": "place-sull", "order": 5, "stops": { - "0": ["70031"], - "1": ["70030"] + "0": [ + "70031" + ], + "1": [ + "70030" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -366,8 +536,12 @@ "station": "place-ccmnl", "order": 6, "stops": { - "0": ["70029"], - "1": ["70028"] + "0": [ + "70029" + ], + "1": [ + "70028" + ] }, "accessible": true }, @@ -378,8 +552,12 @@ "station": "place-north", "order": 7, "stops": { - "0": ["70027"], - "1": ["70026"] + "0": [ + "70027" + ], + "1": [ + "70026" + ] }, "accessible": true }, @@ -389,8 +567,12 @@ "station": "place-haecl", "order": 8, "stops": { - "0": ["70025"], - "1": ["70024"] + "0": [ + "70025" + ], + "1": [ + "70024" + ] }, "accessible": true }, @@ -401,8 +583,12 @@ "station": "place-state", "order": 9, "stops": { - "0": ["70023"], - "1": ["70022"] + "0": [ + "70023" + ], + "1": [ + "70022" + ] }, "accessible": true }, @@ -413,8 +599,12 @@ "station": "place-dwnxg", "order": 10, "stops": { - "0": ["70021"], - "1": ["70020"] + "0": [ + "70021" + ], + "1": [ + "70020" + ] }, "accessible": true }, @@ -424,8 +614,12 @@ "station": "place-chncl", "order": 11, "stops": { - "0": ["70019"], - "1": ["70018"] + "0": [ + "70019" + ], + "1": [ + "70018" + ] }, "accessible": true }, @@ -436,8 +630,12 @@ "station": "place-tumnl", "order": 12, "stops": { - "0": ["70017"], - "1": ["70016"] + "0": [ + "70017" + ], + "1": [ + "70016" + ] }, "accessible": true }, @@ -447,8 +645,12 @@ "station": "place-bbsta", "order": 13, "stops": { - "0": ["70015"], - "1": ["70014"] + "0": [ + "70015" + ], + "1": [ + "70014" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -461,8 +663,12 @@ "station": "place-masta", "order": 14, "stops": { - "0": ["70013"], - "1": ["70012"] + "0": [ + "70013" + ], + "1": [ + "70012" + ] }, "accessible": true }, @@ -472,8 +678,12 @@ "station": "place-rugg", "order": 15, "stops": { - "0": ["70011"], - "1": ["70010"] + "0": [ + "70011" + ], + "1": [ + "70010" + ] }, "accessible": true }, @@ -484,8 +694,12 @@ "station": "place-rcmnl", "order": 16, "stops": { - "0": ["70009"], - "1": ["70008"] + "0": [ + "70009" + ], + "1": [ + "70008" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -497,8 +711,12 @@ "station": "place-jaksn", "order": 17, "stops": { - "0": ["70007"], - "1": ["70006"] + "0": [ + "70007" + ], + "1": [ + "70006" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -509,8 +727,12 @@ "station": "place-sbmnl", "order": 18, "stops": { - "0": ["70005"], - "1": ["70004"] + "0": [ + "70005" + ], + "1": [ + "70004" + ] }, "accessible": true }, @@ -521,8 +743,12 @@ "station": "place-grnst", "order": 19, "stops": { - "0": ["70003"], - "1": ["70002"] + "0": [ + "70003" + ], + "1": [ + "70002" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -533,8 +759,12 @@ "station": "place-forhl", "order": 20, "stops": { - "0": ["70001"], - "1": ["70001"] + "0": [ + "70001" + ], + "1": [ + "70001" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -556,8 +786,12 @@ "station": "place-wondl", "order": 1, "stops": { - "0": ["70060"], - "1": ["70059"] + "0": [ + "70060" + ], + "1": [ + "70059" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -571,8 +805,12 @@ "station": "place-rbmnl", "order": 2, "stops": { - "0": ["70058"], - "1": ["70057"] + "0": [ + "70058" + ], + "1": [ + "70057" + ] }, "accessible": true }, @@ -582,8 +820,12 @@ "station": "place-bmmnl", "order": 3, "stops": { - "0": ["70056"], - "1": ["70055"] + "0": [ + "70056" + ], + "1": [ + "70055" + ] }, "accessible": true }, @@ -594,8 +836,12 @@ "station": "place-sdmnl", "order": 4, "stops": { - "0": ["70054"], - "1": ["70053"] + "0": [ + "70054" + ], + "1": [ + "70053" + ] }, "accessible": true }, @@ -606,8 +852,12 @@ "station": "place-orhte", "order": 5, "stops": { - "0": ["70052"], - "1": ["70051"] + "0": [ + "70052" + ], + "1": [ + "70051" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -618,8 +868,12 @@ "station": "place-wimnl", "order": 6, "stops": { - "0": ["70050"], - "1": ["70049"] + "0": [ + "70050" + ], + "1": [ + "70049" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -630,8 +884,12 @@ "station": "place-aport", "order": 7, "stops": { - "0": ["70048"], - "1": ["70047"] + "0": [ + "70048" + ], + "1": [ + "70047" + ] }, "accessible": true }, @@ -641,8 +899,12 @@ "station": "place-mvbcl", "order": 8, "stops": { - "0": ["70046"], - "1": ["70045"] + "0": [ + "70046" + ], + "1": [ + "70045" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -653,8 +915,12 @@ "station": "place-aqucl", "order": 9, "stops": { - "0": ["70044"], - "1": ["70043"] + "0": [ + "70044" + ], + "1": [ + "70043" + ] }, "accessible": true }, @@ -665,8 +931,12 @@ "station": "place-state", "order": 10, "stops": { - "0": ["70042"], - "1": ["70041"] + "0": [ + "70042" + ], + "1": [ + "70041" + ] }, "accessible": true }, @@ -677,8 +947,12 @@ "station": "place-gover", "order": 11, "stops": { - "0": ["70040"], - "1": ["70039"] + "0": [ + "70040" + ], + "1": [ + "70039" + ] }, "accessible": true }, @@ -688,8 +962,12 @@ "station": "place-bomnl", "order": 12, "stops": { - "0": ["70038"], - "1": ["70838"] + "0": [ + "70038" + ], + "1": [ + "70838" + ] }, "accessible": false, "terminus": true @@ -705,13 +983,19 @@ "stations": [ { "stop_name": "Medford/Tufts", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-mdftf", "disabled": false, "order": 1, "stops": { - "0": ["70511"], - "1": ["70512"] + "0": [ + "70511" + ], + "1": [ + "70512" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -719,64 +1003,94 @@ }, { "stop_name": "Ball Square", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-balsq", "disabled": false, "order": 2, "stops": { - "0": ["70509"], - "1": ["70510"] + "0": [ + "70509" + ], + "1": [ + "70510" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Magoun Square", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-mgngl", "disabled": false, "order": 3, "stops": { - "0": ["70507"], - "1": ["70508"] + "0": [ + "70507" + ], + "1": [ + "70508" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Gilman Square", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-gilmn", "disabled": false, "order": 4, "stops": { - "0": ["70505"], - "1": ["70506"] + "0": [ + "70505" + ], + "1": [ + "70506" + ] }, "accessible": true }, { "stop_name": "East Somerville", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-esomr", "disabled": false, "order": 5, "stops": { - "0": ["70513"], - "1": ["70514"] + "0": [ + "70513" + ], + "1": [ + "70514" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Union Square", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-unsqu", "disabled": false, "order": 6, "stops": { - "0": ["70503"], - "1": ["70504"] + "0": [ + "70503" + ], + "1": [ + "70504" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -784,594 +1098,948 @@ }, { "stop_name": "Lechmere", - "branches": ["D", "E"], + "branches": [ + "D", + "E" + ], "station": "place-lech", "order": 7, "stops": { - "0": ["70501", "70209"], - "1": ["70502", "70210"] + "0": [ + "70501", + "70209" + ], + "1": [ + "70502", + "70210" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Science Park", - "branches": ["D", "E"], + "branches": [ + "D", + "E" + ], "station": "place-spmnl", "order": 8, "stops": { - "0": ["70207"], - "1": ["70208"] + "0": [ + "70207" + ], + "1": [ + "70208" + ] }, "accessible": true }, { "stop_name": "North Station", - "branches": ["C", "D", "E"], + "branches": [ + "C", + "D", + "E" + ], "station": "place-north", "order": 9, "stops": { - "0": ["70205"], - "1": ["70206"] + "0": [ + "70205" + ], + "1": [ + "70206" + ] }, "accessible": true }, { "stop_name": "Haymarket", - "branches": ["C", "D", "E"], + "branches": [ + "C", + "D", + "E" + ], "station": "place-haecl", "order": 10, "stops": { - "0": ["70203"], - "1": ["70204"] + "0": [ + "70203" + ], + "1": [ + "70204" + ] }, "accessible": true }, { "stop_name": "Government Center", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-gover", "order": 11, "stops": { - "0": ["70201"], - "1": ["70202"] + "0": [ + "70201" + ], + "1": [ + "70202" + ] }, "accessible": true }, { "stop_name": "Park Street", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-pktrm", "order": 12, "stops": { - "0": ["70200"], - "1": ["70196", "70197", "70198", "70199"] + "0": [ + "70200" + ], + "1": [ + "70196", + "70197", + "70198", + "70199" + ] }, "accessible": true }, { "stop_name": "Boylston", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-boyls", "order": 13, "stops": { - "0": ["70158"], - "1": ["70159"] + "0": [ + "70158" + ], + "1": [ + "70159" + ] }, "accessible": false }, { "stop_name": "Arlington", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-armnl", "order": 14, "stops": { - "0": ["70156"], - "1": ["70157"] + "0": [ + "70156" + ], + "1": [ + "70157" + ] }, "accessible": true }, { "stop_name": "Copley", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-coecl", "order": 15, "stops": { - "0": ["70154"], - "1": ["70155"] + "0": [ + "70154" + ], + "1": [ + "70155" + ] }, "accessible": true }, { "stop_name": "Hynes", - "branches": ["B", "C", "D"], + "branches": [ + "B", + "C", + "D" + ], "station": "place-hymnl", "order": 16, "stops": { - "0": ["70152"], - "1": ["70153"] + "0": [ + "70152" + ], + "1": [ + "70153" + ] }, "accessible": false }, { "stop_name": "Kenmore", - "branches": ["B", "C", "D"], + "branches": [ + "B", + "C", + "D" + ], "station": "place-kencl", "order": 17, "stops": { - "0": ["70150", "71150"], - "1": ["70151", "71151"] + "0": [ + "70150", + "71150" + ], + "1": [ + "70151", + "71151" + ] }, "accessible": true }, { "stop_name": "Blandford Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-bland", "order": 101, "stops": { - "0": ["70148"], - "1": ["70149"] + "0": [ + "70148" + ], + "1": [ + "70149" + ] }, "accessible": false }, { "stop_name": "Boston University East", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-buest", "order": 102, "stops": { - "0": ["70146"], - "1": ["70147"] + "0": [ + "70146" + ], + "1": [ + "70147" + ] }, "accessible": true }, { "stop_name": "Boston University Central", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-bucen", "order": 103, "stops": { - "0": ["70144"], - "1": ["70145"] + "0": [ + "70144" + ], + "1": [ + "70145" + ] }, "accessible": true }, { "stop_name": "Amory Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-amory", "order": 105, "stops": { - "0": ["170140", "70140"], - "1": ["170141", "70141"] + "0": [ + "170140", + "70140" + ], + "1": [ + "170141", + "70141" + ] }, "accessible": true }, { "stop_name": "Babcock Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-babck", "order": 107, "stops": { - "0": ["170136", "70136"], - "1": ["170137", "70137"] + "0": [ + "170136", + "70136" + ], + "1": [ + "170137", + "70137" + ] }, "accessible": true }, { "stop_name": "Packards Corner", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-brico", "order": 108, "stops": { - "0": ["70134"], - "1": ["70135"] + "0": [ + "70134" + ], + "1": [ + "70135" + ] }, "accessible": false }, { "stop_name": "Harvard Avenue", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-harvd", "order": 109, "stops": { - "0": ["70130"], - "1": ["70131"] + "0": [ + "70130" + ], + "1": [ + "70131" + ] }, "accessible": true }, { "stop_name": "Griggs Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-grigg", "order": 110, "stops": { - "0": ["70128"], - "1": ["70129"] + "0": [ + "70128" + ], + "1": [ + "70129" + ] }, "accessible": false }, { "stop_name": "Allston Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-alsgr", "order": 111, "stops": { - "0": ["70126"], - "1": ["70127"] + "0": [ + "70126" + ], + "1": [ + "70127" + ] }, "accessible": false }, { "stop_name": "Warren Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-wrnst", "order": 112, "stops": { - "0": ["70124"], - "1": ["70125"] + "0": [ + "70124" + ], + "1": [ + "70125" + ] }, "accessible": false, "enclosed_bike_parking": true }, { "stop_name": "Washington Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-wascm", "order": 113, "stops": { - "0": ["70120"], - "1": ["70121"] + "0": [ + "70120" + ], + "1": [ + "70121" + ] }, "accessible": true }, { "stop_name": "Sutherland Road", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-sthld", "order": 114, "stops": { - "0": ["70116"], - "1": ["70117"] + "0": [ + "70116" + ], + "1": [ + "70117" + ] }, "accessible": false }, { "stop_name": "Chiswick Road", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-chswk", "order": 115, "stops": { - "0": ["70114"], - "1": ["70115"] + "0": [ + "70114" + ], + "1": [ + "70115" + ] }, "accessible": false }, { "stop_name": "Chestnut Hill Avenue", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-chill", "order": 116, "stops": { - "0": ["70112"], - "1": ["70113"] + "0": [ + "70112" + ], + "1": [ + "70113" + ] }, "accessible": false }, { "stop_name": "South Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-sougr", "order": 117, "stops": { - "0": ["70110"], - "1": ["70111"] + "0": [ + "70110" + ], + "1": [ + "70111" + ] }, "accessible": false }, { "stop_name": "Boston College", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-lake", "order": 118, "stops": { - "0": ["70106"], - "1": ["70107"] + "0": [ + "70106" + ], + "1": [ + "70107" + ] }, "accessible": true, "terminus": true }, { "stop_name": "Saint Marys Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-smary", "order": 201, "stops": { - "0": ["70212"], - "1": ["70211"] + "0": [ + "70212" + ], + "1": [ + "70211" + ] }, "accessible": true }, { "stop_name": "Hawes Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-hwsst", "order": 202, "stops": { - "0": ["70214"], - "1": ["70213"] + "0": [ + "70214" + ], + "1": [ + "70213" + ] }, "accessible": false }, { "stop_name": "Kent Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-kntst", "order": 203, "stops": { - "0": ["70216"], - "1": ["70215"] + "0": [ + "70216" + ], + "1": [ + "70215" + ] }, "accessible": false }, { "stop_name": "Saint Paul Street (C)", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-stpul", "order": 204, "stops": { - "0": ["70218"], - "1": ["70217"] + "0": [ + "70218" + ], + "1": [ + "70217" + ] }, "accessible": false }, { "stop_name": "Coolidge Corner", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-cool", "order": 205, "stops": { - "0": ["70220"], - "1": ["70219"] + "0": [ + "70220" + ], + "1": [ + "70219" + ] }, "accessible": true }, { "stop_name": "Summit Avenue", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-sumav", "order": 206, "stops": { - "0": ["70224"], - "1": ["70223"] + "0": [ + "70224" + ], + "1": [ + "70223" + ] }, "accessible": false, "enclosed_bike_parking": true }, { "stop_name": "Brandon Hall", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-bndhl", "order": 207, "stops": { - "0": ["70226"], - "1": ["70225"] + "0": [ + "70226" + ], + "1": [ + "70225" + ] }, "accessible": false }, { "stop_name": "Fairbanks Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-fbkst", "order": 208, "stops": { - "0": ["70228"], - "1": ["70227"] + "0": [ + "70228" + ], + "1": [ + "70227" + ] }, "accessible": false }, { "stop_name": "Washington Square", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-bcnwa", "order": 209, "stops": { - "0": ["70230"], - "1": ["70229"] + "0": [ + "70230" + ], + "1": [ + "70229" + ] }, "accessible": true }, { "stop_name": "Tappan Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-tapst", "order": 210, "stops": { - "0": ["70232"], - "1": ["70231"] + "0": [ + "70232" + ], + "1": [ + "70231" + ] }, "accessible": false }, { "stop_name": "Dean Road", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-denrd", "order": 211, "stops": { - "0": ["70234"], - "1": ["70233"] + "0": [ + "70234" + ], + "1": [ + "70233" + ] }, "accessible": false }, { "stop_name": "Englewood Avenue", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-engav", "order": 212, "stops": { - "0": ["70236"], - "1": ["70235"] + "0": [ + "70236" + ], + "1": [ + "70235" + ] }, "accessible": false }, { "stop_name": "Cleveland Circle", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-clmnl", "order": 213, "stops": { - "0": ["70238"], - "1": ["70237"] + "0": [ + "70238" + ], + "1": [ + "70237" + ] }, "accessible": true, "terminus": true }, { "stop_name": "Fenway", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-fenwy", "order": 301, "stops": { - "0": ["70186"], - "1": ["70187"] + "0": [ + "70186" + ], + "1": [ + "70187" + ] }, "accessible": true }, { "stop_name": "Longwood", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-longw", "order": 302, "stops": { - "0": ["70182"], - "1": ["70183"] + "0": [ + "70182" + ], + "1": [ + "70183" + ] }, "accessible": true }, { "stop_name": "Brookline Village", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-bvmnl", "order": 303, "stops": { - "0": ["70180"], - "1": ["70181"] + "0": [ + "70180" + ], + "1": [ + "70181" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Brookline Hills", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-brkhl", "order": 304, "stops": { - "0": ["70178"], - "1": ["70179"] + "0": [ + "70178" + ], + "1": [ + "70179" + ] }, "accessible": true }, { "stop_name": "Beaconsfield", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-bcnfd", "order": 305, "stops": { - "0": ["70176"], - "1": ["70177"] + "0": [ + "70176" + ], + "1": [ + "70177" + ] }, "accessible": false }, { "stop_name": "Reservoir", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-rsmnl", "order": 306, "stops": { - "0": ["70174"], - "1": ["70175"] + "0": [ + "70174" + ], + "1": [ + "70175" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Chestnut Hill", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-chhil", "order": 307, "stops": { - "0": ["70172"], - "1": ["70173"] + "0": [ + "70172" + ], + "1": [ + "70173" + ] }, "accessible": false, "enclosed_bike_parking": true }, { "stop_name": "Newton Centre", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-newto", "order": 308, "stops": { - "0": ["70170"], - "1": ["70171"] + "0": [ + "70170" + ], + "1": [ + "70171" + ] }, "accessible": true }, { "stop_name": "Newton Highlands", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-newtn", "order": 309, "stops": { - "0": ["70168"], - "1": ["70169"] + "0": [ + "70168" + ], + "1": [ + "70169" + ] }, "accessible": true }, { "stop_name": "Eliot", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-eliot", "order": 310, "stops": { - "0": ["70166"], - "1": ["70167"] + "0": [ + "70166" + ], + "1": [ + "70167" + ] }, "accessible": false, "enclosed_bike_parking": true }, { "stop_name": "Waban", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-waban", "order": 311, "stops": { - "0": ["70164"], - "1": ["70165"] + "0": [ + "70164" + ], + "1": [ + "70165" + ] }, "accessible": false }, { "stop_name": "Woodland", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-woodl", "order": 312, "stops": { - "0": ["70162"], - "1": ["70163"] + "0": [ + "70162" + ], + "1": [ + "70163" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Riverside", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-river", "order": 313, "stops": { - "0": ["70160"], - "1": ["70161"] + "0": [ + "70160" + ], + "1": [ + "70161" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -1379,126 +2047,192 @@ }, { "stop_name": "Prudential", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-prmnl", "order": 401, "stops": { - "0": ["70240"], - "1": ["70239"] + "0": [ + "70240" + ], + "1": [ + "70239" + ] }, "accessible": true }, { "stop_name": "Symphony", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-symcl", "order": 402, "stops": { - "0": ["70242"], - "1": ["70241"] + "0": [ + "70242" + ], + "1": [ + "70241" + ] }, "accessible": false }, { "stop_name": "Northeastern University", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-nuniv", "order": 403, "stops": { - "0": ["70244"], - "1": ["70243"] + "0": [ + "70244" + ], + "1": [ + "70243" + ] }, "accessible": true }, { "stop_name": "Museum of Fine Arts", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-mfa", "order": 404, "stops": { - "0": ["70246"], - "1": ["70245"] + "0": [ + "70246" + ], + "1": [ + "70245" + ] }, "accessible": true }, { "stop_name": "Longwood Medical Area", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-lngmd", "order": 405, "stops": { - "0": ["70248"], - "1": ["70247"] + "0": [ + "70248" + ], + "1": [ + "70247" + ] }, "accessible": true }, { "stop_name": "Brigham Circle", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-brmnl", "order": 406, "stops": { - "0": ["70250"], - "1": ["70249"] + "0": [ + "70250" + ], + "1": [ + "70249" + ] }, "accessible": true }, { "stop_name": "Fenwood Road", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-fenwd", "order": 407, "stops": { - "0": ["70252"], - "1": ["70251"] + "0": [ + "70252" + ], + "1": [ + "70251" + ] }, "accessible": false }, { "stop_name": "Mission Park", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-mispk", "order": 408, "stops": { - "0": ["70254"], - "1": ["70253"] + "0": [ + "70254" + ], + "1": [ + "70253" + ] }, "accessible": false }, { "stop_name": "Riverway", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-rvrwy", "order": 409, "stops": { - "0": ["70256"], - "1": ["70255"] + "0": [ + "70256" + ], + "1": [ + "70255" + ] }, "accessible": false }, { "stop_name": "Back of the Hill", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-bckhl", "order": 410, "stops": { - "0": ["70258"], - "1": ["70257"] + "0": [ + "70258" + ], + "1": [ + "70257" + ] }, "accessible": false }, { "stop_name": "Heath Street", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-hsmnl", "order": 411, "stops": { - "0": ["70260"], - "1": ["70260"] + "0": [ + "70260" + ], + "1": [ + "70260" + ] }, "accessible": true, "terminus": true } ] } -} +} \ No newline at end of file diff --git a/common/types/charts.ts b/common/types/charts.ts index a97501cb0..0c965410e 100644 --- a/common/types/charts.ts +++ b/common/types/charts.ts @@ -13,6 +13,8 @@ export interface SingleDayDataPoint { benchmark_travel_time_sec?: number; benchmark_headway_time_sec?: number; threshold_flag_1?: string; + speed_mph?: number; + benchmark_speed_mph?: number; } export interface AggregateDataPoint { @@ -57,17 +59,19 @@ export enum MetricFieldKeys { travelTimeSec = 'travel_time_sec', headwayTimeSec = 'headway_time_sec', dwellTimeSec = 'dwell_time_sec', + speedMph = 'speed_mph', } export enum BenchmarkFieldKeys { benchmarkTravelTimeSec = 'benchmark_travel_time_sec', benchmarkHeadwayTimeSec = 'benchmark_headway_time_sec', + benchmarkSpeedMph = 'benchmark_speed_mph', } export type PointField = PointFieldKeys; export type MetricField = MetricFieldKeys; export type BenchmarkField = BenchmarkFieldKeys; -type DataName = 'traveltimes' | 'headways' | 'dwells' | 'traveltimesByHour'; +type DataName = 'traveltimes' | 'headways' | 'dwells' | 'traveltimesByHour' | 'speeds'; export interface LineProps { chartId: string; @@ -90,6 +94,7 @@ export interface AggregateLineProps extends LineProps { suggestedYMax?: number; byTime?: boolean; children?: React.ReactNode; + yUnit: string; } export interface SingleDayLineProps extends LineProps { @@ -97,6 +102,7 @@ export interface SingleDayLineProps extends LineProps { metricField: MetricField; date: string | undefined; benchmarkField?: BenchmarkField; + units: 'Minutes' | 'MPH'; } export interface HeadwayHistogramProps { diff --git a/common/types/dataPoints.ts b/common/types/dataPoints.ts index ced81bc48..410062a6f 100644 --- a/common/types/dataPoints.ts +++ b/common/types/dataPoints.ts @@ -43,6 +43,10 @@ export interface DayDelayTotals { export type Direction = 'northbound' | 'southbound'; +export type Distance = { + [to_stop_id: string]: number; +}; + export interface SlowZone { start: string; end: string; diff --git a/common/utils/stations.ts b/common/utils/stations.ts index 51a541d32..b19aa54dc 100644 --- a/common/utils/stations.ts +++ b/common/utils/stations.ts @@ -1,8 +1,9 @@ import type { BusRoute, Line, LineShort } from '../types/lines'; import { isLineMap, type Station } from '../types/stations'; import type { Location } from '../types/charts'; -import type { Direction } from '../types/dataPoints'; +import type { Direction, Distance } from '../types/dataPoints'; import { stations, rtStations, busStations } from '../constants/stations'; +import { station_distances } from '../constants/station_distances'; export const optionsForField = ( type: 'from' | 'to', @@ -62,8 +63,19 @@ const createParentStationIndex = () => { return index; }; +const createStationDistanceIndex = () => { + const index: Record = {}; + + for (const [key, value] of Object.entries(station_distances)) { + index[key] = value as Distance; + } + + return index; +}; + const stationIndex = createStationIndex(); const parentStationIndex = createParentStationIndex(); +const stationDistanceIndex = createStationDistanceIndex(); export const getStationById = (stationStopId: string) => { return stationIndex[stationStopId]; @@ -73,6 +85,10 @@ export const getParentStationForStopId = (stopId: string) => { return parentStationIndex[stopId]; }; +export const getStationDistance = (fromStationId: string, toStationId: string) => { + return stationDistanceIndex[fromStationId][toStationId]; +}; + export const getStationForInvalidFromSelection = (line: Line, busRoute?: BusRoute): Station => { if (line === 'line-green') return getParentStationForStopId('70202'); // Gov. Center if (line === 'line-red') return getParentStationForStopId('70076'); // Park St. diff --git a/common/utils/widgets.ts b/common/utils/widgets.ts index 2e3e9ddf6..2345784d4 100644 --- a/common/utils/widgets.ts +++ b/common/utils/widgets.ts @@ -1,4 +1,4 @@ -import { TimeWidgetValue } from '../types/basicWidgets'; +import { MPHWidgetValue, TimeWidgetValue } from '../types/basicWidgets'; import type { AggregateDataPoint, SingleDayDataPoint } from '../types/charts'; const getAverage = (data: (number | undefined)[]) => { @@ -38,23 +38,24 @@ const getAggDataPointsOfInterest = (aggData: AggregateDataPoint[]) => { return { average, min, max, median, p10, p90 }; }; -export const getAggDataWidgets = (aggData: AggregateDataPoint[]) => { +export const getAggDataWidgets = (aggData: AggregateDataPoint[], type: 'times' | 'speeds') => { const { average, min, max, median, p10, p90 } = getAggDataPointsOfInterest(aggData); return [ - { text: 'Avg', widgetValue: new TimeWidgetValue(average), type: 'data' }, - { text: 'Median', widgetValue: new TimeWidgetValue(median), type: 'data' }, - { text: '10%', widgetValue: new TimeWidgetValue(p10), type: 'data' }, - { text: '90%', widgetValue: new TimeWidgetValue(p90), type: 'data' }, - { text: 'Min', widgetValue: new TimeWidgetValue(min), type: 'data' }, - { text: 'Max', widgetValue: new TimeWidgetValue(max), type: 'data' }, + { text: 'Avg', widgetValue: getWidget(type, average), type: 'data' }, + { text: 'Median', widgetValue: getWidget(type, median), type: 'data' }, + { text: '10%', widgetValue: getWidget(type, p10), type: 'data' }, + { text: '90%', widgetValue: getWidget(type, p90), type: 'data' }, + { text: 'Min', widgetValue: getWidget(type, min), type: 'data' }, + { text: 'Max', widgetValue: getWidget(type, max), type: 'data' }, ]; }; const getSingleDayNumberArray = ( data: SingleDayDataPoint[], - type: 'traveltimes' | 'dwells' | 'headways' + type: 'traveltimes' | 'dwells' | 'headways' | 'speeds' ) => { if (type === 'traveltimes') return data.map((data) => data.travel_time_sec); + if (type === 'speeds') return data.map((data) => data.speed_mph); if (type === 'dwells') return data.map((data) => data.dwell_time_sec); if (type === 'headways') return data.map((data) => data.headway_time_sec); return []; @@ -62,7 +63,7 @@ const getSingleDayNumberArray = ( const getSingleDayPointsOfInterest = ( data: SingleDayDataPoint[], - type: 'traveltimes' | 'dwells' | 'headways' + type: 'traveltimes' | 'dwells' | 'headways' | 'speeds' ) => { const _data = getSingleDayNumberArray(data, type); const { max, min, median, p10, p90 } = getPeaks(_data); @@ -70,17 +71,25 @@ const getSingleDayPointsOfInterest = ( return { max, min, median, average, p10, p90 }; }; +function getWidget(type: string, value: number | undefined) { + if (type === 'speeds') { + return new MPHWidgetValue(value); + } else { + return new TimeWidgetValue(value); + } +} + export const getSingleDayWidgets = ( data: SingleDayDataPoint[], - type: 'traveltimes' | 'dwells' | 'headways' + type: 'traveltimes' | 'dwells' | 'headways' | 'speeds' ) => { const { max, min, median, average, p10, p90 } = getSingleDayPointsOfInterest(data, type); return [ - { text: 'Avg', widgetValue: new TimeWidgetValue(average), type: 'data' }, - { text: 'Median', widgetValue: new TimeWidgetValue(median), type: 'data' }, - { text: '10%', widgetValue: new TimeWidgetValue(p10), type: 'data' }, - { text: '90%', widgetValue: new TimeWidgetValue(p90), type: 'data' }, - { text: 'Min', widgetValue: new TimeWidgetValue(min), type: 'data' }, - { text: 'Max', widgetValue: new TimeWidgetValue(max), type: 'data' }, + { text: 'Avg', widgetValue: getWidget(type, average), type: 'data' }, + { text: 'Median', widgetValue: getWidget(type, median), type: 'data' }, + { text: '10%', widgetValue: getWidget(type, p10), type: 'data' }, + { text: '90%', widgetValue: getWidget(type, p90), type: 'data' }, + { text: 'Min', widgetValue: getWidget(type, min), type: 'data' }, + { text: 'Max', widgetValue: getWidget(type, max), type: 'data' }, ]; }; diff --git a/modules/dwells/DwellsAggregateWrapper.tsx b/modules/dwells/DwellsAggregateWrapper.tsx index 580d6038e..dd2ad85e6 100644 --- a/modules/dwells/DwellsAggregateWrapper.tsx +++ b/modules/dwells/DwellsAggregateWrapper.tsx @@ -24,7 +24,7 @@ export const DwellsAggregateWrapper: React.FC = ({ if (!dataReady) return ; const dwellsData = query.data.by_date.filter((datapoint) => datapoint.peak === 'all'); if (dwellsData.length < 1) return ; - const widgetObjects = getAggDataWidgets(dwellsData); + const widgetObjects = getAggDataWidgets(dwellsData, 'times'); return ( diff --git a/modules/dwells/charts/DwellsAggregateChart.tsx b/modules/dwells/charts/DwellsAggregateChart.tsx index 7cb58e604..094e4d85c 100644 --- a/modules/dwells/charts/DwellsAggregateChart.tsx +++ b/modules/dwells/charts/DwellsAggregateChart.tsx @@ -39,6 +39,7 @@ export const DwellsAggregateChart: React.FC = ({ location={getLocationDetails(fromStation, toStation)} bothStops={false} fname="dwells" + yUnit="Minutes" /> ); }, [dwells.by_date, startDate, endDate, fromStation, toStation]); diff --git a/modules/dwells/charts/DwellsSingleChart.tsx b/modules/dwells/charts/DwellsSingleChart.tsx index 54d647034..ee628ecbc 100644 --- a/modules/dwells/charts/DwellsSingleChart.tsx +++ b/modules/dwells/charts/DwellsSingleChart.tsx @@ -32,6 +32,7 @@ export const DwellsSingleChart: React.FC = ({ pointField={PointFieldKeys.arrDt} location={getLocationDetails(fromStation, toStation)} fname={'dwells'} + units={'Minutes'} showLegend={false} /> ); diff --git a/modules/headways/HeadwaysAggregateWrapper.tsx b/modules/headways/HeadwaysAggregateWrapper.tsx index bdde6bf07..a92f4b8e4 100644 --- a/modules/headways/HeadwaysAggregateWrapper.tsx +++ b/modules/headways/HeadwaysAggregateWrapper.tsx @@ -24,7 +24,7 @@ export const HeadwaysAggregateWrapper: React.FC = if (!dataReady) return ; const headwaysData = query.data.by_date.filter((datapoint) => datapoint.peak === 'all'); if (headwaysData.length < 1) return ; - const widgetObjects = getAggDataWidgets(headwaysData); + const widgetObjects = getAggDataWidgets(headwaysData, 'times'); return ( diff --git a/modules/headways/charts/HeadwaysAggregateChart.tsx b/modules/headways/charts/HeadwaysAggregateChart.tsx index 9f41c3046..3faf5312e 100644 --- a/modules/headways/charts/HeadwaysAggregateChart.tsx +++ b/modules/headways/charts/HeadwaysAggregateChart.tsx @@ -39,6 +39,7 @@ export const HeadwaysAggregateChart: React.FC = ({ location={getLocationDetails(fromStation, toStation)} bothStops={false} fname="headways" + yUnit="Minutes" /> ); }, [headways.by_date, startDate, endDate, fromStation, toStation]); diff --git a/modules/headways/charts/HeadwaysSingleChart.tsx b/modules/headways/charts/HeadwaysSingleChart.tsx index 091a8f4d9..5c4962e7d 100644 --- a/modules/headways/charts/HeadwaysSingleChart.tsx +++ b/modules/headways/charts/HeadwaysSingleChart.tsx @@ -31,6 +31,7 @@ export const HeadwaysSingleChart: React.FC = ({ benchmarkField={BenchmarkFieldKeys.benchmarkHeadwayTimeSec} location={getLocationDetails(fromStation, toStation)} fname={'headways'} + units={'Minutes'} showLegend={showLegend && anyHeadwayBenchmarks} /> ); diff --git a/modules/landing/utils.ts b/modules/landing/utils.ts index 88c49ea81..ee27e9cab 100644 --- a/modules/landing/utils.ts +++ b/modules/landing/utils.ts @@ -8,6 +8,8 @@ import { import { LINE_COLORS } from '../../common/constants/colors'; import type { RidershipCount, DeliveredTripMetrics } from '../../common/types/dataPoints'; import type { Line } from '../../common/types/lines'; +import type { AggregateDataPoint, SingleDayDataPoint } from '../../common/types/charts'; +import { getStationDistance } from '../../common/utils/stations'; const getDatasetOptions = (line: Line): Partial> => { return { @@ -45,6 +47,54 @@ export const convertToSpeedDataset = (data: { [key in Line]?: DeliveredTripMetri }); }; +function convertSecondsToMph(travelTimeSec: number | undefined, distanceMiles: number | undefined) { + return distanceMiles && travelTimeSec ? (3600 * distanceMiles) / travelTimeSec : undefined; +} + +export const convertToStationSpeedDataset = ( + fromStationId: string, + toStationId: string, + data: SingleDayDataPoint[] +) => { + const intervalDistance = getStationDistance(fromStationId, toStationId); + const ret = + data?.map((datapoint) => { + return { + ...datapoint, + speed_mph: convertSecondsToMph(datapoint.travel_time_sec, intervalDistance), + benchmark_speed_mph: convertSecondsToMph( + datapoint.benchmark_travel_time_sec, + intervalDistance + ), + }; + }) ?? []; + return ret; +}; + +export const convertToAggregateStationSpeedDataset = ( + fromStationId: string, + toStationId: string, + data: AggregateDataPoint[] +) => { + const intervalDistance = getStationDistance(fromStationId, toStationId); + + const ret = data.map((datapoint) => { + return { + ...datapoint, + // could be bad to default to zero here + '25%': convertSecondsToMph(datapoint['25%'], intervalDistance) ?? 0, + '50%': convertSecondsToMph(datapoint['50%'], intervalDistance) ?? 0, + '75%': convertSecondsToMph(datapoint['75%'], intervalDistance) ?? 0, + mean: convertSecondsToMph(datapoint.mean, intervalDistance) ?? 0, + max: convertSecondsToMph(datapoint.max, intervalDistance) ?? 0, + min: convertSecondsToMph(datapoint.min, intervalDistance) ?? 0, + std: convertSecondsToMph(datapoint.std, intervalDistance) ?? 0, + }; + }); + + return ret; +}; + export const convertToServiceDataset = (data: { [key in Line]?: DeliveredTripMetrics[] }) => { return Object.keys(data).map((line: Line) => { const datasetOptions = getDatasetOptions(line); diff --git a/modules/speed/SpeedBetweenStationsAggregateWrapper.tsx b/modules/speed/SpeedBetweenStationsAggregateWrapper.tsx new file mode 100644 index 000000000..43e9108bb --- /dev/null +++ b/modules/speed/SpeedBetweenStationsAggregateWrapper.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import type { UseQueryResult } from '@tanstack/react-query'; +import type { AggregateDataResponse } from '../../common/types/charts'; +import type { Station } from '../../common/types/stations'; +import { ChartPlaceHolder } from '../../common/components/graphics/ChartPlaceHolder'; +import { CarouselGraphDiv } from '../../common/components/charts/CarouselGraphDiv'; +import { NoDataNotice } from '../../common/components/notices/NoDataNotice'; +import { MiniWidgetCreator } from '../../common/components/widgets/MiniWidgetCreator'; +import { getAggDataWidgets } from '../../common/utils/widgets'; +import { convertToAggregateStationSpeedDataset } from '../landing/utils'; +import { SpeedBetweenStationsAggregateChart } from './charts/SpeedBetweenStationsAggregateChart'; + +interface SpeedBetweenStationsAggregateWrapperProps { + query: UseQueryResult; + toStation: Station; + fromStation: Station; +} + +export const SpeedBetweenStationsAggregateWrapper: React.FC< + SpeedBetweenStationsAggregateWrapperProps +> = ({ query, toStation, fromStation }) => { + const dataReady = !query.isError && query.data && toStation && fromStation && query.data; + if (!dataReady) return ; + const traveltimesData = convertToAggregateStationSpeedDataset( + fromStation.station, + toStation.station, + query.data.by_date.filter((datapoint) => datapoint.peak === 'all') + ); + if (traveltimesData.length < 1) return ; + const widgetObjects = getAggDataWidgets(traveltimesData, 'speeds'); + return ( + + + + + ); +}; diff --git a/modules/speed/SpeedBetweenStationsGraphWrapper.tsx b/modules/speed/SpeedBetweenStationsGraphWrapper.tsx new file mode 100644 index 000000000..98991e210 --- /dev/null +++ b/modules/speed/SpeedBetweenStationsGraphWrapper.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import type { UseQueryResult } from '@tanstack/react-query'; +import type { Station } from '../../common/types/stations'; +import { ChartPlaceHolder } from '../../common/components/graphics/ChartPlaceHolder'; +import { CarouselGraphDiv } from '../../common/components/charts/CarouselGraphDiv'; +import type { SingleDayDataPoint } from '../../common/types/charts'; +import { NoDataNotice } from '../../common/components/notices/NoDataNotice'; +import { MiniWidgetCreator } from '../../common/components/widgets/MiniWidgetCreator'; +import { getSingleDayWidgets } from '../../common/utils/widgets'; +import { convertToStationSpeedDataset } from '../landing/utils'; +import { SpeedBetweenStationsSingleChart } from './charts/SpeedBetweenStationsSingleChart'; + +interface SpeedBetweenStationsSingleWrapperProps { + query: UseQueryResult; + toStation: Station; + fromStation: Station; +} + +export const SpeedBetweenStationsSingleWrapper: React.FC< + SpeedBetweenStationsSingleWrapperProps +> = ({ query, toStation, fromStation }) => { + const dataReady = !query.isError && query.data && toStation && fromStation; + if (!dataReady) return ; + if (query.data.length < 1) return ; + + const convertedData = convertToStationSpeedDataset( + fromStation.station, + toStation.station, + query.data + ); + + const widgetObjects = getSingleDayWidgets(convertedData, 'speeds'); + return ( + + + + + ); +}; diff --git a/modules/speed/SpeedGraphWrapper.tsx b/modules/speed/SpeedGraphWrapper.tsx index ca0f5787b..8a83b97ac 100644 --- a/modules/speed/SpeedGraphWrapper.tsx +++ b/modules/speed/SpeedGraphWrapper.tsx @@ -5,7 +5,7 @@ import { WidgetForCarousel } from '../../common/components/widgets/internal/Widg import { MPHWidgetValue } from '../../common/types/basicWidgets'; import type { DeliveredTripMetrics } from '../../common/types/dataPoints'; import { NoDataNotice } from '../../common/components/notices/NoDataNotice'; -import { SpeedGraph } from './SpeedGraph'; +import { SpeedGraph } from './charts/SpeedGraph'; import { getDetailsSpeedWidgetValues } from './utils/utils'; import type { ParamsType } from './constants/speeds'; diff --git a/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx b/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx new file mode 100644 index 000000000..bb3265d54 --- /dev/null +++ b/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx @@ -0,0 +1,59 @@ +import React, { useMemo } from 'react'; +import { AggregateLineChart } from '../../../common/components/charts/AggregateLineChart'; +import { CHART_COLORS } from '../../../common/constants/colors'; +import type { AggregateDataResponse, TravelTimesUnit } from '../../../common/types/charts'; +import { PointFieldKeys } from '../../../common/types/charts'; +import type { Station } from '../../../common/types/stations'; +import { useDelimitatedRoute } from '../../../common/utils/router'; +import { getLocationDetails } from '../../../common/utils/stations'; +import { convertToAggregateStationSpeedDataset } from '../../landing/utils'; + +interface SpeedBetweenStationsAggregateChartProps { + traveltimes: AggregateDataResponse; + toStation: Station; + fromStation: Station; + timeUnit?: TravelTimesUnit; + peakTime?: boolean; +} + +export const SpeedBetweenStationsAggregateChart: React.FC< + SpeedBetweenStationsAggregateChartProps +> = ({ traveltimes, toStation, fromStation, timeUnit, peakTime = true }) => { + const { + query: { startDate, endDate }, + } = useDelimitatedRoute(); + + const chart = useMemo(() => { + const timeUnitByDate = timeUnit === 'by_date'; + + const traveltimesData = timeUnitByDate + ? traveltimes.by_date.filter((datapoint) => datapoint.peak === 'all') + : traveltimes.by_time.filter((datapoint) => datapoint.is_peak_day === peakTime); + + return ( + + ); + }, [timeUnit, traveltimes, startDate, endDate, fromStation, toStation, peakTime]); + + return chart; +}; diff --git a/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx b/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx new file mode 100644 index 000000000..ad159be12 --- /dev/null +++ b/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx @@ -0,0 +1,47 @@ +import { useMemo } from 'react'; +import type { SingleDayDataPoint } from '../../../common/types/charts'; +import { MetricFieldKeys, PointFieldKeys } from '../../../common/types/charts'; +import type { Station } from '../../../common/types/stations'; +import { useDelimitatedRoute } from '../../../common/utils/router'; +import { SingleDayLineChart } from '../../../common/components/charts/SingleDayLineChart'; +import { getLocationDetails } from '../../../common/utils/stations'; + +interface SpeedBetweenStationsSingleChartProps { + traveltimes: SingleDayDataPoint[]; + toStation: Station; + fromStation: Station; + showLegend?: boolean; +} + +export const SpeedBetweenStationsSingleChart: React.FC = ({ + traveltimes, + toStation, + fromStation, + showLegend = true, +}) => { + const { + linePath, + query: { date }, + } = useDelimitatedRoute(); + + const location = getLocationDetails(fromStation, toStation); + + const chart = useMemo(() => { + return ( + + ); + }, [linePath, traveltimes, date, fromStation, toStation, showLegend]); + + return chart; +}; diff --git a/modules/speed/SpeedGraph.tsx b/modules/speed/charts/SpeedGraph.tsx similarity index 87% rename from modules/speed/SpeedGraph.tsx rename to modules/speed/charts/SpeedGraph.tsx index a7d02d84e..2c6212caf 100644 --- a/modules/speed/SpeedGraph.tsx +++ b/modules/speed/charts/SpeedGraph.tsx @@ -5,17 +5,17 @@ import 'chartjs-adapter-date-fns'; import { enUS } from 'date-fns/locale'; import ChartjsPluginWatermark from 'chartjs-plugin-watermark'; -import { useDelimitatedRoute } from '../../common/utils/router'; -import { CHART_COLORS, COLORS, LINE_COLORS } from '../../common/constants/colors'; -import type { DeliveredTripMetrics } from '../../common/types/dataPoints'; -import { drawSimpleTitle } from '../../common/components/charts/Title'; -import { useBreakpoint } from '../../common/hooks/useBreakpoint'; -import { watermarkLayout } from '../../common/constants/charts'; -import { ChartBorder } from '../../common/components/charts/ChartBorder'; -import { ChartDiv } from '../../common/components/charts/ChartDiv'; -import { PEAK_SPEED } from '../../common/constants/baselines'; -import { getShuttlingBlockAnnotations } from '../service/utils/graphUtils'; -import type { ParamsType } from './constants/speeds'; +import { useDelimitatedRoute } from '../../../common/utils/router'; +import { CHART_COLORS, COLORS, LINE_COLORS } from '../../../common/constants/colors'; +import type { DeliveredTripMetrics } from '../../../common/types/dataPoints'; +import { drawSimpleTitle } from '../../../common/components/charts/Title'; +import { useBreakpoint } from '../../../common/hooks/useBreakpoint'; +import { watermarkLayout } from '../../../common/constants/charts'; +import { ChartBorder } from '../../../common/components/charts/ChartBorder'; +import { ChartDiv } from '../../../common/components/charts/ChartDiv'; +import { PEAK_SPEED } from '../../../common/constants/baselines'; +import { getShuttlingBlockAnnotations } from '../../service/utils/graphUtils'; +import type { ParamsType } from '../constants/speeds'; interface SpeedGraphProps { data: DeliveredTripMetrics[]; diff --git a/modules/traveltimes/TravelTimesAggregateWrapper.tsx b/modules/traveltimes/TravelTimesAggregateWrapper.tsx index 7e03329f9..fed4232ec 100644 --- a/modules/traveltimes/TravelTimesAggregateWrapper.tsx +++ b/modules/traveltimes/TravelTimesAggregateWrapper.tsx @@ -24,7 +24,7 @@ export const TravelTimesAggregateWrapper: React.FC; const traveltimesData = query.data.by_date.filter((datapoint) => datapoint.peak === 'all'); if (traveltimesData.length < 1) return ; - const widgetObjects = getAggDataWidgets(traveltimesData); + const widgetObjects = getAggDataWidgets(traveltimesData, 'times'); return ( location={getLocationDetails(fromStation, toStation)} bothStops={true} fname="traveltimes" + yUnit="Minutes" /> ); }, [timeUnit, traveltimes, startDate, endDate, fromStation, toStation, peakTime]); diff --git a/modules/traveltimes/charts/TravelTimesSingleChart.tsx b/modules/traveltimes/charts/TravelTimesSingleChart.tsx index 3b182fe64..4a768d14d 100644 --- a/modules/traveltimes/charts/TravelTimesSingleChart.tsx +++ b/modules/traveltimes/charts/TravelTimesSingleChart.tsx @@ -38,6 +38,7 @@ export const TravelTimesSingleChart: React.FC = ({ pointField={PointFieldKeys.depDt} benchmarkField={BenchmarkFieldKeys.benchmarkTravelTimeSec} bothStops={true} + units="Minutes" location={getLocationDetails(fromStation, toStation)} fname={'traveltimes'} showLegend={showLegend && anyTravelBenchmarks} diff --git a/modules/tripexplorer/SubwayTripGraphs.tsx b/modules/tripexplorer/SubwayTripGraphs.tsx index a272a273d..1f8ae60f6 100644 --- a/modules/tripexplorer/SubwayTripGraphs.tsx +++ b/modules/tripexplorer/SubwayTripGraphs.tsx @@ -11,10 +11,12 @@ import type { Line } from '../../common/types/lines'; import { TravelTimesAggregateWrapper } from '../traveltimes/TravelTimesAggregateWrapper'; import { HeadwaysAggregateWrapper } from '../headways/HeadwaysAggregateWrapper'; import { DwellsAggregateWrapper } from '../dwells/DwellsAggregateWrapper'; -import { TravelTimesSingleWrapper } from '../traveltimes/TravelTimesSingleWrapper'; import { HeadwaysSingleWrapper } from '../headways/HeadwaysSingleWrapper'; import { DwellsSingleWrapper } from '../dwells/DwellsSingleWrapper'; import { HeadwaysHistogramWrapper } from '../headways/charts/HeadwaysHistogramWrapper'; +import { SpeedBetweenStationsSingleWrapper } from '../speed/SpeedBetweenStationsGraphWrapper'; +import { SpeedBetweenStationsAggregateWrapper } from '../speed/SpeedBetweenStationsAggregateWrapper'; +import { TravelTimesSingleWrapper } from '../traveltimes/TravelTimesSingleWrapper'; interface SubwayTripGraphsProps { fromStation: Station; @@ -34,6 +36,9 @@ export const SubwayTripGraphs: React.FC = ({ line, }) => { const [peakTime, setPeakTime] = React.useState<'weekday' | 'weekend'>('weekday'); + const [travelTimeDisplay, setTravelTimeDisplay] = React.useState<'speeds' | 'traveltimes'>( + 'traveltimes' + ); const { traveltimes, headways, dwells } = useTripExplorerQueries( 'subway', @@ -49,18 +54,49 @@ export const SubwayTripGraphs: React.FC = ({ {aggregate ? ( <> - - + {travelTimeDisplay === 'speeds' ? ( + <> + + + + ) : ( + <> + + + + )} +
+ +
= ({ ) : ( <> - - + {travelTimeDisplay === 'speeds' ? ( + <> + + + + ) : ( + <> + + + + )} +
+ +
diff --git a/server/pyproject.toml b/server/pyproject.toml index b06e3c755..a3488fa19 100644 --- a/server/pyproject.toml +++ b/server/pyproject.toml @@ -32,3 +32,10 @@ target-version = ['py311'] [build-system] requires = ["poetry-core>=1.6.0"] build-backend = "poetry.core.masonry.api" + +[tool.pyright] +reportMissingImports = true +reportMissingTypeStubs = false +useLibraryCodeForTypes = false + + diff --git a/server/scripts/update_station_distances.py b/server/scripts/update_station_distances.py new file mode 100644 index 000000000..2836e5016 --- /dev/null +++ b/server/scripts/update_station_distances.py @@ -0,0 +1,200 @@ +from typing import Dict, Set, TypeAlias +import json +import requests + +""" +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "id": 1, + "geometry": null, + "properties": { + "route_id": "Blue", + "direction_id": 0, + "route_pattern_name": "Wonderland - Bowdoin", + "from_stop_id": "70059", + "from_station_id": "place-wondl", + "from_stop_name": "Wonderland", + "to_stop_id": "70057", + "to_station_id": "place-rbmnl", + "to_stop_name": "Revere Beach", + "from_to_meters": 648.07954, + "cumulative_meters": 648.07954, + "from_to_miles": 0.402697956434423, + "cumulative_miles": 0.402697956434423, + "ObjectId": 1 + } + }, + ... +} +""" + +WeightedGraph: TypeAlias = Dict[str, Dict[str, float]] + + +# for the purpose of this, we need all the green to be one line +def transform_to_line(route_from_api: str): + if not route_from_api.startswith("Green"): + return route_from_api + else: + return "Green" + + +def initialize_interstop_data(): + # stop id => distance to other reachable stops on the same route + stop_distances: WeightedGraph = {} + + # station id => set containing all lines the station is on + station_lines: Dict[str, Set[str]] = {} + + # stop id => route of stop + stop_routes: WeightedGraph = {} + + # stop id => direction of stop + stop_directions: Dict[str, int] = {} + + # stop id => station that the stop is on + stop_stations: Dict[str, str] = {} + + stop_distance_response = requests.get( + "https://services1.arcgis.com/ceiitspzDAHrdGO1/arcgis/rest/services/MBTA_Rapid_Transit_Stop_Distances/FeatureServer/0/query?outFields=*&where=1%3D1&f=geojson" + ) + + stop_response_json = stop_distance_response.json() + for feature in stop_response_json["features"]: + distance_details = feature["properties"] + + from_stop_id = distance_details["from_stop_id"] + to_stop_id = distance_details["to_stop_id"] + + from_station_id = distance_details["from_station_id"] + to_station_id = distance_details["to_station_id"] + + # ignore stations we don't have data for in stations.json + # if distance_details["from_station_id"] not in stations_by_id: + # continue + + from_stop_distances = stop_distances.get(from_stop_id, {}) + from_stop_distances[to_stop_id] = distance_details["from_to_miles"] + + stop_distances[from_stop_id] = from_stop_distances + # route pattern name is more detaield than id - e.g. route_id is always Red for all routes + stop_routes[from_stop_id] = distance_details["route_pattern_name"] + stop_stations[from_stop_id] = distance_details["from_station_id"] + + # set this just in case the to station is a terminus + stop_routes[to_stop_id] = distance_details["route_pattern_name"] + stop_stations[to_stop_id] = distance_details["to_station_id"] + + stop_directions[to_stop_id] = distance_details["direction_id"] + stop_directions[from_stop_id] = distance_details["direction_id"] + + from_station_lines = station_lines.get(from_station_id, set()) + to_station_lines = station_lines.get(to_station_id, set()) + transformed_line = transform_to_line(distance_details["route_id"]) + from_station_lines.add(transformed_line) + to_station_lines.add(transformed_line) + + station_lines[from_station_id] = from_station_lines + station_lines[to_station_id] = to_station_lines + + return stop_distances, station_lines, stop_routes, stop_directions, stop_stations + + +# there is probably still a more efficient way to do this. +def enrich_distances(target_stop_id, stop_distances, station_distances, stop_stations, stop_directions, stop_routes): + stop_stack = [] + + # assume each stop starts with one destination + first_dest, first_dist = next(iter(stop_distances[target_stop_id].items())) + stop_stack.append((first_dest, first_dist)) + + current_stop_distances = {} + + target_station = stop_stations[target_stop_id] + target_station_distances = station_distances.get(target_station, dict()) + + while len(stop_stack) > 0: + dest, dist = stop_stack.pop() + destination_station = stop_stations[dest] + + current_stop_distances[dest] = dist + target_station_distances[destination_station] = dist + + # distance is a symmetric relationship, so set the distance here for those routes that have a direction id change + destination_station_distances = station_distances.get(destination_station, dict()) + destination_station_distances[target_station] = dist + + # This should be a terminus + if dest not in stop_distances or stop_distances[dest] is None or len(stop_distances[dest]) == 0: + break + + for child, child_distance in stop_distances[dest].items(): + # if the stops or in the same direction OR on the same route, keep traversing + if stop_directions[child] == stop_directions[dest] or stop_routes[child] == stop_routes[dest]: + stop_stack.append((child, dist + child_distance)) + + station_distances[target_station] = target_station_distances + + return current_stop_distances, station_distances + + +# perform a dfs of the station graph starting from station_id filtered by line +# this will fully connect station_id to all stations on lines +# shared with station id +def connect_stations_graph(station_id, station_distances, station_lines): + stk = [] + seen_stations = set() + seen_stations.add(station_id) + + for dest, dist in station_distances[station_id].items(): + stk.append((dest, dist)) + + while len(stk) > 0: + dest, dist = stk.pop() + + print(f"Traversing from {station_id} to {dest}. Distance: {dist}") + + seen_stations.add(dest) + + station_distances[station_id][dest] = dist + + if dest not in station_distances: + continue + + for second_dest, second_dist in station_distances[dest].items(): + # the station we're going to is unseen and is on one of the lines we started on + # this should help to avoid inter-line cycles + common_lines = station_lines[second_dest].intersection(station_lines[station_id]) + if ( + second_dest not in seen_stations + and len(common_lines) > 0 + and second_dest not in station_distances[station_id] + ): + stk.append((second_dest, second_dist + dist)) + + +def ingest_station_distances(): + # station id => distance to other reachable stations on all routes + stop_distances, station_lines, stop_routes, stop_directions, stop_stations = initialize_interstop_data() + + station_distances: WeightedGraph = {} + # first pass on stops, just to initialliy the stations graph + for stop_id in stop_distances: + stop_distances[stop_id], station_distances = enrich_distances( + stop_id, stop_distances, station_distances, stop_stations, stop_directions, stop_routes + ) + + # second pass to fully connect the stations graph + for station_id in station_distances: + connect_stations_graph(station_id, station_distances, station_lines) + + return station_distances + + +if __name__ == "__main__": + station_distances = ingest_station_distances() + with open("common/constants/station_distances.json", "w") as f: + json.dump(station_distances, f, indent=2) diff --git a/server/scripts/update_stations.py b/server/scripts/update_stations.py index cfc280873..91dde2003 100644 --- a/server/scripts/update_stations.py +++ b/server/scripts/update_stations.py @@ -1,5 +1,4 @@ import json - import requests with open("common/constants/stations.json", "r") as f: