banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB