J'ai une image raster géotiff qui a un système de coordonnées avec des longitudes de 0 à 360. Le centre horizontal de l'image est 180 longtitude. Voir l'image ci-dessous:
Je veux le transformer en EPSG: 4326 SRS avec une plage de -180 180 longtitude. Et je veux que le centre de l'image soit au méridien de Greenwich (0). Je suppose que ce srs est très largement utilisé. Je m'attends à ce que le résultat ressemble à ceci:
J'utilise donc une commande gdalwarp pour reprojeter:
gdalwarp -s_srs '+proj=latlong +datum=WGS84 +pm=180dW' -t_srs EPSG:4326 test_col.tif test_4326.tif
Mais je ne reçois qu'un tiff avec de plus grandes dimensions (plus de pixels) et des métadonnées EPSG: 4326. L'image elle-même a la même apparence que l'image initiale. Mais je m'attends à ce qu'il permute les hémisphères.
La question est - comment puis-je déformer une image pour qu'elle soit strictement -180 180 EPSG: 4326 avec le centre en 0 longtitude?
Voici gdalinfo de mon fichier initial:
Origin = (-0.102272598067084,89.946211604095552)
Pixel Size = (0.204545196134167,-0.204423208191126)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=BAND
Corner Coordinates:
Upper Left ( -0.1022726, 89.9462116) ( 0d 6' 8.18"W, 89d56'46.36"N)
Lower Left ( -0.1022726, -89.9462116) ( 0d 6' 8.18"W, 89d56'46.36"S)
Upper Right ( 359.897, 89.946) (359d53'50.18"E, 89d56'46.36"N)
Lower Right ( 359.897, -89.946) (359d53'50.18"E, 89d56'46.36"S)
Center ( 179.8975000, -0.0000000) (179d53'51.00"E, 0d 0' 0.00"S)
Ceci est gdalinfo après gdalwarp
Origin = (-180.102727401932952,89.946211604095552)
Pixel Size = (0.091397622896436,-0.091420837939082)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left (-180.1027274, 89.9462116) (180d 6' 9.82"W, 89d56'46.36"N)
Lower Left (-180.1027274, -89.9699975) (180d 6' 9.82"W, 89d58'11.99"S)
Upper Right ( 179.8211116, 89.9462116) (179d49'16.00"E, 89d56'46.36"N)
Lower Right ( 179.8211116, -89.9699975) (179d49'16.00"E, 89d58'11.99"S)
Center ( -0.1408079, -0.0118929) ( 0d 8'26.91"W, 0d 0'42.81"S)
la source
-tr xres yres
drapeau?Réponses:
Vous pouvez définir explicitement la plage de coordonnées de sortie à l'aide de l'option d'étendue cible sur gdalwarp (c'est-à-dire "-te -180 -90 180 90"), mais vous pouvez également utiliser l'option de configuration CENTER_LONG pour forcer le reconditionnement autour d'une nouvelle longitude centrale. Quelque chose comme ça:
Notez également l'option de déformation "SOURCE_EXTRA = 1000". Lors du reconditionnement, le calcul du rectangle source se confondra autour de l'interruption de la longitude et perdra des images. Cette option dit tirer un peu plus. Sans cela, vous verrez un écart de données près du méridien principal.
PS définir un méridien principal de 180dW comme vous l'avez fait n'est pas une bonne idée à mon humble avis.
la source
--config CENTER_LONG 0
ne fait rien, le résultat est le même raster. Quelque chose me manque ici? Fonctionnant sur GDAL version 2.2.3.Fondamentalement, vous devez couper le raster en deux parties et les reconstituer avec un nouveau décalage / échelle.
Il y a un exemple ici de la façon de faire de [-180,180] à [0,360] avec gdal_translate et le pilote VRT: http://trac.osgeo.org/gdal/wiki/UserDocs/RasterProcTutorial
Parcourez le «didacticiel de 5 minutes» et les détails se trouvent sous «Fichiers virtuels». Il devrait être assez simple de modifier l'exemple pour l'adapter.
la source
Cela peut être fait en R avec une ligne de code en utilisant la
rotate
fonction avec leraster
package.la source
Si vous souhaitez simplement afficher le raster dans QGIS, vous pouvez définir une projection personnalisée avec le paramètre + lon_wrap = 180.
Ma compréhension de cela est que, par défaut, proj4 enveloppe les latitudes de 0 -> 360 à -180 -> 180. + lon_wrap = 180 annulera efficacement cet habillage et affichera les latitudes entre 180 et 360 dans l'hémisphère occidental.
L'option + over devrait désactiver complètement le wrapping, mais - au moins dans mon cas - le raster ne s'affichait pas correctement lorsque cette option était utilisée.
Voir http://proj4.org/parameters.html#lon-wrap-over-longitude-wrapping pour plus d'informations.
la source
Voici une fonction que j'ai construite pour reprojeter un seul tableau de valeurs de grille à l'aide de javascript de 0-360 à -180-180. J'espère que cela peut être utile à quelqu'un.
la source