问题标签 [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 回答
13261 浏览

python - 如何使用 Shapely 提取内部多边形坐标?

我是 Shapely 的新手(但对它充满热情),最近我发现了一些障碍。

我有一个正在通过 Fiona 读取的多边形 shapefile。这个 shapefile 包含多边形和多多边形项目,我需要为其中所有坐标的每个特征(即外部和/或内部)构建一个数组。值得注意的是,其中两个多边形项目具有内环(并且它们是有效的)。

我似乎没有问题访问多边形/多多边形的外部坐标......但我没有为内部坐标拉任何东西。

我需要在这里采取一种新的方法(即LinearRings)...?

0 投票
1 回答
22529 浏览

python - How to simplify boundary geometries in shapely

I'm working with shapely to do GIS, but I'm running into memory errors when loading the geometry of each zip code into memory because the geometry is so jagged and complicated.

I'd like to make the shape smaller in memory by reducing the number of boundary points as low as possible without distorting the shape too much. Using the convex hull seems like one potential answer, as could simply throwing away lots of points from the boundary. I'm wondering if there's something already out there that solves this problem.

0 投票
0 回答
531 浏览

python - IIS isapi-wsgi 应用程序中的 Cartopy 无法导入 geos_c.dll

我正在尝试在 IIS 7 下的 isapi-wsgi 应用程序中使用 cartopy。

我有许多使用 isapi-wsgi 的应用程序,所以我 100% 确定我设置 isapi-wsgi 的方式是正确的。

我也有 cartopy 在普通的 Python 控制台中正常工作,所以这也没有问题。

当代码出现时

它失败。

追溯的相关部分是

如前所述,此导入仅在 IIS 和 isapi_wsgi 下失败。

我的配置:

  • 视窗服务器 2008 R2

  • IIS 7.5

  • 安装了所有 Python 库的 Python(x,y) 2.7.6.0(32 位)

  • 来自http://www.lfd.uci.edu/~gohlke/pythonlibs/

    • 卡托比 0.10
    • 匀称1.3
    • pyshp 1.2
    • 都具有正确的位数和 Python 版本

我在 IIS 中的应用程序池配置为允许 32 位应用程序。

我还使用“Dependency Walker”调查了 geos_c.dll 的依赖关系。它表明它依赖于众所周知的“msvcr90.dll”和“msvcp90.dll”文件。我怀疑 DLL 加载失败是因为无法解决这些依赖关系,但我确实安装了“MS Visual ... Redistributable”。即使将这些 DLL 复制到各种文件夹,如 shapely 的、虚拟目录、PATH 中的不同目录等,也不能解决我的问题。

我真的被困在这里,不知道更多。有人有什么建议吗?

更新

正如@eryksun 所建议的,我尝试msvc[r|p]90.dll在 IIS 中加载文件。我使用了以下代码片段:

然后这给了我

所以在这种情况下,这确实应该是万恶之源。在普通解释器中,两个调用都成功。

更新 2

有趣的是,当我msvc[p|r]90.dll在我的机器上搜索匹配的(32 位)文件并将它们复制到我的 isapi-wsgi 进程的工作目录时,我得到了一个完全不同的错误:

甚至会出现一个弹出窗口。这似乎与这个问题有关。有任何想法吗?我在哪里可以找到这个“版本 B”的 DLL?

0 投票
2 回答
225 浏览

python - 需要帮助创建几何类型 wkbGeometryCollection 的图层

我在创建几何类型为几何集合的图层时遇到问题。因此我无法输出到 shapefile。我在下面附上了代码。dstLayer 为空。如果 geom 类型是多边形或多线串或任何其他类型,则不会发生这种情况。

任何帮助将不胜感激。

谢谢

0 投票
1 回答
957 浏览

python - matplotlib 艺术家中的多边形包含测试

我有以下代码,最初是从这里收集的。,它使用matplotlib,shapely,cartopy来绘制世界地图。

单击时,我需要确定它是在哪个国家/地区进行的。我可以向pick_event画布添加回调,但是,它会在每个艺术家上调用。(cartopy.mpl.feature_artist.FeatureArtist,对应于一个国家)。

给定一个艺术家和一个具有 x、y 坐标的鼠标事件,我如何确定包含?

我试过artist.get_clip_box().contains了,但它不是真正的多边形,而是一个普通的矩形。

s的默认包含测试FeatureAristNone,所以我必须添加自己的包含测试。

如何在 FeatureArtist 中正确检查鼠标事件点的包含情况?

0 投票
1 回答
1049 浏览

python - 在 OSX 10.9 中安装 fiona 时出错

我在安装 fiona 时遇到困难。

我已经关注了 fiona 的官方文档 ( https://github.com/sgillies/fiona ) 以及下面的相关线程。

在 python cpl_error.h 中安装 Fiona 时遇到问题:没有这样的文件或目录

我对 pip install shapely 没有任何问题,我使用了 brew install gdal。当我使用命令 pip install fiona 时,出现许多错误

以及有关 gdal-config 的警告,例如"Failed to get options via gdal-config"

我担心导致问题的 gdal-config 位置存在问题。我想在我使用 brew install 之前,我之前可能已经安装了 GDAL 和 kyngchaos 以供 QGIS 使用

任何见解将不胜感激。我无法想象我是唯一一个在安装 fiona 时遇到问题的人,但我还无法单独通过谷歌搜索找到解决方案。

0 投票
1 回答
1231 浏览

python-2.7 - “多边形”对象不支持索引

我正在尝试使用 Kartograph.py 渲染 SVG 地图。它向我抛出了 TypeError。这是python代码:

这是它抛出的错误

0 投票
3 回答
17847 浏览

python - 在 Shapely 中以平面单位(例如平方米)计算多边形面积

我正在使用 Python 3.4 和 shapely 1.3.2 从长/纬度坐标对列表中创建一个多边形对象,我将其转换为众所周知的文本字符串以解析它们。这样的多边形可能看起来像:

由于 shapely 不处理任何投影并在 carthesian 空间中实现所有几何对象,因此在该多边形上调用 area 方法,如:

以平方度为单位给出该多边形的面积。为了获得像平方米这样的平面单位的面积,我想我必须使用不同的投影(哪个?)来转换多边形的坐标。

我多次阅读 pyproj 库应该提供执行此操作的方法。使用 pyproj,有没有办法将整个形状优美的多边形对象转换为另一个投影,然后计算面积?

我用我的多边形做一些其他的事情(不是你现在想的),只有在某些情况下,我需要计算面积。

到目前为止,我只找到了这个例子: http ://all-geo.org/volcan01010/2012/11/change-coordinates-with-pyproj/

这意味着将每个 Polygon 对象拆分为其外环和内环(如果存在),获取坐标,将每对坐标转换为另一个投影并重建 Polygon 对象,然后计算其面积(无论如何它是什么单位?)。这看起来像一个解决方案,但不是很实用。

有更好的想法吗?

0 投票
1 回答
3191 浏览

python - 使用 Python/Shapely 聚合地理点的最佳方式

我想将一长串经纬度坐标转换为它们所属的美国州(或县)。鉴于我有状态几何,一种可能的解决方案是针对所有状态检查每个点。

有没有更优化的方法来做到这一点,可能在 O(1) 中?

0 投票
1 回答
10599 浏览

python - 使用 cascaded_union 组合形状会给出“ValueError:无法从空值创建 Shapely 几何”

我有一个由七个重叠的圆圈和椭圆组成的集群,我试图将它们组合成一个形状,但是当我运行时cascaded_union()出现错误:

这是我到目前为止所写的:

我的目标是得到类似右图的东西: 在此处输入图像描述 我的其余代码将确定随机分布中有多少点落在不规则形状的边界内。当它返回“空值”注释时,我对错误所指的内容感到困惑。我是否没有以正确的方式考虑各个形状的重叠?从我搜索的内容中,已经cascaded_union输入了一组形状,但由于某种原因,在这种情况下不起作用。