[gdal-dev] map info and projections from GeoTIFF file to create ENVI header
Dmitry Baryshnikov
bishop.dev at gmail.com
Mon Jan 18 13:40:08 PST 2016
Oh, I'm confused MapInfo and ENVI map info.
In your case you need to form this string by yourself using values from
OGRSpatialReference methods.
Also take a look to
https://github.com/OSGeo/gdal/blob/trunk/gdal/frmts/raw/envidataset.cpp
Best regards,
Dmitry
19.01.2016 00:33, nguler at jlab.org пишет:
> Dmitry,
>
> After doing this, I following your suggested steps, I get the string:
>
> Earth Projection 8, 104, "m", -69, 0, 0.9996, 500000, 0
>
> Bit, the map info string I need to use looks like this:
>
> map info = {UTM, 1, 1, 145185, 2189715, 30, 30, 19, North}
>
> I tried other ExportTo functions but none gives me the specific map info
> string I want. This is ENVI map info string.
>
> I guess I will just have to stitch it together once I understand what the
> second and third elements are used for..
>
> I really appreciated your help.
> Best regards, - Nevzat
>
>
>> Hi Nevzat,
>>
>> you need to get spatial reference from GDALDataset (via GetProjectionRef
>> http://gdal.org/classGDALDataset.html#aa42537e1062ce254d124b29ff3ebe857)
>> and convert it to OGRSpatialReference.
>>
>> Than use exportToMICoordSys to get MI CRS string.
>>
>> http://gdal.org/classOGRSpatialReference.html#a1f2908cd5ca33609844ef0c0ff2186ea
>>
>> Best regards,
>> Dmitry
>>
>> 18.01.2016 20:27, nguler at jlab.org пишет:
>>> It is solved. Thank you very much Even and Dmitry for your helps. I have
>>> missed the GDAL_DATA variable and it caused me all that trouble.
>>>
>>> Now I need to get the map info string:
>>> map info = {UTM, 1, 1, 145185, 2189715, 30, 30, 19, North,WGS-84}
>>>
>>> Using hDS->GetGeoTransform(adfGeoTransform) does not give me all the
>>> information in the map info string. It only gives me elements [4-7], how to
>>> get the others?
>>>
>>> Best regards, - Nevzat
>>>
>>>> Yes, Thank you Even, I was missing the GDAL_DATA environmental variable.
>>>> Now I
>>>> get the same gdalinfo output. Do I need to set this variable while using
>>>> the
>>>> C++ classes you suggested before: GetGeoTransform and GetProjectionRef()..?
>>>> Because, there also I had the same problem.
>>>>
>>>> Best regards, - Nevzat
>>>>
>>>>
>>>>> Le lundi 18 janvier 2016 17:13:14, nguler at jlab.org a écrit :
>>>>>> Dmitry and All,
>>>>>> I just downloaded the set of tiff files from earthexplorer and run
>>>>>> gdalinfo
>>>>>> on it. Please see below. I am missing some fields in the output
>>>>>> information. It is different from what you got. I don't know what can
>>>>>> cause this? My gdalinfo.exe is not good? Any idea?
>>>>> Have a look at the FAQ entries about GDAL_DATA :
>>>>> https://trac.osgeo.org/gdal/wiki/FAQInstallationAndBuilding#WhatisGDAL_DATAenvironmentvariable
>>>>>
>>>>>> C:\Cubes\LC80080472013174LGN00.tar>gdalinfo LC80080472013174LGN00_B1.TIF
>>>>>> Driver: GTiff/GeoTIFF
>>>>>> Files: LC80080472013174LGN00_B1.TIF
>>>>>> .\LC80080472013174LGN00_MTL.txt
>>>>>> Size is 7571, 7411
>>>>>> Coordinate System is:
>>>>>> PROJCS["unnamed",
>>>>>> PROJECTION["Transverse_Mercator"],
>>>>>> PARAMETER["latitude_of_origin",0],
>>>>>> PARAMETER["central_meridian",-69],
>>>>>> PARAMETER["scale_factor",0.9996],
>>>>>> PARAMETER["false_easting",500000],
>>>>>> PARAMETER["false_northing",0],
>>>>>> UNIT["metre",1,
>>>>>> AUTHORITY["EPSG","9001"]]]
>>>>>> Origin = (145185.000000000000000,2189715.000000000000000)
>>>>>> Pixel Size = (30.000000000000000,-30.000000000000000)
>>>>>> Metadata:
>>>>>> AREA_OR_POINT=Point
>>>>>> METADATATYPE=ODL
>>>>>> Image Structure Metadata:
>>>>>> INTERLEAVE=BAND
>>>>>> Corner Coordinates:
>>>>>> Upper Left ( 145185.000, 2189715.000)
>>>>>> Lower Left ( 145185.000, 1967385.000)
>>>>>> Upper Right ( 372315.000, 2189715.000)
>>>>>> Lower Right ( 372315.000, 1967385.000)
>>>>>> Center ( 258750.000, 2078550.000)
>>>>>> Band 1 Block=7571x1 Type=UInt16, ColorInterp=Gray
>>>>>>
>>>>>> C:\Cubes\LC80080472013174LGN00.tar>gdalinfo --version
>>>>>> GDAL 2.0.1, released 2015/09/15
>>>>>>
>>>>>> C:\Cubes\LC80080472013174LGN00.tar>
>>>>>>
>>>>>>> I have the 2.0.1 version:
>>>>>>> C:\warmerda\bld\bin>gdalinfo --version
>>>>>>> GDAL 2.0.1, released 2015/09/15
>>>>>>>
>>>>>>> I will check the history of the file I have. Maybe it is modified. I
>>>>>>> will
>>>>>>> also download the same file from earthexplorer and try my routines on
>>>>>>> it. Thanks for the suggestions. I appreciate.
>>>>>>> - Nevzat
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Dmitry Baryshnikov [mailto:bishop.dev at gmail.com]
>>>>>>> Sent: Sunday, January 17, 2016 12:57 PM
>>>>>>> To: Nevzat Guler <nguler at jlab.org>; gdal-dev at lists.osgeo.org
>>>>>>> Subject: Re: [gdal-dev] map info and projections from GeoTIFF file to
>>>>>>> create ENVI header
>>>>>>>
>>>>>>> I downloaded this scene from earthexplorer, and everything is fine:
>>>>>>>
>>>>>>> $ gdalinfo LC80080472013174LGN00_B1.TIF
>>>>>>> Driver: GTiff/GeoTIFF
>>>>>>> Files: LC80080472013174LGN00_B1.TIF
>>>>>>>
>>>>>>> ./LC80080472013174LGN00_MTL.txt
>>>>>>>
>>>>>>> Size is 7571, 7411
>>>>>>> Coordinate System is:
>>>>>>> PROJCS["WGS 84 / UTM zone 19N",
>>>>>>>
>>>>>>> GEOGCS["WGS 84",
>>>>>>>
>>>>>>> DATUM["WGS_1984",
>>>>>>>
>>>>>>> SPHEROID["WGS 84",6378137,298.257223563,
>>>>>>>
>>>>>>> AUTHORITY["EPSG","7030"]],
>>>>>>>
>>>>>>> AUTHORITY["EPSG","6326"]],
>>>>>>>
>>>>>>> PRIMEM["Greenwich",0,
>>>>>>>
>>>>>>> AUTHORITY["EPSG","8901"]],
>>>>>>>
>>>>>>> UNIT["degree",0.0174532925199433,
>>>>>>>
>>>>>>> AUTHORITY["EPSG","9122"]],
>>>>>>>
>>>>>>> AUTHORITY["EPSG","4326"]],
>>>>>>>
>>>>>>> PROJECTION["Transverse_Mercator"],
>>>>>>> PARAMETER["latitude_of_origin",0],
>>>>>>> PARAMETER["central_meridian",-69],
>>>>>>> PARAMETER["scale_factor",0.9996],
>>>>>>> PARAMETER["false_easting",500000],
>>>>>>> PARAMETER["false_northing",0],
>>>>>>> UNIT["metre",1,
>>>>>>>
>>>>>>> AUTHORITY["EPSG","9001"]],
>>>>>>>
>>>>>>> AXIS["Easting",EAST],
>>>>>>> AXIS["Northing",NORTH],
>>>>>>> AUTHORITY["EPSG","32619"]]
>>>>>>>
>>>>>>> Origin = (145185.000000000000000,2189715.000000000000000)
>>>>>>> Pixel Size = (30.000000000000000,-30.000000000000000)
>>>>>>>
>>>>>>> Metadata:
>>>>>>> AREA_OR_POINT=Point
>>>>>>> METADATATYPE=ODL
>>>>>>>
>>>>>>> Image Structure Metadata:
>>>>>>> INTERLEAVE=BAND
>>>>>>>
>>>>>>> Corner Coordinates:
>>>>>>> Upper Left ( 145185.000, 2189715.000) ( 72d23' 7.97"W, 19d46'16.43"N)
>>>>>>> Lower Left ( 145185.000, 1967385.000) ( 72d20'44.51"W, 17d45'55.15"N)
>>>>>>> Upper Right ( 372315.000, 2189715.000) ( 70d13' 8.50"W, 19d47'56.92"N)
>>>>>>> Lower Right ( 372315.000, 1967385.000) ( 70d12'16.74"W, 17d47'24.74"N)
>>>>>>> Center ( 258750.000, 2078550.000) ( 71d17'19.50"W, 18d47' 4.68"N)
>>>>>>> Band 1 Block=7571x1 Type=UInt16, ColorInterp=Gray
>>>>>>>
>>>>>>> $ gdalinfo --version
>>>>>>> GDAL 2.1.0dev, released 2015/99/99
>>>>>>>
>>>>>>> What is your gdal version? Maybe the Landsat geotiff was modified from
>>>>>>> some software?
>>>>>>>
>>>>>>> Best regards,
>>>>>>>
>>>>>>> Dmitry
>>>>>>>
>>>>>>> 17.01.2016 20:15, Nevzat Guler ÿøшõт:
>>>>>>>> Thank you Dmitry,
>>>>>>>> What is the best way to extract the information we got using
>>>>>>>> gdalinfo.exe by using GDAL classes, within a C++ code? As I mentioned,
>>>>>>>> I am using GetGeoTransform and GetProjectionRef() but the results miss
>>>>>>>> many of the information (specifically the map info elements as I
>>>>>>>> explained in the previous email).
>>>>>>>>
>>>>>>>> On another note, I actually get a different output from gdalinfo.exe
>>>>>>>> using my file (please see the printed result below). I got the geotiff
>>>>>>>> file from my colleague. When I open the file with ENVI, I get all the
>>>>>>>> information, including GEOGCS information.
>>>>>>>>
>>>>>>>> Can it be that my file is just corrupted and that's why I don't get all
>>>>>>>> the information from GetGeoTransform and GetProjectionRef()? But then
>>>>>>>> how would ENVI is able to extract this information if it were not in
>>>>>>>> the file?
>>>>>>>>
>>>>>>>> Thanks again, - Nevzat
>>>>>>>>
>>>>>>>> C:\Cubes\Landsat\LC80080472013174LGN00>gdalinfo
>>>>>>>> LC80080472013174LGN00_B1.TIF
>>>>>>>> Driver: GTiff/GeoTIFF
>>>>>>>> Files: LC80080472013174LGN00_B1.TIF
>>>>>>>>
>>>>>>>> .\LC80080472013174LGN00_MTL.txt Size is 7571, 7411 Coordinate
>>>>>>>>
>>>>>>>> System is:
>>>>>>>> PROJCS["unnamed",
>>>>>>>>
>>>>>>>> PROJECTION["Transverse_Mercator"],
>>>>>>>> PARAMETER["latitude_of_origin",0],
>>>>>>>> PARAMETER["central_meridian",-69],
>>>>>>>> PARAMETER["scale_factor",0.9996],
>>>>>>>> PARAMETER["false_easting",500000],
>>>>>>>> PARAMETER["false_northing",0],
>>>>>>>> UNIT["metre",1,
>>>>>>>>
>>>>>>>> AUTHORITY["EPSG","9001"]]]
>>>>>>>>
>>>>>>>> Origin = (145185.000000000000000,2189715.000000000000000)
>>>>>>>> Pixel Size = (30.000000000000000,-30.000000000000000)
>>>>>>>>
>>>>>>>> Metadata:
>>>>>>>> AREA_OR_POINT=Point
>>>>>>>> METADATATYPE=ODL
>>>>>>>>
>>>>>>>> Image Structure Metadata:
>>>>>>>> INTERLEAVE=BAND
>>>>>>>>
>>>>>>>> Corner Coordinates:
>>>>>>>> Upper Left ( 145185.000, 2189715.000) Lower Left ( 145185.000,
>>>>>>>> 1967385.000) Upper Right ( 372315.000, 2189715.000) Lower Right (
>>>>>>>> 372315.000, 1967385.000)
>>>>>>>> Center ( 258750.000, 2078550.000)
>>>>>>>> Band 1 Block=7571x1 Type=UInt16, ColorInterp=Gray
>>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: gdal-dev [mailto:gdal-dev-bounces at lists.osgeo.org] On Behalf Of
>>>>>>>> Dmitry Baryshnikov
>>>>>>>> Sent: Sunday, January 17, 2016 6:57 AM
>>>>>>>> To: gdal-dev at lists.osgeo.org
>>>>>>>> Subject: Re: [gdal-dev] map info and projections from GeoTIFF file to
>>>>>>>> create ENVI header
>>>>>>>>
>>>>>>>> Hi Nevzat,
>>>>>>>>
>>>>>>>> The landsat geotiff already have CRS embeded in file
>>>>>>>>
>>>>>>>> $ gdalinfo LC80150362013097LGN03_B1.TIF
>>>>>>>> Driver: GTiff/GeoTIFF
>>>>>>>> Files: LC80150362013097LGN03_B1.TIF
>>>>>>>>
>>>>>>>> ./LC80150362013097LGN03_MTL.txt Size is 7281, 7261 Coordinate
>>>>>>>>
>>>>>>>> System is:
>>>>>>>> PROJCS["WGS 84 / UTM zone 17N",
>>>>>>>>
>>>>>>>> GEOGCS["WGS 84",
>>>>>>>>
>>>>>>>> DATUM["WGS_1984",
>>>>>>>>
>>>>>>>> SPHEROID["WGS 84",6378137,298.257223563,
>>>>>>>>
>>>>>>>> AUTHORITY["EPSG","7030"]],
>>>>>>>>
>>>>>>>> AUTHORITY["EPSG","6326"]],
>>>>>>>>
>>>>>>>> PRIMEM["Greenwich",0,
>>>>>>>>
>>>>>>>> AUTHORITY["EPSG","8901"]],
>>>>>>>>
>>>>>>>> UNIT["degree",0.0174532925199433,
>>>>>>>>
>>>>>>>> AUTHORITY["EPSG","9122"]],
>>>>>>>>
>>>>>>>> AUTHORITY["EPSG","4326"]],
>>>>>>>>
>>>>>>>> PROJECTION["Transverse_Mercator"],
>>>>>>>> PARAMETER["latitude_of_origin",0],
>>>>>>>> PARAMETER["central_meridian",-81],
>>>>>>>> PARAMETER["scale_factor",0.9996],
>>>>>>>> PARAMETER["false_easting",500000],
>>>>>>>> PARAMETER["false_northing",0],
>>>>>>>> UNIT["metre",1,
>>>>>>>>
>>>>>>>> AUTHORITY["EPSG","9001"]],
>>>>>>>>
>>>>>>>> AXIS["Easting",EAST],
>>>>>>>> AXIS["Northing",NORTH],
>>>>>>>> AUTHORITY["EPSG","32617"]]
>>>>>>>>
>>>>>>>> Origin = (706185.000000000000000,3943515.000000000000000)
>>>>>>>> Pixel Size = (30.000000000000000,-30.000000000000000)
>>>>>>>>
>>>>>>>> Metadata:
>>>>>>>> AREA_OR_POINT=Point
>>>>>>>> METADATATYPE=ODL
>>>>>>>>
>>>>>>>> Image Structure Metadata:
>>>>>>>> INTERLEAVE=BAND
>>>>>>>>
>>>>>>>> Corner Coordinates:
>>>>>>>> Upper Left ( 706185.000, 3943515.000) ( 78d43'24.74"W, 35d36'50.15"N)
>>>>>>>> Lower Left ( 706185.000, 3725685.000) ( 78d46'35.65"W, 33d39' 3.82"N)
>>>>>>>> Upper Right ( 924615.000, 3943515.000) ( 76d19' 2.05"W, 35d32'39.74"N)
>>>>>>>> Lower Right ( 924615.000, 3725685.000) ( 76d25'33.46"W, 33d35'10.99"N)
>>>>>>>> Center ( 815400.000, 3834600.000) ( 77d33'38.95"W, 34d36'17.35"N)
>>>>>>>> Band 1 Block=7281x1 Type=UInt16, ColorInterp=Gray
>>>>>>>>
>>>>>>>> And this is right CRS.
>>>>>>>> Where do you get you geotiff?
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>>
>>>>>>>> Dmitry
>>>>>>>>
>>>>>>>> 17.01.2016 03:41, Nevzat Guler
>>>>>>>> ÿøшõт:
>>>>>>>>> Dear experts,
>>>>>>>>>
>>>>>>>>> I am reading LANDSAT GeoTIFF files and combining bands to create and
>>>>>>>>> ENVI cube.
>>>>>>>>> I am using GDAL to read the GeoTIFF file, and my own custom cube
>>>>>>>>> writer to write the ENVI style cube. Transferring the map information
>>>>>>>>> proved to be a bit convoluted. I seek your help to figure out this.
>>>>>>>>>
>>>>>>>>> My first problem is to access map info from GeoTIFF file. The map
>>>>>>>>> info
>>>>>>>>> includes:
>>>>>>>>>
>>>>>>>>> map info = {UTM, 1.000, 1.000, 145185.000, 2189715.000,
>>>>>>>>> 3.0000000000e+001, 3.0000000000e+001, 19, North, WGS-84,
>>>>>>>>> units=Meters}
>>>>>>>>>
>>>>>>>>> I am able to get the location (x,y), and pixel size (x,y) from :
>>>>>>>>> double adfGeoTransform[6];
>>>>>>>>> srcDS->GetGeoTransform(adfGeoTransform);
>>>>>>>>>
>>>>>>>>> But, I could not find any way to get the other variables in the
>>>>>>>>> string: UTM, pixel tie points, Unit and DATUM. Is there any way to get
>>>>>>>>> them?
>>>>>>>>>
>>>>>>>>> Finally, for the Coordinate System String, GDAL gives me:
>>>>>>>>>
>>>>>>>>> PROJCS["unnamed",PROJECTION["Transverse_Mercator"],PARAMETER["latitud
>>>>>>>>> e
>>>>>>>>> _of_or
>>>>>>>>> igin
>>>>>>>>> ",0],PARAMETER["central_meridian",-69],PARAMETER["scale_factor",0.999
>>>>>>>>> 6
>>>>>>>>> ],PARA
>>>>>>>>> METE
>>>>>>>>> R["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",
>>>>>>>>> 1
>>>>>>>>> ]]
>>>>>>>>>
>>>>>>>>> But I should actually get
>>>>>>>>>
>>>>>>>>> PROJCS["UTM_Zone_19N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS
>>>>>>>>> 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0
>>>>>>>>> ,
>>>>>>>>> 0,0],A
>>>>>>>>> UTHO
>>>>>>>>> RITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],U
>>>>>>>>> N
>>>>>>>>> IT["de
>>>>>>>>> gree
>>>>>>>>> ",0.0174532925199433,AUTHORITY["EPSG","9108"]],AUTHORITY["EPSG","4326"
>>>>>>>>> ]],PRO
>>>>>>>>> JECT
>>>>>>>>> ION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETE
>>>>>>>>> R
>>>>>>>>> ["cent
>>>>>>>>> ral_
>>>>>>>>> meridian",-69],PARAMETER["scale_factor",0.9996],PARAMETER["false_east
>>>>>>>>> i
>>>>>>>>> ng",50
>>>>>>>>> 0000
>>>>>>>>> ],PARAMETER["false_northing",0],UNIT["Meter",1]]
>>>>>>>>>
>>>>>>>>> GDAL gives me PROJCS, "unnamed". And no GEOGCS information is given.
>>>>>>>>> I am able to get the coordinate system properties by using the
>>>>>>>>> following commands but I first need to set few things to use
>>>>>>>>> exportToWTK.
>>>>>>>>>
>>>>>>>>>>> OGRSpatialReference oSRS;
>>>>>>>>>>> char *pszWKT = NULL;
>>>>>>>>>>> oSRS.SetProjCS("UTM_Zone_19N");
>>>>>>>>>>> oSRS.SetWellKnownGeogCS("WGS84");
>>>>>>>>>>> oSRS.SetUTM(19, TRUE);
>>>>>>>>>>> oSRS.SetWellKnownGeogCS("WGS84");
>>>>>>>>>>> oSRS.exportToWkt(&pszWKT);
>>>>>>>>>>> printf("%s\n", pszWKT);
>>>>>>>>> However, this requires me to set SetProjCS, SetWellKnownGeogCS and
>>>>>>>>> SetUTM first. I don't know these before I read the file. Is there any
>>>>>>>>> way to get them from the file so that I don't need prior knowledge to
>>>>>>>>> create the header. When I pull the GeoTIFF file into ENVI, all these
>>>>>>>>> information is already there. If this list is only or development
>>>>>>>>> purposes, please let me know if there is any other email list that
>>>>>>>>> can give me guidance on this quest.
>>>>>>>>>
>>>>>>>>> I appreciate your help and suggestions.
>>>>>>>>> Best regards,
>>>>>>>>> - Nevzat
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> gdal-dev mailing list
>>>>>>>>> gdal-dev at lists.osgeo.org
>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>>>>>>>> _______________________________________________
>>>>>>>> gdal-dev mailing list
>>>>>>>> gdal-dev at lists.osgeo.org
>>>>>>>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>>>>>>> _______________________________________________
>>>>>>> gdal-dev mailing list
>>>>>>> gdal-dev at lists.osgeo.org
>>>>>>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>>>>>> Nevzat Guler
>>>>>> Senior Scientist
>>>>>> Spectral Sciences
>>>>>> Phone: 781-273-4770
>>>>>> http://www.spectral.com/index.shtml
>>>>>> http://www.linkedin.com/in/nevzatguler
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> gdal-dev mailing list
>>>>>> gdal-dev at lists.osgeo.org
>>>>>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>>>>> --
>>>>> Spatialys - Geospatial professional services
>>>>> http://www.spatialys.com
>>>>>
>>>> Nevzat Guler
>>>> Senior Scientist
>>>> Spectral Sciences
>>>> Phone: 781-273-4770
>>>> http://www.spectral.com/index.shtml
>>>> http://www.linkedin.com/in/nevzatguler
>>>>
>>>>
>>> Nevzat Guler
>>> Senior Scientist
>>> Spectral Sciences
>>> Phone: 781-273-4770
>>> http://www.spectral.com/index.shtml
>>> http://www.linkedin.com/in/nevzatguler
>>>
>>>
>>> _______________________________________________
>>> gdal-dev mailing list
>>> gdal-dev at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>> _______________________________________________
>> gdal-dev mailing list
>> gdal-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>>
>
> Nevzat Guler
> Senior Scientist
> Spectral Sciences
> Phone: 781-273-4770
> http://www.spectral.com/index.shtml
> http://www.linkedin.com/in/nevzatguler
>
>
>
More information about the gdal-dev
mailing list