Estoy tratando de crear un rectángulo girado en coordenadas lat / lon.
Básicamente, tengo las coordenadas del centro y el ángulo de rotación alrededor del centro.
¿Es posible hacer uso, bien proporcionado o gdal, o algo más?
El affinity
módulo de Shapely admite transformaciones afines en cualquier geometría, por ejemplo:
from shapely import affinity
from shapely.geometry import LineString
# Example geometry
line = LineString([(1, 3), (1, 1), (4, 1)])
# Rotate 30 degrees CCW from origin at the center of bbox
line_rot_center = affinity.rotate(line, 30, 'center')
# Rotate from origin at (1, 1)
line_rot_11 = affinity.rotate(line, 30, (1, 1))
help(shapely.affinity)
. En realidad, casi he terminado de preparar la actualización manual para el módulo.Sextante tiene una herramienta que podría funcionar. Se llama Transformar, debajo de "Herramientas para capas vectoriales". Para ejecutar el comando, defina el ángulo, el punto de anclaje, el factor de escala y la traslación. Sextante es una extensión de gvsig, openjump, udig, otros. También se ejecuta desde la línea de comandos.
fuente
No veo ninguna característica en Python o Shapely para hacerlo, pero puede hacerlo con JTS (Java Topology Suite) http://tsusiatsoftware.net/jts/main.html (GEOS, la biblioteca utilizada por Shapely es un puerto de JTS pero JTS tiene más funciones)
Puede descargar el software aquí http://sourceforge.net/projects/jts-topo-suite/ y ejecutar testbuilder.sh o testbuilder.bat según el sistema operativo que juegue para descubrir. Una vez que haya entendido, lo básico tendrá que hacer lo mismo sin GUI pero solo con programación Java.
http://geoscript.org/ puede ayudarlo a hacer el pegamento entre el código de Python y Java (porque una implementación usa Jython)
fuente
La hierba puede hacerlo usando v.transform .
fuente
Puede usar los enlaces gdal python para hacer transformaciones afines http://www.gdal.org/ogr/osr_tutorial.html
Como está construido sobre proj / geos / gdal, puedes hacer lo mismo que en Shapely + more
fuente