I know this is a pretty basic question but I couldn't find the answer myself, so here I go:

I need variable buffer widths depending on the surface area of the polygon (city) size.

For example: A polygon sized 100 km2 should have twice the buffer than a polygon sized 50 km2 (which would be 500M radius in this example) Arcmap 10.1.


You can do this by using a field in your layer's attribute table as the source for the buffer distance, rather than specifying the distance manually. This works in either the Buffer Wizard or the Buffer geoprocessing tool. You would first need to create a field in your feature class, then populate it with the buffer distances you'd like to use for each feature.

The new field (I usually call it "BUFF_DIST") can either be numeric or text. If you use a text field, you can specify the distance and units of the buffer you'd like to use, that's the most foolproof way to do it. In your example, you'd add 500 meters as the BUFF_DIST value for a city with an area of 50km2. It sounds like you're saying the buffer distance would be proportional to the city area, so your Field Calculator expression (in Python) would be something like str((!CityArea! * 0.01)) + " meters".

If you use a numeric field for the buffer distance, you can specify the units later if you use the Buffer Wizard:

enter image description here

If you use the geoprocessing tool, you can use a numeric field as the buffer distance but the tool will assume that the units are the same as the units of whatever coordinate system your feature class uses. You're better off storing the buffer distances in a text field as I described, there's no way to specify the units during the operation if you want to use units other than whatever CS your layer is in:

enter image description here

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.