diff --git a/.travis.yml b/.travis.yml index 89ab3d92..879837d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ matrix: # debug+leak+address-sanitizer build - os: linux compiler: clang - env: CLANG_VERSION='3.8.0' BUILDTYPE=Debug ASAN_OPTIONS=detect_leaks=1 CC="clang-3.8" CXX="clang++-3.8" CXXFLAGS="-fsanitize=address" CFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address" + env: CLANG_VERSION='3.8.0' BUILDTYPE=Debug ASAN_OPTIONS=detect_leaks=1 CC="clang-3.8" CXX="clang++-3.8" CXXFLAGS="-fsanitize=address" CFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address" FEWER=true addons: apt: sources: ['ubuntu-toolchain-r-test' ] @@ -71,7 +71,10 @@ install: script: - npm install geobuf - - BUILDTYPE=${BUILDTYPE} make test geobuf-test + - if [ -n "${FEWER}" ]; then + BUILDTYPE=${BUILDTYPE} make fewer-tests; else + BUILDTYPE=${BUILDTYPE} make test geobuf-test; + fi - if [ -n "${COVERAGE}" ]; then /usr/bin/llvm-cov-3.5 -lp *.o; pip install --user cpp-coveralls; diff --git a/CHANGELOG.md b/CHANGELOG.md index 4988d9c1..bf728490 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.24.0 + +* Add feature filters using the Mapbox GL Style Specification filter syntax + ## 1.23.0 * Add input support for Geobuf file format diff --git a/Makefile b/Makefile index bab81b0b..b4b2773d 100644 --- a/Makefile +++ b/Makefile @@ -46,7 +46,7 @@ C = $(wildcard *.c) $(wildcard *.cpp) INCLUDES = -I/usr/local/include -I. LIBS = -L/usr/local/lib -tippecanoe: geojson.o jsonpull/jsonpull.o tile.o pool.o mbtiles.o geometry.o projection.o memfile.o mvt.o serial.o main.o text.o dirtiles.o plugin.o read_json.o write_json.o geobuf.o +tippecanoe: geojson.o jsonpull/jsonpull.o tile.o pool.o mbtiles.o geometry.o projection.o memfile.o mvt.o serial.o main.o text.o dirtiles.o plugin.o read_json.o write_json.o geobuf.o evaluator.o $(CXX) $(PG) $(LIBS) $(FINAL_FLAGS) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) -lm -lz -lsqlite3 -lpthread tippecanoe-enumerate: enumerate.o @@ -55,7 +55,7 @@ tippecanoe-enumerate: enumerate.o tippecanoe-decode: decode.o projection.o mvt.o write_json.o text.o $(CXX) $(PG) $(LIBS) $(FINAL_FLAGS) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) -lm -lz -lsqlite3 -tile-join: tile-join.o projection.o pool.o mbtiles.o mvt.o memfile.o dirtiles.o jsonpull/jsonpull.o text.o +tile-join: tile-join.o projection.o pool.o mbtiles.o mvt.o memfile.o dirtiles.o jsonpull/jsonpull.o text.o evaluator.o $(CXX) $(PG) $(LIBS) $(FINAL_FLAGS) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) -lm -lz -lsqlite3 -lpthread geojson2nd: geojson2nd.o jsonpull/jsonpull.o @@ -81,7 +81,7 @@ indent: TESTS = $(wildcard tests/*/out/*.json) SPACE = $(NULL) $(NULL) -test: tippecanoe tippecanoe-decode $(addsuffix .check,$(TESTS)) raw-tiles-test parallel-test pbf-test join-test enumerate-test decode-test unit +test: tippecanoe tippecanoe-decode $(addsuffix .check,$(TESTS)) raw-tiles-test parallel-test pbf-test join-test enumerate-test decode-test join-filter-test unit ./unit # Work around Makefile and filename punctuation limits: _ for space, @ for :, % for / @@ -93,6 +93,9 @@ test: tippecanoe tippecanoe-decode $(addsuffix .check,$(TESTS)) raw-tiles-test p geobuf-test: geojson2nd $(addsuffix .checkbuf,$(TESTS)) +# For quicker address sanitizer build, hope that regular JSON parsing is tested enough by parallel and join tests +fewer-tests: tippecanoe tippecanoe-decode geobuf-test raw-tiles-test parallel-test pbf-test join-test enumerate-test decode-test join-filter-test unit + # XXX Use proper makefile rules instead of a for loop %.json.checkbuf: for i in $(wildcard $(subst $(SPACE),/,$(wordlist 1,2,$(subst /, ,$@)))/*.json); do ./geojson2nd -w $$i | ./node_modules/geobuf/bin/json2geobuf > $$i.geobuf; done @@ -212,6 +215,14 @@ join-test: rm tests/join-population/tabblock_06001420.mbtiles tests/join-population/joined.mbtiles tests/join-population/joined-i.mbtiles tests/join-population/joined.mbtiles.json.check tests/join-population/joined-i.mbtiles.json.check tests/join-population/macarthur.mbtiles tests/join-population/merged.mbtiles tests/join-population/merged.mbtiles.json.check tests/join-population/merged-folder.mbtiles tests/join-population/macarthur2.mbtiles tests/join-population/windows.mbtiles tests/join-population/windows-merged.mbtiles tests/join-population/windows-merged2.mbtiles tests/join-population/windows.mbtiles.json.check tests/join-population/just-macarthur.mbtiles tests/join-population/no-macarthur.mbtiles tests/join-population/just-macarthur.mbtiles.json.check tests/join-population/no-macarthur.mbtiles.json.check tests/join-population/merged-folder.mbtiles.json.check tests/join-population/windows-merged.mbtiles.json.check tests/join-population/windows-merged2.mbtiles.json.check tests/join-population/macarthur-and-macarthur2-merged.mbtiles tests/join-population/macarthur-and-macarthur2-merged2.mbtiles tests/join-population/macarthur-and-macarthur2-merged.mbtiles.json.check tests/join-population/macarthur-and-macarthur2-merged2.mbtiles.json.check rm -rf tests/join-population/raw-merged-folder tests/join-population/tabblock_06001420-folder tests/join-population/macarthur-folder tests/join-population/macarthur2-folder tests/join-population/merged-mbtiles-to-folder tests/join-population/merged-folders-to-folder tests/join-population/windows-merged-folder tests/join-population/macarthur-and-macarthur2-folder +join-filter-test: + # Comes out different from the direct tippecanoe run because null attributes are lost + ./tippecanoe -z0 -f -o tests/feature-filter/out/all.mbtiles tests/feature-filter/in.json + ./tile-join -J tests/feature-filter/filter -f -o tests/feature-filter/out/filtered.mbtiles tests/feature-filter/out/all.mbtiles + ./tippecanoe-decode tests/feature-filter/out/filtered.mbtiles > tests/feature-filter/out/filtered.json.check + cmp tests/feature-filter/out/filtered.json.check tests/feature-filter/out/filtered.json.standard + rm -f tests/feature-filter/out/filtered.json.check tests/feature-filter/out/filtered.mbtiles tests/feature-filter/out/all.mbtiles + # Use this target to regenerate the standards that the tests are compared against # after making a change that legitimately changes their output diff --git a/README.md b/README.md index 97f9dc63..b8b52aca 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,14 @@ resolution is obtained than by using a smaller _maxzoom_ or _detail_. If the type is `bool`, then original attributes of `0` (or, if numeric, `0.0`, etc.), `false`, `null`, or the empty string become `false`, and otherwise become `true`. If the type is `float` or `int` and the original attribute was non-numeric, it becomes `0`. If the type is `int` and the original attribute was floating-point, it is rounded to the nearest integer. + * `-j` *filter* or `--feature-filter`=*filter*: Check features against a per-layer filter (as defined in the [Mapbox GL Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#types-filter)) and only include those that match. Any features in layers that have no filter specified will be passed through. Filters for the layer `"*"` apply to all layers. + * `-J` *filter-file* or `--feature-filter-file`=*filter-file*: Like `-j`, but read the filter from a file. + +Example: to find the Natural Earth countries with low `scalerank` but high `LABELRANK`: + +``` +tile-join -o filtered.mbtiles -j '{ "ne_10m_admin_0_countries": [ "all", [ "<", "scalerank", 3 ], [ ">", "LABELRANK", 5 ] ] }' ne_10m_admin_0_countries.mbtiles +``` ### Dropping a fixed fraction of features by zoom level @@ -483,6 +491,8 @@ The options are: * `-x` *key* or `--exclude=`*key*: Remove attributes of type *key* from the output. You can use this to remove the field you are matching against if you no longer need it after joining, or to remove any other attributes you don't want. * `-i` or `--if-matched`: Only include features that matched the CSV. + * `-j` *filter* or `--feature-filter`=*filter*: Check features against a per-layer filter (as defined in the [Mapbox GL Style Specification](https://www.mapbox.com/mapbox-gl-js/style-spec/#types-filter)) and only include those that match. Any features in layers that have no filter specified will be passed through. Filters for the layer `"*"` apply to all layers. + * `-J` *filter-file* or `--feature-filter-file`=*filter-file*: Like `-j`, but read the filter from a file. ### Setting or disabling tile size limits diff --git a/evaluator.cpp b/evaluator.cpp new file mode 100644 index 00000000..20fe8234 --- /dev/null +++ b/evaluator.cpp @@ -0,0 +1,328 @@ +#include +#include +#include +#include +#include "mvt.hpp" +#include "evaluator.hpp" + +int compare(mvt_value one, json_object *two, bool &fail) { + if (one.type == mvt_string) { + if (two->type != JSON_STRING) { + fail = true; + return false; // string vs non-string + } + + return strcmp(one.string_value.c_str(), two->string); + } + + if (one.type == mvt_double || one.type == mvt_float || one.type == mvt_int || one.type == mvt_uint || one.type == mvt_sint) { + if (two->type != JSON_NUMBER) { + fail = true; + return false; // number vs non-number + } + + double v; + if (one.type == mvt_double) { + v = one.numeric_value.double_value; + } else if (one.type == mvt_float) { + v = one.numeric_value.float_value; + } else if (one.type == mvt_int) { + v = one.numeric_value.int_value; + } else if (one.type == mvt_uint) { + v = one.numeric_value.uint_value; + } else if (one.type == mvt_sint) { + v = one.numeric_value.sint_value; + } else { + fprintf(stderr, "Internal error: bad mvt type %d\n", one.type); + exit(EXIT_FAILURE); + } + + if (v < two->number) { + return -1; + } else if (v > two->number) { + return 1; + } else { + return 0; + } + } + + if (one.type == mvt_bool) { + if (two->type != JSON_TRUE && two->type != JSON_FALSE) { + fail = true; + return false; // bool vs non-bool + } + + bool b = two->type != JSON_FALSE; + return one.numeric_value.bool_value > b; + } + + if (one.type == mvt_null) { + if (two->type != JSON_NULL) { + fail = true; + return false; // null vs non-null + } + + return 0; // null equals null + } + + fprintf(stderr, "Internal error: bad mvt type %d\n", one.type); + exit(EXIT_FAILURE); +} + +bool eval(std::map const &feature, json_object *f) { + if (f == NULL || f->type != JSON_ARRAY) { + fprintf(stderr, "Filter is not an array: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + + if (f->length < 1) { + fprintf(stderr, "Array too small in filter: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + + if (f->array[0]->type != JSON_STRING) { + fprintf(stderr, "Filter operation is not a string: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + + if (strcmp(f->array[0]->string, "has") == 0 || + strcmp(f->array[0]->string, "!has") == 0) { + if (f->length != 2) { + fprintf(stderr, "Wrong number of array elements in filter: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + + if (strcmp(f->array[0]->string, "has") == 0) { + if (f->array[1]->type != JSON_STRING) { + fprintf(stderr, "\"has\" key is not a string: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + return feature.count(std::string(f->array[1]->string)) != 0; + } + + if (strcmp(f->array[0]->string, "!has") == 0) { + if (f->array[1]->type != JSON_STRING) { + fprintf(stderr, "\"!has\" key is not a string: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + return feature.count(std::string(f->array[1]->string)) == 0; + } + } + + if (strcmp(f->array[0]->string, "==") == 0 || + strcmp(f->array[0]->string, "!=") == 0 || + strcmp(f->array[0]->string, ">") == 0 || + strcmp(f->array[0]->string, ">=") == 0 || + strcmp(f->array[0]->string, "<") == 0 || + strcmp(f->array[0]->string, "<=") == 0) { + if (f->length != 3) { + fprintf(stderr, "Wrong number of array elements in filter: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + if (f->array[1]->type != JSON_STRING) { + fprintf(stderr, "\"!has\" key is not a string: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + + auto ff = feature.find(std::string(f->array[1]->string)); + if (ff == feature.end()) { + static bool warned = false; + if (!warned) { + const char *s = json_stringify(f); + fprintf(stderr, "Warning: attribute not found for comparison: %s\n", s); + free((void *) s); + warned = true; + } + if (strcmp(f->array[0]->string, "!=") == 0) { + return true; // attributes that aren't found are not equal + } + return false; // not found: comparison is false + } + + bool fail = false; + int cmp = compare(ff->second, f->array[2], fail); + + if (fail) { + static bool warned = false; + if (!warned) { + const char *s = json_stringify(f); + fprintf(stderr, "Warning: mismatched type in comparison: %s\n", s); + free((void *) s); + warned = true; + } + if (strcmp(f->array[0]->string, "!=") == 0) { + return true; // mismatched types are not equal + } + return false; + } + + if (strcmp(f->array[0]->string, "==") == 0) { + return cmp == 0; + } + if (strcmp(f->array[0]->string, "!=") == 0) { + return cmp != 0; + } + if (strcmp(f->array[0]->string, ">") == 0) { + return cmp > 0; + } + if (strcmp(f->array[0]->string, ">=") == 0) { + return cmp >= 0; + } + if (strcmp(f->array[0]->string, "<") == 0) { + return cmp < 0; + } + if (strcmp(f->array[0]->string, "<=") == 0) { + return cmp <= 0; + } + + fprintf(stderr, "Internal error: can't happen: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + + if (strcmp(f->array[0]->string, "all") == 0 || + strcmp(f->array[0]->string, "any") == 0 || + strcmp(f->array[0]->string, "none") == 0) { + bool v; + + if (strcmp(f->array[0]->string, "all") == 0) { + v = true; + } else { + v = false; + } + + for (size_t i = 1; i < f->length; i++) { + bool out = eval(feature, f->array[i]); + + if (strcmp(f->array[0]->string, "all") == 0) { + v = v && out; + if (!v) { + break; + } + } else { + v = v || out; + if (v) { + break; + } + } + } + + if (strcmp(f->array[0]->string, "none") == 0) { + return !v; + } else { + return v; + } + } + + if (strcmp(f->array[0]->string, "in") == 0 || + strcmp(f->array[0]->string, "!in") == 0) { + if (f->length < 2) { + fprintf(stderr, "Array too small in filter: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + + if (f->array[1]->type != JSON_STRING) { + fprintf(stderr, "\"!has\" key is not a string: %s\n", json_stringify(f)); + exit(EXIT_FAILURE); + } + + auto ff = feature.find(std::string(f->array[1]->string)); + if (ff == feature.end()) { + static bool warned = false; + if (!warned) { + const char *s = json_stringify(f); + fprintf(stderr, "Warning: attribute not found for comparison: %s\n", s); + free((void *) s); + warned = true; + } + if (strcmp(f->array[0]->string, "!in") == 0) { + return true; // attributes that aren't found are not in + } + return false; // not found: comparison is false + } + + bool found = false; + for (size_t i = 2; i < f->length; i++) { + bool fail = false; + int cmp = compare(ff->second, f->array[i], fail); + + if (fail) { + static bool warned = false; + if (!warned) { + const char *s = json_stringify(f); + fprintf(stderr, "Warning: mismatched type in comparison: %s\n", s); + free((void *) s); + warned = true; + } + cmp = 1; + } + + if (cmp == 0) { + found = true; + break; + } + } + + if (strcmp(f->array[0]->string, "in") == 0) { + return found; + } else { + return !found; + } + } + + fprintf(stderr, "Unknown filter %s\n", json_stringify(f)); + exit(EXIT_FAILURE); +} + +bool evaluate(std::map const &feature, std::string const &layer, json_object *filter) { + if (filter == NULL || filter->type != JSON_HASH) { + fprintf(stderr, "Error: filter is not a hash: %s\n", json_stringify(filter)); + exit(EXIT_FAILURE); + } + + bool ok = true; + json_object *f; + + f = json_hash_get(filter, layer.c_str()); + if (ok && f != NULL) { + ok = eval(feature, f); + } + + f = json_hash_get(filter, "*"); + if (ok && f != NULL) { + ok = eval(feature, f); + } + + return ok; +} + +json_object *read_filter(const char *fname) { + FILE *fp = fopen(fname, "r"); + if (fp == NULL) { + perror(fname); + exit(EXIT_FAILURE); + } + + json_pull *jp = json_begin_file(fp); + json_object *filter = json_read_tree(jp); + if (filter == NULL) { + fprintf(stderr, "%s: %s\n", fname, jp->error); + exit(EXIT_FAILURE); + } + json_disconnect(filter); + json_end(jp); + fclose(fp); + return filter; +} + +json_object *parse_filter(const char *s) { + json_pull *jp = json_begin_string(s); + json_object *filter = json_read_tree(jp); + if (filter == NULL) { + fprintf(stderr, "Could not parse filter %s\n", s); + fprintf(stderr, "%s\n", jp->error); + exit(EXIT_FAILURE); + } + json_disconnect(filter); + json_end(jp); + return filter; +} diff --git a/evaluator.hpp b/evaluator.hpp new file mode 100644 index 00000000..99bcb27d --- /dev/null +++ b/evaluator.hpp @@ -0,0 +1,13 @@ +#ifndef EVALUATOR_HPP +#define EVALUATOR HPP + +#include +#include +#include "jsonpull/jsonpull.h" +#include "mvt.hpp" + +bool evaluate(std::map const &feature, std::string const &layer, json_object *filter); +json_object *parse_filter(const char *s); +json_object *read_filter(const char *fname); + +#endif diff --git a/geobuf.cpp b/geobuf.cpp index e5f0b66d..d83630fd 100644 --- a/geobuf.cpp +++ b/geobuf.cpp @@ -204,7 +204,7 @@ std::vector readGeometry(protozero::pbf_reader &pbf, size_t dim, d std::vector ret; std::vector coords; std::vector lengths; - int type; + int type = -1; while (pbf.next()) { switch (pbf.tag()) { diff --git a/geojson.cpp b/geojson.cpp index e3c0461c..178236dc 100644 --- a/geojson.cpp +++ b/geojson.cpp @@ -165,6 +165,11 @@ int serialize_geojson_feature(struct serialization_state *sst, json_object *geom metatype[m] = type; metaval[m] = val; m++; + } else { + metakey[m] = properties->keys[i]->string; + metatype[m] = mvt_null; + metaval[m] = "null"; + m++; } } } diff --git a/jsonpull/jsonpull.c b/jsonpull/jsonpull.c index 3067f4fe..c214e68e 100644 --- a/jsonpull/jsonpull.c +++ b/jsonpull/jsonpull.c @@ -708,6 +708,23 @@ void json_free(json_object *o) { free(o); } +static void json_disconnect_parser(json_object *o) { + if (o->type == JSON_HASH) { + size_t i; + for (i = 0; i < o->length; i++) { + json_disconnect_parser(o->keys[i]); + json_disconnect_parser(o->values[i]); + } + } else if (o->type == JSON_ARRAY) { + size_t i; + for (i = 0; i < o->length; i++) { + json_disconnect_parser(o->array[i]); + } + } + + o->parser = NULL; +} + void json_disconnect(json_object *o) { // Expunge references to this as an array element // or a hash key or value. @@ -761,6 +778,7 @@ void json_disconnect(json_object *o) { o->parser->root = NULL; } + json_disconnect_parser(o); o->parent = NULL; } diff --git a/main.cpp b/main.cpp index 5ae5c199..fffaea1f 100644 --- a/main.cpp +++ b/main.cpp @@ -56,6 +56,7 @@ #include "options.hpp" #include "mvt.hpp" #include "dirtiles.hpp" +#include "evaluator.hpp" static int low_detail = 12; static int full_detail = -1; @@ -349,7 +350,7 @@ void *run_sort(void *v) { return NULL; } -void do_read_parallel(char *map, long long len, long long initial_offset, const char *reading, struct reader *readers, volatile long long *progress_seq, std::set *exclude, std::set *include, int exclude_all, char *fname, int basezoom, int source, int nlayers, std::vector > *layermaps, double droprate, int *initialized, unsigned *initial_x, unsigned *initial_y, int maxzoom, std::string layername, bool uses_gamma, std::map const *attribute_types, int separator, double *dist_sum, size_t *dist_count, bool want_dist, bool filters) { +void do_read_parallel(char *map, long long len, long long initial_offset, const char *reading, struct reader *readers, volatile long long *progress_seq, std::set *exclude, std::set *include, int exclude_all, json_object *filter, char *fname, int basezoom, int source, int nlayers, std::vector > *layermaps, double droprate, int *initialized, unsigned *initial_x, unsigned *initial_y, int maxzoom, std::string layername, bool uses_gamma, std::map const *attribute_types, int separator, double *dist_sum, size_t *dist_count, bool want_dist, bool filters) { long long segs[CPUS + 1]; segs[0] = 0; segs[CPUS] = len; @@ -400,6 +401,7 @@ void do_read_parallel(char *map, long long len, long long initial_offset, const sst[i].filters = filters; sst[i].layermap = &(*layermaps)[i]; sst[i].exclude = exclude; + sst[i].filter = filter; sst[i].include = include; sst[i].exclude_all = exclude_all; sst[i].basezoom = basezoom; @@ -445,6 +447,7 @@ struct read_parallel_arg { std::set *exclude; std::set *include; int exclude_all; + json_object *filter; char *fname; int maxzoom; int basezoom; @@ -483,7 +486,7 @@ void *run_read_parallel(void *v) { } madvise(map, rpa->len, MADV_RANDOM); // sequential, but from several pointers at once - do_read_parallel(map, rpa->len, rpa->offset, rpa->reading, rpa->readers, rpa->progress_seq, rpa->exclude, rpa->include, rpa->exclude_all, rpa->fname, rpa->basezoom, rpa->source, rpa->nlayers, rpa->layermaps, rpa->droprate, rpa->initialized, rpa->initial_x, rpa->initial_y, rpa->maxzoom, rpa->layername, rpa->uses_gamma, rpa->attribute_types, rpa->separator, rpa->dist_sum, rpa->dist_count, rpa->want_dist, rpa->filters); + do_read_parallel(map, rpa->len, rpa->offset, rpa->reading, rpa->readers, rpa->progress_seq, rpa->exclude, rpa->include, rpa->exclude_all, rpa->filter, rpa->fname, rpa->basezoom, rpa->source, rpa->nlayers, rpa->layermaps, rpa->droprate, rpa->initialized, rpa->initial_x, rpa->initial_y, rpa->maxzoom, rpa->layername, rpa->uses_gamma, rpa->attribute_types, rpa->separator, rpa->dist_sum, rpa->dist_count, rpa->want_dist, rpa->filters); madvise(map, rpa->len, MADV_DONTNEED); if (munmap(map, rpa->len) != 0) { @@ -500,7 +503,7 @@ void *run_read_parallel(void *v) { return NULL; } -void start_parsing(int fd, FILE *fp, long long offset, long long len, volatile int *is_parsing, pthread_t *parallel_parser, bool &parser_created, const char *reading, struct reader *readers, volatile long long *progress_seq, std::set *exclude, std::set *include, int exclude_all, char *fname, int basezoom, int source, int nlayers, std::vector > &layermaps, double droprate, int *initialized, unsigned *initial_x, unsigned *initial_y, int maxzoom, std::string layername, bool uses_gamma, std::map const *attribute_types, int separator, double *dist_sum, size_t *dist_count, bool want_dist, bool filters) { +void start_parsing(int fd, FILE *fp, long long offset, long long len, volatile int *is_parsing, pthread_t *parallel_parser, bool &parser_created, const char *reading, struct reader *readers, volatile long long *progress_seq, std::set *exclude, std::set *include, int exclude_all, json_object *filter, char *fname, int basezoom, int source, int nlayers, std::vector > &layermaps, double droprate, int *initialized, unsigned *initial_x, unsigned *initial_y, int maxzoom, std::string layername, bool uses_gamma, std::map const *attribute_types, int separator, double *dist_sum, size_t *dist_count, bool want_dist, bool filters) { // This has to kick off an intermediate thread to start the parser threads, // so the main thread can get back to reading the next input stage while // the intermediate thread waits for the completion of the parser threads. @@ -526,6 +529,7 @@ void start_parsing(int fd, FILE *fp, long long offset, long long len, volatile i rpa->exclude = exclude; rpa->include = include; rpa->exclude_all = exclude_all; + rpa->filter = filter; rpa->fname = fname; rpa->basezoom = basezoom; rpa->source = source; @@ -1001,7 +1005,7 @@ void choose_first_zoom(long long *file_bbox, struct reader *readers, unsigned *i } } -int read_input(std::vector &sources, char *fname, int maxzoom, int minzoom, int basezoom, double basezoom_marker_width, sqlite3 *outdb, const char *outdir, std::set *exclude, std::set *include, int exclude_all, double droprate, int buffer, const char *tmpdir, double gamma, int read_parallel, int forcetable, const char *attribution, bool uses_gamma, long long *file_bbox, const char *prefilter, const char *postfilter, const char *description, bool guess_maxzoom, std::map const *attribute_types, const char *pgm) { +int read_input(std::vector &sources, char *fname, int maxzoom, int minzoom, int basezoom, double basezoom_marker_width, sqlite3 *outdb, const char *outdir, std::set *exclude, std::set *include, int exclude_all, json_object *filter, double droprate, int buffer, const char *tmpdir, double gamma, int read_parallel, int forcetable, const char *attribution, bool uses_gamma, long long *file_bbox, const char *prefilter, const char *postfilter, const char *description, bool guess_maxzoom, std::map const *attribute_types, const char *pgm) { int ret = EXIT_SUCCESS; struct reader readers[CPUS]; @@ -1237,6 +1241,7 @@ int read_input(std::vector &sources, char *fname, int maxzoom, int minzo sst[i].exclude = exclude; sst[i].include = include; sst[i].exclude_all = exclude_all; + sst[i].filter = filter; sst[i].basezoom = basezoom; sst[i].attribute_types = attribute_types; } @@ -1299,7 +1304,7 @@ int read_input(std::vector &sources, char *fname, int maxzoom, int minzo } if (map != NULL && map != MAP_FAILED && read_parallel_this) { - do_read_parallel(map, st.st_size - off, overall_offset, reading.c_str(), readers, &progress_seq, exclude, include, exclude_all, fname, basezoom, layer, nlayers, &layermaps, droprate, initialized, initial_x, initial_y, maxzoom, sources[layer].layer, uses_gamma, attribute_types, read_parallel_this, &dist_sum, &dist_count, guess_maxzoom, prefilter != NULL || postfilter != NULL); + do_read_parallel(map, st.st_size - off, overall_offset, reading.c_str(), readers, &progress_seq, exclude, include, exclude_all, filter, fname, basezoom, layer, nlayers, &layermaps, droprate, initialized, initial_x, initial_y, maxzoom, sources[layer].layer, uses_gamma, attribute_types, read_parallel_this, &dist_sum, &dist_count, guess_maxzoom, prefilter != NULL || postfilter != NULL); overall_offset += st.st_size - off; checkdisk(readers, CPUS); @@ -1375,7 +1380,7 @@ int read_input(std::vector &sources, char *fname, int maxzoom, int minzo } fflush(readfp); - start_parsing(readfd, readfp, initial_offset, ahead, &is_parsing, ¶llel_parser, parser_created, reading.c_str(), readers, &progress_seq, exclude, include, exclude_all, fname, basezoom, layer, nlayers, layermaps, droprate, initialized, initial_x, initial_y, maxzoom, sources[layer].layer, gamma != 0, attribute_types, read_parallel_this, &dist_sum, &dist_count, guess_maxzoom, prefilter != NULL || postfilter != NULL); + start_parsing(readfd, readfp, initial_offset, ahead, &is_parsing, ¶llel_parser, parser_created, reading.c_str(), readers, &progress_seq, exclude, include, exclude_all, filter, fname, basezoom, layer, nlayers, layermaps, droprate, initialized, initial_x, initial_y, maxzoom, sources[layer].layer, gamma != 0, attribute_types, read_parallel_this, &dist_sum, &dist_count, guess_maxzoom, prefilter != NULL || postfilter != NULL); initial_offset += ahead; overall_offset += ahead; @@ -1412,7 +1417,7 @@ int read_input(std::vector &sources, char *fname, int maxzoom, int minzo fflush(readfp); if (ahead > 0) { - start_parsing(readfd, readfp, initial_offset, ahead, &is_parsing, ¶llel_parser, parser_created, reading.c_str(), readers, &progress_seq, exclude, include, exclude_all, fname, basezoom, layer, nlayers, layermaps, droprate, initialized, initial_x, initial_y, maxzoom, sources[layer].layer, gamma != 0, attribute_types, read_parallel_this, &dist_sum, &dist_count, guess_maxzoom, prefilter != NULL || postfilter != NULL); + start_parsing(readfd, readfp, initial_offset, ahead, &is_parsing, ¶llel_parser, parser_created, reading.c_str(), readers, &progress_seq, exclude, include, exclude_all, filter, fname, basezoom, layer, nlayers, layermaps, droprate, initialized, initial_x, initial_y, maxzoom, sources[layer].layer, gamma != 0, attribute_types, read_parallel_this, &dist_sum, &dist_count, guess_maxzoom, prefilter != NULL || postfilter != NULL); if (parser_created) { if (pthread_join(parallel_parser, NULL) != 0) { @@ -1450,6 +1455,7 @@ int read_input(std::vector &sources, char *fname, int maxzoom, int minzo sst.exclude = exclude; sst.include = include; sst.exclude_all = exclude_all; + sst.filter = filter; sst.basezoom = basezoom; sst.attribute_types = attribute_types; @@ -2143,6 +2149,7 @@ int main(int argc, char **argv) { int exclude_all = 0; int read_parallel = 0; int files_open_at_start; + json_object *filter = NULL; for (i = 0; i < 256; i++) { prevent[i] = 0; @@ -2186,6 +2193,8 @@ int main(int argc, char **argv) { {"include", required_argument, 0, 'y'}, {"exclude-all", no_argument, 0, 'X'}, {"attribute-type", required_argument, 0, 'T'}, + {"feature-filter-file", required_argument, 0, 'J'}, + {"feature-filter", required_argument, 0, 'j'}, {"Dropping a fixed fraction of features by zoom level", 0, 0, 0}, {"drop-rate", required_argument, 0, 'r'}, @@ -2415,6 +2424,14 @@ int main(int argc, char **argv) { exclude_all = 1; break; + case 'J': + filter = read_filter(optarg); + break; + + case 'j': + filter = parse_filter(optarg); + break; + case 'r': if (strcmp(optarg, "g") == 0) { droprate = -2; @@ -2663,7 +2680,7 @@ int main(int argc, char **argv) { long long file_bbox[4] = {UINT_MAX, UINT_MAX, 0, 0}; - ret = read_input(sources, name ? name : out_mbtiles ? out_mbtiles : out_dir, maxzoom, minzoom, basezoom, basezoom_marker_width, outdb, out_dir, &exclude, &include, exclude_all, droprate, buffer, tmpdir, gamma, read_parallel, forcetable, attribution, gamma != 0, file_bbox, prefilter, postfilter, description, guess_maxzoom, &attribute_types, argv[0]); + ret = read_input(sources, name ? name : out_mbtiles ? out_mbtiles : out_dir, maxzoom, minzoom, basezoom, basezoom_marker_width, outdb, out_dir, &exclude, &include, exclude_all, filter, droprate, buffer, tmpdir, gamma, read_parallel, forcetable, attribution, gamma != 0, file_bbox, prefilter, postfilter, description, guess_maxzoom, &attribute_types, argv[0]); if (outdb != NULL) { mbtiles_close(outdb, argv[0]); @@ -2680,6 +2697,10 @@ int main(int argc, char **argv) { exit(EXIT_FAILURE); } + if (filter != NULL) { + json_free(filter); + } + return ret; } diff --git a/man/tippecanoe.1 b/man/tippecanoe.1 index e4357320..75dc84bc 100644 --- a/man/tippecanoe.1 +++ b/man/tippecanoe.1 @@ -178,6 +178,18 @@ The \fItype\fP may be \fB\fCstring\fR, \fB\fCfloat\fR, \fB\fCint\fR, or \fB\fCbo If the type is \fB\fCbool\fR, then original attributes of \fB\fC0\fR (or, if numeric, \fB\fC0.0\fR, etc.), \fB\fCfalse\fR, \fB\fCnull\fR, or the empty string become \fB\fCfalse\fR, and otherwise become \fB\fCtrue\fR\&. If the type is \fB\fCfloat\fR or \fB\fCint\fR and the original attribute was non\-numeric, it becomes \fB\fC0\fR\&. If the type is \fB\fCint\fR and the original attribute was floating\-point, it is rounded to the nearest integer. +.IP \(bu 2 +\fB\fC\-j\fR \fIfilter\fP or \fB\fC\-\-feature\-filter\fR=\fIfilter\fP: Check features against a per\-layer filter (as defined in the Mapbox GL Style Specification \[la]https://www.mapbox.com/mapbox-gl-js/style-spec/#types-filter\[ra]) and only include those that match. Any features in layers that have no filter specified will be passed through. Filters for the layer \fB\fC"*"\fR apply to all layers. +.IP \(bu 2 +\fB\fC\-J\fR \fIfilter\-file\fP or \fB\fC\-\-feature\-filter\-file\fR=\fIfilter\-file\fP: Like \fB\fC\-j\fR, but read the filter from a file. +.RE +.PP +Example: to find the Natural Earth countries with low \fB\fCscalerank\fR but high \fB\fCLABELRANK\fR: +.PP +.RS +.nf +tile\-join \-o filtered.mbtiles \-j '{ "ne_10m_admin_0_countries": [ "all", [ "<", "scalerank", 3 ], [ ">", "LABELRANK", 5 ] ] }' ne_10m_admin_0_countries.mbtiles +.fi .RE .SS Dropping a fixed fraction of features by zoom level .RS @@ -568,6 +580,10 @@ The options are: \fB\fC\-x\fR \fIkey\fP or \fB\fC\-\-exclude=\fR\fIkey\fP: Remove attributes of type \fIkey\fP from the output. You can use this to remove the field you are matching against if you no longer need it after joining, or to remove any other attributes you don't want. .IP \(bu 2 \fB\fC\-i\fR or \fB\fC\-\-if\-matched\fR: Only include features that matched the CSV. +.IP \(bu 2 +\fB\fC\-j\fR \fIfilter\fP or \fB\fC\-\-feature\-filter\fR=\fIfilter\fP: Check features against a per\-layer filter (as defined in the Mapbox GL Style Specification \[la]https://www.mapbox.com/mapbox-gl-js/style-spec/#types-filter\[ra]) and only include those that match. Any features in layers that have no filter specified will be passed through. Filters for the layer \fB\fC"*"\fR apply to all layers. +.IP \(bu 2 +\fB\fC\-J\fR \fIfilter\-file\fP or \fB\fC\-\-feature\-filter\-file\fR=\fIfilter\-file\fP: Like \fB\fC\-j\fR, but read the filter from a file. .RE .SS Setting or disabling tile size limits .RS diff --git a/mvt.cpp b/mvt.cpp index 6feceb91..9559dd4d 100644 --- a/mvt.cpp +++ b/mvt.cpp @@ -530,6 +530,8 @@ mvt_value stringified_to_mvt_value(int type, const char *s) { } else if (type == mvt_bool) { tv.type = mvt_bool; tv.numeric_value.bool_value = (s[0] == 't'); + } else if (type == mvt_null) { + tv.type = mvt_null; } else { tv.type = mvt_string; tv.string_value = s; diff --git a/serial.cpp b/serial.cpp index 03f72d72..76b99d20 100644 --- a/serial.cpp +++ b/serial.cpp @@ -18,6 +18,7 @@ #include "main.hpp" #include "pool.hpp" #include "projection.hpp" +#include "evaluator.hpp" #include "milo/dtoa_milo.h" size_t fwrite_check(const void *ptr, size_t size, size_t nitems, FILE *stream, const char *fname) { @@ -513,19 +514,60 @@ int serialize_feature(struct serialization_state *sst, serial_feature &sf) { for (size_t i = 0; i < sf.full_keys.size(); i++) { if (sst->exclude_all) { - if (sst->include->count(sf.full_keys[i]) == 0) { + if (sst->include->count(sf.full_keys[i]) == 0 && sf.full_keys[i] != "") { sf.full_keys[i] = ""; sf.m--; continue; } - } else if (sst->exclude->count(sf.full_keys[i]) != 0) { + } else if (sst->exclude->count(sf.full_keys[i]) != 0 && sf.full_keys[i] != "") { sf.full_keys[i] = ""; sf.m--; continue; } coerce_value(sf.full_keys[i], sf.full_values[i].type, sf.full_values[i].s, sst->attribute_types); - if (sf.full_values[i].type == mvt_null) { + } + + if (sst->filter != NULL) { + std::map attributes; + + for (size_t i = 0; i < sf.full_keys.size(); i++) { + if (sf.full_keys[i] != "") { + std::string key = sf.full_keys[i]; + mvt_value val = stringified_to_mvt_value(sf.full_values[i].type, sf.full_values[i].s.c_str()); + + attributes.insert(std::pair(key, val)); + } + } + + if (sf.has_id) { + mvt_value v; + v.type = mvt_uint; + v.numeric_value.uint_value = sf.id; + + attributes.insert(std::pair("$id", v)); + } + + mvt_value v; + v.type = mvt_string; + + if (sf.t == mvt_point) { + v.string_value = "Point"; + } else if (sf.t == mvt_linestring) { + v.string_value = "LineString"; + } else if (sf.t == mvt_polygon) { + v.string_value = "Polygon"; + } + + attributes.insert(std::pair("$type", v)); + + if (!evaluate(attributes, sf.layername, sst->filter)) { + return 0; + } + } + + for (size_t i = 0; i < sf.full_keys.size(); i++) { + if (sf.full_values[i].type == mvt_null && sf.full_keys[i] != "") { sf.full_keys[i] = ""; sf.m--; } diff --git a/serial.hpp b/serial.hpp index 439c30ed..918e3e81 100644 --- a/serial.hpp +++ b/serial.hpp @@ -7,6 +7,7 @@ #include #include "geometry.hpp" #include "mbtiles.hpp" +#include "jsonpull/jsonpull.h" size_t fwrite_check(const void *ptr, size_t size, size_t nitems, FILE *stream, const char *fname); @@ -125,6 +126,7 @@ struct serialization_state { std::set *exclude; std::set *include; int exclude_all; + json_object *filter; }; int serialize_feature(struct serialization_state *sst, serial_feature &sf); diff --git a/tests/feature-filter/filter b/tests/feature-filter/filter new file mode 100644 index 00000000..170ee33c --- /dev/null +++ b/tests/feature-filter/filter @@ -0,0 +1,133 @@ +{ +"layer2850085303": ["==", "foo", "bar"], +"notlayer2850085303": [ "none", ["==", "foo", "bar"] ] +, +"layer1948775714": ["==", "foo", 0], +"notlayer1948775714": [ "none", ["==", "foo", 0] ] +, +"layer220442869": ["==", "foo", null], +"notlayer220442869": [ "none", ["==", "foo", null] ] +, +"layer1675768827": ["==", "$type", "LineString"], +"notlayer1675768827": [ "none", ["==", "$type", "LineString"] ] +, +"layer827905613": ["==", "$id", 1234], +"notlayer827905613": [ "none", ["==", "$id", 1234] ] +, +"layer442294443": ["!=", "foo", "bar"], +"notlayer442294443": [ "none", ["!=", "foo", "bar"] ] +, +"layer1479822166": ["!=", "foo", 0], +"notlayer1479822166": [ "none", ["!=", "foo", 0] ] +, +"layer1780490201": ["!=", "foo", null], +"notlayer1780490201": [ "none", ["!=", "foo", null] ] +, +"layer1549998271": ["!=", "$type", "LineString"], +"notlayer1549998271": [ "none", ["!=", "$type", "LineString"] ] +, +"layer2624681884": ["<", "foo", 0], +"notlayer2624681884": [ "none", ["<", "foo", 0] ] +, +"layer2596070344": ["<", "foo", "0"], +"notlayer2596070344": [ "none", ["<", "foo", "0"] ] +, +"layer4079511021": ["<=", "foo", 0], +"notlayer4079511021": [ "none", ["<=", "foo", 0] ] +, +"layer1392333553": ["<=", "foo", "0"], +"notlayer1392333553": [ "none", ["<=", "foo", "0"] ] +, +"layer4018549566": [">", "foo", 0], +"notlayer4018549566": [ "none", [">", "foo", 0] ] +, +"layer3835447578": [">", "foo", "0"], +"notlayer3835447578": [ "none", [">", "foo", "0"] ] +, +"layer4113007703": [">=", "foo", 0], +"notlayer4113007703": [ "none", [">=", "foo", 0] ] +, +"layer4650955": [">=", "foo", "0"], +"notlayer4650955": [ "none", [">=", "foo", "0"] ] +, +"layer1510660139": ["in", "foo"], +"notlayer1510660139": [ "none", ["in", "foo"] ] +, +"layer2681700979": ["in", "foo", "0"], +"notlayer2681700979": [ "none", ["in", "foo", "0"] ] +, +"layer328238911": ["in", "foo", 0], +"notlayer328238911": [ "none", ["in", "foo", 0] ] +, +"layer584721662": ["in", "foo", null], +"notlayer584721662": [ "none", ["in", "foo", null] ] +, +"layer464719784": ["in", "foo", 0, 1], +"notlayer464719784": [ "none", ["in", "foo", 0, 1] ] +, +"layer1359089124": ["in", "$type", "LineString", "Polygon"], +"notlayer1359089124": [ "none", ["in", "$type", "LineString", "Polygon"] ] +, +"layer3115744778": ["in", "$type", "Polygon", "LineString", "Point"], +"notlayer3115744778": [ "none", ["in", "$type", "Polygon", "LineString", "Point"] ] +, +"layer262236988": ["!in", "foo"], +"notlayer262236988": [ "none", ["!in", "foo"] ] +, +"layer3444677016": ["!in", "foo", "0"], +"notlayer3444677016": [ "none", ["!in", "foo", "0"] ] +, +"layer3048837612": ["!in", "foo", 0], +"notlayer3048837612": [ "none", ["!in", "foo", 0] ] +, +"layer3045031255": ["!in", "foo", null], +"notlayer3045031255": [ "none", ["!in", "foo", null] ] +, +"layer2925029377": ["!in", "foo", 0, 1], +"notlayer2925029377": [ "none", ["!in", "foo", 0, 1] ] +, +"layer2275670193": ["!in", "$type", "LineString", "Polygon"], +"notlayer2275670193": [ "none", ["!in", "$type", "LineString", "Polygon"] ] +, +"layer4098096220": ["any"], +"notlayer4098096220": [ "none", ["any"] ] +, +"layer3603116915": ["any", ["==", "foo", 1]], +"notlayer3603116915": [ "none", ["any", ["==", "foo", 1]] ] +, +"layer3603115546": ["any", ["==", "foo", 0]], +"notlayer3603115546": [ "none", ["any", ["==", "foo", 0]] ] +, +"layer4070554881": ["any", ["==", "foo", 0], ["==", "foo", 1]], +"notlayer4070554881": [ "none", ["any", ["==", "foo", 0], ["==", "foo", 1]] ] +, +"layer4097977117": ["all"], +"notlayer4097977117": [ "none", ["all"] ] +, +"layer2333216076": ["all", ["==", "foo", 1]], +"notlayer2333216076": [ "none", ["all", ["==", "foo", 1]] ] +, +"layer2333214707": ["all", ["==", "foo", 0]], +"notlayer2333214707": [ "none", ["all", ["==", "foo", 0]] ] +, +"layer1619469362": ["all", ["==", "foo", 0], ["==", "foo", 1]], +"notlayer1619469362": [ "none", ["all", ["==", "foo", 0], ["==", "foo", 1]] ] +, +"layer2208582832": ["none"], +"notlayer2208582832": [ "none", ["none"] ] +, +"layer3425959847": ["none", ["==", "foo", 1]], +"notlayer3425959847": [ "none", ["none", ["==", "foo", 1]] ] +, +"layer3425958478": ["none", ["==", "foo", 0]], +"notlayer3425958478": [ "none", ["none", ["==", "foo", 0]] ] +, +"layer253198869": ["none", ["==", "foo", 0], ["==", "foo", 1]], +"notlayer253198869": [ "none", ["none", ["==", "foo", 0], ["==", "foo", 1]] ] +, +"layer938200568": ["has", "foo"], +"notlayer938200568": [ "none", ["has", "foo"] ] +, +"layer1991184237": ["!has", "foo"], +"notlayer1991184237": [ "none", ["!has", "foo"] ] +} diff --git a/tests/feature-filter/in.json b/tests/feature-filter/in.json new file mode 100644 index 00000000..e1cc460f --- /dev/null +++ b/tests/feature-filter/in.json @@ -0,0 +1,368 @@ +{ "type": "Feature", "tippecanoe": { "layer": "layer2850085303" }, "properties": {"foo": "bar", "rule": "\"properties\": {\"foo\": \"bar\"}, [\"==\", \"foo\", \"bar\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2850085303" }, "properties": {"foo": "bar", "rule": "\"properties\": {\"foo\": \"bar\"}, [\"==\", \"foo\", \"bar\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2850085303" }, "properties": {"foo": "baz", "rule": "not \"properties\": {\"foo\": \"baz\"}, [\"==\", \"foo\", \"bar\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2850085303" }, "properties": {"foo": "baz", "rule": "not \"properties\": {\"foo\": \"baz\"}, [\"==\", \"foo\", \"bar\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1948775714" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1948775714" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1948775714" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1948775714" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1948775714" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1948775714" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1948775714" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1948775714" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1948775714" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1948775714" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1948775714" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1948775714" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1948775714" }, "properties": { "rule": "not \"properties\": {}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1948775714" }, "properties": { "rule": "not \"properties\": {}, [\"==\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer220442869" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer220442869" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer220442869" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer220442869" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer220442869" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer220442869" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer220442869" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer220442869" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer220442869" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer220442869" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer220442869" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer220442869" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer220442869" }, "properties": { "rule": "not \"properties\": {}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer220442869" }, "properties": { "rule": "not \"properties\": {}, [\"==\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1675768827" }, "properties": { "rule": "not type: 1, [\"==\", \"$type\", \"LineString\"]" }, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1675768827" }, "properties": { "rule": "not type: 1, [\"==\", \"$type\", \"LineString\"]" }, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1675768827" }, "properties": { "rule": "type: 2, [\"==\", \"$type\", \"LineString\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0, 0 ], [ 1, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1675768827" }, "properties": { "rule": "type: 2, [\"==\", \"$type\", \"LineString\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ -100, 0 ], [ -101, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer827905613" }, "id": 1234, "properties": { "rule": "\"id\": 1234, [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer827905613" }, "id": 1234, "properties": { "rule": "\"id\": 1234, [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer827905613" }, "id": "1234", "properties": { "rule": "not \"id\": \"1234\", [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer827905613" }, "id": "1234", "properties": { "rule": "not \"id\": \"1234\", [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer827905613" }, "properties": {"id": 1234, "rule": "not \"properties\": {\"id\": 1234}, [\"==\", \"$id\", 1234]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer827905613" }, "properties": {"id": 1234, "rule": "not \"properties\": {\"id\": 1234}, [\"==\", \"$id\", 1234]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer442294443" }, "properties": {"foo": "bar", "rule": "not \"properties\": {\"foo\": \"bar\"}, [\"!=\", \"foo\", \"bar\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer442294443" }, "properties": {"foo": "bar", "rule": "not \"properties\": {\"foo\": \"bar\"}, [\"!=\", \"foo\", \"bar\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer442294443" }, "properties": {"foo": "baz", "rule": "\"properties\": {\"foo\": \"baz\"}, [\"!=\", \"foo\", \"bar\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer442294443" }, "properties": {"foo": "baz", "rule": "\"properties\": {\"foo\": \"baz\"}, [\"!=\", \"foo\", \"bar\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1479822166" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1479822166" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1479822166" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1479822166" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1479822166" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1479822166" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1479822166" }, "properties": {"foo": true, "rule": "\"properties\": {\"foo\": true}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1479822166" }, "properties": {"foo": true, "rule": "\"properties\": {\"foo\": true}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1479822166" }, "properties": {"foo": false, "rule": "\"properties\": {\"foo\": false}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1479822166" }, "properties": {"foo": false, "rule": "\"properties\": {\"foo\": false}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1479822166" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1479822166" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1479822166" }, "properties": { "rule": "\"properties\": {}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1479822166" }, "properties": { "rule": "\"properties\": {}, [\"!=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1780490201" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1780490201" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1780490201" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1780490201" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1780490201" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1780490201" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1780490201" }, "properties": {"foo": true, "rule": "\"properties\": {\"foo\": true}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1780490201" }, "properties": {"foo": true, "rule": "\"properties\": {\"foo\": true}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1780490201" }, "properties": {"foo": false, "rule": "\"properties\": {\"foo\": false}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1780490201" }, "properties": {"foo": false, "rule": "\"properties\": {\"foo\": false}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1780490201" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1780490201" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1780490201" }, "properties": { "rule": "\"properties\": {}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1780490201" }, "properties": { "rule": "\"properties\": {}, [\"!=\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1549998271" }, "properties": { "rule": "type: 1, [\"!=\", \"$type\", \"LineString\"]" }, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1549998271" }, "properties": { "rule": "type: 1, [\"!=\", \"$type\", \"LineString\"]" }, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1549998271" }, "properties": { "rule": "not type: 2, [\"!=\", \"$type\", \"LineString\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0, 0 ], [ 1, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1549998271" }, "properties": { "rule": "not type: 2, [\"!=\", \"$type\", \"LineString\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ -100, 0 ], [ -101, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": {"foo": -1, "rule": "\"properties\": {\"foo\": -1}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": {"foo": -1, "rule": "\"properties\": {\"foo\": -1}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2624681884" }, "properties": { "rule": "not \"properties\": {}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2624681884" }, "properties": { "rule": "not \"properties\": {}, [\"<\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2596070344" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2596070344" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2596070344" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2596070344" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2596070344" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2596070344" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2596070344" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2596070344" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2596070344" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2596070344" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2596070344" }, "properties": {"foo": "-1", "rule": "\"properties\": {\"foo\": \"-1\"}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2596070344" }, "properties": {"foo": "-1", "rule": "\"properties\": {\"foo\": \"-1\"}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2596070344" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2596070344" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2596070344" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2596070344" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2596070344" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2596070344" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"<\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": {"foo": -1, "rule": "\"properties\": {\"foo\": -1}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": {"foo": -1, "rule": "\"properties\": {\"foo\": -1}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4079511021" }, "properties": { "rule": "not \"properties\": {}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4079511021" }, "properties": { "rule": "not \"properties\": {}, [\"<=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1392333553" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1392333553" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1392333553" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1392333553" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1392333553" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1392333553" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1392333553" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1392333553" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1392333553" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1392333553" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1392333553" }, "properties": {"foo": "-1", "rule": "\"properties\": {\"foo\": \"-1\"}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1392333553" }, "properties": {"foo": "-1", "rule": "\"properties\": {\"foo\": \"-1\"}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1392333553" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1392333553" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1392333553" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1392333553" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1392333553" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1392333553" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"<=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4018549566" }, "properties": { "rule": "not \"properties\": {}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4018549566" }, "properties": { "rule": "not \"properties\": {}, [\">\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3835447578" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3835447578" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3835447578" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3835447578" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3835447578" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3835447578" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3835447578" }, "properties": {"foo": "1", "rule": "\"properties\": {\"foo\": \"1\"}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3835447578" }, "properties": {"foo": "1", "rule": "\"properties\": {\"foo\": \"1\"}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3835447578" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3835447578" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3835447578" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3835447578" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3835447578" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3835447578" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3835447578" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3835447578" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3835447578" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3835447578" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\">\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": {"foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4113007703" }, "properties": { "rule": "not \"properties\": {}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4113007703" }, "properties": { "rule": "not \"properties\": {}, [\">=\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4650955" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4650955" }, "properties": {"foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4650955" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4650955" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4650955" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4650955" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4650955" }, "properties": {"foo": "1", "rule": "\"properties\": {\"foo\": \"1\"}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4650955" }, "properties": {"foo": "1", "rule": "\"properties\": {\"foo\": \"1\"}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4650955" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4650955" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4650955" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4650955" }, "properties": {"foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4650955" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4650955" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4650955" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4650955" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4650955" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4650955" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\">=\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1510660139" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"in\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1510660139" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"in\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2681700979" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2681700979" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2681700979" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2681700979" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2681700979" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2681700979" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2681700979" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2681700979" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2681700979" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2681700979" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2681700979" }, "properties": { "rule": "not \"properties\": {}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2681700979" }, "properties": { "rule": "not \"properties\": {}, [\"in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer328238911" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer328238911" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer328238911" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer328238911" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer328238911" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer328238911" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer328238911" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer328238911" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer328238911" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer328238911" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer584721662" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer584721662" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer584721662" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer584721662" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer584721662" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer584721662" }, "properties": {"foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer584721662" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer584721662" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer584721662" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer584721662" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer464719784" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer464719784" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer464719784" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer464719784" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer464719784" }, "properties": {"foo": 3, "rule": "not \"properties\": {\"foo\": 3}, [\"in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer464719784" }, "properties": {"foo": 3, "rule": "not \"properties\": {\"foo\": 3}, [\"in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1359089124" }, "properties": { "rule": "not type: 1, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1359089124" }, "properties": { "rule": "not type: 1, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1359089124" }, "properties": { "rule": "type: 2, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0, 0 ], [ 1, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1359089124" }, "properties": { "rule": "type: 2, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ -100, 0 ], [ -101, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1359089124" }, "properties": { "rule": "type: 3, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 0, 0 ], [ 1, 1 ], [ 1, 0 ], [ 0, 0 ] ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1359089124" }, "properties": { "rule": "type: 3, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -100, 0 ], [ -101, 1 ], [ -101, 0 ], [-100, 0 ] ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3115744778" }, "properties": { "rule": "type: 1, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3115744778" }, "properties": { "rule": "type: 1, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3115744778" }, "properties": { "rule": "type: 2, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0, 0 ], [ 1, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3115744778" }, "properties": { "rule": "type: 2, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ -100, 0 ], [ -101, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3115744778" }, "properties": { "rule": "type: 3, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 0, 0 ], [ 1, 1 ], [ 1, 0 ], [ 0, 0 ] ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3115744778" }, "properties": { "rule": "type: 3, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -100, 0 ], [ -101, 1 ], [ -101, 0 ], [-100, 0 ] ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer262236988" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!in\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer262236988" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!in\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3444677016" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3444677016" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3444677016" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3444677016" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3444677016" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"!in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3444677016" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"!in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3444677016" }, "properties": { "rule": "\"properties\": {}, [\"!in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3444677016" }, "properties": { "rule": "\"properties\": {}, [\"!in\", \"foo\", \"0\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3048837612" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3048837612" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3048837612" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3048837612" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3048837612" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"!in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3048837612" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"!in\", \"foo\", 0]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3045031255" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3045031255" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3045031255" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3045031255" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3045031255" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"!in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3045031255" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"!in\", \"foo\", null]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2925029377" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2925029377" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2925029377" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"!in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2925029377" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"!in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2925029377" }, "properties": {"foo": 3, "rule": "\"properties\": {\"foo\": 3}, [\"!in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2925029377" }, "properties": {"foo": 3, "rule": "\"properties\": {\"foo\": 3}, [\"!in\", \"foo\", 0, 1]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2275670193" }, "properties": { "rule": "type: 1, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2275670193" }, "properties": { "rule": "type: 1, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2275670193" }, "properties": { "rule": "not type: 2, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0, 0 ], [ 1, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2275670193" }, "properties": { "rule": "not type: 2, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ -100, 0 ], [ -101, 1 ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2275670193" }, "properties": { "rule": "not type: 3, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 0, 0 ], [ 1, 1 ], [ 1, 0 ], [ 0, 0 ] ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2275670193" }, "properties": { "rule": "not type: 3, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -100, 0 ], [ -101, 1 ], [ -101, 0 ], [-100, 0 ] ] ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4098096220" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"any\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4098096220" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"any\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3603116915" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3603116915" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3603115546" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 0]]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3603115546" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 0]]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4070554881" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4070554881" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer4097977117" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"all\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer4097977117" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"all\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2333216076" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2333216076" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2333214707" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 0]]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2333214707" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 0]]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1619469362" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1619469362" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer2208582832" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"none\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer2208582832" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"none\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3425959847" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3425959847" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer3425958478" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 0]]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer3425958478" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 0]]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer253198869" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer253198869" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer938200568" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer938200568" }, "properties": {"foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer938200568" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer938200568" }, "properties": {"foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer938200568" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer938200568" }, "properties": {"foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer938200568" }, "properties": {"foo": true, "rule": "\"properties\": {\"foo\": true}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer938200568" }, "properties": {"foo": true, "rule": "\"properties\": {\"foo\": true}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer938200568" }, "properties": {"foo": false, "rule": "\"properties\": {\"foo\": false}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer938200568" }, "properties": {"foo": false, "rule": "\"properties\": {\"foo\": false}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer938200568" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer938200568" }, "properties": {"foo": null, "rule": "\"properties\": {\"foo\": null}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer938200568" }, "properties": { "rule": "not \"properties\": {}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer938200568" }, "properties": { "rule": "not \"properties\": {}, [\"has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1991184237" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1991184237" }, "properties": {"foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1991184237" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1991184237" }, "properties": {"foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1991184237" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1991184237" }, "properties": {"foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1991184237" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1991184237" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1991184237" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1991184237" }, "properties": {"foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1991184237" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1991184237" }, "properties": {"foo": null, "rule": "not \"properties\": {\"foo\": null}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "layer1991184237" }, "properties": { "rule": "\"properties\": {}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] } } +{ "type": "Feature", "tippecanoe": { "layer": "notlayer1991184237" }, "properties": { "rule": "\"properties\": {}, [\"!has\", \"foo\"]"}, "geometry": { "type": "Point", "coordinates": [ -100, 0 ] } } diff --git a/tests/feature-filter/out/-z0_-Jtests%feature-filter%filter.json b/tests/feature-filter/out/-z0_-Jtests%feature-filter%filter.json new file mode 100644 index 00000000..1ec9a31d --- /dev/null +++ b/tests/feature-filter/out/-z0_-Jtests%feature-filter%filter.json @@ -0,0 +1,528 @@ +{ "type": "FeatureCollection", "properties": { +"bounds": "0.000000,0.000000,1.000000,1.000000", +"center": "0.000000,0.000000,0", +"description": "tests/feature-filter/out/-z0_-Jtests%feature-filter%filter.json.check.mbtiles", +"format": "pbf", +"json": "{\"vector_layers\": [ { \"id\": \"layer1359089124\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer1392333553\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer1479822166\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"layer1510660139\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"layer1549998271\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer1619469362\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"layer1675768827\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer1780490201\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"layer1948775714\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer1991184237\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer220442869\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer2208582832\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer2275670193\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer2333214707\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"layer2333216076\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer253198869\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"layer2596070344\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer262236988\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer2624681884\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer2681700979\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer2850085303\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer2925029377\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3045031255\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"layer3048837612\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer3115744778\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer328238911\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3425958478\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3425959847\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"layer3444677016\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3603115546\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"layer3603116915\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3835447578\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer4018549566\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4070554881\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4079511021\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4097977117\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4098096220\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"layer4113007703\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer442294443\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer464719784\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4650955\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer584721662\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer827905613\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer938200568\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer1359089124\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer1392333553\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer1479822166\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer1510660139\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer1549998271\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer1619469362\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer1675768827\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer1780490201\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer1948775714\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer1991184237\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer220442869\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer2208582832\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"notlayer2275670193\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer2333214707\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer2333216076\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"notlayer253198869\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer2596070344\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer262236988\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"notlayer2624681884\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer2681700979\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer2850085303\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"notlayer2925029377\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer3045031255\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer3048837612\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer3115744778\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"notlayer328238911\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer3425958478\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"notlayer3425959847\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer3444677016\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"notlayer3603115546\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer3603116915\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"notlayer3835447578\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer4018549566\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer4070554881\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"notlayer4079511021\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer4097977117\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {} }, { \"id\": \"notlayer4098096220\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer4113007703\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer442294443\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"notlayer464719784\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer4650955\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer584721662\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer827905613\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"id\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer938200568\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} } ],\"tilestats\": {\"layerCount\": 88,\"layers\": [{\"layer\": \"layer1359089124\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"type: 2, [\\\"in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\",\"type: 3, [\\\"in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\"]}]},{\"layer\": \"layer1392333553\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"string\",\"values\": [\"-1\",\"0\"]},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer1479822166\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 4,\"type\": \"mixed\",\"values\": [\"0\",1,false,true],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 6,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": false}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": true}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {}, [\\\"!=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer1510660139\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"layer1549998271\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"type: 1, [\\\"!=\\\", \\\"$type\\\", \\\"LineString\\\"]\"]}]},{\"layer\": \"layer1619469362\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"layer1675768827\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"type: 2, [\\\"==\\\", \\\"$type\\\", \\\"LineString\\\"]\"]}]},{\"layer\": \"layer1780490201\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 5,\"type\": \"mixed\",\"values\": [\"0\",0,1,false,true],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 6,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": false}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": true}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {}, [\\\"!=\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"layer1948775714\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"==\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer1991184237\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {}, [\\\"!has\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"layer220442869\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"==\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"layer2208582832\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"none\\\"]\"]}]},{\"layer\": \"layer2275670193\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"type: 1, [\\\"!in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\"]}]},{\"layer\": \"layer2333214707\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"layer2333216076\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"all\\\", [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"layer253198869\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"layer2596070344\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"-1\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer262236988\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!in\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"layer2624681884\",\"count\": 10,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [-1],\"min\": -1,\"max\": -1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": -1}, [\\\"<\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer2681700979\",\"count\": 6,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"0\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer2850085303\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"bar\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"bar\\\"}, [\\\"==\\\", \\\"foo\\\", \\\"bar\\\"]\"]}]},{\"layer\": \"layer2925029377\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [3],\"min\": 3,\"max\": 3},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 3}, [\\\"!in\\\", \\\"foo\\\", 0, 1]\"]}]},{\"layer\": \"layer3045031255\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"mixed\",\"values\": [\"0\",0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!in\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!in\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"layer3048837612\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"0\"]},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!in\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"!in\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer3115744778\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 3,\"type\": \"string\",\"values\": [\"type: 1, [\\\"in\\\", \\\"$type\\\", \\\"Polygon\\\", \\\"LineString\\\", \\\"Point\\\"]\",\"type: 2, [\\\"in\\\", \\\"$type\\\", \\\"Polygon\\\", \\\"LineString\\\", \\\"Point\\\"]\",\"type: 3, [\\\"in\\\", \\\"$type\\\", \\\"Polygon\\\", \\\"LineString\\\", \\\"Point\\\"]\"]}]},{\"layer\": \"layer328238911\",\"count\": 5,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"in\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer3425958478\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"none\\\", [\\\"==\\\", \\\"foo\\\", 0]]\"]}]},{\"layer\": \"layer3425959847\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"layer3444677016\",\"count\": 4,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 3,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!in\\\", \\\"foo\\\", \\\"0\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"!in\\\", \\\"foo\\\", \\\"0\\\"]\",\"\\\"properties\\\": {}, [\\\"!in\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer3603115546\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"layer3603116915\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"any\\\", [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"layer3835447578\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"1\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer4018549566\",\"count\": 10,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\">\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer4070554881\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"any\\\", [\\\"==\\\", \\\"foo\\\", 0], [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"layer4079511021\",\"count\": 10,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"number\",\"values\": [-1,0],\"min\": -1,\"max\": 0},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": -1}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"<=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer4097977117\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"all\\\"]\"]}]},{\"layer\": \"layer4098096220\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"layer4113007703\",\"count\": 10,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"number\",\"values\": [0,1],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\">=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\">=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer442294443\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"baz\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"baz\\\"}, [\\\"!=\\\", \\\"foo\\\", \\\"bar\\\"]\"]}]},{\"layer\": \"layer464719784\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"number\",\"values\": [0,1],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"in\\\", \\\"foo\\\", 0, 1]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"in\\\", \\\"foo\\\", 0, 1]\"]}]},{\"layer\": \"layer4650955\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"string\",\"values\": [\"0\",\"1\"]},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer584721662\",\"count\": 5,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"in\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"layer827905613\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"id\\\": 1234, [\\\"==\\\", \\\"$id\\\", 1234]\"]}]},{\"layer\": \"layer938200568\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 5,\"type\": \"mixed\",\"values\": [\"0\",0,1,false,true],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 6,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"has\\\", \\\"foo\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"has\\\", \\\"foo\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"has\\\", \\\"foo\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": false}, [\\\"has\\\", \\\"foo\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"has\\\", \\\"foo\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": true}, [\\\"has\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"notlayer1359089124\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not type: 1, [\\\"in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\"]}]},{\"layer\": \"notlayer1392333553\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 6,\"type\": \"mixed\",\"values\": [-1,0,\"1\",1,false,true],\"min\": -1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 7,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer1479822166\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer1510660139\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"in\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"notlayer1549998271\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not type: 2, [\\\"!=\\\", \\\"$type\\\", \\\"LineString\\\"]\"]}]},{\"layer\": \"notlayer1619469362\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"all\\\", [\\\"==\\\", \\\"foo\\\", 0], [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"notlayer1675768827\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not type: 1, [\\\"==\\\", \\\"$type\\\", \\\"LineString\\\"]\"]}]},{\"layer\": \"notlayer1780490201\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"!=\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"notlayer1948775714\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 4,\"type\": \"mixed\",\"values\": [\"0\",1,false,true],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 6,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\"==\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer1991184237\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 4,\"type\": \"mixed\",\"values\": [\"0\",0,1,false],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 5,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!has\\\", \\\"foo\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!has\\\", \\\"foo\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!has\\\", \\\"foo\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"!has\\\", \\\"foo\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"!has\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"notlayer220442869\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 5,\"type\": \"mixed\",\"values\": [\"0\",0,1,false,true],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 6,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {}, [\\\"==\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"notlayer2208582832\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"notlayer2275670193\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"not type: 2, [\\\"!in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\",\"not type: 3, [\\\"!in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\"]}]},{\"layer\": \"notlayer2333214707\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"all\\\", [\\\"==\\\", \\\"foo\\\", 0]]\"]}]},{\"layer\": \"notlayer2333216076\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"notlayer253198869\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"none\\\", [\\\"==\\\", \\\"foo\\\", 0], [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"notlayer2596070344\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 7,\"type\": \"mixed\",\"values\": [-1,\"0\",0,\"1\",1,false,true],\"min\": -1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 8,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer262236988\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"notlayer2624681884\",\"count\": 10,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 7,\"type\": \"mixed\",\"values\": [\"-1\",\"0\",0,\"1\",1,false,true],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 9,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\"<\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer2681700979\",\"count\": 6,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 3,\"type\": \"mixed\",\"values\": [0,false,true],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 5,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer2850085303\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"baz\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"baz\\\"}, [\\\"==\\\", \\\"foo\\\", \\\"bar\\\"]\"]}]},{\"layer\": \"notlayer2925029377\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"number\",\"values\": [0,1],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!in\\\", \\\"foo\\\", 0, 1]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!in\\\", \\\"foo\\\", 0, 1]\"]}]},{\"layer\": \"notlayer3045031255\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"!in\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"notlayer3048837612\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!in\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer3115744778\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"notlayer328238911\",\"count\": 5,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 3,\"type\": \"mixed\",\"values\": [\"0\",false,true]},{\"attribute\": \"rule\",\"count\": 4,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"in\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"in\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"in\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"in\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer3425958478\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"notlayer3425959847\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"none\\\", [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"notlayer3444677016\",\"count\": 4,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"0\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!in\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer3603115546\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"any\\\", [\\\"==\\\", \\\"foo\\\", 0]]\"]}]},{\"layer\": \"notlayer3603116915\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"notlayer3835447578\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 7,\"type\": \"mixed\",\"values\": [\"-1\",-1,\"0\",0,1,false,true],\"min\": -1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 8,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer4018549566\",\"count\": 10,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 7,\"type\": \"mixed\",\"values\": [\"-1\",-1,\"0\",0,\"1\",false,true],\"min\": -1,\"max\": 0},{\"attribute\": \"rule\",\"count\": 9,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\">\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer4070554881\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"notlayer4079511021\",\"count\": 10,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 6,\"type\": \"mixed\",\"values\": [\"-1\",\"0\",\"1\",1,false,true],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 8,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\"<=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer4097977117\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 0,\"attributes\": []},{\"layer\": \"notlayer4098096220\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"any\\\"]\"]}]},{\"layer\": \"notlayer4113007703\",\"count\": 10,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 6,\"type\": \"mixed\",\"values\": [\"-1\",-1,\"0\",\"1\",false,true],\"min\": -1,\"max\": -1},{\"attribute\": \"rule\",\"count\": 8,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\">=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer442294443\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"bar\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"bar\\\"}, [\\\"!=\\\", \\\"foo\\\", \\\"bar\\\"]\"]}]},{\"layer\": \"notlayer464719784\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [3],\"min\": 3,\"max\": 3},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 3}, [\\\"in\\\", \\\"foo\\\", 0, 1]\"]}]},{\"layer\": \"notlayer4650955\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 6,\"type\": \"mixed\",\"values\": [\"-1\",-1,0,1,false,true],\"min\": -1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 7,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer584721662\",\"count\": 5,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 4,\"type\": \"mixed\",\"values\": [\"0\",0,false,true],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 4,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"in\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"in\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"in\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"in\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"notlayer827905613\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"id\",\"count\": 1,\"type\": \"number\",\"values\": [1234],\"min\": 1234,\"max\": 1234},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"not \\\"id\\\": \\\"1234\\\", [\\\"==\\\", \\\"$id\\\", 1234]\",\"not \\\"properties\\\": {\\\"id\\\": 1234}, [\\\"==\\\", \\\"$id\\\", 1234]\"]}]},{\"layer\": \"notlayer938200568\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {}, [\\\"has\\\", \\\"foo\\\"]\"]}]}]}}", +"maxzoom": "0", +"minzoom": "0", +"name": "tests/feature-filter/out/-z0_-Jtests%feature-filter%filter.json.check.mbtiles", +"type": "overlay", +"version": "2" +}, "features": [ +{ "type": "FeatureCollection", "properties": { "zoom": 0, "x": 0, "y": 0 }, "features": [ +{ "type": "FeatureCollection", "properties": { "layer": "layer1359089124", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 2, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +, +{ "type": "Feature", "properties": { "rule": "type: 3, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 0.966797, 1.054628 ], [ 0.966797, 0.000000 ], [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1392333553", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "\"properties\": {\"foo\": \"-1\"}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1479822166", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "\"properties\": {\"foo\": true}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "\"properties\": {\"foo\": false}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1549998271", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 1, [\"!=\", \"$type\", \"LineString\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1675768827", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 2, [\"==\", \"$type\", \"LineString\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1780490201", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "\"properties\": {\"foo\": true}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "\"properties\": {\"foo\": false}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1948775714", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1991184237", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "\"properties\": {}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer220442869", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2208582832", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"none\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2275670193", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 1, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2333216076", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2596070344", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "-1", "rule": "\"properties\": {\"foo\": \"-1\"}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer262236988", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!in\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2624681884", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "\"properties\": {\"foo\": -1}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2681700979", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2850085303", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "bar", "rule": "\"properties\": {\"foo\": \"bar\"}, [\"==\", \"foo\", \"bar\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2925029377", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 3, "rule": "\"properties\": {\"foo\": 3}, [\"!in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3045031255", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3048837612", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"!in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3115744778", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 2, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +, +{ "type": "Feature", "properties": { "rule": "type: 3, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 0.966797, 1.054628 ], [ 0.966797, 0.000000 ], [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] ] } } +, +{ "type": "Feature", "properties": { "rule": "type: 1, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer328238911", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3425958478", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 0]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3444677016", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"!in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {}, [\"!in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3603116915", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3835447578", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "1", "rule": "\"properties\": {\"foo\": \"1\"}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4018549566", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4070554881", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4079511021", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": -1, "rule": "\"properties\": {\"foo\": -1}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4097977117", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"all\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4113007703", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer442294443", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "baz", "rule": "\"properties\": {\"foo\": \"baz\"}, [\"!=\", \"foo\", \"bar\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer464719784", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4650955", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "1", "rule": "\"properties\": {\"foo\": \"1\"}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer584721662", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer827905613", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "id": 1234, "properties": { "rule": "\"id\": 1234, [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer938200568", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "\"properties\": {\"foo\": true}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "\"properties\": {\"foo\": false}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1359089124", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not type: 1, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1392333553", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1479822166", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1510660139", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"in\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1549998271", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not type: 2, [\"!=\", \"$type\", \"LineString\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1619469362", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1675768827", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not type: 1, [\"==\", \"$type\", \"LineString\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1780490201", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1948775714", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1991184237", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer220442869", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2275670193", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not type: 2, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +, +{ "type": "Feature", "properties": { "rule": "not type: 3, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 0.966797, 1.054628 ], [ 0.966797, 0.000000 ], [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2333214707", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 0]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer253198869", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2596070344", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2624681884", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2681700979", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2850085303", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "baz", "rule": "not \"properties\": {\"foo\": \"baz\"}, [\"==\", \"foo\", \"bar\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2925029377", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"!in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3045031255", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"!in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3048837612", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer328238911", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3425959847", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3444677016", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3603115546", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 0]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3835447578", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4018549566", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4079511021", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4098096220", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"any\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4113007703", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer442294443", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "bar", "rule": "not \"properties\": {\"foo\": \"bar\"}, [\"!=\", \"foo\", \"bar\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer464719784", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 3, "rule": "not \"properties\": {\"foo\": 3}, [\"in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4650955", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer584721662", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer827905613", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not \"id\": \"1234\", [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "id": 1234, "rule": "not \"properties\": {\"id\": 1234}, [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer938200568", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +] } +] } diff --git a/tests/feature-filter/out/filtered.json.standard b/tests/feature-filter/out/filtered.json.standard new file mode 100644 index 00000000..72e5cfe3 --- /dev/null +++ b/tests/feature-filter/out/filtered.json.standard @@ -0,0 +1,520 @@ +{ "type": "FeatureCollection", "properties": { +"bounds": "-180.000000,-85.051129,180.000000,85.051129", +"center": "0.000000,0.000000,0", +"description": "tests/feature-filter/out/all.mbtiles", +"format": "pbf", +"json": "{\"vector_layers\": [ { \"id\": \"layer1359089124\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer1392333553\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer1479822166\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"layer1549998271\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer1675768827\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer1780490201\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"layer1948775714\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer1991184237\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer2208582832\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer2275670193\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer2333216076\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer2596070344\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer262236988\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer2624681884\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer2681700979\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer2850085303\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer2925029377\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3045031255\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"layer3048837612\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer3115744778\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer328238911\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3425958478\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3444677016\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3603116915\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer3835447578\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer4018549566\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4070554881\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4079511021\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4097977117\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4113007703\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer442294443\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer464719784\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"layer4650955\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"layer827905613\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"layer938200568\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer1359089124\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer1392333553\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer1479822166\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer1510660139\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer1549998271\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer1619469362\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer1675768827\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer1948775714\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer1991184237\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer220442869\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer2275670193\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} }, { \"id\": \"notlayer2333214707\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer253198869\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer2596070344\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer2624681884\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer2681700979\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer2850085303\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"notlayer2925029377\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer3048837612\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer328238911\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer3425959847\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer3444677016\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"notlayer3603115546\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer3835447578\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer4018549566\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer4079511021\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer4098096220\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer4113007703\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer442294443\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"String\", \"rule\": \"String\"} }, { \"id\": \"notlayer464719784\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer4650955\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer584721662\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"foo\": \"Mixed\", \"rule\": \"String\"} }, { \"id\": \"notlayer827905613\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"id\": \"Number\", \"rule\": \"String\"} }, { \"id\": \"notlayer938200568\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 0, \"fields\": {\"rule\": \"String\"} } ],\"tilestats\": {\"layerCount\": 69,\"layers\": [{\"layer\": \"layer1359089124\",\"count\": 2,\"geometry\": \"LineString\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"type: 2, [\\\"in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\",\"type: 3, [\\\"in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\"]}]},{\"layer\": \"layer1392333553\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"string\",\"values\": [\"-1\",\"0\"]},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer1479822166\",\"count\": 6,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 4,\"type\": \"mixed\",\"values\": [\"0\",1,false,true],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 6,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": false}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": true}, [\\\"!=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {}, [\\\"!=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer1549998271\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"type: 1, [\\\"!=\\\", \\\"$type\\\", \\\"LineString\\\"]\"]}]},{\"layer\": \"layer1675768827\",\"count\": 1,\"geometry\": \"LineString\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"type: 2, [\\\"==\\\", \\\"$type\\\", \\\"LineString\\\"]\"]}]},{\"layer\": \"layer1780490201\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 5,\"type\": \"mixed\",\"values\": [\"0\",0,1,false,true],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 7,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": false}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": true}, [\\\"!=\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {}, [\\\"!=\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"!=\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"layer1948775714\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"==\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer1991184237\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {}, [\\\"!has\\\", \\\"foo\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"!has\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"layer2208582832\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"none\\\"]\"]}]},{\"layer\": \"layer2275670193\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"type: 1, [\\\"!in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\"]}]},{\"layer\": \"layer2333216076\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"all\\\", [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"layer2596070344\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"-1\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer262236988\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!in\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"layer2624681884\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [-1],\"min\": -1,\"max\": -1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": -1}, [\\\"<\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer2681700979\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"0\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer2850085303\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"bar\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"bar\\\"}, [\\\"==\\\", \\\"foo\\\", \\\"bar\\\"]\"]}]},{\"layer\": \"layer2925029377\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [3],\"min\": 3,\"max\": 3},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 3}, [\\\"!in\\\", \\\"foo\\\", 0, 1]\"]}]},{\"layer\": \"layer3045031255\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"mixed\",\"values\": [\"0\",0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 3,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!in\\\", \\\"foo\\\", null]\",\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!in\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"!in\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"layer3048837612\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"0\"]},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!in\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"!in\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer3115744778\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 3,\"type\": \"string\",\"values\": [\"type: 1, [\\\"in\\\", \\\"$type\\\", \\\"Polygon\\\", \\\"LineString\\\", \\\"Point\\\"]\",\"type: 2, [\\\"in\\\", \\\"$type\\\", \\\"Polygon\\\", \\\"LineString\\\", \\\"Point\\\"]\",\"type: 3, [\\\"in\\\", \\\"$type\\\", \\\"Polygon\\\", \\\"LineString\\\", \\\"Point\\\"]\"]}]},{\"layer\": \"layer328238911\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"in\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer3425958478\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"none\\\", [\\\"==\\\", \\\"foo\\\", 0]]\"]}]},{\"layer\": \"layer3444677016\",\"count\": 3,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 3,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!in\\\", \\\"foo\\\", \\\"0\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"!in\\\", \\\"foo\\\", \\\"0\\\"]\",\"\\\"properties\\\": {}, [\\\"!in\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer3603116915\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"any\\\", [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"layer3835447578\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"1\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer4018549566\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\">\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer4070554881\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"any\\\", [\\\"==\\\", \\\"foo\\\", 0], [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"layer4079511021\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"number\",\"values\": [-1,0],\"min\": -1,\"max\": 0},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": -1}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"<=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer4097977117\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"all\\\"]\"]}]},{\"layer\": \"layer4113007703\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"number\",\"values\": [0,1],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\">=\\\", \\\"foo\\\", 0]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\">=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"layer442294443\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"baz\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"baz\\\"}, [\\\"!=\\\", \\\"foo\\\", \\\"bar\\\"]\"]}]},{\"layer\": \"layer464719784\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"number\",\"values\": [0,1],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"in\\\", \\\"foo\\\", 0, 1]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"in\\\", \\\"foo\\\", 0, 1]\"]}]},{\"layer\": \"layer4650955\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"string\",\"values\": [\"0\",\"1\"]},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"layer827905613\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"\\\"id\\\": 1234, [\\\"==\\\", \\\"$id\\\", 1234]\"]}]},{\"layer\": \"layer938200568\",\"count\": 5,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 5,\"type\": \"mixed\",\"values\": [\"0\",0,1,false,true],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 5,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"has\\\", \\\"foo\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": 0}, [\\\"has\\\", \\\"foo\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": 1}, [\\\"has\\\", \\\"foo\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": false}, [\\\"has\\\", \\\"foo\\\"]\",\"\\\"properties\\\": {\\\"foo\\\": true}, [\\\"has\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"notlayer1359089124\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not type: 1, [\\\"in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\"]}]},{\"layer\": \"notlayer1392333553\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 6,\"type\": \"mixed\",\"values\": [-1,0,\"1\",1,false,true],\"min\": -1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 7,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"<=\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer1479822166\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer1510660139\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"in\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"notlayer1549998271\",\"count\": 1,\"geometry\": \"LineString\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not type: 2, [\\\"!=\\\", \\\"$type\\\", \\\"LineString\\\"]\"]}]},{\"layer\": \"notlayer1619469362\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"all\\\", [\\\"==\\\", \\\"foo\\\", 0], [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"notlayer1675768827\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not type: 1, [\\\"==\\\", \\\"$type\\\", \\\"LineString\\\"]\"]}]},{\"layer\": \"notlayer1948775714\",\"count\": 6,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 4,\"type\": \"mixed\",\"values\": [\"0\",1,false,true],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 6,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"==\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\"==\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer1991184237\",\"count\": 5,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 4,\"type\": \"mixed\",\"values\": [\"0\",0,1,false],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 4,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!has\\\", \\\"foo\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!has\\\", \\\"foo\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!has\\\", \\\"foo\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"!has\\\", \\\"foo\\\"]\"]}]},{\"layer\": \"notlayer220442869\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 5,\"type\": \"mixed\",\"values\": [\"0\",0,1,false,true],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 7,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"==\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {}, [\\\"==\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"notlayer2275670193\",\"count\": 2,\"geometry\": \"LineString\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"not type: 2, [\\\"!in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\",\"not type: 3, [\\\"!in\\\", \\\"$type\\\", \\\"LineString\\\", \\\"Polygon\\\"]\"]}]},{\"layer\": \"notlayer2333214707\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"all\\\", [\\\"==\\\", \\\"foo\\\", 0]]\"]}]},{\"layer\": \"notlayer253198869\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"none\\\", [\\\"==\\\", \\\"foo\\\", 0], [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"notlayer2596070344\",\"count\": 8,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 7,\"type\": \"mixed\",\"values\": [-1,\"0\",0,\"1\",1,false,true],\"min\": -1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 8,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"<\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer2624681884\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 7,\"type\": \"mixed\",\"values\": [\"-1\",\"0\",0,\"1\",1,false,true],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 9,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"<\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\"<\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer2681700979\",\"count\": 5,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 3,\"type\": \"mixed\",\"values\": [0,false,true],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 5,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {}, [\\\"in\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer2850085303\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"baz\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"baz\\\"}, [\\\"==\\\", \\\"foo\\\", \\\"bar\\\"]\"]}]},{\"layer\": \"notlayer2925029377\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 2,\"type\": \"number\",\"values\": [0,1],\"min\": 0,\"max\": 1},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!in\\\", \\\"foo\\\", 0, 1]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"!in\\\", \\\"foo\\\", 0, 1]\"]}]},{\"layer\": \"notlayer3048837612\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [0],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"!in\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer328238911\",\"count\": 4,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 3,\"type\": \"mixed\",\"values\": [\"0\",false,true]},{\"attribute\": \"rule\",\"count\": 4,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"in\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"in\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"in\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"in\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer3425959847\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"none\\\", [\\\"==\\\", \\\"foo\\\", 1]]\"]}]},{\"layer\": \"notlayer3444677016\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"0\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"!in\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer3603115546\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"any\\\", [\\\"==\\\", \\\"foo\\\", 0]]\"]}]},{\"layer\": \"notlayer3835447578\",\"count\": 8,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 7,\"type\": \"mixed\",\"values\": [\"-1\",-1,\"0\",0,1,false,true],\"min\": -1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 8,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\">\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer4018549566\",\"count\": 9,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 7,\"type\": \"mixed\",\"values\": [\"-1\",-1,\"0\",0,\"1\",false,true],\"min\": -1,\"max\": 0},{\"attribute\": \"rule\",\"count\": 9,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\">\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\">\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer4079511021\",\"count\": 8,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 6,\"type\": \"mixed\",\"values\": [\"-1\",\"0\",\"1\",1,false,true],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 8,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"<=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\"<=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer4098096220\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [1],\"min\": 1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\"any\\\"]\"]}]},{\"layer\": \"notlayer4113007703\",\"count\": 8,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 6,\"type\": \"mixed\",\"values\": [\"-1\",-1,\"0\",\"1\",false,true],\"min\": -1,\"max\": -1},{\"attribute\": \"rule\",\"count\": 8,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"1\\\"}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\">=\\\", \\\"foo\\\", 0]\",\"not \\\"properties\\\": {}, [\\\">=\\\", \\\"foo\\\", 0]\"]}]},{\"layer\": \"notlayer442294443\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"string\",\"values\": [\"bar\"]},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"bar\\\"}, [\\\"!=\\\", \\\"foo\\\", \\\"bar\\\"]\"]}]},{\"layer\": \"notlayer464719784\",\"count\": 1,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 1,\"type\": \"number\",\"values\": [3],\"min\": 3,\"max\": 3},{\"attribute\": \"rule\",\"count\": 1,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": 3}, [\\\"in\\\", \\\"foo\\\", 0, 1]\"]}]},{\"layer\": \"notlayer4650955\",\"count\": 7,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 6,\"type\": \"mixed\",\"values\": [\"-1\",-1,0,1,false,true],\"min\": -1,\"max\": 1},{\"attribute\": \"rule\",\"count\": 7,\"type\": \"string\",\"values\": [\"not \\\"properties\\\": {\\\"foo\\\": \\\"-1\\\"}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": -1}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": 1}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": null}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\">=\\\", \\\"foo\\\", \\\"0\\\"]\"]}]},{\"layer\": \"notlayer584721662\",\"count\": 5,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"foo\",\"count\": 4,\"type\": \"mixed\",\"values\": [\"0\",0,false,true],\"min\": 0,\"max\": 0},{\"attribute\": \"rule\",\"count\": 5,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"in\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": \\\"0\\\"}, [\\\"in\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": 0}, [\\\"in\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": false}, [\\\"in\\\", \\\"foo\\\", null]\",\"not \\\"properties\\\": {\\\"foo\\\": true}, [\\\"in\\\", \\\"foo\\\", null]\"]}]},{\"layer\": \"notlayer827905613\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 2,\"attributes\": [{\"attribute\": \"id\",\"count\": 1,\"type\": \"number\",\"values\": [1234],\"min\": 1234,\"max\": 1234},{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"not \\\"id\\\": \\\"1234\\\", [\\\"==\\\", \\\"$id\\\", 1234]\",\"not \\\"properties\\\": {\\\"id\\\": 1234}, [\\\"==\\\", \\\"$id\\\", 1234]\"]}]},{\"layer\": \"notlayer938200568\",\"count\": 2,\"geometry\": \"Point\",\"attributeCount\": 1,\"attributes\": [{\"attribute\": \"rule\",\"count\": 2,\"type\": \"string\",\"values\": [\"\\\"properties\\\": {\\\"foo\\\": null}, [\\\"has\\\", \\\"foo\\\"]\",\"not \\\"properties\\\": {}, [\\\"has\\\", \\\"foo\\\"]\"]}]}]}}", +"maxzoom": "0", +"minzoom": "0", +"name": "tests/feature-filter/out/all.mbtiles", +"type": "overlay", +"version": "2" +}, "features": [ +{ "type": "FeatureCollection", "properties": { "zoom": 0, "x": 0, "y": 0 }, "features": [ +{ "type": "FeatureCollection", "properties": { "layer": "layer1359089124", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 2, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +, +{ "type": "Feature", "properties": { "rule": "type: 3, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 0.966797, 1.054628 ], [ 0.966797, 0.000000 ], [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1392333553", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "\"properties\": {\"foo\": \"-1\"}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1479822166", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "\"properties\": {\"foo\": true}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "\"properties\": {\"foo\": false}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1549998271", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 1, [\"!=\", \"$type\", \"LineString\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1675768827", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 2, [\"==\", \"$type\", \"LineString\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1780490201", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ -100.019531, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "\"properties\": {\"foo\": true}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "\"properties\": {\"foo\": false}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {}, [\"!=\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1948775714", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer1991184237", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ -100.019531, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2208582832", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"none\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2275670193", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 1, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2333216076", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2596070344", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "-1", "rule": "\"properties\": {\"foo\": \"-1\"}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer262236988", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"!in\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2624681884", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "\"properties\": {\"foo\": -1}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2681700979", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2850085303", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "bar", "rule": "\"properties\": {\"foo\": \"bar\"}, [\"==\", \"foo\", \"bar\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer2925029377", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 3, "rule": "\"properties\": {\"foo\": 3}, [\"!in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3045031255", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"!in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ -100.019531, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3048837612", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"!in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3115744778", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "type: 2, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +, +{ "type": "Feature", "properties": { "rule": "type: 3, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 0.966797, 1.054628 ], [ 0.966797, 0.000000 ], [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] ] } } +, +{ "type": "Feature", "properties": { "rule": "type: 1, [\"in\", \"$type\", \"Polygon\", \"LineString\", \"Point\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer328238911", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3425958478", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 0]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3444677016", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"!in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"!in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "\"properties\": {}, [\"!in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3603116915", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer3835447578", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "1", "rule": "\"properties\": {\"foo\": \"1\"}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4018549566", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4070554881", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4079511021", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": -1, "rule": "\"properties\": {\"foo\": -1}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4097977117", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"all\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4113007703", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer442294443", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "baz", "rule": "\"properties\": {\"foo\": \"baz\"}, [\"!=\", \"foo\", \"bar\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer464719784", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer4650955", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "1", "rule": "\"properties\": {\"foo\": \"1\"}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer827905613", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "id": 1234, "properties": { "rule": "\"id\": 1234, [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "layer938200568", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "\"properties\": {\"foo\": 0}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "\"properties\": {\"foo\": 1}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "\"properties\": {\"foo\": \"0\"}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "\"properties\": {\"foo\": true}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "\"properties\": {\"foo\": false}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1359089124", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not type: 1, [\"in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1392333553", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"<=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1479822166", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1510660139", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"in\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1549998271", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not type: 2, [\"!=\", \"$type\", \"LineString\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1619469362", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1675768827", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not type: 1, [\"==\", \"$type\", \"LineString\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1948775714", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"==\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer1991184237", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"!has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer220442869", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ -100.019531, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"==\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2275670193", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not type: 2, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "LineString", "coordinates": [ [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] } } +, +{ "type": "Feature", "properties": { "rule": "not type: 3, [\"!in\", \"$type\", \"LineString\", \"Polygon\"]" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 0.966797, 1.054628 ], [ 0.966797, 0.000000 ], [ 0.000000, 0.000000 ], [ 0.966797, 1.054628 ] ] ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2333214707", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"all\", [\"==\", \"foo\", 0]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer253198869", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2596070344", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"<\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2624681884", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"<\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2681700979", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2850085303", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "baz", "rule": "not \"properties\": {\"foo\": \"baz\"}, [\"==\", \"foo\", \"bar\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer2925029377", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"!in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3048837612", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"!in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer328238911", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"in\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3425959847", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"none\", [\"==\", \"foo\", 1]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3444677016", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"!in\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3603115546", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"any\", [\"==\", \"foo\", 0]]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer3835447578", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\">\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4018549566", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\">\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4079511021", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"<=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4098096220", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\"any\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4113007703", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "1", "rule": "not \"properties\": {\"foo\": \"1\"}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\">=\", \"foo\", 0]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer442294443", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": "bar", "rule": "not \"properties\": {\"foo\": \"bar\"}, [\"!=\", \"foo\", \"bar\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer464719784", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": 3, "rule": "not \"properties\": {\"foo\": 3}, [\"in\", \"foo\", 0, 1]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer4650955", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "foo": -1, "rule": "not \"properties\": {\"foo\": -1}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 1, "rule": "not \"properties\": {\"foo\": 1}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "-1", "rule": "not \"properties\": {\"foo\": \"-1\"}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {\"foo\": null}, [\">=\", \"foo\", \"0\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer584721662", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ -100.019531, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": 0, "rule": "not \"properties\": {\"foo\": 0}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": "0", "rule": "not \"properties\": {\"foo\": \"0\"}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": true, "rule": "not \"properties\": {\"foo\": true}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "foo": false, "rule": "not \"properties\": {\"foo\": false}, [\"in\", \"foo\", null]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer827905613", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "not \"id\": \"1234\", [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "id": 1234, "rule": "not \"properties\": {\"id\": 1234}, [\"==\", \"$id\", 1234]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +, +{ "type": "FeatureCollection", "properties": { "layer": "notlayer938200568", "version": 2, "extent": 4096 }, "features": [ +{ "type": "Feature", "properties": { "rule": "\"properties\": {\"foo\": null}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ -100.019531, 0.000000 ] } } +, +{ "type": "Feature", "properties": { "rule": "not \"properties\": {}, [\"has\", \"foo\"]" }, "geometry": { "type": "Point", "coordinates": [ 0.000000, 0.000000 ] } } +] } +] } +] } diff --git a/tests/make-filter-test b/tests/make-filter-test new file mode 100755 index 00000000..b750908d --- /dev/null +++ b/tests/make-filter-test @@ -0,0 +1,134 @@ +#!/usr/bin/perl + +use strict; + +open(GEOJSON, ">feature-filter/in.json"); +open(FILTER, ">feature-filter/filter"); + +sub calchash { + my $h = 0; + my $s = $_[0]; + while ($s =~ s/^(.)//) { + $h = ($h * 37 + ord($1)) & ((1 << 32) - 1); + } + return $h; +} + +my $filter = ""; +my $hash = 0; + +print FILTER "{\n"; +my $first = 1; + +open(IN, "../../mapbox-gl-js/test/unit/style-spec/feature_filter.test.js"); +while () { + if (/const f[0-9]* = filter\((.*)\);/) { + $filter = $1; + $filter =~ s/'/"/g; + $hash = "layer" . calchash($filter); + + unless ($filter =~ /apply/) { + if ($first) { + $first = 0; + } else { + print FILTER ",\n"; + } + + print FILTER "\"$hash\": $filter,\n"; + print FILTER "\"not$hash\": [ \"none\", $filter ]\n"; + } + } + + if (/t.equal\(f[0-9]*\({(.*)}\), ([a-z]+)\);/) { + unless ($filter =~ /apply/) { + my $prop = $1; + my $matched = $2; + + if ($prop =~ /properties/) { + next if $prop =~ /undefined/; + + $prop =~ s/properties/"properties"/g; + $prop =~ s/foo/"foo"/g; + $prop =~ s/id/"id"/g; + $prop =~ s/undefined/null/g; + $prop =~ s/'/"/g; + + my $qprop = "$prop, $filter"; + $qprop =~ s/"/\\"/g; + + if ($matched eq "true") { + $prop =~ s/}/, \"rule\": \"$qprop\"}/; + $prop =~ s/^"properties": {,/"properties": {/; + + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $prop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ 0, 0 ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $prop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ -100, 0 ] } }\n"; + } else { + $prop =~ s/}/, \"rule\": \"not $qprop\"}/; + $prop =~ s/^"properties": {,/"properties": {/; + + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $prop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ 0, 0 ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $prop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ -100, 0 ] } }\n"; + } + } elsif ($prop =~ /id/) { + $prop =~ s/id/"id"/g; + $prop =~ s/'/"/g; + + my $qprop = "$prop, $filter"; + $qprop =~ s/"/\\"/g; + + if ($matched eq "true") { + $qprop = "\"properties\": { \"rule\": \"$qprop\" }"; + + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $prop, $qprop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ 0, 0 ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $prop, $qprop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ -100, 0 ] } }\n"; + } else { + $qprop = "\"properties\": { \"rule\": \"not $qprop\" }"; + + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $prop, $qprop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ 0, 0 ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $prop, $qprop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ -100, 0 ] } }\n"; + } + } elsif ($prop =~ /type: (.)/) { + my $type = $1; + + my $qprop = "$prop, $filter"; + $qprop =~ s/"/\\"/g; + + if ($matched eq "true") { + $qprop = "\"properties\": { \"rule\": \"$qprop\" }"; + } else { + $qprop = "\"properties\": { \"rule\": \"not $qprop\" }"; + } + + if ($type == 1) { + if ($matched eq "true") { + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $qprop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ 0, 0 ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $qprop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ -100, 0 ] } }\n"; + } else { + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $qprop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ 0, 0 ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $qprop, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ -100, 0 ] } }\n"; + } + } elsif ($type == 2) { + if ($matched eq "true") { + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $qprop, \"geometry\": { \"type\": \"LineString\", \"coordinates\": [ [ 0, 0 ], [ 1, 1 ] ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $qprop, \"geometry\": { \"type\": \"LineString\", \"coordinates\": [ [ -100, 0 ], [ -101, 1 ] ] } }\n"; + } else { + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $qprop, \"geometry\": { \"type\": \"LineString\", \"coordinates\": [ [ 0, 0 ], [ 1, 1 ] ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $qprop, \"geometry\": { \"type\": \"LineString\", \"coordinates\": [ [ -100, 0 ], [ -101, 1 ] ] } }\n"; + } + } else { + if ($matched eq "true") { + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $qprop, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [ [ [ 0, 0 ], [ 1, 1 ], [ 1, 0 ], [ 0, 0 ] ] ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $qprop, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [ [ [ -100, 0 ], [ -101, 1 ], [ -101, 0 ], [-100, 0 ] ] ] } }\n"; + } else { + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"not$hash\" }, $qprop, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [ [ [ 0, 0 ], [ 1, 1 ], [ 1, 0 ], [ 0, 0 ] ] ] } }\n"; + print GEOJSON "{ \"type\": \"Feature\", \"tippecanoe\": { \"layer\": \"$hash\" }, $qprop, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [ [ [ -100, 0 ], [ -101, 1 ], [ -101, 0 ], [-100, 0 ] ] ] } }\n"; + } + } + } else { + print "$prop\n"; + } + } + } +} + +print FILTER "}\n"; diff --git a/tile-join.cpp b/tile-join.cpp index d7d5da2a..c0257102 100644 --- a/tile-join.cpp +++ b/tile-join.cpp @@ -22,6 +22,7 @@ #include "mbtiles.hpp" #include "geometry.hpp" #include "dirtiles.hpp" +#include "evaluator.hpp" #include #include #include @@ -46,7 +47,7 @@ struct stats { double minlat, minlon, maxlat, maxlon; }; -void handle(std::string message, int z, unsigned x, unsigned y, std::map &layermap, std::vector &header, std::map> &mapping, std::set &exclude, std::set &keep_layers, std::set &remove_layers, int ifmatched, mvt_tile &outtile) { +void handle(std::string message, int z, unsigned x, unsigned y, std::map &layermap, std::vector &header, std::map> &mapping, std::set &exclude, std::set &keep_layers, std::set &remove_layers, int ifmatched, mvt_tile &outtile, json_object *filter) { mvt_tile tile; int features_added = 0; bool was_compressed; @@ -100,6 +101,43 @@ void handle(std::string message, int z, unsigned x, unsigned y, std::map attributes; + + for (size_t t = 0; t + 1 < feat.tags.size(); t += 2) { + std::string key = layer.keys[feat.tags[t]]; + mvt_value &val = layer.values[feat.tags[t + 1]]; + + attributes.insert(std::pair(key, val)); + } + + if (feat.has_id) { + mvt_value v; + v.type = mvt_uint; + v.numeric_value.uint_value = feat.id; + + attributes.insert(std::pair("$id", v)); + } + + mvt_value v; + v.type = mvt_string; + + if (feat.type == mvt_point) { + v.string_value = "Point"; + } else if (feat.type == mvt_linestring) { + v.string_value = "LineString"; + } else if (feat.type == mvt_polygon) { + v.string_value = "Polygon"; + } + + attributes.insert(std::pair("$type", v)); + + if (!evaluate(attributes, layer.name, filter)) { + continue; + } + } + mvt_feature outfeature; int matched = 0; @@ -564,6 +602,7 @@ struct arg { std::set *keep_layers; std::set *remove_layers; int ifmatched; + json_object *filter; }; void *join_worker(void *v) { @@ -573,21 +612,22 @@ void *join_worker(void *v) { mvt_tile tile; for (size_t i = 0; i < ai->second.size(); i++) { - handle(ai->second[i], ai->first.z, ai->first.x, ai->first.y, *(a->layermap), *(a->header), *(a->mapping), *(a->exclude), *(a->keep_layers), *(a->remove_layers), a->ifmatched, tile); + handle(ai->second[i], ai->first.z, ai->first.x, ai->first.y, *(a->layermap), *(a->header), *(a->mapping), *(a->exclude), *(a->keep_layers), *(a->remove_layers), a->ifmatched, tile, a->filter); } ai->second.clear(); bool anything = false; + mvt_tile outtile; for (size_t i = 0; i < tile.layers.size(); i++) { if (tile.layers[i].features.size() > 0) { + outtile.layers.push_back(tile.layers[i]); anything = true; - break; } } if (anything) { - std::string pbf = tile.encode(); + std::string pbf = outtile.encode(); std::string compressed; if (!pC) { @@ -607,7 +647,7 @@ void *join_worker(void *v) { return NULL; } -void handle_tasks(std::map> &tasks, std::vector> &layermaps, sqlite3 *outdb, const char *outdir, std::vector &header, std::map> &mapping, std::set &exclude, int ifmatched, std::set &keep_layers, std::set &remove_layers) { +void handle_tasks(std::map> &tasks, std::vector> &layermaps, sqlite3 *outdb, const char *outdir, std::vector &header, std::map> &mapping, std::set &exclude, int ifmatched, std::set &keep_layers, std::set &remove_layers, json_object *filter) { pthread_t pthreads[CPUS]; std::vector args; @@ -621,6 +661,7 @@ void handle_tasks(std::map> &tasks, std::vector> &tasks, std::vector &layermap, sqlite3 *outdb, const char *outdir, struct stats *st, std::vector &header, std::map> &mapping, std::set &exclude, int ifmatched, std::string &attribution, std::string &description, std::set &keep_layers, std::set &remove_layers, std::string &name) { +void decode(struct reader *readers, char *map, std::map &layermap, sqlite3 *outdb, const char *outdir, struct stats *st, std::vector &header, std::map> &mapping, std::set &exclude, int ifmatched, std::string &attribution, std::string &description, std::set &keep_layers, std::set &remove_layers, std::string &name, json_object *filter) { std::vector> layermaps; for (size_t i = 0; i < CPUS; i++) { layermaps.push_back(std::map()); @@ -707,7 +748,7 @@ void decode(struct reader *readers, char *map, std::mapzoom != r->zoom || readers->x != r->x || readers->y != r->y) { if (tasks.size() > 100 * CPUS) { - handle_tasks(tasks, layermaps, outdb, outdir, header, mapping, exclude, ifmatched, keep_layers, remove_layers); + handle_tasks(tasks, layermaps, outdb, outdir, header, mapping, exclude, ifmatched, keep_layers, remove_layers, filter); tasks.clear(); } } @@ -760,7 +801,7 @@ void decode(struct reader *readers, char *map, std::mapminlat = min(minlat, st->minlat); st->maxlat = max(maxlat, st->maxlat); - handle_tasks(tasks, layermaps, outdb, outdir, header, mapping, exclude, ifmatched, keep_layers, remove_layers); + handle_tasks(tasks, layermaps, outdb, outdir, header, mapping, exclude, ifmatched, keep_layers, remove_layers, filter); layermap = merge_layermaps(layermaps); struct reader *next; @@ -1004,6 +1045,7 @@ int main(int argc, char **argv) { char *csv = NULL; int force = 0; int ifmatched = 0; + json_object *filter = NULL; CPUS = sysconf(_SC_NPROCESSORS_ONLN); @@ -1040,6 +1082,8 @@ int main(int argc, char **argv) { {"quiet", no_argument, 0, 'q'}, {"maximum-zoom", required_argument, 0, 'z'}, {"minimum-zoom", required_argument, 0, 'Z'}, + {"feature-filter-file", required_argument, 0, 'J'}, + {"feature-filter", required_argument, 0, 'j'}, {"no-tile-size-limit", no_argument, &pk, 1}, {"no-tile-compression", no_argument, &pC, 1}, @@ -1104,6 +1148,14 @@ int main(int argc, char **argv) { minzoom = atoi(optarg); break; + case 'J': + filter = read_filter(optarg); + break; + + case 'j': + filter = parse_filter(optarg); + break; + case 'p': if (strcmp(optarg, "k") == 0) { pk = true; @@ -1201,7 +1253,7 @@ int main(int argc, char **argv) { *rr = r; } - decode(readers, csv, layermap, outdb, out_dir, &st, header, mapping, exclude, ifmatched, attribution, description, keep_layers, remove_layers, name); + decode(readers, csv, layermap, outdb, out_dir, &st, header, mapping, exclude, ifmatched, attribution, description, keep_layers, remove_layers, name, filter); if (set_attribution.size() != 0) { attribution = set_attribution; @@ -1219,5 +1271,9 @@ int main(int argc, char **argv) { mbtiles_close(outdb, argv[0]); } + if (filter != NULL) { + json_free(filter); + } + return 0; } diff --git a/version.hpp b/version.hpp index 2345ed1b..32ce84e4 100644 --- a/version.hpp +++ b/version.hpp @@ -1,6 +1,6 @@ #ifndef VERSION_HPP #define VERSION_HPP -#define VERSION "tippecanoe v1.23.0\n" +#define VERSION "tippecanoe v1.24.0\n" #endif