Python 在多边形中使用shapely?
我正在运行以下脚本,我相信对于多边形中的点,该脚本应该返回TRUE,但返回FALSEPython 在多边形中使用shapely?,python,matlab,matplotlib,shapely,Python,Matlab,Matplotlib,Shapely,我正在运行以下脚本,我相信对于多边形中的点,该脚本应该返回TRUE,但返回FALSE from shapely import geometry polygon = [(-1571236.8349707182, 8989180.222117377), (1599362.9654156454, 8924317.946336618), (-1653179.0745812152, 8922145.163675062), (-1626237.6614402141, 8986445.107619021)]
from shapely import geometry
polygon = [(-1571236.8349707182, 8989180.222117377), (1599362.9654156454, 8924317.946336618), (-1653179.0745812152, 8922145.163675062), (-1626237.6614402141, 8986445.107619021)]
Point_X = -1627875.474
Point_Y = 8955472.968
line = geometry.LineString(polygon)
point = geometry.Point(Point_X, Point_Y)
print(line.contains(point))
当我在Matlab中绘制多边形和点时,我得到以下形状
知道shapely脚本返回FALSE的原因吗?您要测试的是您的点是否位于对象
LineString
上
如果要测试点是否在多边形中,必须使用多边形类的contains
方法
from shapely import geometry
polygon = [(-1571236.8349707182, 8989180.222117377), (1599362.9654156454, 8924317.946336618), (-1653179.0745812152, 8922145.163675062), (-1626237.6614402141, 8986445.107619021)]
Point_X = -1627875.474
Point_Y = 8955472.968
line = geometry.LineString(polygon)
point = geometry.Point(Point_X, Point_Y)
polygon = geometry.Polygon(line)
print(polygon.contains(point))
输出
请参见这可能是因为您的形状没有闭合。它不知道它是凸的还是凹的,所以它不能把你给它的东西做成一个形状。你可能需要确保它在同一点开始和结束。我试过了——不幸的是,当我把起始点作为第五个坐标添加时,我得到了相同的答案(错误)。这很有效!非常感谢--我误解了LineString对象。
from shapely import geometry
polygon = [(-1571236.8349707182, 8989180.222117377), (1599362.9654156454, 8924317.946336618), (-1653179.0745812152, 8922145.163675062), (-1626237.6614402141, 8986445.107619021)]
Point_X = -1627875.474
Point_Y = 8955472.968
line = geometry.LineString(polygon)
point = geometry.Point(Point_X, Point_Y)
polygon = geometry.Polygon(line)
print(polygon.contains(point))
True