У меня есть шейп-файл, содержащий объекты с дублирующейся геометрией, но с разными атрибутами (например, многоугольник с атрибутом XX и идентичный многоугольник с атрибутом XY). Я хочу идентифицировать дубликаты, затем выбрать один с правильными атрибутами, удаляя другой.
Я пробовал инструменты топологии в OpenJump / Kosmo, но безуспешно. У них есть инструмент «Удалить дубликаты», который делает то, что я хочу, за исключением того, что он произвольно удаляет одну из функций, а не позволяет мне выбрать, какую из них оставить.
У меня есть доступ к QGIS, OpenJUMP, Kosmo и т. Д., И я могу установить другие инструменты с открытым исходным кодом / бесплатные инструменты, если это необходимо.
Мысли?
источник
Это то, что я использую в этих случаях. Насколько я понимаю, вам придется выполнить ручную проверку, чтобы решить, какой из них имеет правильный атрибут. Затем я делаю это в два этапа. Сначала я создаю таблицу или представление в PostGIS с дублированными полигонами, затем открываю эту таблицу в настольной ГИС вместе с исходным слоем, где я хочу удалить дубликаты. Это приведет меня к дубликатам через мою таблицу дубликатов, и я смогу удалить из исходной таблицы или шейп-файла, или что бы то ни было.
Запрос на поиск дубликатов будет выглядеть примерно так, если у вас есть уникальный идентификатор с именем gid и столбец геометрии с именем the_geom:
В ST_Equals есть несколько вариантов, но я думаю, что вам нужен именно ST_Equals. Это даст вам таблицу с повторяющимися геометриями и gid (id) первого и второго случая многоугольника. Вы получите одну и ту же пару дубликатов дважды, но это не должно иметь значения, потому что вы просто хотите, чтобы они показали вам, где они находятся.
HTH Никлас
источник
Если вы используете PostGIS 1.5.x, проверьте функцию ST_HausdorffDistance ().
Повторяющиеся геометрии приведут к значению 0. Используйте его как упомянутое само присоединение. Довольно аккуратный для сравнения многоугольников.
источник
Более простой способ сделать. Рассчитайте площадь в ГИС вашего рабочего стола и упорядочите по возрастанию или убыванию площади. Теперь вам нужно будет проверить каждую строку, чтобы увидеть дублированные объекты в вашей таблице атрибутов. Он основан на предположении, что у вас никогда не будет одинаковой области для объектов, не дублированных, хотя иногда это может быть неправильно.
источник