Usuń zduplikowane wielokąty za pomocą narzędzi Open Source


13

Mam plik kształtu zawierający obiekty o zduplikowanych geometriach, ale różne atrybuty (np. Wielokąt z atrybutem XX i identyczny wielokąt z atrybutem XY). Chcę zidentyfikować duplikaty, a następnie wybrać ten z właściwymi atrybutami, usuwając drugi.

Próbowałem narzędzi topologicznych w OpenJump / Kosmo, ale bez powodzenia. Mają narzędzie do usuwania duplikatów, które robi to, co chcę, z wyjątkiem tego, że wydaje się, że arbitralnie usuwa jedną z funkcji, a nie pozwala mi wybrać, którą mam zachować.

Mam dostęp do QGIS, OpenJUMP, Kosmo itp. W razie potrzeby mogę zainstalować inne narzędzia open source / darmowe.

Myśli?

Odpowiedzi:


7

Oprócz PostGIS można również użyć topologicznego GIS (GRASS):

  1. Ściągnij i zainstaluj
  2. Uruchom i wybierz Menedżera lokalizacji, użyj narzędzia do wygenerowania nowej bazy danych projektu z pliku SHAPE (o nazwie „GRASS Location”), zobacz tutaj krok po kroku przewodnik
  3. Zaimportuj plik SHAPE
  4. Użyj narzędzia „v.clean”, które oferuje szereg opcji
  5. Eksportuj mapę z powrotem do formatu pliku SHAPE za pomocą „v.out.ogr”

Sidenote: my planujemy zaoferować WPS do tego, aby można było szlifować swoje dane za pośrednictwem naszego portalu internetowego.


Nie wierzę, że v.clean pozwala użytkownikom „interaktywnie” identyfikować i naprawiać błędy topologii jeden po drugim. Proszę, popraw mnie jeśli się mylę.
— Darren Cope,

Tęskniłem za tym, że chcesz to zrobić interaktywnie. Więc digitizer v.digit jest narzędziem do użycia.
— markusN

Markus, Szybki obrót przez v.digit nie brzmi tak, jakby zrobił to, co chcę. Czy możesz podać przykład realizacji mojego zadania przy użyciu v.digit?
— Darren Cope,

1
Właściwie samo importowanie pliku kształtu do GRASS tworzy warstwę nakładających się wielokątów jako warstwę 2_polygon. Myślę, że to powinno mi wystarczyć!
— Darren Cope

3

To właśnie robię w takich przypadkach. Jak rozumiem, będziesz musiał dokonać ręcznej kontroli, aby zdecydować, który z nich ma właściwy atrybut. Potem robię to w dwóch krokach. Najpierw tworzę tabelę lub widok w PostGIS ze zduplikowanymi wielokątami, a następnie otwieram tę tabelę w GIS na pulpicie wraz z oryginalną warstwą, w której chcę usunąć duplikaty. Doprowadzi mnie to do duplikatów poprzez moją zduplikowaną tabelę i mogę usunąć z oryginalnej tabeli lub pliku shapefile lub cokolwiek to jest.

Zapytanie o znalezienie duplikatów będzie podobne, jeśli masz unikalny identyfikator o nazwie gid i kolumnę geometrii o nazwie 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;

Istnieje kilka wariantów ST_Equals, ale myślę, że ST_Equals jest tym, czego chcesz. To da ci tabelę ze zduplikowanymi geometriami i gid (id) pierwszej i drugiej okazji wielokąta. Dostaniesz tę samą parę duplikatów dwa razy, ale to nie powinno mieć znaczenia, ponieważ chcesz, aby pokazały ci, gdzie się znajdują.

HTH Nicklas


3

Jeśli korzystasz z PostGIS 1.5.x, sprawdź funkcję ST_HausdorffDistance ().
Duplikaty geometrii dadzą wartość 0. Użyj jej jak wspomniane samosprzężenie. Całkiem fajne do porównywania kształtów wielokątów.


0

Prostszy sposób na zrobienie tego. Oblicz obszar w GIS na pulpicie i uporządkuj według obszaru rosnąco lub malejąco. Musisz teraz sprawdzić każdą linię, aby zobaczyć zduplikowane obiekty w tabeli atrybutów. Opiera się na przypuszczeniu, że nigdy nie masz dokładnie tego samego obszaru dla obiektów, które nie są powielone, chociaż czasem może być źle.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.