2016-10-17 4 views
0

Ich versuche einige Polygone zu validieren, die in Ebenen mit is_valid sind, aber ich bekomme Too few points in geometry component at or near point für Polygone, wo das z nicht konstant ist.shapely is_valid für Polygone in 3D

Gibt es eine Möglichkeit, diese anderen Polygone zu validieren?

Hier ein Beispiel:

from shapely.geometry import Polygon 


poly1 = Polygon([(0,0), (1,1), (1,0)]) 
print(poly1.is_valid) 
# True 

# z=1 
poly2 = Polygon([(0,0,1), (1,1,1), (1,0,1)]) 
print(poly2.is_valid) 
# True 

# x=1 
poly3 = Polygon([(1,0,0), (1,1,1), (1,1,0)]) 
print(poly3.is_valid) 
# Too few points in geometry component at or near point 1 0 0 
# False 

Antwort

1

Das Problem ist, dass in der Tat shapely die z-Koordinate ignoriert. So weit, wie formschön sagen kann, bauen Sie ein Polygon mit den Punkten [(1,0),(1,1), (1,1)], die nicht genug sind, um ein Polygon zu bauen.

Weitere Informationen finden Sie in dieser SO-Frage: python-polygon-does-not-close-shapely.

IMHO, sollte formschöne dreidimensionale Koordinaten nicht zulassen, weil es diese Art von Verwirrungen bringt.