From 9125f07af08d20daf813d86cf83c6fcbc17ab435 Mon Sep 17 00:00:00 2001 From: Al Date: Thu, 13 Aug 2015 18:43:32 -0400 Subject: [PATCH] [polygons] Separating out simplify polygon into a method in RTree index --- scripts/geodata/polygons/index.py | 7 ++++--- scripts/geodata/polygons/language_polys.py | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/geodata/polygons/index.py b/scripts/geodata/polygons/index.py index 9dd85cb4..3e29e43f 100644 --- a/scripts/geodata/polygons/index.py +++ b/scripts/geodata/polygons/index.py @@ -46,11 +46,12 @@ class RTreePolygonIndex(object): def index_polygon(self, id, polygon): self.index.insert(id, polygon.bounds) - def add_polygon(self, poly, properties, simplify_tolerance=0.0001, preserve_topology=True): - poly = poly.simplify(simplify_tolerance, preserve_topology=preserve_topology) + def simplify_polygon(self, poly, simplify_tolerance=0.0001, preserve_topology=True): + return poly.simplify(simplify_tolerance, preserve_topology=preserve_topology) + + def add_polygon(self, poly, properties): if self.include_only_properties: properties = {k: v for k, v in properties.iteritems() if k in self.include_only_properties} - self.polygons.append((properties, prep(poly))) @classmethod diff --git a/scripts/geodata/polygons/language_polys.py b/scripts/geodata/polygons/language_polys.py index c4abad06..72add582 100644 --- a/scripts/geodata/polygons/language_polys.py +++ b/scripts/geodata/polygons/language_polys.py @@ -105,6 +105,7 @@ class LanguagePolygonIndex(RTreePolygonIndex): if poly_type == 'Polygon': poly = Polygon(rec['geometry']['coordinates'][0]) index.index_polygon(i, poly) + poly = self.simplify_polygon(poly) index.add_polygon(poly, dict(rec['properties'])) elif poly_type == 'MultiPolygon': polys = [] @@ -113,7 +114,8 @@ class LanguagePolygonIndex(RTreePolygonIndex): polys.append(poly) index.index_polygon(i, poly) - index.add_polygon(MultiPolygon(polys), dict(rec['properties'])) + multi_poly = self.simplify_polygon(MultiPolygon(polys)) + index.add_polygon(multi_poly, dict(rec['properties'])) else: continue @@ -127,3 +129,4 @@ class LanguagePolygonIndex(RTreePolygonIndex): def get_candidate_polygons(self, lat, lon): candidates = OrderedDict.fromkeys(self.index.intersection((lon, lat, lon, lat))).keys() return sorted(candidates, key=self.admin_level, reverse=True) +