Skip to content

geometry.Poly{}.Valid() does check if the polygon is valid #25

@nico-bock

Description

@nico-bock

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)

}

Screenshot 2023-08-23 at 11 33 33

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions