Упрощение геометрии (обобщение)

22

Каковы рекомендуемые способы упрощения геометрии? Имея в виду, проекции, и, например, упрощение геометрии состояния.

Я слышал о преобразовании в равноудаленную проекцию, которая позволяет упростить изображение без искажений, а затем о преобразовании обратно в выбранную вами проекцию.

Джон Уэлдон
источник
4
Я не уверен, но «обобщение» может быть более описательным тегом для этого. Упрощение, по крайней мере в контексте ArcGIS, является методом обеспечения топологической корректности. Википедия говорит, что упрощение является частью картографического обобщения. en.wikipedia.org/wiki/Cartographic_generalization
Кирк Куйкендалл,
Отличное предложение @Kirk
Джон Уэлдон

Ответы:

11

Как упомянул Гленнон, стандартным алгоритмом для этого является Дуглас-Пекер , который является алгоритмом по умолчанию, используемым в программном обеспечении, таком как PostGIS (т.е. GEOS) через St_Simplify, ArcGIS via Generalizeи GRASS via v.generalize. Статья в Википедии также ссылается на реализацию Python .

GRASS поддерживает ряд различных алгоритмов, как описано на странице справки для v.generalize .

Что касается вопроса о проекции, я думаю, что в этом случае это красная сельдь, которую можно игнорировать. Единственная проблема, которая приходит на ум, - это потенциально уплотняющие линии, чтобы предотвратить их чрезмерное упрощение.

SCW
источник
5

Вы можете исследовать алгоритм Дугласа – Пейкера - метод уменьшения количества точек на кривой, аппроксимированных серией точек. Смотрите: http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm

Перезаписать ли вы исходную геометрию или создать дополнительный магазин, зависит от использования.

Гленнон
источник
3

Если под «упрощением» вы подразумеваете простое уменьшение числа точек, используйте базовый алгоритм фильтрации, такой как фильтр Дугласа Пикера. Полезная ссылка для этого: http://mapshaper.org/

Если под «упрощением» вы подразумеваете получение более простой фигуры, алгоритмы фильтрации не всегда подходят. Следует использовать более продвинутые алгоритмы обобщения . Некоторые документы по таким алгоритмам можно найти здесь: http://generalisation.icaci.org/ , с некоторыми примерами результатов: http://generalisation.icaci.org/index.php/results . Лишь немногие из этих алгоритмов реализованы в распространенных коммерческих ГИС-программах. К некоторым можно получить доступ, используя это: http://webgen.geo.uzh.ch/

жюльен
источник
сайты aci.ign.fr не доступны. Знаете ли вы, где мы можем найти примеры «усовершенствованного алгоритма обобщения», о котором вы упоминаете?
Radouxju
URL изменился, проверьте: generalisation.icaci.org
julien
2

Если вы упрощаете геометрию из-за ограничений вычислительной мощности компьютера, вы можете рассмотреть возможность создания мипакарт с соответствующими альфа-масками для каждой геометрии на разных уровнях.

Джон Брингхерст
источник
Очень интересно, вы бы хотели уточнить?
Джон Уэлдон
Что ж, чтобы сделать это, вам нужно растеризовать каждую векторную геометрию в растровое изображение для каждого уровня, который позволяет пользователям увеличивать и уменьшать масштаб карты. Тогда вместо того, чтобы рисовать векторную геометрию для каждого уровня снова и снова, вы просто визуализируете растровое изображение. Таким образом, расчет растеризации геометрии (что дорого, если у вас есть тонна вершин) выполняется заранее, а не каждый раз, когда пользователь выполняет действие. Альфа-маска появляется на рисунке, когда вы рисуете растровое изображение - она ​​используется, поэтому рисуется только сама фигура.
Джон Брингхерст
1

Это сложная тема, так как вы должны учитывать некое разрешение вашего набора данных. Когда вершина геометрии равна другой вершине? Я никогда не слышал о конвертации и реконвертации, хотя это был бы интересный тест.

Простые геометрии, согласно OGC, являются геометриями, которые не пересекаются самостоятельно, а в случае многоугольников - геометриями, которые правильно ориентированы, для внешней (-их) оболочки (-ей) и внутренней (-ых) оболочки (-ей) и впоследствии.

Джордж Сильва
источник