mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-06 18:35:41 +02:00
Accept clip polygons from a file too
This commit is contained in:
+29
-17
@@ -40,6 +40,26 @@ void usage(char **argv) {
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string read_json_file(const char *fname) {
|
||||||
|
std::string out;
|
||||||
|
|
||||||
|
FILE *f = fopen(fname, "r");
|
||||||
|
if (f == NULL) {
|
||||||
|
perror(optarg);
|
||||||
|
exit(EXIT_OPEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
char buf[2000];
|
||||||
|
size_t nread;
|
||||||
|
while ((nread = fread(buf, sizeof(char), 2000, f)) != 0) {
|
||||||
|
out += std::string(buf, nread);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
int i;
|
int i;
|
||||||
const char *outtile = NULL;
|
const char *outtile = NULL;
|
||||||
@@ -73,6 +93,7 @@ int main(int argc, char **argv) {
|
|||||||
{"no-tile-compression", no_argument, 0, 'd' & 0x1F},
|
{"no-tile-compression", no_argument, 0, 'd' & 0x1F},
|
||||||
{"clip-bounding-box", required_argument, 0, 'k' & 0x1F},
|
{"clip-bounding-box", required_argument, 0, 'k' & 0x1F},
|
||||||
{"clip-polygon", required_argument, 0, 'l' & 0x1F},
|
{"clip-polygon", required_argument, 0, 'l' & 0x1F},
|
||||||
|
{"clip-polygon-file", required_argument, 0, 'm' & 0x1F},
|
||||||
|
|
||||||
{0, 0, 0, 0},
|
{0, 0, 0, 0},
|
||||||
};
|
};
|
||||||
@@ -123,24 +144,9 @@ int main(int argc, char **argv) {
|
|||||||
filter = optarg;
|
filter = optarg;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'J': {
|
case 'J':
|
||||||
filter = "";
|
filter = read_json_file(optarg);
|
||||||
|
|
||||||
FILE *f = fopen(optarg, "r");
|
|
||||||
if (f == NULL) {
|
|
||||||
perror(optarg);
|
|
||||||
exit(EXIT_OPEN);
|
|
||||||
}
|
|
||||||
|
|
||||||
char buf[2000];
|
|
||||||
size_t nread;
|
|
||||||
while ((nread = fread(buf, sizeof(char), 2000, f)) != 0) {
|
|
||||||
filter += std::string(buf, nread);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
case 'o' & 0x1F:
|
case 'o' & 0x1F:
|
||||||
preserve_input_order = true;
|
preserve_input_order = true;
|
||||||
@@ -201,6 +207,12 @@ int main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'm' & 0x1F: {
|
||||||
|
clipbbox clip = parse_clip_poly(read_json_file(optarg));
|
||||||
|
clipbboxes.push_back(clip);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Unrecognized flag -%c\n", i);
|
fprintf(stderr, "Unrecognized flag -%c\n", i);
|
||||||
usage(argv);
|
usage(argv);
|
||||||
|
|||||||
Reference in New Issue
Block a user