Buffering in Meters/KM Using WGS84 Layers in QGIS

buffercoordinate systemqgisunits

I am using QGIS 1.7.4-Wroclaw and working with an SHP layer in WGS84. I want to buffer out to a certain number of kilometers from this layer using the ftools buffer tool.

I understand that the buffer tool always uses the layer units, which for WGS84 are decimal degrees. We all know that degrees don't convert consistently to meters, so how should I go about making my buffers?

Is it necessary for me to convert the shapefiles to a different CRS that natively uses meters?

If so, how do I choose one?

Best Answer

For this application, I would use an Azimuthal Equidistant projection centered in the middle of your source points. This projection has the nice feature of all radial distances around the center of the projection being accurate.

That particular projection is not part of QGIS standard projections. You can define your own using Settings/Custom CRS with the command string +proj=aeqd +lat_0=24.5 +lon_0=121.5, but unfortunately, custom projections can't be used by the fTools Reprojection tool. Instead, you can transform your dataset on the command line using the command

ogr2ogr points_reprojected.shp points.shp -t_srs "+proj=aeqd +lat_0=24.5 +lon_0=121.5"

Then you can do the buffering in QGIS using the points_reprojected.shp shapefile.

A 2000km buffer around a point in north Taiwan looks like a circle in an orthographic projection centered on the point:

... and squashed in WGS84: