- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 python 脚本中使用 Shapely 来确定 LinearRings 之间的交集和二维多边形之间的对称差。我遇到了我认为的容忍问题,并且我在 Shapely 引用中找不到有关此事的任何信息。我现在将介绍迄今为止我所做的事情,以尝试确定正在发生的事情。
from shapely.geometry import LinearRing, Polygon
ls_blue = LinearRing( [ [25.16,-88.42], [26.24,-87.34], [26.0,-88.42] ] )
ls_red = LinearRing( [ [24.04, -89.54], [27.32, -86.26], [26.0, -89] ] )
inter = ls_blue.intersection(ls_red)
-inter 显示感兴趣的段上没有线相交(下图中看到的几乎重叠的段,[25.16,-88.42],[26.24,-87.34])和所有预期结果
p_blue = Polygon( [ [25.16,-88.42], [26.24,-87.34], [26.0,-88.42] ] )
p_red = Polygon( [ [ [24.04, -89.54], [27.32, -86.26], [26.0, -89] ] ] )
p_xor = p_blue.symmetric_difference(p_red)
-感兴趣的段(下图中看到的几乎重叠的段,[25.16,-88.42],[26.24,-87.34])包含在 p_xor 多边形之一中,并且所有结果都是预期的
请注意,LinearRing 仅是多边形的边界。
示例 LinearRings/Polygons 的图表:/image/jcnFa.jpg
在这种情况下,对称差异多边形和交点将按预期计算。
但是,这个示例实际上是一些较大点系列的子集。在这些较大的点系列中,异或多边形和线的交点不会按预期计算。
两点系列如下:
c_upper = Polygon([[ -38.68 , -116.82 ], [ -37.6 , -116.79 ], [ 45.72 , -116.79 ], [ 45.96 , -116.59 ], [ 46.26 , -115.51 ], [ 46.26 , -74.39 ], [ 45.75 , -73.31 ], [ 45.72 , -73.27 ], [ 44.53 , -74.39 ], [ 43.55 , -75.26 ], [ 42.47 , -76.14 ], [ 41.39 , -76.59 ], [ 40.27 , -77.64 ], [ 39.22 , -78.51 ], [ 37.06 , -79.77 ], [ 35.98 , -80.67 ], [ 33.81 , -81.93 ], [ 32.73 , -82.79 ], [ 31.65 , -83.2 ], [ 29.49 , -85.0 ], [ 28.4 , -85.62 ], [ 27.32 , -86.26 ], [ 24.04 , -89.54 ], [ 23.03 , -90.62 ], [ 22.6 , -91.7 ], [ 21.76 , -92.78 ], [ 20.86 , -93.87 ], [ 20.67 , -94.95 ], [ 19.71 , -96.03 ], [ 19.52 , -97.11 ], [ 18.67 , -98.16 ], [ 18.63 , -98.19 ], [ 18.32 , -99.28 ], [ 17.49 , -100.36 ], [ 17.01 , -101.44 ], [ 16.5 , -102.28 ], [ 16.34 , -102.52 ], [ 15.51 , -103.6 ], [ 15.16 , -104.69 ], [ 14.34 , -105.67 ], [ 14.24 , -105.77 ], [ 13.97 , -106.85 ], [ 13.25 , -107.72 ], [ 13.1 , -107.93 ], [ 12.14 , -109.01 ], [ 11.5 , -110.1 ], [ 11.09 , -110.57 ], [ 10.43 , -111.18 ], [ 8.93 , -112.29 ], [ 7.84 , -112.86 ], [ 6.82 , -113.34 ], [ 6.76 , -113.38 ], [ 5.68 , -113.58 ], [ 4.6 , -113.67 ], [ 3.52 , -113.38 ], [ 2.43 , -112.97 ], [ 1.35 , -112.36 ], [ 1.24 , -112.26 ], [ 0.27 , -111.55 ], [ -0.32 , -111.18 ], [ -0.81 , -110.81 ], [ -1.89 , -109.66 ], [ -2.43 , -109.01 ], [ -3.01 , -107.93 ], [ -4.92 , -105.77 ], [ -5.74 , -104.69 ], [ -6.19 , -103.6 ], [ -7.09 , -102.52 ], [ -7.91 , -101.44 ], [ -8.35 , -100.36 ], [ -9.26 , -99.28 ], [ -9.92 , -98.19 ], [ -10.52 , -97.11 ], [ -11.54 , -96.03 ], [ -12.44 , -94.95 ], [ -13.22 , -93.87 ], [ -13.83 , -92.78 ], [ -14.88 , -91.74 ], [ -15.96 , -91.03 ], [ -17.04 , -90.29 ], [ -17.94 , -89.54 ], [ -19.21 , -88.42 ], [ -20.99 , -87.37 ], [ -21.37 , -87.16 ], [ -22.45 , -86.26 ], [ -23.53 , -85.81 ], [ -24.62 , -85.06 ], [ -25.7 , -84.1 ], [ -26.78 , -83.78 ], [ -27.74 , -83.05 ], [ -28.94 , -82.0 ], [ -30.03 , -81.69 ], [ -31.11 , -80.79 ], [ -32.19 , -79.83 ], [ -33.27 , -79.64 ], [ -34.35 , -78.68 ], [ -35.44 , -77.79 ], [ -36.52 , -77.37 ], [ -37.6 , -76.46 ], [ -38.68 , -75.51 ], [ -39.76 , -75.06 ], [ -40.08 , -75.47 ], [ -40.31 , -76.55 ], [ -40.31 , -77.64 ], [ -40.29 , -78.72 ], [ -40.29 , -114.42 ], [ -40.31 , -115.51 ], [ -39.76 , -116.56 ], [ -39.72 , -116.59 ]])
c_lower = Polygon([[ -38.68 , -116.82 ], [ -37.6 , -116.79 ], [ 45.72 , -116.79 ], [ 45.96 , -116.59 ], [ 46.26 , -115.51 ], [ 46.26 , -73.31 ], [ 45.72 , -72.26 ], [ 44.63 , -73.27 ], [ 43.52 , -74.39 ], [ 42.47 , -75.38 ], [ 41.39 , -76.34 ], [ 40.31 , -77.22 ], [ 39.22 , -77.67 ], [ 38.11 , -78.72 ], [ 37.06 , -79.59 ], [ 36.68 , -79.8 ], [ 34.9 , -80.85 ], [ 33.81 , -81.81 ], [ 32.73 , -82.63 ], [ 31.65 , -83.08 ], [ 30.46 , -84.13 ], [ 29.49 , -84.94 ], [ 29.04 , -85.21 ], [ 27.32 , -86.33 ], [ 26.24 , -87.34 ], [ 25.16 , -88.42 ], [ 24.11 , -89.54 ], [ 23.66 , -90.62 ], [ 22.9 , -91.7 ], [ 21.95 , -92.78 ], [ 21.75 , -93.87 ], [ 20.8 , -94.95 ], [ 20.61 , -96.03 ], [ 19.71 , -97.11 ], [ 19.42 , -98.19 ], [ 18.57 , -99.28 ], [ 18.15 , -100.36 ], [ 17.49 , -101.44 ], [ 16.66 , -102.52 ], [ 16.29 , -103.6 ], [ 15.39 , -104.69 ], [ 15.13 , -105.77 ], [ 14.24 , -106.85 ], [ 13.29 , -107.93 ], [ 12.86 , -109.01 ], [ 11.95 , -110.1 ], [ 11.09 , -111.01 ], [ 10.01 , -111.97 ], [ 8.93 , -112.55 ], [ 7.84 , -113.17 ], [ 6.76 , -113.31 ], [ 5.68 , -113.57 ], [ 4.6 , -113.57 ], [ 3.52 , -113.25 ], [ 2.43 , -112.9 ], [ 0.27 , -111.93 ], [ -0.63 , -111.18 ], [ -0.81 , -111.01 ], [ -2.81 , -109.01 ], [ -2.98 , -108.83 ], [ -3.73 , -107.93 ], [ -4.47 , -106.85 ], [ -5.14 , -105.73 ], [ -6.06 , -104.69 ], [ -6.95 , -103.6 ], [ -7.27 , -102.52 ], [ -8.29 , -101.44 ], [ -9.12 , -100.36 ], [ -9.44 , -99.28 ], [ -10.4 , -98.19 ], [ -11.22 , -97.11 ], [ -11.6 , -96.03 ], [ -12.62 , -94.95 ], [ -13.8 , -93.6 ], [ -14.39 , -92.78 ], [ -14.88 , -92.17 ], [ -15.32 , -91.7 ], [ -15.96 , -91.1 ], [ -16.54 , -90.62 ], [ -18.12 , -89.38 ], [ -19.17 , -88.46 ], [ -20.29 , -87.41 ], [ -21.37 , -87.1 ], [ -22.45 , -86.2 ], [ -23.53 , -85.24 ], [ -24.62 , -84.94 ], [ -25.59 , -84.13 ], [ -26.78 , -83.08 ], [ -27.86 , -82.82 ], [ -30.03 , -80.92 ], [ -30.13 , -80.88 ], [ -31.11 , -80.61 ], [ -32.08 , -79.8 ], [ -33.27 , -78.69 ], [ -34.35 , -78.3 ], [ -35.44 , -77.48 ], [ -36.52 , -76.52 ], [ -37.6 , -75.51 ], [ -38.68 , -74.96 ], [ -39.39 , -74.39 ], [ -39.76 , -74.12 ], [ -40.01 , -74.39 ], [ -40.31 , -75.47 ], [ -40.29 , -77.64 ], [ -40.29 , -114.42 ], [ -40.31 , -115.51 ], [ -39.76 , -116.56 ], [ -39.72 , -116.59 ]])
当按照与之前相同的方式进行计算时,感兴趣的线段 ([25.16,-88.42], [26.24,-87.34]) 不包含在 XOR 多边形中或作为线交点,尽管其两个端点是作为点的交集的一部分。
我的算法依赖于这样的想法:不相交的线段将成为 symmetry_difference 函数生成的多边形的一部分,因此显然上述情况会产生不良结果,我发现这相当令人不安。
我的问题是:是什么导致了案例之间的交集和对称差分运算之间的差异?
PS:如果出于可视化目的需要更多图像,请告诉我,我将创建它们。
最佳答案
这是一个精度问题,因为红色节点不是蓝色节点的一部分。对一条线上的点进行插值在计算上并不精确。您可以通过将一个几何图形捕捉到另一个几何图形来解决此问题,但要在精度误差范围内。请参阅shapely's snap
function来做到这一点。
from shapely.ops import snap
print(ls_blue.intersection(snap(ls_red, ls_blue, 1e-8)))
# LINESTRING (25.16 -88.42, 26.24 -87.34)
# or try
p_blue.symmetric_difference(snap(p_red, p_blue, 1e-8))
关于python - 为什么 Shapely.Geometry 库的 symmetry_difference 和交集操作明显不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31928676/
Java 库和 android 库有什么区别,各自有什么优点/缺点? 最佳答案 您可以在 Android 应用程序中包含标准 Java .jar 文件库。它们在 .apk 构建时被翻译成 Dalvik
所以,我现在的代码就像从 Java 层加载库(比如 liba.so),并在内部 liba.so 加载 libb.so。因此,如果我必须将所有库打包到 APK 中并将其安装在没有 root 访问权限的设
我想在我的系统中设置 LEDA 库。 我已经从以下链接下载了 LEDA 库 http://www.algorithmic-solutions.info/free/d5.php Instruct
我想用 autoconf 创建一个共享库。但是,我希望共享库具有“.so”扩展名,而不是以“lib”开头。基本上,我想制作一个加载 dlopen 的插件。 .是否有捷径可寻? 当我尝试使用 autoc
我需要在 Apps 脚本应用程序上修改 PDF。为此,我想使用 JS 库:PDF-LIB 我的代码: eval(UrlFetchApp.fetch("https://unpkg.com/pdf-lib
我正在构建一个使用以下 Boost header 的程序(我使用的是 Microsoft Visual C++ 10), #include #include #include #include
当我通过 cygwin 在 hadoop 上运行此命令时: $bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 我
我已经通过 vcpgk 成功安装了一个 C++ 库,名为:lmdb:x64-windows 我还安装了lmdb通过 Cabal 安装的 Haskell 绑定(bind)包 在尝试测试 lmdb 包时:
我该如何解决这个问题? 我刚刚将 javacv jar 文件复制到我的项目 Lib 文件夹下,但出现了这个错误! 我可以找到这个thread来自谷歌,但不幸的是,由于我国的谷歌限制政策,该页面无法打开
我有一个 Android 库项目 FooLib。 FooLib 引用 Android Context 之类的东西,但不需要任何资源文件(res/ 中的东西)所以我目前将其打包为供我的应用使用的 JAR
我正在开发一个 Android 应用程序(使用 Android Studio),它能够通过手势识别算法了解您正在进行的 Activity 。对于我使用 nickgillian ithub 帐户上可用的
关于从 .NET Framework 项目中引用 .NET Standard 类库的问题有很多类似的问题,其中 netstandard 库中的 NuGet 包依赖项不会流向 netframework
我已经从互联网上下载了 jna-4.2.2.jar,现在想将这个 jar 导入到我的项目中。但是当我试图将这个 jar 导入我的项目时,出现以下错误。 [2016-06-20 09:35:01 - F
我正在尝试通过编译在 Mac 上安装 rsync 3.2.3。但是,我想安装所有功能。为此,它需要一些库,此处 ( https://download.samba.org/pub/rsync/INSTA
进入 Web 开发有点困难。过去 5 年我一直致力于 winforms 工作。所以我正在努力从一种切换到另一种。前段时间,我使用过 JavaScript,但现在还没有大量的 JavaScript 库
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在寻找一个用Python编写的与logstash(ruby + java)类似的工具/库。 我的目标是: 从 syslog 中解析所有系统日志 解析应用程序特定日志(apache、django、m
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我花了几天时间试图寻找用于 JavaPOS 实现的 .jar 库,但我找不到任何可以工作的东西。我找到了很多像这样的文档:http://jpos.1045706.n5.nabble.com/file/
这个问题在这里已经有了答案: Merge multiple .so shared libraries (2 个答案) 关闭 9 年前。 我有我在代码中使用的第三方库的源代码和对象。该库附带有关如何使
我是一名优秀的程序员,十分优秀!