我有一个案例,该案例基于在一条线上投影一个点,然后在其上分开该线。我的用例稍微复杂一点,但是我的问题可以用以下代码重现:
from shapely import *
line1 = LineString([(1,1.2), (2,2), (3, 2.), (4,1.2)])
pt = Point(2.5, 1.2)
pr = line1.interpolate(line1.project(pt))
根据构造,“ pr”也应位于第1行及其交点上:
line1.contains(pr)
line1.intersects(LineString([pt, pr]))
打印两次“ True”。但是更改输入坐标会稍微中断工作流程:
from shapely import *
line1 = LineString([(1,1.2), (2,2), (3, 2.3), (4,1.2)])
pt = Point(2.5, 1.2)
pr = line1.interpolate(line1.project(pt))
line1.contains(pr)
line1.intersects(LineString([pt, pr]))
打印“ False”。
我了解这背后的浮动精度问题,但这是否意味着我 永远无法 测试在线上的点?当我基于点列表构造一条线时,是否 可以确定 至少所有“构造”点都在该线上?
从根本上讲,需要一个精确的模型,并且有各种计划在某个时候将其实现到GEOS中(不要屏住呼吸,因为已经讨论了好几年了)。
否则,这些选项可以是基于距离的测试(推荐),也可以是稍作调整的更昂贵的基于缓冲区的技术(请参阅机器epsilon):
from shapely.geometry import LineString, Point
line1 = LineString([(1, 1.2), (2, 2), (3, 2.3), (4, 1.2)])
pt = Point(2.5, 1.2)
pr = line1.interpolate(line1.project(pt))
# Distance based
print(line1.distance(pr) == 0.0) # True
# Buffer based
EPS = 1.2e-16
print(line1.buffer(EPS).contains(pr)) # True
print(line1.buffer(EPS).intersects(LineString([pt, pr]))) # True
您还可以使用or
运算符链接便宜和昂贵的测试,例如:
print(line1.contains(pr) or line1.buffer(EPS).contains(pr))
如果第一个返回,则仅运行第二个和更昂贵的测试False
。
我正在使用开源项目(axil),该项目在java应用程序中实现了一个脚本引擎,我在尝试利用BigDecimal的舍入时遇到了一个主要的绊脚石。似乎BigDecimal正在将我的输入转换为科学符号,然后将我传递的精度应用于数字的SN表示的系数,而不是其非SN表示。例如: 生成的结果。这给我带来了两个问题。首先,我期待()的结果,因此获取会抛出任何涉及结果的数学运算。其次,我不期望,也找不到一种方法来
问题内容: 在我的课程中,我被告知: 连续值大约在内存中表示,因此使用浮点数进行计算会产生舍入误差。这些是位模式的微小差异。因此,如果和为浮点,则测试是不安全的。 指的是Java。 这是真的?我已经将比较语句与s和s一起使用,并且从未遇到过舍入问题。我从来没有读过类似的教科书。虚拟机肯定占了这一切吗? 问题答案: 是真的。 这是如何在内存中以有限数量的位表示浮点值的固有限制。 例如,该程序显示“
问题内容: 作为节点程序员。我习惯于使用“ nodebacks”来处理代码中的错误: 编写该函数时,我可以执行以下操作: 我如何用promises处理这种错误? 问题答案: 经验法则 每当您对如何使用Promise有所疑问时,请考虑一下同步版本。 至少对我来说,这比第一个参数有时是的回调要干净得多。 promises方式几乎总是与问题的同步版本非常相似: 使用回调函数时,myFn看起来像什么: 使
我有以下Kafka配置类: 以及以下KafkaListener: 我想使用<code>SeekToCurrentErrorHandler</code>进行错误处理,我想使用类似于这里的特定功能,但目前我正在使用<code>springBootVersion=2.0.4。你能帮我设置依赖项和配置以处理Kafka消费者中的错误吗? 问候!
本文向大家介绍如何处理HTML5 Web Worker中的错误?,包括了如何处理HTML5 Web Worker中的错误?的使用技巧和注意事项,需要的朋友参考一下 下面显示了Web Worker JavaScript文件中错误处理功能的示例,该功能将错误记录到控制台。 示例
由于有很多方法,如onErrorReturn、onErrorResume等,所以哪一个是正确的方法,以处理mono和flux的Reactive Spring webflux中的错误?
问题内容: 我是Python的初学者,我有一个问题。 为什么用奇数整数部分四舍五入像5.5、7.5((任何).5)这样的数字正确工作(规则5/4),但是用同一个函数将非奇数整数部分像(任何).5进行四舍五入只返回整数部分?(但是,如果我们在该十进制数上加上一个像0.000000001这样的小数字,它将正常工作) 我的意思是下一个: 返回10,这是正确的。但 返回8,这是不正确的。和 返回9。 为什
问题内容: 我遇到了(我怀疑是)舍入错误。 我有一个字符串,我正尝试将其转换为双精度型。我已经可以使用函数将其拆分,并且可以很好地捕获基数和指数值。但是,一旦我尝试将它们适当地相乘,就会得到以下结果:。 这是我的相关代码: 那么,如何避免舍入错误?(我有多种方法可以解决此问题,但如果有可能,那么我想知道如何解决该问题) 谢谢。 问题答案: 您不需要拆分它,可以很好地处理这些数字。 看到?有用!