问题标签 [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 投票
2 回答
9067 浏览

python - 使用 Python 计算多多边形 shapefile 中的点数

我有一个由各个州组成的美国多边形形状文件作为它们的属性值。此外,我有存储我也感兴趣的点事件的纬度和经度值的数组。本质上,我想“空间连接”点和多边形(或执行检查以查看每个多边形 [即状态]点在),然后将每个状态的点数相加,找出哪个状态的“事件”数量最多。

我相信伪代码会是这样的:

任何库或语法将不胜感激。

据我所知,OGR 库是我所需要的,但我在语法上遇到了问题:

0 投票
1 回答
743 浏览

python - to_shape() 失败并出现 ParseException

我一直在尝试使用 GeoAlchemy2,但在解析它的字段时遇到了一些麻烦geom

我尝试在 WKB 元素上使用内置to_shape函数:

示例如下:

我用过:

知道如何解析这个 GeoAlchemy2 geom 字段吗?数据库值有效。

0 投票
1 回答
3135 浏览

python - 线与多边形相交坐标

我正在使用 Python、Shapely 和 Fiona。考虑到有两个 shapefile 可用,一个线 shapefile 和一个多边形 shapefile。

如何获得由交点(用 Q 标记表示)及其各自坐标组成的最终结果 shapefile?

在此处输入图像描述

0 投票
2 回答
2447 浏览

python - Pandas 适用于 dateframe 产生 '

我正在尝试构建一个GeoJSON 对象。我的输入是一个包含地址列、纬度列和经度列的 csv。然后我从坐标中创建了 Shapely 点,按给定的半径将它们缓冲出来,并通

我正在尝试构建一个GeoJSON 对象。我的输入是一个包含地址列、纬度列和经度列的 csv。然后我从坐标中创建了 Shapely 点,按给定的半径将它们缓冲出来,并通过映射选项获取坐标字典 - 到目前为止,一切都很好。然后,在参考了这个问题之后,我编写了以下函数来获取一系列字典:

def make_geojson(row): return {'geometry':row['geom'], 'properties':{'address':row['address']}}

我就这样应用了它:

我的结果专栏充满了这些:<built-in method values of dict object at 0x10...

最奇怪的部分是,当我直接调用该函数时(make_geojson(data.loc[0])实际上,我确实得到了我期望的字典。也许更奇怪的是,当我调用从应用程序(例如data.output[0]()data.loc[0]['output']())获得的函数时,我得到了相当于以下列表: [data.loc[0]['geom'], {'address':data.loc[0]['address']}],即我要获取的字典的值(但不是键)。

对于那些在家玩的人,这里有一个玩具示例:


如何在动作脚本中访问对象属性

嘿,我想访问 AS3 中的对象属性,我有许多对象的数组,例如老师,学生我需要代码如何访问老师的属性,

当在 List 中获取 ArrayCollection 时,我的问题就在这里

0 投票
1 回答
2847 浏览

python - 如何处理 Shapely 中的舍入误差

我有一个案例,它基于在一条线上投影一个点,然后将这条线分开。我的用例稍微复杂一些,但我的问题可以用以下代码重现:

通过构造,“pr”应该在 line1 和它们的交点上:

打印两次“真”。但是更改输入坐标会稍微影响工作流程:

打印“假”。

我理解这背后的浮动精度问题,但这是否意味着我永远无法测试线上的点?当我根据点列表构造一条线时,我能否确定至少所有“构造”点都在线上?

0 投票
2 回答
629 浏览

python - 匀称的 LineString SVG 错误

我正在尝试学习 Shapely,我最终想采用一系列 x,y 坐标并创建偏移或平行线。昨晚我之前发布了一个关于这个过程的问题,并意识到它可能令人困惑,所以让我重述它并尝试以更小的块来攻击它。我正在使用 Anaconda 运行 Windows 7 64 位。我已经安装了 Shapely 和 Shapefile 模块。我正在尝试创建一个 LineString;但是,每当我这样做时,都会出现错误。请找到代码:

这意味着“无效的 SVG 数据”是什么意思?难道我做错了什么。解决这个问题后,我可能还会有其他问题,但让我们一步一步来。我尝试将 x1,y1,x2,y2 转换为浮点数,但似乎没有帮助。

0 投票
1 回答
1940 浏览

python - 在 Shapely 中查找与路线起点的坐标距离

我有一个代表路线的坐标列表(纬度/经度)。给定一定的半径和另一个坐标,我需要检查坐标是否在路线中(在任何点的给定半径内)及其与路线起点的距离。

我查看了 Shapely,它看起来是一个很好的解决方案。

我开始创建一个StringLine

然后检查该点是否在路线附近,我添加了一个缓冲区并检查了交叉点

我一直在计算距离。我想过分割路线p并测量前半部分的长度,但我得到的交叉点结果是一个HeterogeneousGeometrySequence我不确定我能做什么。

我相信我找到了解决方案:

0 投票
1 回答
3993 浏览

python - 使用 Shapely 查找多边形的最大内接矩形

我试图在六个多边形内定位数百万个点。这是我的代码:

我已经阅读了其他问题,这些问题涉及使用 shapely 提高多边形内点查询的性能。他们建议使用 Rtree。但是,这似乎对于有许多多边形(一个问题中为36,000,另一个问题中为100,000)并且不希望全部循环的情况很有用。

如您所见,我已经设置了一个边界框。这是我的形状设置代码:

检查另一个非常简化的 shape 版本是否有用,即由最大的内接矩形(或三角形)组成的版本?

检查匀称的文档,似乎没有这个功能。也许一些设置simplify()?当然,我总是想确保新的简化形状不会超出原始形状的范围,因此我不必调用contains()实际形状。我还认为我想让新的简化形状尽可能简单,以提高速度。

任何其他建议也值得赞赏。谢谢!

编辑:在等待回复时,我想到了创建满足我要求的简化形状的想法:

以下是我在测试每个点时使用它的方式:

这并不完美,因为在完成必要的操作后,形状并不像它可能的那么简单intersection()。然而,这种方法已经使处理时间减少了 60%。在我的测试中,简单多边形用于 85% 的点查询。

编辑 2:GIS StackExchange 上的另一个相关问题: Python 效率 — 需要有关如何以更有效的方式使用 OGR 和 Shapely 的建议。这涉及大约 3,000 个多边形中的 150 万个点。

0 投票
2 回答
2688 浏览

python - 在 windows 7 64 位中安装 Shapely 模块。

我想使用 python 以编程方式进行空间连接。我试图从 https://pypi.python.org/pypi/Shapely在我的(windows 7 64 位)PC 中安装匀称。当我在我的 python shell 中执行 import 时,它可以工作。但是,如果我从 shapely.geometry 导入点执行,它不会引发任何模块发现错误。你能请任何人指导我解决这个问题吗?

0 投票
1 回答
2319 浏览

gis - 为什么 shapely/geos 可以解析这个“无效的”众所周知的二进制文件?

我正在尝试解析Well Known Binary地理信息系统 (GIS) 中使用的几何对象的二进制编码。我正在使用ESRI 的这个规范这里的结果与 esri相同)。我从Osmosis输入数据,这是一个解析 OpenStreetMap 数据的工具,特别是pgsimp-dump 格式,它给出了二进制的十六进制表示。

ESRI 文档说 a 应该只有 21 个Point字节,字节顺序应该只有 1 个字节,typeid 应该只有 4 个字节,typeid 应该只有 8 个字节,double x 应该有 8 个字节,double y 应该只有 8 个字节。

osmosis 的一个例子是这个(十六进制)例子:0101000020E6100000DB81DF2B5F7822C0DFBB7262B4744A40,它有 25 个字节长。

Shapely一个解析 WKB(等)的 Python 程序,它基于流行的 C 库GEOS 能够解析这个字符串:

当我要求 Shapely 解析然后转换为 WKB 时,我得到 21 个字节。

不同的是中间的 4 个字节,对于 typeif=d 出现 3 个字节进入 uint32

当 WKB 无效时,为什么 shapely/geos 可以解析这个 WKB?这些字节是什么意思?