Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在多边形中使用shapely?_Python_Matlab_Matplotlib_Shapely - Fatal编程技术网

Python 在多边形中使用shapely?

Python 在多边形中使用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)]

我正在运行以下脚本,我相信对于多边形中的点,该脚本应该返回TRUE,但返回FALSE

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