comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: lon-lat coordinates for Geotiff images?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: lon-lat coordinates for Geotiff images? [message #72034] Wed, 04 August 2010 05:49 Go to next message
David Fanning is currently offline  David Fanning
Messages: 11724
Registered: August 2001
Senior Member
Dave Poreh writes:

> I have some geotiff images (DEM). I can read these files with:
> im=read_tiff(file)
> And I can contour them:
> CONTOUR, im, /FILL, NLEVELS = 7
> But in the contour I get the pixel locations in the x-y axis (local
> coordinates). Does anybody know how could I get lon-lat coordinates in
> x-y axis?

In a contour plot you have some kind of regular (or irregular)
grid. That is to say, your labels are labels of straight lines.
That is seldom true of a map, where straight lines don't seem
to exist.

There is a grid of straight lines associated with a map-
projected image, however. This is the XY grid, which can
be read directly from the GeoTiff file:

http://www.dfanning.com/map_tips/tiffoverlay.html

I would create these vectors using tools from the
Catalyst Library:

mapCoord = GeoCoord('mygeoTiffFile.tif')
mapCoord -> GetProperty, XRANGE=xr, YRANGE=yr
image = Read_Tiff(('mygeoTiffFile.tif')
s = Size(image, /DIMENSIONS)
xvec = Scale_Vector(Findgen(s[0]), xr[0], xr[1])
yvec = Scale_Vector(Findgen(s[1]), yr[0], yr[1])

Then, you could draw your contour plot:

pos = [0.15, 0.15, 0.9, 0.9]
Contour, Reverse(image,2), xvec, yvec, XStyle=1, $
YStyle=1, Position=pos, NLEVELS=7, /FILL

If you wanted to know the latitude and longitude of
any point in the image, you could convert the XY location
to a lon/lat location:

mapStruct = mapCoord->GetMapStructure()
lonlat = Map_Proj_Inverse(x, y, MAP_STRUCTURE=mapStruct)
lon = lonlat[0]
lat = lonlat]1]

If you wanted to see a lat/lon map grid on your contour map, you
could easily add it like this:

grid = Obj_New('Map_Grid', MAPCOORD=mapCoord, /AUTODRAW_GRID, $
COLOR='gray')
mapCoord -> SetProperty, POSITION=pos, GRID_OBJECT=grid
mapCoord -> Draw, /OVERLAYS

Cheers,

David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
Re: lon-lat coordinates for Geotiff images? [message #72157 is a reply to message #72034] Thu, 05 August 2010 02:39 Go to previous message
d.poreh is currently offline  d.poreh
Messages: 406
Registered: October 2007
Senior Member
On Aug 4, 5:49 am, David Fanning <n...@dfanning.com> wrote:
> Dave Poreh writes:
>> I have some geotiff images (DEM). I can read these files with:
>> im=read_tiff(file)
>> And I can contour them:
>> CONTOUR, im, /FILL, NLEVELS = 7
>> But in the contour I get the pixel locations in the x-y axis (local
>> coordinates). Does anybody know how could I get lon-lat coordinates in
>> x-y axis?
>
> In a contour plot you have some kind of regular (or irregular)
> grid. That is to say, your labels are labels of straight lines.
> That is seldom true of a map, where straight lines don't seem
> to exist.
>
> There is a grid of straight lines associated with a map-
> projected image, however. This is the XY grid, which can
> be read directly from the GeoTiff file:
>
>   http://www.dfanning.com/map_tips/tiffoverlay.html
>
> I would create these vectors using tools from the
> Catalyst Library:
>
>    mapCoord = GeoCoord('mygeoTiffFile.tif')
>    mapCoord -> GetProperty, XRANGE=xr, YRANGE=yr
>    image = Read_Tiff(('mygeoTiffFile.tif')
>    s = Size(image, /DIMENSIONS)
>    xvec = Scale_Vector(Findgen(s[0]), xr[0], xr[1])
>    yvec = Scale_Vector(Findgen(s[1]), yr[0], yr[1])
>
> Then, you could draw your contour plot:
>
>    pos = [0.15, 0.15, 0.9, 0.9]
>    Contour, Reverse(image,2), xvec, yvec, XStyle=1, $
>       YStyle=1, Position=pos, NLEVELS=7, /FILL
>
> If you wanted to know the latitude and longitude of
> any point in the image, you could convert the XY location
> to a lon/lat location:
>
>    mapStruct = mapCoord->GetMapStructure()
>    lonlat = Map_Proj_Inverse(x, y, MAP_STRUCTURE=mapStruct)
>    lon = lonlat[0]
>    lat = lonlat]1]
>
> If you wanted to see a lat/lon map grid on your contour map, you
> could easily add it like this:
>
>    grid = Obj_New('Map_Grid', MAPCOORD=mapCoord, /AUTODRAW_GRID, $
>        COLOR='gray')
>    mapCoord -> SetProperty, POSITION=pos, GRID_OBJECT=grid
>    mapCoord -> Draw, /OVERLAYS
>
> Cheers,
>
> David
> --
> David Fanning, Ph.D.
> Fanning Software Consulting, Inc.
> Coyote's Guide to IDL Programming:http://www.dfanning.com/
> Sepore ma de ni thui. ("Perhaps thou speakest truth.")

Thanks David it was very helpful!
Cheers
Dave
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: Correlation between bands using IDL
Next Topic: Re: user-selected ROIs

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 15:13:41 PDT 2025

Total time taken to generate the page: 0.15613 seconds