search.earthdata
例如:
Rectangular ROI:
(latitude, longitude) for its SW: 11.54460,76.49516
(latitude, longitude) for its NE: 11.73867,76.68509
Temporal range:
Start: 2019-02-24 00:00:00
End: 2019-02-25 23:59:59
正弦曲线投影是一种等面积的伪圆柱投影。规定纬线投影为平行直线,经线投影为对称于中央经线的正弦曲线,同一纬线上经距相等,纬距向两极缩小。主要用于小比例尺世界地图。
使用MODIS转换工具箱(MODIS Conversion Toolkit,MCTK)对MODIS进行预处理,支持143种现有的modis数据产品直接处理,同时提供批量数据处理的IDL开发函数接口。MCTK是Yale University的地球观测中心发布的,它的下载网址为这里。
定义MOD14产品的地理坐标信息:(但没有成功,坐标以中心逆时针旋转了90度)
def test02():
#the CRS of the sinusoidal projection
crs_str = "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"
crs_str='+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371007.181 +b=6371007.181 +units=m +no_defs '
# Open it using the GDAL
import os
import glob
import pprint
from pyproj import Transformer
from osgeo import gdal,osr,ogr
file_dir='./'
file_macro='MOD14*'
mod14_filepath=glob.glob(os.path.join(file_dir,file_macro))[0]
inRasterFn = gdal.Open(mod14_filepath)
for sub, description in inRasterFn.GetSubDatasets():
print(description)
if description.find('fire mask')!=-1:
fireMask_path = sub
firemask_layer = gdal.Open(fireMask_path)
firemask = firemask_layer.ReadAsArray()
print(firemask.shape)
pprint.pp(inRasterFn.GetMetadata())
metaData = inRasterFn.GetMetadata()
driver = gdal.GetDriverByName("GTiff")
rows,cols = firemask.shape
dtype=gdal.GDT_Byte # fire mask is an 8-bit unsigned integer
outname = 'fire_mask_sin.tif'
dataset_out = driver.Create(outname, cols, rows, 1, dtype) # fire mask is an 8-bit unsigned integer
dataset_out.GetRasterBand(1).WriteArray(firemask)
transformer = Transformer.from_crs("EPSG:4326", crs_str, always_xy=True)
west, north = transformer.transform(metaData['WESTBOUNDINGCOORDINATE'],
metaData['NORTHBOUNDINGCOORDINATE'])
EASTBOUNDINGCOORDINATE=132.411965691031
SOUTHBOUNDINGCOORDINATE=-49.9789521062437
pixel_size = 1000 # 1 km
geotransform = (west, pixel_size, 0.0, north, 0.0, -pixel_size)
dataset_out.SetGeoTransform(geotransform)
#*********************
srs = osr.SpatialReference()
# Imports WKT to Spatial Reference Object
srs.ImportFromProj4(crs_str)#!
srs.ExportToWkt() # converts the WKT to an ESRI-compatible format
dataset_out.SetProjection(srs.ExportToWkt())
dataset_out = None
在使用rioxarray对MODIS产品时,MODIS产品是以HDF4格式进行存储的,出现不同识别文件的错误,相关提示如下
rasterio.errors.RasterioIOError: './MOD14.A2019338.0210.061.2020317221751.hdf' not recognized as a supported file format.
解决方法可以参考这里。卸载rasterio,并以下列的方式重新安装rasterio。
pip install rasterio --no-binary rasterio
无关附注:当安装pynio时,需要用conda创建一个单独的环境,并在安装之后,并不能正常import nio,这是因为还需要安装ttb。
conda install -c conda-forge tbb