Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use a hash chain when deduplicating tile layer keys and values #306

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 22 additions & 10 deletions mvt.cpp
Original file line number Diff line number Diff line change
@@ -607,22 +607,34 @@ std::string mvt_value::toString() const {

void mvt_layer::tag(mvt_feature &feature, std::string const &key, mvt_value const &value) {
size_t key_hash = fnv1a(key) % key_dedup.size();
if (key_dedup[key_hash] >= 0 &&
keys[key_dedup[key_hash]] == key) {
} else {
key_dedup[key_hash] = keys.size();
ssize_t key_index = -1;

for (auto const &k : key_dedup[key_hash]) {
if (keys[k] == key) {
key_index = k;
break;
}
}
if (key_index < 0) {
key_dedup[key_hash].push_back(key_index = keys.size());
keys.push_back(key);
}
feature.tags.push_back(key_dedup[key_hash]);
feature.tags.push_back(key_index);

size_t value_hash = std::hash<mvt_value>()(value) % value_dedup.size();
if (value_dedup[value_hash] >= 0 &&
values[value_dedup[value_hash]] == value) {
} else {
value_dedup[value_hash] = values.size();
ssize_t value_index = -1;

for (auto const &v : value_dedup[value_hash]) {
if (values[v] == value) {
value_index = v;
break;
}
}
if (value_index < 0) {
value_dedup[value_hash].push_back(value_index = values.size());
values.push_back(value);
}
feature.tags.push_back(value_dedup[value_hash]);
feature.tags.push_back(value_index);
}

bool is_integer(const char *s, long long *v) {
4 changes: 2 additions & 2 deletions mvt.hpp
Original file line number Diff line number Diff line change
@@ -200,8 +200,8 @@ struct mvt_layer {
void tag(mvt_feature &feature, std::string const &key, mvt_value const &value);

// For tracking the key-value constants already used in this layer
std::vector<ssize_t> key_dedup = std::vector<ssize_t>(65536, -1);
std::vector<ssize_t> value_dedup = std::vector<ssize_t>(65536, -1);
std::vector<std::vector<ssize_t>> key_dedup = std::vector<std::vector<ssize_t>>(500, std::vector<ssize_t>());
std::vector<std::vector<ssize_t>> value_dedup = std::vector<std::vector<ssize_t>>(500, std::vector<ssize_t>());

int detail() const {
return std::round(std::log(extent) / std::log(2));
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@
"maxzoom": "2",
"minzoom": "0",
"name": "tests/ne_110m_populated_places/out/-z0_-M10000_--drop-densest-as-needed_--extend-zooms-if-still-dropping-maximum_2.json.check.mbtiles",
"strategies": "[{\"dropped_as_needed\":223,\"tile_size_desired\":75535},{\"dropped_as_needed\":230,\"tile_size_desired\":44899},{\"dropped_as_needed\":195,\"tile_size_desired\":35505}]",
"strategies": "[{\"dropped_as_needed\":222,\"tile_size_desired\":74734},{\"dropped_as_needed\":230,\"tile_size_desired\":44415},{\"dropped_as_needed\":195,\"tile_size_desired\":35130}]",
"tippecanoe_decisions": "{\"basezoom\":0,\"droprate\":2.5,\"retain_points_multiplier\":1}",
"type": "overlay",
"version": "2"
@@ -18,6 +18,8 @@
{ "type": "FeatureCollection", "properties": { "layer": "in", "version": 2, "extent": 4096 }, "features": [
{ "type": "Feature", "properties": { "SCALERANK": 1, "NATSCALE": 300, "LABELRANK": 2, "FEATURECLA": "Populated place", "NAME": "Vancouver", "DIFFASCII": 0, "NAMEASCII": "Vancouver", "ADM0CAP": 0, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 1, "SOV0NAME": "Canada", "SOV_A3": "CAN", "ADM0NAME": "Canada", "ADM0_A3": "CAN", "ADM1NAME": "British Columbia", "ISO_A2": "CA", "LATITUDE": 49.273417, "LONGITUDE": -123.121644, "CHANGED": 5, "NAMEDIFF": 0, "DIFFNOTE": "Changed scale rank.", "POP_MAX": 2313328, "POP_MIN": 603502, "POP_OTHER": 482002, "RANK_MAX": 12, "RANK_MIN": 11, "GEONAMEID": 6173331, "MEGANAME": "Vancouver", "LS_NAME": "Vancouver2", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 1590116, "MAX_POP20": 1588839, "MAX_POP50": 1590116, "MAX_POP300": 1590116, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 706, "MAX_AREAKM": 708, "MIN_AREAMI": 273, "MAX_AREAMI": 273, "MIN_PERKM": 398, "MAX_PERKM": 405, "MIN_PERMI": 248, "MAX_PERMI": 251, "MIN_BBXMIN": -123.283333, "MAX_BBXMIN": -123.283333, "MIN_BBXMAX": -122.708333, "MAX_BBXMAX": -122.708333, "MIN_BBYMIN": 49.1, "MAX_BBYMIN": 49.1, "MIN_BBYMAX": 49.383333, "MAX_BBYMAX": 49.383333, "MEAN_BBXC": -122.982768, "MEAN_BBYC": 49.228888, "COMPARE": 0, "GN_ASCII": "Vancouver", "FEATURE_CL": "P", "FEATURE_CO": "PPL", "ADMIN1_COD": 2, "GN_POP": 1837969, "ELEVATION": 0, "GTOPO30": 63, "TIMEZONE": "America/Vancouver", "GEONAMESNO": "Geonames ascii name + lat.d + long.d matching.", "UN_FID": 15, "UN_ADM0": "Canada", "UN_LAT": 49.27, "UN_LONG": -122.96, "POP1950": 556, "POP1955": 588, "POP1960": 620, "POP1965": 836, "POP1970": 1045, "POP1975": 1150, "POP1980": 1247, "POP1985": 1359, "POP1990": 1559, "POP1995": 1789, "POP2000": 1959, "POP2005": 2093, "POP2010": 2146, "POP2015": 2219, "POP2020": 2310, "POP2025": 2380, "POP2050": 2444 }, "geometry": { "type": "Point", "coordinates": [ -123.134766, 49.267805 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 1, "NATSCALE": 300, "LABELRANK": 1, "FEATURECLA": "Populated place", "NAME": "Chicago", "DIFFASCII": 0, "NAMEASCII": "Chicago", "ADM0CAP": 0, "CAPALT": 0, "WORLDCITY": 1, "MEGACITY": 1, "SOV0NAME": "United States", "SOV_A3": "USA", "ADM0NAME": "United States of America", "ADM0_A3": "USA", "ADM1NAME": "Illinois", "ISO_A2": "US", "LATITUDE": 41.829991, "LONGITUDE": -87.750055, "CHANGED": 0, "NAMEDIFF": 0, "POP_MAX": 8990000, "POP_MIN": 2841952, "POP_OTHER": 3635101, "RANK_MAX": 13, "RANK_MIN": 12, "GEONAMEID": 4887398, "MEGANAME": "Chicago", "LS_NAME": "Chicago", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 3747798, "MAX_POP20": 5069998, "MAX_POP50": 8416660, "MAX_POP300": 8416660, "MAX_POP310": 8450289, "MAX_NATSCA": 300, "MIN_AREAKM": 1345, "MAX_AREAKM": 4804, "MIN_AREAMI": 519, "MAX_AREAMI": 1855, "MIN_PERKM": 471, "MAX_PERKM": 2946, "MIN_PERMI": 293, "MAX_PERMI": 1830, "MIN_BBXMIN": -88.408333, "MAX_BBXMIN": -88.03629, "MIN_BBXMAX": -87.528138, "MAX_BBXMAX": -87.125, "MIN_BBYMIN": 41.391667, "MAX_BBYMIN": 41.458333, "MIN_BBYMAX": 42.000972, "MAX_BBYMAX": 42.491667, "MEAN_BBXC": -87.85874, "MEAN_BBYC": 41.832719, "COMPARE": 0, "GN_ASCII": "Chicago", "FEATURE_CL": "P", "FEATURE_CO": "PPL", "ADMIN1_COD": 0, "GN_POP": 2841952, "ELEVATION": 179, "GTOPO30": 181, "TIMEZONE": "America/Chicago", "GEONAMESNO": "GeoNames match with ascii name + lat + long whole numbers.", "UN_FID": 531, "UN_ADM0": "United States of America", "UN_LAT": 41.82, "UN_LONG": -87.64, "POP1950": 4999, "POP1955": 5565, "POP1960": 6183, "POP1965": 6639, "POP1970": 7106, "POP1975": 7160, "POP1980": 7216, "POP1985": 7285, "POP1990": 7374, "POP1995": 7839, "POP2000": 8333, "POP2005": 8820, "POP2010": 8990, "POP2015": 9211, "POP2020": 9516, "POP2025": 9756, "POP2050": 9932 }, "geometry": { "type": "Point", "coordinates": [ -87.714844, 41.836828 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 3, "NATSCALE": 110, "LABELRANK": 8, "FEATURECLA": "Admin-0 capital", "NAME": "Reykjavík", "DIFFASCII": 1, "NAMEASCII": "Reykjavik", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 0, "SOV0NAME": "Iceland", "SOV_A3": "ISL", "ADM0NAME": "Iceland", "ADM0_A3": "ISL", "ADM1NAME": "Suðurnes", "ISO_A2": "IS", "LATITUDE": 64.150024, "LONGITUDE": -21.950014, "CHANGED": 0, "NAMEDIFF": 0, "POP_MAX": 166212, "POP_MIN": 113906, "POP_OTHER": 160116, "RANK_MAX": 9, "RANK_MIN": 9, "GEONAMEID": 3413829, "LS_NAME": "Reykjavik", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 166212, "MAX_POP20": 166212, "MAX_POP50": 166212, "MAX_POP300": 166212, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 75, "MAX_AREAKM": 75, "MIN_AREAMI": 29, "MAX_AREAMI": 29, "MIN_PERKM": 119, "MAX_PERKM": 119, "MIN_PERMI": 74, "MAX_PERMI": 74, "MIN_BBXMIN": -22.008333, "MAX_BBXMIN": -22.008333, "MIN_BBXMAX": -21.75, "MAX_BBXMAX": -21.75, "MIN_BBYMIN": 64.05, "MAX_BBYMIN": 64.05, "MIN_BBYMAX": 64.166667, "MAX_BBYMAX": 64.166667, "MEAN_BBXC": -21.8825, "MEAN_BBYC": 64.116125, "COMPARE": 0, "GN_ASCII": "Reykjavik", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 39, "GN_POP": 113906, "ELEVATION": 0, "GTOPO30": 16, "TIMEZONE": "Atlantic/Reykjavik", "GEONAMESNO": "GeoNames match general.", "UN_FID": 0, "UN_LAT": 0, "UN_LONG": 0, "POP1950": 0, "POP1955": 0, "POP1960": 0, "POP1965": 0, "POP1970": 0, "POP1975": 0, "POP1980": 0, "POP1985": 0, "POP1990": 0, "POP1995": 0, "POP2000": 0, "POP2005": 0, "POP2010": 0, "POP2015": 0, "POP2020": 0, "POP2025": 0, "POP2050": 0 }, "geometry": { "type": "Point", "coordinates": [ -21.972656, 64.168107 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 3, "NATSCALE": 110, "LABELRANK": 0, "FEATURECLA": "Admin-0 capital", "NAME": "Praia", "DIFFASCII": 0, "NAMEASCII": "Praia", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 0, "SOV0NAME": "Cape Verde", "SOV_A3": "CPV", "ADM0NAME": "Cape Verde", "ADM0_A3": "CPV", "ISO_A2": "CV", "LATITUDE": 14.916698, "LONGITUDE": -23.516689, "CHANGED": 0, "NAMEDIFF": 0, "POP_MAX": 113364, "POP_MIN": 88859, "POP_OTHER": 89205, "RANK_MAX": 9, "RANK_MIN": 8, "GEONAMEID": 3374333, "LS_NAME": "Praia", "LS_MATCH": 1, "CHECKME": 5, "MAX_POP10": 88859, "MAX_POP20": 88859, "MAX_POP50": 88859, "MAX_POP300": 88859, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 37, "MAX_AREAKM": 37, "MIN_AREAMI": 14, "MAX_AREAMI": 14, "MIN_PERKM": 40, "MAX_PERKM": 40, "MIN_PERMI": 25, "MAX_PERMI": 25, "MIN_BBXMIN": -23.541667, "MAX_BBXMIN": -23.541667, "MIN_BBXMAX": -23.483333, "MAX_BBXMAX": -23.483333, "MIN_BBYMIN": 14.9, "MAX_BBYMIN": 14.9, "MIN_BBYMAX": 14.983333, "MAX_BBYMAX": 14.983333, "MEAN_BBXC": -23.514907, "MEAN_BBYC": 14.938056, "COMPARE": 0, "GN_ASCII": "Praia", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 0, "GN_POP": 113364, "ELEVATION": 0, "GTOPO30": -9999, "TIMEZONE": "Atlantic/Cape_Verde", "GEONAMESNO": "GeoNames match general.", "UN_FID": 0, "UN_LAT": 0, "UN_LONG": 0, "POP1950": 0, "POP1955": 0, "POP1960": 0, "POP1965": 0, "POP1970": 0, "POP1975": 0, "POP1980": 0, "POP1985": 0, "POP1990": 0, "POP1995": 0, "POP2000": 0, "POP2005": 0, "POP2010": 0, "POP2015": 0, "POP2020": 0, "POP2025": 0, "POP2050": 0 }, "geometry": { "type": "Point", "coordinates": [ -23.554688, 14.944785 ] } }

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@
"maxzoom": "1",
"minzoom": "0",
"name": "tests/ne_110m_populated_places/out/-z1_-M10000_--drop-smallest-as-needed.json.check.mbtiles",
"strategies": "[{\"dropped_by_rate\":145,\"dropped_as_needed\":76,\"tile_size_desired\":33283},{\"dropped_as_needed\":206,\"tile_size_desired\":44899}]",
"strategies": "[{\"dropped_by_rate\":145,\"dropped_as_needed\":75,\"tile_size_desired\":32942},{\"dropped_as_needed\":204,\"tile_size_desired\":44415}]",
"type": "overlay",
"version": "2"
}, "features": [
@@ -45,6 +45,8 @@
,
{ "type": "Feature", "properties": { "SCALERANK": 2, "NATSCALE": 200, "LABELRANK": 2, "FEATURECLA": "Admin-0 capital", "NAME": "Dhaka", "DIFFASCII": 0, "NAMEASCII": "Dhaka", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 1, "SOV0NAME": "Bangladesh", "SOV_A3": "BGD", "ADM0NAME": "Bangladesh", "ADM0_A3": "BGD", "ADM1NAME": "Dhaka", "ISO_A2": "BD", "LATITUDE": 23.72306, "LONGITUDE": 90.408579, "CHANGED": 5, "NAMEDIFF": 0, "DIFFNOTE": "Changed scale rank.", "POP_MAX": 12797394, "POP_MIN": 7000940, "POP_OTHER": 14995538, "RANK_MAX": 14, "RANK_MIN": 13, "GEONAMEID": 1185241, "MEGANAME": "Dhaka", "LS_NAME": "Dhaka", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 14548962, "MAX_POP20": 21394172, "MAX_POP50": 53845691, "MAX_POP300": 78549234, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 3528, "MAX_AREAKM": 49912, "MIN_AREAMI": 1362, "MAX_AREAMI": 19271, "MIN_PERKM": 1439, "MAX_PERKM": 19314, "MIN_PERMI": 894, "MAX_PERMI": 12001, "MIN_BBXMIN": 88.133791, "MAX_BBXMIN": 89.9, "MIN_BBXMAX": 90.816777, "MAX_BBXMAX": 92.908333, "MIN_BBYMIN": 22.858333, "MAX_BBYMIN": 23.482936, "MIN_BBYMAX": 24.247407, "MAX_BBYMAX": 25.583333, "MEAN_BBXC": 90.400679, "MEAN_BBYC": 24.105092, "COMPARE": 0, "GN_ASCII": "Dhaka", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 81, "GN_POP": 10356500, "ELEVATION": 0, "GTOPO30": 4, "TIMEZONE": "Asia/Dhaka", "GEONAMESNO": "GeoNames match general.", "UN_FID": 369, "UN_ADM0": "Bangladesh", "UN_LAT": 23.7, "UN_LONG": 90.4, "POP1950": 336, "POP1955": 409, "POP1960": 508, "POP1965": 821, "POP1970": 1374, "POP1975": 2221, "POP1980": 3266, "POP1985": 4660, "POP1990": 6621, "POP1995": 8332, "POP2000": 10285, "POP2005": 12576, "POP2010": 13485, "POP2015": 14796, "POP2020": 17015, "POP2025": 19422, "POP2050": 22015 }, "geometry": { "type": "Point", "coordinates": [ 90.439453, 23.725012 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 3, "NATSCALE": 110, "LABELRANK": 8, "FEATURECLA": "Admin-0 capital", "NAME": "Vientiane", "DIFFASCII": 0, "NAMEASCII": "Vientiane", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 0, "SOV0NAME": "Laos", "SOV_A3": "LAO", "ADM0NAME": "Laos", "ADM0_A3": "LAO", "ADM1NAME": "Vientiane [prefecture]", "ISO_A2": "LA", "LATITUDE": 17.966693, "LONGITUDE": 102.59998, "CHANGED": 0, "NAMEDIFF": 0, "POP_MAX": 754000, "POP_MIN": 570348, "POP_OTHER": 469811, "RANK_MAX": 11, "RANK_MIN": 11, "GEONAMEID": 1651944, "LS_NAME": "Vientiane", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 471927, "MAX_POP20": 471927, "MAX_POP50": 570348, "MAX_POP300": 570348, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 166, "MAX_AREAKM": 243, "MIN_AREAMI": 64, "MAX_AREAMI": 94, "MIN_PERKM": 170, "MAX_PERKM": 283, "MIN_PERMI": 106, "MAX_PERMI": 176, "MIN_BBXMIN": 102.491667, "MAX_BBXMIN": 102.491667, "MIN_BBXMAX": 102.725, "MAX_BBXMAX": 102.816667, "MIN_BBYMIN": 17.8, "MAX_BBYMIN": 17.875, "MIN_BBYMAX": 18.083333, "MAX_BBYMAX": 18.083333, "MEAN_BBXC": 102.648054, "MEAN_BBYC": 17.967124, "COMPARE": 0, "GN_ASCII": "Vientiane", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 27, "GN_POP": 196731, "ELEVATION": 0, "GTOPO30": 174, "TIMEZONE": "Asia/Vientiane", "GEONAMESNO": "GeoNames match general.", "UN_FID": 0, "UN_LAT": 0, "UN_LONG": 0, "POP1950": 0, "POP1955": 0, "POP1960": 0, "POP1965": 0, "POP1970": 0, "POP1975": 0, "POP1980": 0, "POP1985": 0, "POP1990": 0, "POP1995": 0, "POP2000": 0, "POP2005": 0, "POP2010": 0, "POP2015": 0, "POP2020": 0, "POP2025": 0, "POP2050": 0 }, "geometry": { "type": "Point", "coordinates": [ 102.656250, 17.978733 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 6, "NATSCALE": 30, "LABELRANK": 0, "FEATURECLA": "Admin-0 capital", "NAME": "Melekeok", "DIFFASCII": 0, "NAMEASCII": "Melekeok", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 0, "SOV0NAME": "Palau", "SOV_A3": "PLW", "ADM0NAME": "Palau", "ADM0_A3": "PLW", "ISO_A2": "PW", "LATITUDE": 7.487396, "LONGITUDE": 134.626548, "CHANGED": 4, "NAMEDIFF": 0, "DIFFNOTE": "Location adjusted. Changed scale rank.", "POP_MAX": 7026, "POP_MIN": 7026, "POP_OTHER": 0, "RANK_MAX": 5, "RANK_MIN": 5, "GEONAMEID": 1559804, "LS_NAME": "Melekeok", "LS_MATCH": 1, "CHECKME": 5, "MAX_POP10": 0, "MAX_POP20": 0, "MAX_POP50": 0, "MAX_POP300": 7026, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 6, "MAX_AREAKM": 6, "MIN_AREAMI": 2, "MAX_AREAMI": 2, "MIN_PERKM": 15, "MAX_PERKM": 15, "MIN_PERMI": 9, "MAX_PERMI": 9, "MIN_BBXMIN": 134.466667, "MAX_BBXMIN": 134.466667, "MIN_BBXMAX": 134.5, "MAX_BBXMAX": 134.5, "MIN_BBYMIN": 7.325, "MAX_BBYMIN": 7.325, "MIN_BBYMAX": 7.35, "MAX_BBYMAX": 7.35, "MEAN_BBXC": 134.481548, "MEAN_BBYC": 7.339881, "COMPARE": 0, "GN_ASCII": "Melekeok", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 0, "GN_POP": 217, "ELEVATION": 0, "GTOPO30": 1, "TIMEZONE": "Pacific/Palau", "GEONAMESNO": "GeoNames match general.", "UN_FID": 0, "UN_LAT": 0, "UN_LONG": 0, "POP1950": 0, "POP1955": 0, "POP1960": 0, "POP1965": 0, "POP1970": 0, "POP1975": 0, "POP1980": 0, "POP1985": 0, "POP1990": 0, "POP1995": 0, "POP2000": 0, "POP2005": 0, "POP2010": 0, "POP2015": 0, "POP2020": 0, "POP2025": 0, "POP2050": 0 }, "geometry": { "type": "Point", "coordinates": [ 134.648438, 7.449624 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 6, "NATSCALE": 30, "LABELRANK": 0, "FEATURECLA": "Admin-0 capital", "NAME": "Majuro", "DIFFASCII": 0, "NAMEASCII": "Majuro", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 0, "SOV0NAME": "Marshall Islands", "SOV_A3": "MHL", "ADM0NAME": "Marshall Islands", "ADM0_A3": "MHL", "ISO_A2": "MH", "LATITUDE": 7.103004, "LONGITUDE": 171.38, "CHANGED": 4, "NAMEDIFF": 0, "DIFFNOTE": "Changed scale rank.", "POP_MAX": 25400, "POP_MIN": 20500, "POP_OTHER": 0, "RANK_MAX": 7, "RANK_MIN": 7, "GEONAMEID": 2113779, "LS_NAME": "Majuro", "LS_MATCH": 1, "CHECKME": 5, "MAX_POP10": 2084, "MAX_POP20": 2084, "MAX_POP50": 2084, "MAX_POP300": 2084, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 3, "MAX_AREAKM": 3, "MIN_AREAMI": 1, "MAX_AREAMI": 1, "MIN_PERKM": 7, "MAX_PERKM": 7, "MIN_PERMI": 5, "MAX_PERMI": 5, "MIN_BBXMIN": 171.366667, "MAX_BBXMIN": 171.366667, "MIN_BBXMAX": 171.375, "MAX_BBXMAX": 171.375, "MIN_BBYMIN": 7.091667, "MAX_BBYMIN": 7.091667, "MIN_BBYMAX": 7.116667, "MAX_BBYMAX": 7.116667, "MEAN_BBXC": 171.370833, "MEAN_BBYC": 7.104167, "COMPARE": 0, "GN_ASCII": "Majuro", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 0, "GN_POP": 20500, "ELEVATION": 0, "GTOPO30": 1, "TIMEZONE": "Pacific/Majuro", "GEONAMESNO": "GeoNames match general.", "UN_FID": 0, "UN_LAT": 0, "UN_LONG": 0, "POP1950": 0, "POP1955": 0, "POP1960": 0, "POP1965": 0, "POP1970": 0, "POP1975": 0, "POP1980": 0, "POP1985": 0, "POP1990": 0, "POP1995": 0, "POP2000": 0, "POP2005": 0, "POP2010": 0, "POP2015": 0, "POP2020": 0, "POP2025": 0, "POP2050": 0 }, "geometry": { "type": "Point", "coordinates": [ 171.386719, 7.100893 ] } }
@@ -95,6 +97,8 @@
,
{ "type": "Feature", "properties": { "SCALERANK": 1, "NATSCALE": 300, "LABELRANK": 1, "FEATURECLA": "Admin-1 capital", "NAME": "Atlanta", "DIFFASCII": 0, "NAMEASCII": "Atlanta", "ADM0CAP": 0, "CAPALT": 0, "WORLDCITY": 1, "MEGACITY": 1, "SOV0NAME": "United States", "SOV_A3": "USA", "ADM0NAME": "United States of America", "ADM0_A3": "USA", "ADM1NAME": "Georgia", "ISO_A2": "US", "LATITUDE": 33.830014, "LONGITUDE": -84.399949, "CHANGED": 0, "NAMEDIFF": 0, "POP_MAX": 4506000, "POP_MIN": 422908, "POP_OTHER": 2874096, "RANK_MAX": 12, "RANK_MIN": 10, "GEONAMEID": 4180439, "MEGANAME": "Atlanta", "LS_NAME": "Atlanta", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 2928128, "MAX_POP20": 3896411, "MAX_POP50": 3910939, "MAX_POP300": 3910939, "MAX_POP310": 3910939, "MAX_NATSCA": 300, "MIN_AREAKM": 2761, "MAX_AREAKM": 4086, "MIN_AREAMI": 1066, "MAX_AREAMI": 1578, "MIN_PERKM": 1494, "MAX_PERKM": 2459, "MIN_PERMI": 929, "MAX_PERMI": 1528, "MIN_BBXMIN": -84.875, "MAX_BBXMIN": -84.608333, "MIN_BBXMAX": -83.879976, "MAX_BBXMAX": -83.858333, "MIN_BBYMIN": 33.383333, "MAX_BBYMIN": 33.383333, "MIN_BBYMAX": 34.202715, "MAX_BBYMAX": 34.275, "MEAN_BBXC": -84.328739, "MEAN_BBYC": 33.851552, "COMPARE": 0, "GN_ASCII": "Atlanta", "FEATURE_CL": "P", "FEATURE_CO": "PPLA", "ADMIN1_COD": 0, "GN_POP": 422908, "ELEVATION": 320, "GTOPO30": 305, "TIMEZONE": "America/New_York", "GEONAMESNO": "GeoNames match general.", "UN_FID": 524, "UN_ADM0": "United States of America", "UN_LAT": 33.79, "UN_LONG": -84.34, "POP1950": 513, "POP1955": 631, "POP1960": 776, "POP1965": 959, "POP1970": 1182, "POP1975": 1386, "POP1980": 1625, "POP1985": 1879, "POP1990": 2184, "POP1995": 2781, "POP2000": 3542, "POP2005": 4307, "POP2010": 4506, "POP2015": 4695, "POP2020": 4888, "POP2025": 5035, "POP2050": 5151 }, "geometry": { "type": "Point", "coordinates": [ -84.418945, 33.833920 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 2, "NATSCALE": 200, "LABELRANK": 6, "FEATURECLA": "Admin-0 capital", "NAME": "Havana", "NAMEALT": "La Habana", "DIFFASCII": 0, "NAMEASCII": "Havana", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 1, "SOV0NAME": "Cuba", "SOV_A3": "CUB", "ADM0NAME": "Cuba", "ADM0_A3": "CUB", "ADM1NAME": "Ciudad de la Habana", "ISO_A2": "CU", "LATITUDE": 23.131959, "LONGITUDE": -82.364182, "CHANGED": 5, "NAMEDIFF": 0, "DIFFNOTE": "Changed scale rank.", "POP_MAX": 2174000, "POP_MIN": 1990917, "POP_OTHER": 1930305, "RANK_MAX": 12, "RANK_MIN": 12, "GEONAMEID": 3553478, "MEGANAME": "La Habana", "LS_NAME": "Havana", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 1990917, "MAX_POP20": 2051170, "MAX_POP50": 2051170, "MAX_POP300": 2051170, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 323, "MAX_AREAKM": 362, "MIN_AREAMI": 125, "MAX_AREAMI": 140, "MIN_PERKM": 240, "MAX_PERKM": 286, "MIN_PERMI": 149, "MAX_PERMI": 177, "MIN_BBXMIN": -82.533333, "MAX_BBXMIN": -82.533333, "MIN_BBXMAX": -82.208333, "MAX_BBXMAX": -82.208333, "MIN_BBYMIN": 22.916667, "MAX_BBYMIN": 22.975161, "MIN_BBYMAX": 23.183333, "MAX_BBYMAX": 23.183333, "MEAN_BBXC": -82.354344, "MEAN_BBYC": 23.076845, "COMPARE": 0, "GN_ASCII": "Havana", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 2, "GN_POP": 2163824, "ELEVATION": 0, "GTOPO30": 5, "TIMEZONE": "America/Havana", "GEONAMESNO": "GeoNames match general.", "UN_FID": 172, "UN_ADM0": "Cuba", "UN_LAT": 23.04, "UN_LONG": -82.41, "POP1950": 1116, "POP1955": 1289, "POP1960": 1436, "POP1965": 1598, "POP1970": 1779, "POP1975": 1848, "POP1980": 1913, "POP1985": 2005, "POP1990": 2108, "POP1995": 2183, "POP2000": 2187, "POP2005": 2189, "POP2010": 2174, "POP2015": 2159, "POP2020": 2151, "POP2025": 2150, "POP2050": 2150, "CITYALT": "Havana" }, "geometry": { "type": "Point", "coordinates": [ -82.353516, 23.120154 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 4, "NATSCALE": 50, "LABELRANK": 0, "FEATURECLA": "Admin-0 capital", "NAME": "Basseterre", "DIFFASCII": 0, "NAMEASCII": "Basseterre", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 0, "SOV0NAME": "Saint Kitts and Nevis", "SOV_A3": "KNA", "ADM0NAME": "Saint Kitts and Nevis", "ADM0_A3": "KNA", "ISO_A2": "KN", "LATITUDE": 17.30203, "LONGITUDE": -62.717009, "CHANGED": 4, "NAMEDIFF": 0, "DIFFNOTE": "Changed scale rank.", "POP_MAX": 21887, "POP_MIN": 15500, "POP_OTHER": 21887, "RANK_MAX": 7, "RANK_MIN": 6, "GEONAMEID": 3575551, "LS_NAME": "Basseterre", "LS_MATCH": 1, "CHECKME": 5, "MAX_POP10": 21887, "MAX_POP20": 21887, "MAX_POP50": 21887, "MAX_POP300": 21887, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 7, "MAX_AREAKM": 7, "MIN_AREAMI": 3, "MAX_AREAMI": 3, "MIN_PERKM": 16, "MAX_PERKM": 16, "MIN_PERMI": 10, "MAX_PERMI": 10, "MIN_BBXMIN": -62.741667, "MAX_BBXMIN": -62.741667, "MIN_BBXMAX": -62.708333, "MAX_BBXMAX": -62.708333, "MIN_BBYMIN": 17.291667, "MAX_BBYMIN": 17.291667, "MIN_BBYMAX": 17.333333, "MAX_BBYMAX": 17.333333, "MEAN_BBXC": -62.726389, "MEAN_BBYC": 17.306019, "COMPARE": 0, "GN_ASCII": "Basseterre", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 3, "GN_POP": 12920, "ELEVATION": 0, "GTOPO30": 1, "TIMEZONE": "America/St_Kitts", "GEONAMESNO": "GeoNames match general.", "UN_FID": 0, "UN_LAT": 0, "UN_LONG": 0, "POP1950": 0, "POP1955": 0, "POP1960": 0, "POP1965": 0, "POP1970": 0, "POP1975": 0, "POP1980": 0, "POP1985": 0, "POP1990": 0, "POP1995": 0, "POP2000": 0, "POP2005": 0, "POP2010": 0, "POP2015": 0, "POP2020": 0, "POP2025": 0, "POP2050": 0 }, "geometry": { "type": "Point", "coordinates": [ -62.709961, 17.308688 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 3, "NATSCALE": 110, "LABELRANK": 8, "FEATURECLA": "Admin-0 capital", "NAME": "Reykjavík", "DIFFASCII": 1, "NAMEASCII": "Reykjavik", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 0, "SOV0NAME": "Iceland", "SOV_A3": "ISL", "ADM0NAME": "Iceland", "ADM0_A3": "ISL", "ADM1NAME": "Suðurnes", "ISO_A2": "IS", "LATITUDE": 64.150024, "LONGITUDE": -21.950014, "CHANGED": 0, "NAMEDIFF": 0, "POP_MAX": 166212, "POP_MIN": 113906, "POP_OTHER": 160116, "RANK_MAX": 9, "RANK_MIN": 9, "GEONAMEID": 3413829, "LS_NAME": "Reykjavik", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 166212, "MAX_POP20": 166212, "MAX_POP50": 166212, "MAX_POP300": 166212, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 75, "MAX_AREAKM": 75, "MIN_AREAMI": 29, "MAX_AREAMI": 29, "MIN_PERKM": 119, "MAX_PERKM": 119, "MIN_PERMI": 74, "MAX_PERMI": 74, "MIN_BBXMIN": -22.008333, "MAX_BBXMIN": -22.008333, "MIN_BBXMAX": -21.75, "MAX_BBXMAX": -21.75, "MIN_BBYMIN": 64.05, "MAX_BBYMIN": 64.05, "MIN_BBYMAX": 64.166667, "MAX_BBYMAX": 64.166667, "MEAN_BBXC": -21.8825, "MEAN_BBYC": 64.116125, "COMPARE": 0, "GN_ASCII": "Reykjavik", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 39, "GN_POP": 113906, "ELEVATION": 0, "GTOPO30": 16, "TIMEZONE": "Atlantic/Reykjavik", "GEONAMESNO": "GeoNames match general.", "UN_FID": 0, "UN_LAT": 0, "UN_LONG": 0, "POP1950": 0, "POP1955": 0, "POP1960": 0, "POP1965": 0, "POP1970": 0, "POP1975": 0, "POP1980": 0, "POP1985": 0, "POP1990": 0, "POP1995": 0, "POP2000": 0, "POP2005": 0, "POP2010": 0, "POP2015": 0, "POP2020": 0, "POP2025": 0, "POP2050": 0 }, "geometry": { "type": "Point", "coordinates": [ -21.928711, 64.148952 ] } }
@@ -198,6 +202,8 @@
{ "type": "Feature", "properties": { "SCALERANK": 6, "NATSCALE": 30, "LABELRANK": 0, "FEATURECLA": "Admin-0 capital", "NAME": "Majuro", "DIFFASCII": 0, "NAMEASCII": "Majuro", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 0, "SOV0NAME": "Marshall Islands", "SOV_A3": "MHL", "ADM0NAME": "Marshall Islands", "ADM0_A3": "MHL", "ISO_A2": "MH", "LATITUDE": 7.103004, "LONGITUDE": 171.38, "CHANGED": 4, "NAMEDIFF": 0, "DIFFNOTE": "Changed scale rank.", "POP_MAX": 25400, "POP_MIN": 20500, "POP_OTHER": 0, "RANK_MAX": 7, "RANK_MIN": 7, "GEONAMEID": 2113779, "LS_NAME": "Majuro", "LS_MATCH": 1, "CHECKME": 5, "MAX_POP10": 2084, "MAX_POP20": 2084, "MAX_POP50": 2084, "MAX_POP300": 2084, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 3, "MAX_AREAKM": 3, "MIN_AREAMI": 1, "MAX_AREAMI": 1, "MIN_PERKM": 7, "MAX_PERKM": 7, "MIN_PERMI": 5, "MAX_PERMI": 5, "MIN_BBXMIN": 171.366667, "MAX_BBXMIN": 171.366667, "MIN_BBXMAX": 171.375, "MAX_BBXMAX": 171.375, "MIN_BBYMIN": 7.091667, "MAX_BBYMIN": 7.091667, "MIN_BBYMAX": 7.116667, "MAX_BBYMAX": 7.116667, "MEAN_BBXC": 171.370833, "MEAN_BBYC": 7.104167, "COMPARE": 0, "GN_ASCII": "Majuro", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 0, "GN_POP": 20500, "ELEVATION": 0, "GTOPO30": 1, "TIMEZONE": "Pacific/Majuro", "GEONAMESNO": "GeoNames match general.", "UN_FID": 0, "UN_LAT": 0, "UN_LONG": 0, "POP1950": 0, "POP1955": 0, "POP1960": 0, "POP1965": 0, "POP1970": 0, "POP1975": 0, "POP1980": 0, "POP1985": 0, "POP1990": 0, "POP1995": 0, "POP2000": 0, "POP2005": 0, "POP2010": 0, "POP2015": 0, "POP2020": 0, "POP2025": 0, "POP2050": 0 }, "geometry": { "type": "Point", "coordinates": [ 171.386719, 7.100893 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 4, "NATSCALE": 50, "LABELRANK": 0, "FEATURECLA": "Admin-0 capital", "NAME": "Kigali", "DIFFASCII": 0, "NAMEASCII": "Kigali", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 0, "MEGACITY": 1, "SOV0NAME": "Rwanda", "SOV_A3": "RWA", "ADM0NAME": "Rwanda", "ADM0_A3": "RWA", "ADM1NAME": "Kigali City", "ISO_A2": "RW", "LATITUDE": -1.95359, "LONGITUDE": 30.060532, "CHANGED": 4, "NAMEDIFF": 0, "DIFFNOTE": "Changed scale rank.", "POP_MAX": 860000, "POP_MIN": 745261, "POP_OTHER": 1152904, "RANK_MAX": 11, "RANK_MIN": 11, "GEONAMEID": 202061, "MEGANAME": "Kigali", "LS_NAME": "Kigali", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 1046787, "MAX_POP20": 2263899, "MAX_POP50": 5065653, "MAX_POP300": 7102391, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 601, "MAX_AREAKM": 8753, "MIN_AREAMI": 232, "MAX_AREAMI": 3380, "MIN_PERKM": 735, "MAX_PERKM": 9184, "MIN_PERMI": 457, "MAX_PERMI": 5707, "MIN_BBXMIN": 29.166667, "MAX_BBXMIN": 29.833333, "MIN_BBXMAX": 30.233333, "MAX_BBXMAX": 30.475, "MIN_BBYMIN": -2.991667, "MAX_BBYMIN": -2.075, "MIN_BBYMAX": -1.76663, "MAX_BBYMAX": -1.075, "MEAN_BBXC": 29.913775, "MEAN_BBYC": -2.034427, "COMPARE": 0, "GN_ASCII": "Kigali", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 9, "GN_POP": 745261, "ELEVATION": 0, "GTOPO30": 1568, "TIMEZONE": "Africa/Kigali", "GEONAMESNO": "GeoNames match general.", "UN_FID": 439, "UN_ADM0": "Rwanda", "UN_LAT": -1.95, "UN_LONG": 30.05, "POP1950": 18, "POP1955": 25, "POP1960": 34, "POP1965": 45, "POP1970": 59, "POP1975": 90, "POP1980": 128, "POP1985": 168, "POP1990": 219, "POP1995": 289, "POP2000": 497, "POP2005": 775, "POP2010": 860, "POP2015": 947, "POP2020": 1152, "POP2025": 1413, "POP2050": 1715 }, "geometry": { "type": "Point", "coordinates": [ 30.058594, -1.933227 ] } }
,
{ "type": "Feature", "properties": { "SCALERANK": 0, "NATSCALE": 600, "LABELRANK": 5, "FEATURECLA": "Admin-0 capital", "NAME": "Nairobi", "DIFFASCII": 0, "NAMEASCII": "Nairobi", "ADM0CAP": 1, "CAPALT": 0, "WORLDCITY": 1, "MEGACITY": 1, "SOV0NAME": "Kenya", "SOV_A3": "KEN", "ADM0NAME": "Kenya", "ADM0_A3": "KEN", "ADM1NAME": "Nairobi", "ISO_A2": "KE", "LATITUDE": -1.283347, "LONGITUDE": 36.816657, "CHANGED": 4, "NAMEDIFF": 0, "DIFFNOTE": "Changed scale rank.", "POP_MAX": 3010000, "POP_MIN": 2750547, "POP_OTHER": 3400962, "RANK_MAX": 12, "RANK_MIN": 12, "GEONAMEID": 184745, "MEGANAME": "Nairobi", "LS_NAME": "Nairobi", "LS_MATCH": 1, "CHECKME": 0, "MAX_POP10": 3401842, "MAX_POP20": 3401842, "MAX_POP50": 3418532, "MAX_POP300": 3418532, "MAX_POP310": 0, "MAX_NATSCA": 100, "MIN_AREAKM": 698, "MAX_AREAKM": 719, "MIN_AREAMI": 269, "MAX_AREAMI": 277, "MIN_PERKM": 554, "MAX_PERKM": 571, "MIN_PERMI": 344, "MAX_PERMI": 355, "MIN_BBXMIN": 36.608333, "MAX_BBXMIN": 36.608333, "MIN_BBXMAX": 37.066667, "MAX_BBXMAX": 37.066667, "MIN_BBYMIN": -1.433333, "MAX_BBYMIN": -1.433333, "MIN_BBYMAX": -1.083333, "MAX_BBYMAX": -1.083333, "MEAN_BBXC": 36.804283, "MEAN_BBYC": -1.249679, "COMPARE": 0, "GN_ASCII": "Nairobi", "FEATURE_CL": "P", "FEATURE_CO": "PPLC", "ADMIN1_COD": 5, "GN_POP": 2750547, "ELEVATION": 0, "GTOPO30": 1724, "TIMEZONE": "Africa/Nairobi", "GEONAMESNO": "GeoNames match general.", "UN_FID": 324, "UN_ADM0": "Kenya", "UN_LAT": -1.26, "UN_LONG": 36.8, "POP1950": 137, "POP1955": 201, "POP1960": 293, "POP1965": 404, "POP1970": 531, "POP1975": 677, "POP1980": 862, "POP1985": 1090, "POP1990": 1380, "POP1995": 1755, "POP2000": 2233, "POP2005": 2787, "POP2010": 3010, "POP2015": 3363, "POP2020": 4052, "POP2025": 4881, "POP2050": 5871 }, "geometry": { "type": "Point", "coordinates": [ 36.826172, -1.274309 ] } }
] }
] }
] }