Erstellen Sie ein Raster mit georeferenzierten Informationen in R.

9

Wie kann ich unter Bezugnahme auf meine vorherige Frage ein generiertes Rasterbild mit einem generierten Rasterbild in ein Format "geocodieren" / konvertieren, das als Layer auf einer Karte angezeigt werden kann? Kurz gesagt, ich möchte die Ergebnisse der kommerziellen SpatialKey- Software ( Screenshot ) neu erstellen .

Ich verwende eine GeoServer-Instanz, um die Daten für die Karten zu hosten. Wie kann ich jedoch die erforderlichen Projektions- und Koordinateninformationen in das Bild integrieren, damit es korrekt an der tatsächlichen geografischen Position ausgerichtet wird? Die Dichte-Heatmap wurde unter Verwendung von Geodaten erstellt.

Mimo
quelle
Da dies nur eine Programmierfrage ist, ist dies nicht wirklich ein Thema. Haben Sie sich die Informationen zum Spatstat-Paket und das kurze PDF-Kurs angesehen, um festzustellen, ob es dort behandelt wird? Ich bin mir sicher, dass dies schon einmal vorgekommen ist, und eine schnelle Google-Suche bringt diese relevante R-Hilfe-Antwort . Es würde mich nicht wundern, wenn es auch direktere Lösungen mit mehr Suche gibt.
Andy W
Wie haben Sie das generierte Rasterbild erstellt? Kommt es aus einer anderen Anwendung oder aus R?
Simbamangu
Es wird in R mit der Funktion image () generiert.
Mimo
x hat ungleiche horizontale und vertikale Auflösungen. Solche Daten können nicht im Arc-ASCII-Format gespeichert werden. My x hat die Dimension 4684, 1950 und beschwert sich über die Auflösung. Ich habe es aber genauso gemacht. Buggy

Antworten:

15

Mit dem Rasterpaket können Sie beliebige Raster (Größe, Projektion) erstellen oder vorhandene Objekte wie Matrizen verwenden. Sie können dann Projektionen und Ausmaße zuweisen. Ihre image()Funktion verwendet ein Matrixargument, das direkt verwendet werden kann:

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)

Sie können dann writeRaster()mit einer beliebigen Anzahl von Formaten verwenden, z

writeRaster(rast, "~/myraster.asc", format = "ascii")
Simbamangu
quelle
2

Es gibt verschiedene Möglichkeiten, aber wenn Sie versuchen, Open-Source-Tools unter Windows zu verwenden, kann ich drei Optionen vorschlagen:

  1. Verwenden Sie das Tool gdal_translate in GDAL (Open-Source-Bibliothek zur Manipulation von Georaster ). Sie benötigen wahrscheinlich den -gcp pixel line easting northing elevationParameter, bei dem Pixel und Linie im Raster x / y sind ( http://www.gdal.org/gdal_datamodel.html ) und die geografischen Koordinaten nach Osten / Norden verschieben. Sie müssen auch eine Projektion mit angeben-a_srs srs_def
  2. Verwenden Sie die r-Bindungen für GDAL und machen Sie dasselbe
  3. Eine einfachere "GUI" -Methode könnte darin bestehen, diesem Tutorial zu folgen und QGIS mit GDAL zu verwenden. Dies hat den Nachteil, dass Sie sowohl QGIS als auch GDAL einrichten müssen, falls Sie dies noch nicht getan haben.

Ich würde mir die Abhängigkeiten der einzelnen Softwarepakete, die Sie benötigen, genau ansehen, bevor ich den von Ihnen gewählten Weg beschreite.

Stev_k
quelle