5 votos

¿GDAL Intersects() no funciona como debería?

Haciendo un análisis topológico en GDAL/OGR devuelve un resultado inesperado. Cuando me puse a investigar, parece posible que el método Intersects() está mal implementado. Específicamente, los puntos a lo largo de un polígono del límite devuelve False, cuando debería devolver True:

from osgeo import ogr

poly = ogr.Geometry(ogr.wkbPolygon)
ring = ogr.Geometry(ogr.wkbLinearRing)
ring.AddPoint(0, 0)
ring.AddPoint(5, 5)
ring.AddPoint(10, 0)
ring.CloseRings()
poly.AddGeometry(ring)

point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(10, 0)

poly.Intersects(point)
>>> False
poly.Disjoint(point)
>>> False

No sólo el punto correctamente cruzan el polígono, se Cruza y la Desunión debe ser contrario a la subconjuntos, y nunca devuelven el mismo valor. Por otra parte, la Intersección() método, que sólo debe trabajar cuando geometrías se cruzan, funciona normalmente:

inter = poly.Intersection(point)
inter.ExportToWkt()
>>> 'POINT (10 0 0)'

Me gustaría saber si tal vez yo no soy entender esto correctamente, o si mi GDAL compilación es problemático, o si es GDAL sí que tiene un error.

Info: GDAL 2.2.1 de 64 bits, Tamas Szekeres' VS2008 versión.

1voto

Tj Brown Puntos 1

Esto se ha solucionado por GDAL billete https://trac.osgeo.org/gdal/ticket/7091

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X