From 19f7184d175107689d8469255d95e837fa61bbee Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Wed, 17 Nov 2021 16:10:45 -0600 Subject: [PATCH 01/16] Adding a function to pick important features by grid --- vectordatasource/transform.py | 121 +++++++++++++++++++++++++++++----- 1 file changed, 105 insertions(+), 16 deletions(-) diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index c66188687..2d6e6481e 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -1,23 +1,31 @@ # -*- encoding: utf-8 -*- # transformation functions to apply to features +import csv +import re from collections import defaultdict, namedtuple -from math import ceil from numbers import Number -from shapely.geometry.collection import GeometryCollection -from shapely.geometry import box as Box -from shapely.geometry import LinearRing + +import hanzidentifier +import kdtree +import pycountry +import shapely.errors +import shapely.ops +import shapely.wkb +from StreetNames import short_street_name +from math import ceil from shapely.geometry import LineString +from shapely.geometry import LinearRing from shapely.geometry import Point from shapely.geometry import Polygon +from shapely.geometry import box as Box +from shapely.geometry.collection import GeometryCollection from shapely.geometry.multilinestring import MultiLineString from shapely.geometry.multipoint import MultiPoint from shapely.geometry.multipolygon import MultiPolygon from shapely.geometry.polygon import orient from shapely.ops import linemerge from shapely.strtree import STRtree -from sort import pois as sort_pois -from StreetNames import short_street_name from sys import float_info from tilequeue.process import _make_valid_if_necessary from tilequeue.process import _visible_shape @@ -25,18 +33,11 @@ from tilequeue.tile import normalize_geometry_type from tilequeue.tile import tolerance_for_zoom from tilequeue.transform import calculate_padded_bounds -from util import to_float -from util import safe_int from zope.dottedname.resolve import resolve -import hanzidentifier -import csv -import pycountry -import re -import shapely.errors -import shapely.wkb -import shapely.ops -import kdtree +from sort import pois as sort_pois +from util import safe_int +from util import to_float feet_pattern = re.compile('([+-]?[0-9.]+)\'(?: *([+-]?[0-9.]+)")?') number_pattern = re.compile('([+-]?[0-9.]+)') @@ -3114,6 +3115,94 @@ def _match_props(props, items_matching): return True +def keep_n_features_gridded(ctx): + """ + Distribute the features matching _all_ the key-value + pairs in `items_matching` into a grid, then keep the + first `max_items` features in each grid cell. + + The grid is created by dividing the width and height + of the tile into `grid_size` buckets (so you end up + with grid_size*grid_size buckets total). + + NOTE: This only works with point features and will + pass through non-point features untouched. + + This is useful for removing less-important features + in areas that are geographically dense. + """ + + feature_layers = ctx.feature_layers + zoom = ctx.nominal_zoom + source_layer = ctx.params.get('source_layer') + assert source_layer, 'keep_n_features_gridded: missing source layer' + start_zoom = ctx.params.get('start_zoom', 0) + end_zoom = ctx.params.get('end_zoom') + items_matching = ctx.params.get('items_matching') + max_items = ctx.params.get('max_items') + grid_size = ctx.params.get('grid_size') + + # leaving items_matching, grid_size, or max_items as None (or zero) + # would mean that this filter would do nothing, so assume + # that this is really a configuration error. + assert items_matching, 'keep_n_features_gridded: missing or empty item match dict' + assert max_items, 'keep_n_features_gridded: missing or zero max number of items' + assert grid_size, 'keep_n_features_gridded: missing or zero grid size' + + if zoom < start_zoom: + return None + + # we probably don't want to do this at higher zooms (e.g: 17 & + # 18), even if there are a bunch of features in the tile, as + # we use the high-zoom tiles for overzooming to 20+, and we'd + # eventually expect to see _everything_. + if end_zoom is not None and zoom >= end_zoom: + return None + + layer = _find_layer(feature_layers, source_layer) + if layer is None: + return None + + minx, miny, maxx, maxy = ctx.unpadded_bounds + bucket_width = (maxx - minx) / grid_size + bucket_height = (maxy - miny) / grid_size + + # Sort the features into buckets + buckets = dict() + new_features = [] + for shape, props, fid in layer['features']: + # Pass non-point shapes through untouched + if shape.geom_type != 'Point': + new_features.append((shape, props, fid)) + + # TODO This will filter out stuff that doesn't match. Do we want it to pass thru untouched instead? + if not _match_props(props, items_matching): + continue + + # Calculate the bucket to put this feature in + bucket_x = int((shape.x - minx) / bucket_width) + bucket_y = int((shape.y - miny) / bucket_height) + bucket_id = (bucket_x, bucket_y) + + existing_feature = buckets.get(bucket_id) + if existing_feature: + # Is the current feature better than the one that's already in the bucket? + existing_props = existing_feature[1] + # TODO How do we decide the winner? + if props.min_zoom < existing_props.min_zoom: + buckets[bucket_id] = (shape, props, fid) + else: + # Nothing in the bucket, so keep this one + buckets[bucket_id] = (shape, props, fid) + + # Copy the features that survived to new_features + for shape, props, fid in buckets.values(): + new_features.append((shape, props, fid)) + + layer['features'] = new_features + return layer + + def keep_n_features(ctx): """ Keep only the first N features matching `items_matching` From ba251f30bccb14c63a443ca41293f4a14fe63bb4 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Wed, 17 Nov 2021 16:43:16 -0600 Subject: [PATCH 02/16] Undo import optimization --- vectordatasource/transform.py | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index 2d6e6481e..b482e7600 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -1,31 +1,23 @@ # -*- encoding: utf-8 -*- # transformation functions to apply to features -import csv -import re from collections import defaultdict, namedtuple -from numbers import Number - -import hanzidentifier -import kdtree -import pycountry -import shapely.errors -import shapely.ops -import shapely.wkb -from StreetNames import short_street_name from math import ceil -from shapely.geometry import LineString +from numbers import Number +from shapely.geometry.collection import GeometryCollection +from shapely.geometry import box as Box from shapely.geometry import LinearRing +from shapely.geometry import LineString from shapely.geometry import Point from shapely.geometry import Polygon -from shapely.geometry import box as Box -from shapely.geometry.collection import GeometryCollection from shapely.geometry.multilinestring import MultiLineString from shapely.geometry.multipoint import MultiPoint from shapely.geometry.multipolygon import MultiPolygon from shapely.geometry.polygon import orient from shapely.ops import linemerge from shapely.strtree import STRtree +from sort import pois as sort_pois +from StreetNames import short_street_name from sys import float_info from tilequeue.process import _make_valid_if_necessary from tilequeue.process import _visible_shape @@ -33,11 +25,17 @@ from tilequeue.tile import normalize_geometry_type from tilequeue.tile import tolerance_for_zoom from tilequeue.transform import calculate_padded_bounds -from zope.dottedname.resolve import resolve - -from sort import pois as sort_pois -from util import safe_int from util import to_float +from util import safe_int +from zope.dottedname.resolve import resolve +import hanzidentifier +import csv +import pycountry +import re +import shapely.errors +import shapely.wkb +import shapely.ops +import kdtree feet_pattern = re.compile('([+-]?[0-9.]+)\'(?: *([+-]?[0-9.]+)")?') number_pattern = re.compile('([+-]?[0-9.]+)') From 99a5944428fe5edefe159d9b9dcd208228fc9346 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Wed, 17 Nov 2021 16:43:35 -0600 Subject: [PATCH 03/16] Missed a newline --- vectordatasource/transform.py | 1 + 1 file changed, 1 insertion(+) diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index b482e7600..40b9e0319 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -37,6 +37,7 @@ import shapely.ops import kdtree + feet_pattern = re.compile('([+-]?[0-9.]+)\'(?: *([+-]?[0-9.]+)")?') number_pattern = re.compile('([+-]?[0-9.]+)') # pattern to detect numbers with units. From 88a232f1356f8f123901601681b00ae429bdef39 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Wed, 17 Nov 2021 16:59:50 -0600 Subject: [PATCH 04/16] Add a tiny bit of comment about the bucketing --- vectordatasource/transform.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index 40b9e0319..b60c87bd3 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -3178,7 +3178,9 @@ def keep_n_features_gridded(ctx): if not _match_props(props, items_matching): continue - # Calculate the bucket to put this feature in + # Calculate the bucket to put this feature in. + # Note that this purposefully allows for buckets outside the unpadded bounds + # so we can bucketize the padding area, too. bucket_x = int((shape.x - minx) / bucket_width) bucket_y = int((shape.y - miny) / bucket_height) bucket_id = (bucket_x, bucket_y) From 17b4184b4e86ab5aa391e9a3e029985196522610 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Wed, 17 Nov 2021 17:04:01 -0600 Subject: [PATCH 05/16] Rename integration test for collision --- .../{1999-medium-sized-parks.py => 1995-medium-sized-parks.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename integration-test/{1999-medium-sized-parks.py => 1995-medium-sized-parks.py} (100%) diff --git a/integration-test/1999-medium-sized-parks.py b/integration-test/1995-medium-sized-parks.py similarity index 100% rename from integration-test/1999-medium-sized-parks.py rename to integration-test/1995-medium-sized-parks.py From d6d398087657fe10ab5791acb3b99e1d600c6b98 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Wed, 17 Nov 2021 17:57:27 -0600 Subject: [PATCH 06/16] Sort buckets and take the top instead of bucketing to a single feature --- vectordatasource/transform.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index b60c87bd3..83fe222bf 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -3140,6 +3140,7 @@ def keep_n_features_gridded(ctx): items_matching = ctx.params.get('items_matching') max_items = ctx.params.get('max_items') grid_size = ctx.params.get('grid_size') + sorting_keys = ctx.params.get('sorting_keys') # leaving items_matching, grid_size, or max_items as None (or zero) # would mean that this filter would do nothing, so assume @@ -3147,6 +3148,8 @@ def keep_n_features_gridded(ctx): assert items_matching, 'keep_n_features_gridded: missing or empty item match dict' assert max_items, 'keep_n_features_gridded: missing or zero max number of items' assert grid_size, 'keep_n_features_gridded: missing or zero grid size' + assert sorting_keys, 'keep_n_features_gridded: missing sorting keys' + assert isinstance(sorting_keys, list), 'keep_n_features_gridded: sorting keys should be a list' if zoom < start_zoom: return None @@ -3167,7 +3170,7 @@ def keep_n_features_gridded(ctx): bucket_height = (maxy - miny) / grid_size # Sort the features into buckets - buckets = dict() + buckets = defaultdict(list) new_features = [] for shape, props, fid in layer['features']: # Pass non-point shapes through untouched @@ -3185,20 +3188,12 @@ def keep_n_features_gridded(ctx): bucket_y = int((shape.y - miny) / bucket_height) bucket_id = (bucket_x, bucket_y) - existing_feature = buckets.get(bucket_id) - if existing_feature: - # Is the current feature better than the one that's already in the bucket? - existing_props = existing_feature[1] - # TODO How do we decide the winner? - if props.min_zoom < existing_props.min_zoom: - buckets[bucket_id] = (shape, props, fid) - else: - # Nothing in the bucket, so keep this one - buckets[bucket_id] = (shape, props, fid) + buckets[bucket_id].append((shape, props, fid)) - # Copy the features that survived to new_features - for shape, props, fid in buckets.values(): - new_features.append((shape, props, fid)) + # Sort the features in each bucket and pick the top items to include in the output + for features_in_bucket in buckets.values(): + sorted_features = sorted(features_in_bucket, key=lambda i: tuple(i.get(k) for k in sorting_keys)) + new_features.extend(sorted_features[:max_items]) layer['features'] = new_features return layer From 9635901bfe3993d29259637cf8536ff7be500609 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Thu, 18 Nov 2021 09:56:47 -0600 Subject: [PATCH 07/16] Pass through non-point and features that don't match items_matching --- vectordatasource/transform.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index 83fe222bf..0a5cceb76 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -3174,11 +3174,8 @@ def keep_n_features_gridded(ctx): new_features = [] for shape, props, fid in layer['features']: # Pass non-point shapes through untouched - if shape.geom_type != 'Point': + if shape.type != 'Point' or not _match_props(props, items_matching): new_features.append((shape, props, fid)) - - # TODO This will filter out stuff that doesn't match. Do we want it to pass thru untouched instead? - if not _match_props(props, items_matching): continue # Calculate the bucket to put this feature in. From 49a13cd947828230b06f169e214136032ac03fda Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Thu, 18 Nov 2021 16:09:49 -0600 Subject: [PATCH 08/16] Add some unit tests --- test/test_transform.py | 151 ++++++++++++++++++++++++++++++++++ vectordatasource/transform.py | 2 +- 2 files changed, 152 insertions(+), 1 deletion(-) diff --git a/test/test_transform.py b/test/test_transform.py index 6802e8b49..8b72946fa 100644 --- a/test/test_transform.py +++ b/test/test_transform.py @@ -395,6 +395,157 @@ def test_short_name(self): self.assertEquals('foo', props['name:short']) +class KeepNGriddedTest(unittest.TestCase): + longMessage=True + + def test_not_points(self): + from tilequeue.process import Context + import shapely.geometry + + test_shape_1 = shapely.geometry.Polygon( + [(1, 1), (2, 2), (1, 2), (1, 1)]) + test_shape_2 = shapely.geometry.Polygon( + [(10, 10), (20, 20), (10, 20), (10, 10)]) + features = [ + (test_shape_1, {"foo": "bar"}, "test_shape_1"), + (test_shape_2, {"foo": "bar"}, "test_shape_2"), + ] + feature_layer = dict( + features=features, + layer_datum=dict(name='test_layer'), + ) + feature_layers = [feature_layer] + bounds = (0, 0, 100, 100) + ctx = Context( + feature_layers=feature_layers, + nominal_zoom=0, + unpadded_bounds=bounds, + params=dict( + source_layer="test_layer", + items_matching=dict(foo="bar"), + max_items=1, + grid_size=2, + sorting_keys=["foo"], + ), + resources=None, + log=None, + ) + from vectordatasource.transform import keep_n_features_gridded + layer = keep_n_features_gridded(ctx) + output_features = layer['features'] + self.assertEquals(features, output_features, "Non-point features should pass through without modification") + + def test_points_keep_1(self): + from tilequeue.process import Context + import shapely.geometry + + test_shape_1 = shapely.geometry.Point((1.1, 1.0)) + test_shape_2 = shapely.geometry.Point((1.1, 1.0)) + features = [ + (test_shape_1, {"foo": "bar"}, "test_shape_1"), + (test_shape_2, {"foo": "bar"}, "test_shape_2"), + ] + feature_layer = dict( + features=features, + layer_datum=dict(name='test_layer'), + ) + feature_layers = [feature_layer] + bounds = (0, 0, 100, 100) + ctx = Context( + feature_layers=feature_layers, + nominal_zoom=0, + unpadded_bounds=bounds, + params=dict( + source_layer="test_layer", + items_matching=dict(foo="bar"), + max_items=1, + grid_size=2, + sorting_keys=["foo"], + ), + resources=None, + log=None, + ) + from vectordatasource.transform import keep_n_features_gridded + layer = keep_n_features_gridded(ctx) + output_features = layer['features'] + self.assertEqual(1, len(output_features), "Should consolidate to a single point in the bucket") + self.assertEqual("test_shape_1", output_features[0][2], "All values equal, should pick first one") + + def test_points_keep_1_multisort_missing_sort_key(self): + from tilequeue.process import Context + import shapely.geometry + + test_shape_1 = shapely.geometry.Point((1.1, 1.0)) + test_shape_2 = shapely.geometry.Point((1.1, 1.0)) + features = [ + (test_shape_2, {"foo": "bar", "min_zoom": 12.0, "population": 20000}, "test_shape_2"), + (test_shape_1, {"foo": "bar", "population": 10000}, "test_shape_1"), + ] + feature_layer = dict( + features=features, + layer_datum=dict(name='test_layer'), + ) + feature_layers = [feature_layer] + bounds = (0, 0, 100, 100) + ctx = Context( + feature_layers=feature_layers, + nominal_zoom=0, + unpadded_bounds=bounds, + params=dict( + source_layer="test_layer", + items_matching=dict(foo="bar"), + max_items=1, + grid_size=2, + sorting_keys=["min_zoom", "population"], + ), + resources=None, + log=None, + ) + from vectordatasource.transform import keep_n_features_gridded + layer = keep_n_features_gridded(ctx) + output_features = layer['features'] + self.assertEqual(1, len(output_features), + "Should consolidate to a single point in the bucket") + self.assertEqual("test_shape_2", output_features[0][2], + "Should pick the shape with higher population when one sort key is missing") + + def test_points_keep_1_multisort_second(self): + from tilequeue.process import Context + import shapely.geometry + + test_shape_1 = shapely.geometry.Point((1.1, 1.0)) + test_shape_2 = shapely.geometry.Point((1.1, 1.0)) + features = [ + (test_shape_2, {"foo": "bar", "min_zoom": 12.0, "population": 20000}, "test_shape_2"), + (test_shape_1, {"foo": "bar", "min_zoom": 12.0, "population": 10000}, "test_shape_1"), + ] + feature_layer = dict( + features=features, + layer_datum=dict(name='test_layer'), + ) + feature_layers = [feature_layer] + bounds = (0, 0, 100, 100) + ctx = Context( + feature_layers=feature_layers, + nominal_zoom=0, + unpadded_bounds=bounds, + params=dict( + source_layer="test_layer", + items_matching=dict(foo="bar"), + max_items=1, + grid_size=2, + sorting_keys=["min_zoom", "population"], + ), + resources=None, + log=None, + ) + from vectordatasource.transform import keep_n_features_gridded + layer = keep_n_features_gridded(ctx) + output_features = layer['features'] + self.assertEqual(1, len(output_features), "Should consolidate to a single point in the bucket") + self.assertEqual("test_shape_2", output_features[0][2], "Should pick the shape with higher population") + + class TagsPriorityI18nTest(unittest.TestCase): def _call_fut(self, source, kvs): diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index 0a5cceb76..b869cfb75 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -3189,7 +3189,7 @@ def keep_n_features_gridded(ctx): # Sort the features in each bucket and pick the top items to include in the output for features_in_bucket in buckets.values(): - sorted_features = sorted(features_in_bucket, key=lambda i: tuple(i.get(k) for k in sorting_keys)) + sorted_features = sorted(features_in_bucket, key=lambda i: tuple(i[1].get(k) for k in sorting_keys), reverse=True) new_features.extend(sorted_features[:max_items]) layer['features'] = new_features From 2a05f608bfca7f945f0a6fd82cb1e0fa10db291b Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Thu, 18 Nov 2021 17:55:50 -0600 Subject: [PATCH 09/16] Add a couple more unit tests --- test/test_transform.py | 78 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/test/test_transform.py b/test/test_transform.py index 8b72946fa..1fcd72162 100644 --- a/test/test_transform.py +++ b/test/test_transform.py @@ -545,6 +545,84 @@ def test_points_keep_1_multisort_second(self): self.assertEqual(1, len(output_features), "Should consolidate to a single point in the bucket") self.assertEqual("test_shape_2", output_features[0][2], "Should pick the shape with higher population") + def test_points_keep_1_multisort_minzoom(self): + from tilequeue.process import Context + import shapely.geometry + + test_shape_1 = shapely.geometry.Point((1.1, 1.0)) + test_shape_2 = shapely.geometry.Point((1.1, 1.0)) + features = [ + (test_shape_2, {"foo": "bar", "min_zoom": 12.0, "population": 20000}, "test_shape_2"), + (test_shape_1, {"foo": "bar", "min_zoom": 10.0, "population": 10000}, "test_shape_1"), + ] + feature_layer = dict( + features=features, + layer_datum=dict(name='test_layer'), + ) + feature_layers = [feature_layer] + bounds = (0, 0, 100, 100) + ctx = Context( + feature_layers=feature_layers, + nominal_zoom=0, + unpadded_bounds=bounds, + params=dict( + source_layer="test_layer", + items_matching=dict(foo="bar"), + max_items=1, + grid_size=2, + sorting_keys=["min_zoom", "population"], + ), + resources=None, + log=None, + ) + from vectordatasource.transform import keep_n_features_gridded + layer = keep_n_features_gridded(ctx) + output_features = layer['features'] + self.assertEqual(1, len(output_features), "Should consolidate to a single point in the bucket") + self.assertEqual("test_shape_1", output_features[0][2], "Should pick the shape with lower min_zoom") + + def test_points_keep_1_different_buckets(self): + from tilequeue.process import Context + import shapely.geometry + + test_shape_1 = shapely.geometry.Point((1.0, 1.0)) + test_shape_2 = shapely.geometry.Point((1.0, 1.0)) + test_shape_3 = shapely.geometry.Point((75.0, 75.0)) + test_shape_4 = shapely.geometry.Point((25.0, 75.0)) + features = [ + (test_shape_1, {"foo": "bar", "population": 1000}, "test_shape_1"), + (test_shape_2, {"foo": "bar", "population": 2000}, "test_shape_2"), + (test_shape_3, {"foo": "bar", "population": 3000}, "test_shape_3"), + (test_shape_4, {"foo": "bar", "population": 4000}, "test_shape_4"), + ] + feature_layer = dict( + features=features, + layer_datum=dict(name='test_layer'), + ) + feature_layers = [feature_layer] + bounds = (0, 0, 100, 100) + ctx = Context( + feature_layers=feature_layers, + nominal_zoom=0, + unpadded_bounds=bounds, + params=dict( + source_layer="test_layer", + items_matching=dict(foo="bar"), + max_items=1, + grid_size=2, + sorting_keys=["min_zoom", "population"], + ), + resources=None, + log=None, + ) + from vectordatasource.transform import keep_n_features_gridded + layer = keep_n_features_gridded(ctx) + output_features = layer['features'] + self.assertEqual(3, len(output_features), "Should consolidate to 3 points") + self.assertEqual("test_shape_4", output_features[0][2]) + self.assertEqual("test_shape_2", output_features[1][2]) + self.assertEqual("test_shape_3", output_features[2][2]) + class TagsPriorityI18nTest(unittest.TestCase): From f86f5bef4e06ddeeec92cd35c8e9faa054f04f1a Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Wed, 1 Dec 2021 17:14:14 -0600 Subject: [PATCH 10/16] Trying integration test --- integration-test/1999-keep-n-gridded.py | 397 ++++++++++++++++++++++++ 1 file changed, 397 insertions(+) create mode 100644 integration-test/1999-keep-n-gridded.py diff --git a/integration-test/1999-keep-n-gridded.py b/integration-test/1999-keep-n-gridded.py new file mode 100644 index 000000000..246ce3a91 --- /dev/null +++ b/integration-test/1999-keep-n-gridded.py @@ -0,0 +1,397 @@ +# -*- encoding: utf-8 -*- +from shapely.wkt import loads as wkt_loads +import dsl +from . import FixtureTest + + +class KeepNGriddedPlaces(FixtureTest): + + def setUp(self): + super(KeepNGriddedPlaces, self).setUp() + ways = [ + dsl.way(0, wkt_loads('POINT (139.688014 35.62125)'), {u'id': u'57542483', u'name': u'目黒区', u'name:en': u'Meguro', u'place': u'city', u'population': u'282785', u'wikidata': u'Q233903'}), + dsl.way(1, wkt_loads('POINT (139.645796 35.86164)'), {u'capital': u'4', u'id': u'243993095', u'name': u'さいたま市', u'name:en': u'Saitama', u'place': u'city', u'population': u'1182115', u'wikidata': u'Q134635'}), + dsl.way(2, wkt_loads('POINT (139.327644 35.85569)'), {u'id': u'247962196', u'name': u'飯能市', u'name:en': u'Hanno', u'place': u'city', u'population': u'79931', u'wikidata': u'Q850472'}), + dsl.way(3, wkt_loads('POINT (139.085761 35.991451)'), {u'id': u'248008276', u'name': u'秩父市', u'name:en': u'Chichibu', u'place': u'city', u'population': u'63555', u'wikidata': u'Q647079'}), + dsl.way(4, wkt_loads('POINT (139.759455 35.682839)'), {u'admin_leve': u'2', u'capital': u'yes', u'id': u'265018692', u'name': u'東京都 Tokyo', u'name:en': u'Tokyo', u'place': u'city', u'population': u'13613660', u'wikidata': u'Q1490'}), + dsl.way(5, wkt_loads('POINT (139.388614 36.147247)'), {u'id': u'301641122', u'name': u'熊谷市', u'name:en': u'Kumagaya', u'place': u'city', u'population': u'198742', u'wikidata': u'Q41106'}), + dsl.way(6, wkt_loads('POINT (139.4559 36.138605)'), {u'id': u'302348601', u'name': u'行田市', u'name:en': u'Gyoda', u'place': u'city', u'population': u'80562', u'wikidata': u'Q860659'}), + dsl.way(7, wkt_loads('POINT (139.534425 36.212126)'), {u'id': u'302355166', u'name': u'明和町', u'name:en': u'Meiwa', u'place': u'town', u'population': u'11044', u'wikidata': u'Q1203274'}), + dsl.way(8, wkt_loads('POINT (137.925887 34.750052)'), {u'id': u'420453539', u'name': u'袋井市', u'name:en': u'Fukuroi', u'place': u'city', u'population': u'86532', u'wikidata': u'Q821337'}), + dsl.way(9, wkt_loads('POINT (138.018733 34.793469)'), {u'id': u'420453612', u'name': u'掛川市', u'name:en': u'Kakegawa', u'place': u'city', u'population': u'114602', u'wikidata': u'Q823988'}), + dsl.way(10, wkt_loads('POINT (137.935383 34.863955)'), {u'id': u'420453634', u'name': u'森町', u'name:en': u'Mori', u'place': u'town', u'population': u'18528', u'wikidata': u'Q1345571'}), + dsl.way(11, wkt_loads('POINT (137.851285 34.706481)'), {u'id': u'420453696', u'name': u'磐田市', u'name:en': u'Iwata', u'place': u'city', u'population': u'166426', u'wikidata': u'Q386651'}), + dsl.way(12, wkt_loads('POINT (139.542158 36.245434)'), {u'id': u'444778917', u'name': u'館林市', u'name:en': u'Tatebayashi', u'place': u'city', u'population': u'76102', u'wikidata': u'Q858016'}), + dsl.way(13, wkt_loads('POINT (139.339039 35.907767)'), {u'id': u'459653520', u'name': u'日高市', u'name:en': u'Hidaka', u'place': u'city', u'population': u'56224', u'wikidata': u'Q905721'}), + dsl.way(14, wkt_loads('POINT (137.968714 36.238205)'), {u'id': u'470328639', u'name': u'松本市', u'name:en': u'Matsumoto', u'place': u'city', u'population': u'227579', u'wikidata': u'Q213324'}), + dsl.way(15, wkt_loads('POINT (139.563534 35.712898)'), {u'id': u'509904081', u'name': u'武蔵野市', u'name:en': u'Musashino', u'place': u'city', u'population': u'140162', u'wikidata': u'Q210661'}), + dsl.way(16, wkt_loads('POINT (139.572916 35.685227)'), {u'id': u'527555169', u'name': u'三鷹市', u'name:en': u'Mitaka', u'place': u'city', u'population': u'189577', u'wikidata': u'Q242885'}), + dsl.way(17, wkt_loads('POINT (139.485693 35.925115)'), {u'id': u'537121807', u'name': u'川越市', u'name:en': u'Kawagoe', u'place': u'city', u'population': u'350745', u'wikidata': u'Q319740'}), + dsl.way(18, wkt_loads('POINT (139.666708 36.061883)'), {u'id': u'546630465', u'name': u'久喜市', u'name:en': u'Kuki', u'place': u'city', u'population': u'151598', u'wikidata': u'Q47535'}), + dsl.way(19, wkt_loads('POINT (137.698058 35.069431)'), {u'id': u'569005471', u'name': u'東栄町', u'name:en': u'Toei', u'place': u'town', u'population': u'3446', u'wikidata': u'Q1354877'}), + dsl.way(20, wkt_loads('POINT (139.063283 36.389342)'), {u'capital': u'4', u'id': u'574841107', u'name': u'前橋市', u'name:en': u'Maebashi', u'place': u'city', u'population': u'324644', u'wikidata': u'Q201613'}), + dsl.way(21, wkt_loads('POINT (139.575977 35.634023)'), {u'id': u'602527728', u'name': u'狛江市', u'name:en': u'Komae', u'place': u'city', u'population': u'76234', u'wikidata': u'Q86536'}), + dsl.way(22, wkt_loads('POINT (139.554815 35.660036)'), {u'id': u'621286703', u'name': u'調布市', u'name:en': u'Chofu', u'place': u'city', u'population': u'232573', u'wikidata': u'Q210667'}), + dsl.way(23, wkt_loads('POINT (139.473445 35.661112)'), {u'id': u'621890744', u'name': u'府中市', u'name:en': u'Fuchu', u'place': u'city', u'population': u'261991', u'wikidata': u'Q208818'}), + dsl.way(24, wkt_loads('POINT (139.283071 35.660175)'), {u'id': u'622423997', u'name': u'八王子市', u'name:en': u'Hachioji', u'place': u'city', u'population': u'555517', u'wikidata': u'Q208863'}), + dsl.way(25, wkt_loads('POINT (139.414705 35.661072)'), {u'id': u'622424880', u'name': u'日野市', u'name:en': u'Hino', u'place': u'city', u'population': u'171309', u'wikidata': u'Q236197'}), + dsl.way(26, wkt_loads('POINT (139.507776 35.638229)'), {u'id': u'622640333', u'name': u'稲城市', u'name:en': u'Inagi', u'place': u'city', u'population': u'90112', u'wikidata': u'Q317847'}), + dsl.way(27, wkt_loads('POINT (139.443503 35.637188)'), {u'id': u'622642835', u'name': u'多摩市', u'name:en': u'Tama', u'place': u'city', u'population': u'144348', u'wikidata': u'Q213263'}), + dsl.way(28, wkt_loads('POINT (139.664468 35.718123)'), {u'id': u'622866764', u'name': u'中野区', u'name:en': u'Nakano', u'place': u'city', u'population': u'336639', u'wikidata': u'Q234087'}), + dsl.way(29, wkt_loads('POINT (139.638735 35.74836)'), {u'id': u'622868305', u'name': u'練馬区', u'name:en': u'Nerima', u'place': u'city', u'population': u'733150', u'wikidata': u'Q232655'}), + dsl.way(30, wkt_loads('POINT (139.605869 35.781705)'), {u'id': u'622868936', u'name': u'和光市', u'name:en': u'Wako', u'place': u'city', u'population': u'82017', u'wikidata': u'Q658058'}), + dsl.way(31, wkt_loads('POINT (139.593733 35.797086)'), {u'id': u'622870825', u'name': u'朝霞市', u'name:en': u'Asaka', u'place': u'city', u'population': u'130764', u'wikidata': u'Q646834'}), + dsl.way(32, wkt_loads('POINT (139.442839 35.564193)'), {u'id': u'623797057', u'name': u'町田市', u'name:en': u'Machida', u'place': u'city', u'population': u'433720', u'wikidata': u'Q210628'}), + dsl.way(33, wkt_loads('POINT (139.454224 35.709674)'), {u'id': u'623801472', u'name': u'国分寺市', u'name:en': u'Kokubunji', u'place': u'city', u'population': u'123290', u'wikidata': u'Q317834'}), + dsl.way(34, wkt_loads('POINT (139.43624 35.681991)'), {u'id': u'623805032', u'name': u'国立市', u'name:en': u'Kunitachi', u'place': u'city', u'population': u'73934', u'wikidata': u'Q330007'}), + dsl.way(35, wkt_loads('POINT (139.714222 35.736156)'), {u'id': u'656246516', u'name': u'豊島区', u'name:en': u'Toshima', u'place': u'city', u'population': u'298562', u'wikidata': u'Q236680'}), + dsl.way(36, wkt_loads('POINT (139.744732 35.71881)'), {u'id': u'664479961', u'name': u'文京区', u'name:en': u'Bunkyo', u'place': u'city', u'population': u'227902', u'wikidata': u'Q212713'}), + dsl.way(37, wkt_loads('POINT (139.565203 35.793443)'), {u'id': u'671141124', u'name': u'新座市', u'name:en': u'Niiza', u'place': u'city', u'population': u'164024', u'wikidata': u'Q386691'}), + dsl.way(38, wkt_loads('POINT (139.59305 35.977408)'), {u'id': u'671141125', u'name': u'上尾市', u'name:en': u'Ageo', u'place': u'city', u'population': u'227127', u'wikidata': u'Q163888'}), + dsl.way(39, wkt_loads('POINT (139.967242 36.184355)'), {u'id': u'674922239', u'name': u'下妻市', u'name:en': u'Shimotsuma', u'place': u'city', u'population': u'42635', u'wikidata': u'Q533241'}), + dsl.way(40, wkt_loads('POINT (137.70371599999999 35.786805)'), {u'id': u'702987312', u'name': u'上松町', u'name:en': u'Agematsu', u'place': u'town', u'population': u'4670', u'wikidata': u'Q374859'}), + dsl.way(41, wkt_loads('POINT (137.816191 35.323388)'), {u'id': u'702987314', u'name': u'阿南町', u'name:en': u'Anan', u'place': u'town', u'population': u'4962', u'wikidata': u'Q1203314'}), + dsl.way(42, wkt_loads('POINT (137.850889 36.502909)'), {u'id': u'702987319', u'name': u'大町市', u'name:en': u'Omachi', u'place': u'city', u'population': u'27203', u'wikidata': u'Q385375'}), + dsl.way(43, wkt_loads('POINT (137.954916 35.830452)'), {u'id': u'702987327', u'name': u'伊那市', u'name:en': u'Ina', u'place': u'city', u'population': u'67077', u'wikidata': u'Q840888'}), + dsl.way(44, wkt_loads('POINT (137.878361 35.55155)'), {u'id': u'702987329', u'name': u'高森町', u'name:en': u'Takamori', u'place': u'town', u'population': u'13080', u'wikidata': u'Q1203136'}), + dsl.way(45, wkt_loads('POINT (137.821952 35.51471)'), {u'id': u'702987331', u'name': u'飯田市', u'name:en': u'Iida', u'place': u'city', u'population': u'99350', u'wikidata': u'Q841129'}), + dsl.way(46, wkt_loads('POINT (137.938925 35.729671)'), {u'id': u'702987332', u'name': u'駒ヶ根市', u'name:en': u'Komagane', u'place': u'city', u'population': u'32321', u'wikidata': u'Q838684'}), + dsl.way(47, wkt_loads('POINT (137.909743 35.597496)'), {u'id': u'702987333', u'name': u'松川町', u'name:en': u'Matsukawa', u'place': u'town', u'population': u'13167', u'wikidata': u'Q222825'}), + dsl.way(48, wkt_loads('POINT (137.905921 35.680007)'), {u'id': u'702987335', u'name': u'飯島町', u'name:en': u'Iijima', u'place': u'town', u'population': u'9530', u'wikidata': u'Q522462'}), + dsl.way(49, wkt_loads('POINT (137.980492 35.916221)'), {u'id': u'702987342', u'name': u'箕輪町', u'name:en': u'Minowa', u'place': u'town', u'population': u'25241', u'wikidata': u'Q1346975'}), + dsl.way(50, wkt_loads('POINT (137.924649 35.973252)'), {u'id': u'702987343', u'name': u'辰野町', u'name:en': u'Tatsuno', u'place': u'town', u'population': u'19770', u'wikidata': u'Q1347504'}), + dsl.way(51, wkt_loads('POINT (138.117682 36.116594)'), {u'id': u'702987346', u'name': u'下諏訪町', u'name:en': u'Shimosuwa', u'place': u'town', u'population': u'20236', u'wikidata': u'Q1204211'}), + dsl.way(52, wkt_loads('POINT (138.049549 36.07853)'), {u'id': u'702987348', u'name': u'岡谷市', u'name:en': u'Okaya', u'place': u'city', u'population': u'50128', u'wikidata': u'Q838672'}), + dsl.way(53, wkt_loads('POINT (137.952801 36.124957)'), {u'id': u'702987349', u'name': u'塩尻市', u'name:en': u'Shiojiri', u'place': u'city', u'population': u'66979', u'wikidata': u'Q857272'}), + dsl.way(54, wkt_loads('POINT (138.114118 36.03209)'), {u'id': u'702987350', u'name': u'諏訪市', u'name:en': u'Suwa', u'place': u'city', u'population': u'50140', u'wikidata': u'Q846338'}), + dsl.way(55, wkt_loads('POINT (138.031902 36.114395)'), {u'id': u'702987351', u'name': u'長野県', u'name:en': u'Nagano Prefecture', u'place': u'province', u'wikidata': u'Q127877'}), + dsl.way(56, wkt_loads('POINT (138.157854 35.98562)'), {u'id': u'702987356', u'name': u'茅野市', u'name:en': u'Chino', u'place': u'city', u'population': u'55646', u'wikidata': u'Q838660'}), + dsl.way(57, wkt_loads('POINT (138.20262 35.908326)'), {u'id': u'702987357', u'name': u'富士見町', u'name:en': u'Fujimi', u'place': u'town', u'population': u'14493', u'wikidata': u'Q1204145'}), + dsl.way(58, wkt_loads('POINT (138.48351 36.160367)'), {u'id': u'702987361', u'name': u'佐久穂町', u'name:en': u'Sakuho', u'place': u'town', u'population': u'11186', u'wikidata': u'Q1203700'}), + dsl.way(59, wkt_loads('POINT (138.214356 36.187804)'), {u'id': u'702987362', u'name': u'長和町', u'name:en': u'Nagawa', u'place': u'town', u'population': u'6166', u'wikidata': u'Q1346846'}), + dsl.way(60, wkt_loads('POINT (138.485497 36.079973)'), {u'id': u'702987363', u'name': u'小海町', u'name:en': u'Koumi', u'place': u'town', u'population': u'4713', u'wikidata': u'Q1204222'}), + dsl.way(61, wkt_loads('POINT (137.905497 36.304408)'), {u'id': u'702987365', u'name': u'安曇野市', u'name:en': u'Azumino', u'place': u'city', u'population': u'94871', u'wikidata': u'Q534667'}), + dsl.way(62, wkt_loads('POINT (137.87459 36.421327)'), {u'id': u'702987373', u'name': u'池田町', u'name:en': u'Ikeda', u'place': u'town', u'population': u'9926', u'wikidata': u'Q1204048'}), + dsl.way(63, wkt_loads('POINT (139.681209 35.774143)'), {u'id': u'714895390', u'name': u'板橋区', u'name:en': u'Itabashi', u'place': u'city', u'population': u'575432', u'wikidata': u'Q232635'}), + dsl.way(64, wkt_loads('POINT (139.636288 35.699493)'), {u'id': u'718383251', u'name': u'杉並区', u'name:en': u'Suginami', u'place': u'city', u'population': u'540180', u'wikidata': u'Q232631'}), + dsl.way(65, wkt_loads('POINT (139.805017 35.700429)'), {u'id': u'721772119', u'name': u'墨田区', u'name:en': u'Sumida', u'place': u'city', u'population': u'263484', u'wikidata': u'Q235135'}), + dsl.way(66, wkt_loads('POINT (139.871091 35.678278)'), {u'id': u'721783580', u'name': u'江戸川区', u'name:en': u'Edogawa', u'place': u'city', u'population': u'691417', u'wikidata': u'Q214056'}), + dsl.way(67, wkt_loads('POINT (139.863816 35.751733)'), {u'id': u'721783585', u'name': u'葛飾区', u'name:en': u'Katsushika', u'place': u'city', u'population': u'451483', u'wikidata': u'Q232628'}), + dsl.way(68, wkt_loads('POINT (139.81279 35.649154)'), {u'admin_leve': u'7', u'id': u'721916368', u'name': u'江東区', u'name:en': u'Koto', u'place': u'city', u'population': u'509438', u'wikidata': u'Q215175'}), + dsl.way(69, wkt_loads('POINT (139.736687 35.755838)'), {u'id': u'722053207', u'name': u'北区', u'name:en': u'Kita', u'place': u'city', u'population': u'349573', u'wikidata': u'Q235130'}), + dsl.way(70, wkt_loads('POINT (140.303574 35.972278)'), {u'id': u'734950653', u'name': u'稲敷市', u'name:en': u'Inashiki', u'place': u'city', u'population': u'41392', u'wikidata': u'Q838675'}), + dsl.way(71, wkt_loads('POINT (140.471393 36.365779)'), {u'capital': u'4', u'id': u'736355846', u'name': u'水戸市', u'name:en': u'Mito', u'place': u'city', u'population': u'270775', u'wikidata': u'Q204249'}), + dsl.way(72, wkt_loads('POINT (140.304226 36.345224)'), {u'id': u'737237199', u'name': u'笠間市', u'name:en': u'Kasama', u'place': u'city', u'population': u'75698', u'wikidata': u'Q845851'}), + dsl.way(73, wkt_loads('POINT (140.352368 36.238976)'), {u'id': u'737237574', u'name': u'小美玉市', u'name:en': u'Omitama', u'place': u'city', u'population': u'50180', u'wikidata': u'Q430584'}), + dsl.way(74, wkt_loads('POINT (140.287431 36.190599)'), {u'id': u'738650161', u'name': u'石岡市', u'name:en': u'Ishioka', u'place': u'city', u'population': u'74184', u'wikidata': u'Q819658'}), + dsl.way(75, wkt_loads('POINT (140.487177 36.457227)'), {u'id': u'742470966', u'name': u'那珂市', u'name:en': u'Naka', u'place': u'city', u'population': u'53897', u'wikidata': u'Q633647'}), + dsl.way(76, wkt_loads('POINT (140.204593 36.07863)'), {u'id': u'750504981', u'name': u'土浦市', u'name:en': u'Tsuchiura', u'place': u'city', u'population': u'139261', u'wikidata': u'Q653446'}), + dsl.way(77, wkt_loads('POINT (140.53534 36.396124)'), {u'id': u'752603189', u'name': u'ひたちなか市', u'name:en': u'Hitachinaka', u'place': u'city', u'population': u'155970', u'wikidata': u'Q696772'}), + dsl.way(78, wkt_loads('POINT (140.424093 36.287119)'), {u'id': u'760258942', u'name': u'茨城町', u'name:en': u'Ibaraki', u'place': u'town', u'population': u'32921', u'wikidata': u'Q1203390'}), + dsl.way(79, wkt_loads('POINT (140.574722 36.313338)'), {u'id': u'760279839', u'name': u'大洗町', u'name:en': u'Oarai', u'place': u'town', u'population': u'16886', u'wikidata': u'Q1349185'}), + dsl.way(80, wkt_loads('POINT (140.530839 36.537302)'), {u'id': u'761127819', u'name': u'常陸太田市', u'name:en': u'Hitachiota', u'place': u'city', u'population': u'50728', u'wikidata': u'Q838663'}), + dsl.way(81, wkt_loads('POINT (140.376047 36.479676)'), {u'id': u'761151452', u'name': u'城里町', u'name:en': u'Shirosato', u'place': u'town', u'population': u'19800', u'wikidata': u'Q1203068'}), + dsl.way(82, wkt_loads('POINT (138.087355 34.756264)'), {u'id': u'763099410', u'name': u'菊川市', u'name:en': u'Kikugawa', u'place': u'city', u'population': u'46849', u'wikidata': u'Q726565'}), + dsl.way(83, wkt_loads('POINT (138.30381 34.830312)'), {u'id': u'763099666', u'name': u'焼津市', u'name:en': u'Yaizu', u'place': u'city', u'population': u'137453', u'wikidata': u'Q696783'}), + dsl.way(84, wkt_loads('POINT (138.257722 34.867417)'), {u'id': u'763099670', u'name': u'藤枝市', u'name:en': u'Fujieda', u'place': u'city', u'population': u'143227', u'wikidata': u'Q734432'}), + dsl.way(85, wkt_loads('POINT (138.948903 35.147361)'), {u'id': u'763099675', u'name': u'三島市', u'name:en': u'Mishima', u'place': u'city', u'population': u'109515', u'wikidata': u'Q653478'}), + dsl.way(86, wkt_loads('POINT (138.146599 34.879912)'), {u'id': u'763099677', u'name': u'島田市', u'name:en': u'Shimada', u'place': u'city', u'population': u'96478', u'wikidata': u'Q605256'}), + dsl.way(87, wkt_loads('POINT (138.866742 35.094699)'), {u'id': u'763099680', u'name': u'沼津市', u'name:en': u'Numazu', u'place': u'city', u'population': u'195633', u'wikidata': u'Q241037'}), + dsl.way(88, wkt_loads('POINT (138.621468 35.222137)'), {u'id': u'763118286', u'name': u'富士宮市', u'name:en': u'Fujinomiya', u'place': u'city', u'population': u'129951', u'wikidata': u'Q496072'}), + dsl.way(89, wkt_loads('POINT (137.725943 34.710979)'), {u'id': u'763118297', u'name': u'浜松市', u'name:en': u'Hamamatsu', u'place': u'city', u'population': u'797033', u'wikidata': u'Q185125'}), + dsl.way(90, wkt_loads('POINT (138.676386 35.161852)'), {u'id': u'763118309', u'name': u'富士市', u'name:en': u'Fuji', u'place': u'city', u'population': u'253273', u'wikidata': u'Q328613'}), + dsl.way(91, wkt_loads('POINT (138.38299 34.979149)'), {u'capital': u'4', u'id': u'763118317', u'name': u'静岡市', u'name:en': u'Shizuoka', u'place': u'city', u'population': u'706287', u'wikidata': u'Q174691'}), + dsl.way(92, wkt_loads('POINT (140.07651 36.083388)'), {u'id': u'768273008', u'name': u'つくば市', u'name:en': u'Tsukuba', u'place': u'city', u'population': u'234455', u'wikidata': u'Q273863'}), + dsl.way(93, wkt_loads('POINT (139.476606 35.72522)'), {u'id': u'771323155', u'name': u'小平市', u'name:en': u'Kodaira', u'place': u'city', u'population': u'191406', u'wikidata': u'Q213278'}), + dsl.way(94, wkt_loads('POINT (140.237087 36.151737)'), {u'id': u'775480576', u'name': u'かすみがうら市', u'name:en': u'Kasumigaura', u'place': u'city', u'population': u'41297', u'wikidata': u'Q772817'}), + dsl.way(95, wkt_loads('POINT (139.522106 36.065758)'), {u'id': u'820097446', u'name': u'鴻巣市', u'name:en': u'Konosu', u'place': u'city', u'population': u'117883', u'wikidata': u'Q734541'}), + dsl.way(96, wkt_loads('POINT (139.603225 36.130857)'), {u'id': u'820110092', u'name': u'加須市', u'name:en': u'Kazo', u'place': u'city', u'population': u'111572', u'wikidata': u'Q851680'}), + dsl.way(97, wkt_loads('POINT (139.541356 36.002152)'), {u'id': u'820134979', u'name': u'桶川市', u'name:en': u'Okegawa', u'place': u'city', u'population': u'74186', u'wikidata': u'Q570333'}), + dsl.way(98, wkt_loads('POINT (139.530139 36.026871)'), {u'id': u'820134983', u'name': u'北本市', u'name:en': u'Kitamoto', u'place': u'city', u'population': u'66339', u'wikidata': u'Q857285'}), + dsl.way(99, wkt_loads('POINT (139.2817 36.197402)'), {u'id': u'820591253', u'name': u'深谷市', u'name:en': u'Fukaya', u'place': u'city', u'population': u'142996', u'wikidata': u'Q734532'}), + dsl.way(100, wkt_loads('POINT (139.191628 36.243594)'), {u'id': u'820591261', u'name': u'本庄市', u'name:en': u'Honjo', u'place': u'city', u'population': u'77881', u'wikidata': u'Q873565'}), + dsl.way(101, wkt_loads('POINT (139.399796 36.042152)'), {u'id': u'820603381', u'name': u'東松山市', u'name:en': u'Higashimatsuyama', u'place': u'city', u'population': u'92125', u'wikidata': u'Q823907'}), + dsl.way(102, wkt_loads('POINT (139.872225 35.830091)'), {u'id': u'854693636', u'name': u'三郷市', u'name:en': u'Misato', u'place': u'city', u'population': u'139903', u'wikidata': u'Q853061'}), + dsl.way(103, wkt_loads('POINT (139.453534 36.039842)'), {u'id': u'863420607', u'name': u'吉見町', u'name:en': u'Yoshimi', u'place': u'town', u'population': u'19631', u'wikidata': u'Q543313'}), + dsl.way(104, wkt_loads('POINT (139.192778 36.118274)'), {u'id': u'863425361', u'name': u'寄居町', u'name:en': u'Yorii Town', u'place': u'town', u'population': u'34081', u'wikidata': u'Q961604'}), + dsl.way(105, wkt_loads('POINT (139.109648 36.114676)'), {u'id': u'863429893', u'name': u'長瀞町', u'name:en': u'Nagatoro', u'place': u'town', u'population': u'7324', u'wikidata': u'Q1345299'}), + dsl.way(106, wkt_loads('POINT (139.26285 36.057154)'), {u'id': u'863433506', u'name': u'小川町', u'name:en': u'Ogawa', u'place': u'town', u'population': u'31178', u'wikidata': u'Q935037'}), + dsl.way(107, wkt_loads('POINT (139.320248 36.056417)'), {u'id': u'863443078', u'name': u'嵐山町', u'name:en': u'Ranzan', u'place': u'town', u'population': u'18341', u'wikidata': u'Q1358642'}), + dsl.way(108, wkt_loads('POINT (139.181679 36.177163)'), {u'id': u'863449326', u'name': u'美里町', u'name:en': u'Misato', u'place': u'town', u'population': u'11207', u'wikidata': u'Q924129'}), + dsl.way(109, wkt_loads('POINT (139.361022 36.067122)'), {u'id': u'863457603', u'name': u'滑川町', u'name:en': u'Namegawa', u'place': u'town', u'population': u'18212', u'wikidata': u'Q1346985'}), + dsl.way(110, wkt_loads('POINT (139.144691 36.251548)'), {u'id': u'863460004', u'name': u'上里町', u'name:en': u'Kamisato', u'place': u'town', u'population': u'30565', u'wikidata': u'Q1345287'}), + dsl.way(111, wkt_loads('POINT (139.101903 36.213474)'), {u'id': u'863466502', u'name': u'神川町', u'name:en': u'Kamikawa', u'place': u'town', u'population': u'13730', u'wikidata': u'Q1346757'}), + dsl.way(112, wkt_loads('POINT (139.098645 36.070827)'), {u'id': u'863476103', u'name': u'皆野町', u'name:en': u'Minano', u'place': u'town', u'population': u'10133', u'wikidata': u'Q1345365'}), + dsl.way(113, wkt_loads('POINT (139.008513 36.017118)'), {u'id': u'863479149', u'name': u'小鹿野町', u'name:en': u'Ogano', u'place': u'town', u'population': u'12117', u'wikidata': u'Q1345311'}), + dsl.way(114, wkt_loads('POINT (139.1 35.987323)'), {u'id': u'863493320', u'name': u'横瀬町', u'name:en': u'Yokoze', u'place': u'town', u'population': u'8519', u'wikidata': u'Q1345277'}), + dsl.way(115, wkt_loads('POINT (139.296697 36.008531)'), {u'id': u'863522250', u'name': u'ときがわ町', u'name:en': u'Tokigawa', u'place': u'town', u'population': u'11492', u'wikidata': u'Q251027'}), + dsl.way(116, wkt_loads('POINT (139.294131 35.964506)'), {u'id': u'863522262', u'name': u'越生町', u'name:en': u'Ogose', u'place': u'town', u'population': u'11716', u'wikidata': u'Q783333'}), + dsl.way(117, wkt_loads('POINT (139.334087 35.981517)'), {u'id': u'863556895', u'name': u'鳩山町', u'name:en': u'Hatoyama', u'place': u'town', u'population': u'14338', u'wikidata': u'Q925875'}), + dsl.way(118, wkt_loads('POINT (139.484081 35.992441)'), {u'id': u'863580022', u'name': u'川島町', u'name:en': u'Kawajima', u'place': u'town', u'population': u'20788', u'wikidata': u'Q1203970'}), + dsl.way(119, wkt_loads('POINT (139.316039 35.941569)'), {u'id': u'863587414', u'name': u'毛呂山町', u'name:en': u'Moroyama', u'place': u'town', u'population': u'37275', u'wikidata': u'Q1354799'}), + dsl.way(120, wkt_loads('POINT (139.392974 35.934681)'), {u'id': u'863601289', u'name': u'鶴ヶ島市', u'name:en': u'Tsurugashima', u'place': u'city', u'population': u'70255', u'wikidata': u'Q869027'}), + dsl.way(121, wkt_loads('POINT (139.4123 35.852897)'), {u'id': u'863611983', u'name': u'狭山市', u'name:en': u'Sayama', u'place': u'city', u'population': u'152405', u'wikidata': u'Q824009'}), + dsl.way(122, wkt_loads('POINT (139.468748 35.799427)'), {u'id': u'863622554', u'name': u'所沢市', u'name:en': u'Tokorozawa', u'place': u'city', u'population': u'341091', u'wikidata': u'Q165857'}), + dsl.way(123, wkt_loads('POINT (139.390929 35.835814)'), {u'id': u'863647764', u'name': u'入間市', u'name:en': u'Iruma', u'place': u'city', u'population': u'147430', u'wikidata': u'Q696925'}), + dsl.way(124, wkt_loads('POINT (139.519616 35.879548)'), {u'id': u'863664907', u'name': u'ふじみ野市', u'name:en': u'Fujimino', u'place': u'city', u'population': u'114218', u'wikidata': u'Q873590'}), + dsl.way(125, wkt_loads('POINT (139.526484 35.828071)'), {u'id': u'863670473', u'name': u'三芳町', u'name:en': u'Miyoshi', u'place': u'town', u'population': u'38456'}), + dsl.way(126, wkt_loads('POINT (139.549073 35.856555)'), {u'id': u'863670497', u'name': u'富士見市', u'name:en': u'Fujimi', u'place': u'city', u'population': u'108102', u'wikidata': u'Q495809'}), + dsl.way(127, wkt_loads('POINT (139.580035 35.836519)'), {u'id': u'863684931', u'name': u'志木市', u'name:en': u'Shiki', u'place': u'city', u'population': u'72676', u'wikidata': u'Q877202'}), + dsl.way(128, wkt_loads('POINT (139.725409 36.077883)'), {u'id': u'864242320', u'name': u'幸手市', u'name:en': u'Satte', u'place': u'city', u'population': u'51797', u'wikidata': u'Q868971'}), + dsl.way(129, wkt_loads('POINT (139.736745 36.025848)'), {u'id': u'864242816', u'name': u'杉戸町', u'name:en': u'Sugito', u'place': u'town', u'population': u'45495', u'wikidata': u'Q1345351'}), + dsl.way(130, wkt_loads('POINT (139.722628 36.022709)'), {u'id': u'864242817', u'name': u'宮代町', u'name:en': u'Miyashiro', u'place': u'town', u'population': u'33930', u'wikidata': u'Q155317'}), + dsl.way(131, wkt_loads('POINT (139.752019 35.975796)'), {u'id': u'864248665', u'name': u'春日部市', u'name:en': u'Kasukabe', u'place': u'city', u'population': u'232709', u'wikidata': u'Q376023'}), + dsl.way(132, wkt_loads('POINT (139.663255 35.994092)'), {u'id': u'864248673', u'name': u'蓮田市', u'name:en': u'Hasuda', u'place': u'city', u'population': u'62063', u'wikidata': u'Q857256'}), + dsl.way(133, wkt_loads('POINT (139.815881 35.926196)'), {u'id': u'864248683', u'name': u'松伏町', u'name:en': u'Matsubushi', u'place': u'town', u'population': u'30061', u'wikidata': u'Q1346963'}), + dsl.way(134, wkt_loads('POINT (139.854504 35.896283)'), {u'id': u'864255936', u'name': u'吉川市', u'name:en': u'Yoshikawa', u'place': u'city', u'population': u'71063', u'wikidata': u'Q873546'}), + dsl.way(135, wkt_loads('POINT (139.806178 35.826223)'), {u'id': u'864255937', u'name': u'草加市', u'name:en': u'Soka', u'place': u'city', u'population': u'249455', u'wikidata': u'Q734442'}), + dsl.way(136, wkt_loads('POINT (139.838687 35.82264)'), {u'id': u'864255938', u'name': u'八潮市', u'name:en': u'Yashio', u'place': u'city', u'population': u'90017', u'wikidata': u'Q869032'}), + dsl.way(137, wkt_loads('POINT (139.790863 35.890399)'), {u'id': u'864255939', u'name': u'越谷市', u'name:en': u'Koshigaya', u'place': u'city', u'population': u'342486', u'wikidata': u'Q497952'}), + dsl.way(138, wkt_loads('POINT (139.724105 35.807823)'), {u'id': u'864262454', u'name': u'川口市', u'name:en': u'Kawaguchi', u'place': u'city', u'population': u'578112', u'wikidata': u'Q387136'}), + dsl.way(139, wkt_loads('POINT (139.677894 35.817587)'), {u'id': u'864262458', u'name': u'戸田市', u'name:en': u'Toda', u'place': u'city', u'population': u'136150', u'wikidata': u'Q823874'}), + dsl.way(140, wkt_loads('POINT (139.679763 35.82564)'), {u'id': u'864262459', u'name': u'蕨市', u'name:en': u'Warabi', u'place': u'city', u'population': u'72260', u'wikidata': u'Q673010'}), + dsl.way(141, wkt_loads('POINT (139.624088 36.000132)'), {u'id': u'864266122', u'name': u'伊奈町', u'name:en': u'Ina', u'place': u'town', u'population': u'44442', u'wikidata': u'Q915773'}), + dsl.way(142, wkt_loads('POINT (139.790859 35.71745)'), {u'id': u'1042491447', u'name': u'台東区', u'name:en': u'Taito', u'place': u'city', u'population': u'203893', u'wikidata': u'Q232641'}), + dsl.way(143, wkt_loads('POINT (139.753216 35.69381)'), {u'id': u'1042516435', u'name': u'千代田区', u'name:en': u'Chiyoda', u'place': u'city', u'population': u'46397', u'wikidata': u'Q214051'}), + dsl.way(144, wkt_loads('POINT (139.350065 35.70248)'), {u'id': u'1054320920', u'name': u'昭島市', u'name:en': u'Akishima', u'place': u'city', u'population': u'111482', u'wikidata': u'Q212494'}), + dsl.way(145, wkt_loads('POINT (139.443146 36.217976)'), {u'id': u'1068823539', u'name': u'千代田町', u'name:en': u'Chiyoda', u'place': u'town', u'population': u'11318', u'wikidata': u'Q1023773'}), + dsl.way(146, wkt_loads('POINT (138.820495 36.571536)'), {u'id': u'1068823547', u'name': u'東吾妻町', u'name:en': u'Higashiagatsuma', u'place': u'town', u'population': u'14033', u'wikidata': u'Q1203419'}), + dsl.way(147, wkt_loads('POINT (139.074502 36.258633)'), {u'id': u'1068823554', u'name': u'藤岡市', u'name:en': u'Fujioka', u'place': u'city', u'population': u'64679', u'wikidata': u'Q596486'}), + dsl.way(148, wkt_loads('POINT (139.115025 36.304424)'), {u'id': u'1068823567', u'name': u'玉村町', u'name:en': u'Tamamura', u'place': u'town', u'population': u'36654', u'wikidata': u'Q1203600'}), + dsl.way(149, wkt_loads('POINT (138.840906 36.589891)'), {u'id': u'1068823586', u'name': u'中之条町', u'name:en': u'Nakanojo', u'place': u'town', u'population': u'16850', u'wikidata': u'Q967920'}), + dsl.way(150, wkt_loads('POINT (138.889979 36.259827)'), {u'id': u'1068823595', u'name': u'富岡市', u'name:en': u'Tomioka', u'place': u'city', u'population': u'48799', u'wikidata': u'Q873835'}), + dsl.way(151, wkt_loads('POINT (139.033483 36.52198)'), {u'id': u'1068823601', u'name': u'群馬県', u'name:en': u'Gunma Prefecture', u'place': u'province'}), + dsl.way(152, wkt_loads('POINT (139.281093 36.394802)'), {u'id': u'1068823637', u'name': u'みどり市', u'name:en': u'Midori', u'place': u'city', u'population': u'50680', u'wikidata': u'Q576556'}), + dsl.way(153, wkt_loads('POINT (139.000129 36.489461)'), {u'id': u'1068823640', u'name': u'渋川市', u'name:en': u'Shibukawa', u'place': u'city', u'population': u'76552', u'wikidata': u'Q851492'}), + dsl.way(154, wkt_loads('POINT (138.789044 36.212527)'), {u'id': u'1068823641', u'name': u'下仁田町', u'name:en': u'Shimonita', u'place': u'town', u'population': u'7564', u'wikidata': u'Q1346871'}), + dsl.way(155, wkt_loads('POINT (139.009713 36.447388)'), {u'id': u'1068823645', u'name': u'吉岡町', u'name:en': u'Yoshioka', u'place': u'town', u'population': u'21080', u'wikidata': u'Q1154580'}), + dsl.way(156, wkt_loads('POINT (139.331021 36.40553)'), {u'id': u'1068823646', u'name': u'桐生市', u'name:en': u'Kiryu', u'place': u'city', u'population': u'111554', u'wikidata': u'Q634022'}), + dsl.way(157, wkt_loads('POINT (138.921632 36.242863)'), {u'id': u'1068823647', u'name': u'甘楽町', u'name:en': u'Kanra', u'place': u'town', u'population': u'13200', u'wikidata': u'Q1203523'}), + dsl.way(158, wkt_loads('POINT (138.916716 36.116)'), {u'id': u'1068823648', u'name': u'神流町', u'name:en': u'Kanna', u'place': u'town', u'population': u'1954', u'wikidata': u'Q1203059'}), + dsl.way(159, wkt_loads('POINT (139.003276 36.322098)'), {u'id': u'1068823649', u'name': u'高崎市', u'name:en': u'Takasaki', u'place': u'city', u'population': u'370176', u'wikidata': u'Q336438'}), + dsl.way(160, wkt_loads('POINT (138.64996 36.543771)'), {u'id': u'1068823654', u'name': u'長野原町', u'name:en': u'Naganohara', u'place': u'town', u'population': u'5536', u'wikidata': u'Q1203366'}), + dsl.way(161, wkt_loads('POINT (139.375423 36.291156)'), {u'id': u'1068823657', u'name': u'太田市', u'name:en': u'Ota', u'place': u'city', u'population': u'221403', u'wikidata': u'Q386179'}), + dsl.way(162, wkt_loads('POINT (138.596085 36.620667)'), {u'id': u'1068823658', u'name': u'草津町', u'name:en': u'Kusatsu', u'place': u'town', u'population': u'6518', u'wikidata': u'Q1358949'}), + dsl.way(163, wkt_loads('POINT (139.416011 35.975417)'), {u'admin_leve': u'4', u'id': u'1068823662', u'name': u'埼玉県', u'name:en': u'Saitama Prefecture', u'place': u'province'}), + dsl.way(164, wkt_loads('POINT (139.405421 36.247743)'), {u'id': u'1068823675', u'name': u'大泉町', u'name:en': u'Oizumi', u'place': u'town', u'population': u'41202', u'wikidata': u'Q385080'}), + dsl.way(165, wkt_loads('POINT (139.196808 36.311173)'), {u'id': u'1068823679', u'name': u'伊勢崎市', u'name:en': u'Isesaki', u'place': u'city', u'population': u'209895', u'wikidata': u'Q328596'}), + dsl.way(166, wkt_loads('POINT (140.181878 35.911316)'), {u'id': u'1079080827', u'name': u'龍ケ崎市', u'name:en': u'Ryugasaki', u'place': u'city', u'population': u'77433', u'wikidata': u'Q844138'}), + dsl.way(167, wkt_loads('POINT (140.058324 36.548274)'), {u'id': u'1108891166', u'name': u'芳賀町', u'name:en': u'Haga', u'place': u'town', u'population': u'15189', u'wikidata': u'Q1203553'}), + dsl.way(168, wkt_loads('POINT (139.733591 36.381818)'), {u'id': u'1108891177', u'name': u'栃木市', u'name:en': u'Tochigi', u'place': u'city', u'population': u'157645', u'wikidata': u'Q44830'}), + dsl.way(169, wkt_loads('POINT (139.804607 36.427353)'), {u'id': u'1108891188', u'name': u'壬生町', u'name:en': u'Mibu', u'place': u'town', u'population': u'39951', u'wikidata': u'Q1354910'}), + dsl.way(170, wkt_loads('POINT (139.882878 36.554968)'), {u'capital': u'4', u'id': u'1108891208', u'name': u'宇都宮市', u'name:en': u'Utsunomiya', u'place': u'city', u'population': u'518594', u'wikidata': u'Q200589'}), + dsl.way(171, wkt_loads('POINT (139.740778 36.23313)'), {u'id': u'1108891226', u'name': u'野木町', u'name:en': u'Nogi', u'place': u'town', u'population': u'25292', u'wikidata': u'Q1203180'}), + dsl.way(172, wkt_loads('POINT (139.909834 36.439316)'), {u'id': u'1108891240', u'name': u'上三川町', u'name:en': u'Kaminokawa', u'place': u'town', u'population': u'31046', u'wikidata': u'Q1345604'}), + dsl.way(173, wkt_loads('POINT (139.449773 36.340191)'), {u'id': u'1108891308', u'name': u'足利市', u'name:en': u'Ashikaga', u'place': u'city', u'population': u'147699', u'wikidata': u'Q374477'}), + dsl.way(174, wkt_loads('POINT (140.093597 36.46735)'), {u'id': u'1108891330', u'name': u'益子町', u'name:en': u'Mashiko', u'place': u'town', u'population': u'23281', u'wikidata': u'Q1346925'}), + dsl.way(175, wkt_loads('POINT (140.013158 36.440445)'), {u'id': u'1108891341', u'name': u'真岡市', u'name:en': u'Mooka', u'place': u'city', u'population': u'79548', u'wikidata': u'Q498060'}), + dsl.way(176, wkt_loads('POINT (140.187406 36.532164)'), {u'id': u'1108891343', u'name': u'茂木町', u'name:en': u'Motegi', u'place': u'town', u'population': u'13188', u'wikidata': u'Q644327'}), + dsl.way(177, wkt_loads('POINT (140.102152 36.543254)'), {u'id': u'1108891361', u'name': u'市貝町', u'name:en': u'Ichikai', u'place': u'town', u'population': u'11720', u'wikidata': u'Q577654'}), + dsl.way(178, wkt_loads('POINT (139.578429 36.314412)'), {u'id': u'1108891363', u'name': u'佐野市', u'name:en': u'Sano', u'place': u'city', u'population': u'117521', u'wikidata': u'Q646912'}), + dsl.way(179, wkt_loads('POINT (139.800148 36.314737)'), {u'id': u'1108891371', u'name': u'小山市', u'name:en': u'Oyama', u'place': u'city', u'population': u'167535', u'wikidata': u'Q374511'}), + dsl.way(180, wkt_loads('POINT (139.775565 35.666255)'), {u'admin_leve': u'7', u'id': u'1111454595', u'name': u'中央区', u'name:en': u'Chuo', u'place': u'city', u'population': u'158508', u'wikidata': u'Q212704'}), + dsl.way(181, wkt_loads('POINT (139.78131 35.737529)'), {u'id': u'1111454600', u'name': u'荒川区', u'name:en': u'Arakawa', u'place': u'city', u'population': u'216232', u'wikidata': u'Q232624'}), + dsl.way(182, wkt_loads('POINT (139.715843 35.561206)'), {u'id': u'1111454606', u'name': u'大田区', u'name:en': u'Ota', u'place': u'city', u'population': u'728349', u'wikidata': u'Q217234'}), + dsl.way(183, wkt_loads('POINT (139.795319 35.783703)'), {u'id': u'1111454619', u'name': u'足立区', u'name:en': u'Adachi', u'place': u'city', u'population': u'676761', u'wikidata': u'Q213464'}), + dsl.way(184, wkt_loads('POINT (139.740055 35.643227)'), {u'admin_leve': u'7', u'id': u'1111454640', u'name': u'港区', u'name:en': u'Minato', u'place': u'city', u'population': u'254699', u'wikidata': u'Q190088'}), + dsl.way(185, wkt_loads('POINT (139.65627 35.646096)'), {u'admin_leve': u'8', u'id': u'1111454647', u'name': u'世田谷区', u'name:en': u'Setagaya', u'place': u'city', u'population': u'860071', u'wikidata': u'Q231645'}), + dsl.way(186, wkt_loads('POINT (139.73891 35.599252)'), {u'admin_leve': u'7', u'id': u'1111454665', u'name': u'品川区', u'name:en': u'Shinagawa', u'place': u'city', u'population': u'396993', u'wikidata': u'Q233495'}), + dsl.way(187, wkt_loads('POINT (140.213603 36.030794)'), {u'id': u'1125034214', u'name': u'阿見町', u'name:en': u'Ami', u'place': u'town', u'population': u'47535', u'wikidata': u'Q1203814'}), + dsl.way(188, wkt_loads('POINT (140.65046 36.599123)'), {u'admin_leve': u'7', u'id': u'1211787259', u'name': u'日立市', u'name:en': u'Hitachi', u'place': u'city', u'population': u'189958', u'wikidata': u'Q633922'}), + dsl.way(189, wkt_loads('POINT (138.260561 34.773784)'), {u'id': u'1407195635', u'name': u'吉田町', u'name:en': u'Yoshida', u'place': u'town', u'population': u'29093', u'wikidata': u'Q1202789'}), + dsl.way(190, wkt_loads('POINT (138.104479 35.163515)'), {u'id': u'1407195637', u'name': u'川根本町', u'name:en': u'Kawanehoncho', u'place': u'town', u'population': u'7192', u'wikidata': u'Q1204025'}), + dsl.way(191, wkt_loads('POINT (139.755364 36.178025)'), {u'id': u'1419245750', u'name': u'古河市', u'name:en': u'Koga', u'place': u'city', u'population': u'140150', u'wikidata': u'Q836836'}), + dsl.way(192, wkt_loads('POINT (139.993871 36.023569)'), {u'id': u'1429506750', u'name': u'常総市', u'name:en': u'Joso', u'place': u'city', u'population': u'60829', u'wikidata': u'Q851149'}), + dsl.way(193, wkt_loads('POINT (139.698711 35.664596)'), {u'id': u'1438867377', u'name': u'渋谷区', u'name:en': u'Shibuya', u'place': u'city', u'population': u'230707', u'wikidata': u'Q193638'}), + dsl.way(194, wkt_loads('POINT (139.404766 35.724463)'), {u'id': u'1440311172', u'name': u'立川市', u'name:en': u'Tachikawa', u'place': u'city', u'population': u'179575', u'wikidata': u'Q269634'}), + dsl.way(195, wkt_loads('POINT (139.238128 35.803601)'), {u'id': u'1440354068', u'name': u'青梅市', u'name:en': u'Ome', u'place': u'city', u'population': u'136581', u'wikidata': u'Q237683'}), + dsl.way(196, wkt_loads('POINT (140.470338 36.286954)'), {u'id': u'1475102974', u'name': u'茨城県', u'name:en': u'Ibaraki Prefecture', u'place': u'province'}), + dsl.way(197, wkt_loads('POINT (139.385637 35.756509)'), {u'id': u'1513641959', u'name': u'武蔵村山市', u'name:en': u'Musashimurayama', u'place': u'city', u'population': u'71419', u'wikidata': u'Q390806'}), + dsl.way(198, wkt_loads('POINT (139.217028 35.731042)'), {u'id': u'1513663376', u'name': u'あきる野市', u'name:en': u'Akiruno', u'place': u'city', u'population': u'80787', u'wikidata': u'Q240480'}), + dsl.way(199, wkt_loads('POINT (139.096172 35.80966)'), {u'id': u'1513663380', u'name': u'奥多摩町', u'name:en': u'Okutama', u'place': u'town', u'population': u'5234', u'wikidata': u'Q598626'}), + dsl.way(200, wkt_loads('POINT (139.223819 35.758719)'), {u'id': u'1513663382', u'name': u'日の出町', u'name:en': u'Hinode', u'place': u'town', u'population': u'17448', u'wikidata': u'Q1154806'}), + dsl.way(201, wkt_loads('POINT (139.334682 35.737188)'), {u'id': u'1513663390', u'name': u'福生市', u'name:en': u'Fussa', u'place': u'city', u'population': u'58444', u'wikidata': u'Q317813'}), + dsl.way(202, wkt_loads('POINT (139.307862 35.764833)'), {u'id': u'1513663393', u'name': u'羽村市', u'name:en': u'Hamura', u'place': u'city', u'population': u'55434', u'wikidata': u'Q270465'}), + dsl.way(203, wkt_loads('POINT (139.87714 36.305295)'), {u'id': u'1513697885', u'name': u'結城市', u'name:en': u'Yuki', u'place': u'city', u'population': u'51332', u'wikidata': u'Q847569'}), + dsl.way(204, wkt_loads('POINT (139.345734 35.784056)'), {u'id': u'1517292206', u'name': u'瑞穂町', u'name:en': u'Mizuho', u'place': u'town', u'population': u'33194', u'wikidata': u'Q975797'}), + dsl.way(205, wkt_loads('POINT (139.08775 35.632505)'), {u'id': u'1598836214', u'name': u'上野原市', u'name:en': u'Uenohara', u'place': u'city', u'population': u'23785', u'wikidata': u'Q851030'}), + dsl.way(206, wkt_loads('POINT (138.916862 35.643042)'), {u'id': u'1599607817', u'name': u'大月市', u'name:en': u'Otsuki', u'place': u'city', u'population': u'24329', u'wikidata': u'Q386508'}), + dsl.way(207, wkt_loads('POINT (138.846894 35.524113)'), {u'id': u'1610335916', u'name': u'西桂町', u'name:en': u'Nishikatsura', u'place': u'town', u'population': u'4342', u'wikidata': u'Q1203881'}), + dsl.way(208, wkt_loads('POINT (138.905487 35.551618)'), {u'id': u'1610335917', u'name': u'都留市', u'name:en': u'Tsuru', u'place': u'city', u'population': u'31414', u'wikidata': u'Q747362'}), + dsl.way(209, wkt_loads('POINT (138.934829 35.369862)'), {u'id': u'1617003546', u'name': u'小山町', u'name:en': u'Oyama', u'place': u'town', u'population': u'19497', u'wikidata': u'Q726418'}), + dsl.way(210, wkt_loads('POINT (138.877573 35.301048)'), {u'id': u'1619235769', u'name': u'御殿場市', u'name:en': u'Gotemba', u'place': u'city', u'population': u'87929', u'wikidata': u'Q735175'}), + dsl.way(211, wkt_loads('POINT (139.510676 35.704108)'), {u'id': u'1619811558', u'name': u'小金井市', u'name:en': u'Koganei', u'place': u'city', u'population': u'122977', u'wikidata': u'Q242874'}), + dsl.way(212, wkt_loads('POINT (139.400251 34.737515)'), {u'id': u'1632465089', u'name': u'大島町', u'name:en': u'Oshima', u'place': u'town', u'population': u'7884', u'wikidata': u'Q1204507'}), + dsl.way(213, wkt_loads('POINT (138.881738 35.21843)'), {u'id': u'1648713724', u'name': u'裾野市', u'name:en': u'Susono', u'place': u'city', u'population': u'52113', u'wikidata': u'Q847577'}), + dsl.way(214, wkt_loads('POINT (138.807828 35.487457)'), {u'id': u'1670542925', u'name': u'富士吉田市', u'name:en': u'Fujiyoshida', u'place': u'city', u'population': u'48167', u'wikidata': u'Q647508'}), + dsl.way(215, wkt_loads('POINT (138.765304 35.501065)'), {u'id': u'1670542927', u'name': u'富士河口湖町', u'name:en': u'Fujikawaguchiko', u'place': u'town', u'population': u'25329', u'wikidata': u'Q1004231'}), + dsl.way(216, wkt_loads('POINT (139.519089 35.752546)'), {u'id': u'1673414219', u'name': u'東久留米市', u'name:en': u'Higashikurume', u'place': u'city', u'population': u'116566', u'wikidata': u'Q317830'}), + dsl.way(217, wkt_loads('POINT (139.484539 35.768929)'), {u'id': u'1673414230', u'name': u'東村山市', u'name:en': u'Higashimurayama', u'place': u'city', u'population': u'150116', u'wikidata': u'Q240489'}), + dsl.way(218, wkt_loads('POINT (139.531253 35.785483)'), {u'id': u'1673414233', u'name': u'清瀬市', u'name:en': u'Kiyose', u'place': u'city', u'population': u'75072', u'wikidata': u'Q329754'}), + dsl.way(219, wkt_loads('POINT (140.050178 35.911532)'), {u'id': u'1699286306', u'name': u'取手市', u'name:en': u'Toride', u'place': u'city', u'population': u'105447', u'wikidata': u'Q638312'}), + dsl.way(220, wkt_loads('POINT (139.428831 35.740869000000004)'), {u'id': u'1717099673', u'name': u'東大和市', u'name:en': u'Higashiyamato', u'place': u'city', u'population': u'84876', u'wikidata': u'Q390788'}), + dsl.way(221, wkt_loads('POINT (138.63805 35.639933)'), {u'id': u'1775025907', u'name': u'山梨県', u'name:en': u'Yamanashi Prefecture', u'place': u'province', u'wikidata': u'Q132720'}), + dsl.way(222, wkt_loads('POINT (138.146936 34.647956)'), {u'id': u'1788105973', u'name': u'御前崎市', u'name:en': u'Omaezaki', u'place': u'city', u'population': u'31894', u'wikidata': u'Q850380'}), + dsl.way(223, wkt_loads('POINT (138.18517 34.718766)'), {u'id': u'1788105974', u'name': u'牧之原市', u'name:en': u'Makinohara', u'place': u'city', u'population': u'44493', u'wikidata': u'Q850527'}), + dsl.way(224, wkt_loads('POINT (138.392164 35.837156)'), {u'id': u'1788978271', u'name': u'北杜市', u'name:en': u'Hokuto', u'place': u'city', u'population': u'44314', u'wikidata': u'Q825272'}), + dsl.way(225, wkt_loads('POINT (138.362783 35.404554)'), {u'id': u'1796938439', u'name': u'早川町', u'name:en': u'Hayakawa', u'place': u'town', u'population': u'1068', u'wikidata': u'Q1204436'}), + dsl.way(226, wkt_loads('POINT (138.571044 35.665248)'), {u'capital': u'4', u'id': u'1808192270', u'name': u'甲府市', u'name:en': u'Kofu', u'place': u'city', u'population': u'193125', u'wikidata': u'Q201932'}), + dsl.way(227, wkt_loads('POINT (138.687126 35.692845)'), {u'id': u'1808377239', u'name': u'山梨市', u'name:en': u'Yamanashi', u'place': u'city', u'population': u'33962', u'wikidata': u'Q840610'}), + dsl.way(228, wkt_loads('POINT (138.464989 35.608362)'), {u'id': u'1809487734', u'name': u'南アルプス市', u'name:en': u'Minami-Alps', u'place': u'city', u'population': u'70116', u'wikidata': u'Q824000'}), + dsl.way(229, wkt_loads('POINT (138.409373 35.717518)'), {u'id': u'1809498177', u'name': u'韮崎市', u'name:en': u'Nirasaki', u'place': u'city', u'population': u'30070', u'wikidata': u'Q290326'}), + dsl.way(230, wkt_loads('POINT (138.515327 35.668167)'), {u'id': u'1810109727', u'name': u'甲斐市', u'name:en': u'Kai', u'place': u'city', u'population': u'74705', u'wikidata': u'Q577309'}), + dsl.way(231, wkt_loads('POINT (138.639399 35.648547)'), {u'id': u'1812111051', u'name': u'笛吹市', u'name:en': u'Fuefuki', u'place': u'city', u'population': u'68641', u'wikidata': u'Q849434'}), + dsl.way(232, wkt_loads('POINT (138.520992 35.589199)'), {u'id': u'1812278654', u'name': u'中央市', u'name:en': u'Chuo', u'place': u'city', u'population': u'30837', u'wikidata': u'Q666049'}), + dsl.way(233, wkt_loads('POINT (139.702801 35.530531)'), {u'id': u'1933981790', u'name': u'川崎市', u'name:en': u'Kawasaki', u'place': u'city', u'population': u'1509887', u'wikidata': u'Q164234'}), + dsl.way(234, wkt_loads('POINT (139.636768 35.444991)'), {u'capital': u'4', u'id': u'1973500311', u'name': u'横浜市', u'name:en': u'Yokohama', u'place': u'city', u'population': u'3708122', u'wikidata': u'Q38283'}), + dsl.way(235, wkt_loads('POINT (139.869984 34.99653)'), {u'id': u'1977624221', u'name': u'館山市', u'name:en': u'Tateyama', u'place': u'city', u'population': u'46471', u'wikidata': u'Q646755'}), + dsl.way(236, wkt_loads('POINT (139.83714 35.038749)'), {u'id': u'1977631144', u'name': u'南房総市', u'name:en': u'Minamiboso', u'place': u'city', u'population': u'37765', u'wikidata': u'Q873521'}), + dsl.way(237, wkt_loads('POINT (139.835819 35.111102)'), {u'id': u'1977633118', u'name': u'鋸南町', u'name:en': u'Kyonan', u'place': u'town', u'population': u'8022', u'wikidata': u'Q1203580'}), + dsl.way(238, wkt_loads('POINT (140.098692 35.114058)'), {u'id': u'1977635153', u'name': u'鴨川市', u'name:en': u'Kamogawa', u'place': u'city', u'population': u'33932', u'wikidata': u'Q387211'}), + dsl.way(239, wkt_loads('POINT (139.85705 35.303915)'), {u'id': u'1977637091', u'name': u'富津市', u'name:en': u'Futtsu', u'place': u'city', u'population': u'44449', u'wikidata': u'Q498023'}), + dsl.way(240, wkt_loads('POINT (140.24526 35.284792)'), {u'id': u'1977639950', u'name': u'大多喜町', u'name:en': u'Otaki', u'place': u'town', u'population': u'9843', u'wikidata': u'Q1346191'}), + dsl.way(241, wkt_loads('POINT (140.348777 35.191661)'), {u'id': u'1977643116', u'name': u'御宿町', u'name:en': u'Onjuku', u'place': u'town', u'population': u'7315'}), + dsl.way(242, wkt_loads('POINT (140.320745 35.152185)'), {u'id': u'1977652858', u'name': u'勝浦市', u'name:en': u'Katsuura', u'place': u'city', u'population': u'17808', u'wikidata': u'Q696418'}), + dsl.way(243, wkt_loads('POINT (140.664575 35.8899)'), {u'id': u'2016860246', u'name': u'神栖市', u'name:en': u'Kamisu', u'place': u'city', u'population': u'95052', u'wikidata': u'Q840595'}), + dsl.way(244, wkt_loads('POINT (138.09554 34.933249000000004)'), {u'id': u'2035767441', u'name': u'静岡県', u'name:en': u'Shizuoka Prefecture', u'place': u'province'}), + dsl.way(245, wkt_loads('POINT (139.550228 35.73546)'), {u'id': u'2039121337', u'name': u'西東京市', u'name:en': u'Nishitokyo', u'place': u'city', u'population': u'202435', u'wikidata': u'Q242882'}), + dsl.way(246, wkt_loads('POINT (138.859988 35.181254)'), {u'id': u'2055574009', u'name': u'長泉町', u'name:en': u'Nagaizumi', u'place': u'town', u'population': u'42331', u'wikidata': u'Q1204459'}), + dsl.way(247, wkt_loads('POINT (139.031616 35.222919)'), {u'id': u'2055590056', u'name': u'箱根町', u'name:en': u'Hakone', u'place': u'town', u'population': u'11786', u'wikidata': u'Q671040'}), + dsl.way(248, wkt_loads('POINT (140.645029 35.966116)'), {u'id': u'2089866662', u'name': u'鹿嶋市', u'name:en': u'Kashima', u'place': u'city', u'population': u'67802', u'wikidata': u'Q467471'}), + dsl.way(249, wkt_loads('POINT (140.411617 36.54292)'), {u'id': u'2089981684', u'name': u'常陸大宮市', u'name:en': u'Hitachiomiya', u'place': u'city', u'population': u'41342', u'wikidata': u'Q838681'}), + dsl.way(250, wkt_loads('POINT (140.516516 36.158565)'), {u'id': u'2091799198', u'name': u'鉾田市', u'name:en': u'Hokota', u'place': u'city', u'population': u'47463', u'wikidata': u'Q857297'}), + dsl.way(251, wkt_loads('POINT (140.384946 35.253939)'), {u'id': u'2097936978', u'name': u'いすみ市', u'name:en': u'Isumi', u'place': u'city', u'population': u'37442', u'wikidata': u'Q840834'}), + dsl.way(252, wkt_loads('POINT (140.368662 35.372802)'), {u'id': u'2097955629', u'name': u'一宮町', u'name:en': u'Ichinomiya', u'place': u'town', u'population': u'11767', u'wikidata': u'Q1203602'}), + dsl.way(253, wkt_loads('POINT (140.440201 35.535085)'), {u'id': u'2097955691', u'name': u'九十九里町', u'name:en': u'Kujukuri', u'place': u'town', u'population': u'16510', u'wikidata': u'Q1202775'}), + dsl.way(254, wkt_loads('POINT (140.224016 35.723462)'), {u'id': u'2097955765', u'name': u'佐倉市', u'name:en': u'Sakura', u'place': u'city', u'population': u'171927', u'wikidata': u'Q498011'}), + dsl.way(255, wkt_loads('POINT (140.099513 35.722537)'), {u'id': u'2097955818', u'name': u'八千代市', u'name:en': u'Yachiyo', u'place': u'city', u'population': u'195491', u'wikidata': u'Q328651'}), + dsl.way(256, wkt_loads('POINT (140.317865 35.665861)'), {u'id': u'2098146218', u'name': u'八街市', u'name:en': u'Yachimata', u'place': u'city', u'population': u'69315', u'wikidata': u'Q638296'}), + dsl.way(257, wkt_loads('POINT (140.564514 35.70794)'), {u'id': u'2098146219', u'name': u'匝瑳市', u'name:en': u'Sosa', u'place': u'city', u'population': u'36244', u'wikidata': u'Q858367'}), + dsl.way(258, wkt_loads('POINT (140.145298 35.832258)'), {u'id': u'2098146277', u'name': u'印西市', u'name:en': u'Inzai', u'place': u'city', u'population': u'96640', u'wikidata': u'Q637901'}), + dsl.way(259, wkt_loads('POINT (139.902551 35.330238)'), {u'id': u'2098146321', u'name': u'君津市', u'name:en': u'Kimitsu', u'place': u'city', u'population': u'84221', u'wikidata': u'Q637928'}), + dsl.way(260, wkt_loads('POINT (140.167945 35.669655)'), {u'id': u'2098146343', u'name': u'四街道市', u'name:en': u'Yotsukaido', u'place': u'city', u'population': u'90712', u'wikidata': u'Q429373'}), + dsl.way(261, wkt_loads('POINT (140.467716 35.735734)'), {u'id': u'2098146346', u'name': u'多古町', u'name:en': u'Tako', u'place': u'town', u'population': u'14724', u'wikidata': u'Q1202807'}), + dsl.way(262, wkt_loads('POINT (140.320893 35.521604)'), {u'id': u'2098146347', u'name': u'大網白里市', u'name:en': u'Oamishirasato', u'place': u'city', u'population': u'48687', u'wikidata': u'Q1203251'}), + dsl.way(263, wkt_loads('POINT (140.343055 35.726888)'), {u'id': u'2098146348', u'name': u'富里市', u'name:en': u'Tomisato', u'place': u'city', u'population': u'49636', u'wikidata': u'Q692857'}), + dsl.way(264, wkt_loads('POINT (140.1157 35.497775)'), {u'id': u'2098146351', u'name': u'市原市', u'name:en': u'Ichihara', u'place': u'city', u'population': u'279065', u'wikidata': u'Q207881'}), + dsl.way(265, wkt_loads('POINT (139.928568 35.729412)'), {u'id': u'2098146352', u'name': u'市川市', u'name:en': u'Ichikawa', u'place': u'city', u'population': u'469603', u'wikidata': u'Q209785'}), + dsl.way(266, wkt_loads('POINT (140.318338 35.776768)'), {u'id': u'2098146368', u'name': u'成田市', u'name:en': u'Narita', u'place': u'city', u'population': u'131190', u'wikidata': u'Q273798'}), + dsl.way(267, wkt_loads('POINT (140.028065 35.863999)'), {u'id': u'2098146404', u'name': u'我孫子市', u'name:en': u'Abiko', u'place': u'city', u'population': u'130977', u'wikidata': u'Q243859'}), + dsl.way(268, wkt_loads('POINT (140.646453 35.720413)'), {u'id': u'2098146405', u'name': u'旭市', u'name:en': u'Asahi', u'place': u'city', u'population': u'65431', u'wikidata': u'Q637868'}), + dsl.way(269, wkt_loads('POINT (139.91668 35.375973)'), {u'id': u'2098146406', u'name': u'木更津市', u'name:en': u'Kisarazu', u'place': u'city', u'population': u'135461', u'wikidata': u'Q335427'}), + dsl.way(270, wkt_loads('POINT (140.668892 35.83711)'), {u'id': u'2098183328', u'name': u'東庄町', u'name:en': u'Tohnosho', u'place': u'town', u'population': u'14152', u'wikidata': u'Q1342834'}), + dsl.way(271, wkt_loads('POINT (139.903177 35.787937)'), {u'id': u'2098183361', u'name': u'松戸市', u'name:en': u'Matsudo', u'place': u'city', u'population': u'483480', u'wikidata': u'Q320943'}), + dsl.way(272, wkt_loads('POINT (139.975688 35.867622)'), {u'id': u'2098183362', u'name': u'柏市', u'name:en': u'Kashiwa', u'place': u'city', u'population': u'422385', u'wikidata': u'Q319743'}), + dsl.way(273, wkt_loads('POINT (140.244124 35.841044)'), {u'id': u'2098183363', u'name': u'栄町', u'name:en': u'Sakae', u'place': u'town', u'population': u'21228', u'wikidata': u'Q1202754'}), + dsl.way(274, wkt_loads('POINT (140.504854 35.66582)'), {u'id': u'2098183364', u'name': u'横芝光町', u'name:en': u'Yokoshibahikari', u'place': u'town', u'population': u'23762', u'wikidata': u'Q1203260'}), + dsl.way(275, wkt_loads('POINT (139.902626 35.856231)'), {u'id': u'2098183365', u'name': u'流山市', u'name:en': u'Nagareyama', u'place': u'city', u'population': u'186863', u'wikidata': u'Q328625'}), + dsl.way(276, wkt_loads('POINT (140.056063 35.791454)'), {u'id': u'2098183367', u'name': u'白井市', u'name:en': u'Shiroi', u'place': u'city', u'population': u'62374', u'wikidata': u'Q519187'}), + dsl.way(277, wkt_loads('POINT (140.374253 35.454206)'), {u'id': u'2098183398', u'name': u'白子町', u'name:en': u'Shirako', u'place': u'town', u'population': u'11149', u'wikidata': u'Q1203293'}), + dsl.way(278, wkt_loads('POINT (140.319503 35.361086)'), {u'id': u'2098183444', u'name': u'睦沢町', u'name:en': u'Mutsuzawa', u'place': u'town', u'population': u'7222', u'wikidata': u'Q768083'}), + dsl.way(279, wkt_loads('POINT (140.405113 35.901689)'), {u'id': u'2098183450', u'name': u'神崎町', u'name:en': u'Kozaki', u'place': u'town', u'population': u'6133', u'wikidata': u'Q1153721'}), + dsl.way(280, wkt_loads('POINT (140.018956 35.670572)'), {u'id': u'2098183451', u'name': u'習志野市', u'name:en': u'Narashino', u'place': u'city', u'population': u'172497', u'wikidata': u'Q318047'}), + dsl.way(281, wkt_loads('POINT (139.988668 35.699997)'), {u'id': u'2098183459', u'name': u'船橋市', u'name:en': u'Funabashi', u'place': u'city', u'population': u'633263', u'wikidata': u'Q271417'}), + dsl.way(282, wkt_loads('POINT (140.41414 35.693098)'), {u'id': u'2098183474', u'name': u'芝山町', u'name:en': u'Shibayama', u'place': u'town', u'population': u'7431', u'wikidata': u'Q1203689'}), + dsl.way(283, wkt_loads('POINT (140.288075 35.428509)'), {u'id': u'2098183487', u'name': u'茂原市', u'name:en': u'Mobara', u'place': u'city', u'population': u'88824', u'wikidata': u'Q502486'}), + dsl.way(284, wkt_loads('POINT (139.954466 35.429669)'), {u'id': u'2098215068', u'name': u'袖ケ浦市', u'name:en': u'Sodegaura', u'place': u'city', u'population': u'61639', u'wikidata': u'Q646847'}), + dsl.way(285, wkt_loads('POINT (140.269483 35.724714)'), {u'id': u'2098215126', u'name': u'酒々井町', u'name:en': u'Shisui', u'place': u'town', u'population': u'20955', u'wikidata': u'Q782157'}), + dsl.way(286, wkt_loads('POINT (140.000715 35.776646)'), {u'id': u'2098215206', u'name': u'鎌ケ谷市', u'name:en': u'Kamagaya', u'place': u'city', u'population': u'109238', u'wikidata': u'Q387365'}), + dsl.way(287, wkt_loads('POINT (140.237276 35.386036)'), {u'id': u'2098215241', u'name': u'長南町', u'name:en': u'Chonan', u'place': u'town', u'population': u'8206', u'wikidata': u'Q1203194'}), + dsl.way(288, wkt_loads('POINT (140.227151 35.431105)'), {u'id': u'2098215275', u'name': u'長柄町', u'name:en': u'Nagara', u'place': u'town', u'population': u'7337', u'wikidata': u'Q1203545'}), + dsl.way(289, wkt_loads('POINT (140.499279 35.897827)'), {u'id': u'2098215364', u'name': u'香取市', u'name:en': u'Katori', u'place': u'city', u'population': u'75362', u'wikidata': u'Q858357'}), + dsl.way(290, wkt_loads('POINT (139.640682 35.15505)'), {u'id': u'2115184095', u'name': u'三浦市', u'name:en': u'Miura', u'place': u'city', u'population': u'45289', u'wikidata': u'Q823886'}), + dsl.way(291, wkt_loads('POINT (139.246756 35.300994)'), {u'id': u'2115184096', u'name': u'二宮町', u'name:en': u'Ninomiya', u'place': u'town', u'population': u'28378', u'wikidata': u'Q1354853'}), + dsl.way(292, wkt_loads('POINT (139.099241 35.320574)'), {u'id': u'2115184099', u'name': u'南足柄市', u'name:en': u'Minamiashigara', u'place': u'city', u'population': u'43306', u'wikidata': u'Q651742'}), + dsl.way(293, wkt_loads('POINT (139.323536 35.464797)'), {u'id': u'2115184100', u'name': u'厚木市', u'name:en': u'Atsugi', u'place': u'city', u'population': u'225330', u'wikidata': u'Q389711'}), + dsl.way(294, wkt_loads('POINT (139.156636 35.326242)'), {u'id': u'2115184101', u'name': u'大井町', u'name:en': u'Oi', u'place': u'town', u'population': u'17033', u'wikidata': u'Q1202616'}), + dsl.way(295, wkt_loads('POINT (139.460758 35.47269)'), {u'admin_leve': u'7', u'id': u'2115184102', u'name': u'大和市', u'name:en': u'Yamato', u'place': u'city', u'population': u'232922', u'wikidata': u'Q386697'}), + dsl.way(296, wkt_loads('POINT (139.289557 35.317773)'), {u'id': u'2115184103', u'name': u'大磯町', u'name:en': u'Oiso', u'place': u'town', u'population': u'31550', u'wikidata': u'Q385023'}), + dsl.way(297, wkt_loads('POINT (139.383785 35.372922)'), {u'id': u'2115184104', u'name': u'寒川町', u'name:en': u'Samukawa', u'place': u'town', u'population': u'47936', u'wikidata': u'Q1342787'}), + dsl.way(298, wkt_loads('POINT (139.150229 35.263676)'), {u'id': u'2115184105', u'name': u'小田原市', u'name:en': u'Odawara', u'place': u'city', u'population': u'192407', u'wikidata': u'Q267258'}), + dsl.way(299, wkt_loads('POINT (139.05448 35.389492)'), {u'id': u'2115184106', u'name': u'山北町', u'name:en': u'Yamakita', u'place': u'town', u'population': u'10724', u'wikidata': u'Q370478'}), + dsl.way(300, wkt_loads('POINT (139.318278 35.357674)'), {u'id': u'2115184107', u'name': u'平塚市', u'name:en': u'Hiratsuka', u'place': u'city', u'population': u'259698', u'wikidata': u'Q502199'}), + dsl.way(301, wkt_loads('POINT (139.133926 35.359236)'), {u'id': u'2115184110', u'name': u'松田町', u'name:en': u'Matsuda', u'place': u'town', u'population': u'11171', u'wikidata': u'Q1202796'}), + dsl.way(302, wkt_loads('POINT (139.665383 35.273056)'), {u'id': u'2115184112', u'name': u'横須賀市', u'name:en': u'Yokosuka', u'place': u'city', u'population': u'406586', u'wikidata': u'Q200578'}), + dsl.way(303, wkt_loads('POINT (139.12073 35.166784)'), {u'id': u'2115184115', u'name': u'湯河原町', u'name:en': u'Yugawara', u'place': u'town', u'population': u'25026', u'wikidata': u'Q532346'}), + dsl.way(304, wkt_loads('POINT (139.13462 35.160373)'), {u'id': u'2115184117', u'name': u'真鶴町', u'name:en': u'Manazuru', u'place': u'town', u'population': u'7333', u'wikidata': u'Q1202786'}), + dsl.way(305, wkt_loads('POINT (139.430823 35.446048)'), {u'admin_leve': u'7', u'id': u'2115184119', u'name': u'綾瀬市', u'name:en': u'Ayase', u'place': u'city', u'population': u'84139', u'wikidata': u'Q792819'}), + dsl.way(306, wkt_loads('POINT (139.405371 35.329479)'), {u'id': u'2115184120', u'name': u'茅ヶ崎市', u'name:en': u'Chigasaki', u'place': u'city', u'population': u'240618', u'wikidata': u'Q633911'}), + dsl.way(307, wkt_loads('POINT (139.593177 35.272909)'), {u'id': u'2115184121', u'name': u'葉山町', u'name:en': u'Hayama', u'place': u'town', u'population': u'32096', u'wikidata': u'Q1342807'}), + dsl.way(308, wkt_loads('POINT (139.465077 35.364842)'), {u'id': u'2115184122', u'name': u'藤沢市', u'name:en': u'Fujisawa', u'place': u'city', u'population': u'428837', u'wikidata': u'Q386661'}), + dsl.way(309, wkt_loads('POINT (139.583845 35.304067)'), {u'id': u'2115184123', u'name': u'逗子市', u'name:en': u'Zushi', u'place': u'city', u'population': u'57425', u'wikidata': u'Q230843'}), + dsl.way(310, wkt_loads('POINT (139.54442 35.329564)'), {u'id': u'2115184125', u'name': u'鎌倉市', u'name:en': u'Kamakura', u'place': u'city', u'population': u'172284', u'wikidata': u'Q200267'}), + dsl.way(311, wkt_loads('POINT (139.420453 35.499205)'), {u'id': u'2115186706', u'name': u'座間市', u'name:en': u'Zama', u'place': u'city', u'population': u'128737', u'wikidata': u'Q145333'}), + dsl.way(312, wkt_loads('POINT (139.297795 35.532347)'), {u'id': u'2115186707', u'name': u'愛川町', u'name:en': u'Aikawa', u'place': u'town', u'population': u'40343', u'wikidata': u'Q1203267'}), + dsl.way(313, wkt_loads('POINT (139.389999 35.419984)'), {u'id': u'2115186708', u'name': u'海老名市', u'name:en': u'Ebina', u'place': u'city', u'population': u'130678', u'wikidata': u'Q734390'}), + dsl.way(314, wkt_loads('POINT (139.236215 35.56559)'), {u'id': u'2115186710', u'name': u'相模原市', u'name:en': u'Sagamihara', u'place': u'city', u'population': u'722157', u'wikidata': u'Q209779'}), + dsl.way(315, wkt_loads('POINT (140.555282 35.947173)'), {u'id': u'2115199905', u'name': u'潮来市', u'name:en': u'Itako', u'place': u'city', u'population': u'28491', u'wikidata': u'Q840598'}), + dsl.way(316, wkt_loads('POINT (140.488883 35.99019)'), {u'id': u'2115199906', u'name': u'行方市', u'name:en': u'Namekata', u'place': u'city', u'population': u'33914', u'wikidata': u'Q877184'}), + dsl.way(317, wkt_loads('POINT (140.036995 35.963014)'), {u'id': u'2115840208', u'name': u'つくばみらい市', u'name:en': u'Tsukubamirai', u'place': u'city', u'population': u'50615', u'wikidata': u'Q877254'}), + dsl.way(318, wkt_loads('POINT (139.745812 36.114738)'), {u'id': u'2115840209', u'name': u'五霞町', u'name:en': u'Goka', u'place': u'town', u'population': u'8786', u'wikidata': u'Q680056'}), + dsl.way(319, wkt_loads('POINT (139.889662 36.048481)'), {u'id': u'2115840210', u'name': u'坂東市', u'name:en': u'Bando', u'place': u'city', u'population': u'53242', u'wikidata': u'Q583931'}), + dsl.way(320, wkt_loads('POINT (139.795198 36.108379)'), {u'id': u'2115840211', u'name': u'境町', u'name:en': u'Sakai', u'place': u'town', u'population': u'24517', u'wikidata': u'Q1203337'}), + dsl.way(321, wkt_loads('POINT (139.975498 35.95101)'), {u'id': u'2115840213', u'name': u'守谷市', u'name:en': u'Moriya', u'place': u'city', u'population': u'66230', u'wikidata': u'Q840608'}), + dsl.way(322, wkt_loads('POINT (139.874867 35.954908)'), {u'id': u'2115840215', u'name': u'野田市', u'name:en': u'Noda', u'place': u'city', u'population': u'152916', u'wikidata': u'Q328619'}), + dsl.way(323, wkt_loads('POINT (138.945379 34.679545)'), {u'id': u'2377927287', u'name': u'下田市', u'name:en': u'Shimoda', u'place': u'city', u'population': u'22007', u'wikidata': u'Q653402'}), + dsl.way(324, wkt_loads('POINT (139.087685 34.926734)'), {u'id': u'2377927288', u'name': u'伊東市', u'name:en': u'Ito', u'place': u'city', u'population': u'66988', u'wikidata': u'Q721163'}), + dsl.way(325, wkt_loads('POINT (138.961915 35.035531)'), {u'id': u'2377927289', u'name': u'伊豆の国市', u'name:en': u'Izunokuni', u'place': u'city', u'population': u'47624', u'wikidata': u'Q863758'}), + dsl.way(326, wkt_loads('POINT (138.946708 34.976455)'), {u'id': u'2377927290', u'name': u'伊豆市', u'name:en': u'Izu', u'place': u'city', u'population': u'30283', u'wikidata': u'Q696840'}), + dsl.way(327, wkt_loads('POINT (138.998583 35.117085)'), {u'id': u'2377927291', u'name': u'函南町', u'name:en': u'Kannami', u'place': u'town', u'population': u'37347', u'wikidata': u'Q1203533'}), + dsl.way(328, wkt_loads('POINT (138.858719 34.643311)'), {u'id': u'2377927292', u'name': u'南伊豆町', u'name:en': u'Minamiizu', u'place': u'town', u'population': u'8524', u'wikidata': u'Q1203741'}), + dsl.way(329, wkt_loads('POINT (139.035878 34.801476)'), {u'id': u'2377927293', u'name': u'東伊豆町', u'name:en': u'Higashiizu', u'place': u'town', u'population': u'12624', u'wikidata': u'Q304491'}), + dsl.way(330, wkt_loads('POINT (138.801992 34.750811)'), {u'id': u'2377927294', u'name': u'松崎町', u'name:en': u'Matsuzaki', u'place': u'town', u'population': u'6837', u'wikidata': u'Q1204017'}), + dsl.way(331, wkt_loads('POINT (138.983947 34.750862)'), {u'id': u'2377927295', u'name': u'河津町', u'name:en': u'Kawazu', u'place': u'town', u'population': u'7303', u'wikidata': u'Q1203861'}), + dsl.way(332, wkt_loads('POINT (138.898974 35.10764)'), {u'id': u'2377927296', u'name': u'清水町', u'name:en': u'Shimizu', u'place': u'town', u'population': u'32118', u'wikidata': u'Q1203168'}), + dsl.way(333, wkt_loads('POINT (139.059891 35.08992)'), {u'id': u'2377927299', u'name': u'熱海市', u'name:en': u'Atami', u'place': u'city', u'population': u'37000', u'wikidata': u'Q653364'}), + dsl.way(334, wkt_loads('POINT (138.794672 34.800667)'), {u'id': u'2377927313', u'name': u'西伊豆町', u'name:en': u'Nishiizu', u'place': u'town', u'population': u'8234', u'wikidata': u'Q1203949'}), + dsl.way(335, wkt_loads('POINT (139.703632 35.693763)'), {u'capital': u'4', u'id': u'2389061853', u'name': u'新宿区', u'name:en': u'Shinjuku', u'place': u'city', u'population': u'337556', u'wikidata': u'Q179645'}), + dsl.way(336, wkt_loads('POINT (139.677099 36.018618)'), {u'id': u'2716991002', u'name': u'白岡市', u'name:en': u'Shiraoka', u'place': u'city', u'population': u'52109', u'wikidata': u'Q1345322'}), + dsl.way(337, wkt_loads('POINT (139.374753 35.434294)'), {u'admin_leve': u'4', u'id': u'2719205431', u'name': u'神奈川県', u'name:en': u'Kanagawa Prefecture', u'place': u'province'}), + dsl.way(338, wkt_loads('POINT (140.26473 35.549399)'), {u'id': u'2739381522', u'name': u'千葉県', u'name:en': u'Chiba Prefecture', u'place': u'province'}), + dsl.way(339, wkt_loads('POINT (139.90185 35.653052)'), {u'id': u'2900447873', u'name': u'浦安市', u'name:en': u'Urayasu', u'place': u'city', u'population': u'164024', u'wikidata': u'Q319729'}), + dsl.way(340, wkt_loads('POINT (138.461389 35.561111)'), {u'id': u'2955593366', u'name': u'富士川町', u'name:en': u'Fujikawa', u'place': u'town', u'population': u'15294', u'wikidata': u'Q1351723'}), + dsl.way(341, wkt_loads('POINT (138.502222 35.565278)'), {u'id': u'2955593367', u'name': u'市川三郷町', u'name:en': u'Ichikawamisato', u'place': u'town', u'population': u'15673', u'wikidata': u'Q1204453'}), + dsl.way(342, wkt_loads('POINT (138.538955 35.625669)'), {u'id': u'2955593368', u'name': u'昭和町', u'name:en': u'Showa', u'place': u'town', u'population': u'19505', u'wikidata': u'Q1204276'}), + dsl.way(343, wkt_loads('POINT (138.458633 35.259129)'), {u'id': u'2993187421', u'name': u'南部町', u'name:en': u'Nanbu', u'place': u'town', u'population': u'8067', u'wikidata': u'Q1204802'}), + dsl.way(344, wkt_loads('POINT (138.442567 35.468051)'), {u'id': u'2993187422', u'name': u'身延町', u'name:en': u'Minobu', u'place': u'town', u'population': u'12669', u'wikidata': u'Q1204435'}), + dsl.way(345, wkt_loads('POINT (139.120733 35.342161)'), {u'id': u'2993187423', u'name': u'開成町', u'name:en': u'Kaisei', u'place': u'town', u'population': u'17013', u'wikidata': u'Q1202613'}), + dsl.way(346, wkt_loads('POINT (138.887831 36.326365)'), {u'id': u'3231770610', u'name': u'安中市', u'name:en': u'Annaka', u'place': u'city', u'population': u'57097', u'wikidata': u'Q564234'}), + dsl.way(347, wkt_loads('POINT (139.891043 36.181575)'), {u'id': u'3369490337', u'name': u'八千代町', u'name:en': u'Yachiyo', u'place': u'town', u'population': u'22021', u'wikidata': u'Q1203394'}), + dsl.way(348, wkt_loads('POINT (140.244626 35.884548)'), {u'id': u'3369514735', u'name': u'河内町', u'name:en': u'Kawachi', u'place': u'town', u'population': u'9168', u'wikidata': u'Q1203304'}), + dsl.way(349, wkt_loads('POINT (140.138754 35.857362)'), {u'id': u'3372718846', u'name': u'利根町', u'name:en': u'Tone', u'place': u'town', u'population': u'16313', u'wikidata': u'Q1203324'}), + dsl.way(350, wkt_loads('POINT (140.090359 36.327241)'), {u'id': u'3383889945', u'name': u'桜川市', u'name:en': u'Sakuragawa', u'place': u'city', u'population': u'41278', u'wikidata': u'Q990350'}), + dsl.way(351, wkt_loads('POINT (139.97909 36.305194)'), {u'id': u'3385454595', u'name': u'筑西市', u'name:en': u'Chikusei', u'place': u'city', u'population': u'102242', u'wikidata': u'Q694322'}), + dsl.way(352, wkt_loads('POINT (138.793924 35.726318)'), {u'id': u'3457555438', u'name': u'甲州市', u'name:en': u'Koshu', u'place': u'city', u'population': u'30818', u'wikidata': u'Q248723'}), + dsl.way(353, wkt_loads('POINT (139.220648 35.334473)'), {u'id': u'3655646708', u'name': u'中井町', u'name:en': u'Nakai', u'place': u'town', u'population': u'9679', u'wikidata': u'Q1344396'}), + dsl.way(354, wkt_loads('POINT (140.118126 35.609985)'), {u'admin_leve': u'7', u'capital': u'4', u'id': u'3675848658', u'name': u'千葉市', u'name:en': u'Chiba', u'place': u'city', u'population': u'975140', u'wikidata': u'Q170616'}), + dsl.way(355, wkt_loads('POINT (140.413429 35.602875)'), {u'admin_leve': u'7', u'id': u'3675848659', u'name': u'山武市', u'name:en': u'Sanmu', u'place': u'city', u'population': u'50801', u'wikidata': u'Q873528'}), + dsl.way(356, wkt_loads('POINT (140.366259 35.560031)'), {u'admin_leve': u'7', u'id': u'3675848660', u'name': u'東金市', u'name:en': u'Toogane', u'place': u'city', u'population': u'60051', u'wikidata': u'Q637913'}), + dsl.way(357, wkt_loads('POINT (138.120123 36.533698)'), {u'id': u'5901282249', u'name': u'千曲市', u'name:en': u'Chikuma', u'place': u'city', u'population': u'59792', u'wikidata': u'Q179757'}), + dsl.way(358, wkt_loads('POINT (138.249051 36.402119)'), {u'id': u'5901282250', u'name': u'上田市', u'name:en': u'Ueda', u'place': u'city', u'population': u'156980', u'wikidata': u'Q844852'}), + dsl.way(359, wkt_loads('POINT (138.179637 36.461702)'), {u'id': u'5901282255', u'name': u'坂城町', u'name:en': u'Sakaki', u'place': u'town', u'population': u'14871', u'wikidata': u'Q1348962'}), + dsl.way(360, wkt_loads('POINT (138.47677 36.248801)'), {u'id': u'5901282261', u'name': u'佐久市', u'name:en': u'Saku', u'place': u'city', u'population': u'98652', u'wikidata': u'Q495821'}), + dsl.way(361, wkt_loads('POINT (138.315903 36.272034)'), {u'id': u'5901282274', u'name': u'立科町', u'name:en': u'Tateshina', u'place': u'town', u'population': u'7265', u'wikidata': u'Q1346895'}), + dsl.way(362, wkt_loads('POINT (138.330535 36.359423)'), {u'id': u'5901282279', u'name': u'東御市', u'name:en': u'Tomi', u'place': u'city', u'population': u'29601', u'wikidata': u'Q840859'}), + dsl.way(363, wkt_loads('POINT (138.507163 36.322601)'), {u'id': u'5901282281', u'name': u'御代田町', u'name:en': u'Miyota', u'place': u'town', u'population': u'15184', u'wikidata': u'Q1204123'}), + dsl.way(364, wkt_loads('POINT (138.596997 36.348294)'), {u'id': u'5901282594', u'name': u'軽井沢町', u'name:en': u'Karuizawa', u'place': u'town', u'population': u'18994', u'wikidata': u'Q1012064'}), + dsl.way(365, wkt_loads('POINT (139.677875 36.239633)'), {u'admin_leve': u'6', u'id': u'6914872836', u'name': u'渡良瀬遊水地', u'name:en': u'Watarase Usuichi', u'place': u'town'}), + dsl.way(366, wkt_loads('POINT (139.600792 36.22589)'), {u'id': u'7134809975', u'name': u'板倉町', u'name:en': u'Itakura', u'place': u'town', u'population': u'15015', u'wikidata': u'Q1203771'}), + dsl.way(367, wkt_loads('POINT (139.242073 35.374662)'), {u'id': u'7159778006', u'name': u'秦野市', u'name:en': u'Hadano', u'place': u'city', u'population': u'167378', u'wikidata': u'Q460806'}), + dsl.way(368, wkt_loads('POINT (139.299611 35.402397)'), {u'id': u'7159778007', u'name': u'伊勢原市', u'name:en': u'Isehara', u'place': u'city', u'population': u'101514', u'wikidata': u'Q734520'}), + dsl.way(369, wkt_loads('POINT (139.402905 35.957231)'), {u'id': u'7165933146', u'name': u'坂戸市', u'name:en': u'Sakado', u'place': u'city', u'population': u'101679', u'wikidata': u'Q850344'}), + dsl.way(370, wkt_loads('POINT (139.54848 36.172402)'), {u'id': u'7165933147', u'name': u'羽生市', u'name:en': u'Hanyu', u'place': u'city', u'population': u'54874', u'wikidata': u'Q847565'}), + dsl.way(371, wkt_loads('POINT (139.461421 36.252976)'), {u'id': u'7180044893', u'name': u'邑楽町', u'name:en': u'Ora', u'place': u'town', u'population': u'26426', u'wikidata': u'Q656774'}), + dsl.way(372, wkt_loads('POINT (139.851833 36.395081)'), {u'id': u'7180482856', u'name': u'下野市', u'name:en': u'Shimotsuke', u'place': u'city', u'population': u'59431', u'wikidata': u'Q851804'}), + dsl.way(373, wkt_loads('POINT (140.149403 35.979425)'), {u'id': u'7180482857', u'name': u'牛久市', u'name:en': u'Ushiku', u'place': u'city', u'population': u'84317', u'wikidata': u'Q844133'}), + dsl.way(374, wkt_loads('POINT (139.745246 36.567292)'), {u'id': u'7319384467', u'name': u'鹿沼市', u'name:en': u'Kanuma', u'place': u'city', u'population': u'97145', u'wikidata': u'Q390792'}), + dsl.way(375, wkt_loads('POINT (138.425972 36.327253)'), {u'id': u'7844841591', u'name': u'小諸市', u'name:en': u'Komoro', u'place': u'city', u'population': u'41693', u'wikidata': u'Q838657'}), + ] + self.test_instance.generate_fixtures(ways) + + def test_thinned_tokyo(self): + with self.tile(7,113,50) as t: + print(t) + self.assert_has_feature( + 7, 113, 50, 'places', + {'kind': 'locality', 'name': u'静岡市', + 'source': 'openstreetmap.org'}) From 58a831b7c5657e7d5708003e174587070fac8471 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Thu, 2 Dec 2021 16:58:25 -0600 Subject: [PATCH 11/16] Support multi-sort and reversing --- queries.yaml | 13 ++++ test/test_transform.py | 111 +++++++++++++++++++++++++--------- vectordatasource/transform.py | 21 ++++++- 3 files changed, 117 insertions(+), 28 deletions(-) diff --git a/queries.yaml b/queries.yaml index 73f6108c4..96f076cde 100644 --- a/queries.yaml +++ b/queries.yaml @@ -971,6 +971,19 @@ post_process: items_matching: kind: station rank_key: kind_tile_rank + - fn: vectordatasource.transform.keep_n_features_gridded + params: + source_layer: places + start_zoom: 8 + end_zoom: 12 + items_matching: { kind: locality } + max_items: 1 + grid_size: 16 + sorting_keys: + - { sort_key: 'min_zoom', reverse: False } + - { sort_key: 'collision_rank', reverse: False } + - { sort_key: 'population', reverse: True } + - { sort_key: 'id', reverse: True } - fn: vectordatasource.transform.rank_features params: source_layer: places diff --git a/test/test_transform.py b/test/test_transform.py index 1fcd72162..748ab6e23 100644 --- a/test/test_transform.py +++ b/test/test_transform.py @@ -425,7 +425,9 @@ def test_not_points(self): items_matching=dict(foo="bar"), max_items=1, grid_size=2, - sorting_keys=["foo"], + sorting_keys=[ + {"sort_key": "foo"}, + ], ), resources=None, log=None, @@ -460,7 +462,9 @@ def test_points_keep_1(self): items_matching=dict(foo="bar"), max_items=1, grid_size=2, - sorting_keys=["foo"], + sorting_keys=[ + {"sort_key": "foo"}, + ], ), resources=None, log=None, @@ -471,7 +475,7 @@ def test_points_keep_1(self): self.assertEqual(1, len(output_features), "Should consolidate to a single point in the bucket") self.assertEqual("test_shape_1", output_features[0][2], "All values equal, should pick first one") - def test_points_keep_1_multisort_missing_sort_key(self): + def test_points_keep_1_multisort_second(self): from tilequeue.process import Context import shapely.geometry @@ -479,7 +483,7 @@ def test_points_keep_1_multisort_missing_sort_key(self): test_shape_2 = shapely.geometry.Point((1.1, 1.0)) features = [ (test_shape_2, {"foo": "bar", "min_zoom": 12.0, "population": 20000}, "test_shape_2"), - (test_shape_1, {"foo": "bar", "population": 10000}, "test_shape_1"), + (test_shape_1, {"foo": "bar", "min_zoom": 12.0, "population": 10000}, "test_shape_1"), ] feature_layer = dict( features=features, @@ -496,7 +500,10 @@ def test_points_keep_1_multisort_missing_sort_key(self): items_matching=dict(foo="bar"), max_items=1, grid_size=2, - sorting_keys=["min_zoom", "population"], + sorting_keys=[ + {"sort_key": "min_zoom"}, + {"sort_key": "population", "reverse": True}, + ], ), resources=None, log=None, @@ -504,12 +511,10 @@ def test_points_keep_1_multisort_missing_sort_key(self): from vectordatasource.transform import keep_n_features_gridded layer = keep_n_features_gridded(ctx) output_features = layer['features'] - self.assertEqual(1, len(output_features), - "Should consolidate to a single point in the bucket") - self.assertEqual("test_shape_2", output_features[0][2], - "Should pick the shape with higher population when one sort key is missing") + self.assertEqual(1, len(output_features), "Should consolidate to a single point in the bucket") + self.assertEqual("test_shape_2", output_features[0][2], "Should pick the shape with higher population") - def test_points_keep_1_multisort_second(self): + def test_points_keep_1_multisort_minzoom(self): from tilequeue.process import Context import shapely.geometry @@ -517,7 +522,7 @@ def test_points_keep_1_multisort_second(self): test_shape_2 = shapely.geometry.Point((1.1, 1.0)) features = [ (test_shape_2, {"foo": "bar", "min_zoom": 12.0, "population": 20000}, "test_shape_2"), - (test_shape_1, {"foo": "bar", "min_zoom": 12.0, "population": 10000}, "test_shape_1"), + (test_shape_1, {"foo": "bar", "min_zoom": 10.0, "population": 10000}, "test_shape_1"), ] feature_layer = dict( features=features, @@ -534,7 +539,10 @@ def test_points_keep_1_multisort_second(self): items_matching=dict(foo="bar"), max_items=1, grid_size=2, - sorting_keys=["min_zoom", "population"], + sorting_keys=[ + {"sort_key": "min_zoom"}, + {"sort_key": "population", "reverse": True}, + ], ), resources=None, log=None, @@ -543,17 +551,21 @@ def test_points_keep_1_multisort_second(self): layer = keep_n_features_gridded(ctx) output_features = layer['features'] self.assertEqual(1, len(output_features), "Should consolidate to a single point in the bucket") - self.assertEqual("test_shape_2", output_features[0][2], "Should pick the shape with higher population") + self.assertEqual("test_shape_1", output_features[0][2], "Should pick the shape with lower min_zoom") - def test_points_keep_1_multisort_minzoom(self): + def test_points_keep_1_different_buckets(self): from tilequeue.process import Context import shapely.geometry - test_shape_1 = shapely.geometry.Point((1.1, 1.0)) - test_shape_2 = shapely.geometry.Point((1.1, 1.0)) + test_shape_1 = shapely.geometry.Point((1.0, 1.0)) + test_shape_2 = shapely.geometry.Point((1.0, 1.0)) + test_shape_3 = shapely.geometry.Point((75.0, 75.0)) + test_shape_4 = shapely.geometry.Point((25.0, 75.0)) features = [ - (test_shape_2, {"foo": "bar", "min_zoom": 12.0, "population": 20000}, "test_shape_2"), - (test_shape_1, {"foo": "bar", "min_zoom": 10.0, "population": 10000}, "test_shape_1"), + (test_shape_1, {"foo": "bar", "population": 1000}, "test_shape_1"), + (test_shape_2, {"foo": "bar", "population": 2000}, "test_shape_2"), + (test_shape_3, {"foo": "bar", "population": 3000}, "test_shape_3"), + (test_shape_4, {"foo": "bar", "population": 4000}, "test_shape_4"), ] feature_layer = dict( features=features, @@ -570,7 +582,9 @@ def test_points_keep_1_multisort_minzoom(self): items_matching=dict(foo="bar"), max_items=1, grid_size=2, - sorting_keys=["min_zoom", "population"], + sorting_keys=[ + {"sort_key": "population", "reverse": True}, + ], ), resources=None, log=None, @@ -578,10 +592,12 @@ def test_points_keep_1_multisort_minzoom(self): from vectordatasource.transform import keep_n_features_gridded layer = keep_n_features_gridded(ctx) output_features = layer['features'] - self.assertEqual(1, len(output_features), "Should consolidate to a single point in the bucket") - self.assertEqual("test_shape_1", output_features[0][2], "Should pick the shape with lower min_zoom") + self.assertEqual(3, len(output_features), "Should consolidate to 3 points") + self.assertEqual("test_shape_4", output_features[0][2]) + self.assertEqual("test_shape_2", output_features[1][2]) + self.assertEqual("test_shape_3", output_features[2][2]) - def test_points_keep_1_different_buckets(self): + def test_points_keep_more_than_in_one_bucket(self): from tilequeue.process import Context import shapely.geometry @@ -608,9 +624,12 @@ def test_points_keep_1_different_buckets(self): params=dict( source_layer="test_layer", items_matching=dict(foo="bar"), - max_items=1, + max_items=5, grid_size=2, - sorting_keys=["min_zoom", "population"], + sorting_keys=[ + {"sort_key": "min_zoom", "reverse": True}, + {"sort_key": "population"}, + ], ), resources=None, log=None, @@ -618,10 +637,48 @@ def test_points_keep_1_different_buckets(self): from vectordatasource.transform import keep_n_features_gridded layer = keep_n_features_gridded(ctx) output_features = layer['features'] - self.assertEqual(3, len(output_features), "Should consolidate to 3 points") + self.assertEqual(4, len(output_features), "Should not consolidate because we're keeping top 5") self.assertEqual("test_shape_4", output_features[0][2]) - self.assertEqual("test_shape_2", output_features[1][2]) - self.assertEqual("test_shape_3", output_features[2][2]) + self.assertEqual("test_shape_1", output_features[1][2]) + self.assertEqual("test_shape_2", output_features[2][2]) + self.assertEqual("test_shape_3", output_features[3][2]) + + def test_fail_on_non_integer_reverse_sort_key(self): + from tilequeue.process import Context + import shapely.geometry + + test_shape_1 = shapely.geometry.Point((1.0, 1.0)) + test_shape_2 = shapely.geometry.Point((1.0, 1.0)) + features = [ + (test_shape_1, {"foo": "bar", "population": 1000}, "test_shape_1"), + (test_shape_2, {"foo": "bar", "population": 'error'}, "test_shape_2"), + ] + feature_layer = dict( + features=features, + layer_datum=dict(name='test_layer'), + ) + feature_layers = [feature_layer] + bounds = (0, 0, 100, 100) + ctx = Context( + feature_layers=feature_layers, + nominal_zoom=0, + unpadded_bounds=bounds, + params=dict( + source_layer="test_layer", + items_matching=dict(foo="bar"), + max_items=5, + grid_size=2, + sorting_keys=[ + {"sort_key": "population", "reverse": True}, + ], + ), + resources=None, + log=None, + ) + from vectordatasource.transform import keep_n_features_gridded + with self.assertRaises(ValueError): + keep_n_features_gridded(ctx) + self.fail("Should raise an exception when reverse-sorting a non-numeric property") class TagsPriorityI18nTest(unittest.TestCase): diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index b869cfb75..ee01a9e61 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -3187,9 +3187,28 @@ def keep_n_features_gridded(ctx): buckets[bucket_id].append((shape, props, fid)) + def sorting_values_for_feature(f): + _, props, _ = f + + values = [] + for k in sorting_keys: + v = props.get(k['sort_key']) + + if v is None: + values.append(v) + continue + + if k.get('reverse'): + v *= -1 + if v == '': + raise ValueError("Cannot reverse string value %s" % props.get(k['sort_key'])) + + values.append(v) + return values + # Sort the features in each bucket and pick the top items to include in the output for features_in_bucket in buckets.values(): - sorted_features = sorted(features_in_bucket, key=lambda i: tuple(i[1].get(k) for k in sorting_keys), reverse=True) + sorted_features = sorted(features_in_bucket, key=sorting_values_for_feature) new_features.extend(sorted_features[:max_items]) layer['features'] = new_features From 44a3d8041edc63b21684cb1f331f3d96046a5f32 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Thu, 2 Dec 2021 16:58:33 -0600 Subject: [PATCH 12/16] Make integration test work --- integration-test/1999-keep-n-gridded.py | 406 ++---------------------- 1 file changed, 22 insertions(+), 384 deletions(-) diff --git a/integration-test/1999-keep-n-gridded.py b/integration-test/1999-keep-n-gridded.py index 246ce3a91..db5298b33 100644 --- a/integration-test/1999-keep-n-gridded.py +++ b/integration-test/1999-keep-n-gridded.py @@ -8,390 +8,28 @@ class KeepNGriddedPlaces(FixtureTest): def setUp(self): super(KeepNGriddedPlaces, self).setUp() - ways = [ - dsl.way(0, wkt_loads('POINT (139.688014 35.62125)'), {u'id': u'57542483', u'name': u'目黒区', u'name:en': u'Meguro', u'place': u'city', u'population': u'282785', u'wikidata': u'Q233903'}), - dsl.way(1, wkt_loads('POINT (139.645796 35.86164)'), {u'capital': u'4', u'id': u'243993095', u'name': u'さいたま市', u'name:en': u'Saitama', u'place': u'city', u'population': u'1182115', u'wikidata': u'Q134635'}), - dsl.way(2, wkt_loads('POINT (139.327644 35.85569)'), {u'id': u'247962196', u'name': u'飯能市', u'name:en': u'Hanno', u'place': u'city', u'population': u'79931', u'wikidata': u'Q850472'}), - dsl.way(3, wkt_loads('POINT (139.085761 35.991451)'), {u'id': u'248008276', u'name': u'秩父市', u'name:en': u'Chichibu', u'place': u'city', u'population': u'63555', u'wikidata': u'Q647079'}), - dsl.way(4, wkt_loads('POINT (139.759455 35.682839)'), {u'admin_leve': u'2', u'capital': u'yes', u'id': u'265018692', u'name': u'東京都 Tokyo', u'name:en': u'Tokyo', u'place': u'city', u'population': u'13613660', u'wikidata': u'Q1490'}), - dsl.way(5, wkt_loads('POINT (139.388614 36.147247)'), {u'id': u'301641122', u'name': u'熊谷市', u'name:en': u'Kumagaya', u'place': u'city', u'population': u'198742', u'wikidata': u'Q41106'}), - dsl.way(6, wkt_loads('POINT (139.4559 36.138605)'), {u'id': u'302348601', u'name': u'行田市', u'name:en': u'Gyoda', u'place': u'city', u'population': u'80562', u'wikidata': u'Q860659'}), - dsl.way(7, wkt_loads('POINT (139.534425 36.212126)'), {u'id': u'302355166', u'name': u'明和町', u'name:en': u'Meiwa', u'place': u'town', u'population': u'11044', u'wikidata': u'Q1203274'}), - dsl.way(8, wkt_loads('POINT (137.925887 34.750052)'), {u'id': u'420453539', u'name': u'袋井市', u'name:en': u'Fukuroi', u'place': u'city', u'population': u'86532', u'wikidata': u'Q821337'}), - dsl.way(9, wkt_loads('POINT (138.018733 34.793469)'), {u'id': u'420453612', u'name': u'掛川市', u'name:en': u'Kakegawa', u'place': u'city', u'population': u'114602', u'wikidata': u'Q823988'}), - dsl.way(10, wkt_loads('POINT (137.935383 34.863955)'), {u'id': u'420453634', u'name': u'森町', u'name:en': u'Mori', u'place': u'town', u'population': u'18528', u'wikidata': u'Q1345571'}), - dsl.way(11, wkt_loads('POINT (137.851285 34.706481)'), {u'id': u'420453696', u'name': u'磐田市', u'name:en': u'Iwata', u'place': u'city', u'population': u'166426', u'wikidata': u'Q386651'}), - dsl.way(12, wkt_loads('POINT (139.542158 36.245434)'), {u'id': u'444778917', u'name': u'館林市', u'name:en': u'Tatebayashi', u'place': u'city', u'population': u'76102', u'wikidata': u'Q858016'}), - dsl.way(13, wkt_loads('POINT (139.339039 35.907767)'), {u'id': u'459653520', u'name': u'日高市', u'name:en': u'Hidaka', u'place': u'city', u'population': u'56224', u'wikidata': u'Q905721'}), - dsl.way(14, wkt_loads('POINT (137.968714 36.238205)'), {u'id': u'470328639', u'name': u'松本市', u'name:en': u'Matsumoto', u'place': u'city', u'population': u'227579', u'wikidata': u'Q213324'}), - dsl.way(15, wkt_loads('POINT (139.563534 35.712898)'), {u'id': u'509904081', u'name': u'武蔵野市', u'name:en': u'Musashino', u'place': u'city', u'population': u'140162', u'wikidata': u'Q210661'}), - dsl.way(16, wkt_loads('POINT (139.572916 35.685227)'), {u'id': u'527555169', u'name': u'三鷹市', u'name:en': u'Mitaka', u'place': u'city', u'population': u'189577', u'wikidata': u'Q242885'}), - dsl.way(17, wkt_loads('POINT (139.485693 35.925115)'), {u'id': u'537121807', u'name': u'川越市', u'name:en': u'Kawagoe', u'place': u'city', u'population': u'350745', u'wikidata': u'Q319740'}), - dsl.way(18, wkt_loads('POINT (139.666708 36.061883)'), {u'id': u'546630465', u'name': u'久喜市', u'name:en': u'Kuki', u'place': u'city', u'population': u'151598', u'wikidata': u'Q47535'}), - dsl.way(19, wkt_loads('POINT (137.698058 35.069431)'), {u'id': u'569005471', u'name': u'東栄町', u'name:en': u'Toei', u'place': u'town', u'population': u'3446', u'wikidata': u'Q1354877'}), - dsl.way(20, wkt_loads('POINT (139.063283 36.389342)'), {u'capital': u'4', u'id': u'574841107', u'name': u'前橋市', u'name:en': u'Maebashi', u'place': u'city', u'population': u'324644', u'wikidata': u'Q201613'}), - dsl.way(21, wkt_loads('POINT (139.575977 35.634023)'), {u'id': u'602527728', u'name': u'狛江市', u'name:en': u'Komae', u'place': u'city', u'population': u'76234', u'wikidata': u'Q86536'}), - dsl.way(22, wkt_loads('POINT (139.554815 35.660036)'), {u'id': u'621286703', u'name': u'調布市', u'name:en': u'Chofu', u'place': u'city', u'population': u'232573', u'wikidata': u'Q210667'}), - dsl.way(23, wkt_loads('POINT (139.473445 35.661112)'), {u'id': u'621890744', u'name': u'府中市', u'name:en': u'Fuchu', u'place': u'city', u'population': u'261991', u'wikidata': u'Q208818'}), - dsl.way(24, wkt_loads('POINT (139.283071 35.660175)'), {u'id': u'622423997', u'name': u'八王子市', u'name:en': u'Hachioji', u'place': u'city', u'population': u'555517', u'wikidata': u'Q208863'}), - dsl.way(25, wkt_loads('POINT (139.414705 35.661072)'), {u'id': u'622424880', u'name': u'日野市', u'name:en': u'Hino', u'place': u'city', u'population': u'171309', u'wikidata': u'Q236197'}), - dsl.way(26, wkt_loads('POINT (139.507776 35.638229)'), {u'id': u'622640333', u'name': u'稲城市', u'name:en': u'Inagi', u'place': u'city', u'population': u'90112', u'wikidata': u'Q317847'}), - dsl.way(27, wkt_loads('POINT (139.443503 35.637188)'), {u'id': u'622642835', u'name': u'多摩市', u'name:en': u'Tama', u'place': u'city', u'population': u'144348', u'wikidata': u'Q213263'}), - dsl.way(28, wkt_loads('POINT (139.664468 35.718123)'), {u'id': u'622866764', u'name': u'中野区', u'name:en': u'Nakano', u'place': u'city', u'population': u'336639', u'wikidata': u'Q234087'}), - dsl.way(29, wkt_loads('POINT (139.638735 35.74836)'), {u'id': u'622868305', u'name': u'練馬区', u'name:en': u'Nerima', u'place': u'city', u'population': u'733150', u'wikidata': u'Q232655'}), - dsl.way(30, wkt_loads('POINT (139.605869 35.781705)'), {u'id': u'622868936', u'name': u'和光市', u'name:en': u'Wako', u'place': u'city', u'population': u'82017', u'wikidata': u'Q658058'}), - dsl.way(31, wkt_loads('POINT (139.593733 35.797086)'), {u'id': u'622870825', u'name': u'朝霞市', u'name:en': u'Asaka', u'place': u'city', u'population': u'130764', u'wikidata': u'Q646834'}), - dsl.way(32, wkt_loads('POINT (139.442839 35.564193)'), {u'id': u'623797057', u'name': u'町田市', u'name:en': u'Machida', u'place': u'city', u'population': u'433720', u'wikidata': u'Q210628'}), - dsl.way(33, wkt_loads('POINT (139.454224 35.709674)'), {u'id': u'623801472', u'name': u'国分寺市', u'name:en': u'Kokubunji', u'place': u'city', u'population': u'123290', u'wikidata': u'Q317834'}), - dsl.way(34, wkt_loads('POINT (139.43624 35.681991)'), {u'id': u'623805032', u'name': u'国立市', u'name:en': u'Kunitachi', u'place': u'city', u'population': u'73934', u'wikidata': u'Q330007'}), - dsl.way(35, wkt_loads('POINT (139.714222 35.736156)'), {u'id': u'656246516', u'name': u'豊島区', u'name:en': u'Toshima', u'place': u'city', u'population': u'298562', u'wikidata': u'Q236680'}), - dsl.way(36, wkt_loads('POINT (139.744732 35.71881)'), {u'id': u'664479961', u'name': u'文京区', u'name:en': u'Bunkyo', u'place': u'city', u'population': u'227902', u'wikidata': u'Q212713'}), - dsl.way(37, wkt_loads('POINT (139.565203 35.793443)'), {u'id': u'671141124', u'name': u'新座市', u'name:en': u'Niiza', u'place': u'city', u'population': u'164024', u'wikidata': u'Q386691'}), - dsl.way(38, wkt_loads('POINT (139.59305 35.977408)'), {u'id': u'671141125', u'name': u'上尾市', u'name:en': u'Ageo', u'place': u'city', u'population': u'227127', u'wikidata': u'Q163888'}), - dsl.way(39, wkt_loads('POINT (139.967242 36.184355)'), {u'id': u'674922239', u'name': u'下妻市', u'name:en': u'Shimotsuma', u'place': u'city', u'population': u'42635', u'wikidata': u'Q533241'}), - dsl.way(40, wkt_loads('POINT (137.70371599999999 35.786805)'), {u'id': u'702987312', u'name': u'上松町', u'name:en': u'Agematsu', u'place': u'town', u'population': u'4670', u'wikidata': u'Q374859'}), - dsl.way(41, wkt_loads('POINT (137.816191 35.323388)'), {u'id': u'702987314', u'name': u'阿南町', u'name:en': u'Anan', u'place': u'town', u'population': u'4962', u'wikidata': u'Q1203314'}), - dsl.way(42, wkt_loads('POINT (137.850889 36.502909)'), {u'id': u'702987319', u'name': u'大町市', u'name:en': u'Omachi', u'place': u'city', u'population': u'27203', u'wikidata': u'Q385375'}), - dsl.way(43, wkt_loads('POINT (137.954916 35.830452)'), {u'id': u'702987327', u'name': u'伊那市', u'name:en': u'Ina', u'place': u'city', u'population': u'67077', u'wikidata': u'Q840888'}), - dsl.way(44, wkt_loads('POINT (137.878361 35.55155)'), {u'id': u'702987329', u'name': u'高森町', u'name:en': u'Takamori', u'place': u'town', u'population': u'13080', u'wikidata': u'Q1203136'}), - dsl.way(45, wkt_loads('POINT (137.821952 35.51471)'), {u'id': u'702987331', u'name': u'飯田市', u'name:en': u'Iida', u'place': u'city', u'population': u'99350', u'wikidata': u'Q841129'}), - dsl.way(46, wkt_loads('POINT (137.938925 35.729671)'), {u'id': u'702987332', u'name': u'駒ヶ根市', u'name:en': u'Komagane', u'place': u'city', u'population': u'32321', u'wikidata': u'Q838684'}), - dsl.way(47, wkt_loads('POINT (137.909743 35.597496)'), {u'id': u'702987333', u'name': u'松川町', u'name:en': u'Matsukawa', u'place': u'town', u'population': u'13167', u'wikidata': u'Q222825'}), - dsl.way(48, wkt_loads('POINT (137.905921 35.680007)'), {u'id': u'702987335', u'name': u'飯島町', u'name:en': u'Iijima', u'place': u'town', u'population': u'9530', u'wikidata': u'Q522462'}), - dsl.way(49, wkt_loads('POINT (137.980492 35.916221)'), {u'id': u'702987342', u'name': u'箕輪町', u'name:en': u'Minowa', u'place': u'town', u'population': u'25241', u'wikidata': u'Q1346975'}), - dsl.way(50, wkt_loads('POINT (137.924649 35.973252)'), {u'id': u'702987343', u'name': u'辰野町', u'name:en': u'Tatsuno', u'place': u'town', u'population': u'19770', u'wikidata': u'Q1347504'}), - dsl.way(51, wkt_loads('POINT (138.117682 36.116594)'), {u'id': u'702987346', u'name': u'下諏訪町', u'name:en': u'Shimosuwa', u'place': u'town', u'population': u'20236', u'wikidata': u'Q1204211'}), - dsl.way(52, wkt_loads('POINT (138.049549 36.07853)'), {u'id': u'702987348', u'name': u'岡谷市', u'name:en': u'Okaya', u'place': u'city', u'population': u'50128', u'wikidata': u'Q838672'}), - dsl.way(53, wkt_loads('POINT (137.952801 36.124957)'), {u'id': u'702987349', u'name': u'塩尻市', u'name:en': u'Shiojiri', u'place': u'city', u'population': u'66979', u'wikidata': u'Q857272'}), - dsl.way(54, wkt_loads('POINT (138.114118 36.03209)'), {u'id': u'702987350', u'name': u'諏訪市', u'name:en': u'Suwa', u'place': u'city', u'population': u'50140', u'wikidata': u'Q846338'}), - dsl.way(55, wkt_loads('POINT (138.031902 36.114395)'), {u'id': u'702987351', u'name': u'長野県', u'name:en': u'Nagano Prefecture', u'place': u'province', u'wikidata': u'Q127877'}), - dsl.way(56, wkt_loads('POINT (138.157854 35.98562)'), {u'id': u'702987356', u'name': u'茅野市', u'name:en': u'Chino', u'place': u'city', u'population': u'55646', u'wikidata': u'Q838660'}), - dsl.way(57, wkt_loads('POINT (138.20262 35.908326)'), {u'id': u'702987357', u'name': u'富士見町', u'name:en': u'Fujimi', u'place': u'town', u'population': u'14493', u'wikidata': u'Q1204145'}), - dsl.way(58, wkt_loads('POINT (138.48351 36.160367)'), {u'id': u'702987361', u'name': u'佐久穂町', u'name:en': u'Sakuho', u'place': u'town', u'population': u'11186', u'wikidata': u'Q1203700'}), - dsl.way(59, wkt_loads('POINT (138.214356 36.187804)'), {u'id': u'702987362', u'name': u'長和町', u'name:en': u'Nagawa', u'place': u'town', u'population': u'6166', u'wikidata': u'Q1346846'}), - dsl.way(60, wkt_loads('POINT (138.485497 36.079973)'), {u'id': u'702987363', u'name': u'小海町', u'name:en': u'Koumi', u'place': u'town', u'population': u'4713', u'wikidata': u'Q1204222'}), - dsl.way(61, wkt_loads('POINT (137.905497 36.304408)'), {u'id': u'702987365', u'name': u'安曇野市', u'name:en': u'Azumino', u'place': u'city', u'population': u'94871', u'wikidata': u'Q534667'}), - dsl.way(62, wkt_loads('POINT (137.87459 36.421327)'), {u'id': u'702987373', u'name': u'池田町', u'name:en': u'Ikeda', u'place': u'town', u'population': u'9926', u'wikidata': u'Q1204048'}), - dsl.way(63, wkt_loads('POINT (139.681209 35.774143)'), {u'id': u'714895390', u'name': u'板橋区', u'name:en': u'Itabashi', u'place': u'city', u'population': u'575432', u'wikidata': u'Q232635'}), - dsl.way(64, wkt_loads('POINT (139.636288 35.699493)'), {u'id': u'718383251', u'name': u'杉並区', u'name:en': u'Suginami', u'place': u'city', u'population': u'540180', u'wikidata': u'Q232631'}), - dsl.way(65, wkt_loads('POINT (139.805017 35.700429)'), {u'id': u'721772119', u'name': u'墨田区', u'name:en': u'Sumida', u'place': u'city', u'population': u'263484', u'wikidata': u'Q235135'}), - dsl.way(66, wkt_loads('POINT (139.871091 35.678278)'), {u'id': u'721783580', u'name': u'江戸川区', u'name:en': u'Edogawa', u'place': u'city', u'population': u'691417', u'wikidata': u'Q214056'}), - dsl.way(67, wkt_loads('POINT (139.863816 35.751733)'), {u'id': u'721783585', u'name': u'葛飾区', u'name:en': u'Katsushika', u'place': u'city', u'population': u'451483', u'wikidata': u'Q232628'}), - dsl.way(68, wkt_loads('POINT (139.81279 35.649154)'), {u'admin_leve': u'7', u'id': u'721916368', u'name': u'江東区', u'name:en': u'Koto', u'place': u'city', u'population': u'509438', u'wikidata': u'Q215175'}), - dsl.way(69, wkt_loads('POINT (139.736687 35.755838)'), {u'id': u'722053207', u'name': u'北区', u'name:en': u'Kita', u'place': u'city', u'population': u'349573', u'wikidata': u'Q235130'}), - dsl.way(70, wkt_loads('POINT (140.303574 35.972278)'), {u'id': u'734950653', u'name': u'稲敷市', u'name:en': u'Inashiki', u'place': u'city', u'population': u'41392', u'wikidata': u'Q838675'}), - dsl.way(71, wkt_loads('POINT (140.471393 36.365779)'), {u'capital': u'4', u'id': u'736355846', u'name': u'水戸市', u'name:en': u'Mito', u'place': u'city', u'population': u'270775', u'wikidata': u'Q204249'}), - dsl.way(72, wkt_loads('POINT (140.304226 36.345224)'), {u'id': u'737237199', u'name': u'笠間市', u'name:en': u'Kasama', u'place': u'city', u'population': u'75698', u'wikidata': u'Q845851'}), - dsl.way(73, wkt_loads('POINT (140.352368 36.238976)'), {u'id': u'737237574', u'name': u'小美玉市', u'name:en': u'Omitama', u'place': u'city', u'population': u'50180', u'wikidata': u'Q430584'}), - dsl.way(74, wkt_loads('POINT (140.287431 36.190599)'), {u'id': u'738650161', u'name': u'石岡市', u'name:en': u'Ishioka', u'place': u'city', u'population': u'74184', u'wikidata': u'Q819658'}), - dsl.way(75, wkt_loads('POINT (140.487177 36.457227)'), {u'id': u'742470966', u'name': u'那珂市', u'name:en': u'Naka', u'place': u'city', u'population': u'53897', u'wikidata': u'Q633647'}), - dsl.way(76, wkt_loads('POINT (140.204593 36.07863)'), {u'id': u'750504981', u'name': u'土浦市', u'name:en': u'Tsuchiura', u'place': u'city', u'population': u'139261', u'wikidata': u'Q653446'}), - dsl.way(77, wkt_loads('POINT (140.53534 36.396124)'), {u'id': u'752603189', u'name': u'ひたちなか市', u'name:en': u'Hitachinaka', u'place': u'city', u'population': u'155970', u'wikidata': u'Q696772'}), - dsl.way(78, wkt_loads('POINT (140.424093 36.287119)'), {u'id': u'760258942', u'name': u'茨城町', u'name:en': u'Ibaraki', u'place': u'town', u'population': u'32921', u'wikidata': u'Q1203390'}), - dsl.way(79, wkt_loads('POINT (140.574722 36.313338)'), {u'id': u'760279839', u'name': u'大洗町', u'name:en': u'Oarai', u'place': u'town', u'population': u'16886', u'wikidata': u'Q1349185'}), - dsl.way(80, wkt_loads('POINT (140.530839 36.537302)'), {u'id': u'761127819', u'name': u'常陸太田市', u'name:en': u'Hitachiota', u'place': u'city', u'population': u'50728', u'wikidata': u'Q838663'}), - dsl.way(81, wkt_loads('POINT (140.376047 36.479676)'), {u'id': u'761151452', u'name': u'城里町', u'name:en': u'Shirosato', u'place': u'town', u'population': u'19800', u'wikidata': u'Q1203068'}), - dsl.way(82, wkt_loads('POINT (138.087355 34.756264)'), {u'id': u'763099410', u'name': u'菊川市', u'name:en': u'Kikugawa', u'place': u'city', u'population': u'46849', u'wikidata': u'Q726565'}), - dsl.way(83, wkt_loads('POINT (138.30381 34.830312)'), {u'id': u'763099666', u'name': u'焼津市', u'name:en': u'Yaizu', u'place': u'city', u'population': u'137453', u'wikidata': u'Q696783'}), - dsl.way(84, wkt_loads('POINT (138.257722 34.867417)'), {u'id': u'763099670', u'name': u'藤枝市', u'name:en': u'Fujieda', u'place': u'city', u'population': u'143227', u'wikidata': u'Q734432'}), - dsl.way(85, wkt_loads('POINT (138.948903 35.147361)'), {u'id': u'763099675', u'name': u'三島市', u'name:en': u'Mishima', u'place': u'city', u'population': u'109515', u'wikidata': u'Q653478'}), - dsl.way(86, wkt_loads('POINT (138.146599 34.879912)'), {u'id': u'763099677', u'name': u'島田市', u'name:en': u'Shimada', u'place': u'city', u'population': u'96478', u'wikidata': u'Q605256'}), - dsl.way(87, wkt_loads('POINT (138.866742 35.094699)'), {u'id': u'763099680', u'name': u'沼津市', u'name:en': u'Numazu', u'place': u'city', u'population': u'195633', u'wikidata': u'Q241037'}), - dsl.way(88, wkt_loads('POINT (138.621468 35.222137)'), {u'id': u'763118286', u'name': u'富士宮市', u'name:en': u'Fujinomiya', u'place': u'city', u'population': u'129951', u'wikidata': u'Q496072'}), - dsl.way(89, wkt_loads('POINT (137.725943 34.710979)'), {u'id': u'763118297', u'name': u'浜松市', u'name:en': u'Hamamatsu', u'place': u'city', u'population': u'797033', u'wikidata': u'Q185125'}), - dsl.way(90, wkt_loads('POINT (138.676386 35.161852)'), {u'id': u'763118309', u'name': u'富士市', u'name:en': u'Fuji', u'place': u'city', u'population': u'253273', u'wikidata': u'Q328613'}), - dsl.way(91, wkt_loads('POINT (138.38299 34.979149)'), {u'capital': u'4', u'id': u'763118317', u'name': u'静岡市', u'name:en': u'Shizuoka', u'place': u'city', u'population': u'706287', u'wikidata': u'Q174691'}), - dsl.way(92, wkt_loads('POINT (140.07651 36.083388)'), {u'id': u'768273008', u'name': u'つくば市', u'name:en': u'Tsukuba', u'place': u'city', u'population': u'234455', u'wikidata': u'Q273863'}), - dsl.way(93, wkt_loads('POINT (139.476606 35.72522)'), {u'id': u'771323155', u'name': u'小平市', u'name:en': u'Kodaira', u'place': u'city', u'population': u'191406', u'wikidata': u'Q213278'}), - dsl.way(94, wkt_loads('POINT (140.237087 36.151737)'), {u'id': u'775480576', u'name': u'かすみがうら市', u'name:en': u'Kasumigaura', u'place': u'city', u'population': u'41297', u'wikidata': u'Q772817'}), - dsl.way(95, wkt_loads('POINT (139.522106 36.065758)'), {u'id': u'820097446', u'name': u'鴻巣市', u'name:en': u'Konosu', u'place': u'city', u'population': u'117883', u'wikidata': u'Q734541'}), - dsl.way(96, wkt_loads('POINT (139.603225 36.130857)'), {u'id': u'820110092', u'name': u'加須市', u'name:en': u'Kazo', u'place': u'city', u'population': u'111572', u'wikidata': u'Q851680'}), - dsl.way(97, wkt_loads('POINT (139.541356 36.002152)'), {u'id': u'820134979', u'name': u'桶川市', u'name:en': u'Okegawa', u'place': u'city', u'population': u'74186', u'wikidata': u'Q570333'}), - dsl.way(98, wkt_loads('POINT (139.530139 36.026871)'), {u'id': u'820134983', u'name': u'北本市', u'name:en': u'Kitamoto', u'place': u'city', u'population': u'66339', u'wikidata': u'Q857285'}), - dsl.way(99, wkt_loads('POINT (139.2817 36.197402)'), {u'id': u'820591253', u'name': u'深谷市', u'name:en': u'Fukaya', u'place': u'city', u'population': u'142996', u'wikidata': u'Q734532'}), - dsl.way(100, wkt_loads('POINT (139.191628 36.243594)'), {u'id': u'820591261', u'name': u'本庄市', u'name:en': u'Honjo', u'place': u'city', u'population': u'77881', u'wikidata': u'Q873565'}), - dsl.way(101, wkt_loads('POINT (139.399796 36.042152)'), {u'id': u'820603381', u'name': u'東松山市', u'name:en': u'Higashimatsuyama', u'place': u'city', u'population': u'92125', u'wikidata': u'Q823907'}), - dsl.way(102, wkt_loads('POINT (139.872225 35.830091)'), {u'id': u'854693636', u'name': u'三郷市', u'name:en': u'Misato', u'place': u'city', u'population': u'139903', u'wikidata': u'Q853061'}), - dsl.way(103, wkt_loads('POINT (139.453534 36.039842)'), {u'id': u'863420607', u'name': u'吉見町', u'name:en': u'Yoshimi', u'place': u'town', u'population': u'19631', u'wikidata': u'Q543313'}), - dsl.way(104, wkt_loads('POINT (139.192778 36.118274)'), {u'id': u'863425361', u'name': u'寄居町', u'name:en': u'Yorii Town', u'place': u'town', u'population': u'34081', u'wikidata': u'Q961604'}), - dsl.way(105, wkt_loads('POINT (139.109648 36.114676)'), {u'id': u'863429893', u'name': u'長瀞町', u'name:en': u'Nagatoro', u'place': u'town', u'population': u'7324', u'wikidata': u'Q1345299'}), - dsl.way(106, wkt_loads('POINT (139.26285 36.057154)'), {u'id': u'863433506', u'name': u'小川町', u'name:en': u'Ogawa', u'place': u'town', u'population': u'31178', u'wikidata': u'Q935037'}), - dsl.way(107, wkt_loads('POINT (139.320248 36.056417)'), {u'id': u'863443078', u'name': u'嵐山町', u'name:en': u'Ranzan', u'place': u'town', u'population': u'18341', u'wikidata': u'Q1358642'}), - dsl.way(108, wkt_loads('POINT (139.181679 36.177163)'), {u'id': u'863449326', u'name': u'美里町', u'name:en': u'Misato', u'place': u'town', u'population': u'11207', u'wikidata': u'Q924129'}), - dsl.way(109, wkt_loads('POINT (139.361022 36.067122)'), {u'id': u'863457603', u'name': u'滑川町', u'name:en': u'Namegawa', u'place': u'town', u'population': u'18212', u'wikidata': u'Q1346985'}), - dsl.way(110, wkt_loads('POINT (139.144691 36.251548)'), {u'id': u'863460004', u'name': u'上里町', u'name:en': u'Kamisato', u'place': u'town', u'population': u'30565', u'wikidata': u'Q1345287'}), - dsl.way(111, wkt_loads('POINT (139.101903 36.213474)'), {u'id': u'863466502', u'name': u'神川町', u'name:en': u'Kamikawa', u'place': u'town', u'population': u'13730', u'wikidata': u'Q1346757'}), - dsl.way(112, wkt_loads('POINT (139.098645 36.070827)'), {u'id': u'863476103', u'name': u'皆野町', u'name:en': u'Minano', u'place': u'town', u'population': u'10133', u'wikidata': u'Q1345365'}), - dsl.way(113, wkt_loads('POINT (139.008513 36.017118)'), {u'id': u'863479149', u'name': u'小鹿野町', u'name:en': u'Ogano', u'place': u'town', u'population': u'12117', u'wikidata': u'Q1345311'}), - dsl.way(114, wkt_loads('POINT (139.1 35.987323)'), {u'id': u'863493320', u'name': u'横瀬町', u'name:en': u'Yokoze', u'place': u'town', u'population': u'8519', u'wikidata': u'Q1345277'}), - dsl.way(115, wkt_loads('POINT (139.296697 36.008531)'), {u'id': u'863522250', u'name': u'ときがわ町', u'name:en': u'Tokigawa', u'place': u'town', u'population': u'11492', u'wikidata': u'Q251027'}), - dsl.way(116, wkt_loads('POINT (139.294131 35.964506)'), {u'id': u'863522262', u'name': u'越生町', u'name:en': u'Ogose', u'place': u'town', u'population': u'11716', u'wikidata': u'Q783333'}), - dsl.way(117, wkt_loads('POINT (139.334087 35.981517)'), {u'id': u'863556895', u'name': u'鳩山町', u'name:en': u'Hatoyama', u'place': u'town', u'population': u'14338', u'wikidata': u'Q925875'}), - dsl.way(118, wkt_loads('POINT (139.484081 35.992441)'), {u'id': u'863580022', u'name': u'川島町', u'name:en': u'Kawajima', u'place': u'town', u'population': u'20788', u'wikidata': u'Q1203970'}), - dsl.way(119, wkt_loads('POINT (139.316039 35.941569)'), {u'id': u'863587414', u'name': u'毛呂山町', u'name:en': u'Moroyama', u'place': u'town', u'population': u'37275', u'wikidata': u'Q1354799'}), - dsl.way(120, wkt_loads('POINT (139.392974 35.934681)'), {u'id': u'863601289', u'name': u'鶴ヶ島市', u'name:en': u'Tsurugashima', u'place': u'city', u'population': u'70255', u'wikidata': u'Q869027'}), - dsl.way(121, wkt_loads('POINT (139.4123 35.852897)'), {u'id': u'863611983', u'name': u'狭山市', u'name:en': u'Sayama', u'place': u'city', u'population': u'152405', u'wikidata': u'Q824009'}), - dsl.way(122, wkt_loads('POINT (139.468748 35.799427)'), {u'id': u'863622554', u'name': u'所沢市', u'name:en': u'Tokorozawa', u'place': u'city', u'population': u'341091', u'wikidata': u'Q165857'}), - dsl.way(123, wkt_loads('POINT (139.390929 35.835814)'), {u'id': u'863647764', u'name': u'入間市', u'name:en': u'Iruma', u'place': u'city', u'population': u'147430', u'wikidata': u'Q696925'}), - dsl.way(124, wkt_loads('POINT (139.519616 35.879548)'), {u'id': u'863664907', u'name': u'ふじみ野市', u'name:en': u'Fujimino', u'place': u'city', u'population': u'114218', u'wikidata': u'Q873590'}), - dsl.way(125, wkt_loads('POINT (139.526484 35.828071)'), {u'id': u'863670473', u'name': u'三芳町', u'name:en': u'Miyoshi', u'place': u'town', u'population': u'38456'}), - dsl.way(126, wkt_loads('POINT (139.549073 35.856555)'), {u'id': u'863670497', u'name': u'富士見市', u'name:en': u'Fujimi', u'place': u'city', u'population': u'108102', u'wikidata': u'Q495809'}), - dsl.way(127, wkt_loads('POINT (139.580035 35.836519)'), {u'id': u'863684931', u'name': u'志木市', u'name:en': u'Shiki', u'place': u'city', u'population': u'72676', u'wikidata': u'Q877202'}), - dsl.way(128, wkt_loads('POINT (139.725409 36.077883)'), {u'id': u'864242320', u'name': u'幸手市', u'name:en': u'Satte', u'place': u'city', u'population': u'51797', u'wikidata': u'Q868971'}), - dsl.way(129, wkt_loads('POINT (139.736745 36.025848)'), {u'id': u'864242816', u'name': u'杉戸町', u'name:en': u'Sugito', u'place': u'town', u'population': u'45495', u'wikidata': u'Q1345351'}), - dsl.way(130, wkt_loads('POINT (139.722628 36.022709)'), {u'id': u'864242817', u'name': u'宮代町', u'name:en': u'Miyashiro', u'place': u'town', u'population': u'33930', u'wikidata': u'Q155317'}), - dsl.way(131, wkt_loads('POINT (139.752019 35.975796)'), {u'id': u'864248665', u'name': u'春日部市', u'name:en': u'Kasukabe', u'place': u'city', u'population': u'232709', u'wikidata': u'Q376023'}), - dsl.way(132, wkt_loads('POINT (139.663255 35.994092)'), {u'id': u'864248673', u'name': u'蓮田市', u'name:en': u'Hasuda', u'place': u'city', u'population': u'62063', u'wikidata': u'Q857256'}), - dsl.way(133, wkt_loads('POINT (139.815881 35.926196)'), {u'id': u'864248683', u'name': u'松伏町', u'name:en': u'Matsubushi', u'place': u'town', u'population': u'30061', u'wikidata': u'Q1346963'}), - dsl.way(134, wkt_loads('POINT (139.854504 35.896283)'), {u'id': u'864255936', u'name': u'吉川市', u'name:en': u'Yoshikawa', u'place': u'city', u'population': u'71063', u'wikidata': u'Q873546'}), - dsl.way(135, wkt_loads('POINT (139.806178 35.826223)'), {u'id': u'864255937', u'name': u'草加市', u'name:en': u'Soka', u'place': u'city', u'population': u'249455', u'wikidata': u'Q734442'}), - dsl.way(136, wkt_loads('POINT (139.838687 35.82264)'), {u'id': u'864255938', u'name': u'八潮市', u'name:en': u'Yashio', u'place': u'city', u'population': u'90017', u'wikidata': u'Q869032'}), - dsl.way(137, wkt_loads('POINT (139.790863 35.890399)'), {u'id': u'864255939', u'name': u'越谷市', u'name:en': u'Koshigaya', u'place': u'city', u'population': u'342486', u'wikidata': u'Q497952'}), - dsl.way(138, wkt_loads('POINT (139.724105 35.807823)'), {u'id': u'864262454', u'name': u'川口市', u'name:en': u'Kawaguchi', u'place': u'city', u'population': u'578112', u'wikidata': u'Q387136'}), - dsl.way(139, wkt_loads('POINT (139.677894 35.817587)'), {u'id': u'864262458', u'name': u'戸田市', u'name:en': u'Toda', u'place': u'city', u'population': u'136150', u'wikidata': u'Q823874'}), - dsl.way(140, wkt_loads('POINT (139.679763 35.82564)'), {u'id': u'864262459', u'name': u'蕨市', u'name:en': u'Warabi', u'place': u'city', u'population': u'72260', u'wikidata': u'Q673010'}), - dsl.way(141, wkt_loads('POINT (139.624088 36.000132)'), {u'id': u'864266122', u'name': u'伊奈町', u'name:en': u'Ina', u'place': u'town', u'population': u'44442', u'wikidata': u'Q915773'}), - dsl.way(142, wkt_loads('POINT (139.790859 35.71745)'), {u'id': u'1042491447', u'name': u'台東区', u'name:en': u'Taito', u'place': u'city', u'population': u'203893', u'wikidata': u'Q232641'}), - dsl.way(143, wkt_loads('POINT (139.753216 35.69381)'), {u'id': u'1042516435', u'name': u'千代田区', u'name:en': u'Chiyoda', u'place': u'city', u'population': u'46397', u'wikidata': u'Q214051'}), - dsl.way(144, wkt_loads('POINT (139.350065 35.70248)'), {u'id': u'1054320920', u'name': u'昭島市', u'name:en': u'Akishima', u'place': u'city', u'population': u'111482', u'wikidata': u'Q212494'}), - dsl.way(145, wkt_loads('POINT (139.443146 36.217976)'), {u'id': u'1068823539', u'name': u'千代田町', u'name:en': u'Chiyoda', u'place': u'town', u'population': u'11318', u'wikidata': u'Q1023773'}), - dsl.way(146, wkt_loads('POINT (138.820495 36.571536)'), {u'id': u'1068823547', u'name': u'東吾妻町', u'name:en': u'Higashiagatsuma', u'place': u'town', u'population': u'14033', u'wikidata': u'Q1203419'}), - dsl.way(147, wkt_loads('POINT (139.074502 36.258633)'), {u'id': u'1068823554', u'name': u'藤岡市', u'name:en': u'Fujioka', u'place': u'city', u'population': u'64679', u'wikidata': u'Q596486'}), - dsl.way(148, wkt_loads('POINT (139.115025 36.304424)'), {u'id': u'1068823567', u'name': u'玉村町', u'name:en': u'Tamamura', u'place': u'town', u'population': u'36654', u'wikidata': u'Q1203600'}), - dsl.way(149, wkt_loads('POINT (138.840906 36.589891)'), {u'id': u'1068823586', u'name': u'中之条町', u'name:en': u'Nakanojo', u'place': u'town', u'population': u'16850', u'wikidata': u'Q967920'}), - dsl.way(150, wkt_loads('POINT (138.889979 36.259827)'), {u'id': u'1068823595', u'name': u'富岡市', u'name:en': u'Tomioka', u'place': u'city', u'population': u'48799', u'wikidata': u'Q873835'}), - dsl.way(151, wkt_loads('POINT (139.033483 36.52198)'), {u'id': u'1068823601', u'name': u'群馬県', u'name:en': u'Gunma Prefecture', u'place': u'province'}), - dsl.way(152, wkt_loads('POINT (139.281093 36.394802)'), {u'id': u'1068823637', u'name': u'みどり市', u'name:en': u'Midori', u'place': u'city', u'population': u'50680', u'wikidata': u'Q576556'}), - dsl.way(153, wkt_loads('POINT (139.000129 36.489461)'), {u'id': u'1068823640', u'name': u'渋川市', u'name:en': u'Shibukawa', u'place': u'city', u'population': u'76552', u'wikidata': u'Q851492'}), - dsl.way(154, wkt_loads('POINT (138.789044 36.212527)'), {u'id': u'1068823641', u'name': u'下仁田町', u'name:en': u'Shimonita', u'place': u'town', u'population': u'7564', u'wikidata': u'Q1346871'}), - dsl.way(155, wkt_loads('POINT (139.009713 36.447388)'), {u'id': u'1068823645', u'name': u'吉岡町', u'name:en': u'Yoshioka', u'place': u'town', u'population': u'21080', u'wikidata': u'Q1154580'}), - dsl.way(156, wkt_loads('POINT (139.331021 36.40553)'), {u'id': u'1068823646', u'name': u'桐生市', u'name:en': u'Kiryu', u'place': u'city', u'population': u'111554', u'wikidata': u'Q634022'}), - dsl.way(157, wkt_loads('POINT (138.921632 36.242863)'), {u'id': u'1068823647', u'name': u'甘楽町', u'name:en': u'Kanra', u'place': u'town', u'population': u'13200', u'wikidata': u'Q1203523'}), - dsl.way(158, wkt_loads('POINT (138.916716 36.116)'), {u'id': u'1068823648', u'name': u'神流町', u'name:en': u'Kanna', u'place': u'town', u'population': u'1954', u'wikidata': u'Q1203059'}), - dsl.way(159, wkt_loads('POINT (139.003276 36.322098)'), {u'id': u'1068823649', u'name': u'高崎市', u'name:en': u'Takasaki', u'place': u'city', u'population': u'370176', u'wikidata': u'Q336438'}), - dsl.way(160, wkt_loads('POINT (138.64996 36.543771)'), {u'id': u'1068823654', u'name': u'長野原町', u'name:en': u'Naganohara', u'place': u'town', u'population': u'5536', u'wikidata': u'Q1203366'}), - dsl.way(161, wkt_loads('POINT (139.375423 36.291156)'), {u'id': u'1068823657', u'name': u'太田市', u'name:en': u'Ota', u'place': u'city', u'population': u'221403', u'wikidata': u'Q386179'}), - dsl.way(162, wkt_loads('POINT (138.596085 36.620667)'), {u'id': u'1068823658', u'name': u'草津町', u'name:en': u'Kusatsu', u'place': u'town', u'population': u'6518', u'wikidata': u'Q1358949'}), - dsl.way(163, wkt_loads('POINT (139.416011 35.975417)'), {u'admin_leve': u'4', u'id': u'1068823662', u'name': u'埼玉県', u'name:en': u'Saitama Prefecture', u'place': u'province'}), - dsl.way(164, wkt_loads('POINT (139.405421 36.247743)'), {u'id': u'1068823675', u'name': u'大泉町', u'name:en': u'Oizumi', u'place': u'town', u'population': u'41202', u'wikidata': u'Q385080'}), - dsl.way(165, wkt_loads('POINT (139.196808 36.311173)'), {u'id': u'1068823679', u'name': u'伊勢崎市', u'name:en': u'Isesaki', u'place': u'city', u'population': u'209895', u'wikidata': u'Q328596'}), - dsl.way(166, wkt_loads('POINT (140.181878 35.911316)'), {u'id': u'1079080827', u'name': u'龍ケ崎市', u'name:en': u'Ryugasaki', u'place': u'city', u'population': u'77433', u'wikidata': u'Q844138'}), - dsl.way(167, wkt_loads('POINT (140.058324 36.548274)'), {u'id': u'1108891166', u'name': u'芳賀町', u'name:en': u'Haga', u'place': u'town', u'population': u'15189', u'wikidata': u'Q1203553'}), - dsl.way(168, wkt_loads('POINT (139.733591 36.381818)'), {u'id': u'1108891177', u'name': u'栃木市', u'name:en': u'Tochigi', u'place': u'city', u'population': u'157645', u'wikidata': u'Q44830'}), - dsl.way(169, wkt_loads('POINT (139.804607 36.427353)'), {u'id': u'1108891188', u'name': u'壬生町', u'name:en': u'Mibu', u'place': u'town', u'population': u'39951', u'wikidata': u'Q1354910'}), - dsl.way(170, wkt_loads('POINT (139.882878 36.554968)'), {u'capital': u'4', u'id': u'1108891208', u'name': u'宇都宮市', u'name:en': u'Utsunomiya', u'place': u'city', u'population': u'518594', u'wikidata': u'Q200589'}), - dsl.way(171, wkt_loads('POINT (139.740778 36.23313)'), {u'id': u'1108891226', u'name': u'野木町', u'name:en': u'Nogi', u'place': u'town', u'population': u'25292', u'wikidata': u'Q1203180'}), - dsl.way(172, wkt_loads('POINT (139.909834 36.439316)'), {u'id': u'1108891240', u'name': u'上三川町', u'name:en': u'Kaminokawa', u'place': u'town', u'population': u'31046', u'wikidata': u'Q1345604'}), - dsl.way(173, wkt_loads('POINT (139.449773 36.340191)'), {u'id': u'1108891308', u'name': u'足利市', u'name:en': u'Ashikaga', u'place': u'city', u'population': u'147699', u'wikidata': u'Q374477'}), - dsl.way(174, wkt_loads('POINT (140.093597 36.46735)'), {u'id': u'1108891330', u'name': u'益子町', u'name:en': u'Mashiko', u'place': u'town', u'population': u'23281', u'wikidata': u'Q1346925'}), - dsl.way(175, wkt_loads('POINT (140.013158 36.440445)'), {u'id': u'1108891341', u'name': u'真岡市', u'name:en': u'Mooka', u'place': u'city', u'population': u'79548', u'wikidata': u'Q498060'}), - dsl.way(176, wkt_loads('POINT (140.187406 36.532164)'), {u'id': u'1108891343', u'name': u'茂木町', u'name:en': u'Motegi', u'place': u'town', u'population': u'13188', u'wikidata': u'Q644327'}), - dsl.way(177, wkt_loads('POINT (140.102152 36.543254)'), {u'id': u'1108891361', u'name': u'市貝町', u'name:en': u'Ichikai', u'place': u'town', u'population': u'11720', u'wikidata': u'Q577654'}), - dsl.way(178, wkt_loads('POINT (139.578429 36.314412)'), {u'id': u'1108891363', u'name': u'佐野市', u'name:en': u'Sano', u'place': u'city', u'population': u'117521', u'wikidata': u'Q646912'}), - dsl.way(179, wkt_loads('POINT (139.800148 36.314737)'), {u'id': u'1108891371', u'name': u'小山市', u'name:en': u'Oyama', u'place': u'city', u'population': u'167535', u'wikidata': u'Q374511'}), - dsl.way(180, wkt_loads('POINT (139.775565 35.666255)'), {u'admin_leve': u'7', u'id': u'1111454595', u'name': u'中央区', u'name:en': u'Chuo', u'place': u'city', u'population': u'158508', u'wikidata': u'Q212704'}), - dsl.way(181, wkt_loads('POINT (139.78131 35.737529)'), {u'id': u'1111454600', u'name': u'荒川区', u'name:en': u'Arakawa', u'place': u'city', u'population': u'216232', u'wikidata': u'Q232624'}), - dsl.way(182, wkt_loads('POINT (139.715843 35.561206)'), {u'id': u'1111454606', u'name': u'大田区', u'name:en': u'Ota', u'place': u'city', u'population': u'728349', u'wikidata': u'Q217234'}), - dsl.way(183, wkt_loads('POINT (139.795319 35.783703)'), {u'id': u'1111454619', u'name': u'足立区', u'name:en': u'Adachi', u'place': u'city', u'population': u'676761', u'wikidata': u'Q213464'}), - dsl.way(184, wkt_loads('POINT (139.740055 35.643227)'), {u'admin_leve': u'7', u'id': u'1111454640', u'name': u'港区', u'name:en': u'Minato', u'place': u'city', u'population': u'254699', u'wikidata': u'Q190088'}), - dsl.way(185, wkt_loads('POINT (139.65627 35.646096)'), {u'admin_leve': u'8', u'id': u'1111454647', u'name': u'世田谷区', u'name:en': u'Setagaya', u'place': u'city', u'population': u'860071', u'wikidata': u'Q231645'}), - dsl.way(186, wkt_loads('POINT (139.73891 35.599252)'), {u'admin_leve': u'7', u'id': u'1111454665', u'name': u'品川区', u'name:en': u'Shinagawa', u'place': u'city', u'population': u'396993', u'wikidata': u'Q233495'}), - dsl.way(187, wkt_loads('POINT (140.213603 36.030794)'), {u'id': u'1125034214', u'name': u'阿見町', u'name:en': u'Ami', u'place': u'town', u'population': u'47535', u'wikidata': u'Q1203814'}), - dsl.way(188, wkt_loads('POINT (140.65046 36.599123)'), {u'admin_leve': u'7', u'id': u'1211787259', u'name': u'日立市', u'name:en': u'Hitachi', u'place': u'city', u'population': u'189958', u'wikidata': u'Q633922'}), - dsl.way(189, wkt_loads('POINT (138.260561 34.773784)'), {u'id': u'1407195635', u'name': u'吉田町', u'name:en': u'Yoshida', u'place': u'town', u'population': u'29093', u'wikidata': u'Q1202789'}), - dsl.way(190, wkt_loads('POINT (138.104479 35.163515)'), {u'id': u'1407195637', u'name': u'川根本町', u'name:en': u'Kawanehoncho', u'place': u'town', u'population': u'7192', u'wikidata': u'Q1204025'}), - dsl.way(191, wkt_loads('POINT (139.755364 36.178025)'), {u'id': u'1419245750', u'name': u'古河市', u'name:en': u'Koga', u'place': u'city', u'population': u'140150', u'wikidata': u'Q836836'}), - dsl.way(192, wkt_loads('POINT (139.993871 36.023569)'), {u'id': u'1429506750', u'name': u'常総市', u'name:en': u'Joso', u'place': u'city', u'population': u'60829', u'wikidata': u'Q851149'}), - dsl.way(193, wkt_loads('POINT (139.698711 35.664596)'), {u'id': u'1438867377', u'name': u'渋谷区', u'name:en': u'Shibuya', u'place': u'city', u'population': u'230707', u'wikidata': u'Q193638'}), - dsl.way(194, wkt_loads('POINT (139.404766 35.724463)'), {u'id': u'1440311172', u'name': u'立川市', u'name:en': u'Tachikawa', u'place': u'city', u'population': u'179575', u'wikidata': u'Q269634'}), - dsl.way(195, wkt_loads('POINT (139.238128 35.803601)'), {u'id': u'1440354068', u'name': u'青梅市', u'name:en': u'Ome', u'place': u'city', u'population': u'136581', u'wikidata': u'Q237683'}), - dsl.way(196, wkt_loads('POINT (140.470338 36.286954)'), {u'id': u'1475102974', u'name': u'茨城県', u'name:en': u'Ibaraki Prefecture', u'place': u'province'}), - dsl.way(197, wkt_loads('POINT (139.385637 35.756509)'), {u'id': u'1513641959', u'name': u'武蔵村山市', u'name:en': u'Musashimurayama', u'place': u'city', u'population': u'71419', u'wikidata': u'Q390806'}), - dsl.way(198, wkt_loads('POINT (139.217028 35.731042)'), {u'id': u'1513663376', u'name': u'あきる野市', u'name:en': u'Akiruno', u'place': u'city', u'population': u'80787', u'wikidata': u'Q240480'}), - dsl.way(199, wkt_loads('POINT (139.096172 35.80966)'), {u'id': u'1513663380', u'name': u'奥多摩町', u'name:en': u'Okutama', u'place': u'town', u'population': u'5234', u'wikidata': u'Q598626'}), - dsl.way(200, wkt_loads('POINT (139.223819 35.758719)'), {u'id': u'1513663382', u'name': u'日の出町', u'name:en': u'Hinode', u'place': u'town', u'population': u'17448', u'wikidata': u'Q1154806'}), - dsl.way(201, wkt_loads('POINT (139.334682 35.737188)'), {u'id': u'1513663390', u'name': u'福生市', u'name:en': u'Fussa', u'place': u'city', u'population': u'58444', u'wikidata': u'Q317813'}), - dsl.way(202, wkt_loads('POINT (139.307862 35.764833)'), {u'id': u'1513663393', u'name': u'羽村市', u'name:en': u'Hamura', u'place': u'city', u'population': u'55434', u'wikidata': u'Q270465'}), - dsl.way(203, wkt_loads('POINT (139.87714 36.305295)'), {u'id': u'1513697885', u'name': u'結城市', u'name:en': u'Yuki', u'place': u'city', u'population': u'51332', u'wikidata': u'Q847569'}), - dsl.way(204, wkt_loads('POINT (139.345734 35.784056)'), {u'id': u'1517292206', u'name': u'瑞穂町', u'name:en': u'Mizuho', u'place': u'town', u'population': u'33194', u'wikidata': u'Q975797'}), - dsl.way(205, wkt_loads('POINT (139.08775 35.632505)'), {u'id': u'1598836214', u'name': u'上野原市', u'name:en': u'Uenohara', u'place': u'city', u'population': u'23785', u'wikidata': u'Q851030'}), - dsl.way(206, wkt_loads('POINT (138.916862 35.643042)'), {u'id': u'1599607817', u'name': u'大月市', u'name:en': u'Otsuki', u'place': u'city', u'population': u'24329', u'wikidata': u'Q386508'}), - dsl.way(207, wkt_loads('POINT (138.846894 35.524113)'), {u'id': u'1610335916', u'name': u'西桂町', u'name:en': u'Nishikatsura', u'place': u'town', u'population': u'4342', u'wikidata': u'Q1203881'}), - dsl.way(208, wkt_loads('POINT (138.905487 35.551618)'), {u'id': u'1610335917', u'name': u'都留市', u'name:en': u'Tsuru', u'place': u'city', u'population': u'31414', u'wikidata': u'Q747362'}), - dsl.way(209, wkt_loads('POINT (138.934829 35.369862)'), {u'id': u'1617003546', u'name': u'小山町', u'name:en': u'Oyama', u'place': u'town', u'population': u'19497', u'wikidata': u'Q726418'}), - dsl.way(210, wkt_loads('POINT (138.877573 35.301048)'), {u'id': u'1619235769', u'name': u'御殿場市', u'name:en': u'Gotemba', u'place': u'city', u'population': u'87929', u'wikidata': u'Q735175'}), - dsl.way(211, wkt_loads('POINT (139.510676 35.704108)'), {u'id': u'1619811558', u'name': u'小金井市', u'name:en': u'Koganei', u'place': u'city', u'population': u'122977', u'wikidata': u'Q242874'}), - dsl.way(212, wkt_loads('POINT (139.400251 34.737515)'), {u'id': u'1632465089', u'name': u'大島町', u'name:en': u'Oshima', u'place': u'town', u'population': u'7884', u'wikidata': u'Q1204507'}), - dsl.way(213, wkt_loads('POINT (138.881738 35.21843)'), {u'id': u'1648713724', u'name': u'裾野市', u'name:en': u'Susono', u'place': u'city', u'population': u'52113', u'wikidata': u'Q847577'}), - dsl.way(214, wkt_loads('POINT (138.807828 35.487457)'), {u'id': u'1670542925', u'name': u'富士吉田市', u'name:en': u'Fujiyoshida', u'place': u'city', u'population': u'48167', u'wikidata': u'Q647508'}), - dsl.way(215, wkt_loads('POINT (138.765304 35.501065)'), {u'id': u'1670542927', u'name': u'富士河口湖町', u'name:en': u'Fujikawaguchiko', u'place': u'town', u'population': u'25329', u'wikidata': u'Q1004231'}), - dsl.way(216, wkt_loads('POINT (139.519089 35.752546)'), {u'id': u'1673414219', u'name': u'東久留米市', u'name:en': u'Higashikurume', u'place': u'city', u'population': u'116566', u'wikidata': u'Q317830'}), - dsl.way(217, wkt_loads('POINT (139.484539 35.768929)'), {u'id': u'1673414230', u'name': u'東村山市', u'name:en': u'Higashimurayama', u'place': u'city', u'population': u'150116', u'wikidata': u'Q240489'}), - dsl.way(218, wkt_loads('POINT (139.531253 35.785483)'), {u'id': u'1673414233', u'name': u'清瀬市', u'name:en': u'Kiyose', u'place': u'city', u'population': u'75072', u'wikidata': u'Q329754'}), - dsl.way(219, wkt_loads('POINT (140.050178 35.911532)'), {u'id': u'1699286306', u'name': u'取手市', u'name:en': u'Toride', u'place': u'city', u'population': u'105447', u'wikidata': u'Q638312'}), - dsl.way(220, wkt_loads('POINT (139.428831 35.740869000000004)'), {u'id': u'1717099673', u'name': u'東大和市', u'name:en': u'Higashiyamato', u'place': u'city', u'population': u'84876', u'wikidata': u'Q390788'}), - dsl.way(221, wkt_loads('POINT (138.63805 35.639933)'), {u'id': u'1775025907', u'name': u'山梨県', u'name:en': u'Yamanashi Prefecture', u'place': u'province', u'wikidata': u'Q132720'}), - dsl.way(222, wkt_loads('POINT (138.146936 34.647956)'), {u'id': u'1788105973', u'name': u'御前崎市', u'name:en': u'Omaezaki', u'place': u'city', u'population': u'31894', u'wikidata': u'Q850380'}), - dsl.way(223, wkt_loads('POINT (138.18517 34.718766)'), {u'id': u'1788105974', u'name': u'牧之原市', u'name:en': u'Makinohara', u'place': u'city', u'population': u'44493', u'wikidata': u'Q850527'}), - dsl.way(224, wkt_loads('POINT (138.392164 35.837156)'), {u'id': u'1788978271', u'name': u'北杜市', u'name:en': u'Hokuto', u'place': u'city', u'population': u'44314', u'wikidata': u'Q825272'}), - dsl.way(225, wkt_loads('POINT (138.362783 35.404554)'), {u'id': u'1796938439', u'name': u'早川町', u'name:en': u'Hayakawa', u'place': u'town', u'population': u'1068', u'wikidata': u'Q1204436'}), - dsl.way(226, wkt_loads('POINT (138.571044 35.665248)'), {u'capital': u'4', u'id': u'1808192270', u'name': u'甲府市', u'name:en': u'Kofu', u'place': u'city', u'population': u'193125', u'wikidata': u'Q201932'}), - dsl.way(227, wkt_loads('POINT (138.687126 35.692845)'), {u'id': u'1808377239', u'name': u'山梨市', u'name:en': u'Yamanashi', u'place': u'city', u'population': u'33962', u'wikidata': u'Q840610'}), - dsl.way(228, wkt_loads('POINT (138.464989 35.608362)'), {u'id': u'1809487734', u'name': u'南アルプス市', u'name:en': u'Minami-Alps', u'place': u'city', u'population': u'70116', u'wikidata': u'Q824000'}), - dsl.way(229, wkt_loads('POINT (138.409373 35.717518)'), {u'id': u'1809498177', u'name': u'韮崎市', u'name:en': u'Nirasaki', u'place': u'city', u'population': u'30070', u'wikidata': u'Q290326'}), - dsl.way(230, wkt_loads('POINT (138.515327 35.668167)'), {u'id': u'1810109727', u'name': u'甲斐市', u'name:en': u'Kai', u'place': u'city', u'population': u'74705', u'wikidata': u'Q577309'}), - dsl.way(231, wkt_loads('POINT (138.639399 35.648547)'), {u'id': u'1812111051', u'name': u'笛吹市', u'name:en': u'Fuefuki', u'place': u'city', u'population': u'68641', u'wikidata': u'Q849434'}), - dsl.way(232, wkt_loads('POINT (138.520992 35.589199)'), {u'id': u'1812278654', u'name': u'中央市', u'name:en': u'Chuo', u'place': u'city', u'population': u'30837', u'wikidata': u'Q666049'}), - dsl.way(233, wkt_loads('POINT (139.702801 35.530531)'), {u'id': u'1933981790', u'name': u'川崎市', u'name:en': u'Kawasaki', u'place': u'city', u'population': u'1509887', u'wikidata': u'Q164234'}), - dsl.way(234, wkt_loads('POINT (139.636768 35.444991)'), {u'capital': u'4', u'id': u'1973500311', u'name': u'横浜市', u'name:en': u'Yokohama', u'place': u'city', u'population': u'3708122', u'wikidata': u'Q38283'}), - dsl.way(235, wkt_loads('POINT (139.869984 34.99653)'), {u'id': u'1977624221', u'name': u'館山市', u'name:en': u'Tateyama', u'place': u'city', u'population': u'46471', u'wikidata': u'Q646755'}), - dsl.way(236, wkt_loads('POINT (139.83714 35.038749)'), {u'id': u'1977631144', u'name': u'南房総市', u'name:en': u'Minamiboso', u'place': u'city', u'population': u'37765', u'wikidata': u'Q873521'}), - dsl.way(237, wkt_loads('POINT (139.835819 35.111102)'), {u'id': u'1977633118', u'name': u'鋸南町', u'name:en': u'Kyonan', u'place': u'town', u'population': u'8022', u'wikidata': u'Q1203580'}), - dsl.way(238, wkt_loads('POINT (140.098692 35.114058)'), {u'id': u'1977635153', u'name': u'鴨川市', u'name:en': u'Kamogawa', u'place': u'city', u'population': u'33932', u'wikidata': u'Q387211'}), - dsl.way(239, wkt_loads('POINT (139.85705 35.303915)'), {u'id': u'1977637091', u'name': u'富津市', u'name:en': u'Futtsu', u'place': u'city', u'population': u'44449', u'wikidata': u'Q498023'}), - dsl.way(240, wkt_loads('POINT (140.24526 35.284792)'), {u'id': u'1977639950', u'name': u'大多喜町', u'name:en': u'Otaki', u'place': u'town', u'population': u'9843', u'wikidata': u'Q1346191'}), - dsl.way(241, wkt_loads('POINT (140.348777 35.191661)'), {u'id': u'1977643116', u'name': u'御宿町', u'name:en': u'Onjuku', u'place': u'town', u'population': u'7315'}), - dsl.way(242, wkt_loads('POINT (140.320745 35.152185)'), {u'id': u'1977652858', u'name': u'勝浦市', u'name:en': u'Katsuura', u'place': u'city', u'population': u'17808', u'wikidata': u'Q696418'}), - dsl.way(243, wkt_loads('POINT (140.664575 35.8899)'), {u'id': u'2016860246', u'name': u'神栖市', u'name:en': u'Kamisu', u'place': u'city', u'population': u'95052', u'wikidata': u'Q840595'}), - dsl.way(244, wkt_loads('POINT (138.09554 34.933249000000004)'), {u'id': u'2035767441', u'name': u'静岡県', u'name:en': u'Shizuoka Prefecture', u'place': u'province'}), - dsl.way(245, wkt_loads('POINT (139.550228 35.73546)'), {u'id': u'2039121337', u'name': u'西東京市', u'name:en': u'Nishitokyo', u'place': u'city', u'population': u'202435', u'wikidata': u'Q242882'}), - dsl.way(246, wkt_loads('POINT (138.859988 35.181254)'), {u'id': u'2055574009', u'name': u'長泉町', u'name:en': u'Nagaizumi', u'place': u'town', u'population': u'42331', u'wikidata': u'Q1204459'}), - dsl.way(247, wkt_loads('POINT (139.031616 35.222919)'), {u'id': u'2055590056', u'name': u'箱根町', u'name:en': u'Hakone', u'place': u'town', u'population': u'11786', u'wikidata': u'Q671040'}), - dsl.way(248, wkt_loads('POINT (140.645029 35.966116)'), {u'id': u'2089866662', u'name': u'鹿嶋市', u'name:en': u'Kashima', u'place': u'city', u'population': u'67802', u'wikidata': u'Q467471'}), - dsl.way(249, wkt_loads('POINT (140.411617 36.54292)'), {u'id': u'2089981684', u'name': u'常陸大宮市', u'name:en': u'Hitachiomiya', u'place': u'city', u'population': u'41342', u'wikidata': u'Q838681'}), - dsl.way(250, wkt_loads('POINT (140.516516 36.158565)'), {u'id': u'2091799198', u'name': u'鉾田市', u'name:en': u'Hokota', u'place': u'city', u'population': u'47463', u'wikidata': u'Q857297'}), - dsl.way(251, wkt_loads('POINT (140.384946 35.253939)'), {u'id': u'2097936978', u'name': u'いすみ市', u'name:en': u'Isumi', u'place': u'city', u'population': u'37442', u'wikidata': u'Q840834'}), - dsl.way(252, wkt_loads('POINT (140.368662 35.372802)'), {u'id': u'2097955629', u'name': u'一宮町', u'name:en': u'Ichinomiya', u'place': u'town', u'population': u'11767', u'wikidata': u'Q1203602'}), - dsl.way(253, wkt_loads('POINT (140.440201 35.535085)'), {u'id': u'2097955691', u'name': u'九十九里町', u'name:en': u'Kujukuri', u'place': u'town', u'population': u'16510', u'wikidata': u'Q1202775'}), - dsl.way(254, wkt_loads('POINT (140.224016 35.723462)'), {u'id': u'2097955765', u'name': u'佐倉市', u'name:en': u'Sakura', u'place': u'city', u'population': u'171927', u'wikidata': u'Q498011'}), - dsl.way(255, wkt_loads('POINT (140.099513 35.722537)'), {u'id': u'2097955818', u'name': u'八千代市', u'name:en': u'Yachiyo', u'place': u'city', u'population': u'195491', u'wikidata': u'Q328651'}), - dsl.way(256, wkt_loads('POINT (140.317865 35.665861)'), {u'id': u'2098146218', u'name': u'八街市', u'name:en': u'Yachimata', u'place': u'city', u'population': u'69315', u'wikidata': u'Q638296'}), - dsl.way(257, wkt_loads('POINT (140.564514 35.70794)'), {u'id': u'2098146219', u'name': u'匝瑳市', u'name:en': u'Sosa', u'place': u'city', u'population': u'36244', u'wikidata': u'Q858367'}), - dsl.way(258, wkt_loads('POINT (140.145298 35.832258)'), {u'id': u'2098146277', u'name': u'印西市', u'name:en': u'Inzai', u'place': u'city', u'population': u'96640', u'wikidata': u'Q637901'}), - dsl.way(259, wkt_loads('POINT (139.902551 35.330238)'), {u'id': u'2098146321', u'name': u'君津市', u'name:en': u'Kimitsu', u'place': u'city', u'population': u'84221', u'wikidata': u'Q637928'}), - dsl.way(260, wkt_loads('POINT (140.167945 35.669655)'), {u'id': u'2098146343', u'name': u'四街道市', u'name:en': u'Yotsukaido', u'place': u'city', u'population': u'90712', u'wikidata': u'Q429373'}), - dsl.way(261, wkt_loads('POINT (140.467716 35.735734)'), {u'id': u'2098146346', u'name': u'多古町', u'name:en': u'Tako', u'place': u'town', u'population': u'14724', u'wikidata': u'Q1202807'}), - dsl.way(262, wkt_loads('POINT (140.320893 35.521604)'), {u'id': u'2098146347', u'name': u'大網白里市', u'name:en': u'Oamishirasato', u'place': u'city', u'population': u'48687', u'wikidata': u'Q1203251'}), - dsl.way(263, wkt_loads('POINT (140.343055 35.726888)'), {u'id': u'2098146348', u'name': u'富里市', u'name:en': u'Tomisato', u'place': u'city', u'population': u'49636', u'wikidata': u'Q692857'}), - dsl.way(264, wkt_loads('POINT (140.1157 35.497775)'), {u'id': u'2098146351', u'name': u'市原市', u'name:en': u'Ichihara', u'place': u'city', u'population': u'279065', u'wikidata': u'Q207881'}), - dsl.way(265, wkt_loads('POINT (139.928568 35.729412)'), {u'id': u'2098146352', u'name': u'市川市', u'name:en': u'Ichikawa', u'place': u'city', u'population': u'469603', u'wikidata': u'Q209785'}), - dsl.way(266, wkt_loads('POINT (140.318338 35.776768)'), {u'id': u'2098146368', u'name': u'成田市', u'name:en': u'Narita', u'place': u'city', u'population': u'131190', u'wikidata': u'Q273798'}), - dsl.way(267, wkt_loads('POINT (140.028065 35.863999)'), {u'id': u'2098146404', u'name': u'我孫子市', u'name:en': u'Abiko', u'place': u'city', u'population': u'130977', u'wikidata': u'Q243859'}), - dsl.way(268, wkt_loads('POINT (140.646453 35.720413)'), {u'id': u'2098146405', u'name': u'旭市', u'name:en': u'Asahi', u'place': u'city', u'population': u'65431', u'wikidata': u'Q637868'}), - dsl.way(269, wkt_loads('POINT (139.91668 35.375973)'), {u'id': u'2098146406', u'name': u'木更津市', u'name:en': u'Kisarazu', u'place': u'city', u'population': u'135461', u'wikidata': u'Q335427'}), - dsl.way(270, wkt_loads('POINT (140.668892 35.83711)'), {u'id': u'2098183328', u'name': u'東庄町', u'name:en': u'Tohnosho', u'place': u'town', u'population': u'14152', u'wikidata': u'Q1342834'}), - dsl.way(271, wkt_loads('POINT (139.903177 35.787937)'), {u'id': u'2098183361', u'name': u'松戸市', u'name:en': u'Matsudo', u'place': u'city', u'population': u'483480', u'wikidata': u'Q320943'}), - dsl.way(272, wkt_loads('POINT (139.975688 35.867622)'), {u'id': u'2098183362', u'name': u'柏市', u'name:en': u'Kashiwa', u'place': u'city', u'population': u'422385', u'wikidata': u'Q319743'}), - dsl.way(273, wkt_loads('POINT (140.244124 35.841044)'), {u'id': u'2098183363', u'name': u'栄町', u'name:en': u'Sakae', u'place': u'town', u'population': u'21228', u'wikidata': u'Q1202754'}), - dsl.way(274, wkt_loads('POINT (140.504854 35.66582)'), {u'id': u'2098183364', u'name': u'横芝光町', u'name:en': u'Yokoshibahikari', u'place': u'town', u'population': u'23762', u'wikidata': u'Q1203260'}), - dsl.way(275, wkt_loads('POINT (139.902626 35.856231)'), {u'id': u'2098183365', u'name': u'流山市', u'name:en': u'Nagareyama', u'place': u'city', u'population': u'186863', u'wikidata': u'Q328625'}), - dsl.way(276, wkt_loads('POINT (140.056063 35.791454)'), {u'id': u'2098183367', u'name': u'白井市', u'name:en': u'Shiroi', u'place': u'city', u'population': u'62374', u'wikidata': u'Q519187'}), - dsl.way(277, wkt_loads('POINT (140.374253 35.454206)'), {u'id': u'2098183398', u'name': u'白子町', u'name:en': u'Shirako', u'place': u'town', u'population': u'11149', u'wikidata': u'Q1203293'}), - dsl.way(278, wkt_loads('POINT (140.319503 35.361086)'), {u'id': u'2098183444', u'name': u'睦沢町', u'name:en': u'Mutsuzawa', u'place': u'town', u'population': u'7222', u'wikidata': u'Q768083'}), - dsl.way(279, wkt_loads('POINT (140.405113 35.901689)'), {u'id': u'2098183450', u'name': u'神崎町', u'name:en': u'Kozaki', u'place': u'town', u'population': u'6133', u'wikidata': u'Q1153721'}), - dsl.way(280, wkt_loads('POINT (140.018956 35.670572)'), {u'id': u'2098183451', u'name': u'習志野市', u'name:en': u'Narashino', u'place': u'city', u'population': u'172497', u'wikidata': u'Q318047'}), - dsl.way(281, wkt_loads('POINT (139.988668 35.699997)'), {u'id': u'2098183459', u'name': u'船橋市', u'name:en': u'Funabashi', u'place': u'city', u'population': u'633263', u'wikidata': u'Q271417'}), - dsl.way(282, wkt_loads('POINT (140.41414 35.693098)'), {u'id': u'2098183474', u'name': u'芝山町', u'name:en': u'Shibayama', u'place': u'town', u'population': u'7431', u'wikidata': u'Q1203689'}), - dsl.way(283, wkt_loads('POINT (140.288075 35.428509)'), {u'id': u'2098183487', u'name': u'茂原市', u'name:en': u'Mobara', u'place': u'city', u'population': u'88824', u'wikidata': u'Q502486'}), - dsl.way(284, wkt_loads('POINT (139.954466 35.429669)'), {u'id': u'2098215068', u'name': u'袖ケ浦市', u'name:en': u'Sodegaura', u'place': u'city', u'population': u'61639', u'wikidata': u'Q646847'}), - dsl.way(285, wkt_loads('POINT (140.269483 35.724714)'), {u'id': u'2098215126', u'name': u'酒々井町', u'name:en': u'Shisui', u'place': u'town', u'population': u'20955', u'wikidata': u'Q782157'}), - dsl.way(286, wkt_loads('POINT (140.000715 35.776646)'), {u'id': u'2098215206', u'name': u'鎌ケ谷市', u'name:en': u'Kamagaya', u'place': u'city', u'population': u'109238', u'wikidata': u'Q387365'}), - dsl.way(287, wkt_loads('POINT (140.237276 35.386036)'), {u'id': u'2098215241', u'name': u'長南町', u'name:en': u'Chonan', u'place': u'town', u'population': u'8206', u'wikidata': u'Q1203194'}), - dsl.way(288, wkt_loads('POINT (140.227151 35.431105)'), {u'id': u'2098215275', u'name': u'長柄町', u'name:en': u'Nagara', u'place': u'town', u'population': u'7337', u'wikidata': u'Q1203545'}), - dsl.way(289, wkt_loads('POINT (140.499279 35.897827)'), {u'id': u'2098215364', u'name': u'香取市', u'name:en': u'Katori', u'place': u'city', u'population': u'75362', u'wikidata': u'Q858357'}), - dsl.way(290, wkt_loads('POINT (139.640682 35.15505)'), {u'id': u'2115184095', u'name': u'三浦市', u'name:en': u'Miura', u'place': u'city', u'population': u'45289', u'wikidata': u'Q823886'}), - dsl.way(291, wkt_loads('POINT (139.246756 35.300994)'), {u'id': u'2115184096', u'name': u'二宮町', u'name:en': u'Ninomiya', u'place': u'town', u'population': u'28378', u'wikidata': u'Q1354853'}), - dsl.way(292, wkt_loads('POINT (139.099241 35.320574)'), {u'id': u'2115184099', u'name': u'南足柄市', u'name:en': u'Minamiashigara', u'place': u'city', u'population': u'43306', u'wikidata': u'Q651742'}), - dsl.way(293, wkt_loads('POINT (139.323536 35.464797)'), {u'id': u'2115184100', u'name': u'厚木市', u'name:en': u'Atsugi', u'place': u'city', u'population': u'225330', u'wikidata': u'Q389711'}), - dsl.way(294, wkt_loads('POINT (139.156636 35.326242)'), {u'id': u'2115184101', u'name': u'大井町', u'name:en': u'Oi', u'place': u'town', u'population': u'17033', u'wikidata': u'Q1202616'}), - dsl.way(295, wkt_loads('POINT (139.460758 35.47269)'), {u'admin_leve': u'7', u'id': u'2115184102', u'name': u'大和市', u'name:en': u'Yamato', u'place': u'city', u'population': u'232922', u'wikidata': u'Q386697'}), - dsl.way(296, wkt_loads('POINT (139.289557 35.317773)'), {u'id': u'2115184103', u'name': u'大磯町', u'name:en': u'Oiso', u'place': u'town', u'population': u'31550', u'wikidata': u'Q385023'}), - dsl.way(297, wkt_loads('POINT (139.383785 35.372922)'), {u'id': u'2115184104', u'name': u'寒川町', u'name:en': u'Samukawa', u'place': u'town', u'population': u'47936', u'wikidata': u'Q1342787'}), - dsl.way(298, wkt_loads('POINT (139.150229 35.263676)'), {u'id': u'2115184105', u'name': u'小田原市', u'name:en': u'Odawara', u'place': u'city', u'population': u'192407', u'wikidata': u'Q267258'}), - dsl.way(299, wkt_loads('POINT (139.05448 35.389492)'), {u'id': u'2115184106', u'name': u'山北町', u'name:en': u'Yamakita', u'place': u'town', u'population': u'10724', u'wikidata': u'Q370478'}), - dsl.way(300, wkt_loads('POINT (139.318278 35.357674)'), {u'id': u'2115184107', u'name': u'平塚市', u'name:en': u'Hiratsuka', u'place': u'city', u'population': u'259698', u'wikidata': u'Q502199'}), - dsl.way(301, wkt_loads('POINT (139.133926 35.359236)'), {u'id': u'2115184110', u'name': u'松田町', u'name:en': u'Matsuda', u'place': u'town', u'population': u'11171', u'wikidata': u'Q1202796'}), - dsl.way(302, wkt_loads('POINT (139.665383 35.273056)'), {u'id': u'2115184112', u'name': u'横須賀市', u'name:en': u'Yokosuka', u'place': u'city', u'population': u'406586', u'wikidata': u'Q200578'}), - dsl.way(303, wkt_loads('POINT (139.12073 35.166784)'), {u'id': u'2115184115', u'name': u'湯河原町', u'name:en': u'Yugawara', u'place': u'town', u'population': u'25026', u'wikidata': u'Q532346'}), - dsl.way(304, wkt_loads('POINT (139.13462 35.160373)'), {u'id': u'2115184117', u'name': u'真鶴町', u'name:en': u'Manazuru', u'place': u'town', u'population': u'7333', u'wikidata': u'Q1202786'}), - dsl.way(305, wkt_loads('POINT (139.430823 35.446048)'), {u'admin_leve': u'7', u'id': u'2115184119', u'name': u'綾瀬市', u'name:en': u'Ayase', u'place': u'city', u'population': u'84139', u'wikidata': u'Q792819'}), - dsl.way(306, wkt_loads('POINT (139.405371 35.329479)'), {u'id': u'2115184120', u'name': u'茅ヶ崎市', u'name:en': u'Chigasaki', u'place': u'city', u'population': u'240618', u'wikidata': u'Q633911'}), - dsl.way(307, wkt_loads('POINT (139.593177 35.272909)'), {u'id': u'2115184121', u'name': u'葉山町', u'name:en': u'Hayama', u'place': u'town', u'population': u'32096', u'wikidata': u'Q1342807'}), - dsl.way(308, wkt_loads('POINT (139.465077 35.364842)'), {u'id': u'2115184122', u'name': u'藤沢市', u'name:en': u'Fujisawa', u'place': u'city', u'population': u'428837', u'wikidata': u'Q386661'}), - dsl.way(309, wkt_loads('POINT (139.583845 35.304067)'), {u'id': u'2115184123', u'name': u'逗子市', u'name:en': u'Zushi', u'place': u'city', u'population': u'57425', u'wikidata': u'Q230843'}), - dsl.way(310, wkt_loads('POINT (139.54442 35.329564)'), {u'id': u'2115184125', u'name': u'鎌倉市', u'name:en': u'Kamakura', u'place': u'city', u'population': u'172284', u'wikidata': u'Q200267'}), - dsl.way(311, wkt_loads('POINT (139.420453 35.499205)'), {u'id': u'2115186706', u'name': u'座間市', u'name:en': u'Zama', u'place': u'city', u'population': u'128737', u'wikidata': u'Q145333'}), - dsl.way(312, wkt_loads('POINT (139.297795 35.532347)'), {u'id': u'2115186707', u'name': u'愛川町', u'name:en': u'Aikawa', u'place': u'town', u'population': u'40343', u'wikidata': u'Q1203267'}), - dsl.way(313, wkt_loads('POINT (139.389999 35.419984)'), {u'id': u'2115186708', u'name': u'海老名市', u'name:en': u'Ebina', u'place': u'city', u'population': u'130678', u'wikidata': u'Q734390'}), - dsl.way(314, wkt_loads('POINT (139.236215 35.56559)'), {u'id': u'2115186710', u'name': u'相模原市', u'name:en': u'Sagamihara', u'place': u'city', u'population': u'722157', u'wikidata': u'Q209779'}), - dsl.way(315, wkt_loads('POINT (140.555282 35.947173)'), {u'id': u'2115199905', u'name': u'潮来市', u'name:en': u'Itako', u'place': u'city', u'population': u'28491', u'wikidata': u'Q840598'}), - dsl.way(316, wkt_loads('POINT (140.488883 35.99019)'), {u'id': u'2115199906', u'name': u'行方市', u'name:en': u'Namekata', u'place': u'city', u'population': u'33914', u'wikidata': u'Q877184'}), - dsl.way(317, wkt_loads('POINT (140.036995 35.963014)'), {u'id': u'2115840208', u'name': u'つくばみらい市', u'name:en': u'Tsukubamirai', u'place': u'city', u'population': u'50615', u'wikidata': u'Q877254'}), - dsl.way(318, wkt_loads('POINT (139.745812 36.114738)'), {u'id': u'2115840209', u'name': u'五霞町', u'name:en': u'Goka', u'place': u'town', u'population': u'8786', u'wikidata': u'Q680056'}), - dsl.way(319, wkt_loads('POINT (139.889662 36.048481)'), {u'id': u'2115840210', u'name': u'坂東市', u'name:en': u'Bando', u'place': u'city', u'population': u'53242', u'wikidata': u'Q583931'}), - dsl.way(320, wkt_loads('POINT (139.795198 36.108379)'), {u'id': u'2115840211', u'name': u'境町', u'name:en': u'Sakai', u'place': u'town', u'population': u'24517', u'wikidata': u'Q1203337'}), - dsl.way(321, wkt_loads('POINT (139.975498 35.95101)'), {u'id': u'2115840213', u'name': u'守谷市', u'name:en': u'Moriya', u'place': u'city', u'population': u'66230', u'wikidata': u'Q840608'}), - dsl.way(322, wkt_loads('POINT (139.874867 35.954908)'), {u'id': u'2115840215', u'name': u'野田市', u'name:en': u'Noda', u'place': u'city', u'population': u'152916', u'wikidata': u'Q328619'}), - dsl.way(323, wkt_loads('POINT (138.945379 34.679545)'), {u'id': u'2377927287', u'name': u'下田市', u'name:en': u'Shimoda', u'place': u'city', u'population': u'22007', u'wikidata': u'Q653402'}), - dsl.way(324, wkt_loads('POINT (139.087685 34.926734)'), {u'id': u'2377927288', u'name': u'伊東市', u'name:en': u'Ito', u'place': u'city', u'population': u'66988', u'wikidata': u'Q721163'}), - dsl.way(325, wkt_loads('POINT (138.961915 35.035531)'), {u'id': u'2377927289', u'name': u'伊豆の国市', u'name:en': u'Izunokuni', u'place': u'city', u'population': u'47624', u'wikidata': u'Q863758'}), - dsl.way(326, wkt_loads('POINT (138.946708 34.976455)'), {u'id': u'2377927290', u'name': u'伊豆市', u'name:en': u'Izu', u'place': u'city', u'population': u'30283', u'wikidata': u'Q696840'}), - dsl.way(327, wkt_loads('POINT (138.998583 35.117085)'), {u'id': u'2377927291', u'name': u'函南町', u'name:en': u'Kannami', u'place': u'town', u'population': u'37347', u'wikidata': u'Q1203533'}), - dsl.way(328, wkt_loads('POINT (138.858719 34.643311)'), {u'id': u'2377927292', u'name': u'南伊豆町', u'name:en': u'Minamiizu', u'place': u'town', u'population': u'8524', u'wikidata': u'Q1203741'}), - dsl.way(329, wkt_loads('POINT (139.035878 34.801476)'), {u'id': u'2377927293', u'name': u'東伊豆町', u'name:en': u'Higashiizu', u'place': u'town', u'population': u'12624', u'wikidata': u'Q304491'}), - dsl.way(330, wkt_loads('POINT (138.801992 34.750811)'), {u'id': u'2377927294', u'name': u'松崎町', u'name:en': u'Matsuzaki', u'place': u'town', u'population': u'6837', u'wikidata': u'Q1204017'}), - dsl.way(331, wkt_loads('POINT (138.983947 34.750862)'), {u'id': u'2377927295', u'name': u'河津町', u'name:en': u'Kawazu', u'place': u'town', u'population': u'7303', u'wikidata': u'Q1203861'}), - dsl.way(332, wkt_loads('POINT (138.898974 35.10764)'), {u'id': u'2377927296', u'name': u'清水町', u'name:en': u'Shimizu', u'place': u'town', u'population': u'32118', u'wikidata': u'Q1203168'}), - dsl.way(333, wkt_loads('POINT (139.059891 35.08992)'), {u'id': u'2377927299', u'name': u'熱海市', u'name:en': u'Atami', u'place': u'city', u'population': u'37000', u'wikidata': u'Q653364'}), - dsl.way(334, wkt_loads('POINT (138.794672 34.800667)'), {u'id': u'2377927313', u'name': u'西伊豆町', u'name:en': u'Nishiizu', u'place': u'town', u'population': u'8234', u'wikidata': u'Q1203949'}), - dsl.way(335, wkt_loads('POINT (139.703632 35.693763)'), {u'capital': u'4', u'id': u'2389061853', u'name': u'新宿区', u'name:en': u'Shinjuku', u'place': u'city', u'population': u'337556', u'wikidata': u'Q179645'}), - dsl.way(336, wkt_loads('POINT (139.677099 36.018618)'), {u'id': u'2716991002', u'name': u'白岡市', u'name:en': u'Shiraoka', u'place': u'city', u'population': u'52109', u'wikidata': u'Q1345322'}), - dsl.way(337, wkt_loads('POINT (139.374753 35.434294)'), {u'admin_leve': u'4', u'id': u'2719205431', u'name': u'神奈川県', u'name:en': u'Kanagawa Prefecture', u'place': u'province'}), - dsl.way(338, wkt_loads('POINT (140.26473 35.549399)'), {u'id': u'2739381522', u'name': u'千葉県', u'name:en': u'Chiba Prefecture', u'place': u'province'}), - dsl.way(339, wkt_loads('POINT (139.90185 35.653052)'), {u'id': u'2900447873', u'name': u'浦安市', u'name:en': u'Urayasu', u'place': u'city', u'population': u'164024', u'wikidata': u'Q319729'}), - dsl.way(340, wkt_loads('POINT (138.461389 35.561111)'), {u'id': u'2955593366', u'name': u'富士川町', u'name:en': u'Fujikawa', u'place': u'town', u'population': u'15294', u'wikidata': u'Q1351723'}), - dsl.way(341, wkt_loads('POINT (138.502222 35.565278)'), {u'id': u'2955593367', u'name': u'市川三郷町', u'name:en': u'Ichikawamisato', u'place': u'town', u'population': u'15673', u'wikidata': u'Q1204453'}), - dsl.way(342, wkt_loads('POINT (138.538955 35.625669)'), {u'id': u'2955593368', u'name': u'昭和町', u'name:en': u'Showa', u'place': u'town', u'population': u'19505', u'wikidata': u'Q1204276'}), - dsl.way(343, wkt_loads('POINT (138.458633 35.259129)'), {u'id': u'2993187421', u'name': u'南部町', u'name:en': u'Nanbu', u'place': u'town', u'population': u'8067', u'wikidata': u'Q1204802'}), - dsl.way(344, wkt_loads('POINT (138.442567 35.468051)'), {u'id': u'2993187422', u'name': u'身延町', u'name:en': u'Minobu', u'place': u'town', u'population': u'12669', u'wikidata': u'Q1204435'}), - dsl.way(345, wkt_loads('POINT (139.120733 35.342161)'), {u'id': u'2993187423', u'name': u'開成町', u'name:en': u'Kaisei', u'place': u'town', u'population': u'17013', u'wikidata': u'Q1202613'}), - dsl.way(346, wkt_loads('POINT (138.887831 36.326365)'), {u'id': u'3231770610', u'name': u'安中市', u'name:en': u'Annaka', u'place': u'city', u'population': u'57097', u'wikidata': u'Q564234'}), - dsl.way(347, wkt_loads('POINT (139.891043 36.181575)'), {u'id': u'3369490337', u'name': u'八千代町', u'name:en': u'Yachiyo', u'place': u'town', u'population': u'22021', u'wikidata': u'Q1203394'}), - dsl.way(348, wkt_loads('POINT (140.244626 35.884548)'), {u'id': u'3369514735', u'name': u'河内町', u'name:en': u'Kawachi', u'place': u'town', u'population': u'9168', u'wikidata': u'Q1203304'}), - dsl.way(349, wkt_loads('POINT (140.138754 35.857362)'), {u'id': u'3372718846', u'name': u'利根町', u'name:en': u'Tone', u'place': u'town', u'population': u'16313', u'wikidata': u'Q1203324'}), - dsl.way(350, wkt_loads('POINT (140.090359 36.327241)'), {u'id': u'3383889945', u'name': u'桜川市', u'name:en': u'Sakuragawa', u'place': u'city', u'population': u'41278', u'wikidata': u'Q990350'}), - dsl.way(351, wkt_loads('POINT (139.97909 36.305194)'), {u'id': u'3385454595', u'name': u'筑西市', u'name:en': u'Chikusei', u'place': u'city', u'population': u'102242', u'wikidata': u'Q694322'}), - dsl.way(352, wkt_loads('POINT (138.793924 35.726318)'), {u'id': u'3457555438', u'name': u'甲州市', u'name:en': u'Koshu', u'place': u'city', u'population': u'30818', u'wikidata': u'Q248723'}), - dsl.way(353, wkt_loads('POINT (139.220648 35.334473)'), {u'id': u'3655646708', u'name': u'中井町', u'name:en': u'Nakai', u'place': u'town', u'population': u'9679', u'wikidata': u'Q1344396'}), - dsl.way(354, wkt_loads('POINT (140.118126 35.609985)'), {u'admin_leve': u'7', u'capital': u'4', u'id': u'3675848658', u'name': u'千葉市', u'name:en': u'Chiba', u'place': u'city', u'population': u'975140', u'wikidata': u'Q170616'}), - dsl.way(355, wkt_loads('POINT (140.413429 35.602875)'), {u'admin_leve': u'7', u'id': u'3675848659', u'name': u'山武市', u'name:en': u'Sanmu', u'place': u'city', u'population': u'50801', u'wikidata': u'Q873528'}), - dsl.way(356, wkt_loads('POINT (140.366259 35.560031)'), {u'admin_leve': u'7', u'id': u'3675848660', u'name': u'東金市', u'name:en': u'Toogane', u'place': u'city', u'population': u'60051', u'wikidata': u'Q637913'}), - dsl.way(357, wkt_loads('POINT (138.120123 36.533698)'), {u'id': u'5901282249', u'name': u'千曲市', u'name:en': u'Chikuma', u'place': u'city', u'population': u'59792', u'wikidata': u'Q179757'}), - dsl.way(358, wkt_loads('POINT (138.249051 36.402119)'), {u'id': u'5901282250', u'name': u'上田市', u'name:en': u'Ueda', u'place': u'city', u'population': u'156980', u'wikidata': u'Q844852'}), - dsl.way(359, wkt_loads('POINT (138.179637 36.461702)'), {u'id': u'5901282255', u'name': u'坂城町', u'name:en': u'Sakaki', u'place': u'town', u'population': u'14871', u'wikidata': u'Q1348962'}), - dsl.way(360, wkt_loads('POINT (138.47677 36.248801)'), {u'id': u'5901282261', u'name': u'佐久市', u'name:en': u'Saku', u'place': u'city', u'population': u'98652', u'wikidata': u'Q495821'}), - dsl.way(361, wkt_loads('POINT (138.315903 36.272034)'), {u'id': u'5901282274', u'name': u'立科町', u'name:en': u'Tateshina', u'place': u'town', u'population': u'7265', u'wikidata': u'Q1346895'}), - dsl.way(362, wkt_loads('POINT (138.330535 36.359423)'), {u'id': u'5901282279', u'name': u'東御市', u'name:en': u'Tomi', u'place': u'city', u'population': u'29601', u'wikidata': u'Q840859'}), - dsl.way(363, wkt_loads('POINT (138.507163 36.322601)'), {u'id': u'5901282281', u'name': u'御代田町', u'name:en': u'Miyota', u'place': u'town', u'population': u'15184', u'wikidata': u'Q1204123'}), - dsl.way(364, wkt_loads('POINT (138.596997 36.348294)'), {u'id': u'5901282594', u'name': u'軽井沢町', u'name:en': u'Karuizawa', u'place': u'town', u'population': u'18994', u'wikidata': u'Q1012064'}), - dsl.way(365, wkt_loads('POINT (139.677875 36.239633)'), {u'admin_leve': u'6', u'id': u'6914872836', u'name': u'渡良瀬遊水地', u'name:en': u'Watarase Usuichi', u'place': u'town'}), - dsl.way(366, wkt_loads('POINT (139.600792 36.22589)'), {u'id': u'7134809975', u'name': u'板倉町', u'name:en': u'Itakura', u'place': u'town', u'population': u'15015', u'wikidata': u'Q1203771'}), - dsl.way(367, wkt_loads('POINT (139.242073 35.374662)'), {u'id': u'7159778006', u'name': u'秦野市', u'name:en': u'Hadano', u'place': u'city', u'population': u'167378', u'wikidata': u'Q460806'}), - dsl.way(368, wkt_loads('POINT (139.299611 35.402397)'), {u'id': u'7159778007', u'name': u'伊勢原市', u'name:en': u'Isehara', u'place': u'city', u'population': u'101514', u'wikidata': u'Q734520'}), - dsl.way(369, wkt_loads('POINT (139.402905 35.957231)'), {u'id': u'7165933146', u'name': u'坂戸市', u'name:en': u'Sakado', u'place': u'city', u'population': u'101679', u'wikidata': u'Q850344'}), - dsl.way(370, wkt_loads('POINT (139.54848 36.172402)'), {u'id': u'7165933147', u'name': u'羽生市', u'name:en': u'Hanyu', u'place': u'city', u'population': u'54874', u'wikidata': u'Q847565'}), - dsl.way(371, wkt_loads('POINT (139.461421 36.252976)'), {u'id': u'7180044893', u'name': u'邑楽町', u'name:en': u'Ora', u'place': u'town', u'population': u'26426', u'wikidata': u'Q656774'}), - dsl.way(372, wkt_loads('POINT (139.851833 36.395081)'), {u'id': u'7180482856', u'name': u'下野市', u'name:en': u'Shimotsuke', u'place': u'city', u'population': u'59431', u'wikidata': u'Q851804'}), - dsl.way(373, wkt_loads('POINT (140.149403 35.979425)'), {u'id': u'7180482857', u'name': u'牛久市', u'name:en': u'Ushiku', u'place': u'city', u'population': u'84317', u'wikidata': u'Q844133'}), - dsl.way(374, wkt_loads('POINT (139.745246 36.567292)'), {u'id': u'7319384467', u'name': u'鹿沼市', u'name:en': u'Kanuma', u'place': u'city', u'population': u'97145', u'wikidata': u'Q390792'}), - dsl.way(375, wkt_loads('POINT (138.425972 36.327253)'), {u'id': u'7844841591', u'name': u'小諸市', u'name:en': u'Komoro', u'place': u'city', u'population': u'41693', u'wikidata': u'Q838657'}), - ] - self.test_instance.generate_fixtures(ways) + ways = [dsl.way(0, wkt_loads('POINT (139.688014 35.62125)'), {'id': u'57542483', 'name': u'目黒区', 'name:en': u'Meguro', 'place': u'city', 'population': u'282785', 'wikidata': u'Q233903'}), dsl.way(1, wkt_loads('POINT (139.645796 35.86164)'), {'capital': u'4', 'id': u'243993095', 'name': u'さいたま市', 'name:en': u'Saitama', 'place': u'city', 'population': u'1182115', 'wikidata': u'Q134635'}), dsl.way(2, wkt_loads('POINT (139.327644 35.85569)'), {'id': u'247962196', 'name': u'飯能市', 'name:en': u'Hanno', 'place': u'city', 'population': u'79931', 'wikidata': u'Q850472'}), dsl.way(3, wkt_loads('POINT (139.085761 35.991451)'), {'id': u'248008276', 'name': u'秩父市', 'name:en': u'Chichibu', 'place': u'city', 'population': u'63555', 'wikidata': u'Q647079'}), dsl.way(4, wkt_loads('POINT (139.759455 35.682839)'), {'admin_leve': u'2', 'capital': u'yes', 'id': u'265018692', 'name': u'東京都 Tokyo', 'name:en': u'Tokyo', 'place': u'city', 'population': u'13613660', 'wikidata': u'Q1490'}), dsl.way(5, wkt_loads('POINT (139.388614 36.147247)'), {'id': u'301641122', 'name': u'熊谷市', 'name:en': u'Kumagaya', 'place': u'city', 'population': u'198742', 'wikidata': u'Q41106'}), dsl.way(6, wkt_loads('POINT (139.4559 36.138605)'), {'id': u'302348601', 'name': u'行田市', 'name:en': u'Gyoda', 'place': u'city', 'population': u'80562', 'wikidata': u'Q860659'}), dsl.way(7, wkt_loads('POINT (139.534425 36.212126)'), {'id': u'302355166', 'name': u'明和町', 'name:en': u'Meiwa', 'place': u'town', 'population': u'11044', 'wikidata': u'Q1203274'}), dsl.way(8, wkt_loads('POINT (137.925887 34.750052)'), {'id': u'420453539', 'name': u'袋井市', 'name:en': u'Fukuroi', 'place': u'city', 'population': u'86532', 'wikidata': u'Q821337'}), dsl.way(9, wkt_loads('POINT (138.018733 34.793469)'), {'id': u'420453612', 'name': u'掛川市', 'name:en': u'Kakegawa', 'place': u'city', 'population': u'114602', 'wikidata': u'Q823988'}), dsl.way(10, wkt_loads('POINT (137.935383 34.863955)'), {'id': u'420453634', 'name': u'森町', 'name:en': u'Mori', 'place': u'town', 'population': u'18528', 'wikidata': u'Q1345571'}), dsl.way(11, wkt_loads('POINT (137.851285 34.706481)'), {'id': u'420453696', 'name': u'磐田市', 'name:en': u'Iwata', 'place': u'city', 'population': u'166426', 'wikidata': u'Q386651'}), dsl.way(12, wkt_loads('POINT (139.542158 36.245434)'), {'id': u'444778917', 'name': u'館林市', 'name:en': u'Tatebayashi', 'place': u'city', 'population': u'76102', 'wikidata': u'Q858016'}), dsl.way(13, wkt_loads('POINT (139.339039 35.907767)'), {'id': u'459653520', 'name': u'日高市', 'name:en': u'Hidaka', 'place': u'city', 'population': u'56224', 'wikidata': u'Q905721'}), dsl.way(14, wkt_loads('POINT (137.968714 36.238205)'), {'id': u'470328639', 'name': u'松本市', 'name:en': u'Matsumoto', 'place': u'city', 'population': u'227579', 'wikidata': u'Q213324'}), dsl.way(15, wkt_loads('POINT (139.563534 35.712898)'), {'id': u'509904081', 'name': u'武蔵野市', 'name:en': u'Musashino', 'place': u'city', 'population': u'140162', 'wikidata': u'Q210661'}), dsl.way(16, wkt_loads('POINT (139.572916 35.685227)'), {'id': u'527555169', 'name': u'三鷹市', 'name:en': u'Mitaka', 'place': u'city', 'population': u'189577', 'wikidata': u'Q242885'}), dsl.way(17, wkt_loads('POINT (139.485693 35.925115)'), {'id': u'537121807', 'name': u'川越市', 'name:en': u'Kawagoe', 'place': u'city', 'population': u'350745', 'wikidata': u'Q319740'}), dsl.way(18, wkt_loads('POINT (139.666708 36.061883)'), {'id': u'546630465', 'name': u'久喜市', 'name:en': u'Kuki', 'place': u'city', 'population': u'151598', 'wikidata': u'Q47535'}), dsl.way(19, wkt_loads('POINT (137.698058 35.069431)'), {'id': u'569005471', 'name': u'東栄町', 'name:en': u'Toei', 'place': u'town', 'population': u'3446', 'wikidata': u'Q1354877'}), dsl.way(20, wkt_loads('POINT (139.063283 36.389342)'), {'capital': u'4', 'id': u'574841107', 'name': u'前橋市', 'name:en': u'Maebashi', 'place': u'city', 'population': u'324644', 'wikidata': u'Q201613'}), dsl.way(21, wkt_loads('POINT (139.575977 35.634023)'), {'id': u'602527728', 'name': u'狛江市', 'name:en': u'Komae', 'place': u'city', 'population': u'76234', 'wikidata': u'Q86536'}), dsl.way(22, wkt_loads('POINT (139.554815 35.660036)'), {'id': u'621286703', 'name': u'調布市', 'name:en': u'Chofu', 'place': u'city', 'population': u'232573', 'wikidata': u'Q210667'}), dsl.way(23, wkt_loads('POINT (139.473445 35.661112)'), {'id': u'621890744', 'name': u'府中市', 'name:en': u'Fuchu', 'place': u'city', 'population': u'261991', 'wikidata': u'Q208818'}), dsl.way(24, wkt_loads('POINT (139.283071 35.660175)'), {'id': u'622423997', 'name': u'八王子市', 'name:en': u'Hachioji', 'place': u'city', 'population': u'555517', 'wikidata': u'Q208863'}), dsl.way(25, wkt_loads('POINT (139.414705 35.661072)'), {'id': u'622424880', 'name': u'日野市', 'name:en': u'Hino', 'place': u'city', 'population': u'171309', 'wikidata': u'Q236197'}), dsl.way(26, wkt_loads('POINT (139.507776 35.638229)'), {'id': u'622640333', 'name': u'稲城市', 'name:en': u'Inagi', 'place': u'city', 'population': u'90112', 'wikidata': u'Q317847'}), dsl.way(27, wkt_loads('POINT (139.443503 35.637188)'), {'id': u'622642835', 'name': u'多摩市', 'name:en': u'Tama', 'place': u'city', 'population': u'144348', 'wikidata': u'Q213263'}), dsl.way(28, wkt_loads('POINT (139.664468 35.718123)'), {'id': u'622866764', 'name': u'中野区', 'name:en': u'Nakano', 'place': u'city', 'population': u'336639', 'wikidata': u'Q234087'}), dsl.way(29, wkt_loads('POINT (139.638735 35.74836)'), {'id': u'622868305', 'name': u'練馬区', 'name:en': u'Nerima', 'place': u'city', 'population': u'733150', 'wikidata': u'Q232655'}), dsl.way(30, wkt_loads('POINT (139.605869 35.781705)'), {'id': u'622868936', 'name': u'和光市', 'name:en': u'Wako', 'place': u'city', 'population': u'82017', 'wikidata': u'Q658058'}), dsl.way(31, wkt_loads('POINT (139.593733 35.797086)'), {'id': u'622870825', 'name': u'朝霞市', 'name:en': u'Asaka', 'place': u'city', 'population': u'130764', 'wikidata': u'Q646834'}), dsl.way(32, wkt_loads('POINT (139.442839 35.564193)'), {'id': u'623797057', 'name': u'町田市', 'name:en': u'Machida', 'place': u'city', 'population': u'433720', 'wikidata': u'Q210628'}), dsl.way(33, wkt_loads('POINT (139.454224 35.709674)'), {'id': u'623801472', 'name': u'国分寺市', 'name:en': u'Kokubunji', 'place': u'city', 'population': u'123290', 'wikidata': u'Q317834'}), dsl.way(34, wkt_loads('POINT (139.43624 35.681991)'), {'id': u'623805032', 'name': u'国立市', 'name:en': u'Kunitachi', 'place': u'city', 'population': u'73934', 'wikidata': u'Q330007'}), dsl.way(35, wkt_loads('POINT (139.714222 35.736156)'), {'id': u'656246516', 'name': u'豊島区', 'name:en': u'Toshima', 'place': u'city', 'population': u'298562', 'wikidata': u'Q236680'}), dsl.way(36, wkt_loads('POINT (139.744732 35.71881)'), {'id': u'664479961', 'name': u'文京区', 'name:en': u'Bunkyo', 'place': u'city', 'population': u'227902', 'wikidata': u'Q212713'}), dsl.way(37, wkt_loads('POINT (139.565203 35.793443)'), {'id': u'671141124', 'name': u'新座市', 'name:en': u'Niiza', 'place': u'city', 'population': u'164024', 'wikidata': u'Q386691'}), dsl.way(38, wkt_loads('POINT (139.59305 35.977408)'), {'id': u'671141125', 'name': u'上尾市', 'name:en': u'Ageo', 'place': u'city', 'population': u'227127', 'wikidata': u'Q163888'}), dsl.way(39, wkt_loads('POINT (139.967242 36.184355)'), {'id': u'674922239', 'name': u'下妻市', 'name:en': u'Shimotsuma', 'place': u'city', 'population': u'42635', 'wikidata': u'Q533241'}), dsl.way(40, wkt_loads('POINT (137.70371599999999 35.786805)'), {'id': u'702987312', 'name': u'上松町', 'name:en': u'Agematsu', 'place': u'town', 'population': u'4670', 'wikidata': u'Q374859'}), dsl.way(41, wkt_loads('POINT (137.816191 35.323388)'), {'id': u'702987314', 'name': u'阿南町', 'name:en': u'Anan', 'place': u'town', 'population': u'4962', 'wikidata': u'Q1203314'}), dsl.way(42, wkt_loads('POINT (137.850889 36.502909)'), {'id': u'702987319', 'name': u'大町市', 'name:en': u'Omachi', 'place': u'city', 'population': u'27203', 'wikidata': u'Q385375'}), dsl.way(43, wkt_loads('POINT (137.954916 35.830452)'), {'id': u'702987327', 'name': u'伊那市', 'name:en': u'Ina', 'place': u'city', 'population': u'67077', 'wikidata': u'Q840888'}), dsl.way(44, wkt_loads('POINT (137.878361 35.55155)'), {'id': u'702987329', 'name': u'高森町', 'name:en': u'Takamori', 'place': u'town', 'population': u'13080', 'wikidata': u'Q1203136'}), dsl.way(45, wkt_loads('POINT (137.821952 35.51471)'), {'id': u'702987331', 'name': u'飯田市', 'name:en': u'Iida', 'place': u'city', 'population': u'99350', 'wikidata': u'Q841129'}), dsl.way(46, wkt_loads('POINT (137.938925 35.729671)'), {'id': u'702987332', 'name': u'駒ヶ根市', 'name:en': u'Komagane', 'place': u'city', 'population': u'32321', 'wikidata': u'Q838684'}), dsl.way(47, wkt_loads('POINT (137.909743 35.597496)'), {'id': u'702987333', 'name': u'松川町', 'name:en': u'Matsukawa', 'place': u'town', 'population': u'13167', 'wikidata': u'Q222825'}), dsl.way(48, wkt_loads('POINT (137.905921 35.680007)'), {'id': u'702987335', 'name': u'飯島町', 'name:en': u'Iijima', 'place': u'town', 'population': u'9530', 'wikidata': u'Q522462'}), dsl.way(49, wkt_loads('POINT (137.980492 35.916221)'), {'id': u'702987342', 'name': u'箕輪町', 'name:en': u'Minowa', 'place': u'town', 'population': u'25241', 'wikidata': u'Q1346975'}), dsl.way(50, wkt_loads('POINT (137.924649 35.973252)'), {'id': u'702987343', 'name': u'辰野町', 'name:en': u'Tatsuno', 'place': u'town', 'population': u'19770', 'wikidata': u'Q1347504'}), dsl.way(51, wkt_loads('POINT (138.117682 36.116594)'), {'id': u'702987346', 'name': u'下諏訪町', 'name:en': u'Shimosuwa', 'place': u'town', 'population': u'20236', 'wikidata': u'Q1204211'}), dsl.way(52, wkt_loads('POINT (138.049549 36.07853)'), {'id': u'702987348', 'name': u'岡谷市', 'name:en': u'Okaya', 'place': u'city', 'population': u'50128', 'wikidata': u'Q838672'}), dsl.way(53, wkt_loads('POINT (137.952801 36.124957)'), {'id': u'702987349', 'name': u'塩尻市', 'name:en': u'Shiojiri', 'place': u'city', 'population': u'66979', 'wikidata': u'Q857272'}), dsl.way(54, wkt_loads('POINT (138.114118 36.03209)'), {'id': u'702987350', 'name': u'諏訪市', 'name:en': u'Suwa', 'place': u'city', 'population': u'50140', 'wikidata': u'Q846338'}), dsl.way(55, wkt_loads('POINT (138.031902 36.114395)'), {'id': u'702987351', 'name': u'長野県', 'name:en': u'Nagano Prefecture', 'place': u'province', 'wikidata': u'Q127877'}), dsl.way(56, wkt_loads('POINT (138.157854 35.98562)'), {'id': u'702987356', 'name': u'茅野市', 'name:en': u'Chino', 'place': u'city', 'population': u'55646', 'wikidata': u'Q838660'}), dsl.way(57, wkt_loads('POINT (138.20262 35.908326)'), {'id': u'702987357', 'name': u'富士見町', 'name:en': u'Fujimi', 'place': u'town', 'population': u'14493', 'wikidata': u'Q1204145'}), dsl.way(58, wkt_loads('POINT (138.48351 36.160367)'), {'id': u'702987361', 'name': u'佐久穂町', 'name:en': u'Sakuho', 'place': u'town', 'population': u'11186', 'wikidata': u'Q1203700'}), dsl.way(59, wkt_loads('POINT (138.214356 36.187804)'), {'id': u'702987362', 'name': u'長和町', 'name:en': u'Nagawa', 'place': u'town', 'population': u'6166', 'wikidata': u'Q1346846'}), dsl.way(60, wkt_loads('POINT (138.485497 36.079973)'), {'id': u'702987363', 'name': u'小海町', 'name:en': u'Koumi', 'place': u'town', 'population': u'4713', 'wikidata': u'Q1204222'}), dsl.way(61, wkt_loads('POINT (137.905497 36.304408)'), {'id': u'702987365', 'name': u'安曇野市', 'name:en': u'Azumino', 'place': u'city', 'population': u'94871', 'wikidata': u'Q534667'}), dsl.way(62, wkt_loads('POINT (137.87459 36.421327)'), {'id': u'702987373', 'name': u'池田町', 'name:en': u'Ikeda', 'place': u'town', 'population': u'9926', 'wikidata': u'Q1204048'}), dsl.way(63, wkt_loads('POINT (139.681209 35.774143)'), {'id': u'714895390', 'name': u'板橋区', 'name:en': u'Itabashi', 'place': u'city', 'population': u'575432', 'wikidata': u'Q232635'}), dsl.way(64, wkt_loads('POINT (139.636288 35.699493)'), {'id': u'718383251', 'name': u'杉並区', 'name:en': u'Suginami', 'place': u'city', 'population': u'540180', 'wikidata': u'Q232631'}), dsl.way(65, wkt_loads('POINT (139.805017 35.700429)'), {'id': u'721772119', 'name': u'墨田区', 'name:en': u'Sumida', 'place': u'city', 'population': u'263484', 'wikidata': u'Q235135'}), dsl.way(66, wkt_loads('POINT (139.871091 35.678278)'), {'id': u'721783580', 'name': u'江戸川区', 'name:en': u'Edogawa', 'place': u'city', 'population': u'691417', 'wikidata': u'Q214056'}), dsl.way(67, wkt_loads('POINT (139.863816 35.751733)'), {'id': u'721783585', 'name': u'葛飾区', 'name:en': u'Katsushika', 'place': u'city', 'population': u'451483', 'wikidata': u'Q232628'}), dsl.way(68, wkt_loads('POINT (139.81279 35.649154)'), {'admin_leve': u'7', 'id': u'721916368', 'name': u'江東区', 'name:en': u'Koto', 'place': u'city', 'population': u'509438', 'wikidata': u'Q215175'}), dsl.way(69, wkt_loads('POINT (139.736687 35.755838)'), {'id': u'722053207', 'name': u'北区', 'name:en': u'Kita', 'place': u'city', 'population': u'349573', 'wikidata': u'Q235130'}), dsl.way(70, wkt_loads('POINT (140.303574 35.972278)'), {'id': u'734950653', 'name': u'稲敷市', 'name:en': u'Inashiki', 'place': u'city', 'population': u'41392', 'wikidata': u'Q838675'}), dsl.way(71, wkt_loads('POINT (140.471393 36.365779)'), {'capital': u'4', 'id': u'736355846', 'name': u'水戸市', 'name:en': u'Mito', 'place': u'city', 'population': u'270775', 'wikidata': u'Q204249'}), dsl.way(72, wkt_loads('POINT (140.304226 36.345224)'), {'id': u'737237199', 'name': u'笠間市', 'name:en': u'Kasama', 'place': u'city', 'population': u'75698', 'wikidata': u'Q845851'}), dsl.way(73, wkt_loads('POINT (140.352368 36.238976)'), {'id': u'737237574', 'name': u'小美玉市', 'name:en': u'Omitama', 'place': u'city', 'population': u'50180', 'wikidata': u'Q430584'}), dsl.way(74, wkt_loads('POINT (140.287431 36.190599)'), {'id': u'738650161', 'name': u'石岡市', 'name:en': u'Ishioka', 'place': u'city', 'population': u'74184', 'wikidata': u'Q819658'}), dsl.way(75, wkt_loads('POINT (140.487177 36.457227)'), {'id': u'742470966', 'name': u'那珂市', 'name:en': u'Naka', 'place': u'city', 'population': u'53897', 'wikidata': u'Q633647'}), dsl.way(76, wkt_loads('POINT (140.204593 36.07863)'), {'id': u'750504981', 'name': u'土浦市', 'name:en': u'Tsuchiura', 'place': u'city', 'population': u'139261', 'wikidata': u'Q653446'}), dsl.way(77, wkt_loads('POINT (140.53534 36.396124)'), {'id': u'752603189', 'name': u'ひたちなか市', 'name:en': u'Hitachinaka', 'place': u'city', 'population': u'155970', 'wikidata': u'Q696772'}), dsl.way(78, wkt_loads('POINT (140.424093 36.287119)'), {'id': u'760258942', 'name': u'茨城町', 'name:en': u'Ibaraki', 'place': u'town', 'population': u'32921', 'wikidata': u'Q1203390'}), dsl.way(79, wkt_loads('POINT (140.574722 36.313338)'), {'id': u'760279839', 'name': u'大洗町', 'name:en': u'Oarai', 'place': u'town', 'population': u'16886', 'wikidata': u'Q1349185'}), dsl.way(80, wkt_loads('POINT (140.530839 36.537302)'), {'id': u'761127819', 'name': u'常陸太田市', 'name:en': u'Hitachiota', 'place': u'city', 'population': u'50728', 'wikidata': u'Q838663'}), dsl.way(81, wkt_loads('POINT (140.376047 36.479676)'), {'id': u'761151452', 'name': u'城里町', 'name:en': u'Shirosato', 'place': u'town', 'population': u'19800', 'wikidata': u'Q1203068'}), dsl.way(82, wkt_loads('POINT (138.087355 34.756264)'), {'id': u'763099410', 'name': u'菊川市', 'name:en': u'Kikugawa', 'place': u'city', 'population': u'46849', 'wikidata': u'Q726565'}), dsl.way(83, wkt_loads('POINT (138.30381 34.830312)'), {'id': u'763099666', 'name': u'焼津市', 'name:en': u'Yaizu', 'place': u'city', 'population': u'137453', 'wikidata': u'Q696783'}), dsl.way(84, wkt_loads('POINT (138.257722 34.867417)'), {'id': u'763099670', 'name': u'藤枝市', 'name:en': u'Fujieda', 'place': u'city', 'population': u'143227', 'wikidata': u'Q734432'}), dsl.way(85, wkt_loads('POINT (138.948903 35.147361)'), {'id': u'763099675', 'name': u'三島市', 'name:en': u'Mishima', 'place': u'city', 'population': u'109515', 'wikidata': u'Q653478'}), dsl.way(86, wkt_loads('POINT (138.146599 34.879912)'), {'id': u'763099677', 'name': u'島田市', 'name:en': u'Shimada', 'place': u'city', 'population': u'96478', 'wikidata': u'Q605256'}), dsl.way(87, wkt_loads('POINT (138.866742 35.094699)'), {'id': u'763099680', 'name': u'沼津市', 'name:en': u'Numazu', 'place': u'city', 'population': u'195633', 'wikidata': u'Q241037'}), dsl.way(88, wkt_loads('POINT (138.621468 35.222137)'), {'id': u'763118286', 'name': u'富士宮市', 'name:en': u'Fujinomiya', 'place': u'city', 'population': u'129951', 'wikidata': u'Q496072'}), dsl.way(89, wkt_loads('POINT (137.725943 34.710979)'), {'id': u'763118297', 'name': u'浜松市', 'name:en': u'Hamamatsu', 'place': u'city', 'population': u'797033', 'wikidata': u'Q185125'}), dsl.way(90, wkt_loads('POINT (138.676386 35.161852)'), {'id': u'763118309', 'name': u'富士市', 'name:en': u'Fuji', 'place': u'city', 'population': u'253273', 'wikidata': u'Q328613'}), dsl.way(91, wkt_loads('POINT (138.38299 34.979149)'), {'capital': u'4', 'id': u'763118317', 'name': u'静岡市', 'name:en': u'Shizuoka', 'place': u'city', 'population': u'706287', 'wikidata': u'Q174691'}), dsl.way(92, wkt_loads('POINT (140.07651 36.083388)'), {'id': u'768273008', 'name': u'つくば市', 'name:en': u'Tsukuba', 'place': u'city', 'population': u'234455', 'wikidata': u'Q273863'}), dsl.way(93, wkt_loads('POINT (139.476606 35.72522)'), {'id': u'771323155', 'name': u'小平市', 'name:en': u'Kodaira', 'place': u'city', 'population': u'191406', 'wikidata': u'Q213278'}), dsl.way(94, wkt_loads('POINT (140.237087 36.151737)'), {'id': u'775480576', 'name': u'かすみがうら市', 'name:en': u'Kasumigaura', 'place': u'city', 'population': u'41297', 'wikidata': u'Q772817'}), dsl.way(95, wkt_loads('POINT (139.522106 36.065758)'), {'id': u'820097446', 'name': u'鴻巣市', 'name:en': u'Konosu', 'place': u'city', 'population': u'117883', 'wikidata': u'Q734541'}), dsl.way(96, wkt_loads('POINT (139.603225 36.130857)'), {'id': u'820110092', 'name': u'加須市', 'name:en': u'Kazo', 'place': u'city', 'population': u'111572', 'wikidata': u'Q851680'}), dsl.way(97, wkt_loads('POINT (139.541356 36.002152)'), {'id': u'820134979', 'name': u'桶川市', 'name:en': u'Okegawa', 'place': u'city', 'population': u'74186', 'wikidata': u'Q570333'}), dsl.way(98, wkt_loads('POINT (139.530139 36.026871)'), {'id': u'820134983', 'name': u'北本市', 'name:en': u'Kitamoto', 'place': u'city', 'population': u'66339', 'wikidata': u'Q857285'}), dsl.way(99, wkt_loads('POINT (139.2817 36.197402)'), {'id': u'820591253', 'name': u'深谷市', 'name:en': u'Fukaya', 'place': u'city', 'population': u'142996', 'wikidata': u'Q734532'}), dsl.way(100, wkt_loads('POINT (139.191628 36.243594)'), {'id': u'820591261', 'name': u'本庄市', 'name:en': u'Honjo', 'place': u'city', 'population': u'77881', 'wikidata': u'Q873565'}), dsl.way(101, wkt_loads('POINT (139.399796 36.042152)'), {'id': u'820603381', 'name': u'東松山市', 'name:en': u'Higashimatsuyama', 'place': u'city', 'population': u'92125', 'wikidata': u'Q823907'}), dsl.way(102, wkt_loads('POINT (139.872225 35.830091)'), {'id': u'854693636', 'name': u'三郷市', 'name:en': u'Misato', 'place': u'city', 'population': u'139903', 'wikidata': u'Q853061'}), dsl.way(103, wkt_loads('POINT (139.453534 36.039842)'), {'id': u'863420607', 'name': u'吉見町', 'name:en': u'Yoshimi', 'place': u'town', 'population': u'19631', 'wikidata': u'Q543313'}), dsl.way(104, wkt_loads('POINT (139.192778 36.118274)'), {'id': u'863425361', 'name': u'寄居町', 'name:en': u'Yorii Town', 'place': u'town', 'population': u'34081', 'wikidata': u'Q961604'}), dsl.way(105, wkt_loads('POINT (139.109648 36.114676)'), {'id': u'863429893', 'name': u'長瀞町', 'name:en': u'Nagatoro', 'place': u'town', 'population': u'7324', 'wikidata': u'Q1345299'}), dsl.way(106, wkt_loads('POINT (139.26285 36.057154)'), {'id': u'863433506', 'name': u'小川町', 'name:en': u'Ogawa', 'place': u'town', 'population': u'31178', 'wikidata': u'Q935037'}), dsl.way(107, wkt_loads('POINT (139.320248 36.056417)'), {'id': u'863443078', 'name': u'嵐山町', 'name:en': u'Ranzan', 'place': u'town', 'population': u'18341', 'wikidata': u'Q1358642'}), dsl.way(108, wkt_loads('POINT (139.181679 36.177163)'), {'id': u'863449326', 'name': u'美里町', 'name:en': u'Misato', 'place': u'town', 'population': u'11207', 'wikidata': u'Q924129'}), dsl.way(109, wkt_loads('POINT (139.361022 36.067122)'), {'id': u'863457603', 'name': u'滑川町', 'name:en': u'Namegawa', 'place': u'town', 'population': u'18212', 'wikidata': u'Q1346985'}), dsl.way(110, wkt_loads('POINT (139.144691 36.251548)'), {'id': u'863460004', 'name': u'上里町', 'name:en': u'Kamisato', 'place': u'town', 'population': u'30565', 'wikidata': u'Q1345287'}), dsl.way(111, wkt_loads('POINT (139.101903 36.213474)'), {'id': u'863466502', 'name': u'神川町', 'name:en': u'Kamikawa', 'place': u'town', 'population': u'13730', 'wikidata': u'Q1346757'}), dsl.way(112, wkt_loads('POINT (139.098645 36.070827)'), {'id': u'863476103', 'name': u'皆野町', 'name:en': u'Minano', 'place': u'town', 'population': u'10133', 'wikidata': u'Q1345365'}), dsl.way(113, wkt_loads('POINT (139.008513 36.017118)'), {'id': u'863479149', 'name': u'小鹿野町', 'name:en': u'Ogano', 'place': u'town', 'population': u'12117', 'wikidata': u'Q1345311'}), dsl.way(114, wkt_loads('POINT (139.1 35.987323)'), {'id': u'863493320', 'name': u'横瀬町', 'name:en': u'Yokoze', 'place': u'town', 'population': u'8519', 'wikidata': u'Q1345277'}), dsl.way(115, wkt_loads('POINT (139.296697 36.008531)'), {'id': u'863522250', 'name': u'ときがわ町', 'name:en': u'Tokigawa', 'place': u'town', 'population': u'11492', 'wikidata': u'Q251027'}), dsl.way(116, wkt_loads('POINT (139.294131 35.964506)'), {'id': u'863522262', 'name': u'越生町', 'name:en': u'Ogose', 'place': u'town', 'population': u'11716', 'wikidata': u'Q783333'}), dsl.way(117, wkt_loads('POINT (139.334087 35.981517)'), {'id': u'863556895', 'name': u'鳩山町', 'name:en': u'Hatoyama', 'place': u'town', 'population': u'14338', 'wikidata': u'Q925875'}), dsl.way(118, wkt_loads('POINT (139.484081 35.992441)'), {'id': u'863580022', 'name': u'川島町', 'name:en': u'Kawajima', 'place': u'town', 'population': u'20788', 'wikidata': u'Q1203970'}), dsl.way(119, wkt_loads('POINT (139.316039 35.941569)'), {'id': u'863587414', 'name': u'毛呂山町', 'name:en': u'Moroyama', 'place': u'town', 'population': u'37275', 'wikidata': u'Q1354799'}), dsl.way(120, wkt_loads('POINT (139.392974 35.934681)'), {'id': u'863601289', 'name': u'鶴ヶ島市', 'name:en': u'Tsurugashima', 'place': u'city', 'population': u'70255', 'wikidata': u'Q869027'}), dsl.way(121, wkt_loads('POINT (139.4123 35.852897)'), {'id': u'863611983', 'name': u'狭山市', 'name:en': u'Sayama', 'place': u'city', 'population': u'152405', 'wikidata': u'Q824009'}), dsl.way(122, wkt_loads('POINT (139.468748 35.799427)'), {'id': u'863622554', 'name': u'所沢市', 'name:en': u'Tokorozawa', 'place': u'city', 'population': u'341091', 'wikidata': u'Q165857'}), dsl.way(123, wkt_loads('POINT (139.390929 35.835814)'), {'id': u'863647764', 'name': u'入間市', 'name:en': u'Iruma', 'place': u'city', 'population': u'147430', 'wikidata': u'Q696925'}), dsl.way(124, wkt_loads('POINT (139.519616 35.879548)'), {'id': u'863664907', 'name': u'ふじみ野市', 'name:en': u'Fujimino', 'place': u'city', 'population': u'114218', 'wikidata': u'Q873590'}), dsl.way(125, wkt_loads('POINT (139.526484 35.828071)'), {'id': u'863670473', 'name': u'三芳町', 'name:en': u'Miyoshi', 'place': u'town', 'population': u'38456'}), dsl.way(126, wkt_loads('POINT (139.549073 35.856555)'), {'id': u'863670497', 'name': u'富士見市', 'name:en': u'Fujimi', 'place': u'city', 'population': u'108102', 'wikidata': u'Q495809'}), dsl.way(127, wkt_loads('POINT (139.580035 35.836519)'), {'id': u'863684931', 'name': u'志木市', 'name:en': u'Shiki', 'place': u'city', 'population': u'72676', 'wikidata': u'Q877202'}), dsl.way(128, wkt_loads('POINT (139.725409 36.077883)'), {'id': u'864242320', 'name': u'幸手市', 'name:en': u'Satte', 'place': u'city', 'population': u'51797', 'wikidata': u'Q868971'}), dsl.way(129, wkt_loads('POINT (139.736745 36.025848)'), {'id': u'864242816', 'name': u'杉戸町', 'name:en': u'Sugito', 'place': u'town', 'population': u'45495', 'wikidata': u'Q1345351'}), dsl.way(130, wkt_loads('POINT (139.722628 36.022709)'), {'id': u'864242817', 'name': u'宮代町', 'name:en': u'Miyashiro', 'place': u'town', 'population': u'33930', 'wikidata': u'Q155317'}), dsl.way(131, wkt_loads('POINT (139.752019 35.975796)'), {'id': u'864248665', 'name': u'春日部市', 'name:en': u'Kasukabe', 'place': u'city', 'population': u'232709', 'wikidata': u'Q376023'}), dsl.way(132, wkt_loads('POINT (139.663255 35.994092)'), {'id': u'864248673', 'name': u'蓮田市', 'name:en': u'Hasuda', 'place': u'city', 'population': u'62063', 'wikidata': u'Q857256'}), dsl.way(133, wkt_loads('POINT (139.815881 35.926196)'), {'id': u'864248683', 'name': u'松伏町', 'name:en': u'Matsubushi', 'place': u'town', 'population': u'30061', 'wikidata': u'Q1346963'}), dsl.way(134, wkt_loads('POINT (139.854504 35.896283)'), {'id': u'864255936', 'name': u'吉川市', 'name:en': u'Yoshikawa', 'place': u'city', 'population': u'71063', 'wikidata': u'Q873546'}), dsl.way(135, wkt_loads('POINT (139.806178 35.826223)'), {'id': u'864255937', 'name': u'草加市', 'name:en': u'Soka', 'place': u'city', 'population': u'249455', 'wikidata': u'Q734442'}), dsl.way(136, wkt_loads('POINT (139.838687 35.82264)'), {'id': u'864255938', 'name': u'八潮市', 'name:en': u'Yashio', 'place': u'city', 'population': u'90017', 'wikidata': u'Q869032'}), dsl.way(137, wkt_loads('POINT (139.790863 35.890399)'), {'id': u'864255939', 'name': u'越谷市', 'name:en': u'Koshigaya', 'place': u'city', 'population': u'342486', 'wikidata': u'Q497952'}), dsl.way(138, wkt_loads('POINT (139.724105 35.807823)'), {'id': u'864262454', 'name': u'川口市', 'name:en': u'Kawaguchi', 'place': u'city', 'population': u'578112', 'wikidata': u'Q387136'}), dsl.way(139, wkt_loads('POINT (139.677894 35.817587)'), {'id': u'864262458', 'name': u'戸田市', 'name:en': u'Toda', 'place': u'city', 'population': u'136150', 'wikidata': u'Q823874'}), dsl.way(140, wkt_loads('POINT (139.679763 35.82564)'), {'id': u'864262459', 'name': u'蕨市', 'name:en': u'Warabi', 'place': u'city', 'population': u'72260', 'wikidata': u'Q673010'}), dsl.way(141, wkt_loads('POINT (139.624088 36.000132)'), {'id': u'864266122', 'name': u'伊奈町', 'name:en': u'Ina', 'place': u'town', 'population': u'44442', 'wikidata': u'Q915773'}), dsl.way(142, wkt_loads('POINT (139.790859 35.71745)'), {'id': u'1042491447', 'name': u'台東区', 'name:en': u'Taito', 'place': u'city', 'population': u'203893', 'wikidata': u'Q232641'}), dsl.way(143, wkt_loads('POINT (139.753216 35.69381)'), {'id': u'1042516435', 'name': u'千代田区', 'name:en': u'Chiyoda', 'place': u'city', 'population': u'46397', 'wikidata': u'Q214051'}), dsl.way(144, wkt_loads('POINT (139.350065 35.70248)'), {'id': u'1054320920', 'name': u'昭島市', 'name:en': u'Akishima', 'place': u'city', 'population': u'111482', 'wikidata': u'Q212494'}), dsl.way(145, wkt_loads('POINT (139.443146 36.217976)'), {'id': u'1068823539', 'name': u'千代田町', 'name:en': u'Chiyoda', 'place': u'town', 'population': u'11318', 'wikidata': u'Q1023773'}), dsl.way(146, wkt_loads('POINT (138.820495 36.571536)'), {'id': u'1068823547', 'name': u'東吾妻町', 'name:en': u'Higashiagatsuma', 'place': u'town', 'population': u'14033', 'wikidata': u'Q1203419'}), dsl.way(147, wkt_loads('POINT (139.074502 36.258633)'), {'id': u'1068823554', 'name': u'藤岡市', 'name:en': u'Fujioka', 'place': u'city', 'population': u'64679', 'wikidata': u'Q596486'}), dsl.way(148, wkt_loads('POINT (139.115025 36.304424)'), {'id': u'1068823567', 'name': u'玉村町', 'name:en': u'Tamamura', 'place': u'town', 'population': u'36654', 'wikidata': u'Q1203600'}), dsl.way(149, wkt_loads('POINT (138.840906 36.589891)'), {'id': u'1068823586', 'name': u'中之条町', 'name:en': u'Nakanojo', 'place': u'town', 'population': u'16850', 'wikidata': u'Q967920'}), dsl.way(150, wkt_loads('POINT (138.889979 36.259827)'), {'id': u'1068823595', 'name': u'富岡市', 'name:en': u'Tomioka', 'place': u'city', 'population': u'48799', 'wikidata': u'Q873835'}), dsl.way(151, wkt_loads('POINT (139.033483 36.52198)'), {'id': u'1068823601', 'name': u'群馬県', 'name:en': u'Gunma Prefecture', 'place': u'province'}), dsl.way(152, wkt_loads('POINT (139.281093 36.394802)'), {'id': u'1068823637', 'name': u'みどり市', 'name:en': u'Midori', 'place': u'city', 'population': u'50680', 'wikidata': u'Q576556'}), dsl.way(153, wkt_loads('POINT (139.000129 36.489461)'), {'id': u'1068823640', 'name': u'渋川市', 'name:en': u'Shibukawa', 'place': u'city', 'population': u'76552', 'wikidata': u'Q851492'}), dsl.way(154, wkt_loads('POINT (138.789044 36.212527)'), {'id': u'1068823641', 'name': u'下仁田町', 'name:en': u'Shimonita', 'place': u'town', 'population': u'7564', 'wikidata': u'Q1346871'}), dsl.way(155, wkt_loads('POINT (139.009713 36.447388)'), {'id': u'1068823645', 'name': u'吉岡町', 'name:en': u'Yoshioka', 'place': u'town', 'population': u'21080', 'wikidata': u'Q1154580'}), dsl.way(156, wkt_loads('POINT (139.331021 36.40553)'), {'id': u'1068823646', 'name': u'桐生市', 'name:en': u'Kiryu', 'place': u'city', 'population': u'111554', 'wikidata': u'Q634022'}), dsl.way(157, wkt_loads('POINT (138.921632 36.242863)'), {'id': u'1068823647', 'name': u'甘楽町', 'name:en': u'Kanra', 'place': u'town', 'population': u'13200', 'wikidata': u'Q1203523'}), dsl.way(158, wkt_loads('POINT (138.916716 36.116)'), {'id': u'1068823648', 'name': u'神流町', 'name:en': u'Kanna', 'place': u'town', 'population': u'1954', 'wikidata': u'Q1203059'}), dsl.way(159, wkt_loads('POINT (139.003276 36.322098)'), {'id': u'1068823649', 'name': u'高崎市', 'name:en': u'Takasaki', 'place': u'city', 'population': u'370176', 'wikidata': u'Q336438'}), dsl.way(160, wkt_loads('POINT (138.64996 36.543771)'), {'id': u'1068823654', 'name': u'長野原町', 'name:en': u'Naganohara', 'place': u'town', 'population': u'5536', 'wikidata': u'Q1203366'}), dsl.way(161, wkt_loads('POINT (139.375423 36.291156)'), {'id': u'1068823657', 'name': u'太田市', 'name:en': u'Ota', 'place': u'city', 'population': u'221403', 'wikidata': u'Q386179'}), dsl.way(162, wkt_loads('POINT (138.596085 36.620667)'), {'id': u'1068823658', 'name': u'草津町', 'name:en': u'Kusatsu', 'place': u'town', 'population': u'6518', 'wikidata': u'Q1358949'}), dsl.way(163, wkt_loads('POINT (139.416011 35.975417)'), {'admin_leve': u'4', 'id': u'1068823662', 'name': u'埼玉県', 'name:en': u'Saitama Prefecture', 'place': u'province'}), dsl.way(164, wkt_loads('POINT (139.405421 36.247743)'), {'id': u'1068823675', 'name': u'大泉町', 'name:en': u'Oizumi', 'place': u'town', 'population': u'41202', 'wikidata': u'Q385080'}), dsl.way(165, wkt_loads('POINT (139.196808 36.311173)'), {'id': u'1068823679', 'name': u'伊勢崎市', 'name:en': u'Isesaki', 'place': u'city', 'population': u'209895', 'wikidata': u'Q328596'}), dsl.way(166, wkt_loads('POINT (140.181878 35.911316)'), {'id': u'1079080827', 'name': u'龍ケ崎市', 'name:en': u'Ryugasaki', 'place': u'city', 'population': u'77433', 'wikidata': u'Q844138'}), dsl.way(167, wkt_loads('POINT (140.058324 36.548274)'), {'id': u'1108891166', 'name': u'芳賀町', 'name:en': u'Haga', 'place': u'town', 'population': u'15189', 'wikidata': u'Q1203553'}), dsl.way(168, wkt_loads('POINT (139.733591 36.381818)'), {'id': u'1108891177', 'name': u'栃木市', 'name:en': u'Tochigi', 'place': u'city', 'population': u'157645', 'wikidata': u'Q44830'}), dsl.way(169, wkt_loads('POINT (139.804607 36.427353)'), {'id': u'1108891188', 'name': u'壬生町', 'name:en': u'Mibu', 'place': u'town', 'population': u'39951', 'wikidata': u'Q1354910'}), dsl.way(170, wkt_loads('POINT (139.882878 36.554968)'), {'capital': u'4', 'id': u'1108891208', 'name': u'宇都宮市', 'name:en': u'Utsunomiya', 'place': u'city', 'population': u'518594', 'wikidata': u'Q200589'}), dsl.way(171, wkt_loads('POINT (139.740778 36.23313)'), {'id': u'1108891226', 'name': u'野木町', 'name:en': u'Nogi', 'place': u'town', 'population': u'25292', 'wikidata': u'Q1203180'}), dsl.way(172, wkt_loads('POINT (139.909834 36.439316)'), {'id': u'1108891240', 'name': u'上三川町', 'name:en': u'Kaminokawa', 'place': u'town', 'population': u'31046', 'wikidata': u'Q1345604'}), dsl.way(173, wkt_loads('POINT (139.449773 36.340191)'), {'id': u'1108891308', 'name': u'足利市', 'name:en': u'Ashikaga', 'place': u'city', 'population': u'147699', 'wikidata': u'Q374477'}), dsl.way(174, wkt_loads('POINT (140.093597 36.46735)'), {'id': u'1108891330', 'name': u'益子町', 'name:en': u'Mashiko', 'place': u'town', 'population': u'23281', 'wikidata': u'Q1346925'}), dsl.way(175, wkt_loads('POINT (140.013158 36.440445)'), {'id': u'1108891341', 'name': u'真岡市', 'name:en': u'Mooka', 'place': u'city', 'population': u'79548', 'wikidata': u'Q498060'}), dsl.way(176, wkt_loads('POINT (140.187406 36.532164)'), {'id': u'1108891343', 'name': u'茂木町', 'name:en': u'Motegi', 'place': u'town', 'population': u'13188', 'wikidata': u'Q644327'}), dsl.way(177, wkt_loads('POINT (140.102152 36.543254)'), {'id': u'1108891361', 'name': u'市貝町', 'name:en': u'Ichikai', 'place': u'town', 'population': u'11720', 'wikidata': u'Q577654'}), dsl.way(178, wkt_loads('POINT (139.578429 36.314412)'), {'id': u'1108891363', 'name': u'佐野市', 'name:en': u'Sano', 'place': u'city', 'population': u'117521', 'wikidata': u'Q646912'}), dsl.way(179, wkt_loads('POINT (139.800148 36.314737)'), {'id': u'1108891371', 'name': u'小山市', 'name:en': u'Oyama', 'place': u'city', 'population': u'167535', 'wikidata': u'Q374511'}), dsl.way(180, wkt_loads('POINT (139.775565 35.666255)'), {'admin_leve': u'7', 'id': u'1111454595', 'name': u'中央区', 'name:en': u'Chuo', 'place': u'city', 'population': u'158508', 'wikidata': u'Q212704'}), dsl.way(181, wkt_loads('POINT (139.78131 35.737529)'), {'id': u'1111454600', 'name': u'荒川区', 'name:en': u'Arakawa', 'place': u'city', 'population': u'216232', 'wikidata': u'Q232624'}), dsl.way(182, wkt_loads('POINT (139.715843 35.561206)'), {'id': u'1111454606', 'name': u'大田区', 'name:en': u'Ota', 'place': u'city', 'population': u'728349', 'wikidata': u'Q217234'}), dsl.way(183, wkt_loads('POINT (139.795319 35.783703)'), {'id': u'1111454619', 'name': u'足立区', 'name:en': u'Adachi', 'place': u'city', 'population': u'676761', 'wikidata': u'Q213464'}), dsl.way(184, wkt_loads('POINT (139.740055 35.643227)'), {'admin_leve': u'7', 'id': u'1111454640', 'name': u'港区', 'name:en': u'Minato', 'place': u'city', 'population': u'254699', 'wikidata': u'Q190088'}), dsl.way(185, wkt_loads('POINT (139.65627 35.646096)'), {'admin_leve': u'8', 'id': u'1111454647', 'name': u'世田谷区', 'name:en': u'Setagaya', 'place': u'city', 'population': u'860071', 'wikidata': u'Q231645'}), dsl.way(186, wkt_loads('POINT (139.73891 35.599252)'), {'admin_leve': u'7', 'id': u'1111454665', 'name': u'品川区', 'name:en': u'Shinagawa', 'place': u'city', 'population': u'396993', 'wikidata': u'Q233495'}), dsl.way(187, wkt_loads('POINT (140.213603 36.030794)'), {'id': u'1125034214', 'name': u'阿見町', 'name:en': u'Ami', 'place': u'town', 'population': u'47535', 'wikidata': u'Q1203814'}), dsl.way(188, wkt_loads('POINT (140.65046 36.599123)'), {'admin_leve': u'7', 'id': u'1211787259', 'name': u'日立市', 'name:en': u'Hitachi', 'place': u'city', 'population': u'189958', 'wikidata': u'Q633922'}), dsl.way(189, wkt_loads('POINT (138.260561 34.773784)'), {'id': u'1407195635', 'name': u'吉田町', 'name:en': u'Yoshida', 'place': u'town', 'population': u'29093', 'wikidata': u'Q1202789'}), dsl.way(190, wkt_loads('POINT (138.104479 35.163515)'), {'id': u'1407195637', 'name': u'川根本町', 'name:en': u'Kawanehoncho', 'place': u'town', 'population': u'7192', 'wikidata': u'Q1204025'}), dsl.way(191, wkt_loads('POINT (139.755364 36.178025)'), {'id': u'1419245750', 'name': u'古河市', 'name:en': u'Koga', 'place': u'city', 'population': u'140150', 'wikidata': u'Q836836'}), dsl.way(192, wkt_loads('POINT (139.993871 36.023569)'), {'id': u'1429506750', 'name': u'常総市', 'name:en': u'Joso', 'place': u'city', 'population': u'60829', 'wikidata': u'Q851149'}), dsl.way(193, wkt_loads('POINT (139.698711 35.664596)'), {'id': u'1438867377', 'name': u'渋谷区', 'name:en': u'Shibuya', 'place': u'city', 'population': u'230707', 'wikidata': u'Q193638'}), dsl.way(194, wkt_loads('POINT (139.404766 35.724463)'), {'id': u'1440311172', 'name': u'立川市', 'name:en': u'Tachikawa', 'place': u'city', 'population': u'179575', 'wikidata': u'Q269634'}), dsl.way(195, wkt_loads('POINT (139.238128 35.803601)'), {'id': u'1440354068', 'name': u'青梅市', 'name:en': u'Ome', 'place': u'city', 'population': u'136581', 'wikidata': u'Q237683'}), dsl.way(196, wkt_loads('POINT (140.470338 36.286954)'), {'id': u'1475102974', 'name': u'茨城県', 'name:en': u'Ibaraki Prefecture', 'place': u'province'}), dsl.way(197, wkt_loads('POINT (139.385637 35.756509)'), {'id': u'1513641959', 'name': u'武蔵村山市', 'name:en': u'Musashimurayama', 'place': u'city', 'population': u'71419', 'wikidata': u'Q390806'}), dsl.way(198, wkt_loads('POINT (139.217028 35.731042)'), {'id': u'1513663376', 'name': u'あきる野市', 'name:en': u'Akiruno', 'place': u'city', 'population': u'80787', 'wikidata': u'Q240480'}), dsl.way(199, wkt_loads('POINT (139.096172 35.80966)'), {'id': u'1513663380', 'name': u'奥多摩町', 'name:en': u'Okutama', 'place': u'town', 'population': u'5234', 'wikidata': u'Q598626'}), dsl.way(200, wkt_loads('POINT (139.223819 35.758719)'), {'id': u'1513663382', 'name': u'日の出町', 'name:en': u'Hinode', 'place': u'town', 'population': u'17448', 'wikidata': u'Q1154806'}), dsl.way(201, wkt_loads('POINT (139.334682 35.737188)'), {'id': u'1513663390', 'name': u'福生市', 'name:en': u'Fussa', 'place': u'city', 'population': u'58444', 'wikidata': u'Q317813'}), dsl.way(202, wkt_loads('POINT (139.307862 35.764833)'), {'id': u'1513663393', 'name': u'羽村市', 'name:en': u'Hamura', 'place': u'city', 'population': u'55434', 'wikidata': u'Q270465'}), dsl.way(203, wkt_loads('POINT (139.87714 36.305295)'), {'id': u'1513697885', 'name': u'結城市', 'name:en': u'Yuki', 'place': u'city', 'population': u'51332', 'wikidata': u'Q847569'}), dsl.way(204, wkt_loads('POINT (139.345734 35.784056)'), {'id': u'1517292206', 'name': u'瑞穂町', 'name:en': u'Mizuho', 'place': u'town', 'population': u'33194', 'wikidata': u'Q975797'}), dsl.way(205, wkt_loads('POINT (139.08775 35.632505)'), {'id': u'1598836214', 'name': u'上野原市', 'name:en': u'Uenohara', 'place': u'city', 'population': u'23785', 'wikidata': u'Q851030'}), dsl.way(206, wkt_loads('POINT (138.916862 35.643042)'), {'id': u'1599607817', 'name': u'大月市', 'name:en': u'Otsuki', 'place': u'city', 'population': u'24329', 'wikidata': u'Q386508'}), dsl.way(207, wkt_loads('POINT (138.846894 35.524113)'), {'id': u'1610335916', 'name': u'西桂町', 'name:en': u'Nishikatsura', 'place': u'town', 'population': u'4342', 'wikidata': u'Q1203881'}), dsl.way(208, wkt_loads('POINT (138.905487 35.551618)'), {'id': u'1610335917', 'name': u'都留市', 'name:en': u'Tsuru', 'place': u'city', 'population': u'31414', 'wikidata': u'Q747362'}), dsl.way(209, wkt_loads('POINT (138.934829 35.369862)'), {'id': u'1617003546', 'name': u'小山町', 'name:en': u'Oyama', 'place': u'town', 'population': u'19497', 'wikidata': u'Q726418'}), dsl.way(210, wkt_loads('POINT (138.877573 35.301048)'), {'id': u'1619235769', 'name': u'御殿場市', 'name:en': u'Gotemba', 'place': u'city', 'population': u'87929', 'wikidata': u'Q735175'}), dsl.way(211, wkt_loads('POINT (139.510676 35.704108)'), {'id': u'1619811558', 'name': u'小金井市', 'name:en': u'Koganei', 'place': u'city', 'population': u'122977', 'wikidata': u'Q242874'}), dsl.way(212, wkt_loads('POINT (139.400251 34.737515)'), {'id': u'1632465089', 'name': u'大島町', 'name:en': u'Oshima', 'place': u'town', 'population': u'7884', 'wikidata': u'Q1204507'}), dsl.way(213, wkt_loads('POINT (138.881738 35.21843)'), {'id': u'1648713724', 'name': u'裾野市', 'name:en': u'Susono', 'place': u'city', 'population': u'52113', 'wikidata': u'Q847577'}), dsl.way(214, wkt_loads('POINT (138.807828 35.487457)'), {'id': u'1670542925', 'name': u'富士吉田市', 'name:en': u'Fujiyoshida', 'place': u'city', 'population': u'48167', 'wikidata': u'Q647508'}), dsl.way(215, wkt_loads('POINT (138.765304 35.501065)'), {'id': u'1670542927', 'name': u'富士河口湖町', 'name:en': u'Fujikawaguchiko', 'place': u'town', 'population': u'25329', 'wikidata': u'Q1004231'}), dsl.way(216, wkt_loads('POINT (139.519089 35.752546)'), {'id': u'1673414219', 'name': u'東久留米市', 'name:en': u'Higashikurume', 'place': u'city', 'population': u'116566', 'wikidata': u'Q317830'}), dsl.way(217, wkt_loads('POINT (139.484539 35.768929)'), {'id': u'1673414230', 'name': u'東村山市', 'name:en': u'Higashimurayama', 'place': u'city', 'population': u'150116', 'wikidata': u'Q240489'}), dsl.way(218, wkt_loads('POINT (139.531253 35.785483)'), {'id': u'1673414233', 'name': u'清瀬市', 'name:en': u'Kiyose', 'place': u'city', 'population': u'75072', 'wikidata': u'Q329754'}), dsl.way(219, wkt_loads('POINT (140.050178 35.911532)'), {'id': u'1699286306', 'name': u'取手市', 'name:en': u'Toride', 'place': u'city', 'population': u'105447', 'wikidata': u'Q638312'}), dsl.way(220, wkt_loads('POINT (139.428831 35.740869000000004)'), {'id': u'1717099673', 'name': u'東大和市', 'name:en': u'Higashiyamato', 'place': u'city', 'population': u'84876', 'wikidata': u'Q390788'}), dsl.way(221, wkt_loads('POINT (138.63805 35.639933)'), {'id': u'1775025907', 'name': u'山梨県', 'name:en': u'Yamanashi Prefecture', 'place': u'province', 'wikidata': u'Q132720'}), dsl.way(222, wkt_loads('POINT (138.146936 34.647956)'), {'id': u'1788105973', 'name': u'御前崎市', 'name:en': u'Omaezaki', 'place': u'city', 'population': u'31894', 'wikidata': u'Q850380'}), dsl.way(223, wkt_loads('POINT (138.18517 34.718766)'), {'id': u'1788105974', 'name': u'牧之原市', 'name:en': u'Makinohara', 'place': u'city', 'population': u'44493', 'wikidata': u'Q850527'}), dsl.way(224, wkt_loads('POINT (138.392164 35.837156)'), {'id': u'1788978271', 'name': u'北杜市', 'name:en': u'Hokuto', 'place': u'city', 'population': u'44314', 'wikidata': u'Q825272'}), dsl.way(225, wkt_loads('POINT (138.362783 35.404554)'), {'id': u'1796938439', 'name': u'早川町', 'name:en': u'Hayakawa', 'place': u'town', 'population': u'1068', 'wikidata': u'Q1204436'}), dsl.way(226, wkt_loads('POINT (138.571044 35.665248)'), {'capital': u'4', 'id': u'1808192270', 'name': u'甲府市', 'name:en': u'Kofu', 'place': u'city', 'population': u'193125', 'wikidata': u'Q201932'}), dsl.way(227, wkt_loads('POINT (138.687126 35.692845)'), {'id': u'1808377239', 'name': u'山梨市', 'name:en': u'Yamanashi', 'place': u'city', 'population': u'33962', 'wikidata': u'Q840610'}), dsl.way(228, wkt_loads('POINT (138.464989 35.608362)'), {'id': u'1809487734', 'name': u'南アルプス市', 'name:en': u'Minami-Alps', 'place': u'city', 'population': u'70116', 'wikidata': u'Q824000'}), dsl.way(229, wkt_loads('POINT (138.409373 35.717518)'), {'id': u'1809498177', 'name': u'韮崎市', 'name:en': u'Nirasaki', 'place': u'city', 'population': u'30070', 'wikidata': u'Q290326'}), dsl.way(230, wkt_loads('POINT (138.515327 35.668167)'), {'id': u'1810109727', 'name': u'甲斐市', 'name:en': u'Kai', 'place': u'city', 'population': u'74705', 'wikidata': u'Q577309'}), dsl.way(231, wkt_loads('POINT (138.639399 35.648547)'), {'id': u'1812111051', 'name': u'笛吹市', 'name:en': u'Fuefuki', 'place': u'city', 'population': u'68641', 'wikidata': u'Q849434'}), dsl.way(232, wkt_loads('POINT (138.520992 35.589199)'), {'id': u'1812278654', 'name': u'中央市', 'name:en': u'Chuo', 'place': u'city', 'population': u'30837', 'wikidata': u'Q666049'}), dsl.way(233, wkt_loads('POINT (139.702801 35.530531)'), {'id': u'1933981790', 'name': u'川崎市', 'name:en': u'Kawasaki', 'place': u'city', 'population': u'1509887', 'wikidata': u'Q164234'}), dsl.way(234, wkt_loads('POINT (139.636768 35.444991)'), {'capital': u'4', 'id': u'1973500311', 'name': u'横浜市', 'name:en': u'Yokohama', 'place': u'city', 'population': u'3708122', 'wikidata': u'Q38283'}), dsl.way(235, wkt_loads('POINT (139.869984 34.99653)'), {'id': u'1977624221', 'name': u'館山市', 'name:en': u'Tateyama', 'place': u'city', 'population': u'46471', 'wikidata': u'Q646755'}), dsl.way(236, wkt_loads('POINT (139.83714 35.038749)'), {'id': u'1977631144', 'name': u'南房総市', 'name:en': u'Minamiboso', 'place': u'city', 'population': u'37765', 'wikidata': u'Q873521'}), dsl.way(237, wkt_loads('POINT (139.835819 35.111102)'), {'id': u'1977633118', 'name': u'鋸南町', 'name:en': u'Kyonan', 'place': u'town', 'population': u'8022', 'wikidata': u'Q1203580'}), dsl.way(238, wkt_loads('POINT (140.098692 35.114058)'), {'id': u'1977635153', 'name': u'鴨川市', 'name:en': u'Kamogawa', 'place': u'city', 'population': u'33932', 'wikidata': u'Q387211'}), dsl.way(239, wkt_loads('POINT (139.85705 35.303915)'), {'id': u'1977637091', 'name': u'富津市', 'name:en': u'Futtsu', 'place': u'city', 'population': u'44449', 'wikidata': u'Q498023'}), dsl.way(240, wkt_loads('POINT (140.24526 35.284792)'), {'id': u'1977639950', 'name': u'大多喜町', 'name:en': u'Otaki', 'place': u'town', 'population': u'9843', 'wikidata': u'Q1346191'}), dsl.way(241, wkt_loads('POINT (140.348777 35.191661)'), {'id': u'1977643116', 'name': u'御宿町', 'name:en': u'Onjuku', 'place': u'town', 'population': u'7315'}), dsl.way(242, wkt_loads('POINT (140.320745 35.152185)'), {'id': u'1977652858', 'name': u'勝浦市', 'name:en': u'Katsuura', 'place': u'city', 'population': u'17808', 'wikidata': u'Q696418'}), dsl.way(243, wkt_loads('POINT (140.664575 35.8899)'), {'id': u'2016860246', 'name': u'神栖市', 'name:en': u'Kamisu', 'place': u'city', 'population': u'95052', 'wikidata': u'Q840595'}), dsl.way(244, wkt_loads('POINT (138.09554 34.933249000000004)'), {'id': u'2035767441', 'name': u'静岡県', 'name:en': u'Shizuoka Prefecture', 'place': u'province'}), dsl.way(245, wkt_loads('POINT (139.550228 35.73546)'), {'id': u'2039121337', 'name': u'西東京市', 'name:en': u'Nishitokyo', 'place': u'city', 'population': u'202435', 'wikidata': u'Q242882'}), dsl.way(246, wkt_loads('POINT (138.859988 35.181254)'), {'id': u'2055574009', 'name': u'長泉町', 'name:en': u'Nagaizumi', 'place': u'town', 'population': u'42331', 'wikidata': u'Q1204459'}), dsl.way(247, wkt_loads('POINT (139.031616 35.222919)'), {'id': u'2055590056', 'name': u'箱根町', 'name:en': u'Hakone', 'place': u'town', 'population': u'11786', 'wikidata': u'Q671040'}), dsl.way(248, wkt_loads('POINT (140.645029 35.966116)'), {'id': u'2089866662', 'name': u'鹿嶋市', 'name:en': u'Kashima', 'place': u'city', 'population': u'67802', 'wikidata': u'Q467471'}), dsl.way(249, wkt_loads('POINT (140.411617 36.54292)'), {'id': u'2089981684', 'name': u'常陸大宮市', 'name:en': u'Hitachiomiya', 'place': u'city', 'population': u'41342', 'wikidata': u'Q838681'}), dsl.way(250, wkt_loads('POINT (140.516516 36.158565)'), {'id': u'2091799198', 'name': u'鉾田市', 'name:en': u'Hokota', 'place': u'city', 'population': u'47463', 'wikidata': u'Q857297'}), dsl.way(251, wkt_loads('POINT (140.384946 35.253939)'), {'id': u'2097936978', 'name': u'いすみ市', 'name:en': u'Isumi', 'place': u'city', 'population': u'37442', 'wikidata': u'Q840834'}), dsl.way(252, wkt_loads('POINT (140.368662 35.372802)'), {'id': u'2097955629', 'name': u'一宮町', 'name:en': u'Ichinomiya', 'place': u'town', 'population': u'11767', 'wikidata': u'Q1203602'}), dsl.way(253, wkt_loads('POINT (140.440201 35.535085)'), {'id': u'2097955691', 'name': u'九十九里町', 'name:en': u'Kujukuri', 'place': u'town', 'population': u'16510', 'wikidata': u'Q1202775'}), dsl.way(254, wkt_loads('POINT (140.224016 35.723462)'), {'id': u'2097955765', 'name': u'佐倉市', 'name:en': u'Sakura', 'place': u'city', 'population': u'171927', 'wikidata': u'Q498011'}), dsl.way(255, wkt_loads('POINT (140.099513 35.722537)'), {'id': u'2097955818', 'name': u'八千代市', 'name:en': u'Yachiyo', 'place': u'city', 'population': u'195491', 'wikidata': u'Q328651'}), dsl.way(256, wkt_loads('POINT (140.317865 35.665861)'), {'id': u'2098146218', 'name': u'八街市', 'name:en': u'Yachimata', 'place': u'city', 'population': u'69315', 'wikidata': u'Q638296'}), dsl.way(257, wkt_loads('POINT (140.564514 35.70794)'), {'id': u'2098146219', 'name': u'匝瑳市', 'name:en': u'Sosa', 'place': u'city', 'population': u'36244', 'wikidata': u'Q858367'}), dsl.way(258, wkt_loads('POINT (140.145298 35.832258)'), {'id': u'2098146277', 'name': u'印西市', 'name:en': u'Inzai', 'place': u'city', 'population': u'96640', 'wikidata': u'Q637901'}), dsl.way(259, wkt_loads('POINT (139.902551 35.330238)'), {'id': u'2098146321', 'name': u'君津市', 'name:en': u'Kimitsu', 'place': u'city', 'population': u'84221', 'wikidata': u'Q637928'}), dsl.way(260, wkt_loads('POINT (140.167945 35.669655)'), {'id': u'2098146343', 'name': u'四街道市', 'name:en': u'Yotsukaido', 'place': u'city', 'population': u'90712', 'wikidata': u'Q429373'}), dsl.way(261, wkt_loads('POINT (140.467716 35.735734)'), {'id': u'2098146346', 'name': u'多古町', 'name:en': u'Tako', 'place': u'town', 'population': u'14724', 'wikidata': u'Q1202807'}), dsl.way(262, wkt_loads('POINT (140.320893 35.521604)'), {'id': u'2098146347', 'name': u'大網白里市', 'name:en': u'Oamishirasato', 'place': u'city', 'population': u'48687', 'wikidata': u'Q1203251'}), dsl.way(263, wkt_loads('POINT (140.343055 35.726888)'), {'id': u'2098146348', 'name': u'富里市', 'name:en': u'Tomisato', 'place': u'city', 'population': u'49636', 'wikidata': u'Q692857'}), dsl.way(264, wkt_loads('POINT (140.1157 35.497775)'), {'id': u'2098146351', 'name': u'市原市', 'name:en': u'Ichihara', 'place': u'city', 'population': u'279065', 'wikidata': u'Q207881'}), dsl.way(265, wkt_loads('POINT (139.928568 35.729412)'), {'id': u'2098146352', 'name': u'市川市', 'name:en': u'Ichikawa', 'place': u'city', 'population': u'469603', 'wikidata': u'Q209785'}), dsl.way(266, wkt_loads('POINT (140.318338 35.776768)'), {'id': u'2098146368', 'name': u'成田市', 'name:en': u'Narita', 'place': u'city', 'population': u'131190', 'wikidata': u'Q273798'}), dsl.way(267, wkt_loads('POINT (140.028065 35.863999)'), {'id': u'2098146404', 'name': u'我孫子市', 'name:en': u'Abiko', 'place': u'city', 'population': u'130977', 'wikidata': u'Q243859'}), dsl.way(268, wkt_loads('POINT (140.646453 35.720413)'), {'id': u'2098146405', 'name': u'旭市', 'name:en': u'Asahi', 'place': u'city', 'population': u'65431', 'wikidata': u'Q637868'}), dsl.way(269, wkt_loads('POINT (139.91668 35.375973)'), {'id': u'2098146406', 'name': u'木更津市', 'name:en': u'Kisarazu', 'place': u'city', 'population': u'135461', 'wikidata': u'Q335427'}), dsl.way(270, wkt_loads('POINT (140.668892 35.83711)'), {'id': u'2098183328', 'name': u'東庄町', 'name:en': u'Tohnosho', 'place': u'town', 'population': u'14152', 'wikidata': u'Q1342834'}), dsl.way(271, wkt_loads('POINT (139.903177 35.787937)'), {'id': u'2098183361', 'name': u'松戸市', 'name:en': u'Matsudo', 'place': u'city', 'population': u'483480', 'wikidata': u'Q320943'}), dsl.way(272, wkt_loads('POINT (139.975688 35.867622)'), {'id': u'2098183362', 'name': u'柏市', 'name:en': u'Kashiwa', 'place': u'city', 'population': u'422385', 'wikidata': u'Q319743'}), dsl.way(273, wkt_loads('POINT (140.244124 35.841044)'), {'id': u'2098183363', 'name': u'栄町', 'name:en': u'Sakae', 'place': u'town', 'population': u'21228', 'wikidata': u'Q1202754'}), dsl.way(274, wkt_loads('POINT (140.504854 35.66582)'), {'id': u'2098183364', 'name': u'横芝光町', 'name:en': u'Yokoshibahikari', 'place': u'town', 'population': u'23762', 'wikidata': u'Q1203260'}), dsl.way(275, wkt_loads('POINT (139.902626 35.856231)'), {'id': u'2098183365', 'name': u'流山市', 'name:en': u'Nagareyama', 'place': u'city', 'population': u'186863', 'wikidata': u'Q328625'}), dsl.way(276, wkt_loads('POINT (140.056063 35.791454)'), {'id': u'2098183367', 'name': u'白井市', 'name:en': u'Shiroi', 'place': u'city', 'population': u'62374', 'wikidata': u'Q519187'}), dsl.way(277, wkt_loads('POINT (140.374253 35.454206)'), {'id': u'2098183398', 'name': u'白子町', 'name:en': u'Shirako', 'place': u'town', 'population': u'11149', 'wikidata': u'Q1203293'}), dsl.way(278, wkt_loads('POINT (140.319503 35.361086)'), {'id': u'2098183444', 'name': u'睦沢町', 'name:en': u'Mutsuzawa', 'place': u'town', 'population': u'7222', 'wikidata': u'Q768083'}), dsl.way(279, wkt_loads('POINT (140.405113 35.901689)'), {'id': u'2098183450', 'name': u'神崎町', 'name:en': u'Kozaki', 'place': u'town', 'population': u'6133', 'wikidata': u'Q1153721'}), dsl.way(280, wkt_loads('POINT (140.018956 35.670572)'), {'id': u'2098183451', 'name': u'習志野市', 'name:en': u'Narashino', 'place': u'city', 'population': u'172497', 'wikidata': u'Q318047'}), dsl.way(281, wkt_loads('POINT (139.988668 35.699997)'), {'id': u'2098183459', 'name': u'船橋市', 'name:en': u'Funabashi', 'place': u'city', 'population': u'633263', 'wikidata': u'Q271417'}), dsl.way(282, wkt_loads('POINT (140.41414 35.693098)'), {'id': u'2098183474', 'name': u'芝山町', 'name:en': u'Shibayama', 'place': u'town', 'population': u'7431', 'wikidata': u'Q1203689'}), dsl.way(283, wkt_loads('POINT (140.288075 35.428509)'), {'id': u'2098183487', 'name': u'茂原市', 'name:en': u'Mobara', 'place': u'city', 'population': u'88824', 'wikidata': u'Q502486'}), dsl.way(284, wkt_loads('POINT (139.954466 35.429669)'), {'id': u'2098215068', 'name': u'袖ケ浦市', 'name:en': u'Sodegaura', 'place': u'city', 'population': u'61639', 'wikidata': u'Q646847'}), dsl.way(285, wkt_loads('POINT (140.269483 35.724714)'), {'id': u'2098215126', 'name': u'酒々井町', 'name:en': u'Shisui', 'place': u'town', 'population': u'20955', 'wikidata': u'Q782157'}), dsl.way(286, wkt_loads('POINT (140.000715 35.776646)'), {'id': u'2098215206', 'name': u'鎌ケ谷市', 'name:en': u'Kamagaya', 'place': u'city', 'population': u'109238', 'wikidata': u'Q387365'}), dsl.way(287, wkt_loads('POINT (140.237276 35.386036)'), {'id': u'2098215241', 'name': u'長南町', 'name:en': u'Chonan', 'place': u'town', 'population': u'8206', 'wikidata': u'Q1203194'}), dsl.way(288, wkt_loads('POINT (140.227151 35.431105)'), {'id': u'2098215275', 'name': u'長柄町', 'name:en': u'Nagara', 'place': u'town', 'population': u'7337', 'wikidata': u'Q1203545'}), dsl.way(289, wkt_loads('POINT (140.499279 35.897827)'), {'id': u'2098215364', 'name': u'香取市', 'name:en': u'Katori', 'place': u'city', 'population': u'75362', 'wikidata': u'Q858357'}), dsl.way(290, wkt_loads('POINT (139.640682 35.15505)'), {'id': u'2115184095', 'name': u'三浦市', 'name:en': u'Miura', 'place': u'city', 'population': u'45289', 'wikidata': u'Q823886'}), dsl.way(291, wkt_loads('POINT (139.246756 35.300994)'), {'id': u'2115184096', 'name': u'二宮町', 'name:en': u'Ninomiya', 'place': u'town', 'population': u'28378', 'wikidata': u'Q1354853'}), dsl.way(292, wkt_loads('POINT (139.099241 35.320574)'), {'id': u'2115184099', 'name': u'南足柄市', 'name:en': u'Minamiashigara', 'place': u'city', 'population': u'43306', 'wikidata': u'Q651742'}), dsl.way(293, wkt_loads('POINT (139.323536 35.464797)'), {'id': u'2115184100', 'name': u'厚木市', 'name:en': u'Atsugi', 'place': u'city', 'population': u'225330', 'wikidata': u'Q389711'}), dsl.way(294, wkt_loads('POINT (139.156636 35.326242)'), {'id': u'2115184101', 'name': u'大井町', 'name:en': u'Oi', 'place': u'town', 'population': u'17033', 'wikidata': u'Q1202616'}), dsl.way(295, wkt_loads('POINT (139.460758 35.47269)'), {'admin_leve': u'7', 'id': u'2115184102', 'name': u'大和市', 'name:en': u'Yamato', 'place': u'city', 'population': u'232922', 'wikidata': u'Q386697'}), dsl.way(296, wkt_loads('POINT (139.289557 35.317773)'), {'id': u'2115184103', 'name': u'大磯町', 'name:en': u'Oiso', 'place': u'town', 'population': u'31550', 'wikidata': u'Q385023'}), dsl.way(297, wkt_loads('POINT (139.383785 35.372922)'), {'id': u'2115184104', 'name': u'寒川町', 'name:en': u'Samukawa', 'place': u'town', 'population': u'47936', 'wikidata': u'Q1342787'}), dsl.way(298, wkt_loads('POINT (139.150229 35.263676)'), {'id': u'2115184105', 'name': u'小田原市', 'name:en': u'Odawara', 'place': u'city', 'population': u'192407', 'wikidata': u'Q267258'}), dsl.way(299, wkt_loads('POINT (139.05448 35.389492)'), {'id': u'2115184106', 'name': u'山北町', 'name:en': u'Yamakita', 'place': u'town', 'population': u'10724', 'wikidata': u'Q370478'}), dsl.way(300, wkt_loads('POINT (139.318278 35.357674)'), {'id': u'2115184107', 'name': u'平塚市', 'name:en': u'Hiratsuka', 'place': u'city', 'population': u'259698', 'wikidata': u'Q502199'}), dsl.way(301, wkt_loads('POINT (139.133926 35.359236)'), {'id': u'2115184110', 'name': u'松田町', 'name:en': u'Matsuda', 'place': u'town', 'population': u'11171', 'wikidata': u'Q1202796'}), dsl.way(302, wkt_loads('POINT (139.665383 35.273056)'), {'id': u'2115184112', 'name': u'横須賀市', 'name:en': u'Yokosuka', 'place': u'city', 'population': u'406586', 'wikidata': u'Q200578'}), dsl.way(303, wkt_loads('POINT (139.12073 35.166784)'), {'id': u'2115184115', 'name': u'湯河原町', 'name:en': u'Yugawara', 'place': u'town', 'population': u'25026', 'wikidata': u'Q532346'}), dsl.way(304, wkt_loads('POINT (139.13462 35.160373)'), {'id': u'2115184117', 'name': u'真鶴町', 'name:en': u'Manazuru', 'place': u'town', 'population': u'7333', 'wikidata': u'Q1202786'}), dsl.way(305, wkt_loads('POINT (139.430823 35.446048)'), {'admin_leve': u'7', 'id': u'2115184119', 'name': u'綾瀬市', 'name:en': u'Ayase', 'place': u'city', 'population': u'84139', 'wikidata': u'Q792819'}), dsl.way(306, wkt_loads('POINT (139.405371 35.329479)'), {'id': u'2115184120', 'name': u'茅ヶ崎市', 'name:en': u'Chigasaki', 'place': u'city', 'population': u'240618', 'wikidata': u'Q633911'}), dsl.way(307, wkt_loads('POINT (139.593177 35.272909)'), {'id': u'2115184121', 'name': u'葉山町', 'name:en': u'Hayama', 'place': u'town', 'population': u'32096', 'wikidata': u'Q1342807'}), dsl.way(308, wkt_loads('POINT (139.465077 35.364842)'), {'id': u'2115184122', 'name': u'藤沢市', 'name:en': u'Fujisawa', 'place': u'city', 'population': u'428837', 'wikidata': u'Q386661'}), dsl.way(309, wkt_loads('POINT (139.583845 35.304067)'), {'id': u'2115184123', 'name': u'逗子市', 'name:en': u'Zushi', 'place': u'city', 'population': u'57425', 'wikidata': u'Q230843'}), dsl.way(310, wkt_loads('POINT (139.54442 35.329564)'), {'id': u'2115184125', 'name': u'鎌倉市', 'name:en': u'Kamakura', 'place': u'city', 'population': u'172284', 'wikidata': u'Q200267'}), dsl.way(311, wkt_loads('POINT (139.420453 35.499205)'), {'id': u'2115186706', 'name': u'座間市', 'name:en': u'Zama', 'place': u'city', 'population': u'128737', 'wikidata': u'Q145333'}), dsl.way(312, wkt_loads('POINT (139.297795 35.532347)'), {'id': u'2115186707', 'name': u'愛川町', 'name:en': u'Aikawa', 'place': u'town', 'population': u'40343', 'wikidata': u'Q1203267'}), dsl.way(313, wkt_loads('POINT (139.389999 35.419984)'), {'id': u'2115186708', 'name': u'海老名市', 'name:en': u'Ebina', 'place': u'city', 'population': u'130678', 'wikidata': u'Q734390'}), dsl.way(314, wkt_loads('POINT (139.236215 35.56559)'), {'id': u'2115186710', 'name': u'相模原市', 'name:en': u'Sagamihara', 'place': u'city', 'population': u'722157', 'wikidata': u'Q209779'}), dsl.way(315, wkt_loads('POINT (140.555282 35.947173)'), {'id': u'2115199905', 'name': u'潮来市', 'name:en': u'Itako', 'place': u'city', 'population': u'28491', 'wikidata': u'Q840598'}), dsl.way(316, wkt_loads('POINT (140.488883 35.99019)'), {'id': u'2115199906', 'name': u'行方市', 'name:en': u'Namekata', 'place': u'city', 'population': u'33914', 'wikidata': u'Q877184'}), dsl.way(317, wkt_loads('POINT (140.036995 35.963014)'), {'id': u'2115840208', 'name': u'つくばみらい市', 'name:en': u'Tsukubamirai', 'place': u'city', 'population': u'50615', 'wikidata': u'Q877254'}), dsl.way(318, wkt_loads('POINT (139.745812 36.114738)'), {'id': u'2115840209', 'name': u'五霞町', 'name:en': u'Goka', 'place': u'town', 'population': u'8786', 'wikidata': u'Q680056'}), dsl.way(319, wkt_loads('POINT (139.889662 36.048481)'), {'id': u'2115840210', 'name': u'坂東市', 'name:en': u'Bando', 'place': u'city', 'population': u'53242', 'wikidata': u'Q583931'}), dsl.way(320, wkt_loads('POINT (139.795198 36.108379)'), {'id': u'2115840211', 'name': u'境町', 'name:en': u'Sakai', 'place': u'town', 'population': u'24517', 'wikidata': u'Q1203337'}), dsl.way(321, wkt_loads('POINT (139.975498 35.95101)'), {'id': u'2115840213', 'name': u'守谷市', 'name:en': u'Moriya', 'place': u'city', 'population': u'66230', 'wikidata': u'Q840608'}), dsl.way(322, wkt_loads('POINT (139.874867 35.954908)'), {'id': u'2115840215', 'name': u'野田市', 'name:en': u'Noda', 'place': u'city', 'population': u'152916', 'wikidata': u'Q328619'}), dsl.way(323, wkt_loads('POINT (138.945379 34.679545)'), {'id': u'2377927287', 'name': u'下田市', 'name:en': u'Shimoda', 'place': u'city', 'population': u'22007', 'wikidata': u'Q653402'}), dsl.way(324, wkt_loads('POINT (139.087685 34.926734)'), {'id': u'2377927288', 'name': u'伊東市', 'name:en': u'Ito', 'place': u'city', 'population': u'66988', 'wikidata': u'Q721163'}), dsl.way(325, wkt_loads('POINT (138.961915 35.035531)'), {'id': u'2377927289', 'name': u'伊豆の国市', 'name:en': u'Izunokuni', 'place': u'city', 'population': u'47624', 'wikidata': u'Q863758'}), dsl.way(326, wkt_loads('POINT (138.946708 34.976455)'), {'id': u'2377927290', 'name': u'伊豆市', 'name:en': u'Izu', 'place': u'city', 'population': u'30283', 'wikidata': u'Q696840'}), dsl.way(327, wkt_loads('POINT (138.998583 35.117085)'), {'id': u'2377927291', 'name': u'函南町', 'name:en': u'Kannami', 'place': u'town', 'population': u'37347', 'wikidata': u'Q1203533'}), dsl.way(328, wkt_loads('POINT (138.858719 34.643311)'), {'id': u'2377927292', 'name': u'南伊豆町', 'name:en': u'Minamiizu', 'place': u'town', 'population': u'8524', 'wikidata': u'Q1203741'}), dsl.way(329, wkt_loads('POINT (139.035878 34.801476)'), {'id': u'2377927293', 'name': u'東伊豆町', 'name:en': u'Higashiizu', 'place': u'town', 'population': u'12624', 'wikidata': u'Q304491'}), dsl.way(330, wkt_loads('POINT (138.801992 34.750811)'), {'id': u'2377927294', 'name': u'松崎町', 'name:en': u'Matsuzaki', 'place': u'town', 'population': u'6837', 'wikidata': u'Q1204017'}), dsl.way(331, wkt_loads('POINT (138.983947 34.750862)'), {'id': u'2377927295', 'name': u'河津町', 'name:en': u'Kawazu', 'place': u'town', 'population': u'7303', 'wikidata': u'Q1203861'}), dsl.way(332, wkt_loads('POINT (138.898974 35.10764)'), {'id': u'2377927296', 'name': u'清水町', 'name:en': u'Shimizu', 'place': u'town', 'population': u'32118', 'wikidata': u'Q1203168'}), dsl.way(333, wkt_loads('POINT (139.059891 35.08992)'), {'id': u'2377927299', 'name': u'熱海市', 'name:en': u'Atami', 'place': u'city', 'population': u'37000', 'wikidata': u'Q653364'}), dsl.way(334, wkt_loads('POINT (138.794672 34.800667)'), {'id': u'2377927313', 'name': u'西伊豆町', 'name:en': u'Nishiizu', 'place': u'town', 'population': u'8234', 'wikidata': u'Q1203949'}), dsl.way(335, wkt_loads('POINT (139.703632 35.693763)'), {'capital': u'4', 'id': u'2389061853', 'name': u'新宿区', 'name:en': u'Shinjuku', 'place': u'city', 'population': u'337556', 'wikidata': u'Q179645'}), dsl.way(336, wkt_loads('POINT (139.677099 36.018618)'), {'id': u'2716991002', 'name': u'白岡市', 'name:en': u'Shiraoka', 'place': u'city', 'population': u'52109', 'wikidata': u'Q1345322'}), dsl.way(337, wkt_loads('POINT (139.374753 35.434294)'), {'admin_leve': u'4', 'id': u'2719205431', 'name': u'神奈川県', 'name:en': u'Kanagawa Prefecture', 'place': u'province'}), dsl.way(338, wkt_loads('POINT (140.26473 35.549399)'), {'id': u'2739381522', 'name': u'千葉県', 'name:en': u'Chiba Prefecture', 'place': u'province'}), dsl.way(339, wkt_loads('POINT (139.90185 35.653052)'), {'id': u'2900447873', 'name': u'浦安市', 'name:en': u'Urayasu', 'place': u'city', 'population': u'164024', 'wikidata': u'Q319729'}), dsl.way(340, wkt_loads('POINT (138.461389 35.561111)'), {'id': u'2955593366', 'name': u'富士川町', 'name:en': u'Fujikawa', 'place': u'town', 'population': u'15294', 'wikidata': u'Q1351723'}), dsl.way(341, wkt_loads('POINT (138.502222 35.565278)'), {'id': u'2955593367', 'name': u'市川三郷町', 'name:en': u'Ichikawamisato', 'place': u'town', 'population': u'15673', 'wikidata': u'Q1204453'}), dsl.way(342, wkt_loads('POINT (138.538955 35.625669)'), {'id': u'2955593368', 'name': u'昭和町', 'name:en': u'Showa', 'place': u'town', 'population': u'19505', 'wikidata': u'Q1204276'}), dsl.way(343, wkt_loads('POINT (138.458633 35.259129)'), {'id': u'2993187421', 'name': u'南部町', 'name:en': u'Nanbu', 'place': u'town', 'population': u'8067', 'wikidata': u'Q1204802'}), dsl.way(344, wkt_loads('POINT (138.442567 35.468051)'), {'id': u'2993187422', 'name': u'身延町', 'name:en': u'Minobu', 'place': u'town', 'population': u'12669', 'wikidata': u'Q1204435'}), dsl.way(345, wkt_loads('POINT (139.120733 35.342161)'), {'id': u'2993187423', 'name': u'開成町', 'name:en': u'Kaisei', 'place': u'town', 'population': u'17013', 'wikidata': u'Q1202613'}), dsl.way(346, wkt_loads('POINT (138.887831 36.326365)'), {'id': u'3231770610', 'name': u'安中市', 'name:en': u'Annaka', 'place': u'city', 'population': u'57097', 'wikidata': u'Q564234'}), dsl.way(347, wkt_loads('POINT (139.891043 36.181575)'), {'id': u'3369490337', 'name': u'八千代町', 'name:en': u'Yachiyo', 'place': u'town', 'population': u'22021', 'wikidata': u'Q1203394'}), dsl.way(348, wkt_loads('POINT (140.244626 35.884548)'), {'id': u'3369514735', 'name': u'河内町', 'name:en': u'Kawachi', 'place': u'town', 'population': u'9168', 'wikidata': u'Q1203304'}), dsl.way(349, wkt_loads('POINT (140.138754 35.857362)'), {'id': u'3372718846', 'name': u'利根町', 'name:en': u'Tone', 'place': u'town', 'population': u'16313', 'wikidata': u'Q1203324'}), dsl.way(350, wkt_loads('POINT (140.090359 36.327241)'), {'id': u'3383889945', 'name': u'桜川市', 'name:en': u'Sakuragawa', 'place': u'city', 'population': u'41278', 'wikidata': u'Q990350'}), dsl.way(351, wkt_loads('POINT (139.97909 36.305194)'), {'id': u'3385454595', 'name': u'筑西市', 'name:en': u'Chikusei', 'place': u'city', 'population': u'102242', 'wikidata': u'Q694322'}), dsl.way(352, wkt_loads('POINT (138.793924 35.726318)'), {'id': u'3457555438', 'name': u'甲州市', 'name:en': u'Koshu', 'place': u'city', 'population': u'30818', 'wikidata': u'Q248723'}), dsl.way(353, wkt_loads('POINT (139.220648 35.334473)'), {'id': u'3655646708', 'name': u'中井町', 'name:en': u'Nakai', 'place': u'town', 'population': u'9679', 'wikidata': u'Q1344396'}), dsl.way(354, wkt_loads('POINT (140.118126 35.609985)'), {'admin_leve': u'7', 'capital': u'4', 'id': u'3675848658', 'name': u'千葉市', 'name:en': u'Chiba', 'place': u'city', 'population': u'975140', 'wikidata': u'Q170616'}), dsl.way(355, wkt_loads('POINT (140.413429 35.602875)'), {'admin_leve': u'7', 'id': u'3675848659', 'name': u'山武市', 'name:en': u'Sanmu', 'place': u'city', 'population': u'50801', 'wikidata': u'Q873528'}), dsl.way(356, wkt_loads('POINT (140.366259 35.560031)'), {'admin_leve': u'7', 'id': u'3675848660', 'name': u'東金市', 'name:en': u'Toogane', 'place': u'city', 'population': u'60051', 'wikidata': u'Q637913'}), dsl.way(357, wkt_loads('POINT (138.120123 36.533698)'), {'id': u'5901282249', 'name': u'千曲市', 'name:en': u'Chikuma', 'place': u'city', 'population': u'59792', 'wikidata': u'Q179757'}), dsl.way(358, wkt_loads('POINT (138.249051 36.402119)'), {'id': u'5901282250', 'name': u'上田市', 'name:en': u'Ueda', 'place': u'city', 'population': u'156980', 'wikidata': u'Q844852'}), dsl.way(359, wkt_loads('POINT (138.179637 36.461702)'), {'id': u'5901282255', 'name': u'坂城町', 'name:en': u'Sakaki', 'place': u'town', 'population': u'14871', 'wikidata': u'Q1348962'}), dsl.way(360, wkt_loads('POINT (138.47677 36.248801)'), {'id': u'5901282261', 'name': u'佐久市', 'name:en': u'Saku', 'place': u'city', 'population': u'98652', 'wikidata': u'Q495821'}), dsl.way(361, wkt_loads('POINT (138.315903 36.272034)'), {'id': u'5901282274', 'name': u'立科町', 'name:en': u'Tateshina', 'place': u'town', 'population': u'7265', 'wikidata': u'Q1346895'}), dsl.way(362, wkt_loads('POINT (138.330535 36.359423)'), {'id': u'5901282279', 'name': u'東御市', 'name:en': u'Tomi', 'place': u'city', 'population': u'29601', 'wikidata': u'Q840859'}), dsl.way(363, wkt_loads('POINT (138.507163 36.322601)'), {'id': u'5901282281', 'name': u'御代田町', 'name:en': u'Miyota', 'place': u'town', 'population': u'15184', 'wikidata': u'Q1204123'}), dsl.way(364, wkt_loads('POINT (138.596997 36.348294)'), {'id': u'5901282594', 'name': u'軽井沢町', 'name:en': u'Karuizawa', 'place': u'town', 'population': u'18994', 'wikidata': u'Q1012064'}), dsl.way(365, wkt_loads('POINT (139.677875 36.239633)'), {'admin_leve': u'6', 'id': u'6914872836', 'name': u'渡良瀬遊水地', 'name:en': u'Watarase Usuichi', 'place': u'town'}), dsl.way(366, wkt_loads('POINT (139.600792 36.22589)'), {'id': u'7134809975', 'name': u'板倉町', 'name:en': u'Itakura', 'place': u'town', 'population': u'15015', 'wikidata': u'Q1203771'}), dsl.way(367, wkt_loads('POINT (139.242073 35.374662)'), {'id': u'7159778006', 'name': u'秦野市', 'name:en': u'Hadano', 'place': u'city', 'population': u'167378', 'wikidata': u'Q460806'}), dsl.way(368, wkt_loads('POINT (139.299611 35.402397)'), {'id': u'7159778007', 'name': u'伊勢原市', 'name:en': u'Isehara', 'place': u'city', 'population': u'101514', 'wikidata': u'Q734520'}), dsl.way(369, wkt_loads('POINT (139.402905 35.957231)'), {'id': u'7165933146', 'name': u'坂戸市', 'name:en': u'Sakado', 'place': u'city', 'population': u'101679', 'wikidata': u'Q850344'}), dsl.way(370, wkt_loads('POINT (139.54848 36.172402)'), {'id': u'7165933147', 'name': u'羽生市', 'name:en': u'Hanyu', 'place': u'city', 'population': u'54874', 'wikidata': u'Q847565'}), dsl.way(371, wkt_loads('POINT (139.461421 36.252976)'), {'id': u'7180044893', 'name': u'邑楽町', 'name:en': u'Ora', 'place': u'town', 'population': u'26426', 'wikidata': u'Q656774'}), dsl.way(372, wkt_loads('POINT (139.851833 36.395081)'), {'id': u'7180482856', 'name': u'下野市', 'name:en': u'Shimotsuke', 'place': u'city', 'population': u'59431', 'wikidata': u'Q851804'}), dsl.way(373, wkt_loads('POINT (140.149403 35.979425)'), {'id': u'7180482857', 'name': u'牛久市', 'name:en': u'Ushiku', 'place': u'city', 'population': u'84317', 'wikidata': u'Q844133'}), dsl.way(374, wkt_loads('POINT (139.745246 36.567292)'), {'id': u'7319384467', 'name': u'鹿沼市', 'name:en': u'Kanuma', 'place': u'city', 'population': u'97145', 'wikidata': u'Q390792'}), dsl.way(375, wkt_loads('POINT (138.425972 36.327253)'), {'id': u'7844841591', 'name': u'小諸市', 'name:en': u'Komoro', 'place': u'city', 'population': u'41693', 'wikidata': u'Q838657'})] # noqa + self.generate_fixtures(*ways) def test_thinned_tokyo(self): - with self.tile(7,113,50) as t: - print(t) + # Zoom 8 should have Tokyo self.assert_has_feature( - 7, 113, 50, 'places', - {'kind': 'locality', 'name': u'静岡市', - 'source': 'openstreetmap.org'}) + 8, 227, 100, 'places', + {'kind': 'locality', 'id': 4}) + # ... but should not have the nearby small locality Chiyoda + self.assert_no_matching_feature( + 8, 227, 100, 'places', + {'kind': 'locality', 'id': 143}) + # We should thin out most of the data at zoom 8 + self.assert_n_matching_features( + 8, 227, 100, 'places', + {'kind': 'locality'}, 134) + + # Zoom 11 should have Tokyo + self.assert_has_feature( + 11, 1819, 806, 'places', + {'kind': 'locality', 'id': 4}) + # .. and SHOULD have the nearby small locality Chiyoda + self.assert_has_feature( + 11, 1819, 806, 'places', + {'kind': 'locality', 'id': 143}) From a4291c7a6f31b4b4f7cb700f580c1655f498428d Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Thu, 2 Dec 2021 17:15:49 -0600 Subject: [PATCH 13/16] Fix trailing whitespace --- queries.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/queries.yaml b/queries.yaml index b37aa9b05..916a17625 100644 --- a/queries.yaml +++ b/queries.yaml @@ -1084,7 +1084,7 @@ post_process: - sidewalk_right - sport - trail_visibility - + # drop name and other properties on early paths to # allow more line merging (use walking network for labeling) - fn: vectordatasource.transform.drop_properties @@ -1177,7 +1177,7 @@ post_process: - access - osm_relation where: >- - (kind == 'highway' and zoom < 11) or + (kind == 'highway' and zoom < 11) or (kind_detail == 'trunk' and zoom < 12) or (kind_detail == 'primary' and zoom < 13) or (kind_detail == 'secondary' and zoom < 14) or @@ -1291,7 +1291,7 @@ post_process: properties: - surface where: >- - kind == 'minor_road' or + kind == 'minor_road' or (kind == 'path' and zoom < 13) # drop to get better merging at mid zooms. @@ -1725,7 +1725,7 @@ post_process: - landuse_kind where: >- landuse_kind in ('residential', 'industrial') - + - fn: vectordatasource.transform.drop_properties params: source_layer: roads From 23786bf6241949987125c8e450b3af07233aeef8 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Thu, 2 Dec 2021 17:21:51 -0600 Subject: [PATCH 14/16] Resolve pre-commit yaml check --- yaml/places.yaml | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/yaml/places.yaml b/yaml/places.yaml index 9e126f1f4..5c72e0e81 100644 --- a/yaml/places.yaml +++ b/yaml/places.yaml @@ -159,8 +159,7 @@ filters: - filter: {name: true, place: town} min_zoom: 10 output: - <<: *output_properties - <<: *alternate_fclass + <<: [*output_properties, *alternate_fclass] kind: locality kind_detail: town population: 5000 @@ -183,16 +182,14 @@ filters: - filter: {name: true, population: true, place: locality} min_zoom: 13 output: - <<: *output_properties - <<: *alternate_fclass + <<: [*output_properties, *alternate_fclass] kind: locality kind_detail: locality table: osm - filter: {name: true, place: locality} min_zoom: 14 output: - <<: *output_properties - <<: *alternate_fclass + <<: [*output_properties, *alternate_fclass] kind: locality kind_detail: locality population: 1000 @@ -222,8 +219,7 @@ filters: - filter: { name: true, place: isolated_dwelling } min_zoom: 15 output: - <<: *output_properties - <<: *alternate_fclass + <<: [*output_properties, *alternate_fclass] kind: locality kind_detail: isolated_dwelling population: 100 @@ -231,8 +227,7 @@ filters: - filter: { name: true, population: true, place: farm } min_zoom: 14 output: - <<: *output_properties - <<: *alternate_fclass + <<: [*output_properties, *alternate_fclass] kind: locality kind_detail: farm table: osm From d8b7dbe822e4d37578443f235f59a8ef89e3c136 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Tue, 7 Dec 2021 15:44:30 -0600 Subject: [PATCH 15/16] Add support for grid_height/grid_width as separate values --- queries.yaml | 30 ++++++++++++++++++++++++++++-- test/test_transform.py | 14 +++++++------- vectordatasource/transform.py | 17 ++++++++++------- 3 files changed, 45 insertions(+), 16 deletions(-) diff --git a/queries.yaml b/queries.yaml index 916a17625..97d08562d 100644 --- a/queries.yaml +++ b/queries.yaml @@ -976,10 +976,36 @@ post_process: params: source_layer: places start_zoom: 8 - end_zoom: 12 + end_zoom: 9 + items_matching: { kind: locality } + max_items: 1 + grid_width: 3 + sorting_keys: + - { sort_key: 'min_zoom', reverse: False } + - { sort_key: 'collision_rank', reverse: False } + - { sort_key: 'population', reverse: True } + - { sort_key: 'id', reverse: True } + - fn: vectordatasource.transform.keep_n_features_gridded + params: + source_layer: places + start_zoom: 9 + end_zoom: 11 + items_matching: { kind: locality } + max_items: 1 + grid_width: 6 + sorting_keys: + - { sort_key: 'min_zoom', reverse: False } + - { sort_key: 'collision_rank', reverse: False } + - { sort_key: 'population', reverse: True } + - { sort_key: 'id', reverse: True } + - fn: vectordatasource.transform.keep_n_features_gridded + params: + source_layer: places + start_zoom: 11 + end_zoom: 13 items_matching: { kind: locality } max_items: 1 - grid_size: 16 + grid_width: 12 sorting_keys: - { sort_key: 'min_zoom', reverse: False } - { sort_key: 'collision_rank', reverse: False } diff --git a/test/test_transform.py b/test/test_transform.py index 748ab6e23..6dc64bc76 100644 --- a/test/test_transform.py +++ b/test/test_transform.py @@ -424,7 +424,7 @@ def test_not_points(self): source_layer="test_layer", items_matching=dict(foo="bar"), max_items=1, - grid_size=2, + grid_width=2, sorting_keys=[ {"sort_key": "foo"}, ], @@ -461,7 +461,7 @@ def test_points_keep_1(self): source_layer="test_layer", items_matching=dict(foo="bar"), max_items=1, - grid_size=2, + grid_width=2, sorting_keys=[ {"sort_key": "foo"}, ], @@ -499,7 +499,7 @@ def test_points_keep_1_multisort_second(self): source_layer="test_layer", items_matching=dict(foo="bar"), max_items=1, - grid_size=2, + grid_width=2, sorting_keys=[ {"sort_key": "min_zoom"}, {"sort_key": "population", "reverse": True}, @@ -538,7 +538,7 @@ def test_points_keep_1_multisort_minzoom(self): source_layer="test_layer", items_matching=dict(foo="bar"), max_items=1, - grid_size=2, + grid_width=2, sorting_keys=[ {"sort_key": "min_zoom"}, {"sort_key": "population", "reverse": True}, @@ -581,7 +581,7 @@ def test_points_keep_1_different_buckets(self): source_layer="test_layer", items_matching=dict(foo="bar"), max_items=1, - grid_size=2, + grid_width=2, sorting_keys=[ {"sort_key": "population", "reverse": True}, ], @@ -625,7 +625,7 @@ def test_points_keep_more_than_in_one_bucket(self): source_layer="test_layer", items_matching=dict(foo="bar"), max_items=5, - grid_size=2, + grid_width=2, sorting_keys=[ {"sort_key": "min_zoom", "reverse": True}, {"sort_key": "population"}, @@ -667,7 +667,7 @@ def test_fail_on_non_integer_reverse_sort_key(self): source_layer="test_layer", items_matching=dict(foo="bar"), max_items=5, - grid_size=2, + grid_width=2, sorting_keys=[ {"sort_key": "population", "reverse": True}, ], diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index ee01a9e61..493b56a9e 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -3120,9 +3120,10 @@ def keep_n_features_gridded(ctx): pairs in `items_matching` into a grid, then keep the first `max_items` features in each grid cell. - The grid is created by dividing the width and height - of the tile into `grid_size` buckets (so you end up - with grid_size*grid_size buckets total). + The grid is created by dividing the tile into buckets. + You can specify the `grid_width` and `grid_height` to + get grid_width*grid_height buckets or just `grid_width` + to get grid_width*grid_width buckets. NOTE: This only works with point features and will pass through non-point features untouched. @@ -3139,7 +3140,9 @@ def keep_n_features_gridded(ctx): end_zoom = ctx.params.get('end_zoom') items_matching = ctx.params.get('items_matching') max_items = ctx.params.get('max_items') - grid_size = ctx.params.get('grid_size') + grid_width = ctx.params.get('grid_width') + # if grid_height is not specified, use grid_width for grid_height + grid_height = ctx.params.get('grid_height') or grid_width sorting_keys = ctx.params.get('sorting_keys') # leaving items_matching, grid_size, or max_items as None (or zero) @@ -3147,7 +3150,7 @@ def keep_n_features_gridded(ctx): # that this is really a configuration error. assert items_matching, 'keep_n_features_gridded: missing or empty item match dict' assert max_items, 'keep_n_features_gridded: missing or zero max number of items' - assert grid_size, 'keep_n_features_gridded: missing or zero grid size' + assert grid_width, 'keep_n_features_gridded: missing or zero grid width' assert sorting_keys, 'keep_n_features_gridded: missing sorting keys' assert isinstance(sorting_keys, list), 'keep_n_features_gridded: sorting keys should be a list' @@ -3166,8 +3169,8 @@ def keep_n_features_gridded(ctx): return None minx, miny, maxx, maxy = ctx.unpadded_bounds - bucket_width = (maxx - minx) / grid_size - bucket_height = (maxy - miny) / grid_size + bucket_width = (maxx - minx) / grid_width + bucket_height = (maxy - miny) / grid_height # Sort the features into buckets buckets = defaultdict(list) From ab0d108a36f378e5247fb0b6eaa03b1b6b8a3967 Mon Sep 17 00:00:00 2001 From: Ian Dees Date: Fri, 10 Dec 2021 14:29:15 -0600 Subject: [PATCH 16/16] Add a note about 256 vs 512 sizing --- vectordatasource/transform.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vectordatasource/transform.py b/vectordatasource/transform.py index 493b56a9e..fcd2d10b9 100644 --- a/vectordatasource/transform.py +++ b/vectordatasource/transform.py @@ -3125,6 +3125,9 @@ def keep_n_features_gridded(ctx): get grid_width*grid_height buckets or just `grid_width` to get grid_width*grid_width buckets. + This may impact "256" and "512" sized tiles differently, + so it might be worth checking both sizes. + NOTE: This only works with point features and will pass through non-point features untouched.