#1 Thu 30 August 2012 09:25
- gael.k
- Juste Inscrit !
- Date d'inscription: 30 Aug 2012
- Messages: 1
GDAL : Projection simple en Lat/Lon degrés
Dans un logiciel de cartographie, l'ensemble des données sont référencées en lat/lon (degrés), puis projetés à l'écran (projection orthographique linéaire).
J'utilise GDAL pour accéder aux données mais impossible d'obtenir les coordonnées en lat/lon (degrés) d'un raster (ici requête sur un serveur WMS mais c'est la même chose sur une image *.tif en local).
Existe t-il un moyen d'obtenir les coordonnées lat/lon degrés d'un raster, même en passant par l'un des utilitaire pré-compilé (gdal_warp) ?
Voici mon code en C++ :
Code:
int res = poDataset->GetGeoTransform( adfGeoTransform ); // Projection OGRSpatialReference oSourceSRS, oTargetSRS; char *wkt = new char[1024]; strcpy (wkt, srcProj); char *wkt_84 = "EPSG:4326"; int n = oSourceSRS.importFromWkt (&wkt); int t = oTargetSRS.importFromWkt( &wkt_84 ); OGRCoordinateTransformation *poCT = OGRCreateCoordinateTransformation( &oSourceSRS, &oTargetSRS ); double x0 = adfGeoTransform[0]; double y0 = adfGeoTransform[3]; double x1 = x0 + adfGeoTransform[1]*width; double y1 = y0 + adfGeoTransform[5]*height; if( poCT == NULL || !poCT->Transform( 1, &x0, &y0 ) ) { printf( "Transformation failed.\n" ); } else { // obtenir l'emprise géographique en degrés lat/lon poCT->Transform( 1, &x0, &y0 );
Hors ligne
#2 Thu 30 August 2012 20:02
- rouault
- Participant assidu
- Date d'inscription: 26 Apr 2009
- Messages: 168
Re: GDAL : Projection simple en Lat/Lon degrés
Ca me parait globalement correct, mais il y a au moins une erreur au niveau de l'appel oTargetSRS.importFromWkt( &wkt_84 ) (la valeur de retour doit certainement être un code d'erreur d'ailleurs). Le problème est que la chaine passée n'est pas du WKT. Avec cette chaine-là, il faudrait plutôt utiliser oTargetSRS.SetFromUserInput(wkt_84), où alors fournir directement le code EPSG : oTargetSRS.importFromEPSG(4326)
Hors ligne