Projetando atributo de uma camada de polígono para outra no QGIS?

16

Eu tenho 2 camadas de polígono que podem ser encontradas aqui . As duas camadas estão sobrepostas. O primeiro contém um mapa dos condados alemães em 1928 e o segundo como são em 2014.

A camada de 2014 contém informações sobre a população (chamada Bev no conjunto de dados). É possível projetar o atributo de população de uma camada de polígono para a outra?

Para ser um pouco mais específico:

Considere a situação em que eu tenho 2 municípios na camada com o atributo de população, mas na mesma área na outra camada há apenas 1 município. O QGIS pode agregar a população dos dois municípios e gravar essas informações na outra camada?

Se isso funcionar, também existe uma maneira de fazer isso quando a camada com as informações possui em uma área específica apenas 1 município, mas existem 2 municípios na outra camada? Nesse caso, eu gostaria de dividir a população proporcionalmente ao tamanho do município.

Alex
fonte
Esta resposta deve iniciar um fluxo de trabalho geral: gis.stackexchange.com/a/136820/10919
Tom
Eu acho que o link acima mencionado é um bom ponto de partida - mas (!) implica que a população é igualmente distribuída nos polígonos afetados. o que não é verdade
robert tuw 05/02
2
... perdi o prazo de 5 minutos. para continuar: e se você comparar os dois arquivos de forma, há uma diferença significativa no nível de detalhe - o que resulta em uma miríade de polígonos de fita ... dê uma olhada em [link] ( dropbox.com/sh/7w97kjey33k7jdi/ AAARDwyyMryOBwjtY6IrFsh9a? Dl = 0 ). se você tivesse alguma informação sobre a área estabelecida naquela época, os resultados poderiam ser significativamente melhorados
robert tuw 5/16/16
... por exemplo, os dados gratuitos de cobertura de corina poderiam ajudar a identificar a área atualmente colonizada e, assim, melhorar os resultados da alocação de população baseada na área.
Robert TUW

Respostas:

8

Aviso Legal:

  1. Acredito que, neste caso em particular, seria muito mais preciso usar os dados da população de 2014 como uma camada pontual com o máximo de detalhes possível (centróide de subúrbios, cidades, vilas ...)

  2. Se BEV_ é realmente população, existem alguns valores realmente estranhos, como GEN = Uelzen, BEV_ = 92553, em que esse polígono é comparado à área de imagem de satélite do Google, com tamanho de lama de no máximo alguns campos de futebol.

Se você realmente deseja obter valores numéricos com base na razão da sobreposição da área do polígono entre as camadas (L1 = counties_2014, L2 = império alemão 1928):

  1. Antes de qualquer cálculo, sugiro usar sistemas de coordenadas projetadas em unidades de metro, respectivamente, unidades de metro quadrado para a área. Nesse caso, usei o EPSG: 3857
  2. Em L1, use Field Calculator , crie a coluna " Area " e preencha com $ area
  3. Interseção de camadas - Ferramentas de vetor / geoprocessamento / Interseção ... - Input = L1, Intersect = L2
  4. Na camada Interseccionada, use a Calculadora de Campos , crie uma coluna para população ajustada pela nova área " PopArea " e preencha com "População" * $ area / "Area"
  5. Dissolver a camada interseção com Processing Toolbox - encontrar Dissolver polígonos
    • escolha uma coluna exclusiva de valores de polígono como "Nome" de L2
    • marque Compute min / max / sum ... e calcule-o em " PopArea "
    • a camada final terá a coluna sum_diss, que é o que você procura (nesse caso específico, população ajustada para os condados de 1928 a partir de 2014)

Se você fez tudo bem, deve distribuir cerca de 77 milhões de pessoas com base na área dos condados de L2 de 81 milhões em L1.

insira a descrição da imagem aqui

Miro
fonte
Obrigado pela sua resposta. Em relação aos dois pontos principais: eu também tentei obter o que quero com centróides. Funcionou bastante bem, mas especialmente para os polígonos menores, a correspondência não funcionou muito bem. Eu acho que os dados da população se misturaram de alguma forma. Mas isso é apenas um pequeno problema que eu posso resolver sozinho.
Alex
@ Alex Eu acredito que usar pontos ou centróides neste caso é do meu ponto de vista muito longe da solução que eu chamaria de suficiente por causa da sobreposição muito aleatória. Você perderá muitos dados dessa maneira.
Miro
9

Se eu entendi sua pergunta corretamente, isso pode resolver sua primeira pergunta. Fiz um teste rápido e o método a seguir parece funcionar, mas vale a pena examinar mais de perto para verificar se está correto.

  1. crie pontos aleatórios na camada de 1928 (os centróides podem funcionar melhor. Você precisará verificar);
  2. cruzar a camada de pontos com a camada de 2014 (a camada de pontos deve ser a camada de entrada);
  3. Associe atributos por local. A camada de destino é a camada de 2014 e a camada de pontos é a camada de junção. Use conter como predicado geométrico. Deixe o resumo do atributo como padrão (primeiro recurso localizado). Mantenha todos os registros na caixa suspensa Tabela de junção.

Verifique se a camada de saída está correta.

Se possível, execute-o através da caixa de ferramentas de processamento no qgis (não é necessário salvar cada camada, mas salve-a como uma camada temporária).

Não sei exatamente o que sua segunda pergunta implica. você poderia elaborar?

PyMapr
fonte