KML i KMZ na mapie — od Google Earth do polskich układów
KML (Keyhole Markup Language) to pierwotnie format Google Earth — a od 2008 roku otwarty standard OGC. Od tras rysowanych ręcznie w Google Earth po nakładki ortofotomap od urzędów: KML i KMZ są wszechobecne w krajobrazie danych geoprzestrzennych.
Struktura KML
Prosty plik KML z jednym punktem:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Placemark>
<name>Warszawa</name>
<Point>
<coordinates>21.0122,52.2297,0</coordinates>
</Point>
</Placemark>
</kml>
KML zawsze używa WGS84, z kolejnością współrzędnych longitude,latitude,altitude. Wysokość jest opcjonalna. Gdy jej brak, geometria zwykle interpretowana jest zgodnie z altitudeMode, którego domyślną wartością jest clampToGround — czyli geometria „przykleja się” do terenu.
Typowe błędy KML/KMZ
Większość problemów z KML sprowadza się do jednego z poniższych:
- KMZ bez doc.kml. KMZ musi mieć główny plik KML w katalogu głównym archiwum (zwykle doc.kml) — zmienione nazwy albo pliki, w których KML leży w podkatalogu, nie zawsze da się niezawodnie odczytać.
- Ikony i nakładki nie są przenoszone. Import geometrii obejmuje punkty, linie i poligony — obrazy, ikony i nakładki rastrowe w KMZ trzeba obsłużyć osobno.
- Dane czasowe znikają. TimeStamp/TimeSpan (animacje w Google Earth) nie mają odpowiednika w SHP/DXF — przy dalszym eksporcie dane czasowe nie są zachowywane.
- Wysokości są mylnie interpretowane. clampToGround oznacza brak zapisanej rzędnej — geometria przylega do terenu; absolute to metry nad geoidą EGM96 — nie polska wysokość normalna. Jeśli rzędne mają być użyte fachowo, muszą zostać przeliczone przez odpowiednie modele, a nie potraktowane jako gotowa wartość.
Wysokości KML nie są ani wysokościami elipsoidalnymi, ani polskimi wysokościami normalnymi
Tryb wysokości absolute w KML określa metry nad powierzchnią odniesienia, która wcale nie jest pozostawiona interpretacji: standard OGC dla KML mówi, że wysokość mierzona jest od pionowego układu odniesienia, którym jest geoida WGS84 EGM96, a absolute oznacza właśnie metry względem tego układu. Własna dokumentacja Google wspomina za to jedynie o „wysokości nad poziomem morza” i nie precyzuje, o jaki model geoidy chodzi — ale niezależnie od tego, który globalny model geoidy przyjmiemy, nie jest to ani polska powierzchnia quasi-geoidy (PL-geoid2021), ani elipsoida GNSS. Różnica między EGM96 a polską wysokością normalną zmienia się geograficznie i musi zostać obliczona z odpowiednich modeli geoidy/quasi-geoidy — patrz strona o systemach wysokości dla porównań między modelami.
Konsekwencja: rzędne w pliku KMZ z drona albo eksporcie KML są zgodnie ze standardem wysokościami EGM96 — nie wysokościami elipsoidalnymi ani polskimi wysokościami normalnymi (PL-KRON86-NH czy PL-EVRF2007-NH). Jeśli mają być użyte fachowo, ścieżka przeliczenia to EGM96 → wysokość elipsoidalna → wysokość normalna (HN = h − ζ) przy użyciu odpowiednich modeli geoidy i quasi-geoidy — a różnica między EGM96 a polską wysokością normalną nie jest stałą wartością, tylko powierzchnią zmienną geograficznie, która potrafi być na tyle duża, by zepsuć obliczenia spadku terenu. Przy clampToGround żadna oryginalna wysokość nie jest zapisana w geometrii — nie da się jej odtworzyć z samego pliku KML, choć czasem można ją uzyskać z modelu terenu.
Z WGS84 do polskich układów
KML zawsze przychodzi w WGS84 (lon, lat i opcjonalnie wysokość). Narzędzie pokazuje Twoje dane bezpośrednio i może przeliczyć je przy eksporcie do ETRS89/UTM, PL-2000 (strefy 5–8) lub PL-1992 — zobacz pełny przegląd polskich układów.
Zobacz najważniejsze układy współrzędnych dla Polski →Najczęściej zadawane pytania o KML i KMZ
Czy mogę wgrać KML bezpośrednio z Google Maps?
Tak — w Google My Maps możesz wyeksportować do KML przez menu opcji (trzy kropki → Eksportuj do KML). Ten plik można wgrać bezpośrednio do koordinat.online.
Jaka jest różnica między KML a KMZ?
KMZ to plik ZIP zawierający plik KML (zwykle nazwany doc.kml) i opcjonalnie zasoby, takie jak ikony i obrazy. KMZ jest skompresowany i zwykle wyraźnie mniejszy. Oba formaty wgrywane są bezpośrednio — rozpakowywanie nie jest potrzebne.
Czy tracę style i ikony przy wgrywaniu?
koordinat.online wczytuje geometrię, nazwy i opisy. Style (kolory, ikony) nie są używane, ponieważ koordinat.online jest narzędziem mapowym do pracy ze współrzędnymi — nie programem do stylizacji map.
Czy pliki KML z animacją czasową są obsługiwane?
Nie — koordinat.online wczytuje geometrię i atrybuty, ale dane czasowe (TimeSpan, TimeStamp) oraz przeloty (tours) Google Earth nie są uwzględniane.
Czy mogę wyeksportować do KML z koordinat.online?
Tak — przy eksporcie (wymaga darmowego konta) możesz wybrać KML jako format. Punkty eksportowane są ze współrzędnymi WGS84 (EPSG:4326), zgodnie z wymogiem standardu KML.
KML i KMZ na mapie — od Google Earth do polskich układów
Przeciągnij plik .kml lub .kmz bezpośrednio na mapę — narzędzie automatycznie rozpakowuje KMZ, odczytuje punkty, trasy i poligony i umieszcza je poprawnie. Stąd możesz pracować dalej albo wyeksportować (wymaga darmowego konta) do ETRS89/UTM lub polskich układów płaskich (PL-2000, PL-1992).
Przejdź do mapy →Źródła i dalsza lektura
Zasady dotyczące KML pochodzą z samego standardu; polskie dane wysokościowe — z modeli quasi-geoidy publikowanych przez GUGiK.
-
Open Geospatial Consortium (2008):
OGC KML 2.2 (OGC 07-147r2) — §6.2 i §16.1.1
Standard określa, że wysokość mierzona jest od pionowego układu odniesienia, którym jest geoida WGS84 EGM96, i że tryb „absolute” oznacza metry względem tego układu — nie polskiej wysokości normalnej. -
Google:
KML Documentation — Altitude Modes
Własna dokumentacja Google opisuje „absolute” jedynie jako „wysokość nad poziomem morza” i nie precyzuje, o jaki model geoidy chodzi. -
GUGiK (2024):
Model quasi-geoidy PL-geoid2021 (PL-EVRF2007-NH)
Oficjalny polski model quasi-geoidy do przeliczania wysokości elipsoidalnej GNSS na wysokość normalną. Wartości ζ (separacja quasi-geoidy) wahają się krajowo od 22,212 m do 47,466 m, ze średnią 34,834 m — to nie stała wartość, tylko powierzchnia zmienna geograficznie.