Zastanawiałem się, czy ktoś ma jakieś doświadczenie w uzyskiwaniu danych wysokościowych z rastra bez korzystania z ArcGIS , ale raczej otrzymuje te informacje jako python list
lub dict
?
Otrzymuję moje dane XY jako listę krotek:
xy34 =[perp_obj[j].CalcPnts(float(i.dist), orientation) for j in range (len(perp_obj))]
Chciałbym zapętlić listę lub przekazać ją do funkcji lub metody klasy, aby uzyskać odpowiednie rzędne dla par xy.
Przeprowadziłem badania na ten temat, a gdal API brzmi obiecująco. Czy ktoś może mi doradzić, jak poradzić sobie z problemami, pułapkami, przykładowym kodem?
GDAL nie jest opcją, ponieważ nie mogę edytować zmiennej ścieżki systemowej na komputerze, nad którym pracuję!
Czy ktoś wie o innym podejściu?
Odpowiedzi:
Oto bardziej programowy sposób użycia GDAL niż odpowiedź @ Aragon. Nie testowałem tego, ale w przeszłości działał dla mnie głównie kod z płyty kotłowej. Opiera się na powiązaniach Numpy i GDAL, ale o to chodzi.
źródło
mapToPixel()
ipixelToMap()
jest ważnym bitem, o ile możesz stworzyć tablicę numpy (lub zwykłą tablicę Pythona, ale na ogół nie są one tak wydajne dla tego rodzaju rzeczy) i uzyskać obwiednię geograficzną tablicy.gt
w tym przykładzie) jest błędna. Macierz afiniczna stosowana w CGAL (patrz: gdal.org/gdal_datamodel.html ) jest na ogół odwracalna (w przeciwnym razie masz trochę funky skalowania). Więc tam, gdzie mamy,g = p.A
możemy również wykonaćp = g.A^-1
Numpy.linalg jest nieco ciężki dla naszych celów - możemy sprowadzić wszystko do dwóch prostych równań.Sprawdź moją odpowiedź tutaj ... i przeczytaj tutaj, aby uzyskać informacje. Poniższe informacje pochodzą z Geotips:
Dzięki gdallocationinfo możemy zapytać o wysokość w jednym punkcie:
Dane wyjściowe powyższego polecenia mają postać:
Oznacza to, że wartość wysokości w podanej geolokalizacji wynosi 1418.
źródło
Zobacz np. Ten kod oparty na GDAL (i Python, nie jest potrzebny numpy): https://github.com/geometalab/retrieve-height-service
źródło
Podany kod python wyodrębnia dane wartości komórki rastrowej na podstawie podanych współrzędnych x, y. Jest to nieco zmieniona wersja przykładu z tego doskonałego źródła . Opiera się na standardowej dystrybucji języka Python
GDAL
inumpy
nie stanowi jej części. Dzięki @Mike Toews za wskazanie nieoficjalnych plików binarnych Windows dla pakietów rozszerzeń Python, aby instalacja i użytkowanie były szybkie i łatwe.źródło