The problem with Aves Island (Venezuela)

04-06-2024 06:51 AM
Occasional Contributor

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.

Aves no Generalize.png

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

aves Generalized.png

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?

0 Kudos
0 Replies