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();
Robin Hawkes
fonte
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:

Jake
fonte
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