【问题标题】:Creating a raster image from a NumPy array从 NumPy 数组创建光栅图像
【发布时间】:2016-03-23 04:55:44
【问题描述】:

我正在使用 arcpy 编写脚本,并且我有一个 NumPy 矩阵,其中包含各县的作物尺寸。这个矩阵填充了浮点数。

我还有一个显示农作物的单独光栅图像以及显示县的 shapefile。

鉴于栅格像素是某个县的某种作物,我想将我的 NumPy 矩阵的内容保存到一个新的栅格中,使用矩阵中的正确值。

我的问题是:如何改进将矩阵转换为光栅图像的方式?

目前我正在执行以下操作:

# initialize my output
outraster = 0 * cropraster

for crop in crops
    for county in counties
        outraster = outraster + \
        conditional statements checking if cropraster pixel is in 
        current county and crop, and if so return matrix value

outraster.save(filename)

条件语句是嵌套的空间分析“Con”调用,其语法我将不再赘述。

这工作正常,但很丑陋,我觉得应该有更好的方法来做我想做的事。当我尝试太多县或作物时,上述方法会崩溃。保存步骤失败。

我想知道是否有更简单的方法来完成我所追求的。有什么建议吗?

【问题讨论】:

  • 你需要更多地探索arcpy。 Numpy 数组访问 ... 到和来自 .. 是内置并广泛使用的。从这个链接开始,然后探索数据访问模块NumPyArrayToRaster中的其余选项
  • 感谢@DanPatterson 的回复。我意识到,在浏览我的帖子时,关于它的所有内容都表明我正在寻找 NumPyArrayToRaster 提供的功能(标题几乎是在尖叫!)。实际上,我正在尝试做一些完全不同且更复杂的事情,即使用数组中的信息来填充栅格。我认为使用 arcpy 上述方法可能是最好的方法,但我应该研究其他软件以获得更有效的方法。

标签: python python-2.7 numpy arcgis arcpy


【解决方案1】:

NumPyArrayToRaster (arcpy) 专为此类操作而设计。

文档中的一个示例:

import arcpy
import numpy

# Create a simple array from scratch using random values
myArray = numpy.random.random_integers(0,100,2500)
myArray.shape = (50,50)

# Convert array to a geodatabase raster
myRaster = arcpy.NumPyArrayToRaster(myArray,x_cell_size=1)
myRaster.save("C:/output/fgdb.gdb/myRandomRaster")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-28
    • 2020-09-10
    • 2016-05-10
    • 1970-01-01
    • 2018-10-16
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多