Problem przy reprojekcji NMT z układu 1992 do 2000 z Najbliżyszm sąsiadem

Dzień dobry! Mam taki problem. Przy reprojekcji NMT (dane LiDAR) z układu 1992 do układu 2000 (EPSG:2178) z użyciem metody resamplingu “Najbliższy sąsiad” powstający NMT nie odwzorowuje pierwotnej powierzchni właściwie. Tekstura zmienia się z gładkiej na wykazującą cechy geometryczne (widoczne są kwadraty). Ma to miejsce głównie w przypadku najbardziej nachylonych powierzchni (hałdy, nasypy). Próbowałem przeprowadzić reprojekcję na różnych wersjach QGIS (3.28.15, 3.44.7) i na różnych komputerach. Efekt jest ten sam.

Spróbowałem zrobić reprojekcję w Saga GIS: Geoprocessing > Projection > Coordinate transformation Grid i niestety otrzymałem ten sam efekt. Czy ma ktoś rozwiązanie na taki problem, czy jest on w QGIS/SAGA nie do przejścia?

W ArcGIS-ie, co ciekawe, dzieje się tak samo. Gdy jednak stosuję dwuliniową metodę resamplingu w QGIS przy reprojekcji do układu 2000, takiego dziwnego efektu nie ma. Chciałbym jednak, by była to metoda najbliższego sąsiada…

Po części sam już sobie odpowiedziałeś na pytanie i zdiagnozowałeś czemu uzyskujesz taki efekt :slight_smile:

Przyczyną nie jest aplikacja ta czy inna, lecz sposób interpolacji, który sam narzucasz - czyli “najbliższy sąsiad”. Gdy poczytasz “jak to działa” np. tu Interpolacja (grafika komputerowa) – Wikipedia, wolna encyklopedia, to zapewne zauważysz, że w trakcie zmiany układu z 1992 do 2000 ta stara siatka nie pokrywa się idealnie z nową siatką. Jest minimalnie przesunięta / obrócona / przeskalowana.

Metoda najbliższy sąsiad działa brutalnie:

  • dla każdego nowego piksela bierze jedną wartość z najbliższego starego piksela,
  • nic nie uśrednia,
  • więc część wartości jest powielana, a część pomijana.

Na powierzchniach płaskich prawie tego nie widać, bo sąsiednie piksele mają podobne wysokości.
Na stromych stokach jest inaczej: nawet małe przesunięcie w poziomie daje dużą zmianę wysokości, więc po reprojekcji robią się schodki i w cieniowaniu wychodzą kwadraty.

Możesz więc albo użyć innej metody interpolacji, jeśli dokładność wysokościowa nie jest kluczowa/bardzo ważna (jest bardziej orientacyjna) albo stworzyć nowy NMT już natywnie w 2000 z chmury punktów. Przeliczanie siatki kwadratów (rastra) na inną siatkę kwadratów zawsze będzie się wiązało z pewną utratą informacji zapisanej w każdym pikselu - pytanie w jaki sposób chcesz ją utracić (tu wybór algorytmy resamplingu). Jeśli nie chcesz, a musisz mieć układ 2000, pozostaje wytworzenie nowego NMT.

Dziękuję za odpowiedź.