3

Say that I have two sets of polygon data:

  1. one depicting world borders in 1990
  2. one depicting world borders in 2020.

I have ensured that both data sets are under the same projection.

Both sets of data have the following fields:

  • "FID" : An arbitrary unique identifier for each data point
  • "NAME" : The common name of the country or region
  • "ISO" : The ISO 3166-1 alpha-3 code for the country or region (for example, AFG for Afghanistan).

My goal is to get a layer containing the differences between these two sets of data. I would like a polygon layer showing only the areas that have changed since then. Ideally, each polygon in the output layer should depict only the areas that changed countries between 1990 and 2020, with two fields: one indicating the ISO 3166-1 code of the country that it belonged to in 1990 and one indicating the ISO 3166-1 code of the country that it belonged to in 2020.

I tried using the "Symmetrical Difference" tool, but that just returned a seemingly empty polygon layer. I then tried to use the "Difference" tool, but there was a similar result (empty layer).

How would you achieve this effect in QGIS?

3
  • 4
    Union then select (or set a filter) only polygons where ISO != ISO_2
    – user2856
    May 6, 2022 at 6:41
  • 1
    @user2856 Your comment was the most helpful in solving my problem. If you'd be willing to post it as an answer, I would be happy to accept it.
    – huanglx
    May 6, 2022 at 20:24
  • Please, do not forget about "What should I do when someone answers my question?"
    – Taras
    May 12, 2022 at 6:54

1 Answer 1

5

Run Menu Processing > Toolbox > Geometry by expression with this expression with Input Layer the polygon layer representing the boundaries in 2020. In the expression at the end of line 2, replace world_1990 with the name of the layer containing the boundaries in 1990:

case
when not overlay_contains( 'world_1990')
then $geometry
end

Red: countries 1990, black: countries 2020; yellow: changes enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.