Jestem nowy w GIS.
Mam kod, który konwertuje obrazy Marsa w podczerwieni na mapy bezwładności cieplnej, które są następnie zapisywane jako tablice dwuwymiarowe. Zapisuję te mapy jako pliki hdf5, ale naprawdę chciałbym je zapisać jako obrazy rastrowe, aby móc je przetwarzać w QGIS. Przeszukałem wiele wyszukiwań, aby dowiedzieć się, jak to zrobić, ale bez powodzenia. Próbowałem postępować zgodnie z instrukcjami w samouczku na stronie http://www.gis.usu.edu/~chrisg/python/, ale pliki, które tworzę przy użyciu jego przykładowego kodu, otwierają się jako zwykłe szare pola podczas importowania ich do QGIS. Wydaje mi się, że gdyby ktoś mógł zasugerować najprostszą możliwą procedurę uproszczonemu przykładowi tego, co chciałbym zrobić, być może będę w stanie zrobić pewne postępy. Mam QGIS i GDAL, chętnie zainstaluję inne frameworki, które każdy może polecić. Używam Mac OS 10.7.
Więc jeśli na przykład mam tablicę liczb bezwładności, która wygląda następująco:
TI = ( (0.1, 0.2, 0.3, 0.4),
(0.2, 0.3, 0.4, 0.5),
(0.3, 0.4, 0.5, 0.6),
(0.4, 0.5, 0.6, 0.7) )
I dla każdego piksela mam szerokość i długość geograficzną:
lat = ( (10.0, 10.0, 10.0, 10.0),
( 9.5, 9.5, 9.5, 9.5),
( 9.0, 9.0, 9.0, 9.0),
( 8.5, 8.5, 8.5, 8.5) )
lon = ( (20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5) )
Jaką procedurę poleciliby ludzie przekonwertować te dane na plik rastrowy, który mogę otworzyć w QGIS?
Odpowiedzi:
Jedno z możliwych rozwiązań Twojego problemu: Przekształć go w raster ASCII, którego dokumentacja jest tutaj . Powinno to być dość łatwe w przypadku Pythona.
Tak więc z powyższymi przykładowymi danymi, w pliku .asc uzyskasz następujące elementy:
Z powodzeniem dodaje to zarówno do QGIS, jak i ArcGIS, a stylizowany w ArcGIS wygląda następująco:
Dodatek: Chociaż możesz dodać go do QGIS, jak wspomniano, jeśli spróbujesz przejść do jego właściwości (aby go stylizować), QGIS 1.8.0 zawiesza się. Mam zamiar zgłosić to jako błąd. Jeśli ci się to przydarzy, istnieje wiele innych bezpłatnych GIS.
źródło
Poniżej znajduje się przykład, który napisałem na warsztaty z wykorzystaniem modułów numpy i gdal Python. Odczytuje dane z jednego pliku .tif do tablicy numpy, dokonuje przeklasyfikowania wartości w tablicy, a następnie zapisuje je z powrotem do pliku .tif.
Z twojego wyjaśnienia wygląda na to, że udało ci się napisać prawidłowy plik, ale wystarczy go symbolizować w QGIS. Jeśli dobrze pamiętam, po pierwszym dodaniu rastra często wyświetla się jeden kolor, jeśli nie masz wcześniej istniejącej mapy kolorów.
źródło
outDs = None
aby go uratowaćW końcu wpadłem na to rozwiązanie, które zyskałem podczas tej dyskusji ( http://osgeo-org.1560.n6.nabble.com/gdal-dev-numpy-array-to-raster-td4354924.html ). Podoba mi się, ponieważ mogę przejść prosto z tablicy numpy do pliku rastrowego tif. Byłbym bardzo wdzięczny za komentarze, które mogłyby ulepszyć rozwiązanie. Zamieszczę go tutaj, na wypadek gdyby ktoś szukał podobnej odpowiedzi.
źródło
Istnieje również dobre rozwiązanie w oficjalnej książce kucharskiej GDAL / OGR dla Pythona.
źródło
Alternatywą dla podejścia sugerowanego w innych odpowiedziach jest użycie
rasterio
pakietu. Miałem problemy z ich generowaniemgdal
i uznałem tę stronę za przydatną.Zakładając, że masz inny plik tif (
other_file.tif
) i tablicę numpy (numpy_array
), która ma taką samą rozdzielczość i zasięg jak ten plik, to podejście działało dla mnie:źródło