Używam gdalwarp do manipulowania kafelkami SRTM w pobliżu linii danych (tj. 180 °, inaczej antimeridian). Płytki SRTM mają bardzo niewielkie (1/2 piksela) nakładanie się na południk. Możesz to zobaczyć za pomocą gdalinfo:
gdalinfo S16W180.hgt
Driver: SRTMHGT/SRTMHGT File Format
Files: S16W180.hgt
Size is 1201, 1201
[...]
Lower Left (-180.0004167, -16.0004167) (180d 0' 1.50"W, 16d 0' 1.50"S)
Upper Right (-178.9995833, -14.9995833) (178d59'58.50"W, 14d59'58.50"S)
[...]
Więc źródło obejmuje linię danych o niewielką ilość.
Powoduje to problemy z gdalwarp, co w rezultacie prowadzi do powstania ogromnych wyników obejmujących glob.
gdalwarp -t_srs "epsg:900913" S16W180.hgt test.tif
gdalinfo test.tif
Driver: GTiff/GeoTIFF
Files: test.tif
Size is 1703, 5
[...]
Lower Left (-20037508.330,-1806798.473) (180d 0' 0.00"W, 16d 7'13.00"S)
Upper Right (20032839.451,-1689152.120) (179d57'29.01"E, 15d 5'45.84"S)
Zwróć uwagę na długości geograficzne (prawie) całego globu, a także liczba linii jest nieoczekiwanie mała (5)
Czy to błąd w gdalwarp? Jeśli nie, jakie są odpowiednie opcje, aby przejść do gdalwarp, aby uzyskać sensowny wynik?
Odpowiedzi:
Jednym łatwym obejściem byłoby określenie układu współrzędnych „ręcznie” jako ciągu PROJ. Pozwala to na użycie
+over
przełącznika, który wyłącza zawijanie antymerydyny:Kiedy to robię, a następnie robię
gdalinfo
na podstawie wyniku, otrzymuję to:Mam ciąg PROJ (bez
+over
), patrząc na oryginalne wyjściegdalinfo
. Został włączony doEXTENSION[...]
bloku układu współrzędnych.źródło
Działa w dwóch krokach:
Pierwsze polecenie uruchamia dodatkowy pół piksel po niewłaściwej stronie południka 180 °. Otrzymasz plik wyjściowy o rozmiarze 1178P x 1222L.
Alternatywnie, z gdal_translate:
Tworzenie pliku wyjściowego o wymiarach 1179P x 1223L.
źródło
W obliczu tego samego problemu napisałem mały skrypt powłoki, który sprawdza, czy plik rastrowy przecina linię danych. Jeśli to prawda, do gdalwarp dodaje się następującą opcję:
Oto jak skrypt działa krok po kroku:
AKTUALIZACJA Lepsza wersja skryptu, wymaga GDAL 2.0+ i Python: Stara wersja poniżej.
źródło
Jest to problem w bibliotece GDAL. Wygląda na to, że GDALSuggestedWarpOutput () daje dziwne dane wyjściowe dotyczące szerokości i wysokości pliku wyjściowego.
Nie znalazłem jeszcze sposobu na obejście tego.
źródło