Jump to content

 
Photo

Populated places distribution

- - - - -

  • Please log in to reply
3 replies to this topic

#1
Donatas

Donatas

    Newbie

  • Validated Member
  • Pip
  • 1 posts
  • Lithuania

Hello

I am on a roject to make a 1:15M reference globe of the world. As now I have a data for populated places (more than 50.000 points). All the points have population data. City points are unequally distributed. Some parts (for example, western Europe) have a lot of places, some (say, Siberia or Arabian peninsula) - a few. I want to omit lesser populated places in densely populated areas and leave them in scarcely populated regions to achieve a good looking result. I use ArcMap for data preparation. My first idea was to use Spatial Analyst tool "kernel density" to categorize points and then use the density data to determine point emitting rules by population numbers and density factor. Yet there is a problem. There are some similarly densely distributed points in Western Europe and in, say, Japan. Yet the cities in Japan are much bigger (for example 200k), but in Europe these points stand for cities with 10k people. The density factor is the same.
I am looking for any help.
Thanks in advance.

Donatas

#2
Hans van der Maarel

Hans van der Maarel

    CartoTalk Editor-in-Chief

  • Admin
  • PipPipPipPipPipPipPip
  • 3,898 posts
  • Gender:Male
  • Location:The Netherlands
  • Interests:Cartography, GIS, history, popular science, music.
  • Netherlands

It's a difficult question, because you simply cannot select on population alone. You would end up with vast empty areas in Siberia and Canada for example.

I've always done this through manual selection, considering everything case-by-case. E.g. a 250.000 people city right next to say Tokyo wouldn't get show, but Inuvik in Canada with a population of 3500 would (simply because there's nothing else around)
Hans van der Maarel - Cartotalk Editor
Red Geographics
Email: hans@redgeographics.com / Twitter: @redgeographics

#3
patdunlavey

patdunlavey

    Contributor

  • Validated Member
  • PipPip
  • 27 posts
  • United States

It's a difficult question, because you simply cannot select on population alone. You would end up with vast empty areas in Siberia and Canada for example.

I've always done this through manual selection, considering everything case-by-case. E.g. a 250.000 people city right next to say Tokyo wouldn't get show, but Inuvik in Canada with a population of 3500 would (simply because there's nothing else around)

I recently worked out a rather complicated method for thinning out place names that seemed to work out reasonably well. I used a combination of Manifold GIS, Illustrator, and a good text editor.
  • In Manifold
    • I imported the population points as a drawing
    • Created a query that sorted the points by priority (population and class) and added a field called "uniquelabel", which concatenated the unique record id with characters so that the total number of characters was equal to (or greater than) the number of characters in the place name. The idea is to have text for a new label that takes approximately the amount of space as the original label, but which is guaranteed to be unique over the whole map.
    • Create a new linked drawing, based on that query, set the projection as appropriate.
    • Create a labels layer linked to that drawing, displaying the uniquelabel as the text - Manifold displays labels as best it can, working its way down the list, and won't display a label when it can't fit any more in the vicinity of the point in question
    • Create a layout with the labels layer.
    • Fiddle with the label sizes on the labels layer (I themed the label sizes according to the population) and the page size on the layout layer until you achieve something like the threshold you are looking for.
    • Export the layout as PDF - this "fixes" the labels that Manifold has chosen to display.
  • In Illustrator
    • I opened up the PDF and selected all the text
    • Copied to clipboard
  • In text editor (UltraEdit)
    • Paste the text
    • Break the unique labels into one per line (I don't recall what I used for a delimiter to enable me to do this, I may have added a distinctive character to the beginning of every uniquelabel)
    • Put double-quote marks around each uniquelabel (using search and replace on newlines)
    • Save as a comma-separated-value file (give .csv extension)
  • Back in Manifold
    • Import the uniquelabel csv file into a new table.
    • Add a column to the uniquelabel table titled "fiiltered" and put "Y" or some other flag into it for all records.
    • Open the populated places table and join the uniquelabel table to it mapped on the uniquelabel fields, and use that to bring the "filtered" field into the populated places table. Now you have a flag in your populated places drawing that indicates which populated places you want to keep.
    • Select all the "filtered" populated places, copy and paste into their own drawing.
    • Now you have a drawing with just the filtered populated places
I know this seems like a convoluted process, but it sure beats manually editing tens of thousands of points.

You don't want to be too restrictive in what you let through this filter, but you do want it to be aggressive enough to save yourself as much work as possible. You will still need to manually edit afterwards - you just hope to have that volume of work be as small as possible.
Pat Dunlavey
www.pdcarto.com

#4
sitesatlas

sitesatlas

    Master Contributor

  • Validated Member
  • PipPipPipPip
  • 184 posts
  • Gender:Male
  • Location:Madrid, Spain
  • Spain

Donatas,

I come across the problem you've described quite often. After a lot of headaches, I finally came up with a solution and, with some expert help, a script for Manifold. Here is a general description of the method:

1. Open the database for the cities and order them from largest population (or weight, if other factors are taken into consideration) to smallest. Add a column called "Display" or something similar and set all its values to 0.
2. Run a spatial SQL query that selects the largest city in the list with a Display value of 0. Give that city a Display value of 1 (city to be displayed).
3. Select all other cities within a specified distance (depending on the scale of the map) and having a Display value of 0. Give those cities a Display value of 2 (city to be hidden). This prevents cities that are too close together from being displayed, though you may need to manually make some corrections for "twin cities" such as Delhi/New Delhi, Minneapolis/St. Paul, Lima/Callao, etc. if you want both to be displayed.
4. Repeat steps 2 and 3 until there a no cities with Display=0 (in other words, all cities have been analyzed and given a value of 1 or 2). As you get to the bottom of the list, only small towns in remote areas will be left and they will be given a value of 1.
5. Open your map and set your city symbol and label display parameters so that Display=2 locations are hidden.

Here is the thread on the Manifold forum about this: http://forum.manifol...forum/t39198.30

Good luck.
Michael Borop
World Sites Atlas
http://www.sitesatlas.com




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

-->