Add the ability to tippecanoe-decode into EPSG:3857 instead of WGS84

This commit is contained in:
Eric Fischer
2016-06-28 15:18:27 -07:00
parent e48e2152cc
commit 5d06f01e28
8 changed files with 136 additions and 30 deletions
+3
View File
@@ -101,6 +101,9 @@ pbf-test:
./tippecanoe-decode tests/pbf/11-328-791.vector.pbf 11 328 791 > tests/pbf/11-328-791.vector.pbf.out ./tippecanoe-decode tests/pbf/11-328-791.vector.pbf 11 328 791 > tests/pbf/11-328-791.vector.pbf.out
cmp tests/pbf/11-328-791.json tests/pbf/11-328-791.vector.pbf.out cmp tests/pbf/11-328-791.json tests/pbf/11-328-791.vector.pbf.out
rm tests/pbf/11-328-791.vector.pbf.out rm tests/pbf/11-328-791.vector.pbf.out
./tippecanoe-decode -t EPSG:3857 tests/pbf/11-328-791.vector.pbf 11 328 791 > tests/pbf/11-328-791.3857.vector.pbf.out
cmp tests/pbf/11-328-791.3857.json tests/pbf/11-328-791.3857.vector.pbf.out
rm tests/pbf/11-328-791.3857.vector.pbf.out
join-test: join-test:
./tippecanoe -f -z9 -z12 -o tests/join-population/tabblock_06001420.mbtiles tests/join-population/tabblock_06001420.json ./tippecanoe -f -z9 -z12 -o tests/join-population/tabblock_06001420.mbtiles tests/join-population/tabblock_06001420.json
+4
View File
@@ -351,3 +351,7 @@ If you decode an entire file, you get a nested `FeatureCollection` identifying e
tile and layer separately. Note that the same features generally appear at all zooms, tile and layer separately. Note that the same features generally appear at all zooms,
so the output for the file will have many copies of the same features at different so the output for the file will have many copies of the same features at different
resolutions. resolutions.
### Options
* -t _projection_: Specify the projection of the output data. Currently supported are EPSG:4326 (WGS84, the default) and EPSG:3857 (Web Mercator).
+12 -5
View File
@@ -165,7 +165,7 @@ void handle(std::string message, int z, unsigned x, unsigned y, int describe) {
long long wy = scale * y + (scale / extent) * py; long long wy = scale * y + (scale / extent) * py;
double lat, lon; double lat, lon;
tile2lonlat(wx, wy, 32, &lon, &lat); projection->unproject(wx, wy, 32, &lon, &lat);
ops.push_back(lonlat(op, lon, lat, px, py)); ops.push_back(lonlat(op, lon, lat, px, py));
} else { } else {
@@ -455,17 +455,24 @@ void decode(char *fname, int z, unsigned x, unsigned y) {
} }
void usage(char **argv) { void usage(char **argv) {
fprintf(stderr, "Usage: %s file.mbtiles zoom x y\n", argv[0]); fprintf(stderr, "Usage: %s [-t projection] file.mbtiles zoom x y\n", argv[0]);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
int main(int argc, char **argv) { int main(int argc, char **argv) {
extern int optind; extern int optind;
// extern char *optarg; extern char *optarg;
int i; int i;
while ((i = getopt(argc, argv, "")) != -1) { while ((i = getopt(argc, argv, "t:")) != -1) {
usage(argv); switch (i) {
case 't':
set_projection_or_exit(optarg);
break;
default:
usage(argv);
}
} }
if (argc == optind + 4) { if (argc == optind + 4) {
+3 -25
View File
@@ -1705,14 +1705,6 @@ static bool has_name(struct option *long_options, int *pl) {
return false; return false;
} }
struct projection projections[] = {
{"EPSG:4326", lonlat2tile, "urn:ogc:def:crs:OGC:1.3:CRS84"},
{"EPSG:3857", epsg3857totile, "urn:ogc:def:crs:EPSG::3857"},
{NULL, NULL},
};
struct projection *projection = &projections[0];
int main(int argc, char **argv) { int main(int argc, char **argv) {
#ifdef MTRACE #ifdef MTRACE
mtrace(); mtrace();
@@ -1987,23 +1979,9 @@ int main(int argc, char **argv) {
read_parallel = 1; read_parallel = 1;
break; break;
case 's': { case 's':
struct projection *p; set_projection_or_exit(optarg);
for (p = projections; p->name != NULL; p++) { break;
if (strcmp(p->name, optarg) == 0) {
projection = p;
break;
}
if (strcmp(p->alias, optarg) == 0) {
projection = p;
break;
}
}
if (p->name == NULL) {
fprintf(stderr, "Unknown projection (-s): %s\n", optarg);
exit(EXIT_FAILURE);
}
} break;
default: { default: {
int width = 7 + strlen(argv[0]); int width = 7 + strlen(argv[0]);
+5
View File
@@ -410,3 +410,8 @@ If you decode an entire file, you get a nested \fB\fCFeatureCollection\fR identi
tile and layer separately. Note that the same features generally appear at all zooms, tile and layer separately. Note that the same features generally appear at all zooms,
so the output for the file will have many copies of the same features at different so the output for the file will have many copies of the same features at different
resolutions. resolutions.
.SS Options
.RS
.IP \(bu 2
\-t \fIprojection\fP: Specify the projection of the output data. Currently supported are EPSG:4326 (WGS84, the default) and EPSG:3857 (Web Mercator).
.RE
+38
View File
@@ -1,7 +1,17 @@
#include <stdio.h> #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h> #include <math.h>
#include "projection.hpp" #include "projection.hpp"
struct projection projections[] = {
{"EPSG:4326", lonlat2tile, tile2lonlat, "urn:ogc:def:crs:OGC:1.3:CRS84"},
{"EPSG:3857", epsg3857totile, tiletoepsg3857, "urn:ogc:def:crs:EPSG::3857"},
{NULL, NULL},
};
struct projection *projection = &projections[0];
// http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames // http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
void lonlat2tile(double lon, double lat, int zoom, long long *x, long long *y) { void lonlat2tile(double lon, double lat, int zoom, long long *x, long long *y) {
// Must limit latitude somewhere to prevent overflow. // Must limit latitude somewhere to prevent overflow.
@@ -48,6 +58,16 @@ void epsg3857totile(double ix, double iy, int zoom, long long *x, long long *y)
} }
} }
void tiletoepsg3857(long long ix, long long iy, int zoom, double *ox, double *oy) {
if (zoom != 0) {
ix <<= (32 - zoom);
iy <<= (32 - zoom);
}
*ox = (ix - (1LL << 31)) * M_PI * 6378137.0 / (1LL << 31);
*oy = ((1LL << 32) - 1 - iy - (1LL << 31)) * M_PI * 6378137.0 / (1LL << 31);
}
unsigned long long encode(unsigned int wx, unsigned int wy) { unsigned long long encode(unsigned int wx, unsigned int wy) {
unsigned long long out = 0; unsigned long long out = 0;
@@ -72,3 +92,21 @@ void decode(unsigned long long index, unsigned *wx, unsigned *wy) {
*wy |= ((index >> (64 - 2 * (i + 1) + 0)) & 1) << (32 - (i + 1)); *wy |= ((index >> (64 - 2 * (i + 1) + 0)) & 1) << (32 - (i + 1));
} }
} }
void set_projection_or_exit(const char *optarg) {
struct projection *p;
for (p = projections; p->name != NULL; p++) {
if (strcmp(p->name, optarg) == 0) {
projection = p;
break;
}
if (strcmp(p->alias, optarg) == 0) {
projection = p;
break;
}
}
if (p->name == NULL) {
fprintf(stderr, "Unknown projection (-s): %s\n", optarg);
exit(EXIT_FAILURE);
}
}
+4
View File
@@ -1,13 +1,17 @@
void lonlat2tile(double lon, double lat, int zoom, long long *x, long long *y); void lonlat2tile(double lon, double lat, int zoom, long long *x, long long *y);
void epsg3857totile(double ix, double iy, int zoom, long long *x, long long *y); void epsg3857totile(double ix, double iy, int zoom, long long *x, long long *y);
void tile2lonlat(long long x, long long y, int zoom, double *lon, double *lat); void tile2lonlat(long long x, long long y, int zoom, double *lon, double *lat);
void tiletoepsg3857(long long x, long long y, int zoom, double *ox, double *oy);
unsigned long long encode(unsigned int wx, unsigned int wy); unsigned long long encode(unsigned int wx, unsigned int wy);
void decode(unsigned long long index, unsigned *wx, unsigned *wy); void decode(unsigned long long index, unsigned *wx, unsigned *wy);
void set_projection_or_exit(const char *optarg);
struct projection { struct projection {
const char *name; const char *name;
void (*project)(double ix, double iy, int zoom, long long *ox, long long *oy); void (*project)(double ix, double iy, int zoom, long long *ox, long long *oy);
void (*unproject)(long long ix, long long iy, int zoom, double *ox, double *oy);
const char *alias; const char *alias;
}; };
extern struct projection *projection; extern struct projection *projection;
extern struct projection projections[];
+67
View File
@@ -0,0 +1,67 @@
{ "type": "FeatureCollection", "properties": { "zoom": 11, "x": 328, "y": 791 }, "features": [
{ "type": "FeatureCollection", "properties": { "layer": "macarthur", "version": 1, "extent": 4096 }, "features": [
{ "type": "Feature", "properties": { "LINEARID": "1104485645649", "FULLNAME": "W Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13612111.421538, 4555240.804753 ], [ -13612183.081252, 4555231.250125 ], [ -13612426.724279, 4555159.590410 ], [ -13612522.270565, 4555145.258468 ], [ -13612646.480736, 4555111.817268 ], [ -13612665.589993, 4555130.926525 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104485605278", "FULLNAME": "W Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13612087.534966, 4555197.808925 ], [ -13612092.312281, 4555207.363553 ], [ -13612197.413195, 4555197.808925 ], [ -13612350.287251, 4555150.035782 ], [ -13612484.052051, 4555097.485325 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102156217102", "FULLNAME": "W Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13612054.093766, 4555216.918182 ], [ -13611858.223882, 4555207.363553 ], [ -13611633.690111, 4555173.922353 ], [ -13611232.395712, 4555092.708011 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102157651658", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13611222.841084, 4555092.708011 ], [ -13611232.395712, 4555092.708011 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104475134288", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13609288.028805, 4554079.917386 ], [ -13609316.692691, 4554247.123385 ], [ -13609359.688519, 4554323.560414 ], [ -13609536.449147, 4554481.211784 ], [ -13609550.781090, 4554505.098356 ], [ -13609660.659318, 4554605.421955 ], [ -13609708.432461, 4554638.863155 ], [ -13609842.197260, 4554696.190927 ], [ -13609966.407431, 4554739.186755 ], [ -13610343.815259, 4554849.064983 ], [ -13610534.907829, 4554958.943211 ], [ -13610678.227257, 4555001.939040 ], [ -13611829.559996, 4555226.472810 ], [ -13611996.765995, 4555245.582067 ], [ -13612111.421538, 4555240.804753 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104475134436", "FULLNAME": "W Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13609288.028805, 4554079.917386 ], [ -13609316.692691, 4554247.123385 ], [ -13609359.688519, 4554323.560414 ], [ -13609536.449147, 4554481.211784 ], [ -13609550.781090, 4554505.098356 ], [ -13609627.218118, 4554576.758070 ], [ -13609708.432461, 4554638.863155 ], [ -13609842.197260, 4554696.190927 ], [ -13609966.407431, 4554739.186755 ], [ -13610343.815259, 4554849.064983 ], [ -13610534.907829, 4554958.943211 ], [ -13610625.676800, 4554987.607097 ], [ -13610792.882800, 4555025.825611 ], [ -13611638.467425, 4555188.254296 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104486392881", "FULLNAME": "W Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13609335.801948, 4554232.791443 ], [ -13609364.465834, 4554299.673842 ], [ -13609388.352405, 4554328.337728 ], [ -13609708.432461, 4554614.976584 ], [ -13609770.537546, 4554648.417784 ], [ -13609985.516689, 4554729.632126 ], [ -13610329.483316, 4554825.178412 ], [ -13610420.252287, 4554868.174240 ], [ -13610539.685144, 4554944.611268 ], [ -13610582.680972, 4554958.943211 ], [ -13610683.004572, 4554987.607097 ], [ -13611222.841084, 4555092.708011 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102407366406", "FULLNAME": "W Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13609302.360748, 4554036.921558 ], [ -13609302.360748, 4554075.140072 ], [ -13609335.801948, 4554232.791443 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102156510290", "FULLNAME": "W Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13609268.919548, 4554008.257672 ], [ -13609288.028805, 4554079.917386 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104485773833", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13609120.822806, 4553635.627159 ], [ -13609187.705206, 4553755.060016 ], [ -13609278.474177, 4553884.047501 ], [ -13609297.583434, 4553989.148415 ], [ -13609302.360748, 4554075.140072 ], [ -13609335.801948, 4554232.791443 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102654602215", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13609120.822806, 4553635.627159 ], [ -13609087.381606, 4553568.744759 ], [ -13609073.049663, 4553511.416988 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1105089436004", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13609073.049663, 4553511.416988 ], [ -13609034.831149, 4553377.652189 ], [ -13608948.839492, 4553148.341104 ], [ -13608896.289035, 4552885.588819 ], [ -13608881.957093, 4552842.592991 ], [ -13608848.515893, 4552780.487905 ], [ -13608776.856179, 4552718.382820 ], [ -13608690.864522, 4552651.500420 ], [ -13608662.200636, 4552637.168477 ], [ -13608475.885380, 4552565.508763 ], [ -13608394.671037, 4552512.958306 ], [ -13608002.931267, 4552350.529621 ], [ -13607979.044696, 4552336.197678 ], [ -13607916.939611, 4552274.092593 ], [ -13607869.166468, 4552207.210193 ], [ -13607850.057211, 4552192.878250 ], [ -13607783.174811, 4552164.214365 ], [ -13607654.187326, 4552154.659736 ], [ -13607501.313269, 4552044.781508 ], [ -13607252.892927, 4551939.680594 ], [ -13607100.018871, 4551825.025052 ], [ -13607014.027214, 4551777.251909 ], [ -13606550.627730, 4551332.961682 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104469713198", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13607864.389154, 4552240.651393 ], [ -13607883.498411, 4552269.315278 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104469713187", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13607864.389154, 4552240.651393 ], [ -13607854.834525, 4552221.542136 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102638069562", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13607864.389154, 4552240.651393 ], [ -13607854.834525, 4552226.319450 ], [ -13607859.611839, 4552216.764822 ], [ -13607826.170639, 4552188.100936 ], [ -13607744.956297, 4552168.991679 ], [ -13607673.296583, 4552168.991679 ], [ -13607630.300754, 4552154.659736 ], [ -13607525.199841, 4552068.668079 ], [ -13607391.435041, 4552006.562994 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102156248968", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13607391.435041, 4552006.562994 ], [ -13607219.451727, 4551949.235223 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102638078801", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13606493.299959, 4551442.839910 ], [ -13606340.425902, 4551404.621396 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1103717593123", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13606340.425902, 4551404.621396 ], [ -13605518.727848, 4551213.528825 ], [ -13605480.509334, 4551213.528825 ], [ -13605451.845448, 4551232.638082 ], [ -13605389.740363, 4551332.961682 ], [ -13605341.967220, 4551361.625568 ], [ -13605327.635277, 4551361.625568 ], [ -13605093.546878, 4551285.188539 ], [ -13605026.664479, 4551256.524654 ], [ -13604687.475166, 4551156.201054 ], [ -13604252.739567, 4551012.881626 ], [ -13604209.743739, 4551008.104312 ], [ -13604138.084025, 4551027.213569 ], [ -13604099.865511, 4551027.213569 ], [ -13603765.453512, 4550831.343684 ], [ -13603373.713742, 4550425.271971 ], [ -13602661.893916, 4549426.813289 ], [ -13602499.465231, 4549240.498033 ], [ -13602418.250888, 4549192.724890 ], [ -13602131.612032, 4549125.842490 ], [ -13602026.511118, 4549078.069348 ], [ -13601954.851404, 4549054.182776 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1103717593124", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13606340.425902, 4551404.621396 ], [ -13606240.102303, 4551371.180196 ], [ -13605509.173220, 4551203.974197 ], [ -13605480.509334, 4551203.974197 ], [ -13605447.068134, 4551223.083454 ], [ -13605380.185734, 4551328.184368 ], [ -13605351.521849, 4551347.293625 ], [ -13605313.303335, 4551347.293625 ], [ -13605169.983907, 4551304.297796 ], [ -13604993.223279, 4551232.638082 ], [ -13604921.563565, 4551218.306140 ], [ -13604577.596937, 4551113.205226 ], [ -13604247.962253, 4551003.326997 ], [ -13604200.189110, 4550998.549683 ], [ -13604138.084025, 4551017.658940 ], [ -13604104.642825, 4551017.658940 ], [ -13603784.562769, 4550831.343684 ], [ -13603483.591970, 4550525.595571 ], [ -13603316.385971, 4550329.725686 ], [ -13602671.448544, 4549422.035975 ], [ -13602489.910602, 4549226.166090 ], [ -13602394.364317, 4549178.392947 ], [ -13602150.721289, 4549121.065176 ], [ -13602050.397690, 4549082.846662 ], [ -13601978.737976, 4549035.073519 ], [ -13601940.519462, 4548929.972605 ], [ -13601902.300947, 4548772.321234 ], [ -13601811.531976, 4548490.459693 ], [ -13601792.422719, 4548399.690722 ], [ -13601806.754662, 4548208.598151 ], [ -13601892.746319, 4548127.383808 ], [ -13601902.300947, 4548108.274551 ], [ -13601902.300947, 4548070.056037 ], [ -13601806.754662, 4547945.845866 ], [ -13601663.435234, 4547797.749124 ], [ -13601606.107463, 4547754.753295 ], [ -13601510.561177, 4547874.186152 ], [ -13601462.788035, 4547902.850038 ], [ -13601367.241749, 4547826.413009 ], [ -13601171.371864, 4547687.870896 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102156241736", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13602580.679573, 4549288.271175 ], [ -13602614.120773, 4549355.153575 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104486090991", "FULLNAME": "Macarthur Fwy", "RTTYP": "M", "MTFCC": "S1100" }, "geometry": { "type": "LineString", "coordinates": [ [ -13613769.149589, 4555866.632922 ], [ -13613721.376446, 4555737.645437 ], [ -13613687.935246, 4555494.002409 ], [ -13613687.935246, 4555302.909839 ], [ -13613664.048675, 4555236.027439 ], [ -13613635.384789, 4555193.031610 ], [ -13613582.834332, 4555140.481153 ], [ -13613324.859362, 4554968.497840 ], [ -13613257.976962, 4554939.833954 ], [ -13613210.203819, 4554930.279326 ], [ -13613038.220506, 4554925.502011 ], [ -13612536.602508, 4555044.934868 ], [ -13612450.610851, 4555059.266811 ], [ -13612345.509937, 4555059.266811 ], [ -13612288.182166, 4555049.712182 ], [ -13611987.211367, 4554963.720526 ], [ -13611609.803540, 4554839.510355 ], [ -13611084.298970, 4554696.190927 ], [ -13610883.651771, 4554624.531212 ], [ -13610740.332343, 4554591.090013 ], [ -13610582.680972, 4554538.539556 ], [ -13610181.386574, 4554438.215956 ], [ -13609937.743546, 4554342.669671 ], [ -13609818.310689, 4554285.341899 ], [ -13609622.440804, 4554165.909043 ], [ -13609469.566748, 4554065.585443 ], [ -13609402.684348, 4554013.034986 ], [ -13609283.251491, 4553917.488701 ], [ -13609216.369091, 4553850.606301 ], [ -13609120.822806, 4553735.950759 ], [ -13609082.604292, 4553678.622987 ], [ -13608996.612635, 4553487.530417 ], [ -13608953.616807, 4553320.324417 ], [ -13608877.179778, 4552952.471219 ], [ -13608853.293207, 4552880.811505 ], [ -13608805.520064, 4552799.597162 ], [ -13608752.969607, 4552732.714762 ], [ -13608652.646008, 4552661.055048 ], [ -13607902.607668, 4552379.193507 ], [ -13607654.187326, 4552250.206021 ], [ -13607252.892927, 4552016.117622 ], [ -13607066.577671, 4551882.352823 ], [ -13606942.367500, 4551777.251909 ], [ -13606627.064758, 4551457.171853 ], [ -13606550.627730, 4551395.066767 ], [ -13606450.304130, 4551337.738996 ], [ -13606283.098131, 4551280.411225 ], [ -13605561.723677, 4551089.318654 ], [ -13605079.214935, 4550945.999226 ], [ -13604998.000593, 4550907.780712 ], [ -13604768.689508, 4550845.675627 ], [ -13604596.706194, 4550788.347855 ], [ -13604482.050652, 4550740.574713 ], [ -13604362.617795, 4550678.469627 ], [ -13604286.180767, 4550625.919170 ], [ -13603970.878025, 4550439.603914 ], [ -13603880.109054, 4550377.498828 ], [ -13603789.340083, 4550301.061800 ], [ -13603708.125741, 4550210.292829 ], [ -13603354.604485, 4549737.338717 ], [ -13603268.612828, 4549651.347060 ], [ -13603192.175800, 4549589.241974 ], [ -13603077.520257, 4549512.804946 ], [ -13602575.902259, 4549202.279519 ], [ -13602408.696260, 4549121.065176 ], [ -13602284.486089, 4549073.292033 ], [ -13602150.721289, 4549030.296205 ], [ -13602016.956490, 4549001.632319 ], [ -13601835.418548, 4548977.745748 ], [ -13601768.536148, 4548977.745748 ], [ -13601644.325977, 4548963.413805 ], [ -13600965.947351, 4548939.527234 ], [ -13600822.627923, 4548901.308720 ], [ -13600311.455296, 4548528.678207 ], [ -13599871.942384, 4548232.484722 ], [ -13599676.072499, 4548113.051865 ], [ -13599422.874842, 4547974.509752 ], [ -13599293.887357, 4547898.072723 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104474748623", "FULLNAME": "Macarthur Fwy", "RTTYP": "M", "MTFCC": "S1100" }, "geometry": { "type": "LineString", "coordinates": [ [ -13599293.887357, 4547926.736609 ], [ -13599676.072499, 4548141.715751 ], [ -13599881.497012, 4548265.925922 ], [ -13599929.270155, 4548304.144436 ], [ -13600340.119182, 4548576.451349 ], [ -13600469.106667, 4548676.774949 ], [ -13600617.203409, 4548805.762434 ], [ -13600688.863123, 4548858.312891 ], [ -13600798.741351, 4548920.417977 ], [ -13600989.833922, 4548968.191119 ], [ -13601668.212548, 4548992.077691 ], [ -13601978.737976, 4549020.741576 ], [ -13602227.158318, 4549082.846662 ], [ -13602375.255060, 4549135.397119 ], [ -13602571.124945, 4549230.943404 ], [ -13603125.293400, 4549579.687346 ], [ -13603220.839685, 4549651.347060 ], [ -13603349.827171, 4549780.334545 ], [ -13603445.373456, 4549899.767402 ], [ -13603660.352598, 4550195.960886 ], [ -13603717.680369, 4550267.620600 ], [ -13603813.226654, 4550363.166886 ], [ -13603951.768768, 4550463.490485 ], [ -13604233.630310, 4550635.473799 ], [ -13604467.718709, 4550764.461284 ], [ -13604692.252480, 4550850.452941 ], [ -13604945.450136, 4550922.112655 ], [ -13605432.736191, 4551084.541340 ], [ -13605934.354189, 4551208.751511 ], [ -13606211.438417, 4551289.965854 ], [ -13606283.098131, 4551304.297796 ], [ -13606412.085616, 4551347.293625 ], [ -13606493.299959, 4551390.289453 ], [ -13606603.178187, 4551471.503796 ], [ -13606985.363328, 4551853.688937 ], [ -13607186.010528, 4552006.562994 ], [ -13607329.329956, 4552092.554651 ], [ -13607840.502582, 4552383.970821 ], [ -13607916.939611, 4552417.412021 ], [ -13608576.208980, 4552656.277734 ], [ -13608676.532579, 4552704.050877 ], [ -13608762.524236, 4552785.265219 ], [ -13608829.406636, 4552895.143448 ], [ -13608848.515893, 4552952.471219 ], [ -13608972.726064, 4553497.085045 ], [ -13609030.053835, 4553635.627159 ], [ -13609101.713549, 4553755.060016 ], [ -13609173.373263, 4553845.828987 ], [ -13609307.138062, 4553979.593786 ], [ -13609603.331547, 4554199.350243 ], [ -13609799.201432, 4554314.005785 ], [ -13610014.180574, 4554414.329385 ], [ -13610143.168059, 4554457.325213 ], [ -13610816.769371, 4554638.863155 ], [ -13610931.424914, 4554677.081669 ], [ -13611003.084628, 4554691.413612 ], [ -13611528.589197, 4554868.174240 ], [ -13612273.850223, 4555083.153382 ], [ -13612374.173822, 4555102.262639 ], [ -13612555.711765, 4555092.708011 ], [ -13612914.010335, 4554992.384411 ], [ -13613052.552448, 4554978.052468 ], [ -13613234.090391, 4555021.048297 ], [ -13613425.182961, 4555107.039954 ], [ -13613520.729247, 4555164.367725 ], [ -13613578.057018, 4555221.695496 ], [ -13613621.052846, 4555293.355210 ], [ -13613644.939418, 4555417.565381 ], [ -13613635.384789, 4555570.439438 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1104485773387", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13602580.679573, 4549288.271175 ], [ -13602542.461059, 4549230.943404 ], [ -13602475.578660, 4549154.506376 ], [ -13602442.137460, 4549121.065176 ], [ -13602351.368489, 4549058.960090 ], [ -13601997.847233, 4548934.749920 ], [ -13601973.960661, 4548925.195291 ], [ -13601950.074090, 4548901.308720 ], [ -13601821.086605, 4548490.459693 ], [ -13601801.977348, 4548390.136093 ], [ -13601811.531976, 4548222.930094 ], [ -13601907.078262, 4548127.383808 ], [ -13601916.632890, 4548103.497237 ], [ -13601916.632890, 4548074.833351 ], [ -13601911.855576, 4548060.501409 ], [ -13601816.309291, 4547941.068552 ], [ -13601682.544491, 4547802.526438 ], [ -13601620.439406, 4547754.753295 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102155930810", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13601610.884777, 4547759.530610 ], [ -13601591.775520, 4547788.194495 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1103690483032", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13601467.565349, 4547912.404666 ], [ -13601085.380208, 4547640.097753 ], [ -13600985.056608, 4547544.551468 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102654601627", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13601171.371864, 4547687.870896 ], [ -13601147.485293, 4547673.538953 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102406970092", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13601147.485293, 4547673.538953 ], [ -13601056.716322, 4547606.656553 ], [ -13600989.833922, 4547534.996839 ], [ -13600951.615408, 4547506.332953 ], [ -13600870.401066, 4547420.341297 ], [ -13600789.186723, 4547348.681583 ], [ -13600660.199238, 4547181.475583 ], [ -13600263.682154, 4546937.832556 ], [ -13600254.127525, 4546942.609870 ], [ -13600125.140040, 4546870.950156 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1103690483026", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13600617.203409, 4547162.366326 ], [ -13600502.547867, 4547095.483926 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102406970093", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13600144.249297, 4546866.172842 ], [ -13600129.917354, 4546861.395527 ], [ -13599905.383583, 4546665.525642 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102654601663", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13599876.719698, 4546646.416385 ], [ -13599905.383583, 4546665.525642 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1102954918511", "FULLNAME": "Macarthur", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13600125.140040, 4546870.950156 ], [ -13599709.513698, 4546507.874271 ], [ -13599676.072499, 4546469.655757 ], [ -13599513.643813, 4546240.344672 ], [ -13599293.887357, 4545910.709988 ] ] } }
,
{ "type": "Feature", "properties": { "LINEARID": "1105089465114", "FULLNAME": "Macarthur Blvd", "RTTYP": "M", "MTFCC": "S1400" }, "geometry": { "type": "LineString", "coordinates": [ [ -13599876.719698, 4546646.416385 ], [ -13599719.068327, 4546503.096957 ], [ -13599676.072499, 4546450.546500 ], [ -13599537.530385, 4546254.676615 ], [ -13599293.887357, 4545891.600731 ] ] } }
] }
] }