Biblioteca Python, bem torneada: é possível fazer uma operação afim no polígono da forma?


11

Estou tentando criar um retângulo girado em coordenadas lat / lon.

Basicamente, tenho as coordenadas do centro e o ângulo de rotação ao redor do centro.

É possível usar usando, bem torneado ou gdal, ou algo mais?

Respostas:


11

O affinitymódulo Shapely suporta transformações afins em qualquer geometria, por exemplo:

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))

Infelizmente, uma rotação em (lat, lon) não é realizada com uma transformação afim. Você precisa projetar os dados e girar as coordenadas projetadas ou executar uma rotação esférica.
whuber

1
Ah, claro, eu perdi a parte (lat, lon) da pergunta. Nunca vi uma função de transformação afim criada para entradas geográficas; portanto, as dicas fornecidas são essenciais.
Mike T

Desde v1.2.17, Shapely teve transformações afins, embora eles não estão documentadas ainda - github.com/Toblerity/Shapely/blob/master/shapely/affinity.py
Alex L

Veja também o blog do autor: sgillies.net/blog/1168/shapely-1-2-17
Alex L

1
@AlexL type help(shapely.affinity). Na verdade, estou quase terminando de preparar a atualização manual para o módulo.
Mike T

2

O Sextante possui uma ferramenta que pode funcionar. É chamado de transformação, nas "Ferramentas para camadas vetoriais". Para executar o comando, defina o ângulo, ponto de ancoragem, fator de escala e translação. Sextante é uma extensão para gvsig, openjump, udig, outros. Também é executado a partir da linha de comando.


2

Não vejo nenhum recurso em Python ou Shapely para fazer isso, mas você pode fazer isso com o JTS (Java Topology Suite) http://tsusiatsoftware.net/jts/main.html (GEOS, a lib usada por Shapely é uma porta do JTS, mas o JTS tem mais funções)

Você pode baixar o software aqui http://sourceforge.net/projects/jts-topo-suite/ e iniciar o testbuilder.sh ou testbuilder.bat, dependendo do seu sistema operacional para descobrir. Depois de entender, você precisará fazer o mesmo sem a GUI, mas apenas com a programação Java.

http://geoscript.org/ pode ajudar você a criar a cola entre o código python e o java (porque uma implementação usa o Jython)



Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.