I am extracting the boundaries of all Amateur Radio countries (DXCC) from OSM. There are 340 of them (they are different to political countries). I'm having some very weird behaviour with at least one of them.
I extract the boundary from OSM, and I get this - not too bad for a small island.

To save space, I them wish to Generalize. When I do, I get the following.

There are two problems with this.
1. I now have a self intersecting polygon. I have done a Simplify operation on it, and it makes no difference. I thought Simplify would correct any errors, but I have no idea what it is supposed to do (convert it to two polygons?)
2. I have Generalized with the code below. I am using WGS84 data, so I understand the maxDeviation parameter has to be in degrees. I hope the formula is correct. It calculates to 0.00089932 (degrees) which looks about right.
Const EARTH_RADIUS = 6371000 ' radius of earth in meters
Dim GeneralizeAngle As Double = RadtoDeg(Math.Asin(100 / EARTH_RADIUS))
Dim polyGeneralized As Polygon = poly.Generalize(GeneralizeAngle, False) ' reduce it in size
The generalization looks very aggressive. For scale, the island is 500m in length from top to bottom.
Can someone confirm that Generalize can produce invalid polygons, and explain why Simplify does nothing, and what it should do?