Existe-t-il un moyen facile de transformer des objets Shapely (à savoir, des polygones et des multi-polygones) d'une projection à une autre sans avoir à creuser et extraire les coordonnées à la main?
En fait, peu m'importe si ce sont des objets Shapely à ce stade, je veux juste passer des fonctionnalités et une projection, et récupérer un ensemble de fonctionnalités reprojeté.
Ce type de fonctionnalité existe-t-il ou doit-il être codé à la main?
python
coordinate-system
shapely
pyproj
Chris Fonnesbeck
la source
la source
fiona.transform
cherche à avoir ce dont vous avez besoin.Réponses:
Bien que galbe ne comprenne pas nativement les systèmes de coordonnées,
shapely.ops.transform()
peut le faire avecpyproj
. Si vouspyproj.Proj
pouvez comprendre vos deux systèmes de coordonnées, alors il peut être transformé en une fonction qui peut se transformer avec galbe.Des documents galbés :
la source
itertools
module, vous pouvez le faireproject = lambda x, y: pyproj.transform(pyproj.Proj(init='epsg:4326'), pyproj.Proj(init='epsg:26913'), x, y)
et ensuiteg2 = transform(project, g1)
.Transformer
. Voir ici: pyproj4.github.io/pyproj/stable/gotchas.htmlBien qu'il ne s'agisse pas d'une solution Shapely, l'utilisation de GeoPandas permet une projection relativement simple. Par exemple, si nous voulons convertir un fichier de formes en ESPG 4326:
la source
Si vous utilisez pyproj2, il est beaucoup plus facile d'utiliser un Transformer. Voici un exemple:
C'est aussi beaucoup plus rapide, car pyproj n'a pas besoin de recréer la projection pour chaque point.
la source