Шукаєте стратегії узагальнення для створення контурів у PostGIS?


22

У мене є набір даних про створення слідів, які векторизовані з растрових даних. Набір даних наразі є лише векторним поданням растрових даних. Мені б хотілося, щоб набір даних багатокутника мав вершини лише в кутах будівлі. Я намагався використовувати команду спрощення в PostGIS з обмеженим успіхом.

Чи є кращий спосіб?

Відповіді:


17

Існує багато алгоритмів, присвячених спрощенню побудови. Ви можете переглянути цей веб-сайт для огляду. Дивіться також це питання . Ви можете використовувати:

  • Спрощення побудови контуру: воно полягає в рекурсивному видаленні занадто коротких країв контуру та подовженні сусідніх країв. Приклад:

alt текст

  • Найменший алгоритм навколишнього прямокутника: Він полягає у заміні геометрії будівлі найменшим навколишнім прямокутником. Цей прямокутник також можна масштабувати до початкової площі будівлі. Приклад:

alt текст

  • Алгоритм квадратування: Він полягає у застосуванні легкого обертання до країв, щоб зробити кути ідеально квадратними. Приклад:

alt текст

Цих перетворень може бути достатньо для ваших потреб. Їх може бути цікаво поєднувати.

Я майже на 100% впевнений, що жоден із цих алгоритмів не реалізований у PostGIS. Деякі з них реалізовані в яванській бібліотеці Opencarto . Повідомте мене, якщо ви хочете перевірити це!


1
Чи можете ви дати коротке пояснення, на які алгоритми ви посилаєтесь у Opencarto для згаданого "Спрощення побудови контуру". Не вдалося знайти пряму інформацію у вікі або коді в Opencarto.
benjist

Це "ShortEdgesDeletion". Ви можете знайти його на GitHub тут: github.com/jgaffuri/OpenCarto/blob/master/src/main/java/org / ...
Julien


4
geometry ST_SimplifyPreserveTopology(geometry geomA, float tolerance);

Не вдасться створити похідні геометрії (зокрема багатокутники), які недійсні http://www.postgis.org/documentation/manual-1.5SVN/ST_SimplifyPreserveTopology.html

має бути кращим результатом, ніж спростити

спочатку перевірити свою геометрію та після ST_IsSimple(geometry geomA);


3

Щось подібне може зробити трюк:

"Якщо ми буферизуємо велику кількість, потім повернемо буфер на ту саму кількість, ми отримаємо щось, що має форму, схожу на оригінал, але без крихких шматочків."

http://blog.opengeo.org/2010/11/22/removing-complexities/


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