ESRI grid format
中的某些文件(后缀为 .grd )是一个地理空间数据集,左下角为X角,左下角为Y角。
文件看起来像这样(使用vim读取它):
1 ncols 2880
2 nrows 1440
3 xllcorner -180.0
4 yllcorner -90.0
5 cellsize 0.125
6 nodata_value -999
7 version 2.0
8 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999 ...
目前,我使用手动预处理方法操作这些文件。
.txt
文件中。 .txt
文件读入表示空间属性的numpy数组现在,我想实现直接阅读文件:
## Read the first seven lines using LineCache
ncols = linecache.getline("grd file", 1)
......
## Read the array using np.loadtxt()
myArray = np.loadtxt("grd file", skiprows=7)
答案 0 :(得分:2)
你可以为它编写一个函数。这是一个示例(假设您的行号来自vim,实际上不存在于文件中):
import numpy as np
def read_grd(filename):
with open(filename) as infile:
ncols = int(infile.readline().split()[1])
nrows = int(infile.readline().split()[1])
xllcorner = float(infile.readline().split()[1])
yllcorner = float(infile.readline().split()[1])
cellsize = float(infile.readline().split()[1])
nodata_value = int(infile.readline().split()[1])
version = float(infile.readline().split()[1])
longitude = xllcorner + cellsize * np.arange(ncols)
latitude = xllcorner + cellsize * np.arange(nrows)
value = np.loadtxt(filename, skiprows=7)
return longitude, latitude, value