From a4a35751d8a01f5311f3679dda331fe45bf1866a Mon Sep 17 00:00:00 2001 From: Erica Fischer Date: Wed, 21 Feb 2024 18:24:07 -0800 Subject: [PATCH 1/3] Bail out sooner as the tile feature limit approaches --- ...-z0_-O200_--cluster-densest-as-needed.json | 2 +- .../-z0_-O200_--drop-densest-as-needed.json | 2 +- .../-z0_-O200_--drop-fraction-as-needed.json | 2 +- ...z13_-O100_--cluster-densest-as-needed.json | 396 +++++++++--------- tile.cpp | 26 +- 5 files changed, 203 insertions(+), 225 deletions(-) diff --git a/tests/loop/out/-z0_-O200_--cluster-densest-as-needed.json b/tests/loop/out/-z0_-O200_--cluster-densest-as-needed.json index 7893bb77b..f7314c415 100644 --- a/tests/loop/out/-z0_-O200_--cluster-densest-as-needed.json +++ b/tests/loop/out/-z0_-O200_--cluster-densest-as-needed.json @@ -9,7 +9,7 @@ "maxzoom": "0", "minzoom": "0", "name": "tests/loop/out/-z0_-O200_--cluster-densest-as-needed.json.check.mbtiles", -"strategies": "[{\"coalesced_as_needed\":999,\"feature_count_desired\":1000}]", +"strategies": "[{\"coalesced_as_needed\":999,\"feature_count_desired\":401}]", "type": "overlay", "version": "2" }, "features": [ diff --git a/tests/loop/out/-z0_-O200_--drop-densest-as-needed.json b/tests/loop/out/-z0_-O200_--drop-densest-as-needed.json index c13b9e71a..b1de13a61 100644 --- a/tests/loop/out/-z0_-O200_--drop-densest-as-needed.json +++ b/tests/loop/out/-z0_-O200_--drop-densest-as-needed.json @@ -9,7 +9,7 @@ "maxzoom": "0", "minzoom": "0", "name": "tests/loop/out/-z0_-O200_--drop-densest-as-needed.json.check.mbtiles", -"strategies": "[{\"dropped_as_needed\":999,\"feature_count_desired\":1000}]", +"strategies": "[{\"dropped_as_needed\":999,\"feature_count_desired\":401}]", "type": "overlay", "version": "2" }, "features": [ diff --git a/tests/loop/out/-z0_-O200_--drop-fraction-as-needed.json b/tests/loop/out/-z0_-O200_--drop-fraction-as-needed.json index d9447d25e..63f27a31b 100644 --- a/tests/loop/out/-z0_-O200_--drop-fraction-as-needed.json +++ b/tests/loop/out/-z0_-O200_--drop-fraction-as-needed.json @@ -9,7 +9,7 @@ "maxzoom": "0", "minzoom": "0", "name": "tests/loop/out/-z0_-O200_--drop-fraction-as-needed.json.check.mbtiles", -"strategies": "[{\"dropped_as_needed\":999,\"feature_count_desired\":1000}]", +"strategies": "[{\"dropped_as_needed\":999,\"feature_count_desired\":401}]", "type": "overlay", "version": "2" }, "features": [ diff --git a/tests/muni/out/-Z11_-z13_-O100_--cluster-densest-as-needed.json b/tests/muni/out/-Z11_-z13_-O100_--cluster-densest-as-needed.json index 4b9ccc158..3d69aa92a 100644 --- a/tests/muni/out/-Z11_-z13_-O100_--cluster-densest-as-needed.json +++ b/tests/muni/out/-Z11_-z13_-O100_--cluster-densest-as-needed.json @@ -1,15 +1,15 @@ { "type": "FeatureCollection", "properties": { "antimeridian_adjusted_bounds": "-122.538670,37.705764,-12.240000,37.836443", "bounds": "-122.538670,37.705764,-12.240000,37.836443", -"center": "-122.453613,37.770713,13", +"center": "-122.453613,37.805442,13", "description": "tests/muni/out/-Z11_-z13_-O100_--cluster-densest-as-needed.json.check.mbtiles", "format": "pbf", "generator_options": "./tippecanoe -q -a@ -f -o tests/muni/out/-Z11_-z13_-O100_--cluster-densest-as-needed.json.check.mbtiles -Z11 -z13 -O100 --cluster-densest-as-needed tests/muni/muni.json", -"json": "{\"vector_layers\":[{\"id\":\"muni\",\"description\":\"\",\"minzoom\":11,\"maxzoom\":13,\"fields\":{\"clustered\":\"Boolean\",\"name\":\"String\",\"point_count\":\"Number\",\"point_count_abbreviated\":\"String\",\"sqrt_point_count\":\"Number\"}},{\"id\":\"subway\",\"description\":\"\",\"minzoom\":11,\"maxzoom\":13,\"fields\":{\"clustered\":\"Boolean\",\"name\":\"String\",\"point_count\":\"Number\",\"point_count_abbreviated\":\"String\",\"sqrt_point_count\":\"Number\"}}],\"tilestats\":{\"layerCount\":2,\"layers\":[{\"layer\":\"muni\",\"count\":4592,\"geometry\":\"Point\",\"attributeCount\":5,\"attributes\":[{\"attribute\":\"clustered\",\"count\":1,\"type\":\"boolean\",\"values\":[true]},{\"attribute\":\"name\",\"count\":1000,\"type\":\"string\",\"values\":[\" 4th St & Brannan St\",\" Conzelman Rd & Mccullough Rd\",\"100 O'Shaughnessy Blvd\",\"101 Dakota St\",\"1095 CONNECTICUT ST\",\"10th Ave & Ortega St\",\"10th Ave & Pacheco St\",\"10th Ave & Quintara St\",\"1100 Lake Merced Blvd\",\"115 TELEGRAPH Hill Blvd\",\"117 Warren Dr\",\"11th St & Bryant St\",\"11th St & Folsom St\",\"11th St & Harrison St\",\"11th St & Howard St\",\"11th St & Market St\",\"11th St & Mission St\",\"11th St/btw Market & Mission\",\"120 Portola Dr\",\"126 Miraloma Dr\",\"13th St & Gateview Ave\",\"14 Dakota St\",\"14th Avenue & Geary Boulevard\",\"14th Ave & Quintara St\",\"14th Ave & Santiago St\",\"14th Ave & Taraval St\",\"14th Ave & Ulloa St\",\"14th St & Alpine Ter\",\"14th St & Castro St\",\"14th St & Church St\",\"14th St & Mission St\",\"14th St & Noe St\",\"14th St & SANCHEZ ST\",\"14th St & Sanchez St\",\"150 Otis St\",\"15th Ave & Noriega St\",\"15th Ave & Ortega St\",\"15th Ave & Pacheco St\",\"15th Ave & Quintara St\",\"15th Ave & Taraval St\",\"15th Ave & Ulloa St\",\"15th Ave & West Portal Ave\",\"15th St & Mission St\",\"16 th St & South Van Ness\",\"164 Addison St\",\"1650 Geneva Ave\",\"1697 7th Ave\",\"16th Ave & Lawton St\",\"16th Ave & Lomita Ave\",\"16th Ave & Moraga St\",\"16th Ave & Noriega St\",\"16th Ave & Ortega St\",\"16th Ave & Pacheco St\",\"16th Avenue at Lawton Street\",\"16th St & 4th St\",\"16th St & Bryant St\",\"16th St & Church St\",\"16th St & Dolores St\",\"16th St & Folsom St\",\"16th St & Guerrero St\",\"16th St & Harrison St\",\"16th St & Kansas St\",\"16th St & Mission St\",\"16th St & Missouri St\",\"16th St & Potrero Ave\",\"16th St & San Bruno Ave\",\"16th St & Shotwell St\",\"16th St & South Van Ness\",\"16th St & Valencia St\",\"16th St & Vermont St\",\"16th St & Wisconsin St\",\"16th St& Rhode Island St\",\"16th Street & 4th Street\",\"16th Street & Missouri St\",\"16th Street & Rhode Islandi St\",\"16th Street & Wisconsin St\",\"170 Buckingham Way\",\"1701 Geneva Ave\",\"1721 Geneva Ave\",\"1725 Sunnydale Ave\",\"1730 3rd St\",\"1731 3RD ST\",\"1750 Geneva Ave\",\"176 Rhode Island St\",\"1798 Laguna Honda Blvd\",\"17TH ST & KANSAS ST\",\"17th Ave & Quintara St\",\"17th Ave & Rivera St\",\"17th Ave & Santiago St\",\"17th St & Belvedere St\",\"17th St & Castro St\",\"17th St & Clayton St\",\"17th St & Cole St\",\"17th St & De Haro St\",\"17th St & Diamond St\",\"17th St & Kansas St\",\"17th St & Noe St\",\"17th St & Wisconsin St\",\"1800 Sunnydale Ave\",\"18th St & 3rd St\"]},{\"attribute\":\"point_count\",\"count\":33,\"type\":\"number\",\"values\":[10,11,12,13,14,15,16,17,18,19,2,20,21,22,23,24,25,26,27,29,3,30,32,37,38,4,40,46,5,6,7,8,9],\"min\":2,\"max\":46},{\"attribute\":\"point_count_abbreviated\",\"count\":33,\"type\":\"string\",\"values\":[\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"2\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"29\",\"3\",\"30\",\"32\",\"37\",\"38\",\"4\",\"40\",\"46\",\"5\",\"6\",\"7\",\"8\",\"9\"]},{\"attribute\":\"sqrt_point_count\",\"count\":33,\"type\":\"number\",\"values\":[1.410000,1.730000,2.000000,2.240000,2.450000,2.650000,2.830000,3.000000,3.160000,3.320000,3.460000,3.610000,3.740000,3.870000,4.000000,4.120000,4.240000,4.360000,4.470000,4.580000,4.690000,4.800000,4.900000,5.000000,5.100000,5.200000,5.390000,5.480000,5.660000,6.080000,6.160000,6.320000,6.780000],\"min\":1.41,\"max\":6.78}]},{\"layer\":\"subway\",\"count\":19,\"geometry\":\"Point\",\"attributeCount\":5,\"attributes\":[{\"attribute\":\"clustered\",\"count\":1,\"type\":\"boolean\",\"values\":[true]},{\"attribute\":\"name\",\"count\":18,\"type\":\"string\",\"values\":[\"Metro Castro Station/Downtown\",\"Metro Castro Station/Outbound\",\"Metro Church Station/Downtown\",\"Metro Church Station/Outbound\",\"Metro Civic Center Station/Downtn\",\"Metro Civic Center Station/Downtown\",\"Metro Civic Center Station/Outbd\",\"Metro Embarcadero Station\",\"Metro Embarcadero Station/Downtown\",\"Metro Forest Hill Station/Downtown\",\"Metro Montgomery Station/Downtown\",\"Metro Montgomery Station/Outbound\",\"Metro Powell Station/Downtown\",\"Metro Powell Station/Outbound\",\"Metro Van Ness Station\",\"Metro Van Ness Station/Downtown\",\"Metro Van Ness Station/Outbound\",\"Van Ness Station Outbound\"]},{\"attribute\":\"point_count\",\"count\":5,\"type\":\"number\",\"values\":[12,2,3,5,7],\"min\":2,\"max\":12},{\"attribute\":\"point_count_abbreviated\",\"count\":5,\"type\":\"string\",\"values\":[\"12\",\"2\",\"3\",\"5\",\"7\"]},{\"attribute\":\"sqrt_point_count\",\"count\":5,\"type\":\"number\",\"values\":[1.410000,1.730000,2.240000,2.650000,3.460000],\"min\":1.41,\"max\":3.46}]}]}}", +"json": "{\"vector_layers\":[{\"id\":\"muni\",\"description\":\"\",\"minzoom\":11,\"maxzoom\":13,\"fields\":{\"clustered\":\"Boolean\",\"name\":\"String\",\"point_count\":\"Number\",\"point_count_abbreviated\":\"String\",\"sqrt_point_count\":\"Number\"}},{\"id\":\"subway\",\"description\":\"\",\"minzoom\":11,\"maxzoom\":13,\"fields\":{\"clustered\":\"Boolean\",\"name\":\"String\",\"point_count\":\"Number\",\"point_count_abbreviated\":\"String\",\"sqrt_point_count\":\"Number\"}}],\"tilestats\":{\"layerCount\":2,\"layers\":[{\"layer\":\"muni\",\"count\":4592,\"geometry\":\"Point\",\"attributeCount\":5,\"attributes\":[{\"attribute\":\"clustered\",\"count\":1,\"type\":\"boolean\",\"values\":[true]},{\"attribute\":\"name\",\"count\":1000,\"type\":\"string\",\"values\":[\" 4th St & Brannan St\",\" Conzelman Rd & Mccullough Rd\",\"100 O'Shaughnessy Blvd\",\"101 Dakota St\",\"1095 CONNECTICUT ST\",\"10th Ave & Ortega St\",\"10th Ave & Pacheco St\",\"10th Ave & Quintara St\",\"1100 Lake Merced Blvd\",\"115 TELEGRAPH Hill Blvd\",\"117 Warren Dr\",\"11th St & Bryant St\",\"11th St & Folsom St\",\"11th St & Harrison St\",\"11th St & Howard St\",\"11th St & Market St\",\"11th St & Mission St\",\"11th St/btw Market & Mission\",\"120 Portola Dr\",\"126 Miraloma Dr\",\"13th St & Gateview Ave\",\"14 Dakota St\",\"14th Avenue & Geary Boulevard\",\"14th Ave & Quintara St\",\"14th Ave & Santiago St\",\"14th Ave & Taraval St\",\"14th Ave & Ulloa St\",\"14th St & Alpine Ter\",\"14th St & Castro St\",\"14th St & Church St\",\"14th St & Mission St\",\"14th St & Noe St\",\"14th St & SANCHEZ ST\",\"14th St & Sanchez St\",\"150 Otis St\",\"15th Ave & Noriega St\",\"15th Ave & Ortega St\",\"15th Ave & Pacheco St\",\"15th Ave & Quintara St\",\"15th Ave & Taraval St\",\"15th Ave & Ulloa St\",\"15th Ave & West Portal Ave\",\"15th St & Mission St\",\"16 th St & South Van Ness\",\"164 Addison St\",\"1650 Geneva Ave\",\"1697 7th Ave\",\"16th Ave & Lawton St\",\"16th Ave & Lomita Ave\",\"16th Ave & Moraga St\",\"16th Ave & Noriega St\",\"16th Ave & Ortega St\",\"16th Ave & Pacheco St\",\"16th Avenue at Lawton Street\",\"16th St & 4th St\",\"16th St & Bryant St\",\"16th St & Church St\",\"16th St & Dolores St\",\"16th St & Folsom St\",\"16th St & Guerrero St\",\"16th St & Harrison St\",\"16th St & Kansas St\",\"16th St & Mission St\",\"16th St & Missouri St\",\"16th St & Potrero Ave\",\"16th St & San Bruno Ave\",\"16th St & Shotwell St\",\"16th St & South Van Ness\",\"16th St & Valencia St\",\"16th St & Vermont St\",\"16th St & Wisconsin St\",\"16th St& Rhode Island St\",\"16th Street & 4th Street\",\"16th Street & Missouri St\",\"16th Street & Rhode Islandi St\",\"16th Street & Wisconsin St\",\"170 Buckingham Way\",\"1701 Geneva Ave\",\"1721 Geneva Ave\",\"1725 Sunnydale Ave\",\"1730 3rd St\",\"1731 3RD ST\",\"1750 Geneva Ave\",\"176 Rhode Island St\",\"1798 Laguna Honda Blvd\",\"17TH ST & KANSAS ST\",\"17th Ave & Quintara St\",\"17th Ave & Rivera St\",\"17th Ave & Santiago St\",\"17th St & Belvedere St\",\"17th St & Castro St\",\"17th St & Clayton St\",\"17th St & Cole St\",\"17th St & De Haro St\",\"17th St & Diamond St\",\"17th St & Kansas St\",\"17th St & Noe St\",\"17th St & Wisconsin St\",\"1800 Sunnydale Ave\",\"18th St & 3rd St\"]},{\"attribute\":\"point_count\",\"count\":40,\"type\":\"number\",\"values\":[10,11,12,129,13,14,140,147,15,155,16,17,18,19,2,20,203,21,22,23,24,244,25,26,27,28,3,30,32,37,38,4,40,46,5,6,7,8,9,94],\"min\":2,\"max\":244},{\"attribute\":\"point_count_abbreviated\",\"count\":40,\"type\":\"string\",\"values\":[\"10\",\"11\",\"12\",\"129\",\"13\",\"14\",\"140\",\"147\",\"15\",\"155\",\"16\",\"17\",\"18\",\"19\",\"2\",\"20\",\"203\",\"21\",\"22\",\"23\",\"24\",\"244\",\"25\",\"26\",\"27\",\"28\",\"3\",\"30\",\"32\",\"37\",\"38\",\"4\",\"40\",\"46\",\"5\",\"6\",\"7\",\"8\",\"9\",\"94\"]},{\"attribute\":\"sqrt_point_count\",\"count\":40,\"type\":\"number\",\"values\":[1.410000,1.730000,11.360000,11.830000,12.120000,12.450000,14.250000,15.620000,2.000000,2.240000,2.450000,2.650000,2.830000,3.000000,3.160000,3.320000,3.460000,3.610000,3.740000,3.870000,4.000000,4.120000,4.240000,4.360000,4.470000,4.580000,4.690000,4.800000,4.900000,5.000000,5.100000,5.200000,5.290000,5.480000,5.660000,6.080000,6.160000,6.320000,6.780000,9.700000],\"min\":1.41,\"max\":15.62}]},{\"layer\":\"subway\",\"count\":19,\"geometry\":\"Point\",\"attributeCount\":5,\"attributes\":[{\"attribute\":\"clustered\",\"count\":1,\"type\":\"boolean\",\"values\":[true]},{\"attribute\":\"name\",\"count\":18,\"type\":\"string\",\"values\":[\"Metro Castro Station/Downtown\",\"Metro Castro Station/Outbound\",\"Metro Church Station/Downtown\",\"Metro Church Station/Outbound\",\"Metro Civic Center Station/Downtn\",\"Metro Civic Center Station/Downtown\",\"Metro Civic Center Station/Outbd\",\"Metro Embarcadero Station\",\"Metro Embarcadero Station/Downtown\",\"Metro Forest Hill Station/Downtown\",\"Metro Montgomery Station/Downtown\",\"Metro Montgomery Station/Outbound\",\"Metro Powell Station/Downtown\",\"Metro Powell Station/Outbound\",\"Metro Van Ness Station\",\"Metro Van Ness Station/Downtown\",\"Metro Van Ness Station/Outbound\",\"Van Ness Station Outbound\"]},{\"attribute\":\"point_count\",\"count\":7,\"type\":\"number\",\"values\":[12,2,3,4,5,7,8],\"min\":2,\"max\":12},{\"attribute\":\"point_count_abbreviated\",\"count\":7,\"type\":\"string\",\"values\":[\"12\",\"2\",\"3\",\"4\",\"5\",\"7\",\"8\"]},{\"attribute\":\"sqrt_point_count\",\"count\":7,\"type\":\"number\",\"values\":[1.410000,1.730000,2.000000,2.240000,2.650000,2.830000,3.460000],\"min\":1.41,\"max\":3.46}]}]}}", "maxzoom": "13", "minzoom": "11", "name": "tests/muni/out/-Z11_-z13_-O100_--cluster-densest-as-needed.json.check.mbtiles", -"strategies": "[{},{},{},{},{},{},{},{},{},{},{},{\"dropped_by_rate\":4080,\"coalesced_as_needed\":662,\"feature_count_desired\":687},{\"dropped_by_rate\":2974,\"coalesced_as_needed\":1747,\"feature_count_desired\":755},{\"coalesced_as_needed\":4344,\"feature_count_desired\":856}]", +"strategies": "[{},{},{},{},{},{},{},{},{},{},{},{\"dropped_by_rate\":4080,\"coalesced_as_needed\":662,\"feature_count_desired\":201},{\"dropped_by_rate\":2974,\"coalesced_as_needed\":1749,\"feature_count_desired\":201},{\"coalesced_as_needed\":4352,\"feature_count_desired\":201}]", "type": "overlay", "version": "2" }, "features": [ @@ -287,9 +287,9 @@ , { "type": "Feature", "properties": { "name": "1100 Lake Merced Blvd" }, "geometry": { "type": "Point", "coordinates": [ -122.485285, 37.709305 ] } } , -{ "type": "Feature", "properties": { "name": "Cambon Dr & Castelo Ave", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.472732, 37.714788 ] } } +{ "type": "Feature", "properties": { "name": "Cambon Dr & Castelo Ave", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.472324, 37.714754 ] } } , -{ "type": "Feature", "properties": { "name": "Randolph St & Arch St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.466788, 37.712632 ] } } +{ "type": "Feature", "properties": { "name": "Broad St & Arch St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.466767, 37.712293 ] } } , { "type": "Feature", "properties": { "name": "Daly City BART West Station Rd.", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.466123, 37.710646 ] } } , @@ -297,9 +297,9 @@ , { "type": "Feature", "properties": { "name": "Mission St & San Jose Ave", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.459149, 37.706691 ] } } , -{ "type": "Feature", "properties": { "name": "San Jose Ave & Mt Vernon Ave", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.449386, 37.714788 ] } } +{ "type": "Feature", "properties": { "name": "San Jose Ave & Mt Vernon Ave", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.449021, 37.714364 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & Lowell St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.448678, 37.710561 ] } } +{ "type": "Feature", "properties": { "name": "Mission St & Guttenberg St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.449386, 37.710256 ] } } , { "type": "Feature", "properties": { "name": "Alemany Blvd & Geneva Ave", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.438936, 37.715094 ] } } , @@ -351,9 +351,9 @@ , { "type": "Feature", "properties": { "name": "Noriega St & 33rd Ave", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.486401, 37.760537 ] } } , -{ "type": "Feature", "properties": { "name": "22nd Ave & Lincoln Way", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.480307, 37.762624 ] } } +{ "type": "Feature", "properties": { "name": "22nd Ave & Lincoln Way", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.480500, 37.761945 ] } } , -{ "type": "Feature", "properties": { "name": "Noriega St & 25th Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.478654, 37.757840 ] } } +{ "type": "Feature", "properties": { "name": "Judah St & 22nd Ave", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.478225, 37.758247 ] } } , { "type": "Feature", "properties": { "name": "47th Ave & Noriega St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.504253, 37.750104 ] } } , @@ -399,77 +399,75 @@ , { "type": "Feature", "properties": { "name": "Irving St & 9th Ave", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.470114, 37.760181 ] } } , -{ "type": "Feature", "properties": { "name": "9th Ave & Kirkham St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.464814, 37.761148 ] } } +{ "type": "Feature", "properties": { "name": "9th Ave & Kirkham St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.464578, 37.761300 ] } } , -{ "type": "Feature", "properties": { "name": "Judah St & 6th Ave", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.458870, 37.763862 ] } } +{ "type": "Feature", "properties": { "name": "Irving St & 4th Ave", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.459493, 37.762946 ] } } , -{ "type": "Feature", "properties": { "name": "Lawton St & 7th Ave", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.462776, 37.756262 ] } } +{ "type": "Feature", "properties": { "name": "1697 7th Ave", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.460823, 37.755176 ] } } , -{ "type": "Feature", "properties": { "name": "Oakpark Dr & Forest Knolls Dr", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.449493, 37.783045 ] } } +{ "type": "Feature", "properties": { "name": "California St & Spruce St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.448506, 37.785741 ] } } , -{ "type": "Feature", "properties": { "name": "California St & Baker St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.448592, 37.779432 ] } } +{ "type": "Feature", "properties": { "name": "Sutter St & Baker St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.449279, 37.778127 ] } } , -{ "type": "Feature", "properties": { "name": "Hayes St & Cole St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.445438, 37.776651 ] } } +{ "type": "Feature", "properties": { "name": "Masonic Ave & Turk St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.444429, 37.777855 ] } } , -{ "type": "Feature", "properties": { "name": "Divisadero St & Sutter St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.437220, 37.783791 ] } } +{ "type": "Feature", "properties": { "name": "Sutter St & Scott St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.436361, 37.783316 ] } } , -{ "type": "Feature", "properties": { "name": "Eddy St & Pierce St", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.437928, 37.777448 ] } } +{ "type": "Feature", "properties": { "name": "Fillmore St & Eddy St", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.438142, 37.776736 ] } } , -{ "type": "Feature", "properties": { "name": "Mcallister St & Pierce St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.441983, 37.772258 ] } } +{ "type": "Feature", "properties": { "name": "Mcallister St & Fillmore St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.445095, 37.770053 ] } } , -{ "type": "Feature", "properties": { "name": "Carl St & Stanyan St", "clustered": true, "point_count": 20, "sqrt_point_count": 4.47, "point_count_abbreviated": "20" }, "geometry": { "type": "Point", "coordinates": [ -122.447562, 37.766559 ] } } +{ "type": "Feature", "properties": { "name": "Cole St & Carl St", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.446382, 37.766508 ] } } , -{ "type": "Feature", "properties": { "name": "Roosevelt Way & Lower Ter", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.446210, 37.760486 ] } } +{ "type": "Feature", "properties": { "name": "17th St & Cole St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.445931, 37.759723 ] } } , -{ "type": "Feature", "properties": { "name": "210 Corbett Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.441618, 37.761216 ] } } +{ "type": "Feature", "properties": { "name": "Corbett Ave & Graystone Ter", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.439129, 37.763421 ] } } , -{ "type": "Feature", "properties": { "name": "17th St & Diamond St", "clustered": true, "point_count": 21, "sqrt_point_count": 4.58, "point_count_abbreviated": "21" }, "geometry": { "type": "Point", "coordinates": [ -122.436383, 37.762369 ] } } +{ "type": "Feature", "properties": { "name": "Duboce St/Noe St/Duboce Park", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.436383, 37.761708 ] } } , { "type": "Feature", "properties": { "name": "18th St & Castro St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.445223, 37.756652 ] } } , { "type": "Feature", "properties": { "name": "Quintara St & 17th Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.469707, 37.748882 ] } } , -{ "type": "Feature", "properties": { "name": "Taraval St & 17th Ave", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.470908, 37.741179 ] } } +{ "type": "Feature", "properties": { "name": "Taraval St & 17th Ave", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.468977, 37.741077 ] } } , -{ "type": "Feature", "properties": { "name": "West Portal Ave & Ulloa St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.465973, 37.741077 ] } } +{ "type": "Feature", "properties": { "name": "West Portal Ave & 14th Ave", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.466187, 37.741280 ] } } , -{ "type": "Feature", "properties": { "name": "Clarendon Ave & Clarendon Woods S", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.457154, 37.748135 ] } } +{ "type": "Feature", "properties": { "name": "Clarendon Ave & Clarendon Woods S", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.457476, 37.747491 ] } } , -{ "type": "Feature", "properties": { "name": "Portola Dr & San Pablo Ave", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.458506, 37.741094 ] } } +{ "type": "Feature", "properties": { "name": "Portola Dr & San Pablo Ave", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.461016, 37.739448 ] } } , -{ "type": "Feature", "properties": { "name": "Myra Way & Dalewood Way", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.471144, 37.733271 ] } } +{ "type": "Feature", "properties": { "name": "19th Ave & Ocean Ave", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.471316, 37.732660 ] } } , -{ "type": "Feature", "properties": { "name": "Monterey Blvd & San Anselmo Ave", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.473118, 37.724005 ] } } +{ "type": "Feature", "properties": { "name": "Ocean Ave & Aptos Ave", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.473934, 37.722392 ] } } , -{ "type": "Feature", "properties": { "name": "Garfield St & Beverly St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.468333, 37.721170 ] } } +{ "type": "Feature", "properties": { "name": "Ocean Ave & Cerritos Ave", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.464643, 37.726601 ] } } , -{ "type": "Feature", "properties": { "name": "Miraloma Dr & Yerba Buena Ave", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.459450, 37.732338 ] } } +{ "type": "Feature", "properties": { "name": "Monterey Blvd & Saint Elmo WayE", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.459021, 37.730607 ] } } , -{ "type": "Feature", "properties": { "name": "Monterey Blvd & Valdez Ave", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.461252, 37.723699 ] } } +{ "type": "Feature", "properties": { "name": "Ocean Ave & Jules Ave", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.458398, 37.722189 ] } } , -{ "type": "Feature", "properties": { "name": "Ocean Ave & Miramar Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.455029, 37.726941 ] } } +{ "type": "Feature", "properties": { "name": "Plymouth Ave & Grafton Ave", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.451532, 37.740161 ] } } , -{ "type": "Feature", "properties": { "name": "Portola Dr & Woodside Ave", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.446725, 37.748169 ] } } +{ "type": "Feature", "properties": { "name": "925 Corbett Ave", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.446811, 37.746235 ] } } , -{ "type": "Feature", "properties": { "name": "100 O'Shaughnessy Blvd", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.449493, 37.740432 ] } } +{ "type": "Feature", "properties": { "name": "Reposa Way & Myra Way", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.446704, 37.740228 ] } } , -{ "type": "Feature", "properties": { "name": "Teresita Blvd & Bella Vista Way", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.441554, 37.745981 ] } } +{ "type": "Feature", "properties": { "name": "Grand View Ave & 25th St", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.436790, 37.750188 ] } } , -{ "type": "Feature", "properties": { "name": "Diamond St & 24th St", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.435181, 37.748899 ] } } +{ "type": "Feature", "properties": { "name": "Diamond St & 26th St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.435997, 37.745030 ] } } , -{ "type": "Feature", "properties": { "name": "Diamond St & Diamond Heights Blvd", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.435203, 37.739719 ] } } +{ "type": "Feature", "properties": { "name": "Diamond St & 29th St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.437134, 37.738905 ] } } , -{ "type": "Feature", "properties": { "name": "Teresita Blvd & Foerster St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.449214, 37.731642 ] } } +{ "type": "Feature", "properties": { "name": "Monterey Blvd & Ridgewood Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.449279, 37.731268 ] } } , -{ "type": "Feature", "properties": { "name": "PHELAN AVE/CCSF (North Entrance)", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.451210, 37.722392 ] } } +{ "type": "Feature", "properties": { "name": "PHELAN AVE/CCSF (North Entrance)", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.450674, 37.722460 ] } } , -{ "type": "Feature", "properties": { "name": "San Jose Ave & Ocean Ave", "clustered": true, "point_count": 24, "sqrt_point_count": 4.9, "point_count_abbreviated": "24" }, "geometry": { "type": "Point", "coordinates": [ -122.445073, 37.722969 ] } } +{ "type": "Feature", "properties": { "name": "Geneva Ave/Balboa Park BART", "clustered": true, "point_count": 25, "sqrt_point_count": 5, "point_count_abbreviated": "25" }, "geometry": { "type": "Point", "coordinates": [ -122.444558, 37.723580 ] } } , -{ "type": "Feature", "properties": { "name": "Baden St & Circular Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.437027, 37.730675 ] } } +{ "type": "Feature", "properties": { "name": "Diamond St & Chenery St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.437305, 37.729334 ] } } , -{ "type": "Feature", "properties": { "name": "Ocean Ave & Otsego Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.436018, 37.723920 ] } } -, -{ "type": "Feature", "properties": { "name": "Persia Ave & Paris St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.433465, 37.722019 ] } } +{ "type": "Feature", "properties": { "name": "Mission St & Onondaga Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.434838, 37.723665 ] } } , { "type": "Feature", "properties": { "name": "Mcallister St & Fillmore St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.430975, 37.774751 ] } } , @@ -523,17 +521,15 @@ , { "type": "Feature", "properties": { "name": "Graham St & Moraga Ave", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.456231, 37.799035 ] } } , -{ "type": "Feature", "properties": { "name": "Presidio YMCA Center N-MB/SB", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.446833, 37.801002 ] } } -, -{ "type": "Feature", "properties": { "name": "Lombard St & Divisadero St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.443700, 37.797899 ] } } +{ "type": "Feature", "properties": { "name": "Presidio YMCA Center N-MB/SB", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.446554, 37.800866 ] } } , -{ "type": "Feature", "properties": { "name": "Union St & Baker St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.444494, 37.795017 ] } } +{ "type": "Feature", "properties": { "name": "Lombard St & Divisadero St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.444515, 37.796848 ] } } , -{ "type": "Feature", "properties": { "name": "Chestnut St & Pierce St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.435310, 37.800561 ] } } +{ "type": "Feature", "properties": { "name": "Presidio Ave & Jackson St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.442627, 37.796475 ] } } , -{ "type": "Feature", "properties": { "name": "Union St & Pierce St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.437027, 37.793101 ] } } +{ "type": "Feature", "properties": { "name": "Union St & Steiner St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.435246, 37.800086 ] } } , -{ "type": "Feature", "properties": { "name": "California St & Pierce St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.434452, 37.789285 ] } } +{ "type": "Feature", "properties": { "name": "Jackson St & Divisadero St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.435997, 37.791337 ] } } , { "type": "Feature", "properties": { "name": "25th Ave & El Camino Del Mar" }, "geometry": { "type": "Point", "coordinates": [ -122.485135, 37.787539 ] } } , @@ -609,29 +605,29 @@ , { "type": "Feature", "properties": { "name": "1st St & Mission St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.394218, 37.789133 ] } } , -{ "type": "Feature", "properties": { "name": "Sutter St & Buchanan St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.425654, 37.785606 ] } } +{ "type": "Feature", "properties": { "name": "Sutter St & Buchanan St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.425289, 37.785538 ] } } , -{ "type": "Feature", "properties": { "name": "O'Farrell St & Van Ness Ave", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.426963, 37.778483 ] } } +{ "type": "Feature", "properties": { "name": "Van Ness Ave & O'Farrell St", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.427328, 37.778076 ] } } , -{ "type": "Feature", "properties": { "name": "Haight St & Buchanan St", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.422221, 37.778381 ] } } +{ "type": "Feature", "properties": { "name": "Haight St & Buchanan St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.421856, 37.778873 ] } } , -{ "type": "Feature", "properties": { "name": "Geary Blvd & Hyde St", "clustered": true, "point_count": 24, "sqrt_point_count": 4.9, "point_count_abbreviated": "24" }, "geometry": { "type": "Point", "coordinates": [ -122.415204, 37.783859 ] } } +{ "type": "Feature", "properties": { "name": "O'Farrell St & Hyde St", "clustered": true, "point_count": 25, "sqrt_point_count": 5, "point_count_abbreviated": "25" }, "geometry": { "type": "Point", "coordinates": [ -122.414989, 37.783486 ] } } , -{ "type": "Feature", "properties": { "name": "Mcallister St & 7th St", "clustered": true, "point_count": 22, "sqrt_point_count": 4.69, "point_count_abbreviated": "22" }, "geometry": { "type": "Point", "coordinates": [ -122.416792, 37.776939 ] } } +{ "type": "Feature", "properties": { "name": "Market St & 6th St", "clustered": true, "point_count": 22, "sqrt_point_count": 4.69, "point_count_abbreviated": "22" }, "geometry": { "type": "Point", "coordinates": [ -122.416856, 37.776600 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & 8th St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.422478, 37.771342 ] } } +{ "type": "Feature", "properties": { "name": "7th St & Mission St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.424495, 37.770070 ] } } , -{ "type": "Feature", "properties": { "name": "Market St & 15th St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.425697, 37.766169 ] } } +{ "type": "Feature", "properties": { "name": "16th St & Church St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.425117, 37.765711 ] } } , -{ "type": "Feature", "properties": { "name": "18th St & Sanchez St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.426255, 37.759791 ] } } +{ "type": "Feature", "properties": { "name": "Church St & 18th St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.425396, 37.759570 ] } } , -{ "type": "Feature", "properties": { "name": "Valencia St & 20th St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.419152, 37.763557 ] } } +{ "type": "Feature", "properties": { "name": "Valencia St & 22nd St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.418466, 37.764065 ] } } , -{ "type": "Feature", "properties": { "name": "16th St & Shotwell St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.413337, 37.765389 ] } } +{ "type": "Feature", "properties": { "name": "11th St & Bryant St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.414196, 37.763658 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & 20th St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.415462, 37.758349 ] } } +{ "type": "Feature", "properties": { "name": "Mission St & 22nd St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.413509, 37.762149 ] } } , -{ "type": "Feature", "properties": { "name": "Geary Blvd & Powell St", "clustered": true, "point_count": 29, "sqrt_point_count": 5.39, "point_count_abbreviated": "29" }, "geometry": { "type": "Point", "coordinates": [ -122.406063, 37.785012 ] } } +{ "type": "Feature", "properties": { "name": "Powell St & O'Farrell St", "clustered": true, "point_count": 28, "sqrt_point_count": 5.29, "point_count_abbreviated": "28" }, "geometry": { "type": "Point", "coordinates": [ -122.405977, 37.784927 ] } } , { "type": "Feature", "properties": { "name": "3rd St & Folsom St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.404540, 37.777855 ] } } , @@ -655,9 +651,9 @@ , { "type": "Feature", "properties": { "name": "24th St & Sanchez St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.427800, 37.749917 ] } } , -{ "type": "Feature", "properties": { "name": "Noe St & 29th St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.427306, 37.741297 ] } } +{ "type": "Feature", "properties": { "name": "Noe St & 29th St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.426984, 37.741264 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & Cortland Ave", "clustered": true, "point_count": 23, "sqrt_point_count": 4.8, "point_count_abbreviated": "23" }, "geometry": { "type": "Point", "coordinates": [ -122.420783, 37.745505 ] } } +{ "type": "Feature", "properties": { "name": "Cortland Ave & Mission St", "clustered": true, "point_count": 22, "sqrt_point_count": 4.69, "point_count_abbreviated": "22" }, "geometry": { "type": "Point", "coordinates": [ -122.420697, 37.745709 ] } } , { "type": "Feature", "properties": { "name": "Folsom St & 24th St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.413080, 37.749323 ] } } , @@ -745,19 +741,19 @@ , { "type": "Feature", "properties": { "name": "Van Ness Ave & Vallejo St", "clustered": true, "point_count": 23, "sqrt_point_count": 4.8, "point_count_abbreviated": "23" }, "geometry": { "type": "Point", "coordinates": [ -122.421255, 37.795186 ] } } , -{ "type": "Feature", "properties": { "name": "Hyde St & Greenwich St", "clustered": true, "point_count": 21, "sqrt_point_count": 4.58, "point_count_abbreviated": "21" }, "geometry": { "type": "Point", "coordinates": [ -122.414818, 37.801002 ] } } +{ "type": "Feature", "properties": { "name": "Hyde St & Greenwich St", "clustered": true, "point_count": 22, "sqrt_point_count": 4.69, "point_count_abbreviated": "22" }, "geometry": { "type": "Point", "coordinates": [ -122.414689, 37.800866 ] } } , -{ "type": "Feature", "properties": { "name": "Mason St & Vallejo St", "clustered": true, "point_count": 25, "sqrt_point_count": 5, "point_count_abbreviated": "25" }, "geometry": { "type": "Point", "coordinates": [ -122.416577, 37.793389 ] } } +{ "type": "Feature", "properties": { "name": "Mason St & Broadway", "clustered": true, "point_count": 27, "sqrt_point_count": 5.2, "point_count_abbreviated": "27" }, "geometry": { "type": "Point", "coordinates": [ -122.416191, 37.793491 ] } } , -{ "type": "Feature", "properties": { "name": "Pacific Ave & Mason St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.412007, 37.793185 ] } } +{ "type": "Feature", "properties": { "name": "REFERENCE & REFERENCE", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.412114, 37.792405 ] } } , { "type": "Feature", "properties": { "name": "The Embarcadero & Grant St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.407179, 37.807258 ] } } , -{ "type": "Feature", "properties": { "name": "Lombard St & Grant Ave", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.406321, 37.801053 ] } } +{ "type": "Feature", "properties": { "name": "Lombard St & Grant Ave", "clustered": true, "point_count": 20, "sqrt_point_count": 4.47, "point_count_abbreviated": "20" }, "geometry": { "type": "Point", "coordinates": [ -122.405956, 37.801070 ] } } , -{ "type": "Feature", "properties": { "name": "The Embarcadero & Green St", "clustered": true, "point_count": 26, "sqrt_point_count": 5.1, "point_count_abbreviated": "26" }, "geometry": { "type": "Point", "coordinates": [ -122.406363, 37.793881 ] } } +{ "type": "Feature", "properties": { "name": "Sansome St & Vallejo St", "clustered": true, "point_count": 26, "sqrt_point_count": 5.1, "point_count_abbreviated": "26" }, "geometry": { "type": "Point", "coordinates": [ -122.406600, 37.793389 ] } } , -{ "type": "Feature", "properties": { "name": "POST & GRANT", "clustered": true, "point_count": 23, "sqrt_point_count": 4.8, "point_count_abbreviated": "23" }, "geometry": { "type": "Point", "coordinates": [ -122.400784, 37.792541 ] } } +{ "type": "Feature", "properties": { "name": "Washington St & Sansome St", "clustered": true, "point_count": 22, "sqrt_point_count": 4.69, "point_count_abbreviated": "22" }, "geometry": { "type": "Point", "coordinates": [ -122.400570, 37.792728 ] } } , { "type": "Feature", "properties": { "name": "Clay St & Drumm St", "clustered": true, "point_count": 38, "sqrt_point_count": 6.16, "point_count_abbreviated": "38" }, "geometry": { "type": "Point", "coordinates": [ -122.395184, 37.792694 ] } } , @@ -863,9 +859,9 @@ , { "type": "Feature", "properties": { "name": "46th Ave & Santiago St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.504597, 37.742409 ] } } , -{ "type": "Feature", "properties": { "name": "46th Ave & Ulloa St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.504382, 37.738235 ] } } +{ "type": "Feature", "properties": { "name": "46th Ave & Ulloa St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.504178, 37.738599 ] } } , -{ "type": "Feature", "properties": { "name": "Taraval St & 44th Ave", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.499876, 37.741993 ] } } +{ "type": "Feature", "properties": { "name": "Taraval St & 42nd Ave", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.499254, 37.742010 ] } } , { "type": "Feature", "properties": { "name": "Great Hwy & Sloat Blvd", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.505176, 37.735511 ] } } , @@ -903,13 +899,11 @@ , { "type": "Feature", "properties": { "name": "19th Ave & Ulloa St" }, "geometry": { "type": "Point", "coordinates": [ -122.475682, 37.741289 ] } } , -{ "type": "Feature", "properties": { "name": "Sloat Blvd & 39th Ave", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.495070, 37.733831 ] } } -, -{ "type": "Feature", "properties": { "name": "Sunset Blvd & Ocean Ave", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.493664, 37.731396 ] } } +{ "type": "Feature", "properties": { "name": "Sloat Blvd & 39th Ave", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.494973, 37.733687 ] } } , -{ "type": "Feature", "properties": { "name": "Sunset Blvd & Lake Merced Blvd", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.491636, 37.732940 ] } } +{ "type": "Feature", "properties": { "name": "Sunset Blvd & Ocean Ave", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.493600, 37.730658 ] } } , -{ "type": "Feature", "properties": { "name": "Sloat Blvd & Constanso Way" }, "geometry": { "type": "Point", "coordinates": [ -122.489254, 37.734238 ] } } +{ "type": "Feature", "properties": { "name": "Sloat Blvd & 34th Ave", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.490531, 37.734043 ] } } , { "type": "Feature", "properties": { "name": "Sloat Blvd & El Mirasol Pl", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.484062, 37.734340 ] } } , @@ -953,9 +947,9 @@ , { "type": "Feature", "properties": { "name": "902 Point Lobos Ave", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.511474, 37.779051 ] } } , -{ "type": "Feature", "properties": { "name": "Balboa St & La Playa St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.510272, 37.775091 ] } } +{ "type": "Feature", "properties": { "name": "Balboa St & La Playa St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.510133, 37.774183 ] } } , -{ "type": "Feature", "properties": { "name": "Cabrillo St & La Playa St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.509961, 37.772631 ] } } +{ "type": "Feature", "properties": { "name": "La Playa St & Cabrillo St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.509950, 37.772419 ] } } , { "type": "Feature", "properties": { "name": "Point Lobos Ave & 47th Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.505337, 37.780518 ] } } , @@ -997,9 +991,9 @@ , { "type": "Feature", "properties": { "name": "Fulton St & 30th Ave", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.485993, 37.780967 ] } } , -{ "type": "Feature", "properties": { "name": "California St & 22nd Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.484137, 37.781697 ] } } +{ "type": "Feature", "properties": { "name": "California St & 22nd Ave", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.483944, 37.781730 ] } } , -{ "type": "Feature", "properties": { "name": "Clement St & 22nd Ave", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.481852, 37.781188 ] } } +{ "type": "Feature", "properties": { "name": "Clement St & 22nd Ave", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.481873, 37.780891 ] } } , { "type": "Feature", "properties": { "name": "California St & 19th Ave", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.479041, 37.783223 ] } } , @@ -1007,13 +1001,11 @@ , { "type": "Feature", "properties": { "name": "25th Ave & Anza St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.483954, 37.776795 ] } } , -{ "type": "Feature", "properties": { "name": "25th Ave & Cabrillo St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.484223, 37.773174 ] } } +{ "type": "Feature", "properties": { "name": "25th Ave & Cabrillo St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.483815, 37.773115 ] } } , -{ "type": "Feature", "properties": { "name": "Fulton St & 22nd Ave", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.480553, 37.775252 ] } } +{ "type": "Feature", "properties": { "name": "Balboa St & 21st Ave", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.478021, 37.776592 ] } } , -{ "type": "Feature", "properties": { "name": "Balboa St & 19th Ave", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.478000, 37.774980 ] } } -, -{ "type": "Feature", "properties": { "name": "Fulton St & 18th Ave", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.476712, 37.772877 ] } } +{ "type": "Feature", "properties": { "name": "Fulton St & 22nd Ave", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.478064, 37.772818 ] } } , { "type": "Feature", "properties": { "name": "37th Ave & Lincoln Way", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.495166, 37.763938 ] } } , @@ -1113,9 +1105,9 @@ , { "type": "Feature", "properties": { "name": "Junipero Serra Blvd & Brotherhood Way", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.470415, 37.713226 ] } } , -{ "type": "Feature", "properties": { "name": "Randolph St & Arch St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.468269, 37.712361 ] } } +{ "type": "Feature", "properties": { "name": "Randolph St & Arch St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.468076, 37.712361 ] } } , -{ "type": "Feature", "properties": { "name": "Brotherhood Way & Arch ST", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.466456, 37.711724 ] } } +{ "type": "Feature", "properties": { "name": "Arch St & Alemany Blvd", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.466391, 37.711622 ] } } , { "type": "Feature", "properties": { "name": "St Charles Ave & Belle Ave", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.469084, 37.707183 ] } } , @@ -1125,9 +1117,9 @@ , { "type": "Feature", "properties": { "name": "Sagamore St & Capitol Ave", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.457004, 37.715790 ] } } , -{ "type": "Feature", "properties": { "name": "Plymouth Ave & Minerva St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.457025, 37.714398 ] } } +{ "type": "Feature", "properties": { "name": "Plymouth Ave & Minerva St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.456789, 37.714313 ] } } , -{ "type": "Feature", "properties": { "name": "Plymouth Ave & Farallones St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.455845, 37.712386 ] } } +{ "type": "Feature", "properties": { "name": "PLYMOUTH AVE & BROAD ST", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.455802, 37.712081 ] } } , { "type": "Feature", "properties": { "name": "Mission St & San Jose Ave", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.460448, 37.706241 ] } } , @@ -1135,17 +1127,15 @@ , { "type": "Feature", "properties": { "name": "San Jose Ave & Mt Vernon Ave", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.450985, 37.715611 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & Whittier St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.448388, 37.710349 ] } } -, -{ "type": "Feature", "properties": { "name": "Niagra Ave & Alemany Blvd", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.444515, 37.713371 ] } } +{ "type": "Feature", "properties": { "name": "Mission St & Whittier St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.446693, 37.712531 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & Guttenberg St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.449150, 37.710485 ] } } +{ "type": "Feature", "properties": { "name": "Mission St & Mt Vernon Ave", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.444730, 37.712675 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & Oliver St" }, "geometry": { "type": "Point", "coordinates": [ -122.450062, 37.709619 ] } } +{ "type": "Feature", "properties": { "name": "Mission St & Sickles Ave", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.451618, 37.709169 ] } } , -{ "type": "Feature", "properties": { "name": "Alemany Blvd & Geneva Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.441093, 37.716740 ] } } +{ "type": "Feature", "properties": { "name": "Alemany Blvd & Geneva Ave", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.440975, 37.716655 ] } } , -{ "type": "Feature", "properties": { "name": "Geneva Ave & Paris St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.438636, 37.715331 ] } } +{ "type": "Feature", "properties": { "name": "Geneva Ave & Paris St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.438303, 37.715213 ] } } , { "type": "Feature", "properties": { "name": "Naples St & Athens St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.436994, 37.712870 ] } } , @@ -1259,21 +1249,21 @@ , { "type": "Feature", "properties": { "name": "Grand View Ave & Clipper St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.446350, 37.745624 ] } } , -{ "type": "Feature", "properties": { "name": "100 O'Shaughnessy Blvd", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.450019, 37.741874 ] } } +{ "type": "Feature", "properties": { "name": "100 O'Shaughnessy Blvd", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.450126, 37.741416 ] } } , -{ "type": "Feature", "properties": { "name": "555 Myra Way", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.450813, 37.738981 ] } } +{ "type": "Feature", "properties": { "name": "Myra Way & Molimo Dr", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.450813, 37.739075 ] } } , { "type": "Feature", "properties": { "name": "O'Shaughnessy Blvd & Del Vale Ave", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.446800, 37.740237 ] } } , -{ "type": "Feature", "properties": { "name": "Teresita Blvd & El Sereno Ct", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.445728, 37.737369 ] } } +{ "type": "Feature", "properties": { "name": "Teresita Blvd & El Sereno Ct", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.445374, 37.737259 ] } } , -{ "type": "Feature", "properties": { "name": "O'Shaughnessy Blvd & Malta Dr", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.441071, 37.749985 ] } } +{ "type": "Feature", "properties": { "name": "Grand View Ave & 23rd St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.440867, 37.751198 ] } } , { "type": "Feature", "properties": { "name": "Douglass St & 24th St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.440224, 37.748025 ] } } , -{ "type": "Feature", "properties": { "name": "Diamond Heights Blvd & Duncan St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.436233, 37.750740 ] } } +{ "type": "Feature", "properties": { "name": "Diamond Heights Blvd & Duncan St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.435889, 37.750952 ] } } , -{ "type": "Feature", "properties": { "name": "Castro St & Elizabeth St", "clustered": true, "point_count": 20, "sqrt_point_count": 4.47, "point_count_abbreviated": "20" }, "geometry": { "type": "Point", "coordinates": [ -122.434376, 37.749620 ] } } +{ "type": "Feature", "properties": { "name": "24th St & Castro St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.434398, 37.749357 ] } } , { "type": "Feature", "properties": { "name": "Diamond St & Duncan St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.434280, 37.746931 ] } } , @@ -1285,25 +1275,23 @@ , { "type": "Feature", "properties": { "name": "Diamond St & Surrey St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.433261, 37.736453 ] } } , -{ "type": "Feature", "properties": { "name": "Teresita Blvd & Foerster St", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.450856, 37.731285 ] } } +{ "type": "Feature", "properties": { "name": "Teresita Blvd & Foerster St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.450877, 37.731099 ] } } , -{ "type": "Feature", "properties": { "name": "Judson Ave & Gennessee St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.448292, 37.731812 ] } } +{ "type": "Feature", "properties": { "name": "Monterey Blvd & Foerster St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.447348, 37.732770 ] } } , -{ "type": "Feature", "properties": { "name": "900 Teresita Blvd", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.445642, 37.733381 ] } } +{ "type": "Feature", "properties": { "name": "Monterey Blvd & Edna St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.445771, 37.732304 ] } } , -{ "type": "Feature", "properties": { "name": "Monterey Blvd & Edna St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.445331, 37.731489 ] } } +{ "type": "Feature", "properties": { "name": "Monterey Blvd & Detroit St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.451682, 37.724734 ] } } , -{ "type": "Feature", "properties": { "name": "PHELAN AVE/CCSF (North Entrance)", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.452186, 37.723750 ] } } +{ "type": "Feature", "properties": { "name": "OCEAN AVE/CCSF Pedestrian Bridge", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.450824, 37.723029 ] } } , -{ "type": "Feature", "properties": { "name": "Ocean Ave & Howth St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.450953, 37.720958 ] } } +{ "type": "Feature", "properties": { "name": "Grafton Ave & Harold Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.450684, 37.720950 ] } } , -{ "type": "Feature", "properties": { "name": "Ocean Ave & Howth St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.449590, 37.721629 ] } } +{ "type": "Feature", "properties": { "name": "Ocean Ave&I-280 on-ramp NE-NS/SB", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.446232, 37.722010 ] } } , -{ "type": "Feature", "properties": { "name": "Ocean Ave&I-280 on-ramp NE-NS/SB", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.445856, 37.722554 ] } } +{ "type": "Feature", "properties": { "name": "Balboa Park BART/Mezzanine level", "clustered": true, "point_count": 37, "sqrt_point_count": 6.08, "point_count_abbreviated": "37" }, "geometry": { "type": "Point", "coordinates": [ -122.446285, 37.720839 ] } } , -{ "type": "Feature", "properties": { "name": "Geneva Ave/Balboa Park BART", "clustered": true, "point_count": 40, "sqrt_point_count": 6.32, "point_count_abbreviated": "40" }, "geometry": { "type": "Point", "coordinates": [ -122.446414, 37.720890 ] } } -, -{ "type": "Feature", "properties": { "name": "Geneva Ave at Cayuga Ave", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.442166, 37.726355 ] } } +{ "type": "Feature", "properties": { "name": "Geneva Ave & Cayuga Ave", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.441833, 37.727840 ] } } , { "type": "Feature", "properties": { "name": "Monterey Blvd & Baden St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.439966, 37.730055 ] } } , @@ -1311,9 +1299,9 @@ , { "type": "Feature", "properties": { "name": "Diamond St & Chenery St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.433894, 37.733466 ] } } , -{ "type": "Feature", "properties": { "name": "Silver Ave & Alemany Blvd", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.440352, 37.726822 ] } } +{ "type": "Feature", "properties": { "name": "Silver Ave & Alemany Blvd", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.440438, 37.726508 ] } } , -{ "type": "Feature", "properties": { "name": "Ocean Ave & Otsego Ave", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.440116, 37.723462 ] } } +{ "type": "Feature", "properties": { "name": "Ocean Ave & Otsego Ave", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.439816, 37.723487 ] } } , { "type": "Feature", "properties": { "name": "Cayuga Ave & Onondaga Ave", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.438893, 37.720279 ] } } , @@ -1329,13 +1317,13 @@ , { "type": "Feature", "properties": { "name": "46 Addison St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.431093, 37.737191 ] } } , -{ "type": "Feature", "properties": { "name": "Bosworth St & Rotteck St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.431308, 37.732524 ] } } +{ "type": "Feature", "properties": { "name": "Bosworth St & Rotteck St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.431319, 37.731896 ] } } , -{ "type": "Feature", "properties": { "name": "Lyell St & Alemany Blvd", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.431297, 37.729054 ] } } +{ "type": "Feature", "properties": { "name": "Silver Ave & Mission St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.431287, 37.728731 ] } } , -{ "type": "Feature", "properties": { "name": "Brazil Ave & Madrid St" }, "geometry": { "type": "Point", "coordinates": [ -122.431512, 37.723139 ] } } +{ "type": "Feature", "properties": { "name": "Brazil Ave & Madrid St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.431426, 37.721993 ] } } , -{ "type": "Feature", "properties": { "name": "Persia Ave & Naples St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.431211, 37.720865 ] } } +{ "type": "Feature", "properties": { "name": "Persia Ave & Naples St" }, "geometry": { "type": "Point", "coordinates": [ -122.431072, 37.720882 ] } } , { "type": "Feature", "properties": { "name": "19th Ave & Junipero Serra Blvd" }, "geometry": { "type": "Point", "coordinates": [ -122.473183, 37.718047 ] } } , @@ -1403,9 +1391,9 @@ , { "type": "Feature", "properties": { "name": "Judah St & Funston Ave", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.468473, 37.767679 ] } } , -{ "type": "Feature", "properties": { "name": "Lincoln Way & 11th Ave", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.466938, 37.765210 ] } } +{ "type": "Feature", "properties": { "name": "Lincoln Way & 11th Ave", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.466745, 37.764888 ] } } , -{ "type": "Feature", "properties": { "name": "Irving St & 9th Ave", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.469417, 37.761852 ] } } +{ "type": "Feature", "properties": { "name": "Judah St & 9th Ave", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.470479, 37.761122 ] } } , { "type": "Feature", "properties": { "name": "Judah St & Funston Ave", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.472721, 37.758315 ] } } , @@ -1435,53 +1423,53 @@ , { "type": "Feature", "properties": { "name": "Sacramento St & Walnut St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.446275, 37.786360 ] } } , -{ "type": "Feature", "properties": { "name": "Sutter St & Baker St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.445889, 37.782918 ] } } +{ "type": "Feature", "properties": { "name": "Sutter St & Baker St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.445599, 37.782926 ] } } , -{ "type": "Feature", "properties": { "name": "Geary Blvd & Baker St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.450556, 37.778949 ] } } +{ "type": "Feature", "properties": { "name": "Turk St & Parker Ave", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.451510, 37.778059 ] } } , -{ "type": "Feature", "properties": { "name": "Turk St & Roselyn Ter", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.451586, 37.774904 ] } } +{ "type": "Feature", "properties": { "name": "Fulton St & Clayton St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.451875, 37.774149 ] } } , -{ "type": "Feature", "properties": { "name": "Hayes St & Cole St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.447712, 37.776905 ] } } +{ "type": "Feature", "properties": { "name": "Hayes St & Clayton St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.447155, 37.776922 ] } } , -{ "type": "Feature", "properties": { "name": "Fulton St & Masonic Ave", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.445266, 37.776592 ] } } +{ "type": "Feature", "properties": { "name": "McAllister S t& Divisadero St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.445213, 37.776252 ] } } , -{ "type": "Feature", "properties": { "name": "Masonic Ave & Hayes St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.445019, 37.773666 ] } } +{ "type": "Feature", "properties": { "name": "Hayes St & Masonic Ave", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.444472, 37.773522 ] } } , -{ "type": "Feature", "properties": { "name": "California St & Divisadero St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.440052, 37.786284 ] } } +{ "type": "Feature", "properties": { "name": "California St & Divisadero St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.439687, 37.786123 ] } } , -{ "type": "Feature", "properties": { "name": "Sutter St & Scott St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.439376, 37.783062 ] } } +{ "type": "Feature", "properties": { "name": "Geary Blvd & Scott St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.439440, 37.782638 ] } } , -{ "type": "Feature", "properties": { "name": "Geary Blvd & Scott St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.437649, 37.781807 ] } } +{ "type": "Feature", "properties": { "name": "Divisadero St & Eddy St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.436458, 37.783401 ] } } , -{ "type": "Feature", "properties": { "name": "Sutter St & Steiner St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.433357, 37.785724 ] } } +{ "type": "Feature", "properties": { "name": "Fillmore St & Sutter St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.433078, 37.785182 ] } } , { "type": "Feature", "properties": { "name": "Eddy St & Pierce St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.435557, 37.780543 ] } } , { "type": "Feature", "properties": { "name": "Turk St & Broderick St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.438893, 37.777703 ] } } , -{ "type": "Feature", "properties": { "name": "Divisadero St & Hayes St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.439419, 37.774022 ] } } +{ "type": "Feature", "properties": { "name": "Divisadero St & Hayes St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.439247, 37.773929 ] } } , -{ "type": "Feature", "properties": { "name": "Divisadero St & Oak St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.436436, 37.774904 ] } } +{ "type": "Feature", "properties": { "name": "Divisadero St & Oak St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.435997, 37.775243 ] } } , -{ "type": "Feature", "properties": { "name": "Hayes St & Pierce St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.432832, 37.776812 ] } } +{ "type": "Feature", "properties": { "name": "Mcallister St & Fillmore St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.434022, 37.775091 ] } } , -{ "type": "Feature", "properties": { "name": "Divisadero St & Haight St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.435664, 37.771402 ] } } +{ "type": "Feature", "properties": { "name": "Haight St & Pierce St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.449311, 37.769120 ] } } , -{ "type": "Feature", "properties": { "name": "Haight St & Stanyan St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.451510, 37.768807 ] } } +{ "type": "Feature", "properties": { "name": "Haight St & Clayton St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.451392, 37.766254 ] } } , -{ "type": "Feature", "properties": { "name": "Cole St & Frederick St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.451360, 37.765423 ] } } +{ "type": "Feature", "properties": { "name": "Carl St & Cole St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.448539, 37.766661 ] } } , -{ "type": "Feature", "properties": { "name": "Parnassus Ave & Cole St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.447927, 37.767017 ] } } +{ "type": "Feature", "properties": { "name": "Frederick St & Clayton St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.446167, 37.767797 ] } } , -{ "type": "Feature", "properties": { "name": "Frederick St & Ashbury St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.445942, 37.767738 ] } } +{ "type": "Feature", "properties": { "name": "Ashbury St & Piedmont St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.444826, 37.764328 ] } } , -{ "type": "Feature", "properties": { "name": "Ashbury St & Clifford Ter", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.444440, 37.764159 ] } } +{ "type": "Feature", "properties": { "name": "Roosevelt Way & Clifford Ter", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.446028, 37.762708 ] } } , -{ "type": "Feature", "properties": { "name": "Cole St & 17th St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.449965, 37.759443 ] } } +{ "type": "Feature", "properties": { "name": "Cole St & Carmel St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.450835, 37.757187 ] } } , -{ "type": "Feature", "properties": { "name": "Marview Way & Panorama Dr", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.446307, 37.760164 ] } } +{ "type": "Feature", "properties": { "name": "Marview Way & Panorama Dr", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.446178, 37.760130 ] } } , -{ "type": "Feature", "properties": { "name": "320 Corbett Ave", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.444150, 37.759808 ] } } +{ "type": "Feature", "properties": { "name": "Corbett Ave & Mars St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.443968, 37.759791 ] } } , { "type": "Feature", "properties": { "name": "539 Corbett Ave", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.443217, 37.755609 ] } } , @@ -1491,13 +1479,13 @@ , { "type": "Feature", "properties": { "name": "Duboce St/Noe St/Duboce Park", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.434151, 37.767500 ] } } , -{ "type": "Feature", "properties": { "name": "Market St & Castro St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.436125, 37.762624 ] } } +{ "type": "Feature", "properties": { "name": "Market St & Castro St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.436383, 37.762505 ] } } , -{ "type": "Feature", "properties": { "name": "18th St & Hattie St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.438453, 37.760537 ] } } +{ "type": "Feature", "properties": { "name": "Eureka St & Market St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.437992, 37.760546 ] } } , -{ "type": "Feature", "properties": { "name": "Grand View Ave & 21st St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.438807, 37.755210 ] } } +{ "type": "Feature", "properties": { "name": "Grand View Ave & 21st St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.438507, 37.755694 ] } } , -{ "type": "Feature", "properties": { "name": "18th St & Castro St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.434452, 37.760198 ] } } +{ "type": "Feature", "properties": { "name": "Castro St & 18th St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.434366, 37.760104 ] } } , { "type": "Feature", "properties": { "name": "20th St & Collingwood St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.434838, 37.756406 ] } } , @@ -1519,9 +1507,7 @@ , { "type": "Feature", "properties": { "name": "Fillmore St & Oak St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.430847, 37.774014 ] } } , -{ "type": "Feature", "properties": { "name": "14th St & Sanchez St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.431201, 37.766797 ] } } -, -{ "type": "Feature", "properties": { "name": "Market St & Sanchez St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.431169, 37.765660 ] } } +{ "type": "Feature", "properties": { "name": "14th St & Sanchez St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.431190, 37.766415 ] } } ] } , { "type": "FeatureCollection", "properties": { "layer": "subway", "version": 2, "extent": 4096 }, "features": [ @@ -1697,13 +1683,13 @@ , { "type": "Feature", "properties": { "name": "Wisconsin St & Connecticut St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.397437, 37.753641 ] } } , -{ "type": "Feature", "properties": { "name": "24th St & Sanchez St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.428046, 37.751334 ] } } +{ "type": "Feature", "properties": { "name": "24th St & Sanchez St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.427928, 37.751071 ] } } , -{ "type": "Feature", "properties": { "name": "Church St & Clipper St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.430675, 37.746787 ] } } +{ "type": "Feature", "properties": { "name": "26th St & Noe St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.430675, 37.746413 ] } } , -{ "type": "Feature", "properties": { "name": "Church St & 27th St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.426137, 37.749365 ] } } +{ "type": "Feature", "properties": { "name": "Church St & 27th St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.424645, 37.750884 ] } } , -{ "type": "Feature", "properties": { "name": "24th St & Guerrero St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.422167, 37.751936 ] } } +{ "type": "Feature", "properties": { "name": "Valencia St & 24th St" }, "geometry": { "type": "Point", "coordinates": [ -122.420740, 37.751860 ] } } , { "type": "Feature", "properties": { "name": "Noe St & 29th St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.428808, 37.742731 ] } } , @@ -1711,13 +1697,13 @@ , { "type": "Feature", "properties": { "name": "Whitney St & Fairmount Street", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.426169, 37.740220 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & 29th St", "clustered": true, "point_count": 22, "sqrt_point_count": 4.69, "point_count_abbreviated": "22" }, "geometry": { "type": "Point", "coordinates": [ -122.423465, 37.740508 ] } } +{ "type": "Feature", "properties": { "name": "Mission St & 29th St", "clustered": true, "point_count": 23, "sqrt_point_count": 4.8, "point_count_abbreviated": "23" }, "geometry": { "type": "Point", "coordinates": [ -122.423487, 37.740381 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & Highland Ave", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.421684, 37.744394 ] } } +{ "type": "Feature", "properties": { "name": "Richland Ave & Mission St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.420568, 37.747296 ] } } , -{ "type": "Feature", "properties": { "name": "Mission St & 24th St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.417886, 37.751401 ] } } +{ "type": "Feature", "properties": { "name": "24th St & Mission St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.417672, 37.751045 ] } } , -{ "type": "Feature", "properties": { "name": "26th St & South Van Ness Ave", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.419066, 37.747542 ] } } +{ "type": "Feature", "properties": { "name": "Valencia St & 26th St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.419249, 37.747440 ] } } , { "type": "Feature", "properties": { "name": "24th St & Folsom St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.413638, 37.751452 ] } } , @@ -1759,13 +1745,13 @@ , { "type": "Feature", "properties": { "name": "Felton St & Harvard St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.418476, 37.726415 ] } } , -{ "type": "Feature", "properties": { "name": "Mansell St & John F Shelley Dr", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.416406, 37.722672 ] } } +{ "type": "Feature", "properties": { "name": "Mansell St & John F Shelley Dr", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.415826, 37.723165 ] } } , -{ "type": "Feature", "properties": { "name": "University St & Bacon St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.412865, 37.724166 ] } } +{ "type": "Feature", "properties": { "name": "University St & Bacon St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.411975, 37.723674 ] } } , -{ "type": "Feature", "properties": { "name": "Woolsey St & Dartmouth St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.411503, 37.722927 ] } } +{ "type": "Feature", "properties": { "name": "University St & Woolsey St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.411824, 37.721204 ] } } , -{ "type": "Feature", "properties": { "name": "Mansell St & University St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.408144, 37.748314 ] } } +{ "type": "Feature", "properties": { "name": "24th St & Bryant St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.407748, 37.751995 ] } } , { "type": "Feature", "properties": { "name": "C. Chavez St&Florida St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.409325, 37.748407 ] } } , @@ -1795,9 +1781,9 @@ , { "type": "Feature", "properties": { "name": "Palou Ave & Phelps St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.393231, 37.739083 ] } } , -{ "type": "Feature", "properties": { "name": "Evans Ave & Phelps St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.389562, 37.740729 ] } } +{ "type": "Feature", "properties": { "name": "Evans Ave & Phelps St", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.389777, 37.740262 ] } } , -{ "type": "Feature", "properties": { "name": "Newhall St & Newcomb Ave", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.389433, 37.738659 ] } } +{ "type": "Feature", "properties": { "name": "3rd St & Innes Ave", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.389165, 37.738956 ] } } , { "type": "Feature", "properties": { "name": "Bay Shore Blvd & Boutwell St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.405763, 37.732804 ] } } , @@ -1829,9 +1815,9 @@ , { "type": "Feature", "properties": { "name": "Paul Ave & Carr St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.395903, 37.721272 ] } } , -{ "type": "Feature", "properties": { "name": "Van Dyke Ave & Jennings St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.389605, 37.725023 ] } } +{ "type": "Feature", "properties": { "name": "Van Dyke Ave & Jennings St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.390141, 37.723852 ] } } , -{ "type": "Feature", "properties": { "name": "Gilman Ave & Ingalls St", "clustered": true, "point_count": 3, "sqrt_point_count": 1.73, "point_count_abbreviated": "3" }, "geometry": { "type": "Point", "coordinates": [ -122.390442, 37.719821 ] } } +{ "type": "Feature", "properties": { "name": "Fitzgerald Ave & Hawes St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.389798, 37.719558 ] } } , { "type": "Feature", "properties": { "name": "3rd St & 25th St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.387556, 37.750409 ] } } , @@ -1889,23 +1875,23 @@ , { "type": "Feature", "properties": { "name": "Hayes St & Franklin St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.423712, 37.773530 ] } } , -{ "type": "Feature", "properties": { "name": "Page St & Franklin St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.420268, 37.782333 ] } } +{ "type": "Feature", "properties": { "name": "Page St & Franklin St", "clustered": true, "point_count": 17, "sqrt_point_count": 4.12, "point_count_abbreviated": "17" }, "geometry": { "type": "Point", "coordinates": [ -122.420129, 37.782494 ] } } , -{ "type": "Feature", "properties": { "name": "O'Farrell St & Larkin St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.418358, 37.784597 ] } } +{ "type": "Feature", "properties": { "name": "Post St & Larkin St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.418476, 37.784334 ] } } , -{ "type": "Feature", "properties": { "name": "Turk St & Polk St", "clustered": true, "point_count": 22, "sqrt_point_count": 4.69, "point_count_abbreviated": "22" }, "geometry": { "type": "Point", "coordinates": [ -122.417511, 37.781400 ] } } +{ "type": "Feature", "properties": { "name": "Van Ness Ave & Mcallister St", "clustered": true, "point_count": 24, "sqrt_point_count": 4.9, "point_count_abbreviated": "24" }, "geometry": { "type": "Point", "coordinates": [ -122.417103, 37.782087 ] } } , -{ "type": "Feature", "properties": { "name": "Leavenworth St & Post St", "clustered": true, "point_count": 21, "sqrt_point_count": 4.58, "point_count_abbreviated": "21" }, "geometry": { "type": "Point", "coordinates": [ -122.412812, 37.786403 ] } } +{ "type": "Feature", "properties": { "name": "Leavenworth St & Geary Blvd", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.412425, 37.786216 ] } } , -{ "type": "Feature", "properties": { "name": "Ellis St & Taylor St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.413037, 37.781968 ] } } +{ "type": "Feature", "properties": { "name": "Eddy St & Taylor St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.412854, 37.781858 ] } } , -{ "type": "Feature", "properties": { "name": "Golden Gate Ave & Jones St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.414968, 37.780085 ] } } +{ "type": "Feature", "properties": { "name": "Market St & 6th St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.417071, 37.777949 ] } } , -{ "type": "Feature", "properties": { "name": "Van Ness Ave & Oak St", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.417929, 37.776295 ] } } +{ "type": "Feature", "properties": { "name": "11th St & Market St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.417800, 37.776040 ] } } , -{ "type": "Feature", "properties": { "name": "MARKET ST & VAN NESS AVE", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.418326, 37.773827 ] } } +{ "type": "Feature", "properties": { "name": "Mission St & South Van Ness Ave", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.417521, 37.773310 ] } } , -{ "type": "Feature", "properties": { "name": "11th St & Howard St", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.413573, 37.777991 ] } } +{ "type": "Feature", "properties": { "name": "Hyde St & Fulton St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.413434, 37.778389 ] } } , { "type": "Feature", "properties": { "name": "8th St & Howard St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.412726, 37.773217 ] } } , @@ -1955,17 +1941,17 @@ , { "type": "Feature", "properties": { "name": "7th St & Folsom St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.406610, 37.776134 ] } } , -{ "type": "Feature", "properties": { "name": "8th St & Bryant St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.405237, 37.774107 ] } } +{ "type": "Feature", "properties": { "name": "8th St & Bryant St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.404926, 37.774548 ] } } , -{ "type": "Feature", "properties": { "name": "5th St & Harrison St", "clustered": true, "point_count": 4, "sqrt_point_count": 2, "point_count_abbreviated": "4" }, "geometry": { "type": "Point", "coordinates": [ -122.401654, 37.777304 ] } } +{ "type": "Feature", "properties": { "name": "6th St & Bryant St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.401375, 37.775998 ] } } , -{ "type": "Feature", "properties": { "name": "5th St & Brannan St", "clustered": true, "point_count": 5, "sqrt_point_count": 2.24, "point_count_abbreviated": "5" }, "geometry": { "type": "Point", "coordinates": [ -122.401503, 37.773030 ] } } +{ "type": "Feature", "properties": { "name": "7th St & Townsend St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.399894, 37.777813 ] } } , -{ "type": "Feature", "properties": { "name": "Townsend St & 6th St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.397566, 37.783681 ] } } +{ "type": "Feature", "properties": { "name": "Second Street & Folsom Street", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.396042, 37.784910 ] } } , -{ "type": "Feature", "properties": { "name": "Folsom St & 1st St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.395924, 37.783978 ] } } +{ "type": "Feature", "properties": { "name": "Bryant St & 4th St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.394390, 37.781892 ] } } , -{ "type": "Feature", "properties": { "name": "2nd St & Bryant St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.393006, 37.783799 ] } } +{ "type": "Feature", "properties": { "name": "HARRISON & FREMONT", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.391386, 37.787369 ] } } , { "type": "Feature", "properties": { "name": "The Embarcadero & Brannan St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.389830, 37.782553 ] } } , @@ -1991,9 +1977,9 @@ , { "type": "Feature", "properties": { "name": "Vermont St & 18th St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.407973, 37.757543 ] } } , -{ "type": "Feature", "properties": { "name": "Potrero Ave & 21st St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.405355, 37.757051 ] } } +{ "type": "Feature", "properties": { "name": "Potrero Ave & 21st St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.405140, 37.757450 ] } } , -{ "type": "Feature", "properties": { "name": "Vermont St & 20th St", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.401890, 37.759239 ] } } +{ "type": "Feature", "properties": { "name": "20th St & Kansas St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.401568, 37.759180 ] } } , { "type": "Feature", "properties": { "name": "Rhode Island St & 22nd St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.401139, 37.755583 ] } } , @@ -2067,25 +2053,23 @@ , { "type": "Feature", "properties": { "name": "Polk St & California St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.420493, 37.797814 ] } } , -{ "type": "Feature", "properties": { "name": "Columbus Ave & Francisco St", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.417736, 37.801739 ] } } +{ "type": "Feature", "properties": { "name": "Columbus Ave & Francisco St", "clustered": true, "point_count": 20, "sqrt_point_count": 4.47, "point_count_abbreviated": "20" }, "geometry": { "type": "Point", "coordinates": [ -122.417790, 37.801570 ] } } , -{ "type": "Feature", "properties": { "name": "Hyde St & Green St", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.416320, 37.801138 ] } } +{ "type": "Feature", "properties": { "name": "Hyde St & Vallejo St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.416116, 37.801366 ] } } , { "type": "Feature", "properties": { "name": "COLUMBUS AVE & CHESTNUT ST", "clustered": true, "point_count": 13, "sqrt_point_count": 3.61, "point_count_abbreviated": "13" }, "geometry": { "type": "Point", "coordinates": [ -122.412168, 37.802689 ] } } , { "type": "Feature", "properties": { "name": "Union St & Taylor St", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.411975, 37.799612 ] } } , -{ "type": "Feature", "properties": { "name": "Pacific Ave & Larkin St", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.418294, 37.794923 ] } } -, -{ "type": "Feature", "properties": { "name": "Hyde St & Clay St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.418498, 37.791642 ] } } +{ "type": "Feature", "properties": { "name": "Pacific Ave & Larkin St", "clustered": true, "point_count": 21, "sqrt_point_count": 4.58, "point_count_abbreviated": "21" }, "geometry": { "type": "Point", "coordinates": [ -122.418251, 37.794728 ] } } , -{ "type": "Feature", "properties": { "name": "Hyde St & California St", "clustered": true, "point_count": 21, "sqrt_point_count": 4.58, "point_count_abbreviated": "21" }, "geometry": { "type": "Point", "coordinates": [ -122.415601, 37.792109 ] } } +{ "type": "Feature", "properties": { "name": "Washington St & Leavenworth St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.418262, 37.791430 ] } } , -{ "type": "Feature", "properties": { "name": "Clay St & Jones St", "clustered": true, "point_count": 27, "sqrt_point_count": 5.2, "point_count_abbreviated": "27" }, "geometry": { "type": "Point", "coordinates": [ -122.411739, 37.794542 ] } } +{ "type": "Feature", "properties": { "name": "Sacramento St & Leavenworth St", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.415086, 37.792456 ] } } , -{ "type": "Feature", "properties": { "name": "California St & Taylor St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.412994, 37.790015 ] } } +{ "type": "Feature", "properties": { "name": "Clay St & Taylor St", "clustered": true, "point_count": 26, "sqrt_point_count": 5.1, "point_count_abbreviated": "26" }, "geometry": { "type": "Point", "coordinates": [ -122.411610, 37.794491 ] } } , -{ "type": "Feature", "properties": { "name": "Sutter St & Mason St" }, "geometry": { "type": "Point", "coordinates": [ -122.410312, 37.789065 ] } } +{ "type": "Feature", "properties": { "name": "Bush St & Leavenworth St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.412769, 37.789760 ] } } , { "type": "Feature", "properties": { "name": "The Embarcadero & Grant St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.407469, 37.807063 ] } } , @@ -2095,25 +2079,21 @@ , { "type": "Feature", "properties": { "name": "TELEGRAPH Hill Blvd & Filbert St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.407812, 37.799620 ] } } , -{ "type": "Feature", "properties": { "name": "Union St & Montgomery St", "clustered": true, "point_count": 15, "sqrt_point_count": 3.87, "point_count_abbreviated": "15" }, "geometry": { "type": "Point", "coordinates": [ -122.404926, 37.800205 ] } } -, -{ "type": "Feature", "properties": { "name": "Battery St & Greenwich St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.401353, 37.802341 ] } } -, -{ "type": "Feature", "properties": { "name": "Battery St & Green St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.401750, 37.798527 ] } } +{ "type": "Feature", "properties": { "name": "Union St & Montgomery St", "clustered": true, "point_count": 16, "sqrt_point_count": 4, "point_count_abbreviated": "16" }, "geometry": { "type": "Point", "coordinates": [ -122.404743, 37.800383 ] } } , -{ "type": "Feature", "properties": { "name": "Pacific Ave & Stockton St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.407726, 37.794593 ] } } +{ "type": "Feature", "properties": { "name": "Sansome St & Union St", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.401428, 37.801612 ] } } , -{ "type": "Feature", "properties": { "name": "Clay St & Grant Ave", "clustered": true, "point_count": 32, "sqrt_point_count": 5.66, "point_count_abbreviated": "32" }, "geometry": { "type": "Point", "coordinates": [ -122.407533, 37.791413 ] } } +{ "type": "Feature", "properties": { "name": "Broadway & Montgomery St", "clustered": true, "point_count": 9, "sqrt_point_count": 3, "point_count_abbreviated": "9" }, "geometry": { "type": "Point", "coordinates": [ -122.401707, 37.798170 ] } } , -{ "type": "Feature", "properties": { "name": "California St & Grant Ave", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.403982, 37.792719 ] } } +{ "type": "Feature", "properties": { "name": "Pacific Ave & Stockton St", "clustered": true, "point_count": 19, "sqrt_point_count": 4.36, "point_count_abbreviated": "19" }, "geometry": { "type": "Point", "coordinates": [ -122.407640, 37.794576 ] } } , -{ "type": "Feature", "properties": { "name": "Sacramento St & Montgomery St", "clustered": true, "point_count": 18, "sqrt_point_count": 4.24, "point_count_abbreviated": "18" }, "geometry": { "type": "Point", "coordinates": [ -122.401106, 37.793643 ] } } +{ "type": "Feature", "properties": { "name": "Sacramento St & Grant Ave", "clustered": true, "point_count": 32, "sqrt_point_count": 5.66, "point_count_abbreviated": "32" }, "geometry": { "type": "Point", "coordinates": [ -122.407533, 37.791354 ] } } , -{ "type": "Feature", "properties": { "name": "Kearny St & Bush St", "clustered": true, "point_count": 27, "sqrt_point_count": 5.2, "point_count_abbreviated": "27" }, "geometry": { "type": "Point", "coordinates": [ -122.401149, 37.790091 ] } } +{ "type": "Feature", "properties": { "name": "Post St & Grant Ave", "clustered": true, "point_count": 14, "sqrt_point_count": 3.74, "point_count_abbreviated": "14" }, "geometry": { "type": "Point", "coordinates": [ -122.402995, 37.793287 ] } } , -{ "type": "Feature", "properties": { "name": "Broadway & Davis St", "clustered": true, "point_count": 6, "sqrt_point_count": 2.45, "point_count_abbreviated": "6" }, "geometry": { "type": "Point", "coordinates": [ -122.397416, 37.798696 ] } } +{ "type": "Feature", "properties": { "name": "Clay St & Front St", "clustered": true, "point_count": 38, "sqrt_point_count": 6.16, "point_count_abbreviated": "38" }, "geometry": { "type": "Point", "coordinates": [ -122.400924, 37.791091 ] } } , -{ "type": "Feature", "properties": { "name": "The Embarcadero & Washington St", "clustered": true, "point_count": 2, "sqrt_point_count": 1.41, "point_count_abbreviated": "2" }, "geometry": { "type": "Point", "coordinates": [ -122.395613, 37.797145 ] } } +{ "type": "Feature", "properties": { "name": "Broadway & Davis St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.396965, 37.798306 ] } } , { "type": "Feature", "properties": { "name": "Clay St & Drumm St", "clustered": true, "point_count": 46, "sqrt_point_count": 6.78, "point_count_abbreviated": "46" }, "geometry": { "type": "Point", "coordinates": [ -122.395624, 37.793982 ] } } , @@ -2181,9 +2161,9 @@ , { "type": "Feature", "properties": { "name": "Whitney Young Cir & Progress St", "clustered": true, "point_count": 8, "sqrt_point_count": 2.83, "point_count_abbreviated": "8" }, "geometry": { "type": "Point", "coordinates": [ -122.384874, 37.730547 ] } } , -{ "type": "Feature", "properties": { "name": "Oakdale Ave & Ingalls St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.381548, 37.732100 ] } } +{ "type": "Feature", "properties": { "name": "Oakdale Ave & Ingalls St", "clustered": true, "point_count": 12, "sqrt_point_count": 3.46, "point_count_abbreviated": "12" }, "geometry": { "type": "Point", "coordinates": [ -122.381419, 37.732134 ] } } , -{ "type": "Feature", "properties": { "name": "Hudson Ave & Ingalls St", "clustered": true, "point_count": 11, "sqrt_point_count": 3.32, "point_count_abbreviated": "11" }, "geometry": { "type": "Point", "coordinates": [ -122.379498, 37.732592 ] } } +{ "type": "Feature", "properties": { "name": "Hudson Ave & Ingalls St", "clustered": true, "point_count": 10, "sqrt_point_count": 3.16, "point_count_abbreviated": "10" }, "geometry": { "type": "Point", "coordinates": [ -122.379456, 37.732601 ] } } , { "type": "Feature", "properties": { "name": "Oakdale Ave & Baldwin Ct", "clustered": true, "point_count": 7, "sqrt_point_count": 2.65, "point_count_abbreviated": "7" }, "geometry": { "type": "Point", "coordinates": [ -122.379402, 37.729478 ] } } , diff --git a/tile.cpp b/tile.cpp index 44d2e5eff..f9dd828af 100644 --- a/tile.cpp +++ b/tile.cpp @@ -1875,9 +1875,9 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch unsigned long long sfindex = sf.index; if (sf.geometry.size() > 0) { - if (lead_features_count > max_tile_size) { + if (lead_features_count * 2 > max_tile_size || (lead_features_count > 2 * max_tile_features && !prevent[P_FEATURE_LIMIT])) { // Even being maximally conservative, each feature is still going to be - // at least one byte in the output tile, so this can't possibly work. + // at least two bytes in the output tile, so this can't possibly work. skipped++; } else { kept++; @@ -2239,11 +2239,9 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch } mvt_tile tile; - size_t totalsize = 0; for (auto layer_iterator = layers.begin(); layer_iterator != layers.end(); ++layer_iterator) { std::vector &layer_features = layer_iterator->second.features; - totalsize += layer_features.size(); mvt_layer layer; layer.name = layer_iterator->first; @@ -2327,14 +2325,14 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch oprogress = progress; } - if (totalsize > 0 && tile.layers.size() > 0) { - if (totalsize > max_tile_features && !prevent[P_FEATURE_LIMIT]) { - if (totalsize > arg->feature_count_out) { - arg->feature_count_out = totalsize; + if (lead_features_count > 0 && tile.layers.size() > 0) { + if (lead_features_count > max_tile_features && !prevent[P_FEATURE_LIMIT]) { + if (lead_features_count > arg->feature_count_out) { + arg->feature_count_out = lead_features_count; } if (!quiet) { - fprintf(stderr, "tile %d/%u/%u has %zu features, >%zu \n", z, tx, ty, totalsize, max_tile_features); + fprintf(stderr, "tile %d/%u/%u has %zu features, >%zu \n", z, tx, ty, lead_features_count, max_tile_features); } if (additional[A_INCREASE_GAMMA_AS_NEEDED] && gamma < 10) { @@ -2355,7 +2353,7 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch line_detail++; // to keep it the same when the loop decrements it continue; } else if (mingap < ULONG_MAX && (additional[A_DROP_DENSEST_AS_NEEDED] || additional[A_COALESCE_DENSEST_AS_NEEDED] || additional[A_CLUSTER_DENSEST_AS_NEEDED])) { - mingap_fraction = mingap_fraction * max_tile_features / totalsize * 0.90; + mingap_fraction = mingap_fraction * max_tile_features / lead_features_count * 0.90; unsigned long long mg = choose_mingap(indices, mingap_fraction); if (mg <= mingap) { mg = (mingap + 1) * 1.5; @@ -2375,7 +2373,7 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch line_detail++; continue; } else if (additional[A_DROP_SMALLEST_AS_NEEDED] || additional[A_COALESCE_SMALLEST_AS_NEEDED]) { - minextent_fraction = minextent_fraction * max_tile_features / totalsize * 0.75; + minextent_fraction = minextent_fraction * max_tile_features / lead_features_count * 0.75; long long m = choose_minextent(extents, minextent_fraction, minextent); if (m != minextent) { minextent = m; @@ -2389,11 +2387,11 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch line_detail++; continue; } - } else if (totalsize > layers.size() && (additional[A_DROP_FRACTION_AS_NEEDED] || additional[A_COALESCE_FRACTION_AS_NEEDED] || prevent[P_DYNAMIC_DROP])) { + } else if (lead_features_count > layers.size() && (additional[A_DROP_FRACTION_AS_NEEDED] || additional[A_COALESCE_FRACTION_AS_NEEDED] || prevent[P_DYNAMIC_DROP])) { // The 95% is a guess to avoid too many retries // and probably actually varies based on how much duplicated metadata there is - mindrop_sequence_fraction = mindrop_sequence_fraction * max_tile_features / totalsize * 0.95; + mindrop_sequence_fraction = mindrop_sequence_fraction * max_tile_features / lead_features_count * 0.95; unsigned long long m = choose_mindrop_sequence(drop_sequences, mindrop_sequence_fraction, mindrop_sequence); if (m != mindrop_sequence) { mindrop_sequence = m; @@ -2501,7 +2499,7 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch line_detail++; continue; } - } else if (totalsize > layers.size() && (additional[A_DROP_FRACTION_AS_NEEDED] || additional[A_COALESCE_FRACTION_AS_NEEDED] || prevent[P_DYNAMIC_DROP])) { + } else if (lead_features_count > layers.size() && (additional[A_DROP_FRACTION_AS_NEEDED] || additional[A_COALESCE_FRACTION_AS_NEEDED] || prevent[P_DYNAMIC_DROP])) { mindrop_sequence_fraction = mindrop_sequence_fraction * scaled_max_tile_size / (kept_adjust * compressed.size()) * 0.75; unsigned long long m = choose_mindrop_sequence(drop_sequences, mindrop_sequence_fraction, mindrop_sequence); if (m != mindrop_sequence) { From bb3e84d1ec9f235753b0cfa62f87ea545760c9f5 Mon Sep 17 00:00:00 2001 From: Erica Fischer Date: Fri, 23 Feb 2024 12:15:10 -0800 Subject: [PATCH 2/3] Move tile-wide traits out of serial_feature --- serial.hpp | 12 ++--------- tile.cpp | 62 ++++++++++++++++++++++++++++++------------------------ 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/serial.hpp b/serial.hpp index 2d47f672d..122f33e2d 100644 --- a/serial.hpp +++ b/serial.hpp @@ -99,13 +99,9 @@ struct serial_feature { int dropped = FEATURE_DROPPED; // was this feature dropped by rate? // unsigned long long drop_by; // dot-dropping priority - bool reduced; // is polygon dust - bool coalesced; // was coalesced from multiple features - int line_detail; // current tile resolution being used for simplification - int extra_detail; // extra tile resolution to retain in output - int maxzoom; + bool reduced; // is polygon dust + bool coalesced; // was coalesced from multiple features double spacing; // feature spacing for --calculate-feature-density - double simplification; // simplification level at this zoom level std::vector arc_polygon; // used in --detect-shared-borders ssize_t renamed; // used in --detect-shared-borders logic long long clustered; // does this feature need the clustered/point_count attributes? @@ -113,10 +109,6 @@ struct serial_feature { std::shared_ptr tile_stringpool; // string pool for mvt_value construction std::set need_tilestats; std::unordered_map attribute_accum_state; - - int z; // tile being produced - int tx; - int ty; }; std::string serialize_feature(serial_feature *sf, long long wx, long long wy); diff --git a/tile.cpp b/tile.cpp index f9dd828af..72eaddc7c 100644 --- a/tile.cpp +++ b/tile.cpp @@ -536,6 +536,15 @@ struct simplification_worker_arg { drawvec *shared_nodes; node *shared_nodes_map; size_t nodepos; + + int zoom; + int x; + int y; + + int line_detail; + int extra_detail; + int maxzoom; + double simplification; }; // If a polygon has collapsed away to nothing during polygon cleaning, @@ -585,12 +594,9 @@ static drawvec revive_polygon(drawvec &geom, double area, int z, int detail) { // This simplifies the geometry of one feature. It is generally called from the feature_simplification_worker // but is broken out here so that it can be called from earlier in write_tile if coalesced geometries build up // too much in memory. -static double simplify_feature(serial_feature *p, drawvec const &shared_nodes, node *shared_nodes_map, size_t nodepos) { +static double simplify_feature(serial_feature *p, drawvec const &shared_nodes, node *shared_nodes_map, size_t nodepos, int z, int x, int y, int line_detail, int maxzoom, double simplification) { drawvec geom = p->geometry; signed char t = p->t; - int z = p->z; - int line_detail = p->line_detail; - int maxzoom = p->maxzoom; if (additional[A_GRID_LOW_ZOOMS] && z < maxzoom) { geom = stairstep(geom, z, line_detail); @@ -632,7 +638,7 @@ static double simplify_feature(serial_feature *p, drawvec const &shared_nodes, n } // continues to simplify to line_detail even if we have extra detail - drawvec ngeom = simplify_lines(geom, z, p->tx, p->ty, line_detail, !(prevent[P_CLIPPING] || prevent[P_DUPLICATION]), p->simplification, t == VT_POLYGON ? 4 : 0, shared_nodes, shared_nodes_map, nodepos); + drawvec ngeom = simplify_lines(geom, z, x, y, line_detail, !(prevent[P_CLIPPING] || prevent[P_DUPLICATION]), simplification, t == VT_POLYGON ? 4 : 0, shared_nodes, shared_nodes_map, nodepos); if (t != VT_POLYGON || ngeom.size() >= 3) { geom = ngeom; @@ -657,11 +663,11 @@ static void *simplification_worker(void *v) { std::vector *features = a->features; for (size_t i = a->task; i < (*features).size(); i += a->tasks) { - double area = simplify_feature(&((*features)[i]), *(a->shared_nodes), a->shared_nodes_map, a->nodepos); + double area = simplify_feature(&((*features)[i]), *(a->shared_nodes), a->shared_nodes_map, a->nodepos, a->zoom, a->x, a->y, a->line_detail, a->maxzoom, a->simplification); signed char t = (*features)[i].t; - int z = (*features)[i].z; - int out_detail = (*features)[i].extra_detail; + int z = a->zoom; + int out_detail = a->extra_detail; drawvec geom = (*features)[i].geometry; to_tile_scale(geom, z, out_detail); @@ -690,7 +696,7 @@ static void *simplification_worker(void *v) { if (t == VT_POLYGON && additional[A_GENERATE_POLYGON_LABEL_POINTS]) { t = (*features)[i].t = VT_POINT; - geom = checkerboard_anchors(from_tile_scale(geom, z, out_detail), (*features)[i].tx, (*features)[i].ty, z, (*features)[i].label_point); + geom = checkerboard_anchors(from_tile_scale(geom, z, out_detail), a->x, a->y, z, (*features)[i].label_point); to_tile_scale(geom, z, out_detail); } @@ -1545,7 +1551,6 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch double coalesced_area = 0; drawvec shared_nodes; - int tile_detail = line_detail; size_t skipped = 0; size_t kept = 0; @@ -1910,28 +1915,11 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch sf.reduced = !still_need_simplification_after_reduction; sf.coalesced = false; - sf.z = z; - sf.tx = tx; - sf.ty = ty; - sf.line_detail = line_detail; - sf.extra_detail = line_detail; - sf.maxzoom = maxzoom; sf.spacing = spacing; - sf.simplification = simplification; sf.renamed = -1; sf.clustered = 0; sf.tile_stringpool = tile_stringpool; - if (line_detail == detail && extra_detail >= 0 && z == maxzoom) { - sf.extra_detail = extra_detail; - // maximum allowed coordinate delta in geometries is 2^31 - 1 - // so we need to stay under that, including the buffer - if (sf.extra_detail >= 30 - z) { - sf.extra_detail = 30 - z; - } - tile_detail = sf.extra_detail; - } - features.push_back(std::move(sf)); unsimplified_geometry_size += features.back().geometry.size() * sizeof(draw); @@ -1941,7 +1929,7 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch // may not be very effective for reducing memory usage. for (; simplified_geometry_through < features.size(); simplified_geometry_through++) { - simplify_feature(&features[simplified_geometry_through], shared_nodes, shared_nodes_map, nodepos); + simplify_feature(&features[simplified_geometry_through], shared_nodes, shared_nodes_map, nodepos, z, tx, ty, line_detail, maxzoom, simplification); if (features[simplified_geometry_through].t == VT_POLYGON) { drawvec to_clean = features[simplified_geometry_through].geometry; @@ -2012,6 +2000,7 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch // Sort back into input order or by attribute value std::sort(shared_nodes.begin(), shared_nodes.end()); + int tile_detail = line_detail; for (auto &kv : layers) { std::string const &layername = kv.first; @@ -2117,6 +2106,23 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch args[i].shared_nodes = &shared_nodes; args[i].shared_nodes_map = shared_nodes_map; args[i].nodepos = nodepos; + args[i].zoom = z; + args[i].x = tx; + args[i].y = ty; + args[i].line_detail = line_detail; + args[i].extra_detail = line_detail; + args[i].maxzoom = maxzoom; + args[i].simplification = simplification; + + if (line_detail == detail && extra_detail >= 0 && z == maxzoom) { + args[i].extra_detail = extra_detail; + // maximum allowed coordinate delta in geometries is 2^31 - 1 + // so we need to stay under that, including the buffer + if (args[i].extra_detail >= 30 - z) { + args[i].extra_detail = 30 - z; + } + tile_detail = args[i].extra_detail; + } if (tasks > 1) { if (thread_create(&pthreads[i], NULL, simplification_worker, &args[i]) != 0) { From e1dac4fb0bb9154fe8331362de264da0fc0de625 Mon Sep 17 00:00:00 2001 From: Erica Fischer Date: Fri, 23 Feb 2024 13:58:42 -0800 Subject: [PATCH 3/3] Don't carry a bounding box around with the feature --- plugin.cpp | 19 ------------------- serial.cpp | 51 ++++++++++++++++++++++++++------------------------- serial.hpp | 16 ++++++++-------- tile.cpp | 27 ++++++++++++++------------- 4 files changed, 48 insertions(+), 65 deletions(-) diff --git a/plugin.cpp b/plugin.cpp index 73b682820..1c67b2baa 100644 --- a/plugin.cpp +++ b/plugin.cpp @@ -398,8 +398,6 @@ serial_feature parse_feature(json_pull *jp, int z, unsigned x, unsigned y, std:: sf.geometry = dv; sf.seq = 0; sf.index = 0; - sf.bbox[0] = sf.bbox[1] = LLONG_MAX; - sf.bbox[2] = sf.bbox[3] = LLONG_MIN; sf.extent = 0; sf.has_id = false; @@ -434,23 +432,6 @@ serial_feature parse_feature(json_pull *jp, int z, unsigned x, unsigned y, std:: } } - for (size_t i = 0; i < dv.size(); i++) { - if (dv[i].op == VT_MOVETO || dv[i].op == VT_LINETO) { - if (dv[i].x < sf.bbox[0]) { - sf.bbox[0] = dv[i].x; - } - if (dv[i].y < sf.bbox[1]) { - sf.bbox[1] = dv[i].y; - } - if (dv[i].x > sf.bbox[2]) { - sf.bbox[2] = dv[i].x; - } - if (dv[i].y > sf.bbox[3]) { - sf.bbox[3] = dv[i].y; - } - } - } - json_object *id = json_hash_get(j, "id"); if (id != NULL && id->type == JSON_NUMBER) { sf.id = id->value.number.number; diff --git a/serial.cpp b/serial.cpp index 83f114496..ea22fb91f 100644 --- a/serial.cpp +++ b/serial.cpp @@ -230,7 +230,7 @@ std::string serialize_feature(serial_feature *sf, long long wx, long long wy) { return s; } -serial_feature deserialize_feature(std::string const &geoms, unsigned z, unsigned tx, unsigned ty, unsigned *initial_x, unsigned *initial_y) { +serial_feature deserialize_feature(std::string const &geoms, unsigned z, unsigned tx, unsigned ty, unsigned *initial_x, unsigned *initial_y, long long bbox[]) { serial_feature sf; const char *cp = geoms.c_str(); @@ -261,7 +261,7 @@ serial_feature deserialize_feature(std::string const &geoms, unsigned z, unsigne sf.label_point = 0; sf.extent = 0; - sf.geometry = decode_geometry(&cp, z, tx, ty, sf.bbox, initial_x[sf.segment], initial_y[sf.segment]); + sf.geometry = decode_geometry(&cp, z, tx, ty, bbox, initial_x[sf.segment], initial_y[sf.segment]); if (sf.layer & (1 << FLAG_INDEX)) { deserialize_ulong_long(&cp, &sf.index); @@ -412,10 +412,11 @@ static void add_scaled_node(struct reader *r, serialization_state *sst, draw g) int serialize_feature(struct serialization_state *sst, serial_feature &sf, std::string const &layername) { struct reader *r = &(*sst->readers)[sst->segment]; - sf.bbox[0] = LLONG_MAX; - sf.bbox[1] = LLONG_MAX; - sf.bbox[2] = LLONG_MIN; - sf.bbox[3] = LLONG_MIN; + long long sf_bbox[4]; + sf_bbox[0] = LLONG_MAX; + sf_bbox[1] = LLONG_MAX; + sf_bbox[2] = LLONG_MIN; + sf_bbox[3] = LLONG_MIN; for (size_t i = 0; i < sf.geometry.size(); i++) { if (sf.geometry[i].op == VT_MOVETO || sf.geometry[i].op == VT_LINETO) { @@ -448,7 +449,7 @@ int serialize_feature(struct serialization_state *sst, serial_feature &sf, std:: // try to remind myself that the geometry in this function is in SCALED COORDINATES drawvec scaled_geometry = sf.geometry; sf.geometry.clear(); - scale_geometry(sst, sf.bbox, scaled_geometry); + scale_geometry(sst, sf_bbox, scaled_geometry); // This has to happen after scaling so that the wraparound detection has happened first. // Otherwise the inner/outer calculation will be confused by bad geometries. @@ -467,26 +468,26 @@ int serialize_feature(struct serialization_state *sst, serial_feature &sf, std:: scaled_geometry = remove_noop(scaled_geometry, sf.t, 0); - sf.bbox[0] = LLONG_MAX; - sf.bbox[1] = LLONG_MAX; - sf.bbox[2] = LLONG_MIN; - sf.bbox[3] = LLONG_MIN; + sf_bbox[0] = LLONG_MAX; + sf_bbox[1] = LLONG_MAX; + sf_bbox[2] = LLONG_MIN; + sf_bbox[3] = LLONG_MIN; for (auto &g : scaled_geometry) { long long x = SHIFT_LEFT(g.x); long long y = SHIFT_LEFT(g.y); - if (x < sf.bbox[0]) { - sf.bbox[0] = x; + if (x < sf_bbox[0]) { + sf_bbox[0] = x; } - if (y < sf.bbox[1]) { - sf.bbox[1] = y; + if (y < sf_bbox[1]) { + sf_bbox[1] = y; } - if (x > sf.bbox[2]) { - sf.bbox[2] = x; + if (x > sf_bbox[2]) { + sf_bbox[2] = x; } - if (y > sf.bbox[3]) { - sf.bbox[3] = y; + if (y > sf_bbox[3]) { + sf_bbox[3] = y; } } } @@ -672,8 +673,8 @@ int serialize_feature(struct serialization_state *sst, serial_feature &sf, std:: if (sf.t == VT_POINT) { // keep old behavior, which loses one bit of precision at the bottom - midx = (sf.bbox[0] / 2 + sf.bbox[2] / 2) & ((1LL << 32) - 1); - midy = (sf.bbox[1] / 2 + sf.bbox[3] / 2) & ((1LL << 32) - 1); + midx = (sf_bbox[0] / 2 + sf_bbox[2] / 2) & ((1LL << 32) - 1); + midy = (sf_bbox[1] / 2 + sf_bbox[3] / 2) & ((1LL << 32) - 1); } else { // To reduce the chances of giving multiple polygons or linestrings // the same index, use an arbitrary but predictable point from the @@ -858,13 +859,13 @@ int serialize_feature(struct serialization_state *sst, serial_feature &sf, std:: fwrite_check(&index, sizeof(struct index), 1, r->indexfile, &r->indexpos, sst->fname); for (size_t i = 0; i < 2; i++) { - if (sf.bbox[i] < r->file_bbox[i]) { - r->file_bbox[i] = sf.bbox[i]; + if (sf_bbox[i] < r->file_bbox[i]) { + r->file_bbox[i] = sf_bbox[i]; } } for (size_t i = 2; i < 4; i++) { - if (sf.bbox[i] > r->file_bbox[i]) { - r->file_bbox[i] = sf.bbox[i]; + if (sf_bbox[i] > r->file_bbox[i]) { + r->file_bbox[i] = sf_bbox[i]; } } diff --git a/serial.hpp b/serial.hpp index 122f33e2d..776fbd724 100644 --- a/serial.hpp +++ b/serial.hpp @@ -65,30 +65,30 @@ struct serial_feature { int tippecanoe_minzoom = -1; int tippecanoe_maxzoom = -1; - drawvec geometry = drawvec(); + drawvec geometry; unsigned long long index = 0; unsigned long long label_point = 0; long long extent = 0; // These fields are not directly serialized, but are used // to create the keys and values references into the string pool - // during initial serialization + // during initial serialization, + // and are used to store attributes that are altered during tiling - std::vector full_keys{}; - std::vector full_values{}; + std::vector full_keys; + std::vector full_values; // These fields are generated from full_keys and full_values // during initial serialization and then replace the string // representations: - std::vector keys{}; - std::vector values{}; + std::vector keys; + std::vector values; // These fields are used during tiling, // but are not serialized and are not expected // to be provided by frontends: - long long bbox[4] = {0, 0, 0, 0}; drawvec edge_nodes; // what nodes at the tile edge were added during clipping? #define FEATURE_DROPPED -1 @@ -112,7 +112,7 @@ struct serial_feature { }; std::string serialize_feature(serial_feature *sf, long long wx, long long wy); -serial_feature deserialize_feature(std::string const &geoms, unsigned z, unsigned tx, unsigned ty, unsigned *initial_x, unsigned *initial_y); +serial_feature deserialize_feature(std::string const &geoms, unsigned z, unsigned tx, unsigned ty, unsigned *initial_x, unsigned *initial_y, long long bbox[]); struct reader { int poolfd = -1; diff --git a/tile.cpp b/tile.cpp index 72eaddc7c..3fa552507 100644 --- a/tile.cpp +++ b/tile.cpp @@ -438,7 +438,7 @@ static std::vector disassemble_multiplier_clusters(std::vector *geompos, compressor *geomfile[], const char *fname, int child_shards, int max_zoom_increment, int segment, unsigned *initial_x, unsigned *initial_y) { +static void rewrite(serial_feature const &osf, int z, int nextzoom, int maxzoom, unsigned tx, unsigned ty, int buffer, int within[], std::atomic *geompos, compressor *geomfile[], const char *fname, int child_shards, int max_zoom_increment, int segment, unsigned *initial_x, unsigned *initial_y, long long osf_bbox[]) { if (osf.geometry.size() > 0 && (nextzoom <= maxzoom || additional[A_EXTEND_ZOOMS] || extend_zooms_max > 0)) { int xo, yo; int span = 1 << (nextzoom - z); @@ -449,7 +449,7 @@ static void rewrite(serial_feature const &osf, int z, int nextzoom, int maxzoom, int k; for (k = 0; k < 4; k++) { // Division instead of right-shift because coordinates can be negative - bbox2[k] = osf.bbox[k] / (1 << (32 - nextzoom - 8)); + bbox2[k] = osf_bbox[k] / (1 << (32 - nextzoom - 8)); } // Decrement the top and left edges so that any features that are // touching the edge can potentially be included in the adjacent tiles too. @@ -920,30 +920,30 @@ struct write_tile_args { // Clips a feature's geometry to the tile bounds at the specified zoom level // with the specified buffer. Returns true if the feature was entirely clipped away // by bounding box alone; otherwise returns false. -static bool clip_to_tile(serial_feature &sf, int z, long long buffer) { - int quick = quick_check(sf.bbox, z, buffer); +static bool clip_to_tile(serial_feature &sf, int z, long long buffer, long long sf_bbox[]) { + int quick = quick_check(sf_bbox, z, buffer); if (z == 0) { - if (sf.bbox[0] <= (1LL << 32) * buffer / 256 || sf.bbox[2] >= (1LL << 32) - ((1LL << 32) * buffer / 256)) { + if (sf_bbox[0] <= (1LL << 32) * buffer / 256 || sf_bbox[2] >= (1LL << 32) - ((1LL << 32) * buffer / 256)) { // If the geometry extends off the edge of the world, concatenate on another copy // shifted by 360 degrees, and then make sure both copies get clipped down to size. size_t n = sf.geometry.size(); - if (sf.bbox[0] <= (1LL << 32) * buffer / 256) { + if (sf_bbox[0] <= (1LL << 32) * buffer / 256) { for (size_t i = 0; i < n; i++) { sf.geometry.push_back(draw(sf.geometry[i].op, sf.geometry[i].x + (1LL << 32), sf.geometry[i].y)); } } - if (sf.bbox[2] >= (1LL << 32) - ((1LL << 32) * buffer / 256)) { + if (sf_bbox[2] >= (1LL << 32) - ((1LL << 32) * buffer / 256)) { for (size_t i = 0; i < n; i++) { sf.geometry.push_back(draw(sf.geometry[i].op, sf.geometry[i].x - (1LL << 32), sf.geometry[i].y)); } } - sf.bbox[0] = 0; - sf.bbox[2] = 1LL << 32; + sf_bbox[0] = 0; + sf_bbox[2] = 1LL << 32; quick = -1; } @@ -986,7 +986,7 @@ static bool clip_to_tile(serial_feature &sf, int z, long long buffer) { // that are duplicated across the date line if (prevent[P_DUPLICATION] && z != 0) { - if (point_within_tile((sf.bbox[0] + sf.bbox[2]) / 2, (sf.bbox[1] + sf.bbox[3]) / 2, z)) { + if (point_within_tile((sf_bbox[0] + sf_bbox[2]) / 2, (sf_bbox[1] + sf_bbox[3]) / 2, z)) { // sf.geometry is unchanged } else { sf.geometry.clear(); @@ -1060,7 +1060,8 @@ static serial_feature next_feature(decompressor *geoms, std::atomic * exit(EXIT_READ); } - sf = deserialize_feature(s, z, tx, ty, initial_x, initial_y); + long long sf_bbox[4]; + sf = deserialize_feature(s, z, tx, ty, initial_x, initial_y, sf_bbox); sf.stringpool = global_stringpool + pool_off[sf.segment]; size_t passes = pass + 1; @@ -1078,7 +1079,7 @@ static serial_feature next_feature(decompressor *geoms, std::atomic * (*original_features)++; - if (clip_to_tile(sf, z, buffer)) { + if (clip_to_tile(sf, z, buffer, sf_bbox)) { continue; } @@ -1090,7 +1091,7 @@ static serial_feature next_feature(decompressor *geoms, std::atomic * if (first_time && pass == 0) { /* only write out the next zoom once, even if we retry */ if (sf.tippecanoe_maxzoom == -1 || sf.tippecanoe_maxzoom >= nextzoom) { - rewrite(sf, z, nextzoom, maxzoom, tx, ty, buffer, within, geompos, geomfile, fname, child_shards, max_zoom_increment, sf.segment, initial_x, initial_y); + rewrite(sf, z, nextzoom, maxzoom, tx, ty, buffer, within, geompos, geomfile, fname, child_shards, max_zoom_increment, sf.segment, initial_x, initial_y, sf_bbox); } }