geojson
geojson copied to clipboard
geometry.Poly{}.Valid() does check if the polygon is valid
Description
geometry.Poly{}.Valid() check only if the Exterior and the holes are valid Series, not if they are a valid polygon.
Therefore Polygons with missing Points, intersecting edges etc. are not detected.
Is this intended or just not necessary till now?
Exmaple:
package main
import (
"github.com/tidwall/geojson"
"github.com/tidwall/geojson/geometry"
)
func main() {
polygon := geometry.NewPoly([]geometry.Point{
{
8.88242492198438,
47.85972404073712,
},
{
6.003023836249525,
47.467582223811604,
},
{
10.561998072355692,
45.71873204889732,
},
{
6.738413586888328,
48.35187757503576,
},
{
8.88242492198438,
47.85972404073712,
},
}, nil, nil)
print(polygon.Valid()) //Expected to be false
geojsonPolygon := geojson.NewPolygon(polygon)
print(geojsonPolygon.Valid()) //Expected to be false
geojsonPolygonFeature := geojson.NewFeature(geojsonPolygon, "")
print(geojsonPolygonFeature.Valid()) //Expected to be False
geojsonPolygonFeatureJson := geojsonPolygonFeature.JSON()
print(geojsonPolygonFeatureJson)
}
A more robust Valid operation would be nice, but it's not something I've gotten around to.
If you want to, I could make a PR for this.