Wrzesień 2009
Cel
Ten samouczek przedstawia podstawy tworzenia nakładki nakładki, czyli zestawu nawierzchni, które korzystają z linków NetworkLink w poszczególnych regionach, przy użyciu narzędzi Open Asurstration Data Abstrtion Library.
Wprowadzenie
Przeglądarki takie jak Google Earth czy Mapy Google udostępniają zdjęcia satelitarne i fragmenty mapy. Czasem jednak warto użyć własnych. Dane rastrowe są dostępne w wielu formach i mają wiele zastosowań.
- Umieszczanie zdjęć satelitarnych lub lotniczych w przeglądarce geograficznej
- umieszczanie na mapach istniejących map, np. warstwy Rumey w Google Earth;
- Importowanie danych GIS w formie rastrowania
- Umieszczam zdjęcia LIDAR lub zdjęcia w podczerwieni w przeglądarce geograficznej
Jednym z problemów związanych z danymi rastrowymi o wysokiej rozdzielczości jest to, że ich wyświetlanie wymaga dużo pamięci. Jeśli rozsyłasz ją przez sieć, masz też problemy z przepustowością. Aby rozwiązać ten problem, musisz utworzyć kafelki.
Sąsiadując plik obrazu, można podzielić go na wiele różnych obrazów, które ładują się po wyświetleniu. Tworzysz jeden obraz o niskiej rozdzielczości do wyświetlenia, gdy użytkownik jest pomniejszony. Na tym samym obszarze tworzysz 4 obrazy w wyższej rozdzielczości, które są lepiej widoczne. W przypadku każdego obszaru nałożonego na obraz tworzysz 4 obrazy o większej rozdzielczości, aby przybliżyć itd. Jest to nazywane metodą kwadrat, która pokazuje ułożenie zdjęć w Google Earth i Mapach Google. Cały proces został szczegółowo wyjaśniony w przewodniku KML dla programistów dotyczącym regionów.
Można to zrobić ręcznie za pomocą aplikacji do edycji grafiki, takiej jak Adobe Photoshop lub GIMP, ale jest to skomplikowana, żmudna i podatna na błędy. Dostępnych jest też wiele dobrych aplikacji, głównie na Windows, takich jak SuperOverlay, Arc2Earth i MapCruncher w połączeniu z CrunchUp2KML.
Jeśli chcesz zautomatyzować ten proces lub dodać funkcje do swojej aplikacji, skorzystaj z GDAL zapewniającego bogaty zestaw narzędzi do pracy z danymi rastrowymi i wektorowymi. W tym artykule omawiamy opcje wiersza poleceń. Biblioteki można też łatwo włączyć do własnych aplikacji. W tym samouczku będziesz używać narzędzi gdalinfo
, gdal_translate
, gdalwarp
i gdal2tiles
. Ostateczny wynik to supernakładka.
Kroki w wierszu poleceń
Aby korzystać z GDAL w wierszu poleceń, trzeba wykonać 6 kroków.
- Pobierz i zainstaluj GDAL
- Pobieranie obrazu
- Użyj
gdalinfo
, aby określić informacje o obrazie - Użyj
gdal_translate
, aby określić lokalizację geograficzną obrazu gdalwarp
pozwala zmienić odwzorowanie obrazu- Użyj
gdal2tiles
, aby podzielić obraz na fragmenty i utworzyć powiązany kod KML
Krok 1. Pobierz i zainstaluj GDAL
Na początek pobierz i zainstaluj GDAL zgodnie z tymi instrukcjami.
Krok 2. Pobierz obraz
Możesz użyć dowolnego obrazu. Istnieje wiele źródeł danych geograficznych. Możesz użyć dowolnego z tych elementów, ale musisz znać granice szerokości i długości geograficznej każdego z rogów obrazu. Ten samouczek wykorzystuje obraz NASA Blue Marble, który można pobrać z witryny NASA. Te zdjęcia zostały zrobione w 2004 roku i przedstawiają piękny obraz Ziemi z kosmosu. Wybierz jeden z plików w prawym dolnym rogu paska nawigacyjnego.
Jeśli używasz własnego obrazu i wiesz, że jest on już georeceptowany, możesz przejść do kroku 5. W przeciwnym razie przejdź do kroku 3.
Krok 3. Uzyskaj informacje o obrazie
Po zainstalowaniu bibliotek GDAL i wybraniu obrazu musisz uzyskać pewne informacje na jego temat, aby można było z niego korzystać w odniesieniu do lokalizacji geograficznej. W szczególności potrzebujesz lokalizacji pikseli i linii każdego rogu obrazu. Jeśli wyobrazisz obraz w formie tabeli, z kolumnami i wierszami, piksele będą kolumnami, a wiersze –.
GDAL to przydatne narzędzie do zbierania tych informacji, gdalinfo
. W wierszu poleceń wpisz gdalinfo filename
, zastępując filename
ścieżką do pliku. Dane wyjściowe powinny wyglądać tak:
Driver: JPEG/JPEG JFIF Files: world_200401.jpg Size is 21600, 10800 Coordinate System is `' Image Structure Metadata: SOURCE_COLOR_SPACE=YCbCr INTERLEAVE=PIXEL COMPRESSION=JPEG Corner Coordinates: Upper Left ( 0.0, 0.0) Lower Left ( 0.0,10800.0) Upper Right (21600.0, 0.0) Lower Right (21600.0,10800.0) Center (10800.0, 5400.0) Band 1 Block=21600x1 Type=Byte, ColorInterp=Red Image Structure Metadata: COMPRESSION=JPEG Band 2 Block=21600x1 Type=Byte, ColorInterp=Green Image Structure Metadata: COMPRESSION=JPEG Band 3 Block=21600x1 Type=Byte, ColorInterp=Blue Image Structure Metadata: COMPRESSION=JPEG
Ważne informacje w tym samouczku to linie w lewym górnym rogu, w lewym dolnym rogu, w prawym górnym rogu i w prawym dolnym rogu. Są to wartości pikseli i linii każdego rogu. W lewym górnym rogu znajduje się wartość 0,0, a prawy dolny – 21600 10800.
Krok 4. Dodaj geograficznie obraz
W tym przypadku tworzenie georeferencji oznacza tworzenie metadanych opisujących położenie geograficzne każdego z rogów obrazu. Na podstawie informacji uzyskanych w kroku 3 i gdal_translate
możesz przypisać do pliku informacje georeferencyjne. Spowoduje to utworzenie pliku VRT z obrazu world_200401.jpg
(bluemarble1.vrt
). Pliki VRT to pliki XML zawierające informacje o konkretnej przekształceniu, w tym przypadku o kroku gdal_translate
. Użyjesz go ponownie w następnym kroku, aby utworzyć końcowy zestaw kafelków. gdal_translate
umożliwia wydawanie wielu typów plików wyjściowych, w tym głównych formatów plików graficznych. Użycie danych wyjściowych VRT pozwala odłożyć tworzenie plików wyjściowych do ostatniego kroku. Zwiększa to wydajność i skraca czas oczekiwania na poszczególne kroki, jeśli wykonujesz wiersz poleceń. Oto polecenie, które należy uruchomić:
gdal_translate -of VRT -a_srs EPSG:4326 -gcp 0 0 -180 90 -gcp 21600 0 180 90 -gcp 21600 10800 180 -90 world_200401.jpg bluemarble1.vrt
W tym wierszu znajduje się wiele informacji, więc zostanie przedstawiony w następującym rozdziale:
-of
to format wyjściowy, w tym przypadku VRT.-a_srs
przypisuje do pliku system plików przestrzennych. Dzięki temu każda aplikacja korzystająca z koordynatora może zostać użyta. W tym przypadku jest to adres EPSG:4326, taki sam jak WGS84 – układ współrzędnych używany przez Google Earth.-gcp
(punkt kontrolny na poziomie terenu) przypisuje współrzędne do pozycji w pliku. W tym przypadku potrzebujesz tylko 3 punktów, ponieważ obraz jest prostokątny, więc 4 punkt można łatwo rozpoznać. W przypadku-gcp
zdefiniuj GCP, ustawiając piksel, potem numer wiersza, a następnie długość i szerokość geograficzną. Każda z nich jest oddzielona spacją.- Ostatnie 2 parametry to plik źródłowy i docelowy.
Krok 5. Zwijaj obraz
Oryginalny obraz nie został utworzony dla okrągłej kuli ziemskiej, ale wygląda na płaską. W GIS jest to projekcja, co oznacza, że jest to dwuwymiarowe przedstawienie obiektu trójwymiarowego. Odwzorowanie wymaga zniekształcenia obrazu, tak aby wyglądał on tak, jak można oczekiwać płaskiego obrazu Ziemi.
Aby uzyskać prawidłowy wygląd, musisz zdjąć obraz, aby pasował do kuli ziemskiej. Na szczęście GDAL świetnie się do tego nadaje. Po prostu wpisz gdalwarp -of VRT -t_srs EPSG:4326 bluemarble1.vrt bluemarble2.vrt
. Spowoduje to utworzenie nowego pliku bluemarble2.vrt, który zawiera metadane dotyczące procesu zwijania.
Krok 6. Utwórz kafelki
Już prawie gotowe, ale ten czas potrwa dłużej. Aby utworzyć kafelki, wpisz gdal2tiles.py -p geodetic -k bluemarble2.vrt
. Pole -k
wymusza użycie danych wyjściowych w formacie KML. W ten sposób utworzysz strukturę katalogu z nakładką. Ponieważ każdy z tych plików trzeba utworzyć osobno, może to trochę potrwać. W przypadku dużych zdjęć możesz jeść, napić się kawy, wziąć drzemkę albo zamówić lekki posiłek. Gdy skończysz, otwórz doc.kml
i obserwuj wyniki.
Podsumowanie
Ten samouczek pokazuje tylko możliwości GDAL, ale zapewnia wygodny mechanizm generowania kafelków. Podstawowe biblioteki GDAL są napisane w języku C++, ale zawierają powiązania dla Perl, Python, VB6, R, Ruby, Java oraz C#/.NET, co oznacza, że możesz łatwo umieścić GDAL we własnych aplikacjach. Poza tym wiele narzędzi, w tym gdal2tiles
, jest napisanych w języku Python, co ułatwia ich integrację z aplikacjami w tym języku. gdal2tiles
może też generować strony interfejsu API Map Google i Openwarstw.