问题标签 [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.

0 投票
1 回答
883 浏览

python - 从现有曲线创建新曲线 - Shapely

我编写了一个 Python 脚本来解析 GPX 文件中的坐标。坐标存储为元组列表:(float lat, float long). 我使用 Shapely 的LineString函数创建了一条可以用于每个 GPX 文件的曲线。

在解析了几个 GPX 文件后,我有一些相交的曲线,我想根据这些相交的曲线计算一些信息。为简单起见,假设我有 3 行(称它们为line1, line2, line3)。在这个特定的场景中,相交line1line2line3不相交。或者更直观:line2line3

我想做的是从这些现有曲线中创建一条新曲线。这条曲线的起点和终点将是交叉点(*在视觉表示中用 表示),曲线的中点将是line1这些交叉点之间的落点。

使用 Shapely 的方法获得相交点没有问题intersection(),但我不知道如何抓住line1这些相交点之间的那个点。

我考虑过确定line1是向东/向西还是向南/向北。基于该结果,我可以将相交点的纬度或经度与线中的每个点(line1在这种情况下)进行比较,一旦我找到一个在相交点的纬度或经度内的点,我就可以开始一条新线那些以相交点为界的坐标。

然而,这似乎是一项疯狂的工作。我觉得必须有一个更简单的解决方案。特别是因为我对 Shapely 有非常基本的了解。任何帮助将不胜感激。

0 投票
2 回答
1645 浏览

python - 使用 python 验证 shapefile 是否为 shapefile (fiona, ogr)

在 fiona 1.5.0 上(我很困惑为什么各种文件(例如 .dbf 和 .gdb)没有打印我的“不是 Shapefile!”(这是我在任何时候想要的文件不是 .shp)警告在退出之前。

对于 gdb,我收到 fiona 不支持驱动程序的错误(因为 ogr 确实让我感到惊讶)-并且没有打印语句:

对于.dbf,我实际上得到了这个:

0 投票
1 回答
408 浏览

python - 如何优化几何运算的性能

我正在寻找一种优化几何操作性能的方法。我的目标是计算一系列多边形(21,562)中有多少点(205,779)。最好使用 python 和 R 以及 GIS 软件,如 ArcGIS、QGIS。

这是我搜索和编写的解决方案。

  1. 使用 ArcGIS:其中一个示例在http://support.esri.com/cn/knowledgebase/techarticles/detail/30779 -> 虽然我没有尝试过,但在空间连接中总是需要大量时间,基于我以前的经历。

  2. 使用 GDAL、OGR:这是一个示例: http: //geoexamples.blogspot.tw/2012/06/density-maps-using-gdalogr-python.html -> 每个多边形需要 5 到 9 秒。

  3. 使用带有循环的 Shapely 准备的几何操作:这是我的示例,每个多边形需要 2.7 到 3.0 秒。(注意点是列表中的点对象)

    /li>
  4. 使用带有过滤器的 Shapely Prepared geometry 操作:这是我的示例,每个多边形大约需要 3.3 到 3.9 秒。(注意点是 MultiPoint 对象)

    /li>

尽管准备好的几何操作确实提高了性能,但处理大量多边形仍然很耗时。有什么建议吗?谢谢!

0 投票
4 回答
26034 浏览

python - 从 shapely.geometry.polygon 导入多边形时出错

在我的 Anaconda 2.2 64bit 和 Python 3.4.3 中,以下行运行良好:

但是下面一行:

返回以下错误:

我错过了什么?

编辑

我尝试使用 iNotebook、idle.exe 和 Eclipse。他们都使用 Anaconda(我计算机上唯一的 Python 安装)并且都显示相同的错误。

如果我输入from shapely.geometry import PolygonEclipse,然后单击Polygon,然后按F3,Eclipse 能够打开模块C:\Anaconda3\Lib\site-packages\shapely\geometry\polygon.py。所以 Eclipse 能够找到它,但是执行失败。

编辑 2

我刚刚在另一台具有类似配置的计算机上尝试了相同的导入,它可以工作。两台计算机之间的“唯一”区别是一台装有 Windows 7(它可以工作),而一台装有 Windows 8(它不能)。

我按照相同的旧清单在两台计算机上安装了 Anaconda 和一些软件包。装有 Windows 8 的计算机可以从 Eclipse 中看到该包,但无法导入它。

0 投票
1 回答
1288 浏览

python - 在python中查找级联多边形的点

我正在尝试找到靠近的点并删除 Python 中某些形状数据(坐标)的重复点。我将坐标节点命名为 1,2,3.. 等等,我使用 shapely 包并在节点点 1,2,3.. 周围创建多边形

多边形 = [Point([nodes[i]).buffer(1) for i in range(len(nodes))]

并找到我使用的级联

级联 = cascaded_union(多边形)

返回的级联是一个多面体并列出了许多坐标,我想确切地知道我的节点中的哪些点是级联的(基于缓冲区值 1),以便我可以用新节点替换它们。我怎么知道这个??

0 投票
1 回答
5202 浏览

python - LineString 的长度(以英里为单位)

我将运行数据表示为 Shapely LineStrings,其中 LineString 中的每个点都是一个坐标。我试图以英里为单位计算 LineString 的长度。我知道 LineString 有一个length方法,但是我不知道结果是什么单位。

例如,我有一次跑步,我知道是 0.13 英里,但是当我打印出来时,runs[0].length我得到 0.00198245721108。我认为这是因为 LineString 在笛卡尔坐标系中,但我并不完全确定。

0 投票
1 回答
1552 浏览

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

我该如何解决?

0 投票
1 回答
11139 浏览

python - Polygon.contains 和 Polygon.within 有什么区别?

文档字符串说:

Polygon.contains如果几何包含另一个,则返回 True,否则返回 False

Polygon.within如果几何在另一个内,则返回 True,否则返回 False

它们有何不同?

0 投票
2 回答
2159 浏览

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 分钟,将来我可能需要它更快。

如果我缺少任何信息,请告诉我,以便我可以编辑问题。

非常感谢您,费利佩。

0 投票
4 回答
89139 浏览

python - 如何从匀称的点列表中创建匀称的多边形?

我想从匀称的点创建一个多边形。

给我一个类型错误TypeError: object of type 'Point' has no len()

如何Polygon从匀称的Point物体创建一个?