mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-05 18:05:42 +02:00
Simple enumerate command like the datamaps one
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
PREFIX=/usr/local
|
PREFIX=/usr/local
|
||||||
|
|
||||||
all: tippecanoe
|
all: tippecanoe enumerate
|
||||||
|
|
||||||
install: tippecanoe
|
install: tippecanoe
|
||||||
cp tippecanoe $(PREFIX)/bin/tippecanoe
|
cp tippecanoe $(PREFIX)/bin/tippecanoe
|
||||||
@@ -13,6 +13,9 @@ PG=
|
|||||||
tippecanoe: geojson.o jsonpull.o vector_tile.pb.o tile.o clip.o pool.o mbtiles.o
|
tippecanoe: geojson.o jsonpull.o vector_tile.pb.o tile.o clip.o pool.o mbtiles.o
|
||||||
g++ $(PG) -O3 -g -Wall -o $@ $^ -lm -lz -lprotobuf-lite -lsqlite3
|
g++ $(PG) -O3 -g -Wall -o $@ $^ -lm -lz -lprotobuf-lite -lsqlite3
|
||||||
|
|
||||||
|
enumerate: enumerate.o
|
||||||
|
gcc $(PG) -O3 -g -Wall -o $@ $^ -lsqlite3
|
||||||
|
|
||||||
libjsonpull.a: jsonpull.o
|
libjsonpull.a: jsonpull.o
|
||||||
ar rc $@ $^
|
ar rc $@ $^
|
||||||
ranlib $@
|
ranlib $@
|
||||||
|
|||||||
+62
@@ -0,0 +1,62 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sqlite3.h>
|
||||||
|
|
||||||
|
void enumerate(char *fname) {
|
||||||
|
sqlite3 *db;
|
||||||
|
|
||||||
|
if (sqlite3_open(fname, &db) != SQLITE_OK) {
|
||||||
|
fprintf(stderr, "%s: %s\n", fname, sqlite3_errmsg(db));
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sql = "SELECT zoom_level, tile_column, tile_row from tiles;";
|
||||||
|
|
||||||
|
sqlite3_stmt *stmt;
|
||||||
|
if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) != SQLITE_OK) {
|
||||||
|
fprintf(stderr, "%s: select failed: %s\n", fname, sqlite3_errmsg(db));
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (sqlite3_step(stmt) == SQLITE_ROW) {
|
||||||
|
long long zoom = sqlite3_column_int(stmt, 0);
|
||||||
|
long long x = sqlite3_column_int(stmt, 1);
|
||||||
|
long long y = sqlite3_column_int(stmt, 2);
|
||||||
|
|
||||||
|
y = (1LL << zoom) - y;
|
||||||
|
printf("%s %lld %lld %lld\n", fname, zoom, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlite3_finalize(stmt);
|
||||||
|
|
||||||
|
if (sqlite3_close(db) != SQLITE_OK) {
|
||||||
|
fprintf(stderr, "%s: could not close database: %s\n", fname, sqlite3_errmsg(db));
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void usage(char **argv) {
|
||||||
|
fprintf(stderr, "Usage: %s file.mbtiles ...\n", argv[0]);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
extern int optind;
|
||||||
|
extern char *optarg;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
while ((i = getopt(argc, argv, "")) != -1) {
|
||||||
|
usage(argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (optind >= argc) {
|
||||||
|
usage(argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = optind; i < argc; i++) {
|
||||||
|
enumerate(argv[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user