Como identificar polígonos com erros de fita "flag"


12

Trabalhando no ArcMap, deparei-me com erros em uma camada de polígono que chamarei de "bandas de bandeira" (extraídas de linguagem semelhante em parcelas chamadas "lotes de bandeira"). Esses polígonos da tira (veja a imagem abaixo) geralmente são compostos de apenas um nó adicional que o usuário adicionou acidentalmente.

Nas imagens abaixo, o "sinalizador" e o "mastro" são um recurso de peça única, onde o "mastro" apenas se sobrepõe. A imagem da esquerda possui um total de 5 nós.

bandeira simples insira a descrição da imagem aqui

Quando vistos sozinhos, os erros são muito óbvios, mas quando vários polígonos são adjacentes, eles são quase impossíveis de ver porque parecem ser o limite entre dois polígonos.

Provavelmente isso acontece porque eles estão usando um editor baseado em shapefile e, portanto, não posso implementar nenhuma regra de edição baseada em topologia para impedir que isso aconteça no futuro.

Alguém tem uma maneira de identificar e resolver esses tipos de erros? Eu preferiria um método automatizado de identificação e resolução, já que foram os usuários do campo que criaram os erros, mas eu estou tentando limpá-los. Obrigado.


3
Eu me pergunto por que a Esri fornece uma regra de interseção obrigatória para recursos de linha, mas não para polígonos.
Kirk Kuykendall

A ferramenta Verificar geometria os encontra?
Mkdddd #

Pesquise também em oscilação e ultrapassagem. Ambos trouxeram alguns scripts de arco, mas nada atual e muitos para polilinhas, em vez de polígonos.
Mcknedy

Ryan, seria possível fornecer um subconjunto de seus dados? Além disso, você por acaso investigou o comentário de mkennedy sobre a ferramenta "Verificar geometria"?
Allan Adair

Qual versão do arcmap?
Kirk Kuykendall

Respostas:


5

se você tiver acesso às ferramentas Safe Fme, achará útil o transformador chamado spikeRemover, dê uma olhada. Você pode experimentar uma versão limitada para download do SAFE FME ou verificar sua licença do ArcGis para "FME Extension for 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


Consegui usar com sucesso o SpikeRemover na extensão ArcGIS Data Interop para limpar os picos. Ele também possui saídas que permitem especificar recursos inalterados, alterados e sinalizados (picos). Tudo isso foi muito útil para identificar os recursos que apresentaram picos e a criação de uma nova camada "sem picos" foi muito fácil, basta postar as saídas inalteradas e alteradas na mesma camada e a saída "sinalizada" para uma camada de CQ para inspeção adicional. esri.com/software/arcgis/extensions/datainteroperability/…
RyanKDalton 4/11

2

Não sei ao certo onde seu problema ocorre ou onde você tem a possibilidade de evitá-lo / corrigi-lo. Mas eu já vi isso muito em nosso banco de dados SDE, embora as geometrias no SDE devam sempre estar corretas. No nosso caso, foi porque importamos shapefiles usando ArcObjects para o SDE. Quando as geometrias foram armazenadas, elas se ajustaram à grade da SDE e, assim, criaram geometrias incorretas com as lascas que você descreve quando a geometria teve um pico fino. Isso porque os shapefiles têm precisão dupla total para as coordenadas e o SDE, uma grade mais grossa.

Nossa solução foi corrigir as geometrias quando elas foram importadas por:
1. Defina a referência espacial da geometria do arquivo shapefile para a referência espacial da classe de recurso SDE correspondente
2. Ajuste a geometria à referência espacial (IGeometry.SnapToSpatialReference () )
3. Configure ITopologicalOperator2.IsKnownSimple = false (importante, caso contrário, simplificar não faz nada)
4. Execute algumas operações de simplificação. Para polígonos, usamos IPolygon.SimplifyPreserveFromTo ()


2

Com o arcmap 9.3.1, eu adicionaria um campo chamado Flag (ou talvez FlagFlag?) E usaria o código VBA na calculadora de campo para calcular esse campo.

O código VBA escureceria uma variável como ITopologicalOperator3 e a definiria no campo Shape.

Ele chamaria o método IsSimpleEx não tão simples .

Defina o valor do campo Sinalizador como esriNonSimpleEnum . Presumivelmente, o erro que você está preocupado retornaria esriNonSimpleSelfIntersections.

Com 10.0, pode haver uma maneira de fazer isso com python na calculadora (?) ... não tenho certeza. Eu usaria um comando add-in. O IMI Esri deve fornecer suporte para c # na calculadora de campo. Afinal, o compilador c # é instalado como parte da estrutura do .NET.

Atualizar

O código que publiquei aqui pode encontrar postes de sinalização se você aplicar uma expressão de definição "Left_OID" = "Right_OID"ao recurso de polilinha resultante.


1

Este script Python é uma ferramenta útil

Eliminar polígonos de tira de arquivos de forma

"EliminateSlivers.py percorre todos os recursos em um shapefile de polígono e remove os do shapefile de saída que ficam abaixo de um determinado limite de área.

As operações de geoprocessamento e as tolerâncias de cluster podem resultar na criação de polígonos minúsculos extras. Estes podem não ter sentido e podem distorcer a confiabilidade dos dados espaciais ".

Nota: você terá que testar com diferentes tolerâncias com seus dados (faça uma cópia dos seus dados primeiro)

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


1
Foi fácil com ArcInfo Coberturas> Limpo Arcs> Polígonos Envergadura ....
Mapperz

Não tenho certeza de que essa ferramenta realmente elimine os erros que estou descrevendo. Veja bem, a tira (mastro de bandeira) e o corpo principal do polígono (bandeira) são na verdade uma característica. Portanto, esse script não removeria SOMENTE a parte "flagpole" do polígono sem remover todo o recurso "flag" ao mesmo tempo.
RyanKDalton

1

Ryan,

Eu trabalhei com o escritório de pesquisa do solo e verifiquei periodicamente os polígonos do solo. O que faço é verificado quanto a lascas. Eu enviava a featureclass para cobertura e depois as construía para rotular para identificar os erros. Se você vir duas etiquetas em um polígono, é um erro. Se é um rótulo por polígono, você sabe que está correto. Eu criaria uma classe de recurso como um ponto para marcar um erro. Ou você pode selecionar um ou vários rótulos em uma nova classe de featur. Dessa forma, você pode voltar e corrigir o erro. Funciona muito bem para mim com os polígonos do solo. Eu uso isso para informar os cientistas do solo a resolver o problema.

Essa é apenas a minha maneira de identificar o problema. Apenas compartilhando isso com você.


1

Se a identificação não for um ponto importante e apenas a correção automatizada, tente isso. Adicione os dados a um novo documento de mapa em branco;

  • Criar uma topologia de mapa
  • selecione todos os recursos
  • use os recursos de construção para dividir os recursos existentes

Eu testei isso e parece funcionar, mas não tenho certeza se repliquei exatamente sua fonte de dados

Divirta-se, CDB


1

Aqui vamos nós, existem algumas maneiras de resolver isso e, na minha opinião, o mais elegante é usar uma extensão chamada GIS Data Reviewer . O GIS data Reviewer permite criar verificações personalizadas e simplificadas da precisão espacial e de atributos, além da topologia principal. Dentro da Topologia, existem coisas que não estão disponíveis e fazem parte das verificações padrão do Data Reviewer Like

  • Fechamento 3D
  • Furo inválido
  • Expressão SQL
  • Área menor que Referência espacial
  • Recurso no Recurso
  • e muitos mais

Eu usaria isso para interrogar seus dados. Outro caminho a seguir é criar uma nova classe de recurso com base na sua classe de recurso de polígono existente. e crie uma nova classe de recurso Polígono e preencha-a com as linhas usando a ferramenta de construção de recursos na Barra de Ferramentas de Topologia. Isso significa que as barras devem aparecer como tal e qualquer outra ferramenta de topologia deve detectar o erro. Depois, é necessário selecionar, excluir e substituir os recursos na classe de recurso existente.

Espero que isso ajude, CDB

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.