Suite

Gdal_retile.py laissant des espaces dans la mosaïque


J'essaie de créer une mosaïque transparente à partir des cartes aéronautiques VFR de la FAA en utilisant gdal_retile.py. L'objectif final est de servir la mosaïque à l'aide de l'extension ImagePyramid dans GeoServer. Cependant, je constate des lacunes ainsi qu'un désalignement dans la mosaïque résultante après avoir exécuté gdal_retile.py, et je ne suis pas sûr de ce que je fais mal. Je suis encore relativement nouveau sur GDAL et SIG en général.

Pour simplifier les choses, j'essaie d'assembler seulement 2 rasters (au lieu de tous les 54):

Vous trouverez ci-dessous les commandes que j'utilise si vous souhaitez suivre. Je les ai exécutés sur Ubuntu 14.04 avec legdal-binetpython-gdalpaquets installés.

1. Téléchargez les graphiques :

Cela crée une structure de répertoire temporaire pour toutes les commandes suivantes ci-dessous et télécharge les rasters originaux pour Cincinnati et Detroit.

mkdir temp && cd temp mkdir charts && cd charts wget http://aeronav.faa.gov/content/aeronav/sectional_files/Detroit_90.zip unzip Detroit_90.zip wget http://aeronav.faa.gov/content/aeronav/sectional_files /Cincinnati_94.zip décompressez Cincinnati_94.zip

2. Téléchargez les formes de détourage :

Si vous regardez les graphiques originaux, vous verrez qu'il y a des légendes autour du périmètre. Nous ne pouvons pas les coudre dans la mosaïque, nous devons les découper. J'ai les formes de découpage pour les graphiques de Cincinnati et de Detroit dans ma Dropbox publique (d'où les commandes ci-dessous sont téléchargées), mais vous pouvez également les obtenir à partir de ce référentiel github : aviationCharts (sous ledécoupageFormes/sectionnelannuaire; c'est de là que j'ai obtenu à l'origine les formes de découpage, donc le mérite revient à jlmcgraw).

cd… wget https://www.dropbox.com/s/2h2cyzkpih6dxpi/clippingShapes.zip décompresser clippingShapes.zip

3. Développez les couleurs en RVB :

Pour créer une mosaïque, les granulés doivent avoir un modèle de couleur commun, ce qui étend les deux à RVB.

gdal_translate -strict -of VRT -expand rgb "charts/Cincinnati SEC 94.tif" cincinnati_expanded.vrt gdal_translate -strict -of VRT -expand rgb "charts/Detroit SEC 90.tif" detroit_expanded.vrt

4. Rogner les légendes et reprojeter vers EPSG : 3857 :

Pour créer une mosaïque, les granulés doivent tous avoir un système de coordonnées commun. Les rasters d'origine fournis par la FAA sont chacun géoréférencés dans leur propre système de coordonnées local (ils sont tous des coniques conformes de Lambert, mais ont des valeurs différentes pour les parallèles standard et la longitude d'origine). Je servirai éventuellement la mosaïque en utilisant EPSG:3857, c'est donc ce que j'utilise ici.

En plus de la reprojection, cette commande utilise également les formes de découpage téléchargées précédemment pour rogner les légendes.

gdalwarp -overwrite -t_srs EPSG:3857 -cutline clippingShapes/Cincinnati_SEC.shp -crop_to_cutline -dstalpha -of vrt -multi -wo NUM_THREADS=ALL_CPUS cincinnati_expanded.vrt cincinnatiwrite_warped.vrt -dstalpha -of vrt -over -crop_to_cutline -dstalpha -of vrt -multi -wo NUM_THREADS=ALL_CPUS detroit_expanded.vrt detroit_warped.vrt

5. Créez la pyramide d'images :

Cette commande crée les tuiles en utilisant la structure de répertoire/fichier requise par le plugin ImagePyramid dans GeoServer. L'exécution de l'opération peut prendre quelques minutes :

mkdir pyramide gdal_retile.py -levels 4 -ps 2048 2048 -co "TILED=YES" -co "BLOCKXSIZE=256" -co "BLOCKYSIZE=256" -co "BLOCKYSIZE=256" -s_srs EPSG:3857 -targetDir pyramide cincinnati_warped. vrt detroit_warped.vrt

Malheureusement, la mosaïque résultante présente des lacunes et les graphiques ne s'alignent pas correctement. En particulier, si vous regardez la tuile résultantepyramide/cincinnati_06_01.tif:

Il y a un espace horizontal au milieu (fond quadrillé, qui est transparent), et les graphiques ne sont pas alignés (il y a une zone de chevauchement entre les deux graphiques, et il semblegdal_retileest en train de dupliquer au lieu d'en choisir un - par exemple, l'aéroport RANDOLPH CO sur la gauche apparaît deux fois).

Pourquoi cela se produit-il ?gdal_retileest censé prendre en charge les graphiques qui se chevauchent, et je pense avoir satisfait à toutes les autres exigences - qu'est-ce que je fais mal ?

Si vous visualisezcincinnati_warped.vrtetdetroit_warped.vrt(les fichiers d'entrée que je nourrisgdal_retile.pydans la dernière étape) dans QGIS, il n'y a pas d'espace - les images s'alignent bien. Alors, est-ce un problème avec la façon dont j'utilisegdal_retile, ou une sorte de limitation que je rencontre? Y a-t-il une commande différente que je peux utiliser (ou ajuster ma commande existante) pour obtenir le résultat que je veux ?

Je suis encore relativement nouveau sur les SIG, et en particulier sur la boîte à outils GDAL. Le projet github mentionné ci-dessus (aviationCharts) m'a beaucoup aidé à comprendre cela, mais j'essaie d'adopter une approche légèrement différente (GeoServer + ImagePyramid, au lieu de mbtiles), et j'essaie également de comprendre le processus et de comprendre pourquoi les choses ne fonctionnent pas comme je le pensais.


Voir la vidéo: Équipes de lErmitage, Dignité et narcissisme au cœur de laccompagnement (Octobre 2021).