mirror of
https://github.com/mapbox/tippecanoe.git
synced 2025-02-02 09:18:21 +00:00
Merge branch 'master' into inline-meta2
Conflicts: tile.cpp
This commit is contained in:
commit
4638c6f273
@ -1,3 +1,12 @@
|
|||||||
|
## 1.11.6
|
||||||
|
|
||||||
|
* Reduce the size of critical data structures to reduce dynamic memory use
|
||||||
|
|
||||||
|
## 1.11.5
|
||||||
|
|
||||||
|
* Let zoom level 0 have just as much extent and buffer as any other zoom
|
||||||
|
* Fix tippecanoe-decode bug that would sometimes show outer rings as inner
|
||||||
|
|
||||||
## 1.11.4
|
## 1.11.4
|
||||||
|
|
||||||
* Don't let polygons with nonzero area disappear during cleaning
|
* Don't let polygons with nonzero area disappear during cleaning
|
||||||
|
24
decode.cpp
24
decode.cpp
@ -33,11 +33,15 @@ struct lonlat {
|
|||||||
int op;
|
int op;
|
||||||
double lon;
|
double lon;
|
||||||
double lat;
|
double lat;
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
|
||||||
lonlat(int nop, double nlon, double nlat) {
|
lonlat(int nop, double nlon, double nlat, int nx, int ny) {
|
||||||
this->op = nop;
|
this->op = nop;
|
||||||
this->lon = nlon;
|
this->lon = nlon;
|
||||||
this->lat = nlat;
|
this->lat = nlat;
|
||||||
|
this->x = nx;
|
||||||
|
this->y = ny;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -156,9 +160,9 @@ void handle(std::string message, int z, unsigned x, unsigned y, int describe) {
|
|||||||
double lat, lon;
|
double lat, lon;
|
||||||
tile2latlon(wx, wy, 32, &lat, &lon);
|
tile2latlon(wx, wy, 32, &lat, &lon);
|
||||||
|
|
||||||
ops.push_back(lonlat(op, lon, lat));
|
ops.push_back(lonlat(op, lon, lat, px, py));
|
||||||
} else {
|
} else {
|
||||||
ops.push_back(lonlat(op, 0, 0));
|
ops.push_back(lonlat(op, 0, 0, 0, 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,23 +227,27 @@ void handle(std::string message, int z, unsigned x, unsigned y, int describe) {
|
|||||||
|
|
||||||
int n = rings.size() - 1;
|
int n = rings.size() - 1;
|
||||||
if (n >= 0) {
|
if (n >= 0) {
|
||||||
|
if (ops[i].op == VT_CLOSEPATH) {
|
||||||
|
rings[n].push_back(rings[n][0]);
|
||||||
|
} else {
|
||||||
rings[n].push_back(ops[i]);
|
rings[n].push_back(ops[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int outer = 0;
|
int outer = 0;
|
||||||
|
|
||||||
for (size_t i = 0; i < rings.size(); i++) {
|
for (size_t i = 0; i < rings.size(); i++) {
|
||||||
double area = 0;
|
long double area = 0;
|
||||||
for (size_t k = 0; k < rings[i].size(); k++) {
|
for (size_t k = 0; k < rings[i].size(); k++) {
|
||||||
if (rings[i][k].op != VT_CLOSEPATH) {
|
if (rings[i][k].op != VT_CLOSEPATH) {
|
||||||
area += rings[i][k].lon * rings[i][(k + 1) % rings[i].size()].lat;
|
area += rings[i][k].x * rings[i][(k + 1) % rings[i].size()].y;
|
||||||
area -= rings[i][k].lat * rings[i][(k + 1) % rings[i].size()].lon;
|
area -= rings[i][k].y * rings[i][(k + 1) % rings[i].size()].x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
areas[i] = area;
|
areas[i] = area;
|
||||||
if (areas[i] <= 0 || i == 0) {
|
if (areas[i] >= 0 || i == 0) {
|
||||||
outer++;
|
outer++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -254,7 +262,7 @@ void handle(std::string message, int z, unsigned x, unsigned y, int describe) {
|
|||||||
|
|
||||||
int state = 0;
|
int state = 0;
|
||||||
for (size_t i = 0; i < rings.size(); i++) {
|
for (size_t i = 0; i < rings.size(); i++) {
|
||||||
if (areas[i] <= 0) {
|
if (areas[i] >= 0) {
|
||||||
if (state != 0) {
|
if (state != 0) {
|
||||||
// new multipolygon
|
// new multipolygon
|
||||||
printf(" ] ], [ [ ");
|
printf(" ] ], [ [ ");
|
||||||
|
32
geometry.cpp
32
geometry.cpp
@ -450,10 +450,7 @@ drawvec clean_or_clip_poly(drawvec &geom, int z, int detail, int buffer, bool cl
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (clip) {
|
if (clip) {
|
||||||
long long area = 0xFFFFFFFF;
|
long long area = 1LL << (32 - z);
|
||||||
if (z != 0) {
|
|
||||||
area = 1LL << (32 - z);
|
|
||||||
}
|
|
||||||
long long clip_buffer = buffer * area / 256;
|
long long clip_buffer = buffer * area / 256;
|
||||||
|
|
||||||
ClipperLib::Path edge;
|
ClipperLib::Path edge;
|
||||||
@ -770,11 +767,7 @@ drawvec simple_clip_poly(drawvec &geom, long long minx, long long miny, long lon
|
|||||||
}
|
}
|
||||||
|
|
||||||
drawvec simple_clip_poly(drawvec &geom, int z, int detail, int buffer) {
|
drawvec simple_clip_poly(drawvec &geom, int z, int detail, int buffer) {
|
||||||
long long area = 0xFFFFFFFF;
|
long long area = 1LL << (32 - z);
|
||||||
if (z != 0) {
|
|
||||||
area = 1LL << (32 - z);
|
|
||||||
}
|
|
||||||
|
|
||||||
long long clip_buffer = buffer * area / 256;
|
long long clip_buffer = buffer * area / 256;
|
||||||
|
|
||||||
return simple_clip_poly(geom, -clip_buffer, -clip_buffer, area + clip_buffer, area + clip_buffer);
|
return simple_clip_poly(geom, -clip_buffer, -clip_buffer, area + clip_buffer, area + clip_buffer);
|
||||||
@ -863,13 +856,10 @@ drawvec clip_point(drawvec &geom, int z, int detail, long long buffer) {
|
|||||||
drawvec out;
|
drawvec out;
|
||||||
|
|
||||||
long long min = 0;
|
long long min = 0;
|
||||||
long long area = 0xFFFFFFFF;
|
long long area = 1LL << (32 - z);
|
||||||
if (z != 0) {
|
|
||||||
area = 1LL << (32 - z);
|
|
||||||
|
|
||||||
min -= buffer * area / 256;
|
min -= buffer * area / 256;
|
||||||
area += buffer * area / 256;
|
area += buffer * area / 256;
|
||||||
}
|
|
||||||
|
|
||||||
for (size_t i = 0; i < geom.size(); i++) {
|
for (size_t i = 0; i < geom.size(); i++) {
|
||||||
if (geom[i].x >= min && geom[i].y >= min && geom[i].x <= area && geom[i].y <= area) {
|
if (geom[i].x >= min && geom[i].y >= min && geom[i].x <= area && geom[i].y <= area) {
|
||||||
@ -882,13 +872,10 @@ drawvec clip_point(drawvec &geom, int z, int detail, long long buffer) {
|
|||||||
|
|
||||||
int quick_check(long long *bbox, int z, int detail, long long buffer) {
|
int quick_check(long long *bbox, int z, int detail, long long buffer) {
|
||||||
long long min = 0;
|
long long min = 0;
|
||||||
long long area = 0xFFFFFFFF;
|
long long area = 1LL << (32 - z);
|
||||||
if (z != 0) {
|
|
||||||
area = 1LL << (32 - z);
|
|
||||||
|
|
||||||
min -= buffer * area / 256;
|
min -= buffer * area / 256;
|
||||||
area += buffer * area / 256;
|
area += buffer * area / 256;
|
||||||
}
|
|
||||||
|
|
||||||
// bbox entirely outside the tile
|
// bbox entirely outside the tile
|
||||||
if (bbox[0] > area || bbox[1] > area) {
|
if (bbox[0] > area || bbox[1] > area) {
|
||||||
@ -920,13 +907,9 @@ drawvec clip_lines(drawvec &geom, int z, int detail, long long buffer) {
|
|||||||
drawvec out;
|
drawvec out;
|
||||||
|
|
||||||
long long min = 0;
|
long long min = 0;
|
||||||
long long area = 0xFFFFFFFF;
|
long long area = 1LL << (32 - z);
|
||||||
if (z != 0) {
|
|
||||||
area = 1LL << (32 - z);
|
|
||||||
|
|
||||||
min -= buffer * area / 256;
|
min -= buffer * area / 256;
|
||||||
area += buffer * area / 256;
|
area += buffer * area / 256;
|
||||||
}
|
|
||||||
|
|
||||||
for (size_t i = 0; i < geom.size(); i++) {
|
for (size_t i = 0; i < geom.size(); i++) {
|
||||||
if (i > 0 && (geom[i - 1].op == VT_MOVETO || geom[i - 1].op == VT_LINETO) && geom[i].op == VT_LINETO) {
|
if (i > 0 && (geom[i - 1].op == VT_MOVETO || geom[i - 1].op == VT_LINETO) && geom[i].op == VT_LINETO) {
|
||||||
@ -1070,10 +1053,7 @@ drawvec impose_tile_boundaries(drawvec &geom, long long extent) {
|
|||||||
|
|
||||||
drawvec simplify_lines(drawvec &geom, int z, int detail, bool mark_tile_bounds) {
|
drawvec simplify_lines(drawvec &geom, int z, int detail, bool mark_tile_bounds) {
|
||||||
int res = 1 << (32 - detail - z);
|
int res = 1 << (32 - detail - z);
|
||||||
long long area = 0xFFFFFFFF;
|
long long area = 1LL << (32 - z);
|
||||||
if (z != 0) {
|
|
||||||
area = 1LL << (32 - z);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (size_t i = 0; i < geom.size(); i++) {
|
for (size_t i = 0; i < geom.size(); i++) {
|
||||||
if (geom[i].op == VT_MOVETO) {
|
if (geom[i].op == VT_MOVETO) {
|
||||||
|
@ -11,11 +11,14 @@
|
|||||||
#define VT_NUMBER 2
|
#define VT_NUMBER 2
|
||||||
#define VT_BOOLEAN 7
|
#define VT_BOOLEAN 7
|
||||||
|
|
||||||
|
// The bitfield is to make sizeof(draw) be 16 instead of 24
|
||||||
|
// at the cost, apparently, of a 0.7% increase in running time
|
||||||
|
// for packing and unpacking.
|
||||||
struct draw {
|
struct draw {
|
||||||
|
long long x : 40;
|
||||||
signed char op;
|
signed char op;
|
||||||
long long x;
|
long long y : 40;
|
||||||
long long y;
|
signed char necessary;
|
||||||
int necessary;
|
|
||||||
|
|
||||||
draw(int nop, long long nx, long long ny) {
|
draw(int nop, long long nx, long long ny) {
|
||||||
this->op = nop;
|
this->op = nop;
|
||||||
|
6
mvt.hpp
6
mvt.hpp
@ -8,9 +8,9 @@ enum mvt_operation {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct mvt_geometry {
|
struct mvt_geometry {
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
int /* mvt_operation */ op;
|
int /* mvt_operation */ op;
|
||||||
long long x;
|
|
||||||
long long y;
|
|
||||||
|
|
||||||
mvt_geometry(int op, long long x, long long y);
|
mvt_geometry(int op, long long x, long long y);
|
||||||
};
|
};
|
||||||
@ -23,8 +23,8 @@ enum mvt_geometry_type {
|
|||||||
|
|
||||||
struct mvt_feature {
|
struct mvt_feature {
|
||||||
std::vector<unsigned> tags;
|
std::vector<unsigned> tags;
|
||||||
int /* mvt_geometry_type */ type;
|
|
||||||
std::vector<mvt_geometry> geometry;
|
std::vector<mvt_geometry> geometry;
|
||||||
|
int /* mvt_geometry_type */ type;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum mvt_value_type {
|
enum mvt_value_type {
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
}, "features": [
|
}, "features": [
|
||||||
{ "type": "FeatureCollection", "properties": { "zoom": 0, "x": 0, "y": 0 }, "features": [
|
{ "type": "FeatureCollection", "properties": { "zoom": 0, "x": 0, "y": 0 }, "features": [
|
||||||
{ "type": "FeatureCollection", "properties": { "layer": "in" }, "features": [
|
{ "type": "FeatureCollection", "properties": { "layer": "in" }, "features": [
|
||||||
{ "type": "Feature", "properties": { "boolean": true, "otherboolean": false, "stringify": "[\"yes\",27.00000000,27,1.4e27,{\"foo\":\"bar\"}]", "escape": "foo\u0001bar,ü\"\\/\u0008\u000c\u000a\u000d\u0009→", "prêt": "ready" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -177.539062, 44.339565 ], [ -164.882812, 43.389082 ], [ -153.281250, 46.619261 ], [ -144.492188, 51.179343 ], [ -143.789062, 57.183902 ], [ -148.007812, 61.100789 ], [ -158.554688, 63.860036 ], [ -169.453125, 64.510643 ], [ -177.890625, 62.593341 ], [ -180.000000, 61.689872 ], [ -185.976562, 58.859224 ], [ -187.031250, 56.992883 ], [ -187.031250, 65.730626 ], [ -182.460938, 67.339861 ], [ -180.000000, 67.542167 ], [ -169.101562, 68.269387 ], [ -156.093750, 68.138852 ], [ -144.492188, 66.089364 ], [ -134.648438, 62.431074 ], [ -131.835938, 55.379110 ], [ -133.593750, 48.690960 ], [ -146.250000, 38.616870 ], [ -169.453125, 34.957995 ], [ -180.000000, 36.527295 ], [ -184.218750, 37.160317 ], [ -187.031250, 38.891033 ], [ -187.031250, 50.457504 ], [ -185.976562, 47.279229 ], [ -177.539062, 44.339565 ] ], [ [ 186.943359, 35.460670 ], [ 179.912109, 36.527295 ], [ 175.781250, 37.160317 ], [ 161.718750, 45.336702 ], [ 156.796875, 55.028022 ], [ 163.476562, 62.431074 ], [ 170.507812, 64.811557 ], [ 177.539062, 67.339861 ], [ 179.912109, 67.542167 ], [ 186.943359, 68.007571 ], [ 186.943359, 63.743631 ], [ 182.109375, 62.593341 ], [ 179.912109, 61.689872 ], [ 174.023438, 58.859224 ], [ 171.562500, 54.418930 ], [ 174.023438, 47.279229 ], [ 179.912109, 45.274886 ], [ 182.460938, 44.339565 ], [ 186.943359, 44.024422 ], [ 186.943359, 35.460670 ] ] ] } }
|
{ "type": "Feature", "properties": { "boolean": true, "otherboolean": false, "stringify": "[\"yes\",27.00000000,27,1.4e27,{\"foo\":\"bar\"}]", "escape": "foo\u0001bar,ü\"\\/\u0008\u000c\u000a\u000d\u0009→", "prêt": "ready" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -177.539062, 44.339565 ], [ -164.882812, 43.389082 ], [ -153.281250, 46.619261 ], [ -144.492188, 51.179343 ], [ -143.789062, 57.183902 ], [ -148.007812, 61.100789 ], [ -158.554688, 63.860036 ], [ -169.453125, 64.510643 ], [ -177.890625, 62.593341 ], [ -180.000000, 61.689872 ], [ -185.976562, 58.859224 ], [ -187.031250, 56.992883 ], [ -187.031250, 65.730626 ], [ -182.460938, 67.339861 ], [ -180.000000, 67.542167 ], [ -169.101562, 68.269387 ], [ -156.093750, 68.138852 ], [ -144.492188, 66.089364 ], [ -134.648438, 62.431074 ], [ -131.835938, 55.379110 ], [ -133.593750, 48.690960 ], [ -146.250000, 38.616870 ], [ -169.453125, 34.957995 ], [ -180.000000, 36.527295 ], [ -184.218750, 37.160317 ], [ -187.031250, 38.891033 ], [ -187.031250, 50.457504 ], [ -185.976562, 47.279229 ], [ -177.539062, 44.339565 ] ] ], [ [ [ 187.031250, 35.460670 ], [ 175.781250, 37.160317 ], [ 161.718750, 45.336702 ], [ 156.796875, 55.028022 ], [ 163.476562, 62.431074 ], [ 170.507812, 64.811557 ], [ 177.539062, 67.339861 ], [ 180.000000, 67.542167 ], [ 187.031250, 68.007571 ], [ 187.031250, 63.743631 ], [ 182.109375, 62.593341 ], [ 180.000000, 61.689872 ], [ 174.023438, 58.859224 ], [ 171.562500, 54.418930 ], [ 174.023438, 47.279229 ], [ 182.460938, 44.339565 ], [ 187.031250, 44.024422 ], [ 187.031250, 35.460670 ] ] ] ] } }
|
||||||
,
|
,
|
||||||
{ "type": "Feature", "properties": { "zoom": "z0-2" }, "geometry": { "type": "LineString", "coordinates": [ [ -112.851562, 55.178868 ], [ -117.773438, 44.590467 ], [ -104.414062, 51.179343 ] ] } }
|
{ "type": "Feature", "properties": { "zoom": "z0-2" }, "geometry": { "type": "LineString", "coordinates": [ [ -112.851562, 55.178868 ], [ -117.773438, 44.590467 ], [ -104.414062, 51.179343 ] ] } }
|
||||||
] }
|
] }
|
||||||
|
@ -974,7 +974,7 @@
|
|||||||
{ "type": "FeatureCollection", "properties": { "layer": "tabblock_06001420" }, "features": [
|
{ "type": "FeatureCollection", "properties": { "layer": "tabblock_06001420" }, "features": [
|
||||||
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3008", "NAME10": "Block 3008", "MTFCC10": "G5040", "UR10": "R", "FUNCSTAT10": "S", "ALAND10": 0, "AWATER10": 1111196, "INTPTLAT10": "+37.8928912", "INTPTLON10": "-122.3202957" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.312679, 37.897072 ], [ -122.311649, 37.896937 ], [ -122.311649, 37.896260 ], [ -122.311134, 37.896124 ], [ -122.311306, 37.895853 ], [ -122.310791, 37.895582 ], [ -122.310276, 37.894769 ], [ -122.309246, 37.892331 ], [ -122.309418, 37.889757 ], [ -122.309933, 37.888809 ], [ -122.310963, 37.889757 ], [ -122.311134, 37.890299 ], [ -122.311478, 37.890028 ], [ -122.312851, 37.891247 ], [ -122.313709, 37.891925 ], [ -122.314396, 37.892060 ], [ -122.314739, 37.892466 ], [ -122.314568, 37.891925 ], [ -122.315941, 37.891925 ], [ -122.316113, 37.891247 ], [ -122.317657, 37.890976 ], [ -122.319889, 37.890028 ], [ -122.322807, 37.890028 ], [ -122.324009, 37.892466 ], [ -122.325726, 37.892602 ], [ -122.325897, 37.892331 ], [ -122.325554, 37.892060 ], [ -122.325726, 37.890841 ], [ -122.327442, 37.890841 ], [ -122.327442, 37.891518 ], [ -122.327614, 37.891518 ], [ -122.327614, 37.889757 ], [ -122.334824, 37.889622 ], [ -122.333450, 37.892873 ], [ -122.312508, 37.897479 ], [ -122.312679, 37.897072 ] ] ] } }
|
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3008", "NAME10": "Block 3008", "MTFCC10": "G5040", "UR10": "R", "FUNCSTAT10": "S", "ALAND10": 0, "AWATER10": 1111196, "INTPTLAT10": "+37.8928912", "INTPTLON10": "-122.3202957" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.312679, 37.897072 ], [ -122.311649, 37.896937 ], [ -122.311649, 37.896260 ], [ -122.311134, 37.896124 ], [ -122.311306, 37.895853 ], [ -122.310791, 37.895582 ], [ -122.310276, 37.894769 ], [ -122.309246, 37.892331 ], [ -122.309418, 37.889757 ], [ -122.309933, 37.888809 ], [ -122.310963, 37.889757 ], [ -122.311134, 37.890299 ], [ -122.311478, 37.890028 ], [ -122.312851, 37.891247 ], [ -122.313709, 37.891925 ], [ -122.314396, 37.892060 ], [ -122.314739, 37.892466 ], [ -122.314568, 37.891925 ], [ -122.315941, 37.891925 ], [ -122.316113, 37.891247 ], [ -122.317657, 37.890976 ], [ -122.319889, 37.890028 ], [ -122.322807, 37.890028 ], [ -122.324009, 37.892466 ], [ -122.325726, 37.892602 ], [ -122.325897, 37.892331 ], [ -122.325554, 37.892060 ], [ -122.325726, 37.890841 ], [ -122.327442, 37.890841 ], [ -122.327442, 37.891518 ], [ -122.327614, 37.891518 ], [ -122.327614, 37.889757 ], [ -122.334824, 37.889622 ], [ -122.333450, 37.892873 ], [ -122.312508, 37.897479 ], [ -122.312679, 37.897072 ] ] ] } }
|
||||||
,
|
,
|
||||||
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3009", "NAME10": "Block 3009", "MTFCC10": "G5040", "UR10": "U", "UACE10": "78904", "UATYP10": "U", "FUNCSTAT10": "S", "ALAND10": 265574, "AWATER10": 0, "INTPTLAT10": "+37.8905867", "INTPTLON10": "-122.3181131" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.310104, 37.894769 ], [ -122.309246, 37.893144 ], [ -122.308903, 37.890570 ], [ -122.309074, 37.888809 ], [ -122.309246, 37.887860 ], [ -122.311306, 37.889486 ], [ -122.327614, 37.889757 ], [ -122.327614, 37.891518 ], [ -122.327442, 37.891518 ], [ -122.327442, 37.890841 ], [ -122.325897, 37.890841 ], [ -122.325554, 37.891518 ], [ -122.325897, 37.892602 ], [ -122.324009, 37.892466 ], [ -122.322807, 37.890028 ], [ -122.319889, 37.890028 ], [ -122.317657, 37.890976 ], [ -122.316113, 37.891247 ], [ -122.315941, 37.891925 ], [ -122.314568, 37.891925 ], [ -122.314739, 37.892466 ], [ -122.314396, 37.892060 ], [ -122.313709, 37.891925 ], [ -122.312851, 37.891247 ], [ -122.311478, 37.890028 ], [ -122.311134, 37.890299 ], [ -122.310963, 37.889757 ], [ -122.309933, 37.888809 ], [ -122.309418, 37.889757 ], [ -122.309246, 37.892331 ], [ -122.310276, 37.894769 ], [ -122.310791, 37.895582 ], [ -122.310104, 37.894769 ] ], [ [ -122.311134, 37.896124 ], [ -122.310791, 37.895582 ], [ -122.311306, 37.895853 ], [ -122.311134, 37.896124 ] ], [ [ -122.311649, 37.896801 ], [ -122.311134, 37.896124 ], [ -122.311649, 37.896260 ], [ -122.311649, 37.896801 ] ] ] } }
|
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3009", "NAME10": "Block 3009", "MTFCC10": "G5040", "UR10": "U", "UACE10": "78904", "UATYP10": "U", "FUNCSTAT10": "S", "ALAND10": 265574, "AWATER10": 0, "INTPTLAT10": "+37.8905867", "INTPTLON10": "-122.3181131" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -122.310104, 37.894769 ], [ -122.309246, 37.893144 ], [ -122.308903, 37.890570 ], [ -122.309074, 37.888809 ], [ -122.309246, 37.887860 ], [ -122.311306, 37.889486 ], [ -122.327614, 37.889757 ], [ -122.327614, 37.891518 ], [ -122.327442, 37.891518 ], [ -122.327442, 37.890841 ], [ -122.325897, 37.890841 ], [ -122.325554, 37.891518 ], [ -122.325897, 37.892602 ], [ -122.324009, 37.892466 ], [ -122.322807, 37.890028 ], [ -122.319889, 37.890028 ], [ -122.317657, 37.890976 ], [ -122.316113, 37.891247 ], [ -122.315941, 37.891925 ], [ -122.314568, 37.891925 ], [ -122.314739, 37.892466 ], [ -122.314396, 37.892060 ], [ -122.313709, 37.891925 ], [ -122.312851, 37.891247 ], [ -122.311478, 37.890028 ], [ -122.311134, 37.890299 ], [ -122.310963, 37.889757 ], [ -122.309933, 37.888809 ], [ -122.309418, 37.889757 ], [ -122.309246, 37.892331 ], [ -122.310276, 37.894769 ], [ -122.310791, 37.895582 ], [ -122.310104, 37.894769 ] ] ], [ [ [ -122.311134, 37.896124 ], [ -122.310791, 37.895582 ], [ -122.311306, 37.895853 ], [ -122.311134, 37.896124 ] ] ], [ [ [ -122.311649, 37.896801 ], [ -122.311134, 37.896124 ], [ -122.311649, 37.896260 ], [ -122.311649, 37.896801 ] ] ] ] } }
|
||||||
,
|
,
|
||||||
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3007", "NAME10": "Block 3007", "MTFCC10": "G5040", "UR10": "U", "UACE10": "78904", "UATYP10": "U", "FUNCSTAT10": "S", "ALAND10": 3648, "AWATER10": 0, "INTPTLAT10": "+37.8971393", "INTPTLON10": "-122.3121267" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.311649, 37.896937 ], [ -122.312508, 37.896937 ], [ -122.312508, 37.897479 ], [ -122.312164, 37.897479 ], [ -122.311649, 37.896937 ] ] ] } }
|
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3007", "NAME10": "Block 3007", "MTFCC10": "G5040", "UR10": "U", "UACE10": "78904", "UATYP10": "U", "FUNCSTAT10": "S", "ALAND10": 3648, "AWATER10": 0, "INTPTLAT10": "+37.8971393", "INTPTLON10": "-122.3121267" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.311649, 37.896937 ], [ -122.312508, 37.896937 ], [ -122.312508, 37.897479 ], [ -122.312164, 37.897479 ], [ -122.311649, 37.896937 ] ] ] } }
|
||||||
,
|
,
|
||||||
@ -1458,7 +1458,7 @@
|
|||||||
{ "type": "FeatureCollection", "properties": { "layer": "tabblock_06001420" }, "features": [
|
{ "type": "FeatureCollection", "properties": { "layer": "tabblock_06001420" }, "features": [
|
||||||
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3008", "NAME10": "Block 3008", "MTFCC10": "G5040", "UR10": "R", "FUNCSTAT10": "S", "ALAND10": 0, "AWATER10": 1111196, "INTPTLAT10": "+37.8928912", "INTPTLON10": "-122.3202957" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.312593, 37.897072 ], [ -122.311649, 37.896869 ], [ -122.311563, 37.896192 ], [ -122.311134, 37.896056 ], [ -122.311306, 37.895785 ], [ -122.311134, 37.895582 ], [ -122.310705, 37.895514 ], [ -122.310619, 37.895108 ], [ -122.310190, 37.894769 ], [ -122.309504, 37.893482 ], [ -122.309160, 37.892263 ], [ -122.309074, 37.891315 ], [ -122.309332, 37.889757 ], [ -122.309504, 37.889147 ], [ -122.309847, 37.888809 ], [ -122.310104, 37.888944 ], [ -122.310190, 37.889147 ], [ -122.310877, 37.889757 ], [ -122.311049, 37.890231 ], [ -122.311134, 37.890299 ], [ -122.311220, 37.889960 ], [ -122.311392, 37.889960 ], [ -122.311735, 37.890434 ], [ -122.312765, 37.891247 ], [ -122.313709, 37.891925 ], [ -122.314310, 37.891992 ], [ -122.314739, 37.892466 ], [ -122.314825, 37.892466 ], [ -122.314568, 37.891925 ], [ -122.315941, 37.891925 ], [ -122.316027, 37.891180 ], [ -122.317657, 37.890976 ], [ -122.319889, 37.889960 ], [ -122.322721, 37.890028 ], [ -122.323151, 37.891044 ], [ -122.324009, 37.892399 ], [ -122.325726, 37.892534 ], [ -122.325897, 37.892331 ], [ -122.325554, 37.892060 ], [ -122.325640, 37.890841 ], [ -122.327356, 37.890841 ], [ -122.327442, 37.891518 ], [ -122.327528, 37.891586 ], [ -122.327614, 37.891450 ], [ -122.327700, 37.890231 ], [ -122.327614, 37.889689 ], [ -122.334738, 37.889622 ], [ -122.333450, 37.892805 ], [ -122.312508, 37.897479 ], [ -122.312593, 37.897072 ] ] ] } }
|
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3008", "NAME10": "Block 3008", "MTFCC10": "G5040", "UR10": "R", "FUNCSTAT10": "S", "ALAND10": 0, "AWATER10": 1111196, "INTPTLAT10": "+37.8928912", "INTPTLON10": "-122.3202957" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.312593, 37.897072 ], [ -122.311649, 37.896869 ], [ -122.311563, 37.896192 ], [ -122.311134, 37.896056 ], [ -122.311306, 37.895785 ], [ -122.311134, 37.895582 ], [ -122.310705, 37.895514 ], [ -122.310619, 37.895108 ], [ -122.310190, 37.894769 ], [ -122.309504, 37.893482 ], [ -122.309160, 37.892263 ], [ -122.309074, 37.891315 ], [ -122.309332, 37.889757 ], [ -122.309504, 37.889147 ], [ -122.309847, 37.888809 ], [ -122.310104, 37.888944 ], [ -122.310190, 37.889147 ], [ -122.310877, 37.889757 ], [ -122.311049, 37.890231 ], [ -122.311134, 37.890299 ], [ -122.311220, 37.889960 ], [ -122.311392, 37.889960 ], [ -122.311735, 37.890434 ], [ -122.312765, 37.891247 ], [ -122.313709, 37.891925 ], [ -122.314310, 37.891992 ], [ -122.314739, 37.892466 ], [ -122.314825, 37.892466 ], [ -122.314568, 37.891925 ], [ -122.315941, 37.891925 ], [ -122.316027, 37.891180 ], [ -122.317657, 37.890976 ], [ -122.319889, 37.889960 ], [ -122.322721, 37.890028 ], [ -122.323151, 37.891044 ], [ -122.324009, 37.892399 ], [ -122.325726, 37.892534 ], [ -122.325897, 37.892331 ], [ -122.325554, 37.892060 ], [ -122.325640, 37.890841 ], [ -122.327356, 37.890841 ], [ -122.327442, 37.891518 ], [ -122.327528, 37.891586 ], [ -122.327614, 37.891450 ], [ -122.327700, 37.890231 ], [ -122.327614, 37.889689 ], [ -122.334738, 37.889622 ], [ -122.333450, 37.892805 ], [ -122.312508, 37.897479 ], [ -122.312593, 37.897072 ] ] ] } }
|
||||||
,
|
,
|
||||||
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3009", "NAME10": "Block 3009", "MTFCC10": "G5040", "UR10": "U", "UACE10": "78904", "UATYP10": "U", "FUNCSTAT10": "S", "ALAND10": 265574, "AWATER10": 0, "INTPTLAT10": "+37.8905867", "INTPTLON10": "-122.3181131" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.308903, 37.890502 ], [ -122.308989, 37.888809 ], [ -122.309246, 37.887860 ], [ -122.309847, 37.888131 ], [ -122.311306, 37.889486 ], [ -122.315598, 37.889689 ], [ -122.315855, 37.889554 ], [ -122.327614, 37.889689 ], [ -122.327614, 37.891450 ], [ -122.327528, 37.891586 ], [ -122.327442, 37.891518 ], [ -122.327356, 37.890841 ], [ -122.325811, 37.890841 ], [ -122.325640, 37.890976 ], [ -122.325554, 37.891518 ], [ -122.325554, 37.892060 ], [ -122.325897, 37.892331 ], [ -122.325897, 37.892534 ], [ -122.324009, 37.892399 ], [ -122.323151, 37.891044 ], [ -122.322721, 37.890028 ], [ -122.319889, 37.889960 ], [ -122.317657, 37.890976 ], [ -122.316027, 37.891180 ], [ -122.315941, 37.891925 ], [ -122.314568, 37.891925 ], [ -122.314825, 37.892466 ], [ -122.314739, 37.892466 ], [ -122.314310, 37.891992 ], [ -122.313709, 37.891925 ], [ -122.312765, 37.891247 ], [ -122.311735, 37.890434 ], [ -122.311392, 37.889960 ], [ -122.311220, 37.889960 ], [ -122.311134, 37.890299 ], [ -122.311049, 37.890231 ], [ -122.310877, 37.889757 ], [ -122.310190, 37.889147 ], [ -122.310104, 37.888944 ], [ -122.309847, 37.888809 ], [ -122.309504, 37.889147 ], [ -122.309332, 37.889757 ], [ -122.309074, 37.891315 ], [ -122.309074, 37.891518 ], [ -122.308903, 37.890502 ] ], [ [ -122.310190, 37.894769 ], [ -122.310619, 37.895108 ], [ -122.310705, 37.895514 ], [ -122.311134, 37.895582 ], [ -122.311306, 37.895785 ], [ -122.311134, 37.896056 ], [ -122.311563, 37.896192 ], [ -122.311563, 37.896734 ], [ -122.310705, 37.895785 ], [ -122.310019, 37.894769 ], [ -122.309246, 37.893076 ], [ -122.309160, 37.892399 ], [ -122.309504, 37.893482 ], [ -122.310190, 37.894769 ] ] ] } }
|
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3009", "NAME10": "Block 3009", "MTFCC10": "G5040", "UR10": "U", "UACE10": "78904", "UATYP10": "U", "FUNCSTAT10": "S", "ALAND10": 265574, "AWATER10": 0, "INTPTLAT10": "+37.8905867", "INTPTLON10": "-122.3181131" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -122.308903, 37.890502 ], [ -122.308989, 37.888809 ], [ -122.309246, 37.887860 ], [ -122.309847, 37.888131 ], [ -122.311306, 37.889486 ], [ -122.315598, 37.889689 ], [ -122.315855, 37.889554 ], [ -122.327614, 37.889689 ], [ -122.327614, 37.891450 ], [ -122.327528, 37.891586 ], [ -122.327442, 37.891518 ], [ -122.327356, 37.890841 ], [ -122.325811, 37.890841 ], [ -122.325640, 37.890976 ], [ -122.325554, 37.891518 ], [ -122.325554, 37.892060 ], [ -122.325897, 37.892331 ], [ -122.325897, 37.892534 ], [ -122.324009, 37.892399 ], [ -122.323151, 37.891044 ], [ -122.322721, 37.890028 ], [ -122.319889, 37.889960 ], [ -122.317657, 37.890976 ], [ -122.316027, 37.891180 ], [ -122.315941, 37.891925 ], [ -122.314568, 37.891925 ], [ -122.314825, 37.892466 ], [ -122.314739, 37.892466 ], [ -122.314310, 37.891992 ], [ -122.313709, 37.891925 ], [ -122.312765, 37.891247 ], [ -122.311735, 37.890434 ], [ -122.311392, 37.889960 ], [ -122.311220, 37.889960 ], [ -122.311134, 37.890299 ], [ -122.311049, 37.890231 ], [ -122.310877, 37.889757 ], [ -122.310190, 37.889147 ], [ -122.310104, 37.888944 ], [ -122.309847, 37.888809 ], [ -122.309504, 37.889147 ], [ -122.309332, 37.889757 ], [ -122.309074, 37.891315 ], [ -122.309074, 37.891518 ], [ -122.308903, 37.890502 ] ] ], [ [ [ -122.310190, 37.894769 ], [ -122.310619, 37.895108 ], [ -122.310705, 37.895514 ], [ -122.311134, 37.895582 ], [ -122.311306, 37.895785 ], [ -122.311134, 37.896056 ], [ -122.311563, 37.896192 ], [ -122.311563, 37.896734 ], [ -122.310705, 37.895785 ], [ -122.310019, 37.894769 ], [ -122.309246, 37.893076 ], [ -122.309160, 37.892399 ], [ -122.309504, 37.893482 ], [ -122.310190, 37.894769 ] ] ] ] } }
|
||||||
,
|
,
|
||||||
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3007", "NAME10": "Block 3007", "MTFCC10": "G5040", "UR10": "U", "UACE10": "78904", "UATYP10": "U", "FUNCSTAT10": "S", "ALAND10": 3648, "AWATER10": 0, "INTPTLAT10": "+37.8971393", "INTPTLON10": "-122.3121267" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.311649, 37.896869 ], [ -122.312508, 37.896937 ], [ -122.312593, 37.897140 ], [ -122.312508, 37.897479 ], [ -122.312078, 37.897479 ], [ -122.311649, 37.896869 ] ] ] } }
|
{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "001", "TRACTCE10": "420300", "BLOCKCE10": "3007", "NAME10": "Block 3007", "MTFCC10": "G5040", "UR10": "U", "UACE10": "78904", "UATYP10": "U", "FUNCSTAT10": "S", "ALAND10": 3648, "AWATER10": 0, "INTPTLAT10": "+37.8971393", "INTPTLON10": "-122.3121267" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.311649, 37.896869 ], [ -122.312508, 37.896937 ], [ -122.312593, 37.897140 ], [ -122.312508, 37.897479 ], [ -122.312078, 37.897479 ], [ -122.311649, 37.896869 ] ] ] } }
|
||||||
,
|
,
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
49
tile.cpp
49
tile.cpp
@ -62,17 +62,17 @@ int coalindexcmp(const struct coalesce *c1, const struct coalesce *c2);
|
|||||||
static int is_integer(const char *s, long long *v);
|
static int is_integer(const char *s, long long *v);
|
||||||
|
|
||||||
struct coalesce {
|
struct coalesce {
|
||||||
int type;
|
|
||||||
drawvec geom;
|
|
||||||
int m;
|
|
||||||
char *meta;
|
char *meta;
|
||||||
char *stringpool;
|
char *stringpool;
|
||||||
unsigned long long index;
|
|
||||||
unsigned long long index2;
|
|
||||||
bool coalesced;
|
|
||||||
long long original_seq;
|
|
||||||
std::vector<long long> keys;
|
std::vector<long long> keys;
|
||||||
std::vector<long long> values;
|
std::vector<long long> values;
|
||||||
|
drawvec geom;
|
||||||
|
unsigned long long index;
|
||||||
|
unsigned long long index2;
|
||||||
|
long long original_seq;
|
||||||
|
int type;
|
||||||
|
int m;
|
||||||
|
bool coalesced;
|
||||||
|
|
||||||
bool operator<(const coalesce &o) const {
|
bool operator<(const coalesce &o) const {
|
||||||
int cmp = coalindexcmp(this, &o);
|
int cmp = coalindexcmp(this, &o);
|
||||||
@ -374,22 +374,22 @@ void rewrite(drawvec &geom, int z, int nextzoom, int maxzoom, long long *bbox, u
|
|||||||
|
|
||||||
struct partial {
|
struct partial {
|
||||||
std::vector<drawvec> geoms;
|
std::vector<drawvec> geoms;
|
||||||
long long layer;
|
|
||||||
int m;
|
|
||||||
char *meta;
|
|
||||||
signed char t;
|
|
||||||
int segment;
|
|
||||||
long long original_seq;
|
|
||||||
bool reduced;
|
|
||||||
unsigned long long index;
|
|
||||||
unsigned long long index2;
|
|
||||||
int z;
|
|
||||||
int line_detail;
|
|
||||||
int *prevent;
|
|
||||||
int *additional;
|
|
||||||
int maxzoom;
|
|
||||||
std::vector<long long> keys;
|
std::vector<long long> keys;
|
||||||
std::vector<long long> values;
|
std::vector<long long> values;
|
||||||
|
char *meta;
|
||||||
|
int *prevent;
|
||||||
|
int *additional;
|
||||||
|
long long layer;
|
||||||
|
long long original_seq;
|
||||||
|
unsigned long long index;
|
||||||
|
unsigned long long index2;
|
||||||
|
int m;
|
||||||
|
int segment;
|
||||||
|
bool reduced;
|
||||||
|
int z;
|
||||||
|
int line_detail;
|
||||||
|
int maxzoom;
|
||||||
|
signed char t;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct partial_arg {
|
struct partial_arg {
|
||||||
@ -883,8 +883,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < partials.size(); i++) {
|
for (size_t i = 0; i < partials.size(); i++) {
|
||||||
std::vector<drawvec> pgeoms = partials[i].geoms;
|
std::vector<drawvec> &pgeoms = partials[i].geoms;
|
||||||
partials[i].geoms.clear(); // avoid keeping two copies in memory
|
|
||||||
long long layer = partials[i].layer;
|
long long layer = partials[i].layer;
|
||||||
signed char t = partials[i].t;
|
signed char t = partials[i].t;
|
||||||
long long original_seq = partials[i].original_seq;
|
long long original_seq = partials[i].original_seq;
|
||||||
@ -899,6 +898,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s
|
|||||||
c.index = partials[i].index;
|
c.index = partials[i].index;
|
||||||
c.index2 = partials[i].index2;
|
c.index2 = partials[i].index2;
|
||||||
c.geom = pgeoms[j];
|
c.geom = pgeoms[j];
|
||||||
|
pgeoms[j].clear();
|
||||||
c.coalesced = false;
|
c.coalesced = false;
|
||||||
c.original_seq = original_seq;
|
c.original_seq = original_seq;
|
||||||
c.m = partials[i].m;
|
c.m = partials[i].m;
|
||||||
@ -912,6 +912,8 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
partials.clear();
|
||||||
|
|
||||||
int j;
|
int j;
|
||||||
for (j = 0; j < child_shards; j++) {
|
for (j = 0; j < child_shards; j++) {
|
||||||
if (within[j]) {
|
if (within[j]) {
|
||||||
@ -996,6 +998,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s
|
|||||||
feature.type = features[k][x].type;
|
feature.type = features[k][x].type;
|
||||||
feature.geometry = to_feature(features[k][x].geom);
|
feature.geometry = to_feature(features[k][x].geom);
|
||||||
count += features[k][x].geom.size();
|
count += features[k][x].geom.size();
|
||||||
|
features[k][x].geom.clear();
|
||||||
|
|
||||||
decode_meta(features[k][x].m, features[k][x].keys, features[k][x].values, features[k][x].stringpool, layer, feature);
|
decode_meta(features[k][x].m, features[k][x].keys, features[k][x].values, features[k][x].stringpool, layer, feature);
|
||||||
layer.features.push_back(feature);
|
layer.features.push_back(feature);
|
||||||
|
@ -1 +1 @@
|
|||||||
#define VERSION "tippecanoe v1.11.4\n"
|
#define VERSION "tippecanoe v1.11.6\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user