[polygons] moving polygon fixes to the to_polygon method so they get applied both at ingestion and on cache load
This commit is contained in:
@@ -167,6 +167,11 @@ class PolygonIndex(object):
|
|||||||
holes = [(lon + 360.0 if lon < 0 else lon, lat) for lon, lat in holes]
|
holes = [(lon + 360.0 if lon < 0 else lon, lat) for lon, lat in holes]
|
||||||
|
|
||||||
poly = Polygon(coords, holes)
|
poly = Polygon(coords, holes)
|
||||||
|
if not poly.is_valid and not poly.contains(poly.centroid):
|
||||||
|
poly_fix = cls.fix_polygon(poly)
|
||||||
|
if poly_fix is not None and poly_fix.bounds and len(poly_fix.bounds) == 4 and poly_fix.is_valid and (poly_fix.contains(poly.centroid) or poly_fix.contains(poly_fix.representative_point())):
|
||||||
|
poly = poly_fix
|
||||||
|
|
||||||
return poly
|
return poly
|
||||||
|
|
||||||
def add_geojson_like_record(self, rec, include_only_properties=None):
|
def add_geojson_like_record(self, rec, include_only_properties=None):
|
||||||
|
|||||||
@@ -379,11 +379,6 @@ class OSMReverseGeocoder(RTreePolygonIndex):
|
|||||||
if poly is None or not poly.bounds or len(poly.bounds) != 4:
|
if poly is None or not poly.bounds or len(poly.bounds) != 4:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not poly.is_valid and not poly.contains(poly.centroid):
|
|
||||||
poly_fix = cls.fix_polygon(poly)
|
|
||||||
if poly_fix is not None and poly_fix.bounds and len(poly_fix.bounds) == 4 and poly_fix.is_valid and (poly_fix.contains(poly.centroid) or poly_fix.contains(poly_fix.representative_point())):
|
|
||||||
poly = poly_fix
|
|
||||||
|
|
||||||
interior = []
|
interior = []
|
||||||
try:
|
try:
|
||||||
# Figure out which outer polygon contains each inner polygon
|
# Figure out which outer polygon contains each inner polygon
|
||||||
|
|||||||
Reference in New Issue
Block a user