Last active
August 13, 2018 12:43
-
-
Save LeonardAukea/ef625649967e646c008bda97cd5f212a to your computer and use it in GitHub Desktop.
Python: Shapely Remove third dimension
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from shapely.geometry import * | |
def remove_third_dimension(geom): | |
if geom.is_empty: | |
return geom | |
if isinstance(geom, Polygon): | |
exterior = geom.exterior | |
new_exterior = remove_third_dimension(exterior) | |
interiors = geom.interiors | |
new_interiors = [] | |
for int in interiors: | |
new_interiors.append(remove_third_dimension(int)) | |
return Polygon(new_exterior, new_interiors) | |
elif isinstance(geom, LinearRing): | |
return LinearRing([xy[0:2] for xy in list(geom.coords)]) | |
elif isinstance(geom, LineString): | |
return LineString([xy[0:2] for xy in list(geom.coords)]) | |
elif isinstance(geom, Point): | |
return Point([xy[0:2] for xy in list(geom.coords)]) | |
elif isinstance(geom, MultiPoint): | |
points = list(geom.geoms) | |
new_points = [] | |
for point in points: | |
new_points.append(remove_third_dimension(point)) | |
return MultiPoint(new_points) | |
elif isinstance(geom, MultiLineString): | |
lines = list(geom.geoms) | |
new_lines = [] | |
for line in lines: | |
new_lines.append(remove_third_dimension(line)) | |
return MultiLineString(new_lines) | |
elif isinstance(geom, MultiPolygon): | |
pols = list(geom.geoms) | |
new_pols = [] | |
for pol in pols: | |
new_pols.append(remove_third_dimension(pol)) | |
return MultiPolygon(new_pols) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment