Jestem wyjątkowo nowy w GIS.
Używam gdal
do czytania na mapie użytkowania terenu / pokrycia terenu i muszę wybrać szerokość / długość niektórych rodzajów pokrycia terenu, aby zindeksować do innego zestawu danych, który jest wyrażony tylko w szerokości / długości. Niestety nie rozumiem formy współrzędnych xiy podanych mi z geotransformy, a konkretnie tych originX
i originY
poniżej:
geotransform = dataset.GetGeoTransform()
originX = geotransform[0]
originY = geotransform[3]
Drukowanie tych wartości daje mi współrzędne jak (447466.693808, 4952570.40529)
. Jak odnoszą się one do pierwotnej szerokości i długości geograficznej?
Edytować:
Oto prosty przykład python, który dał mi to, czego szukałem:
srs = osr.SpatialReference()
srs.ImportFromWkt(dataset.GetProjection())
srsLatLong = srs.CloneGeogCS()
ct = osr.CoordinateTransformation(srs,srsLatLong)
print ct.TransformPoint(originX,originY)
Skradzione z: tolatlong.py
gdal
coordinate-system
Bogaty
źródło
źródło
dataset.GetProjectionRef()
i dowiedzieć się, że używam „UTM Zone 10”, ale co wtedy? Poszukuję metod takich jak „nieprojekt”, ale zbliżam się do zera.Odpowiedzi:
gdal_translate przerzuci twoje dane z dowolnej projekcji na dowolną inną (w tym przypadku chcesz EPSG: 4326), używając:
lub możesz użyć gdaltrasform do konwersji punktów (i jestem pewien, że możesz uzyskać do tego dostęp również z Python (?))
źródło
Geotransform jest udokumentowany na https://gdal.org/user/raster_data_model.html . Chodzi o to, że bierzesz współrzędne (x, y) prosto z zestawu danych, stosujesz transformację liniową, aby uzyskać (u, v) z
(można przyjąć, że jest to definicja transformacji liniowej), a następnie przesunąć początek, dodając geotransform [0] do u i geotransform [3] do v. To daje „transformację afiniczną” (x, y). Naprawdę ma na celu obracanie, zmianę skali, być może trochę poprawienie niektórych błędów skosu i ponowne ustawienie współrzędnych specyficznych dla danych (x, y), aby pasowały do znanego układu współrzędnych. Wynik ma dawać współrzędne rzutowane. Oznacza to po prostu, że procedura matematyczna przyjmuje (długość, szerokość) i zamienia je na znane współrzędne: nazywa się to „rzutowaniem”. „Unprojecting” robi coś przeciwnego; więc jeśli wiesz, która projekcja jest potrzebna, zastosuj ją do współrzędnych przekształconych współrzędnych (x, y) aby uzyskać szerokość i długość geograficzną.
Nawiasem mówiąc, wartości stałych a, b, c, d są podane przez 1, 2, 4 i 5 wpisów w tablicy geotransformacyjnej.
źródło
Możesz użyć następujących opcji:
koordyn zwróci długość (x) i szerokość (y) wszystkich pikseli. Pamiętaj, że współrzędne znajdują się w lewym rogu piksela
źródło