53 votos

Transformar objetos Shapely Polygon y MultiPolygon

¿Existe una manera fácil de transformar objetos Shapely (a saber, polígonos y polígonos múltiples) de una proyección a otra sin tener que excavar y extraer coordenadas a mano?

De hecho, ni siquiera me importa si son objetos Shapely en este punto, solo quiero pasar características y una proyección, y recuperar un conjunto reproyectado de características.

¿Existe este tipo de funcionalidad o debe codificarse manualmente?

30voto

Ali Nfr Puntos 152

Si está usando pyproj2, es mucho más fácil usar un Transformer. He aquí un ejemplo:

 import pyproj
from shapely.ops import transform

project = pyproj.Transformer.from_proj(
    pyproj.Proj(init='epsg:4326'), # source coordinate system
    pyproj.Proj(init='epsg:26913')) # destination coordinate system

# g1 is a shapley Polygon

g2 = transform(project.transform, g1)  # apply projection

Esto también es mucho más rápido, porque pyproj no necesita recrear la proyección para cada punto.

14voto

iZ. Puntos 1077

Si bien no es una solución de Shapely, el uso de GeoPandas permite una proyección relativamente sencilla. Por ejemplo, si queremos convertir un shapefile a ESPG 4326:

 import geopandas as gpd

HabModelEnviro = gpd.GeoDataFrame.from_file('data/HabModelEnviro.shp').replace({-999: None})

HabModelEnviroWGS84 = HabModelEnviro.to_crs({'proj':'longlat', 'ellps':'WGS84', 'datum':'WGS84'})

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X