Rimozione di funzioni duplicate con la stessa geometria in ArcMap?


15

È possibile identificare in modo univoco ogni geometria in un feature layer?

Essenzialmente ho un feature layer poligonale con molte file di dati rappresentate dalla stessa geometria. Vorrei 1 riga per ogni geometria unica. Quindi sto cercando una metodologia immediata per combinare gli attributi in base alla forma della geometria.

Vengo da un mondo Postgres e posso risolvere questo problema lì, ma non so come farlo (o se è possibile) per farlo in modo non programmatico con gli strumenti ESRI.


Quindi stai dicendo che ci sono più record di geometria identica e vuoi combinare quelli identici? Se è così ... potresti semplicemente dissolverti in base all'area o qualcosa del genere? Forse mi manca la tua domanda qui.
Clickinaway,

Esatto, sono geometrie identiche in cui l'unico attributo naturale condiviso è la geometria stessa. L'area potrebbe funzionare, ma non è garantito che due diverse geometrie non abbiano la stessa area.
Dylan Hettinger,

Vedi il mio post. È possibile eseguire dissolve su più campi.
Paul,

@Paul .... Vedo che hai modificato la tua risposta per riflettere il mio contributo. Spero che ciò abbia aiutato.
Clickinaway,

Risposte:


22

Se si dispone di una licenza avanzata, è possibile utilizzare Trova identico o Elimina identico .

Entrambi possono essere utilizzati per trovare / eliminare caratteristiche con attributi identici o, se viene specificato il campo Forma, geometrie identiche.

Se non si dispone di una licenza avanzata, questo post sarà utile.

In breve, aggiungi due campi per X, Y nella tabella degli attributi ed esegui un Dissolve su detti campi.

Se hai poligoni che condividono lo stesso centroide, ma non sono geometricamente identici, puoi aggiungere altri due campi (Perimetro e Area). Ciò dovrebbe essere sufficiente per identificare geometrie identiche per quasi tutti i casi normali. Vedi i commenti di @ whuber di seguito.


I dati dei punti presunti sono corretti? Avevo pensato di suggerire di creare prima i centroidi. Sta ancora dicendo che ci sono molte file della stessa geometria ... Sembra quasi classificarsi in base a una classe / intervallo di superficie? Ma dice anche la forma della geometria ... ed è per questo che ero incline a dissolversi in base all'area o al perimetro (o una combinazione dei due per ottenere un rapporto).
Clickinaway

1
In realtà, quel post che ho collegato era per i poligoni. Potresti dissolverti su area e centroide, nel caso in cui tu abbia due poligoni non identici con lo stesso centroide.
Paul,

+1 Questa è esattamente la risposta giusta. In linea di principio, il centroide, il perimetro e l'area potrebbero non identificare in modo univoco un poligono, ma i controesempi sono un po 'inventati. Per eseguire l'hashing di oggetti irregolari o naturali o digitalizzati manualmente su ID univoci, questi quattro valori dovrebbero essere affidabili. Se si desidera ottenere valori più facilmente ottenibili, utilizzare le coordinate del rettangolo di selezione della funzione e il conteggio dei vertici.
whuber

@whuber Confrontare le coordinate di tutti i vertici sarebbe l'unico modo infallibile per determinare la geometria identica? Il mio background in geometria è piuttosto debole, quindi trovo tutto questo piuttosto affascinante.
Paul,

La risposta alla tua domanda dipende da cosa intendi per "identico": per esempio, se dovessi inserire un nuovo vertice lungo il bordo di un poligono, è un poligono "identico" o no? Probabilmente è nel senso di rappresentare la stessa caratteristica nel mondo, anche se i vertici differiscono. Da questo punto di vista, l'unico test sicuro è se la differenza (teorica impostata) dei due poligoni è vuota o meno. Ma se consideri più rigorosamente che identità significa una corrispondenza vertice-vertice, è ancora difficile, perché un poligono potrebbe iniziare la sua lista di vertici in un punto diverso.
whuber

1

Ho un set di dati basato sui dati del sondaggio. Il mio problema è che le vecchie funzionalità non vengono sempre rimosse prima dell'importazione dei nuovi scatti del sondaggio. Pertanto abbiamo "duplicati" con geometria diversa: IE gli scatti del rilievo potrebbero essere separati di 1/4 ft l'uno dall'altro. In un set di dati di funzionalità 12000 questo è difficile ingrandirli e identificarli. Usando ArcMap Basic 10.2: ecco un modello confuso che mi è venuto in mente.

  1. Buffer (con raggio di input) ogni funzione nel layer originale (selezionato o no)
  2. Scorrere su ciascuna funzione nel livello buffer
  3. Seleziona dal livello originale in base alla relazione (Centroide con funzionalità)
  4. Funzionalità selezionate "Conteggio righe"
  5. Campo Calcola valore conteggio righe su buffer layer = Quante funzioni sono nel raggio delle funzioni originali

Ho reinventato la ruota. Inoltre, mi sono frustrato con Model Builder e sostanzialmente ho fatto il bulldogg su tutto. Ci deve essere una soluzione più elegante. Accetterò volentieri critiche e suggerimenti.

Inoltre, questo sembra funzionare correttamente solo all'interno di Model Builder, corro da una casella degli strumenti e non salva il livello buffer.

Trova esecutori duplicati


1

Ho cercato una risposta alla stessa domanda per un po 'di tempo per superare l'appiattimento del problema dei poligoni buffer sovrapposti e penso che abbia trovato una soluzione solida a questo. In effetti il ​​commento di @ Whuber,

In linea di principio, il centroide, il perimetro e l'area potrebbero non identificare in modo univoco un poligono, ma i controesempi sono un po 'inventati.

sulla risposta di @ Paul è stata la spinta principale per continuare a provare. Utilizza l' operatore ARE_IDENTICAL_TO dello strumento Join spaziale poiché è il più efficiente tra altri rilevatori identici. Ecco i passaggi:

  • Self Union il tuo contributo per mantenere tutte le forme diverse l'una dall'altra;
  • Crea un campo fittizio per conservare / copiare le righe originali OBJECTID (ovvero, il tipo di campo OID) delle righe, ad esempio EX_OID ;
    • Eseguire Join spaziale sulla classe di feature che si desidera elaborare come parametri di feature target e join. Assicurati che i mapping dei campi fittizi (visualizzati due volte) precedentemente creati abbiano la regola di unione FIRST (che è l'impostazione predefinita o scegli ULTIMO, gli altri potrebbero non fornire l'output desiderato poiché utilizzano un riepilogo delle sovrapposizioni). Questo passaggio seleziona la forma comune OBJECTID in cima a tutte le sovrapposizioni (ovvero, PRIMA);

I seguenti passaggi possono essere eseguiti in due modi, WITH Python o WITHOUT:

CON PITONE

  • Usa il codice qui sotto per estrarre ID univoci che vogliamo trovare:

print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")])).

Tieni presente che sto usando la seconda copia del campo OID fittizio, che nel mio caso è EX_OID_1;

  • Copia l'output di questo codice e incollalo nella query di definizione della classe di caratteristiche originale elaborata come OBJECTID IN (<PASTE_COPIED_VALUES_HERE>). Il risultato mostrerà le caratteristiche unificate delle parti sovrapposte. C'è un limite di dimensioni qui, però, 30.000 caratteri. Per superare questo problema, devi seguire i passaggi "senza Python".

SENZA PITONE

  • Utilizzare lo strumento Frequenza per elencare valori univoci nella seconda copia del campo OID fittizio, che nel mio caso è EX_OID_1;

  • Infine, unisciti al campo OBJECTID della classe caratteristica originale con l'output dell'EX_OID_1 dello strumento Frequenza selezionando le opzioni "Mantieni solo i record corrispondenti".

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.