Removendo pequenos espaços (lascas) entre polígonos? [fechadas]


51

Eu tenho um conjunto de polígonos representando distritos administrativos. Os distritos foram digitalizados à mão e existem pequenos espaços (lascas) entre polígonos onde os polígonos devem se tocar.

Como os polígonos se encaixam, removendo os espaços?

O QGIS prefere, mas o ArcGIS e a programação geral também são opções.

Respostas:


27

Usar Eliminar (é necessária uma licença ArcInfo)

Elimina polígonos mesclando-os com polígonos vizinhos que possuem a maior área ou a borda compartilhada mais longa. Eliminar é freqüentemente usado para remover pequenos polígonos da fita resultantes de operações de sobreposição, como Intersect ou Union.

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000005p000000.htm

insira a descrição da imagem aqui

Usuários do ArcGIS 10 Observe que há um NOVO Recurso nas Opções desta Ferramenta.

Agora é possível preservar o POLYGON ou POLYLINE original com a opção> ex_features (Opcional) Uma classe ou camada de recurso de polilinha ou polígono de entrada que define os limites do polígono ou partes dele, que não devem ser eliminados.


3
Isso funciona no caso do zoológico? Parece não haver lascas no conjunto de dados, apenas lacunas entre polígonos.
Subterrâneo

3
Eu usei essa ferramenta com sucesso para remover lacunas entre polígonos. Há um problema com o uso desta ferramenta. Quando quebra os polígonos durante o geoprocessamento, generaliza os polígonos recém-criados. Portanto, as curvas não serão tão suaves, ao contrário, terão linhas "irregulares" nítidas. Ymmv.
amasephy

3
@underdark Bom ponto. No entanto, sempre é possível introduzir as lascas por meio da união dos dados com um polígono monolítico circundante (como a caixa delimitadora do conjunto de dados). Uma pergunta interessante é como "Eliminar" escolhe em quais polígonos mesclar as lascas. Isso pode influenciar os resultados (embora eu duvide que o viés seria importante na maioria das aplicações). Nessa situação em particular, uma solução ideal dividiria as lascas ou calcularia a média dos erros.
whuber

Uma das opções da ferramenta é mesclar a tira com o polígono vizinho com a borda mais longa (a opção padrão) ou a maior área.
kenbuja

4
Se você não possui uma licença ArcInfo, existe um script em arcscripts.esri.com/details.asp?dbid=14672 que automatiza isso via Python. Eu usei com sucesso há alguns anos atrás.
Stephen chumbo

20

Para fazer isso manualmente no QGIS, vá para Settings|Project Properties...Na Generalguia na parte inferior está Snapping options...Verifique a camada que deseja ajustar, defina o modo to vertexe defina a tolerância para algum valor menor que a menor distância entre dois pontos que você possui. Se você não tiver certeza, defina as unidades como pixelse a tolerância para algo como 5, para que, se houver alguns detalhes complicados, você possa aumentar o zoom e garantir que não encaixe no vértice errado.

Em seguida, edite sua camada vetorial, selecione a ferramenta Nó e mova os pontos errantes para os correspondentes.

Fazê-lo automaticamente é um pouco mais complicado. O AFAIK QGIS não possui um plug-in para automatizá-lo e, embora o PostGIS seja construído no GEOS, que possui funções de snap, ele não é exposto ao PostGIS. Pode ser possível escrever uma consulta para verificar cada ponto de um polígono em busca de vizinhos dentro da distância de encaixe, mas isso está além da minha inteligência para expandir.

O GRASS possui o v.clean.snap, que você pode acessar via QGIS, mas há a etapa extra de criar um conjunto de dados GRASS.


Você sempre pode usar a caixa de ferramentas de processamento QGIS e aplicar o v.clean.snap diretamente no seu shapefile.
SAnderka

v.clean.snap não está disponível. Eu usei v.clean e, em seguida, selecionei a ferramenta snap e deu uma camada vazia. A documentação diz que snap é unir linhas ao vértice. Quero associar vértice a outro vértice dentro do limite.
Neogeomat

17

Se você está familiarizado com o QGIS: No tronco do QGIS 1.9 (pode ser instalado como qgis.dev pelo instalador do OSGEO, consulte a página inicial do qgis), há uma nova função no menu vetorial chamada "Eliminar polígonos da tira", que faz exatamente o que você quer. Você pode selecionar os polígonos problemáticos e mesclá-los aos polígonos adjacentes com base em um limite comum ou na área de promoção. Experimente!


3
Para atualizar esta resposta, no QGIS 2.18.1 'Eliminar polígonos de tira' está disponível no pacote stable e pode ser encontrado em Vetor -> Ferramentas de geoprocessamento.
Valerie Anderson

Isso se aplica aos polígonos existentes da fita dispersa entre os principais, não no caso de espaços entre os polígonos.
stragu 21/04/19

15

Se você é um usuário QGIS, obtém todo o poder do GRASS, pois é um GIS totalmente topológico. Dentro do QGIS, ative o plug-in GRASS, crie um local / conjunto de mapas para importar seus dados.

Abra o conjunto de mapas e importe sua camada suja com v.in.ogr: brinque com os dois parâmetros avançados "limite de ajuste para limites" e "tamanho mínimo da área a ser importada".

Você também pode usar as opções fornecidas pelo módulo v.clean.


10

O ArcGIS possui regras de topologia que ajudarão a identificar e corrigir lacunas em seus dados, como as que você está se referindo. Para criar Regras de Topologia, você precisará de uma licença ArcEditor ou ArcInfo e armazenará sua Classe de Recurso em um Conjunto de Dados de Recurso em um banco de dados geográfico pessoal ou de arquivo.

Você provavelmente desejaria implementar a regra " Não deve ter falhas ". Depois de criar a base de regra com todas as regras que julgar necessárias, você deverá validar a topologia que identificará todos os erros em seus dados.

Em seguida, usando o Inspetor de erros e a ferramenta Corrigir erros de topologia , você pode selecionar individualmente ou em massa os erros que deseja corrigir e como deseja corrigi-los (por exemplo: criar novos polígonos para preencher os vazios ou mesclar com polígonos maiores nas proximidades) .


7

Há uma função "Eliminar polígonos da tira" na QGIS 2.12 (Lyon) Toolbox. Estou certo de que também está em alguma versão anterior.


2

Bem, eu tenho usado uma função PostGIS (eu uso diretamente no meu QGIS) que executa um snap recursivo para resolver esse problema. Os resultados são muito bons, apenas exigem uma boa quantidade de valores de tolerância para obter melhores resultados. Se você estiver disposto a tentar, verifique (no meu caso, as geometrias são todas multi, daí o st_multi no meu execute):

CREATE OR REPLACE FUNCTION dsgsnap(tabela text, snap float) RETURNS void AS 
        $BODY$
            DECLARE
            id int;
            BEGIN
                FOR id in execute('select id from '||tabela)
                LOOP
                    EXECUTE     
                'update '||tabela||' as classe set geom = st_multi(res.geom) 
                from 
                    (
                        select st_snap(a.geom, st_collect(b.geom), '||snap||') as geom, a.id as id 
                        from '||tabela||' a, '||tabela||' b 
                        where a.id != b.id and a.id = '||id||' 
                        group by a.id, a.geom
                    ) as res 
                where res.id = classe.id';
                END LOOP;
                RETURN;                        
            END
        $BODY$
        LANGUAGE plpgsql;

1

Não é uma solução perfeita, mas uma dessas duas coisas funciona para mim na maioria dos casos:

  1. No QGIS, salve a camada no formato GEOJSON. Porém, antes de salvar, na caixa de diálogo "salvar camada como", defina a precisão das coordenadas como 3 (15 é o padrão). Isso terá o efeito de unir vértices muito próximos um do outro.

  2. Vá para o Mapshaper , faça o upload do arquivo e pressione "simplificar". No canto superior esquerdo, ele mostra quantas interseções de linhas encontra e oferece a opção de corrigi-las. Acho que essa correção funciona cerca da metade do tempo.


0

Eu não o usei, mas a ET Geowizards , que traz muitas ferramentas de processamento somente ArcEditor e ArcInfo para a licença de nível do ArcView (também conhecida como ArcGIS Standard), possui um Assistente para Eliminar que "Elimina polígonos indesejados (lascas), mesclando-os nos polígonos vizinhos ou excluindo-os " . O kit de ferramentas do assistente custará US $ 250 usd (lista de preços ).


0

Enfrentei o mesmo problema, que ao explorar as ferramentas, resolvi-me facilmente, embora não conheça a lógica. ! [Nas ferramentas, vá para a caixa de ferramentas Gerenciamento de dados, vá para a Classe de recursos e execute o script Integrar clicando duas vezes]] [1]

na janela Script, selecione a classe de recurso com problema e, na tolerância XY, adicione o vale medindo a distância com a ajuda da ferramenta de medição em vários pontos e obtenha um vale médio, coloque esse valor no ambiente de tolerância e aplique o problema, resolvido agora não como, mas resolvido com cerca de 90% de precisão. ! [insira a descrição da imagem aqui] [2]

Tentei todos os outros métodos descritos nas respostas acima, mas foi difícil e complicado obter as correções automáticas de falhas entre os polígonos adjacentes.


11
Se você colar um link para as imagens às quais você está se referindo, eu posso adicioná-las.
djq
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.