mirror of
https://github.com/mapbox/tippecanoe.git
synced 2025-03-23 12:25:16 +00:00
Merge files into one layer if a name is specified with -l
This commit is contained in:
parent
0b6f6436a6
commit
d13f60e9c4
@ -54,7 +54,8 @@ Options
|
||||
|
||||
### Naming
|
||||
|
||||
* -l _name_: Layer name (default "file" if source is file.json or output is file.mbtiles). Only works if there is only one layer.
|
||||
* -l _name_: Layer name (default "file" if source is file.json or output is file.mbtiles). If there are multiple input files
|
||||
specified, the files are all merged into the single named layer.
|
||||
* -n _name_: Human-readable name (default file.json)
|
||||
|
||||
### File control
|
||||
|
19
decode.cc
19
decode.cc
@ -109,6 +109,20 @@ void handle(std::string message, int z, unsigned x, unsigned y, int describe) {
|
||||
mapnik::vector::tile_layer layer = tile.layers(l);
|
||||
int extent = layer.extent();
|
||||
|
||||
if (describe) {
|
||||
if (l != 0) {
|
||||
printf(",\n");
|
||||
}
|
||||
|
||||
printf("{ \"type\": \"FeatureCollection\"");
|
||||
printf(", \"properties\": { \"name\": ");
|
||||
printq(layer.name().c_str());
|
||||
printf(" }");
|
||||
printf(", \"features\": [\n");
|
||||
|
||||
within = 0;
|
||||
}
|
||||
|
||||
for (int f = 0; f < layer.features_size(); f++) {
|
||||
mapnik::vector::tile_feature feat = layer.features(f);
|
||||
int px = 0, py = 0;
|
||||
@ -275,6 +289,7 @@ void handle(std::string message, int z, unsigned x, unsigned y, int describe) {
|
||||
|
||||
int state = 0;
|
||||
for (unsigned i = 0; i < rings.size(); i++) {
|
||||
printf("AREA %f ", areas[i]);
|
||||
if (areas[i] <= 0) {
|
||||
if (state != 0) {
|
||||
// new multipolygon
|
||||
@ -316,6 +331,10 @@ void handle(std::string message, int z, unsigned x, unsigned y, int describe) {
|
||||
|
||||
printf(" } }\n");
|
||||
}
|
||||
|
||||
if (describe) {
|
||||
printf("] }\n");
|
||||
}
|
||||
}
|
||||
|
||||
printf("] }\n");
|
||||
|
38
geojson.c
38
geojson.c
@ -796,31 +796,48 @@ int read_json(int argc, char **argv, char *fname, const char *layername, int max
|
||||
unsigned midx = 0, midy = 0;
|
||||
long long seq = 0;
|
||||
|
||||
int nlayers = argc;
|
||||
if (nlayers == 0) {
|
||||
int nlayers;
|
||||
if (layername != NULL) {
|
||||
nlayers = 1;
|
||||
} else {
|
||||
nlayers = argc;
|
||||
if (nlayers == 0) {
|
||||
nlayers = 1;
|
||||
}
|
||||
}
|
||||
|
||||
int layer;
|
||||
for (layer = 0; layer < nlayers; layer++) {
|
||||
int nsources = argc;
|
||||
if (nsources == 0) {
|
||||
nsources = 1;
|
||||
}
|
||||
|
||||
int source;
|
||||
for (source = 0; source < nsources; source++) {
|
||||
json_pull *jp;
|
||||
const char *reading;
|
||||
FILE *fp;
|
||||
|
||||
if (layer >= argc) {
|
||||
if (source >= argc) {
|
||||
reading = "standard input";
|
||||
fp = stdin;
|
||||
} else {
|
||||
reading = argv[layer];
|
||||
fp = fopen(argv[layer], "r");
|
||||
reading = argv[source];
|
||||
fp = fopen(argv[source], "r");
|
||||
if (fp == NULL) {
|
||||
perror(argv[layer]);
|
||||
perror(argv[source]);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
jp = json_begin_file(fp);
|
||||
|
||||
int layer;
|
||||
if (nlayers == 1) {
|
||||
layer = 0;
|
||||
} else {
|
||||
layer = source;
|
||||
}
|
||||
|
||||
parse_json(jp, reading, &seq, &metapos, &geompos, &indexpos, exclude, include, exclude_all, metafile, geomfile, indexfile, poolfile, treefile, fname, maxzoom, layer, droprate, file_bbox);
|
||||
|
||||
json_end(jp);
|
||||
@ -867,7 +884,7 @@ int read_json(int argc, char **argv, char *fname, const char *layername, int max
|
||||
|
||||
char *layernames[nlayers];
|
||||
for (i = 0; i < nlayers; i++) {
|
||||
if (argc <= 1 && layername != NULL) {
|
||||
if (layername != NULL) {
|
||||
layernames[i] = strdup(layername);
|
||||
} else {
|
||||
char *src = argv[i];
|
||||
@ -892,7 +909,6 @@ int read_json(int argc, char **argv, char *fname, const char *layername, int max
|
||||
if (cp != NULL) {
|
||||
*cp = '\0';
|
||||
}
|
||||
layername = trunc;
|
||||
|
||||
char *out = trunc;
|
||||
for (cp = trunc; *cp; cp++) {
|
||||
@ -1137,7 +1153,7 @@ int read_json(int argc, char **argv, char *fname, const char *layername, int max
|
||||
midlon = maxlon;
|
||||
}
|
||||
|
||||
mbtiles_write_metadata(outdb, fname, layernames, minzoom, maxzoom, minlat, minlon, maxlat, maxlon, midlat, midlon, file_keys, nlayers); // XXX layers
|
||||
mbtiles_write_metadata(outdb, fname, layernames, minzoom, maxzoom, minlat, minlon, maxlat, maxlon, midlat, midlon, file_keys, nlayers);
|
||||
|
||||
for (i = 0; i < nlayers; i++) {
|
||||
pool_free_strings(&file_keys1[i]);
|
||||
|
@ -54,7 +54,8 @@ it encounters.
|
||||
.SS Naming
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
\-l \fIname\fP: Layer name (default "file" if source is file.json or output is file.mbtiles). Only works if there is only one layer.
|
||||
\-l \fIname\fP: Layer name (default "file" if source is file.json or output is file.mbtiles). If there are multiple input files
|
||||
specified, the files are all merged into the single named layer.
|
||||
.IP \(bu 2
|
||||
\-n \fIname\fP: Human\-readable name (default file.json)
|
||||
.RE
|
||||
|
Loading…
x
Reference in New Issue
Block a user