Projecting attribute from one polygon layer to another in QGIS?

If I understand your question correctly, this might solve your first question. I did a quick test and the following method seems to work but it is worth taking a closer look to verify if it is correct.

  1. create random points in the 1928 layer (centroids might work better. You will have to check);
  2. intersect the points layer with the 2014 layer (points layer should be the input layer);
  3. Join attributes by location. Target layer is the 2014 layer and the points layer is the join layer. Use contain as Geometric predicate. Leave attribute summary as default (first located feature). Keep all records in the Join table drop down box.

Check to see if the output layer is correct.

If possible run it via the processing toolbox in qgis (don't have to save each layer but instead save it as a temporary layer).

Not exactly sure what your second question entails. could you elaborate?


Disclaimer:

  1. I believe in this particular case it would be way more accurate to use population data from 2014 as a point layer with as much detail as possible (centroid of suburbs, towns, villages...)

  2. If BEV_ is really population then there are some really strange values like GEN = Uelzen, BEV_ = 92553 where this polygon is compared to Google satelite image area of mud size of maximum few football fields.

If you really want to get number values based on ratio of polygon area overlap between layers (L1 = counties_2014, L2 = german empire 1928):

  1. Before any calculations I suggest to use projected coordinate systems in meter units, respectively square meter units for area. In this case I used EPSG:3857
  2. In L1 use Field Calculator, create column "Area" and fill with $area
  3. Intersect layers - Vector / Geoprocessing Tools / Intersect... - Input=L1, Intersect=L2
  4. In the Intersected layer use Field Calculator, create column for population adjusted by new area "PopArea", and fill with "Population" * $area / "Area"
  5. Dissolve the Intersected layer with Processing Toolbox - find Dissolve Polygons
    • choose some unique polygon values column like "Name" from L2
    • check Compute min/max/sum... and compute it on "PopArea"
    • the final layer will have column sum_diss which is what you are after (in this particular case adjusted population for 1928 counties from 2014)

If you done all well you should get about 77 million people distributed based on L2 counties area out of 81 million in L1.

enter image description here

Tags:

Polygon

Qgis