[osg-users] convert GPS coordinates to local terrain coordinates

Stephane DUGUET sduguet at eurilogic.fr
Tue Dec 4 00:10:56 PST 2007


Thanks Glenn,

 

My txp file is « Los Angeles ».

I'll have a look to OGR/GDAL and come back to you is any issue.

 

By the way, the most important for my project is to know the projection type associated with the terrain is mandatory. So If I want to be compatible with any terrain, I need to introduce a kind of terrain's user description at selection time.

 

BR,

 

Stephane

 

________________________________

De : osg-users-bounces at lists.openscenegraph.org [mailto:osg-users-bounces at lists.openscenegraph.org] De la part de Glenn Waldron
Envoyé : lundi 3 décembre 2007 19:10
À : OpenSceneGraph Users
Objet : Re: [osg-users] convert GPS coordinates to local terrain coordinates

 

Stephane,

The TXP doesn't explicitly contain its projection. You need to go back to the TerraVista project. We can make an educated guess though; Where is your database? City, country?

As for converting the lat/lon, OSG does not do this natively. You can use OGR ( http://gdal.org/ogr/) which is part of GDAL. Or (shameless plug) use the osgGIS library (http://osggis.org) which has a SpatialReference class that encapsulates OGR/PROJ4 coordinate conversion. 

-gw



On Dec 3, 2007 11:08 AM, Stephane DUGUET <sduguet at eurilogic.fr> wrote:

Thanks Glenn,

 

It helped a lot as I was completely wrong.

 

My projInfo.txt file is as following, meaning my offsets are set to 0? 

 

My csm=Projected

originlat=33.094356133212699

originlon=-117.642398847633000

zunits=1.000000000000000

selectorId=60000

dcType=NONE

dcSelectorId=0

txpOffsetX=0.000000

txpOffsetY=0.000000

txpOffsetZ=0.000000

 

By the way how can I retrieve the terrain projection type? 

And then, how can I convert lat/lon to the terrain's projection? 

 

BR,


Stephane

 

________________________________

De : osg-users-bounces at lists.openscenegraph.org [mailto:osg-users-bounces at lists.openscenegraph.org] De la part de Glenn Waldron
Envoyé : lundi 3 décembre 2007 16:47
À : OpenSceneGraph Users
Objet : Re: [osg-users] convert GPS coordinates to local terrain coordinates

 

Stephane,

If you TXP database is in a flat-earth projection, like UTM or state plane, the osg::Ellipsoid functions will not help. They convert to and from geocentric (earth-centered) coordinates.

TerraVista generates a " projInfo.txt" file along with the TXP database. This contains the "txpOffsetX" and "txpOffsetY" properties that tell the local offset of the lower-left corner of your TXP terrain, relative to the geographic projection in which you generated the terrain. 

So to go from lat/lon to scene coordinates, you need to:

1. convert lat/lon to the terrain's projection (e.g., UTM)
2. translate the resulting coordinates by the offset in the projInfo.txt file

hth -gw

On Dec 3, 2007 9:59 AM, Stephane DUGUET <sduguet at eurilogic.fr> wrote:

Hello,

 

I'm new on OSG scene.

Here is my issue:

I have a TXP terrain on which I know the local origin coordinates. This coordinates are:

Longitude : -117.642222

Latitude : 33.094444

 

I now whant to know the local coordinates (within my TXP terrain) of a know location (GPS cocordinate):

Longitude: -117.3636264412 

Latitude: 33.2940335740

 

I use ElModel->convertLatLongHeightToXYZ to transform the goedesic coordinates in caretsian ones. What I need now if to transform the resulting coordinates according to the origin's location in order to take care of my offset.

 

Any idea of how to perform this?

 

I tried the following:

 

 OriLongitude=-117.642222 /*origin*/;

 OriLatitude=33.094444/*origin*/;

 OriAltitude=0;

 ElModel->convertLatLongHeightToXYZ (osg::DegreesToRadians(OriLatitude),

 osg::DegreesToRadians(OriLongitude), 

                                    OriAltitude,  

                                    oriX,  

                                    oriY,  

                                    oriZ );

 

 

ElModel->convertLatLongHeightToXYZ (osg::DegreesToRadians(33.2940335740),

                                    osg::DegreesToRadians(-117.3636264412), 

                                    0,  

                                    x,  

                                    y,  

                                    z );

 

 

xl=-sin(OriLongitude)*(x-oriX)+ cos(OriLongitude)*(y-oriY);

yl=-sin(OriLatitude)*cos(OriLongitude)*(x-oriX)

  -sin(OriLatitude)*sin(OriLongitude)*(y-oriY)

  +cos(OriLatitude)*(z-oriZ);

zl=cos(OriLatitude)*cos(OriLongitude)*(x-oriX)

  +cos(OriLatitude)*sin(OriLongitude)*(y-oriY)

  +sin(OriLatitude)*(z-oriZ);

 

But I still cannot have good results.

I have some doubts about the "-" sign applied to the longitude for a West direction.

 

Thanks for your help,

 

Best regards,

 

Stephane

 

 

 


_______________________________________________
osg-users mailing list
osg-users at lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




-- 
Glenn Waldron : Pelican Mapping : http://pelicanmapping.com : 703-652-4791 


_______________________________________________
osg-users mailing list
osg-users at lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




-- 
Glenn Waldron : Pelican Mapping : http://pelicanmapping.com : 703-652-4791 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20071204/3b1b0763/attachment-0001.htm 


More information about the osg-users mailing list