我想也许您的问题是理论上如何以最快的方式做到这一点。但是,如果您想快速执行此 *** 作,则应真正使用以C / C ++编写的内容。
我已经习惯了Shapely,所以我将提供一个如何使用此库的示例。有许多用于python的几何库。我将在此答案的结尾列出它们。
from shapely.geometry import LineStringfrom shapely.geometry import Pointp = Point(5,5)c = p.buffer(3).boundaryl = LineString([(0,0), (10, 10)])i = c.intersection(l)print i.geoms[0].coords[0](2.8786796564403576, 2.8786796564403576)print i.geoms[1].coords[0](7.121320343559642, 7.121320343559642)
在Shapely中有点反直觉的是,圆是具有缓冲区的点的边界。这就是为什么我这样做
p.buffer(3).boundry
交集
i也是一个几何形状的列表,在这种情况下它们都是点,这就是为什么我必须从中获得它们的原因
i.geoms[]
还有另一个Stackoverflow问题,针对那些感兴趣的人来介绍有关这些库的详细信息。
- 象征
- CGAL Python绑定
- 欧几里德
- PythonOCC
- 几何简单
编辑,因为评论:
Shapely基于GEOS(trac.osgeo.org/geos),它是用C
++构建的,并且比您用python本地编写的任何东西都要快得多。SymPy似乎基于mpmath(mpmath.org),后者也似乎是python,但似乎其中集成了许多非常复杂的数学。实现自己可能需要大量工作,并且可能不会像GEOS
C ++实现那样快。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)