I have a detailed 2D polygon (representing a geographic area) that is defined by a very large set of vertices. I'm looking for an algorithm that will simplify and smooth the polygon, (reducing the number of vertices) with the constraint that the *area* of the resulting polygon must contain all the vertices of the detailed polygon.

For context, here's an example of the edge of one complex polygon:

![enter image description here](https://i.stack.imgur.com/gU9ok.png)

My research:

* I found the Ramer–Douglas–Peucker algorithm which will reduce the number of vertices - but the resulting polygon will not contain all of the original polygon's vertices. See this article [Ramer-Douglas-Peucker on Wikipedia](http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm "Ramer-Douglas-Peucker algorithm")
* I considered expanding the polygon (I believe this is also known as outward polygon offsetting). I found these questions: [Expanding a polygon (convex only)](https://stackoverflow.com/questions/3749678/expand-fill-of-convex-polygon "Expanding a polygon") and [Inflating a polygon](https://stackoverflow.com/questions/1109536/an-algorithm-for-inflating-deflating-offsetting-buffering-polygons "Inflating a polygon"). But I don't think this will substantially reduce the detail of my polygon.

Thanks for any advice you can give me!