问题标签 [shapely]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 从现有曲线创建新曲线 - Shapely
我编写了一个 Python 脚本来解析 GPX 文件中的坐标。坐标存储为元组列表:(float lat, float long)
. 我使用 Shapely 的LineString
函数创建了一条可以用于每个 GPX 文件的曲线。
在解析了几个 GPX 文件后,我有一些相交的曲线,我想根据这些相交的曲线计算一些信息。为简单起见,假设我有 3 行(称它们为line1, line2, line3
)。在这个特定的场景中,相交line1
和line2
但line3
不相交。或者更直观:line2
line3
我想做的是从这些现有曲线中创建一条新曲线。这条曲线的起点和终点将是交叉点(*
在视觉表示中用 表示),曲线的中点将是line1
这些交叉点之间的落点。
使用 Shapely 的方法获得相交点没有问题intersection()
,但我不知道如何抓住line1
这些相交点之间的那个点。
我考虑过确定line1
是向东/向西还是向南/向北。基于该结果,我可以将相交点的纬度或经度与线中的每个点(line1
在这种情况下)进行比较,一旦我找到一个在相交点的纬度或经度内的点,我就可以开始一条新线那些以相交点为界的坐标。
然而,这似乎是一项疯狂的工作。我觉得必须有一个更简单的解决方案。特别是因为我对 Shapely 有非常基本的了解。任何帮助将不胜感激。
python - 使用 python 验证 shapefile 是否为 shapefile (fiona, ogr)
在 fiona 1.5.0 上(我很困惑为什么各种文件(例如 .dbf 和 .gdb)没有打印我的“不是 Shapefile!”(这是我在任何时候想要的文件不是 .shp)警告在退出之前。
对于 gdb,我收到 fiona 不支持驱动程序的错误(因为 ogr 确实让我感到惊讶)-并且没有打印语句:
对于.dbf,我实际上得到了这个:
python - 如何优化几何运算的性能
我正在寻找一种优化几何操作性能的方法。我的目标是计算一系列多边形(21,562)中有多少点(205,779)。最好使用 python 和 R 以及 GIS 软件,如 ArcGIS、QGIS。
这是我搜索和编写的解决方案。
使用 ArcGIS:其中一个示例在http://support.esri.com/cn/knowledgebase/techarticles/detail/30779 -> 虽然我没有尝试过,但在空间连接中总是需要大量时间,基于我以前的经历。
使用 GDAL、OGR:这是一个示例: http: //geoexamples.blogspot.tw/2012/06/density-maps-using-gdalogr-python.html -> 每个多边形需要 5 到 9 秒。
使用带有循环的 Shapely 准备的几何操作:这是我的示例,每个多边形需要 2.7 到 3.0 秒。(注意点是列表中的点对象)
/li>使用带有过滤器的 Shapely Prepared geometry 操作:这是我的示例,每个多边形大约需要 3.3 到 3.9 秒。(注意点是 MultiPoint 对象)
/li>
尽管准备好的几何操作确实提高了性能,但处理大量多边形仍然很耗时。有什么建议吗?谢谢!
python - 从 shapely.geometry.polygon 导入多边形时出错
在我的 Anaconda 2.2 64bit 和 Python 3.4.3 中,以下行运行良好:
但是下面一行:
返回以下错误:
我错过了什么?
编辑
我尝试使用 iNotebook、idle.exe 和 Eclipse。他们都使用 Anaconda(我计算机上唯一的 Python 安装)并且都显示相同的错误。
如果我输入from shapely.geometry import Polygon
Eclipse,然后单击Polygon
,然后按F3
,Eclipse 能够打开模块C:\Anaconda3\Lib\site-packages\shapely\geometry\polygon.py
。所以 Eclipse 能够找到它,但是执行失败。
编辑 2
我刚刚在另一台具有类似配置的计算机上尝试了相同的导入,它可以工作。两台计算机之间的“唯一”区别是一台装有 Windows 7(它可以工作),而一台装有 Windows 8(它不能)。
我按照相同的旧清单在两台计算机上安装了 Anaconda 和一些软件包。装有 Windows 8 的计算机可以从 Eclipse 中看到该包,但无法导入它。
python - 在python中查找级联多边形的点
我正在尝试找到靠近的点并删除 Python 中某些形状数据(坐标)的重复点。我将坐标节点命名为 1,2,3.. 等等,我使用 shapely 包并在节点点 1,2,3.. 周围创建多边形
多边形 = [Point([nodes[i]).buffer(1) for i in range(len(nodes))]
并找到我使用的级联
级联 = cascaded_union(多边形)
返回的级联是一个多面体并列出了许多坐标,我想确切地知道我的节点中的哪些点是级联的(基于缓冲区值 1),以便我可以用新节点替换它们。我怎么知道这个??
python - LineString 的长度(以英里为单位)
我将运行数据表示为 Shapely LineStrings,其中 LineString 中的每个点都是一个坐标。我试图以英里为单位计算 LineString 的长度。我知道 LineString 有一个length
方法,但是我不知道结果是什么单位。
例如,我有一次跑步,我知道是 0.13 英里,但是当我打印出来时,runs[0].length
我得到 0.00198245721108。我认为这是因为 LineString 在笛卡尔坐标系中,但我并不完全确定。
python - Ubuntu,Anaconda:无法导入 python shapely 包
与 MAC OS X 相关的 Shapely Import 问题
我使用sudo apt-get install python-shapely
.
我正在Python 2.7.8 |Anaconda 2.1.0 (64-bit)|
使用ubuntu 14.04 LTS (64 bit)
成功安装后,当我尝试从中导入它时ipython
,会出现导入错误。ImportError: No module named shapely
我该如何解决?
python - Polygon.contains 和 Polygon.within 有什么区别?
文档字符串说:
Polygon.contains
如果几何包含另一个,则返回 True,否则返回 False
Polygon.within
如果几何在另一个内,则返回 True,否则返回 False
它们有何不同?
python - Python - 从与多边形相交的 MultiLineString shapefile 中包含的 Line 获取属性
我有 2 个 shapefile,1 个包含构成道路网络的许多线路,另一个包含许多 GPS 点。
到目前为止,我已经成功地打开了两个 shapefile 并使用 Shapely 和 Fiona 进行了交集(),使用此处找到的代码 - https://gis.stackexchange.com/a/128210/52590
这是我获取交叉点的代码的副本:
这就是“intersecciones”打印时的样子:
所以这意味着线条 shapefile 和多边形 shapefile 的第一个多边形之间有 3 个交点。
我需要的是从与多边形相交的行 shapefile 中的每一行获取两个属性(“Nombre”和“Sentido”),除了它们相交的确切点之外,这样我就可以得到距中心的距离多边形到相交点之后。
所以我的问题是,是否有任何方法可以使用 Shapely 或任何其他 Python 库来获取这些属性。另外,遍历每个多边形并保存数据的最佳方法是什么?我在考虑可能包含每个多边形的字典,其中包含相交线和距离的属性。最后,有没有更有效的方法来找到交叉点?处理一个多边形大约需要 1 分钟,将来我可能需要它更快。
如果我缺少任何信息,请告诉我,以便我可以编辑问题。
非常感谢您,费利佩。
python - 如何从匀称的点列表中创建匀称的多边形?
我想从匀称的点创建一个多边形。
给我一个类型错误TypeError: object of type 'Point' has no len()
如何Polygon
从匀称的Point
物体创建一个?