Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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_Point_Shapely - Fatal编程技术网

Python 确定Shapely点是否位于线串/多线串内

Python 确定Shapely点是否位于线串/多线串内,python,point,shapely,Python,Point,Shapely,我正在尝试使用Shapely的in函数对线串和点文件进行“空间连接”(仅供参考,点文件是使用线串上的插值函数生成的)。问题是-没有任何东西被退回 # this condition is never satisfied if point.within(line): # here I write stuff to a file 其中: point = POINT (-9763788.9782693591000000 5488878.3678984242000000) line = LINE

我正在尝试使用Shapely的
in
函数对线串和点文件进行“空间连接”(仅供参考,点文件是使用
线串上的
插值
函数生成的)。问题是-没有任何东西被退回

# this condition is never satisfied
if point.within(line):
    # here I write stuff to a file
其中:

point = POINT (-9763788.9782693591000000 5488878.3678984242000000)
line = LINESTRING (-9765787.998118492 5488940.974948905, -9748582.801636808 5488402.127570709)

我遗漏了什么?

在直线上查找点时存在浮点精度错误。改为使用具有适当阈值的距离

from shapely.geometry import Point, LineString

line = LineString([(-9765787.9981184918, 5488940.9749489054), (-9748582.8016368076, 5488402.1275707092)])
point = Point(-9763788.9782693591, 5488878.3678984242)

line.within(point)  # False
line.distance(point)  # 7.765244949417793e-11
line.distance(point) < 1e-8  # True
来自shapely.geometry导入点,LineString
line=线串((-9765787.9981184918,5488940.9749489054),(-9748582.8016368076,5488402.1275707092)])
点=点(-9763788.97826935915488878.3678984242)
线内(点)#假
直线距离(点)#7.765244949417793e-11
直线距离(点)<1e-8#真

在直线上查找点时存在浮点精度错误。改为使用具有适当阈值的距离

from shapely.geometry import Point, LineString

line = LineString([(-9765787.9981184918, 5488940.9749489054), (-9748582.8016368076, 5488402.1275707092)])
point = Point(-9763788.9782693591, 5488878.3678984242)

line.within(point)  # False
line.distance(point)  # 7.765244949417793e-11
line.distance(point) < 1e-8  # True
来自shapely.geometry导入点,LineString
line=线串((-9765787.9981184918,5488940.9749489054),(-9748582.8016368076,5488402.1275707092)])
点=点(-9763788.97826935915488878.3678984242)
线内(点)#假
直线距离(点)#7.765244949417793e-11
直线距离(点)<1e-8#真

Hi。我们如何在此基础上选择适当的阈值?我面临着同样的问题,只有当我选择1e-4时,它才对我有效。我们应该在什么基础上作出选择?我使用的是wgs84 lat long POINTS。我使用@ds_user时,距离(点)返回真值,这实际上取决于您是如何获得数据的,或者它代表的分辨率(例如,请参阅)。您需要检查GIS中的未投影数据,以了解您的情况。实际上,我正在尝试查找地址的道路名称。我有两个数据集,一个带有地址的地理点,另一个带有道路的线字符串。我需要根据最接近我的地址点的线字符串获取道路名称。我有一个关于GIS堆栈交换的问题,不应该是这样
shapely
应该自己处理精度错误,而不是让用户担心这一点。python被认为是一种高级语言,它从用户那里抽象出机器精度。此外,这使得inthein和contain方法对于
shapely
Hi中的线字符串和点毫无用处。我们如何在此基础上选择适当的阈值?我面临着同样的问题,只有当我选择1e-4时,它才对我有效。我们应该在什么基础上作出选择?我使用的是wgs84 lat long POINTS。我使用@ds_user时,距离(点)返回真值,这实际上取决于您是如何获得数据的,或者它代表的分辨率(例如,请参阅)。您需要检查GIS中的未投影数据,以了解您的情况。实际上,我正在尝试查找地址的道路名称。我有两个数据集,一个带有地址的地理点,另一个带有道路的线字符串。我需要根据最接近我的地址点的线字符串获取道路名称。我有一个关于GIS堆栈交换的问题,不应该是这样
shapely
应该自己处理精度错误,而不是让用户担心这一点。python被认为是一种高级语言,它从用户那里抽象出机器精度。此外,这使得inthein和contain方法对于
shapely