I would like to cut out the world into polygons of equal population size, say 100 million persons (starting for example with raster data of population density as provided by the NASA). I know that this cutting would be arbitrary in the sense that there are many different solutions. But this does not matter, I need it to be arbitrary! Please, could anyone indicate to me the best way to proceed?

  • This sounds like a particular type of cartogram (or perhaps inverse cartogram?). This question has a graphic example very similar to what I think you're describing, where the map is made up of standard unit 'pixels' and shapes with higher values have more of them. While there isn't a specific answer on how to do that, you might start there in looking for possible solutions. – Chris W Oct 2 '14 at 18:38
  • Actually scratch that. I get the impression you want to take polygons of the world land masses and cut them into shapes that will vary in size but all represent 100 million people. Cartograms distort shapes based on the value, so it's sort of the opposite of what you want to do. If you have a density raster with cells of known size, you could convert that to population per cell, then maybe find a tool or analysis that would create polygons out of cells totaling a certain threshold. It seems like there's something in Spatial Analyst that would do this, but it's escaping me at the moment. – Chris W Oct 2 '14 at 18:46
  • @Julien Perhaps you could use a segmentation approach (region growing--see en.wikipedia.org/wiki/Image_segmentation) with seed points at local maxima in the population density surface. The issue might be that you could end up with strangely shaped polygons. You might have to enforce some kind of 'roundness' rule. Any way you look at it, this is a very interesting question and I can't wait to see some of the answers. – WhiteboxDev Oct 2 '14 at 18:55

You could create a grid of small squares that cover the world. Then a script could loop on every adjacent square and while(sum(squares.population) < 1000000) {merge(squares)}. For the last square that would make you jump above 1 million, you could do the same with much smaller squares. You should roams across the squares like a snake, not in line, so the final polygone shape is not always the same. You can use a spatial database like PostGIS to perform the SUM and the merge (ST_UNION).

Your question is quite interesting, keep us posted on your results.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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