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.

PolyGeo
  • 65,136
  • 29
  • 109
  • 338
Maria Karypidou
  • 1,460
  • 1
  • 19
  • 40
  • Please edit the question to specify the GIS software in use. – Vince Jan 27 '15 at 13:59
  • http://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 – simpleuser001 Jan 27 '15 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 '15 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? – Maria Karypidou Jan 28 '15 at 12:01

2 Answers2

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

Vince
  • 20,017
  • 15
  • 45
  • 64
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.

Russell at ISC
  • 1,912
  • 10
  • 11