Zrozumienie właściwości tworzenia kafelków mapy


10

Próbuję utworzyć mapę podstawową kafelków. Mam obraz, z którego chcę utworzyć kafelek i używam GDAL.

Udało mi się stworzyć kafelki, ale kiedy przeglądam wynik, wydaje się, że mapa kafelkowa to:

  1. Jest odwrócony
  2. Proporcje są nieprawidłowe

To jest obraz nakładki mapy: obraz mapy

Jest to wynik kafelkowania:

wynik kafelka

Wielokrotnie sprawdzałem, czy współrzędne są dobre, porównując rogi obrazu na ortofotografii.

Inną rzeczą jest to, że w Google Earth z tymi samymi współrzędnymi obraz mapy pasuje dokładnie do mapy google.

nakładka Google Earth

EDYTOWANE

gdalinfo map_overlay.png

z tym wyjściem:

Sterownik: PNG / Portable Network Graphics Pliki: map_overlay.png Rozmiar to 3527, 2494 Układ współrzędnych to `` Metadane struktury obrazu:
INTERLEAVE = PIXEL Współrzędne narożne: u góry po lewej (0,0, 0,0) u dołu po lewej (0,0, 2494,0) u góry po prawej (3527.0 , 0,0) Prawy dolny (3527.0, 2494.0) Środkowy (1763,5, 1247,4) Pasmo 1 blok = 3527x1 Typ = bajt, ColorInterp = Czerwone flagi maski: PER_DATASET ALPHA Pas 2 blok = 3527x1 Typ = Bajt, ColorInterp = Zielona maska ​​maski: PER_DATASET ALPHA Blok pasma 3 = 3527 x 1 Typ = bajt, ColorInterp = Niebieskie
flagi maski: PER_DATASET ALPHA Blok pasma 4 = 3527 x 1 Typ = bajt, ColorInterp = Alpha

Następnie przetłumacz:

gdal_translate -of VRT -a_srs EPSG: 4326 -gcp 0 0 31,7431761644 35.1680410195 -gcp 3527 0 31,7493769674 35,784535489 -gcp 3527 2492 31,7431011291 35,1784951643 -gcover 02494105.7431780

z tym wyjściem:

Rozmiar pliku wejściowego to 3527, 2494

i na koniec:

gdal2tiles.py -z 14-21 map_overlay.vrt

Nakładka to prosty obraz w formacie .png bez żadnych specjalnych danych.

Będę wdzięczny za wszelką pomoc.

Shani


2
Wydaje się, że występuje niespójność w gdal_translateparametrach, które tu umieściłeś: kojarzysz (lat, lon) = (31.7431761644, 35.1680410195) z dwoma wyraźnymi punktami na (0,0) i (0,2494). Czy to naprawdę wydane polecenie, czy to błąd kopiowania i wklejania?
whuber

Odpowiedzi:


5

Spróbuj użyć skoordynowanego obrazu przed ułożeniem go w stos jako:

   gdalwarp -of GTiff -t_srs EPSG:3857 input.tif output.tif 

AKTUALIZACJA

Uwaga: nawet jeśli określimy gcp, gdal_translatenie określiłby współrzędnych narożnych tiff.

Poza tym nie musisz tworzyć wirtualnego zestawu danych (.vrt), ponieważ masz tylko jeden plik ...

użyj następującego kodu:

  gdal_translate -of  GTiff  -gcp 0 0 31.7431761644 35.1680410195 -gcp 3527 0 
       31.7493769674 35.1784535489 -gcp 3527 2492 31.7431011291 35.1784951643
      -gcp 0 2494 31.7431761644 35.1680410195 map_overlay.png map_overlay.tif

następnie

  gdalwarp -s_srs epsg:4326 -t_srs epsg:4326  map_overlay.tif warped_map_overlay.tif

a teraz spróbuj użyć gdalinfo ... jeśli nie widzisz żadnego problemu, uruchom następującą komendę:

  gdal2tiles.py -z 14-21 warped_map_overlay.tif

jeśli twoje kafelki nie pasują, uruchom kod przed aktualizacją, dałem.

Możesz uzyskać więcej informacji tutaj

Mam nadzieję, że Ci to pomoże....


Dzięki. Kiedy powinienem to zrobić? na razie robię 1.gdalinfo map.png 2.gdal_translate-of VRT -a_srs EPSG: 4326 -gcp .... 3. gdal2tiles.py -z 10-16 map.vrt. Czy muszę to zrobić po tłumaczeniu? powinienem zmienić EPSG w metodzie tłumaczenia?
shannoga

jeśli twoja mapa nie jest skoordynowana, próba pobrania informacji za pomocą gdalinfo jest daremna.
Aragonia

Więc muszę zamiast tego użyć gdalwarp?
shannoga,

czy twoja mapa jest skoordynowana z jakąkolwiek projekcją, czy nie? jeśli tak, spróbuj użyć gdalwarp, aby go przerzucić, w przeciwnym razie dostosuj go do gdal_transform ...
Aragon,

Cześć dzięki za twojego pacjenta. Jeśli rozumiesz, masz rację, nie jest. jest to prosty kwadratowy obraz narysowany na podstawie mapy bez specjalnych danych. Zaktualizowałem pytanie za pomocą moich używanych poleceń. Jeszcze raz dziękuję za twoje próby pomocy.
shannoga
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.