[polygons] When loading polygons from disk/GeoJSON, include holes

This commit is contained in:
Al
2016-05-19 01:43:09 -04:00
parent 465034472a
commit fd1d5aef04
2 changed files with 4 additions and 3 deletions

View File

@@ -297,7 +297,7 @@ class AddressComponents(object):
combo = weighted_choice(values, probs) combo = weighted_choice(values, probs)
if combo is not None: if combo is not None:
components = OrderedDict.fromkeys(combo['components']).keys() components = OrderedDict.fromkeys(combo['components']).keys()
if not all((c in address_components and (c in generated_components or self.is_numeric(address_components[c])) for c in components)): if not all((c in address_components and (c in generated_components or address_components[c].isdigit()) for c in components)):
return None return None
values = [] values = []

View File

@@ -255,12 +255,13 @@ class PolygonIndex(object):
def polygon_from_geojson(cls, feature): def polygon_from_geojson(cls, feature):
poly_type = feature['geometry']['type'] poly_type = feature['geometry']['type']
if poly_type == 'Polygon': if poly_type == 'Polygon':
poly = cls.to_polygon(feature['geometry']['coordinates'][0]) coords = feature['geometry']['coordinates']
poly = cls.to_polygon(coords[0], holes=coords[1:] or None)
return poly return poly
elif poly_type == 'MultiPolygon': elif poly_type == 'MultiPolygon':
polys = [] polys = []
for coords in feature['geometry']['coordinates']: for coords in feature['geometry']['coordinates']:
poly = cls.to_polygon(coords[0]) poly = cls.to_polygon(coords[0], holes=coords[1:] or None)
polys.append(poly) polys.append(poly)
return MultiPolygon(polys) return MultiPolygon(polys)