Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In the picture below you can see a polygon layer, representing steep slopes, extracted from a TIN. The polygons have a lot of spikes in them. I would like to remove these spikes while the rest of the borders stay on the exact same location. I would like to do this in a Python script, using arcpy or Python functions.

Further info: ArcGIS 10.0, Python 2.6.5, polygon layer is in a GDB


share|improve this question
I'm not sure you are going to find an automated method for fixing your spikes. The problem is, how do you distinguish between sharp angles inside polygons vs outside? Or how do you tell your software what is a spike vs nonspike? And since you don't want the rest of the polygon to move/change, that limits what tools will work. That's a tough one. – Baltok Feb 19 '13 at 15:54
What spatial extent are you working with? Would you be willing to manually edit your vector data (if feasible)? – Aaron Feb 19 '13 at 20:40
If you can get access to FME, the SpikeRemover tool can do what you're after. Not really the solution you asked for, but it'd be quick. – Fezter Feb 20 '13 at 5:06
@Baltok thanks for your answer. Nothing is impossible is it?;) I agree that it's a tough one... – Vincent Udo Feb 20 '13 at 8:58
@Aaron The spatial extent is too big to do this by hand. Have to do this for a big part of The Netherlands. – Vincent Udo Feb 20 '13 at 8:59

I suggest playing around with the Simplify Polygon tool (first) or the Smooth Polygon tool (second), to see how well they meet your requirement that "the rest of the border stay on the exact same location".

share|improve this answer
Thanks for the answer! Unfortunately both simplify and smooth don't give the result I'm looking for. – Vincent Udo Feb 19 '13 at 15:03
Hi Vincent -- can you give some more info about how the result deviates from your requirement? That could help us figure out whether some parameter adjustments might give some acceptable output, or whether a different solution altogether would be better. – andytilia Feb 19 '13 at 19:33
I have to use the polygons to select lines that are on the borders of the polygons, but I don't want to select the lines intersecting the spikes. Simplify and Smooth alter the borders, which makes it impossible to select the right lines. The lines are used to build the TIN, so they are on the exact same location as the borders of the polygon. – Vincent Udo Feb 20 '13 at 7:54

From your image i can say this approach will help you.

The procedure is simple

  1. First Buffer the original layer with some reasonable distance.

  2. Then perform inverse buffer with same distance on the result of step one.

  3. After this clip you original layer with the result of step 2.

you may need to perform simplification on you final layer.

hope that will help you.

share|improve this answer
Thanks for your answer. Unfortunately this method doesn't have the result I'm looking for. It fills the gaps between the spikes and the slopes. I would like to find a way to remove the spikes by removing the vertex in the point of the spike. – Vincent Udo Feb 20 '13 at 15:07

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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