Transformar objetos Shapely Polygon y MultiPolygon

21

¿Existe una manera fácil de transformar objetos Shapely (a saber, Polígonos y Polipólculos) de una proyección a otra sin tener que excavar y extraer las coordenadas a mano?

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

¿Existe este tipo de funcionalidad, o debe estar codificado a mano?

    
pregunta Chris Fonnesbeck 22.12.2014 - 22:44

2 respuestas

39

Mientras que shapely no entiende de forma nativa los sistemas de coordenadas, shapely.ops.transform() puede hacer eso junto con pyproj . Si pyproj.Proj puede entender sus dos sistemas de coordenadas, entonces se puede convertir en una función que se pueda transformar adecuadamente.

De la bien proporcionada docs :

from functools import partial
import pyproj
from shapely.ops import transform

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

g2 = transform(project, g1)  # apply projection
    
respondido por el Alex Kerney 22.12.2014 - 23:01
8

Si bien no es una solución bien proporcionada, 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'})
    
respondido por el Chris Fonnesbeck 23.12.2014 - 02:42

Lea otras preguntas en las etiquetas