Rimuovere solo i buchi di ciambella dai poligoni usando ArcGIS Desktop?


15

Sto usando ArcGIS Desktop 10.0.

Ho un trucco per rimuovere i fori della ciambella, che sta convertendo il poligono in linea e quindi creando il poligono fuori dalle linee e alla fine fondendole tutte. Lo svantaggio di questa strategia è che nel rimuovere altri buchi e aree vuote che in realtà sono vuote e dovrebbero essere mantenute vuote. Vedi sotto l'immagine:

inserisci qui la descrizione dell'immagine


3
Ho votato per mantenere aperta questa domanda perché credo che l'OP stia cercando di rimuovere alcune, ma non tutte, le ciambelle. Sta cercando un modo per tenerne alcuni.
Fezter

Grazie! Ho aggiunto l'immagine, spero che chiarisca tutto. Non posso andare avanti e rimuovere aree più grandi prima di unire tutto perché potrei accidentalmente rimuovere i poligoni principali (quello verde stesso).
Arash,

1
Molto simile a Come rimuovere piccoli poligoni "sale e pepe" da uno strato? , ma utilizzando un processo QGIS. Probabilmente potresti lavorare con processi molto simili in ArcGIS.
RyanKDalton,


Sono solo le dimensioni della soglia oltre le quali non devono essere riempiti buchi che impediscono che questo sia un duplicato del riempimento di poligoni a ciambella con ArcGIS per desktop?
PolyGeo

Risposte:


23

Vorrei provare lo strumento Union con NO_GAPS:

NO_GAPS: verrà creata una funzione per le aree dell'output che sono completamente racchiuse da poligoni. Questa funzione avrà attributi vuoti.

È quindi possibile selezionare le funzioni con attributi vuoti al di sotto di una dimensione soglia e calcolare i loro attributi in modo che siano gli stessi del poligono originale - oppure copiarli / incollarli nella finestra Attributo dell'editor.

Le funzionalità con attributi vuoti al di sopra della dimensione della soglia devono essere eliminate.

Da lì lo strumento Dissolve dovrebbe completare il lavoro.


1
come "calcoli [il nuovo poligono della ciambella] in modo che sia uguale al poligono [contenente] originale"? Non hanno valori di attributi in comune, quindi non possono essere uniti. Come fa l'Island poly C a sapere che dovrebbe acquisire i suoi nuovi valori attrib da (contenente) Lake poly A e ignorare (da qualche altra parte) Lake poly B?
matt wilkie,

Non ho fatto un test recente ma "il nuovo poliamino a ciambella" è il "poligono originale [contenente]". Se ci sono più di questi poligoni a ciambella da elaborare alla rinfusa, sarebbe necessario taggare i piccoli fori con il poligono a ciambella che cadono all'interno.
PolyGeo

7

La soluzione di PolyGeo è quella che ho impiegato e funziona bene (+1). Un'altra alternativa è bufferizzare i poligoni di una piccola quantità e quindi de-buffer il risultato della stessa quantità (diciamo + 1m e quindi -1m). Anche questo funziona bene ma comporta un piccolo rischio di unire accidentalmente i poligoni al vicino della stessa quantità del buffer. Può anche aumentare il conteggio dei vertici (che può essere o meno un problema).

È inoltre possibile scrivere una sceneggiatura per una soluzione affidabile eseguendo l'iterazione su ciascun poligono, creando poligoni temporanei basati sugli anelli interni e testandoli per le loro aree. Se sono al di sotto della soglia, rimuovi l'anello interno dalla geometria e aggiorna la riga. Questa soluzione è più efficace della soluzione PolyGeo o del mio buffer buffer sopra, ma è probabilmente un approccio "più puro".


5

In ArcToolbox è possibile utilizzare lo strumento "Elimina parte poligonale" (Strumenti di gestione dati -> Generalizzazione). È possibile specificare l'area / percentuale minima del foro da rimuovere.


1
Questa funzione richiede tuttavia il livello di licenza Advanced / ArcInfo.
Martin,

Ho provato lo strumento Elimina parte poligonale, in ArcGIS Pro 2.0. Ma non ha fatto nulla per la funzione poligono che stavo testando. La funzione aveva diversi anelli interni e voglio che spariscano tutti. Questo strumento funziona solo se la funzione è costituita da geometria multipart?
Mike Finch,

Non solo". Funziona anche con singoli poligoni con fori.
Kadir Şahbaz,

4

Ecco un altro modo per rimuovere i laghi dai poligoni (come il livello della mappa del codice postale da Navteq). Ciò è utile anche per ripulire i livelli della mappa del territorio che sono stati generati dissolvendo il livello della mappa del codice postale dal codice del territorio.

  1. Usa una "Unione" di Geoprocessing sul livello della mappa poligonale e rimuovi la casella di controllo "Spazi consentiti" (che è selezionata per impostazione predefinita). Questo crea poligoni per tutti i buchi "ciambella" nei poligoni.
  2. Nel livello della mappa dell'Unione risultante, aggiungi i campi per ID, X e Y. L'ID deve essere separato dal nome / ID dei poligoni che hanno i fori della ciambella che desideri rimuovere.
  3. Nella tabella degli attributi, utilizzare il calcolatore di campo per calcolare l'ID dal campo ObjectID e utilizzare "Calcola geometria" per compilare i valori X e Y.
  4. Separare i poligoni della ciambella dagli altri poligoni selezionando (Seleziona per attributi) quelli in cui il campo del nome è nullo.
  5. Esporta i record selezionati in una nuova tabella. (elenco a discesa delle opzioni della tabella -> Esporta ...)
  6. Utilizzare l'opzione "Aggiungi XY" per creare un livello evento. (livello clic destro -> Visualizza dati XY ....
  7. Esporta il livello evento in una nuova classe di entità geografiche. (fai clic con il pulsante destro del mouse sul livello -> Dati -> Esporta dati)
  8. Esegui un'unione spaziale tra il nuovo livello punto e il livello Mappa poligono ORIGINALE che non ha i poligoni ciambella. Utilizzare l'opzione "più vicina" in modo che il nome del poligono circostante venga aggiunto alla tabella degli attributi dei poligoni della ciambella.
  9. Utilizzare un'unione di tabella standard tra il livello punto unito e il livello mappa risultante dall'Unione (basato sul campo ID). (livello clic destro -> Unisci e collega -> Unisci -> Unisci dati da un altro livello in base alla posizione spaziale)
  10. Utilizzare il calcolatore di campo nella tabella degli attributi per calcolare i nomi di poligoni nulli dal livello punto unito.
  11. Esegui un "Dissolve" di geoprocessing basato sul nome del poligono per unire i poligoni della ciambella con il poligono di nome più grande.

Nota che questo non correggerà il problema dei fiumi che sono tagliati nel contorno del poligono, ma migliora lo strato originale della mappa rimuovendo i fori interni della ciambella.


3

Se i poligoni nella classe caratteristica contengono altri poligoni nella stessa classe caratteristica (es. Lesotho all'interno del Sudafrica) e se è necessario eliminare la modifica manuale a favore di ModelBuilder, ecc., L'uso di "Elimina parte poligonale" è la soluzione più rapida. Impostazioni dello strumento:

- "Condizione (opzionale)" = AREA - "Area (opzionale)" = un numero molto grande (diciamo, 1e + 100) - "Elimina solo le parti contenute (opzionale)" = [controllato]

Ciò produrrà un Sudafrica con l'area del Lesotho riempita, essenziale per i flussi di lavoro come la produzione di vertici da utilizzare nelle immagini poligonali nel tableau.


0

Dal momento che non è stato menzionato finora e sembra essere lo strumento giusto esattamente per quello che stai cercando di ottenere: poligoni aggregati

Impostare il valore minimo_del_fondo sulla dimensione minima di un foro poligonale che si desidera mantenere. Quelli più piccoli verranno eliminati.

Il valore minimo di area_area nello stesso strumento fa lo stesso per le parti poligonali che non sono buchi.

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.