4

What's the simplest way to make equidistant circles in PostGIS/QGIS? (my software versions are Postgres 9.3, PostGIS is 2.1, QGIS 2.10)

I tried this in PostGIS, but the circles that come near or across North pole get broken:

WITH series AS (SELECT generate_series(1, 10, 1) AS i)
SELECT
    st_buffer('point(82.9216 55.0292)'::geography, i * 1000000) buff,
    i AS id
FROM series;

enter image description here

Another attempt was to use MultiRingBuffer plugin, but it makes circles only in the selected crs, and this makes ellipses: 1,000 km wide east-west and 2,000 km wide north-south.

The horizontal segment is about 2,700 km, the vertical is 4,000 km, but they appear near the same ring. This ellipse has north-south "radius" (in real ground distance) twice bigger than east-west, in other words, it's not just a projection issue.

enter image description here

[edit] SOLUTION (see details in the answer below)

  • create a custom projection, here's my one

    +proj=aeqd  +R=6371000 +lat_0=<city latitude> +lon_0=<city longitude>
    
  • create a ESRI Shapefile layer in this custom projection, with your city in the center (you might need another layer in usual projections with your city there, to know where to put the point).

  • create buffers with Multi Ring Buffer or something else (check for units, I got metres)
  • change project's projection to Pseudo Mercator (3857)
  • transform polygons into lines (vector tools) and cut out the part near 180 longitude, so that they don't cross the entire map
  • 1
    In the custom aeqd projection, your city will always be at (0;0). You can insert the coordinates as delimited text. – AndreJ Aug 3 '15 at 14:55
  • @AndreJ can't find where I can create or edit a point and set coordinates by text. Can you show a screenshot, please? – culebrón Aug 3 '15 at 15:35
  • Just create a text file with X,Y 0,0 in two lines with any text editor, then use Add Delimited Text Layer (the icon with the comma) to load it as a new layer. If you are prompted for the CRS, choose your custom aeqd, else use Set CRS for layer to set it. – AndreJ Aug 3 '15 at 17:53
8

The best CRS for making equidistant circles is a custom azimuthal equidistant projection based on the center point:

+proj=aeqd  +R=6371000 +lat_0=51 +lon_0=7

After creating the circle, you might need to densify the geometries. Displaying the circles in any other CRS might give you ellipses, but that's the difference between equidistant and non equidistant projections.

EPSG:3857 Web Mercator is definitely NOT an equidistant projection.

  • By ellipses I meant ground distance "ellipses", as you can see it's radius is 2000 km east-west, and 4000 km north-south. – culebrón Aug 2 '15 at 16:45
  • 1
    Ok, the solution was: 1) create a projection as you suggest 2) create a layer in this projection (originally I used 4326, and buffers were calculated in this projection, not in the custom one) 3) create buffers with Multi Ring Buffer as @Slslam suggested 4) change project, ahem, projection to Pseudo Mercator. – culebrón Aug 2 '15 at 17:22
  • Accepting this answer as projection was the key problem. – culebrón Aug 2 '15 at 17:23
1

I think this is answered at here. To me, the best is using QGIS plugin called Multi Ring Buffer , details at here.

  • The weird thing is what CRS should we use to make equidistant, not equi-degree circles? I updated the question. – culebrón Aug 2 '15 at 10:39
  • I think you shoud use "Psudo Web Mercator". BTW My QGIS just crashed, so needs time.I think correct "Shape", "Area", "Distance" and "Direction" can not be achieved by one projection system, one is good for one. Have a look gis.stackexchange.com/questions/5579/… – SIslam Aug 2 '15 at 10:55
  • Or try plugins.qgis.org/plugins/MultiDistanceBuffer and let me know. – SIslam Aug 2 '15 at 11:50

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.