Utwórz raster z informacjami georeferencyjnymi w R

9

Nawiązując do mojego poprzedniego pytania , w jaki sposób „geokodować” / przekonwertować - używając R - wygenerowanego obrazu rastrowego na format, który można wyświetlić jako warstwę na mapie? Krótko mówiąc, zamierzam odtworzyć wyniki komercyjnego oprogramowania SpatialKey ( zrzut ekranu ).

Korzystam z instancji GeoServer do hostowania danych map, ale jak mogę włączyć wymagane odwzorowanie i koordynować informacje w obrazie, aby poprawnie wyrównywał się z jego prawdziwym położeniem geograficznym. Mapę ciepła gęstości opracowano na podstawie danych przestrzennych.

Mimo
źródło
Ponieważ jest to wyłącznie pytanie programistyczne, tak naprawdę nie jest na ten temat. Czy przejrzałeś informacje o pakiecie spatstat i krótki kurs pdf, aby sprawdzić, czy jest tam uwzględniony? Jestem pewien, że stało się to wcześniej, a szybkie wyszukiwanie w Google wyświetla tę odpowiednią odpowiedź R-help . Nie zdziwiłbym się, gdyby istniały również bardziej bezpośrednie rozwiązania z kilkoma poszukiwaniami.
Andy W
Jak utworzyłeś wygenerowany obraz rastrowy? Czy pochodzi z innej aplikacji, czy jest wykonany w R?
Simbamangu
Jest generowany w obrębie R za pomocą funkcji image ().
Mimo
x ma nierówne rozdzielczości poziome i pionowe. Takich danych nie można przechowywać w formacie arc-ascii. Mój x ma wymiar 4684, 1950, narzeka na rozdzielczość. Zrobiłem to jednakowo. Buggy

Odpowiedzi:

15

Pakiet rastrowy pozwala tworzyć dowolne rastry (rozmiar, rzut) lub używać istniejących obiektów, takich jak macierze; następnie możesz przypisać projekcje i zakresy. Twoja image()funkcja pobiera argument macierzowy, którego można użyć bezpośrednio:

library(raster)    
## Create a matrix with random data & use image()
xy <- matrix(rnorm(400),20,20)
image(xy)

# Turn the matrix into a raster
rast <- raster(xy)
# Give it lat/lon coords for 36-37°E, 3-2°S
extent(rast) <- c(36,37,-3,-2)
# ... and assign a projection
projection(rast) <- CRS("+proj=longlat +datum=WGS84")
plot(rast)

Następnie możesz użyć writeRaster()dowolnej liczby formatów, np

writeRaster(rast, "~/myraster.asc", format = "ascii")
Simbamangu
źródło
2

Istnieje wiele różnych sposobów, ale biorąc pod uwagę, że chcesz użyć narzędzi open source w systemie Windows, mogę zasugerować 3 opcje:

  1. Użyj narzędzia gdal_translate w GDAL (biblioteka manipulacji geo-rastrowych open source). Prawdopodobnie potrzebujesz -gcp pixel line easting northing elevationparametru, w którym piksel i linia to x / y na rastrze ( http://www.gdal.org/gdal_datamodel.html ) i wschód / północ współrzędnych geograficznych. Musisz także określić projekcję za pomocą-a_srs srs_def
  2. Użyj powiązań r do GDAL i zrób to samo
  3. Łatwiejszym sposobem „GUI” może być skorzystanie z tego samouczka i użycie QGIS z GDAL. Wadą tego jest to, że musisz skonfigurować zarówno QGIS, jak i GDAL, jeśli jeszcze tego nie zrobiłeś.

Przed pójściem jakąkolwiek drogą wybierzesz uważnie przyjrzałbym się zależnościom każdego potrzebnego oprogramowania.

Stev_k
źródło