Come identificare i poligoni con errori del nastro "flag"


12

Lavorando in ArcMap, mi sono imbattuto in errori in un livello poligonale che chiamerò "scaglie di bandiera" (presi da un linguaggio simile nei pacchi chiamati "lotti di bandiere"). Questi poligoni del nastro (vedi immagine sotto) sono generalmente composti da un solo nodo aggiuntivo che l'utente ha aggiunto accidentalmente.

Nelle immagini sottostanti, la "bandiera" e il "pennone" sono una caratteristica a parte singola in cui il "pennone" si sovrappone da solo. L'immagine a sinistra ha un totale di 5 nodi.

semplice bandiera inserisci qui la descrizione dell'immagine

Se visti da soli gli errori sono molto evidenti, ma quando più poligoni sono adiacenti, sono quasi impossibili da vedere perché sembrano essere il confine tra 2 poligoni.

Questo probabilmente accade perché stanno usando un editor basato su shapefile e quindi non posso implementare alcuna regola di modifica basata sulla topologia per impedire che ciò accada in futuro.

Qualcuno ha un modo per identificare e risolvere questi tipi di errori? Preferirei un metodo automatizzato di identificazione e risoluzione poiché gli utenti sul campo sono quelli che hanno creato gli errori, ma sono bloccato a ripulirli dopo di loro. Grazie.


3
Mi chiedo perché Esri fornisca una regola da non intersecare per le funzioni di linea, ma non per i poligoni.
Kirk Kuykendall,

Lo strumento Verifica geometria li trova?
mkennedy,

Cerca anche su dangle e overshoot. Entrambi hanno tirato fuori alcuni script, ma nulla di attuale e molti per le polilinee, piuttosto che i poligoni.
mkennedy,

Ryan, sarebbe possibile per te fornire un sottoinsieme dei tuoi dati? Inoltre, hai per caso indagato sul commento di mkennedy sullo strumento "Verifica geometria"?
Allan Adair,

Quale versione di arcmap?
Kirk Kuykendall,

Risposte:


5

se hai accesso agli strumenti Safe Fme troverai utile il trasformatore chiamato spikeRemover, dai un'occhiata. Puoi provare una versione limitata scaricabile di SAFE FME o controllare la tua licenza ArcGis per "Estensione FME per ArcGIS"

http://docs.safe.com/fme/html/FME_Transformers/Default.htm#Transformers/spikeremover.htm

http://cdn.safe.com/resources/fme/FME-Transformer-Reference-Guide.pdf


Sono stato in grado di utilizzare con successo SpikeRemover all'interno dell'estensione ArcGIS Data Interop per ripulire i picchi. Dispone inoltre di output che consentono di specificare funzionalità invariate, modificate e contrassegnate (punte). Tutto ciò è stato molto utile per identificare le caratteristiche che presentavano picchi e la creazione di un nuovo livello "senza punte" è stata molto semplice semplicemente pubblicando gli output invariati e modificati sullo stesso livello e l'output "contrassegnato" su un livello QC per ulteriori ispezioni. esri.com/software/arcgis/extensions/datainteroperability/…
RyanKDalton

2

Non sono sicuro di dove si verifichi il problema o di dove sia possibile evitarlo / risolverlo. Ma l'ho visto molto nel nostro database SDE anche se le geometrie in SDE dovrebbero essere sempre corrette. Nel nostro caso è stato perché abbiamo importato gli shapefile usando ArcObjects in SDE. Quando le geometrie sono state memorizzate, si sono agganciate alla griglia della SDE e quindi hanno creato geometrie errate con le schegge che descrivi quando la geometria aveva un picco sottile. Questo perché gli shapefile hanno una doppia precisione completa per le coordinate e SDE una griglia più grossolana.

La nostra soluzione consisteva nel fissare le geometrie quando venivano importate da:
1. Impostare il riferimento spaziale della geometria dal file di forma al riferimento spaziale della corrispondente classe di funzionalità SDE
2. Agganciare la geometria al riferimento spaziale (IGeometry.SnapToSpatialReference () )
3. Impostare ITopologicalOperator2.IsKnownSimple = false (importante, altrimenti semplificare non fa nulla)
4. Eseguire alcune operazioni semplificate. Per i poligoni abbiamo usato IPolygon.SimplifyPreserveFromTo ()


2

Con arcmap 9.3.1, aggiungerei un campo chiamato Flag (o forse FlagFlag?) E utilizzerei il codice VBA nel calcolatore di campo per calcolare questo campo.

Il codice VBA oscurerebbe una variabile come ITopologicalOperator3 e la imposterà sul campo Shape.

Chiamerebbe quindi il metodo IsSimpleEx non così semplice .

Impostare il valore del campo Flag su esriNonSimpleEnum . Presumibilmente l'errore di cui ti occupi ritornerebbe esriNonSimpleSelfIntersections.

Con 10.0 potrebbe esserci un modo per farlo con Python nella calcolatrice (?) ... Non ne sono sicuro. Vorrei usare un comando aggiuntivo. IMO Esri dovrebbe fornire supporto per c # nel calcolatore di campo. Dopotutto, il compilatore c # è installato come parte del framework .NET.

Aggiornare

Il codice che ho pubblicato qui potrebbe trovare i poli di bandiera se si applica un'espressione di definizione "Left_OID" = "Right_OID"al risultato polilinea risultante.


1

Questo script Python è uno strumento utile

Elimina i poligoni del nastro dai file di forma

"EliminateSlivers.py scorre ciclicamente tutte le funzionalità in un file di forma poligonale e rimuove quelle dal file di forma di output che scendono al di sotto di una determinata soglia di area.

Le operazioni di geoprocessing e le tolleranze dei cluster potrebbero comportare l'accumulo di poligoni extra sottili. Questi possono essere privi di significato e potrebbero falsare l'affidabilità dei dati spaziali. "

Nota: dovrai testare con tolleranze diverse con i tuoi dati (prendi prima una copia dei tuoi dati)

http://arcscripts.esri.com/details.asp?dbid=14672


1
È stato facile con ArcInfo Coverages> Pulisci archi> Costruisci poligoni ....
Mapperz

Non sono sicuro che questo strumento eliminerebbe effettivamente gli errori che sto descrivendo. Vedete, il nastro (pennone) e il corpo principale del poligono (bandiera) sono in realtà una caratteristica. Pertanto, questo script non rimuove SOLO la porzione "flagpole" del poligono senza rimuovere contemporaneamente l'intera funzione "flag".
RyanKDalton,

1

Ryan,

Ho lavorato con l'ufficio Soil Survey e ho periodicamente controllato i loro poligoni del suolo. Quello che faccio è controllare la presenza di scaglie. Avrei inviato la featureclass a copertura e poi li avrei costruiti per etichettare per identificare gli errori. Se vedi 2 etichette in un poligono, è un errore. Se è un'etichetta per poligono, sai che è corretta. Vorrei creare una featureclass come punto per contrassegnare un errore. Oppure puoi selezionare una o più etichette in una nuova classe featur. In questo modo è possibile tornare indietro e correggere l'errore. Funziona molto bene con i poligoni del suolo. Lo uso per informare gli scienziati del suolo per risolvere il problema.

Questo è solo il mio modo di identificare il problema. Lo sto solo condividendo con te.


1

Se l'identificazione non è un punto importante e solo la correzione automatica, prova questo. Aggiungi i dati a un nuovo documento Mappa vuoto, quindi;

  • Crea una topologia della mappa
  • seleziona tutte le funzionalità
  • utilizzare le funzioni di costruzione per dividere le funzionalità esistenti

Ho provato questo e sembra funzionare, ma non sono sicuro di aver replicato esattamente l'origine dati

Buon divertimento, CDB


1

Qui andiamo ci sono alcuni modi per risolvere questo problema e secondo me il più elegante sta usando un'estensione chiamata GIS Data Reviewer . GIS Data Reviewer consente di creare controlli personalizzati e semplificati sull'accuratezza spaziale e degli attributi oltre alla topologia di base. All'interno di Topologia ci sono elementi non disponibili che fanno parte dei controlli standard per Data Reviewer Like

  • Chiusura 3D
  • Buco non valido
  • Espressione SQL
  • Area inferiore al riferimento spaziale
  • Funzionalità su funzionalità
  • e molti altri

Vorrei usarlo per interrogare i tuoi dati. Un altro modo di procedere è creare una nuova classe di caratteristiche in base alla classe di caratteristiche del poligono esistente. e quindi creare una nuova classe di caratteristiche Poligono e popolarla con le linee usando lo strumento di costruzione funzioni nella barra degli strumenti Topologia. Ciò significherebbe quindi che le scaglie dovrebbero essere mostrate come tali e qualsiasi altro strumento di topologia dovrebbe rilevare l'errore. Quindi si tratta di selezionare, eliminare e sostituire le funzionalità nella classe di caratteristiche esistente.

Spero che questo aiuti, CDB

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.