[Gdal-dev] accessing MODIS L1B geolocation data with gdal

Ivan Lucena ILucena at clarku.edu
Wed Dec 20 10:03:27 EST 2006


> Is there a way to access the Latitude and Longitude data with gdal or
do I have to drop down to using the HDF4 library directly?
There is several ways to query and hide information inside a HDF4 file
and unfortunately the data providers know that ;-). So if you are going
to write your own code, check out the return of SWinqgeofields, if
returns something other then zero it means that you will not find a
"Latitude" and "Longitude" subdataset to read the geolocation from. Not
with that name "Latitude" and "Longitude" but with the names that
SWinqgeofields  'returns' in the second parameter. Good luck

________________________________

From: gdal-dev-bounces at lists.maptools.org
[mailto:gdal-dev-bounces at lists.maptools.org] On Behalf Of Huw Lynch
Sent: Tuesday, December 19, 2006 7:24 PM
To: gdal-dev at lists.maptools.org
Subject: [Gdal-dev] accessing MODIS L1B geolocation data with gdal

 


Sorry if this question has been asked before; I've searched but can't
find a full explaination.

I am trying to access geolocation information in MODIS L1B data files. I
was hoping that the Latitude and Longitude data sets would be visible
via gdalinfo however when I run this those 2 datasets appear to be
skipped over.

Here's a gdalinfo output from an example modis data file;

$ gdalinfo MOD03.Terra20061216T021152Z20061216T021611Z.hdf 
Driver: HDF4/Hierarchical Data Format Release 4
Size is 512, 512
Coordinate System is `'
Metadata:
--cut--
  ASSOCIATEDSENSORSHORTNAME=MODIS
  ASSOCIATEDPLATFORMSHORTNAME=Terra
  ASSOCIATEDINSTRUMENTSHORTNAME=MODIS
--cut--
  PROCESSVERSION=5.0.2
--cut--
Subdatasets:
 
SUBDATASET_1_NAME=HDF4_EOS:EOS_SWATH:"MOD03.Terra20061216T021152Z2006121
6T021611Z.hdf":MODIS_Swath_Type_GEO:Height
  SUBDATASET_1_DESC=[1620x1354] Height (16-bit integer)
 
SUBDATASET_2_NAME=HDF4_EOS:EOS_SWATH:"MOD03.Terra20061216T021152Z2006121
6T021611Z.hdf":MODIS_Swath_Type_GEO:SensorZenith
  SUBDATASET_2_DESC=[1620x1354] SensorZenith (16-bit integer)
 
SUBDATASET_3_NAME=HDF4_EOS:EOS_SWATH:"MOD03.Terra20061216T021152Z2006121
6T021611Z.hdf":MODIS_Swath_Type_GEO:SensorAzimuth
  SUBDATASET_3_DESC=[1620x1354] SensorAzimuth (16-bit integer)
 
SUBDATASET_4_NAME=HDF4_EOS:EOS_SWATH:"MOD03.Terra20061216T021152Z2006121
6T021611Z.hdf":MODIS_Swath_Type_GEO:Range
  SUBDATASET_4_DESC=[1620x1354] Range (16-bit unsigned integer)
 
SUBDATASET_5_NAME=HDF4_EOS:EOS_SWATH:"MOD03.Terra20061216T021152Z2006121
6T021611Z.hdf":MODIS_Swath_Type_GEO:SolarZenith
  SUBDATASET_5_DESC=[1620x1354] SolarZenith (16-bit integer)
 
SUBDATASET_6_NAME=HDF4_EOS:EOS_SWATH:"MOD03.Terra20061216T021152Z2006121
6T021611Z.hdf":MODIS_Swath_Type_GEO:SolarAzimuth
  SUBDATASET_6_DESC=[1620x1354] SolarAzimuth (16-bit integer)
 
SUBDATASET_7_NAME=HDF4_EOS:EOS_SWATH:"MOD03.Terra20061216T021152Z2006121
6T021611Z.hdf":MODIS_Swath_Type_GEO:Land/SeaMask
  SUBDATASET_7_DESC=[1620x1354] Land/SeaMask (8-bit unsigned integer)
 
SUBDATASET_8_NAME=HDF4_EOS:EOS_SWATH:"MOD03.Terra20061216T021152Z2006121
6T021611Z.hdf":MODIS_Swath_Type_GEO:gflags
  SUBDATASET_8_DESC=[1620x1354] gflags (8-bit unsigned integer)

I'm certain that the Latitude and Longitude data is there, because I can
see it with hdp;

$ hdp dumpsds -h MOD03.Terra20061216T021152Z20061216T021611Z.hdf
--cut--
Variable Name = Latitude
         Index = 0
         Type= 32-bit floating point
         Ref. = 20
         Rank = 2
         Number of attributes = 3
         Dim0: Name=nscans*10:MODIS_Swath_Type_GEO
                 Size = 1620
                 Scale Type = number-type not set
                 Number of attributes = 0
         Dim1: Name=mframes:MODIS_Swath_Type_GEO
                 Size = 1354
                 Scale Type = number-type not set
                 Number of attributes = 0
         Attr0: Name = units
                 Type = 8-bit signed char 
                 Count= 7
                 Value = degrees

Is there a way to access the Latitude and Longitude data with gdal or do
I have to drop down to using the HDF4 library directly?

The frmt_hdf4.html file shipped with gdal includes an example as such;

$ gdalinfo GSUB1.A2001124.0855.003.200219309451.hdf

Driver:
 HDF4/Hierarchical Data Format Release 4

Size is 512, 512

Coordinate System is `'

Metadata:

  HDFEOSVersion=HDFEOS_V2.7

  Number of Scans=204

  Number of Day mode scans=204

  Number of Night mode scans=0

  Incomplete Scans=0

...a lot of metadata output skipped...

Subdatasets:

 
SUBDATASET_1_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.20021930945
1.hdf:0

  SUBDATASET_1_DESC=[408x271] Latitude (32-bit floating-point)

 
SUBDATASET_2_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.20021930945
1.hdf:1

  SUBDATASET_2_DESC=[408x271] Longitude (32-bit floating-point)

 
SUBDATASET_3_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.20021930945
1.hdf:2

  SUBDATASET_3_DESC=[12x2040x1354] EV_1KM_RefSB (16-bit unsigned
integer)


Even if it's not possible to get at the lat/lon data with gdal, I'm
interested in understanding why it doesn't work.

Cheers & thanks

Huw Lynch

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20061220/e09dbc3b/attachment.html


More information about the Gdal-dev mailing list