Več

Gdal_retile.py pušča vrzeli v mozaiku

Gdal_retile.py pušča vrzeli v mozaiku


S pomočjo gdal_retile.py poskušam ustvariti brezhiben mozaik iz letalskih kart VFR FAA. Končni cilj je postreči mozaik s pomočjo razširitve ImagePyramid v GeoServerju. Vendar opažam vrzeli in neusklajenost nastalega mozaika po zagonu gdal_retile.py in nisem prepričan, kaj delam narobe. Še vedno sem relativno nov v GDAL in GIS na splošno.

Da bodo stvari enostavnejše, poskušam povezati samo dva rastra (namesto vseh 54):

Spodaj so ukazi, ki jih uporabljam, če želite nadaljevati. Te sem zagnal v Ubuntu 14.04 zgdal-bininpython-gdalnameščeni paketi.

1. Prenesite karte:

To ustvari začasno strukturo imenikov za vse nadaljnje spodnje ukaze in prenese originalne rastre za Cincinnati in 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_sections_files /Cincinnati_94.zip razpakirajte Cincinnati_94.zip

2. Prenesite izrezovalne oblike:

Če pogledate prvotne karte, boste videli, da po obodu obstajajo legende. Teh ne moremo vstaviti v mozaik, moramo jih odstraniti. V mojem javnem Dropboxu imam oblike za izrezovanje grafov Cincinnati in Detroit (od koder se prenesejo spodnji ukazi), lahko pa jih dobite tudi iz tega githubovega repozitorija: aviationCharts (podclippingShapes / prerezimenik; tu sem prvotno dobil oblike za izrezovanje, zato gre zasluga jlmcgraw).

cd… wget https://www.dropbox.com/s/2h2cyzkpih6dxpi/clippingShapes.zip unzip clippingShapes.zip

3. Razširite barve na RGB:

Če želite ustvariti mozaik, morajo imeti zrnca skupni barvni model, zato se oboje razširi na RGB.

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. Obreži legende in zavrni EPSG: 3857:

Če želite ustvariti mozaik, morajo imeti zrnca skupni koordinatni sistem. Izvirni rasterji, ki jih zagotavlja FAA, se vsak geografsko nanašajo na svoj lokalni koordinatni sistem (vsi so Lambert Conformal Conic, vendar imajo različne vrednosti za standardne vzporednice in zemljepisno dolžino izvora). Sčasoma bom mozaik serviral s pomočjo EPSG: 3857, torej to uporabljam tukaj.

Ta ukaz poleg ponovnega projiciranja za izrezovanje legend uporablja tudi prej izrezane oblike izrezovanja.

gdalwarp -overwrite -t_srs EPSG: 3857 -cutline clippingShapes / Cincinnati_SEC.shp -crop_to_cutline -dstalpha -of vrta -multi -wo NUM_THREADS = ALL_CPUS cincinnati_expanded.vrt cincinnati_warped.vrt gdalwarp -overwscutsetSSS-EPSWSGPset-DSWS-EPSWSHPGPSSPSPetset-DSWS-EPSWSHPGPSTPSPSPECTPSPSPECPPSPECPGPSECPGPSPSPECTSPSPECTSPSPECTGPSSECPGPSSECPGPSetCPSSPSPECTGPSSPSPECTSPSPECTSPSPECTSPSPECTSPSPECTSPSPECTSPSPECTPSPSECP -crop_to_cutline -dstalpha -of vrt -multi -wo NUM_THREADS = ALL_CPUS detroit_expanded.vrt detroit_warped.vrt

5. Ustvari slikovno piramido:

Ta ukaz ustvari ploščice z uporabo strukture imenika / datoteke, ki jo zahteva vtičnik ImagePyramid v programu GeoServer. Zagon lahko traja nekaj minut:

mkdir piramida gdal_retile.py -razine 4 -ps 2048 2048 -co "TILED = DA" -co "BLOCKXSIZE = 256" -co "BLOCKYSIZE = 256" -co "BLOCKYSIZE = 256" -s_srs EPSG: 3857 -targetDir piramida cincinnati_warped vrt detroit_warped.vrt

Žal nastali mozaik ima nekaj vrzeli in karte se ne ujemajo pravilno. Še posebej, če pogledate nastalo ploščicopiramida / cincinnati_06_01.tif:

Skozi sredino je vodoravna reža (karirasto ozadje, ki je prozorno) in grafikoni se ne poravnajo (med njima se nahaja območje prekrivanja in zdi se, dagdal_retilese podvaja, namesto da bi izbral enega - letališče RANDOLPH CO na levi se na primer prikaže dvakrat).

Zakaj se to dogaja?gdal_retilenaj bi podpiral prekrivajoče se lestvice in mislim, da sem izpolnil vse ostale zahteve - kaj delam narobe?

Če si ogledatecincinnati_warped.vrtindetroit_warped.vrt(vhodne datoteke, ki jih hranimgdal_retile.pyv zadnjem koraku) v QGIS ni vrzeli - slike se poravnajo v redu. Torej, ali je to vprašanje, kako uporabljamgdal_retileali nekakšna omejitev, na katero naletim? Ali lahko z drugim ukazom (ali prilagodim obstoječi ukaz) dobim želeni rezultat?

Še vedno sem razmeroma nov v GIS, še posebej v orodju GDAL. Zgoraj omenjeni projekt github (aviationCharts) mi je zelo pomagal, da sem to ugotovil, vendar poskušam ubrati nekoliko drugačen pristop (GeoServer + ImagePyramid, namesto mbtiles) in poskušam razumeti postopek in ugotoviti, zakaj stvari ne delujejo tako, kot sem mislil.


Poglej si posnetek: How to install a glass mosaic tile backsplash Parts 1,2 and 3