From 435a788c3fb227de83d59f90f766eabf42c8a72b Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Thu, 14 Feb 2019 11:40:58 -0800 Subject: [PATCH] Don't exclude the attribute that is specified to be the feature ID --- CHANGELOG.md | 5 ++++ serial.cpp | 25 ++++++++++--------- ...-z0_--use-attribute-for-id_special_-X.json | 4 +-- ...se-attribute-for-id_special_-xspecial.json | 4 +-- ...-use-attribute-for-id_special_-yother.json | 4 +-- version.hpp | 2 +- 6 files changed, 25 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7d3b39c..044883df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.32.11 + +* Don't let attribute exclusion apply to the attribute that has been specified + to become the feature ID + ## 1.32.10 * Fix a bug that disallowed a per-feature minzoom of 0 diff --git a/serial.cpp b/serial.cpp index 6599af58..98ac1ef0 100644 --- a/serial.cpp +++ b/serial.cpp @@ -583,18 +583,6 @@ int serialize_feature(struct serialization_state *sst, serial_feature &sf) { } for (ssize_t i = (ssize_t) sf.full_keys.size() - 1; i >= 0; i--) { - if (sst->exclude_all) { - if (sst->include->count(sf.full_keys[i]) == 0) { - sf.full_keys.erase(sf.full_keys.begin() + i); - sf.full_values.erase(sf.full_values.begin() + i); - continue; - } - } else if (sst->exclude->count(sf.full_keys[i]) != 0) { - sf.full_keys.erase(sf.full_keys.begin() + i); - sf.full_values.erase(sf.full_values.begin() + i); - continue; - } - coerce_value(sf.full_keys[i], sf.full_values[i].type, sf.full_values[i].s, sst->attribute_types); if (sf.full_keys[i] == attribute_for_id) { @@ -633,6 +621,19 @@ int serialize_feature(struct serialization_state *sst, serial_feature &sf) { } } } + + if (sst->exclude_all) { + if (sst->include->count(sf.full_keys[i]) == 0) { + sf.full_keys.erase(sf.full_keys.begin() + i); + sf.full_values.erase(sf.full_values.begin() + i); + continue; + } + } else if (sst->exclude->count(sf.full_keys[i]) != 0) { + sf.full_keys.erase(sf.full_keys.begin() + i); + sf.full_values.erase(sf.full_values.begin() + i); + continue; + } + } if (!sst->filters) { diff --git a/tests/stringid/out/-z0_--use-attribute-for-id_special_-X.json b/tests/stringid/out/-z0_--use-attribute-for-id_special_-X.json index cf329f73..24af4794 100644 --- a/tests/stringid/out/-z0_--use-attribute-for-id_special_-X.json +++ b/tests/stringid/out/-z0_--use-attribute-for-id_special_-X.json @@ -24,7 +24,7 @@ , { "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 5.976562, 1.054628 ] } } , -{ "type": "Feature", "id": 1234, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 6.943359, 1.054628 ] } } +{ "type": "Feature", "id": 27, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 6.943359, 1.054628 ] } } , { "type": "Feature", "id": 1234, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 7.998047, 1.054628 ] } } , @@ -32,7 +32,7 @@ , { "type": "Feature", "id": 1234, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 9.931641, 1.054628 ] } } , -{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 10.986328, 1.054628 ] } } +{ "type": "Feature", "id": 27, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 10.986328, 1.054628 ] } } , { "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 11.953125, 1.054628 ] } } ] } diff --git a/tests/stringid/out/-z0_--use-attribute-for-id_special_-xspecial.json b/tests/stringid/out/-z0_--use-attribute-for-id_special_-xspecial.json index f06bb5f3..d6f05c6a 100644 --- a/tests/stringid/out/-z0_--use-attribute-for-id_special_-xspecial.json +++ b/tests/stringid/out/-z0_--use-attribute-for-id_special_-xspecial.json @@ -24,7 +24,7 @@ , { "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 5.976562, 1.054628 ] } } , -{ "type": "Feature", "id": 1234, "properties": { "yes": "no", "something": false }, "geometry": { "type": "Point", "coordinates": [ 6.943359, 1.054628 ] } } +{ "type": "Feature", "id": 27, "properties": { "yes": "no", "something": false }, "geometry": { "type": "Point", "coordinates": [ 6.943359, 1.054628 ] } } , { "type": "Feature", "id": 1234, "properties": { "yes": "no", "something": false }, "geometry": { "type": "Point", "coordinates": [ 7.998047, 1.054628 ] } } , @@ -32,7 +32,7 @@ , { "type": "Feature", "id": 1234, "properties": { "yes": "no", "something": false }, "geometry": { "type": "Point", "coordinates": [ 9.931641, 1.054628 ] } } , -{ "type": "Feature", "properties": { "yes": "no", "something": false }, "geometry": { "type": "Point", "coordinates": [ 10.986328, 1.054628 ] } } +{ "type": "Feature", "id": 27, "properties": { "yes": "no", "something": false }, "geometry": { "type": "Point", "coordinates": [ 10.986328, 1.054628 ] } } , { "type": "Feature", "properties": { "yes": "no", "something": false }, "geometry": { "type": "Point", "coordinates": [ 11.953125, 1.054628 ] } } ] } diff --git a/tests/stringid/out/-z0_--use-attribute-for-id_special_-yother.json b/tests/stringid/out/-z0_--use-attribute-for-id_special_-yother.json index 1109c6f7..b9a615d0 100644 --- a/tests/stringid/out/-z0_--use-attribute-for-id_special_-yother.json +++ b/tests/stringid/out/-z0_--use-attribute-for-id_special_-yother.json @@ -24,7 +24,7 @@ , { "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 5.976562, 1.054628 ] } } , -{ "type": "Feature", "id": 1234, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 6.943359, 1.054628 ] } } +{ "type": "Feature", "id": 27, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 6.943359, 1.054628 ] } } , { "type": "Feature", "id": 1234, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 7.998047, 1.054628 ] } } , @@ -32,7 +32,7 @@ , { "type": "Feature", "id": 1234, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 9.931641, 1.054628 ] } } , -{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 10.986328, 1.054628 ] } } +{ "type": "Feature", "id": 27, "properties": { }, "geometry": { "type": "Point", "coordinates": [ 10.986328, 1.054628 ] } } , { "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 11.953125, 1.054628 ] } } ] } diff --git a/version.hpp b/version.hpp index 22b86182..46f7b539 100644 --- a/version.hpp +++ b/version.hpp @@ -1,6 +1,6 @@ #ifndef VERSION_HPP #define VERSION_HPP -#define VERSION "v1.32.10" +#define VERSION "v1.32.11" #endif