Ищете стратегии обобщения для построения контуров в PostGIS?

22

У меня есть набор данных о строительных отпечатках, векторизованных из набора растровых данных. В настоящее время набор данных является просто векторным представлением растровых данных. Я хотел бы, чтобы набор данных многоугольника имел только вершины в углах здания. Я пытался использовать команду Simplify в PostGIS с ограниченным успехом.

Есть ли способ лучше?

Мэтью Снейп
источник

Ответы:

17

Есть много алгоритмов, предназначенных для упрощения построения. Вы можете взглянуть на этот сайт для обзора. Смотрите также этот вопрос . Вы можете использовать:

  • Упрощение построения контура: оно заключается в рекурсивном удалении слишком коротких краев контура и удлинении соседних краев. Пример:

альтернативный текст

  • Алгоритм наименьшего окружающего прямоугольника: он состоит в замене геометрии здания на наименьший окружающий прямоугольник. Этот прямоугольник также можно масштабировать до начальной области здания. Пример:

альтернативный текст

  • Алгоритм возведения в квадрат: он заключается в применении легкого поворота к краям, чтобы углы были идеально квадратными. Пример:

альтернативный текст

Этих трансформаций может быть достаточно для ваших нужд. Может быть интересно объединить их.

Я почти на 100% уверен, что ни один из этих алгоритмов не реализован в PostGIS. Некоторые из них реализованы в Java-библиотеке Opencarto, которую я разрабатываю. Дайте мне знать, если вы хотите проверить это!

жюльен
источник
1
Можете ли вы дать краткое объяснение того, на какие алгоритмы вы ссылаетесь в Opencarto для упомянутого «Упрощения построения контура». Я не мог найти прямую информацию в вики или код в Opencarto.
Бенджист
Это «ShortEdgesDeletion». Вы можете найти его на github там: github.com/jgaffuri/OpenCarto/blob/master/src/main/java/org/…
julien
Обновление ссылки: github.com/jgaffuri/OpenCarto/blob/gh-pages/src/main/java/org/…
julien
4
geometry ST_SimplifyPreserveTopology(geometry geomA, float tolerance);

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

должен быть лучше, чем Simplify

сначала проверьте свою геометрию, а затем ST_IsSimple(geometry geomA);

Mapperz
источник
3

Нечто подобное может сработать:

«Если мы буферизируем большим количеством, а затем реверсируем буфер на то же количество, мы получим нечто, похожее на оригинальное, но без извилистых битов».

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

LR1234567
источник
это интересный подход, и он кажется относительно эффективным. Спасибо за указатель, это то, что я смогу использовать. Ваш ответ был бы лучше, если бы он содержал простую фразу, содержащую основную идею, на которую ссылаются, а не просто ссылку.
Мэтт Уилки