Vous projetez l'attribut d'une couche de polygones à une autre dans QGIS?

16

J'ai 2 couches de polygones qui peuvent être trouvées ici . Les deux couches se chevauchent. Le premier contient une carte des comtés allemands en 1928 et le second les comtés comme ils sont en 2014.

La couche 2014 contient des informations sur la population (appelées Bev dans l'ensemble de données). Est-il possible de projeter l'attribut de population d'une couche de polygones à l'autre?

Pour être un peu plus précis:

Considérez la situation où j'ai 2 comtés dans la couche avec l'attribut population mais dans la même zone sur l'autre couche il n'y a qu'un seul comté. QGIS peut-il agréger la population des deux comtés et écrire ces informations dans l'autre couche?

Si cela fonctionne, existe-t-il également un moyen de le faire lorsque la couche contenant les informations n'a dans une zone spécifique qu'un seul comté mais qu'il y a 2 comtés dans l'autre couche? Dans ce cas, je voudrais diviser la population proportionnellement à la taille du comté.

Alex
la source
Cette réponse devrait vous permettre de démarrer un workflow général: gis.stackexchange.com/a/136820/10919
Tom
Je pense que le lien mentionné ci-dessus est un bon point de départ - mais (!) il implique que la population est également répartie dans les polygones affectés. ce qui n'est pas le cas
robert tuw
2
... désolé manqué le délai de 5 minutes. à suivre: et si vous comparez les deux fichiers de forme, il y a une différence significative dans le niveau de détail - ce qui entraîne une myriade de polygones de ruban ... jetez un œil à [link] ( dropbox.com/sh/7w97kjey33k7jdi/ AAARDwyyMryOBwjtY6IrFsh9a? Dl = 0 ). si vous aviez des informations sur la zone
habitée
... par exemple, les données gratuites sur la couverture terrestre des corines pourraient aider à identifier la zone actuellement colonisée et ainsi améliorer les résultats de la répartition géographique de la population.
robert tuw

Réponses:

8

Avertissement:

  1. Je pense que dans ce cas particulier, il serait beaucoup plus précis d'utiliser les données démographiques de 2014 comme une couche ponctuelle avec autant de détails que possible (centre de gravité des banlieues, des villes, des villages ...)

  2. Si BEV_ est vraiment une population, il existe des valeurs vraiment étranges comme GEN = Uelzen, BEV_ = 92553 où ce polygone est comparé à la zone d'image satellite de Google de la taille de la boue de quelques terrains de football au maximum.

Si vous voulez vraiment obtenir des valeurs numériques basées sur le rapport de chevauchement de la zone de polygone entre les couches (L1 = counties_2014, L2 = empire allemand 1928):

  1. Avant tout calcul, je suggère d'utiliser des systèmes de coordonnées projetés en unités de mètre, respectivement en mètres carrés pour la surface. Dans ce cas, j'ai utilisé EPSG: 3857
  2. Dans L1 utilisez Field Calculator , créez la colonne " Area " et remplissez avec $ area
  3. Intersection de couches - Vecteur / Outils de géotraitement / Intersection ... - Entrée = L1, Intersection = L2
  4. Dans la couche intersectée, utilisez Field Calculator , créez une colonne pour la population ajustée par la nouvelle zone " PopArea " et remplissez avec "Population" * $ area / "Area"
  5. Dissoudre la couche intersectée avec la boîte à outils de traitement - trouver Dissoudre les polygones
    • choisissez une colonne de valeurs de polygone unique comme "Nom" dans L2
    • vérifier Calculer min / max / somme ... et le calculer sur " PopArea "
    • la couche finale aura la colonne sum_diss qui est ce que vous recherchez (dans ce cas particulier, population ajustée pour 1928 comtés de 2014)

Si vous avez bien fait, vous devriez obtenir environ 77 millions de personnes réparties sur la base des comtés de L2 sur 81 millions en L1.

entrez la description de l'image ici

Miro
la source
Merci pour votre réponse. En ce qui concerne les deux premiers points: j'ai également essayé de réaliser ce que je veux avec les centroïdes. Cela fonctionnait assez bien, mais surtout pour les petits polygones, l'appariement ne fonctionnait pas très bien. Je pense que les données démographiques se sont quelque peu mélangées. Mais ce n'est qu'un problème mineur que je peux résoudre moi-même.
Alex
@Alex Je pense que l'utilisation de points ou de centroïdes dans ce cas est trop éloignée de mon point de vue de la solution que j'appellerais suffisante en raison d'un chevauchement très aléatoire. Vous perdrez trop de données de cette façon.
Miro
9

Si je comprends bien votre question, cela pourrait résoudre votre première question. J'ai fait un test rapide et la méthode suivante semble fonctionner, mais cela vaut la peine d'y regarder de plus près pour vérifier si elle est correcte.

  1. créer des points aléatoires dans la couche 1928 (les centroïdes pourraient mieux fonctionner. Vous devrez vérifier);
  2. couper la couche de points avec la couche 2014 (la couche de points doit être la couche d'entrée);
  3. Joignez les attributs par emplacement. La couche cible est la couche 2014 et la couche de points est la couche de jointure. Utilisez Contenir comme prédicat géométrique. Laissez le résumé des attributs par défaut (première entité localisée). Conservez tous les enregistrements dans la liste déroulante Rejoindre la table.

Vérifiez si la couche de sortie est correcte.

Si possible, exécutez-le via la boîte à outils de traitement dans qgis (ne devez pas enregistrer chaque couche, mais enregistrez-la plutôt comme couche temporaire).

Je ne sais pas exactement ce que votre deuxième question implique. pourriez-vous élaborer?

PyMapr
la source