关于MODIS的相关问题

MODIS影像下载

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

Projection

正弦曲线投影是一种等面积的伪圆柱投影。规定纬线投影为平行直线,经线投影为对称于中央经线的正弦曲线,同一纬线上经距相等,纬距向两极缩小。主要用于小比例尺世界地图。

通过MCTK实现

使用MODIS转换工具箱(MODIS Conversion Toolkit,MCTK)对MODIS进行预处理,支持143种现有的modis数据产品直接处理,同时提供批量数据处理的IDL开发函数接口。MCTK是Yale University的地球观测中心发布的,它的下载网址为这里。

利用GDAL实现

定义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

Related problems

在使用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

你可能感兴趣的:(遥感,遥感)