파이썬, 매끈한 라이브러리 : 모양 다각형에 아핀 연산을 할 수 있습니까?


11

위도 / 경도 좌표로 회전 된 사각형을 만들려고합니다.

기본적으로 중심 좌표와 중심 주위의 회전 각도가 있습니다.

매끈한 또는 gdal 또는 다른 것을 사용하는 것이 가능합니까?

답변:


11

Shapely의 affinity모듈 은 다음과 같이 모든 형상에서 아핀 변환을 지원합니다.

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

불행히도 (lat, lon)의 회전은 아핀 변환으로 수행되지 않습니다. 데이터를 투영하고 투영 된 좌표를 회전하거나 구형 회전을 수행해야합니다.
whuber

1
아 맞다, 나는 질문의 (lat, lon) 부분을 놓쳤다. 지리적 입력을 위해 구축 된 아핀 변환 함수를 본 적이 없으므로 제공 한 팁이 필수적입니다.
Mike T

v1.2.17부터 Shapely는 아직 문서화되지 않았지만 아핀 변환을 가졌습니다 -github.com/Toblerity/Shapely/blob/master/shapely/affinity.py
Alex L

또한 저자의 블로그를 참조하십시오 : sgillies.net/blog/1168/shapely-1-2-17
Alex L

1
@AlexL 타입 help(shapely.affinity). 실제로 모듈에 대한 수동 업데이트 준비가 거의 완료되었습니다.
Mike T

2

Sextante에는 작동하는 도구가 있습니다. "벡터 레이어 도구"에서 Transform이라고합니다. 명령을 실행하려면 각도, 기준점, 축척 비율 및 평행 이동을 정의하십시오. Sextante는 gvsig, openjump, udig 등을 확장 한 것입니다. 또한 명령 줄에서 실행됩니다.


2

파이썬이나 Shapely에는 기능이 없지만 JTS (Java Topology Suite) http://tsusiatsoftware.net/jts/main.html (GEOS, Shapely에서 사용하는 lib는 포트입니다. JTS는 있지만 JTS에는 더 많은 기능이 있습니다)

http://sourceforge.net/projects/jts-topo-suite/ 에서 소프트를 여기에서 다운로드하고 검색을 위해 재생할 OS에 따라 testbuilder.sh 또는 testbuilder.bat를 시작할 수 있습니다 . 이해 한 후에는 GUI없이 Java 프로그래밍 만 사용하여 기본 사항을 수행해야합니다.

http://geoscript.org/ 는 파이썬 코드와 자바 사이에 접착제를 만드는 데 도움이 될 수 있습니다 (하나의 구현은 Jython을 사용하기 때문에)



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.