【发布时间】:2021-11-14 21:30:45
【问题描述】:
我目前正在研究 NASA 气溶胶光学深度数据 (MCD19A2),这是 NASA 卫星三级产品。我已经上传了data。我想将数据保存为数据框,包括所有经度和纬度信息以及值。我已经成功地将0.47um波段文件转换成三维数组。请问如何把这个数组转换成正确的dataframe,包括X、Y和value。
以下是我尝试过的代码:
from osgeo import gdal
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
rds = gdal.Open("MCD19A2.A2006001.h26v04.006.2018036214627.hdf")
names=rds.GetSubDatasets()
names[0][0]
*'HDF4_EOS:EOS_GRID:"MCD19A2.A2006001.h26v04.006.2018036214627.hdf":grid1km:Optical_Depth_047'*
aod_047 = gdal.Open(names[0][0])
a47=aod_047.ReadAsArray()
a47[1].shape
(1200,1200)
我希望结果是这样的
| X (n=1200) | Y (n=1200) | AOD_047 |
|---|---|---|
| 8896067 | 5559289 | 0.0123 |
我知道在 R 中这可以通过
require('gdalUtils')
require('raster')
require('rgdal')
file.name<-"MCD19A2.A2006001.h26v04.006.2018036214627.hdf"
sds <- get_subdatasets(file.name)
gdal_translate(sds[1], dst_dataset = paste0('tmp047', basename(file.name), '.tiff'), b = nband)
r.047 <- raster(paste0('tmp047', basename(file.name), '.tiff'))
df.047 <- raster::as.data.frame(r.047, xy = T)
names(df.047)[3] <- 'AOD_047'
但是,R 确实依赖于内存并保存到 'tif' 并且读取 'tif' 会占用大量内存。所以我想在 python 中完成这个任务。非常感谢您的帮助。
【问题讨论】: