Rimuovi i poligoni duplicati usando gli strumenti Open Source


13

Ho un file di forma contenente funzioni con geometrie duplicate, ma attributi diversi (ad esempio un poligono con attributo XX e un poligono identico con attributo XY). Voglio identificare i duplicati, quindi selezionare quello con gli attributi corretti, eliminando l'altro.

Ho provato gli strumenti di topologia in OpenJump / Kosmo, ma senza successo. Hanno uno strumento di "eliminazione dei duplicati" che fa quello che voglio, tranne che sembra eliminare arbitrariamente una delle funzionalità piuttosto che lasciarmi scegliere quale mantenere.

Ho accesso a QGIS, OpenJUMP, Kosmo, ecc. E, se necessario, sono in grado di installare altri strumenti open source / gratuiti.

Pensieri?

Risposte:


7

Oltre a PostGIS, puoi anche utilizzare un GIS open source topologico (GRASS):

  1. Scarica e installa
  2. Avvia e seleziona il gestore della posizione, usa lo strumento per generare un nuovo database di progetto dal tuo file SHAPE (chiamato "Posizione GRASS"), vedi qui per una guida passo-passo
  3. Importa il file SHAPE
  4. Utilizzare lo strumento "v.clean" che offre una serie di opzioni
  5. Esporta la mappa nel formato SHAPE con "v.out.ogr"

Sidenote: stiamo programmando di offrire un WPS per questo in modo che tu possa lucidare i tuoi dati tramite il nostro portale Web.


Non credo che v.clean consenta agli utenti di identificare "in modo interattivo" e correggere gli errori di topologia uno per uno. Perfavore, correggimi se sbaglio.
Darren Cope,

Mi mancava che tu volessi farlo in modo interattivo. Quindi il digitalizzatore v.digit è lo strumento da usare.
markusN,

Markus, Una rapida occhiata a v.digit non sembra che farà quello che voglio. Puoi forse fare un esempio di come avrei realizzato il mio compito usando v.digit?
Darren Cope,

1
In realtà, l'importazione dello shapefile in GRASS crea uno strato di poligoni sovrapposti come strato 2_polygon. Penso che questo dovrebbe bastare per continuare!
Darren Cope,

3

Questo è quello che faccio in quei casi. A quanto ho capito, dovrai fare un controllo manuale per decidere quale ha l'attributo giusto. Quindi lo uso in due passaggi. Per prima cosa creo una tabella o una vista in PostGIS con i poligoni duplicati, quindi apro questa tabella in un GIS desktop insieme al livello originale in cui desidero eliminare i duplicati. Questo mi porterà ai duplicati attraverso la mia tabella duplicati e posso eliminare nella tabella originale o nel file di forma o qualunque altra cosa sia.

La query per trovare i duplicati sarà simile a questa se hai un ID univoco chiamato gid e una colonna geometrica chiamata 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;

Ci sono alcune varianti su ST_Equals, ma penso che ST_Equals sia quello che desideri. Questo ti darà una tabella con le geometrie duplicate e il gid (id) della prima e della seconda occasione del poligono. Avrai comunque la stessa coppia di duplicati due volte, ma questo non dovrebbe importare perché vuoi solo che ti mostrino dove sono.

HTH Nicklas


3

Se stai usando PostGIS 1.5.x, controlla la funzione ST_HausdorffDistance ().
Le geometrie duplicate daranno un valore di 0. Usalo come i menzionati self join. Abbastanza pulito per confrontare forme poligonali.


0

Un modo più semplice di fare. Calcola l'area nel desktop GIS e ordina per area crescente o decrescente. Ora dovrai controllare ogni riga per vedere gli oggetti duplicati nella tabella degli attributi. Si basa su una supposizione che non hai mai esattamente la stessa area per oggetti non duplicati, anche se a volte può essere sbagliato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.