Python, вишукана бібліотека: чи можна зробити афінну операцію на полігоні форми?


11

Я намагаюся створити обертовий прямокутник у координатах lat / lon.

В основному, у мене є координати центру та кута повороту навколо центру.

Чи можливо це зробити, використовуючи, shapely або gdal, чи щось інше?

Відповіді:


11

affinityМодуль Shapely підтримує афінні перетворення на будь-якій геометрії, наприклад:

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
О так, я пропустив (лат, лон) частину питання. Я ніколи не бачив афінної функції перетворення, побудованої для географічних даних, тому поради, які ви надали, є важливими.
Майк Т

Починаючи з 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). Насправді я майже завершив підготовку оновлення модуля вручну.
Майк Т

2

У Sextante є інструмент, який може працювати. Він називається "Перетворити" в розділі "Інструменти для векторних шарів". Для виконання команди визначте кут, точку прив’язки, коефіцієнт масштабу та переклад. Sextante - це продовження до gvsig, openjump, udig та інших. Він також працює з командного рядка.


2

Я не бачу жодних функцій у Python або Shapely для цього, але ви можете це зробити за допомогою JTS (Java Topology Suite) http://tsusiatsoftware.net/jts/main.html (GEOS, що використовується Shapely, це порт JTS, але JTS мають більше функцій)

Ви можете завантажити програмне програмне забезпечення тут http://sourceforge.net/projects/jts-topo-suite/ та запустити testbuilder.sh або testbuilder.bat, залежно від вашої ОС для відтворення. Після того, як ви зрозуміли, основи вам доведеться робити те ж саме без графічного інтерфейсу, але лише з програмуванням Java.

http://geoscript.org/ може допомогти вам зробити клей між python-кодом та java (тому що одна реалізація використовує Jython)



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.