3

I am working with data that are unprojected (they are in lat/lon) and for every point I want to create a buffer of 800 meter. How can I construct a buffer of 800m. but give the distance in decimal degrees? I use ArcMap 10.2.

4
  • Please edit the question to specify the GIS software in use.
    – Vince
    Jan 27, 2015 at 13:59
  • en.wikipedia.org/wiki/Decimal_degrees about 1 degree is about 111 km at the equator. In other systems only way to get "accurate" 800m is reproject data to system which uses meters Jan 27, 2015 at 14:06
  • Moving towards to the poles, the lon distance decreases, but the lat distance remains nearly constant. So there is no simple scaling possible. Reprojection is the only way to go.
    – AndreJ
    Jan 27, 2015 at 14:13
  • If I were working in a certain projection, my buffer would that of 800 meters. Now that I am in decimal degrees, how can I calculate to how many decimal degrees this equals? Jan 28, 2015 at 12:01

2 Answers 2

3

There are multiple ways to accomplish this, but none of the correct methods involve static conversion of degrees and linear units. In the past I've had to define my own equidistant or equal area coordinate system over each feature, but ArcMap offers a much simpler solution: Use Geoprocessing... Buffer, which invokes Buffer (Analysis), and then specify a linear unit:

Buffer dialog

Which results in properly buffered shapes:

map

1
  • 1
    And when you upgrade to 10.3.0, you can explicitly ask for "geodesic"-based buffers.
    – mkennedy
    Jan 28, 2015 at 17:31
0

You can't. As commenters note, a degree of longitude is a different distance at different latitudes, while a degree of latitude is pretty much constant.

When you reproject, as recommended, there may be distance distortion. For example, Mercator projections exaggerate distance at higher latitudes. So if you project to meters, you must also understand how the projection distorts distance.

For instance, here's a method in one of my projects that gets the conversion from actual to projected meters for "Popular Spherical Mercator" (ESPG 3857):

public static double GetScaleFromRealMetersToSphericalMercator(Point location)
{
    double a = Math.Exp((location.Y * 2.0) / EARTH_RADIUS);
    double lat = (Math.Asin((a - 1) / (a + 1)));
    return 1.0 / Math.Cos(lat);
} 

where EARTH_RADIUS = 6378136.98 which is not absolutely correct but is the value for the spheroid used by the projection.

Such approximations are valid for small distance like your 800 m but less so for large distances.

Your Answer

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

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