问题标签 [rasterio]

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 回答
1715 浏览

python - 来自 XYZ csv 格式的栅格

我有一个包含 3 列 xy 和 z 值的大型 csv 文件。我想做以下事情:1.如何将该csv转换为矢量形状文件(点)。2.如何将步骤2中得到的点转换成地理栅格。3. 让我们说一组“shp”格式的单独点文件如何将步骤 2 中获得的栅格中的值提取到新的 csv 文件中,以便我可以对其进行统计。

问题是我是使用 python 进行地理处理的新手,例如,对于第 2 步,我曾经在 R 中使用“raster”包很容易做到这一点,而第 3 步也使用“raster”包中的“extract”函数。但是,在 python 中,我可以在 geopandas 中执行第 2 步,但第 2 步和第 3 步没有简单的答案可用。

0 投票
0 回答
22 浏览

python - 地理分割不匹配

我正在做一个需要分割地理空间数据的项目。该数据集包括从 1980 年代到 2018 年的全球火灾天气指数 (FWI)——一种火灾危险分类系统。我们希望根据 NUTS(或 GADM)对数据进行分段,以便能够预测并随着时间的推移调查可能的模式。

我们必须处理:

  • FWI 数据集(分辨率:0.7 度 ~ 80x80 Km)
  • NUTS(和 GADM)形状文件

我们的方法如下:

  1. 使用 geopandas 导入形状文件
  2. 使用 xarray 导入 FWI 数据集
  3. 栅格化 shapefile(改编代码
  4. 获取按 NUTS/GADM 分段的 FWI 数据

发现了几个问题:

  • 并非感兴趣区域中的所有区域都被正确分割
  • 可用的 NUTS/GADM 和 FWI 点之间似乎存在偏移

使用的函数如下:

所描述的分割过程导致下图。

分割结果。

可以看出,分段数据和实际地图区域之间似乎存在偏移。此外,还有一些岛屿甚至没有被分割捕获。

0 投票
1 回答
309 浏览

python - Rasterio rasterize 功能:无法插入正确的几何图形

尝试使用 Rasterio 库中的 rasterize 函数对具有特定属性的折线 shapefile 进行光栅化。这个函数需要一个包含 (geometry, value) 元组的可迭代对象,其中几何是一个类似 GeoJSON 的对象(参见文档)。这个几何可以用 fiona 或 geopandas 提取,我读过这个问题并尝试过(所以用 geopandas)但是几何不正确,因为我用“is_valid_geom”测试它,结果是“假”,这似乎是合乎逻辑的因为当我打印这个几何图形时,它会显示:<generator object <genexpr> at 0x000001903856C048>。我也像这样尝试过 Fiona:

这也返回“false”,但我不明白为什么,因为几何似乎是正确的:

所以最后,当我尝试光栅化时,我没有收到任何错误消息,但输出是一个空白图像,所有值都为 0... 光栅化代码:

注意:我已经读过这个并且我的 shapefile 和用于分级的栅​​格之间的投影是相同的

任何人都知道可能是什么问题?

0 投票
2 回答
518 浏览

python - 使用 Python 发出 WMS 请求后如何读取 GeoTIFF

我正在尝试从 WMS 服务中读取海拔 GeoTIFFS。如果输出格式是 JPEG,我知道如何使用 BytesIO 执行此操作,但是对 rasterio 应用相同的技巧似乎不起作用。有没有人有什么建议?

最后一步让我出错

0 投票
1 回答
727 浏览

python - 使用 pyinstaller 将“.py 文件”(具有“导入栅格”)转换为“.exe 文件”时出现“导入错误:DLL 加载失败”

我有一个3.7名为的 python (version ) 文件test.py,我想将其转换为test.exeusing pyinstaller. 当我使用命令时

它正在test.exe成功创建。但是当我尝试test.exe使用命令提示符执行文件时,出现以下错误:

在浏览了网站上的类似帖子后,我尝试了不同的选项,例如:

(i) 第一个选项:在路径中C:\Users\user1\Anaconda3\Lib\site-packages\PyInstaller\hooks我添加了一个hook-rasterio.py包含hiddenimports=['rasterio', 'rasterio._shim']然后尝试

但我仍然收到上述错误。

(ii)第二个选项:在我添加的test.spec文件中,然后使用创建但问题仍然存在。hiddenimports=[]rasteriorasterio._shimtest.exepyinstaller

我的test.py样子:

任何人都可以建议可以解决问题的必要事项。

0 投票
1 回答
100 浏览

geospatial - 使用 Dask 处理大型网格会导致 MemoryError

我有三个 GeoTIFF,每个在 AWS 的 S3 上大小约为 500 MB,我正在尝试使用 Dask 在 EMR 集群上处理它们,但在处理第一个 tiff 后我得到了 MemoryError。

使用 读取 GeoTIFF 后xarray.open_rasterio(),我将网格值转换为布尔值,然后将数组乘以浮点值。此工作流程已在三个 50 MB 大小的 GeoTIFF 上成功执行。此外,我在使用 xarray 读取时尝试使用分块,但得到了相同的结果。

Dask 是否有大小限制或我可能遇到的其他问题?

0 投票
2 回答
4729 浏览

python - pip install rasterio 时遇到错误

我正在使用 Windows 10 并在 anaconda 提示符下执行 pip install rasterio 时遇到错误。

0 投票
1 回答
1430 浏览

python - 如何使用 rasterio 设置 geotiff 的边界?

我正在尝试编写一些代码,这些代码需要一组 png 文件 + 一些元数据信息(不是来自 geotiff)并创建一个 geotiff 文件。该一个 geotiff 文件将具有与作为输入传递的 png 文件的数量相等的带/层数。当我尝试在 QGIS 中打开文件时,它是不可见的。通过将我的 geotiff 文件与其他已建立的 geotiff 文件进行比较,我注意到范围字段为空,这似乎是错误的(查看下图中显示的 qgis 中的图像信息)。

在此处输入图像描述

我正在利用rasteriopython 库来创建元数据对象。通过打印出我建立的光栅文件的元数据,我能够弄清楚配置文件字段是什么以及我应该将它们设置为什么(第 1-20 行)

我已经从这里蚕食了一些代码,以将 png 文件添加为图层。即使我没有将图层设置为来自不同 geotiff 文件的图层,但 png 的格式化方式看起来与图层的格式化方式相同。(第 22-26 行)。

我很困惑,因为当我在 Windows 10 上使用通用 png 查看器打开生成的 tiff 文件时,我可以按照预期的方式看到图像的一般形状,并且因为我正在使用变换字段设置左上角坐标,以及带有宽度和高度字段的结果图像的大小,这对我来说很有意义。但是,qgis 似乎需要以某种方式指定范围信息。

我已经搜索了 rasterio 的 github 和文档,并且正在努力寻找任何有用的信息。我的代码如下;任何帮助将非常感激!

编辑:通过检查已建立的 geotiff 文件和我创建的 geotiff 文件的边界字段,我可以确认这是问题所在;奇怪的是,我创建的文件中的边界框没有宽度或高度。但是,这个字段似乎不可写,所以我的问题仍然存在。

0 投票
0 回答
196 浏览

python - ArcGIS 栅格金字塔的栅格版本

在 ArcGIS 中,当您加载栅格时,您可以选择构建金字塔。像这样:

在此处输入图像描述

我发现我可以使用以下 Python 代码和 Rasterio 库复制这些文件:

但是,如果可能的话,我想要指导的是,我上面的代码中有多少“概述”将复制 ArcGIS 运行的金字塔工具?如果可能的话,我想尝试创建一个相同的输出。

0 投票
1 回答
501 浏览

python - 无法从栅格中的堆栈数组创建虚拟栅格

我需要知道如何创建虚拟栅格。我遍历了一个文件夹,其中包含一些二进制栅格 (1, 0)。我使用 numpy.concatenate 将这些栅格附加到一个 numpy 数组中。然后我想使用连接的栅格数作为该栅格将具有的波段数来创建一个虚拟栅格。我收到以下消息:

我检查了栅格的数量,它对应于变量“维度”,是在写出我的最终虚拟栅格时输入的。

有谁知道如何解释这个错误信息?谢谢