Видаліть повторювані багатокутники за допомогою інструментів з відкритим кодом


13

У мене є файл форми, що містить функції з дублюючою геометрією, але різними атрибутами (наприклад, багатокутник з атрибутом XX і ідентичний багатокутник з атрибутом XY). Я хочу визначити дублікати, а потім вибрати один з правильними атрибутами, видаливши інший.

Я спробував інструменти топології в OpenJump / Kosmo, але без успіху. У них є інструмент "видалити дублікати", який робить те, що я хочу, за винятком випадкового видалення однієї з функцій, а не для того, щоб я міг вибрати, яку з них зберегти.

У мене є доступ до QGIS, OpenJUMP, Kosmo тощо, і я можу встановити інші інструменти з відкритим кодом / безкоштовними, якщо потрібно.

Думки?

Відповіді:


7

Окрім PostGIS, ви також можете використовувати топологічний GIS з відкритим кодом (GRASS):

  1. Завантажте та встановіть
  2. Запустіть і виберіть Менеджер місцеположень, використовуйте інструмент для створення нової бази даних проекту з вашого файлу SHAPE (званий "GRASS Location"), див. Покрокове керівництво тут
  3. Імпортуйте файл SHAPE
  4. Скористайтеся інструментом "v.clean", який пропонує ряд варіантів
  5. Експортувати карту назад у формат файлу SHAPE за допомогою "v.out.ogr"

Sidenote: ми плануємо запропонувати WPS для цього, щоб ви могли відполірувати свої дані через наш веб-портал.


Я не вірю, що v.clean дозволяє користувачам "інтерактивно" ідентифікувати та виправляти помилки топології одна за одною. Будь ласка, виправте мене, якщо я помиляюся.
Даррен Коуп

Я пропустив, що ти хотів це робити інтерактивно. Отже, дигітайзер v.digit - це інструмент для використання.
markusN

Маркус, Швидке обертання через v.digit не здається, що воно буде робити те, що я хочу. Чи можете ви навести приклад того, як я виконав би своє завдання за допомогою v.digit?
Даррен Коуп

1
Насправді, лише імпорт файлу форми в GRASS створює шар перекриваючихся полігонів як шар 2_polygon. Я думаю, цього має бути достатньо для мене, щоб продовжувати!
Даррен Коуп

3

Це те, що я роблю в тих випадках. Як я розумію, вам доведеться зробити перевірку вручну, щоб вирішити, який з них має правильний атрибут. Потім я використовую це в два етапи. Спочатку я роблю таблицю або представлення в PostGIS з дублюються багатокутників, потім відкриваю цю таблицю в настільному ГІС разом з оригінальним шаром, де я хочу видалити дублікати. Це приведе мене до дублікатів через мою дублікатну таблицю, і я можу видалити з оригінальної таблиці або форм-файлу або будь-якого іншого.

Запит на пошук дублікатів буде приблизно таким, якщо у вас є унікальний ідентифікатор під назвою gid та стовпець геометрії під назвою the_geom:

create table duplicates as
select a.the_geom, a.gid, b.gid from mytable a, mytable b 
where ST_Equals(a.the_geom, b.the_geom) and a.gid!=b.gid;

Існує кілька варіантів ST_Equals, але я думаю, що ST_Equals - це той, який ви хочете. Це дасть вам таблицю з повторюваними геометріями та gid (id) першого та другого випадку багатокутника. Ви отримаєте одну і ту ж пару дублікатів двічі, але це не має значення, оскільки ви просто хочете, щоб вони показали вам, де вони є.

HTH Nicklas


3

Якщо ви використовуєте PostGIS 1.5.x, перевірте функцію ST_HausdorffDistance ().
З повторної геометрії ви отримаєте значення 0. Використовуйте його так, як долучається меню і самостійно. Досить акуратно для порівняння фігур багатокутника.


0

Більш простий спосіб зробити. Обчисліть площу в ГІС робочого столу та впорядкуйте за площею за зростанням чи зменшенням. Тепер вам доведеться перевіряти кожен рядок, щоб побачити дублювані об'єкти в таблиці атрибутів. Він заснований на припущенні, що ви ніколи не маєте абсолютно однакової області для об'єктів, не дублюваних, але це може бути часом неправильним.

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