Ivan Shmakov reported the problem with HDF-EOS file
http://theory.asu.ru/~ivan/modis/MOD07_L2.hdf that does not contain dimension map. It is not possible to read and properly assign geolocation fields without information on dimension mappings.
Here the full content of "SwathStructure?" metadata group (note the empty "DimensionMap?" object):
GROUP=SwathStructure
GROUP=SWATH_1
SwathName="mod07"
GROUP=Dimension
OBJECT=Dimension_1
DimensionName="Cell_Across_Swath"
Size=270
END_OBJECT=Dimension_1
OBJECT=Dimension_2
DimensionName="Cell_Along_Swath"
Size=406
END_OBJECT=Dimension_2
OBJECT=Dimension_3
DimensionName="Band_Number"
Size=12
END_OBJECT=Dimension_3
OBJECT=Dimension_4
DimensionName="Pressure_Level"
Size=20
END_OBJECT=Dimension_4
OBJECT=Dimension_5
DimensionName="Output_Parameter"
Size=10
END_OBJECT=Dimension_5
OBJECT=Dimension_6
DimensionName="Water_Vapor_QA_Bytes"
Size=5
END_OBJECT=Dimension_6
END_GROUP=Dimension
GROUP=DimensionMap
END_GROUP=DimensionMap
GROUP=IndexDimensionMap
END_GROUP=IndexDimensionMap
GROUP=GeoField
OBJECT=GeoField_1
GeoFieldName="Latitude"
DataType=DFNT_FLOAT32
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=GeoField_1
OBJECT=GeoField_2
GeoFieldName="Longitude"
DataType=DFNT_FLOAT32
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=GeoField_2
END_GROUP=GeoField
GROUP=DataField
OBJECT=DataField_1
DataFieldName="Band_Number"
DataType=DFNT_INT32
DimList=("Band_Number")
END_OBJECT=DataField_1
OBJECT=DataField_2
DataFieldName="Pressure_Level"
DataType=DFNT_FLOAT32
DimList=("Pressure_Level")
END_OBJECT=DataField_2
OBJECT=DataField_3
DataFieldName="Scan_Start_Time"
DataType=DFNT_FLOAT64
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_3
OBJECT=DataField_4
DataFieldName="Solar_Zenith"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_4
OBJECT=DataField_5
DataFieldName="Solar_Azimuth"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_5
OBJECT=DataField_6
DataFieldName="Sensor_Zenith"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_6
OBJECT=DataField_7
DataFieldName="Sensor_Azimuth"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_7
OBJECT=DataField_8
DataFieldName="Brightness_Temperature"
DataType=DFNT_INT16
DimList=("Band_Number","Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_8
OBJECT=DataField_9
DataFieldName="Cloud_Mask"
DataType=DFNT_INT8
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_9
OBJECT=DataField_10
DataFieldName="Surface_Temperature"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_10
OBJECT=DataField_11
DataFieldName="Surface_Pressure"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_11
OBJECT=DataField_12
DataFieldName="Surface_Elevation"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_12
OBJECT=DataField_13
DataFieldName="Processing_Flag"
DataType=DFNT_INT8
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_13
OBJECT=DataField_14
DataFieldName="Tropopause_Height"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_14
OBJECT=DataField_15
DataFieldName="Guess_Temperature_Profile"
DataType=DFNT_INT16
DimList=("Pressure_Level","Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_15
OBJECT=DataField_16
DataFieldName="Guess_Moisture_Profile"
DataType=DFNT_INT16
DimList=("Pressure_Level","Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_16
OBJECT=DataField_17
DataFieldName="Retrieved_Temperature_Profile"
DataType=DFNT_INT16
DimList=("Pressure_Level","Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_17
OBJECT=DataField_18
DataFieldName="Retrieved_Moisture_Profile"
DataType=DFNT_INT16
DimList=("Pressure_Level","Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_18
OBJECT=DataField_19
DataFieldName="Retrieved_Height_Profile"
DataType=DFNT_INT16
DimList=("Pressure_Level","Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_19
OBJECT=DataField_20
DataFieldName="Total_Ozone"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_20
OBJECT=DataField_21
DataFieldName="Total_Totals"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_21
OBJECT=DataField_22
DataFieldName="Lifted_Index"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_22
OBJECT=DataField_23
DataFieldName="K_Index"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_23
OBJECT=DataField_24
DataFieldName="Water_Vapor"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_24
OBJECT=DataField_25
DataFieldName="Water_Vapor_Direct"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_25
OBJECT=DataField_26
DataFieldName="Water_Vapor_Low"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_26
OBJECT=DataField_27
DataFieldName="Water_Vapor_High"
DataType=DFNT_INT16
DimList=("Cell_Along_Swath","Cell_Across_Swath")
END_OBJECT=DataField_27
OBJECT=DataField_28
DataFieldName="Quality_Assurance"
DataType=DFNT_INT8
DimList=("Cell_Along_Swath","Cell_Across_Swath","Output_Parameter")
END_OBJECT=DataField_28
OBJECT=DataField_29
DataFieldName="Quality_Assurance_Infrared"
DataType=DFNT_INT8
DimList=("Cell_Along_Swath","Cell_Across_Swath","Water_Vapor_QA_Bytes")
END_OBJECT=DataField_29
END_GROUP=DataField
GROUP=MergedFields
END_GROUP=MergedFields
END_GROUP=SWATH_1
END_GROUP=SwathStructure