Mesclando polígonos adjacentes no shapefile que foi dividido nos limites do bloco?


24

Atualmente, estou usando dados de construção do Ordnance Survey Vectormap District e notei que muitos polígonos de construção são divididos em 2 por causa da maneira como o sistema operacional divide o shapefile.

Isto é o que estou vendo no QGIS - destaquei alguns dos edifícios divididos no limite de ladrilhos:

insira a descrição da imagem aqui

Não consigo mesclar manualmente os prédios, pois há muitos deles que foram divididos nos limites (este é apenas um exemplo ampliado). Estou procurando uma maneira automatizada de resolver isso.

Infelizmente, cada lado dos prédios divididos tem uma identificação diferente, então não posso dissolvê-los facilmente.

Como você sugere que eu possa mesclar automaticamente os blocos de construção?

Editar

Agora estou usando o PostGIS para mesclar os polígonos divididos nos limites do bloco. Aqui está a instrução SQL que faz isso por mim - é muitas, muitas vezes mais rápida do que com QGIS:

DROP TABLE merged;
CREATE TABLE merged AS
SELECT
  -- Merge polygons that are within 0.01 metres of each other
  (ST_Dump(ST_Union(ST_Buffer(the_geom, 0.01)))).geom AS the_geom
FROM unmerged;

-- Update the geometry_columns table
SELECT Populate_Geometry_Columns();

6
Você provavelmente deve postar sua solução como resposta e aceitá-la em vez da minha. A adesão ao esquema de perguntas e respostas torna muito mais fácil para outras pessoas com o mesmo problema encontrar a solução.
— Jake

Respostas:


18

Se você simplesmente deseja dissolver as arestas e está satisfeito com um grande recurso multipolígono de todos os edifícios, você pode simplesmente usar a ferramenta "Dissolver" do fTools ("Vetor / Geoprocessamento / Dissolver").

Se você deseja manter os atributos (no caso do vetor OS que seria apenas o ID, o que parece ser bastante arbitrário), é possível dividir a camada vetorial dissolvida e atribuir os atributos da camada não dissolvida original usando "Unir atributos Por localização":

Este é um subconjunto de dois shapefiles de edifícios do SO que foram mesclados em um único shapefile usando "Vetor / Gerenciamento de dados / Mesclar shapefiles em um". As cores são atribuídas aleatoriamente para mostrar os recursos individuais:

Este é o resultado da ferramenta "Dissolver": todos os recursos foram dissolvidos em um único recurso com o ID do primeiro objeto, a quebra nos três edifícios centrais desapareceu:

Depois de dividir o recurso usando "Vetor / Geometria / Multipart para partes únicas", os edifícios são recursos individuais novamente, mas todos têm o mesmo ID:

Executando "Ferramentas de gerenciamento de vetor / dados / Associar atributos por local", com a camada dividida como destino e a camada mesclada original como a camada vetorial Join, os edifícios recebem novamente seus IDs individuais:


Acho que o problema pode ser que esse seja o SO VMD OpenData (corrija-me se estiver errado). Nesse caso, os recursos não têm atributos que podem ser usados ​​para dissolver. Portanto, você também pode tentar usar o fTools comum dissolvido. Boa sorte com isso, em alguns vetores OpenData eu tenho polígonos divididos por linhas que coincidem com linhas de grade que simplesmente não se dissolvem.
— Nhopton

@ nhopton: Mas o fTools comum dissolve todos os recursos em um único recurso (se não houver IDs que possam ser usados ​​para identificar quais recursos pertencem um ao outro, como é o caso aqui), o que provavelmente não é o que Rob deseja. Se você usar v.dissolveapós atribuir a todos os recursos algum atributo fictício idêntico, apenas aqueles que compartilham um limite serão mesclados.
— Jake

Um único recurso provavelmente não seria um problema para Rob, se tudo o que ele estava procurando fossem as formas. Mas sim, tente os dois métodos de dissolução. Usuario.
— Nhopton

Você tem certeza de que todos os polígonos que deveriam ter sido dissolvidos foram de fato dissolvidos? Aqui a maioria deles se dissolve, mas não todos.
— Nhopton

Obrigado pela ajuda! Acontece que o @nhopton estava certo e que as divisões do VectorMap District estão um pouco fora e, portanto, não estão se dissolvendo corretamente. Agora estou experimentando o uso do PostGIS para acelerar esse processo.
— 9606 Robin Hawkes
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.