在GIS中,栅格属性里有关于栅格自身的信息,背景(nodata value)对于识别一张图像的边界像元尤为重要,我们目的只要把每行每列中的第一次出现不是nodata的像元和最后一次出现nodata的前一个像元就可以了。
对于栅格,可以用ArcPy中的RasterToNumpyArray函数将将栅格转成numpy数组,然后就可以按照所想读取出每行列中首尾像元。
以下是部分代码提取边界像元的核心算法,其实是很简单的一个思路(假设0是nodata value)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
a = [[ 0 for col in range (Raster.width)] for row in range (Raster.height)]
for i in range ( 0 ,Raster.width):
... for j in range ( 0 ,Raster.height):
... if (myRaster[j][i]! = 0 and myRaster[j - 1 ][i] = = 0 ):
... a[j][i] = myRaster[j][i]
... if (myRaster[j][i] = = 0 and myRaster[j - 1 ][i]! = 0 ):
... a[j - 1 ][i] = myRaster[j - 1 ][i]
...
for i in range ( 0 ,myRaster.height):
... for j in range ( 0 ,myRaster.width):
... if (arr[i][j]! = 0 and arr[i][j - 1 ] = = 0 ):
... a[i][j] = arr[i][j]
... if (arr[i][j] = = 0 and arr[i][j - 1 ]! = 0 ):
... a[i][j - 1 ] = arr[i][j - 1 ]
|
以上这篇关于Python 的简单栅格图像边界提取方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_14906811/article/details/72597167