Seite 1 von 1

SpatialPolygonsDataFrame auslesen

Verfasst: Mi Jun 13, 2018 9:46 am
von clara_in_r
Hallo liebe Forumsmitglieder,
ich habe ein Problem mit dem Auslesen eines R-Datensatzes und komme nicht weiter. Dabei geht es um ein „SpatialPolygonsDataFrame“. Dies enthält Koordinaten von einem Land (coords), die ich auslesen will. Anscheinend sind diese in 92 Polygone (?) enthalten. Ich habe nun irgendwie versucht an diese ranzukommen, aber es hat bisher nicht geklappt. Kann mir jemand einen hilfreichen Tipp geben?

Den Datensatz kann man hier z. B. für Deutschland runterladen: https://gadm.org/download_country_v3.html

Anbei auch ein Bild, wie die Daten strukturiert sind.

Daten anzeigen:

Code: Alles auswählen

data_border = readRDS("gadm36_DEU_0_sp.rds")
Clara

Re: SpatialPolygonsDataFrame auslesen

Verfasst: Mi Jun 13, 2018 5:41 pm
von EDi
Ich habe nun irgendwie versucht an diese ranzukommen, aber es hat bisher nicht geklappt. Kann mir jemand einen hilfreichen Tipp geben?
Was möchtest du denn haben? Die koordinaten? (geht mit coordinates aus dem zum Datensatz passenden sp Package)

Re: SpatialPolygonsDataFrame auslesen

Verfasst: Do Jun 14, 2018 3:42 pm
von dvf
Mit

Code: Alles auswählen

plot(data_border[1, 2])
erhält man einen schönen Umriss Deutschlands.

Gruß
dvf

Re: SpatialPolygonsDataFrame auslesen

Verfasst: Do Jun 14, 2018 4:04 pm
von clara_in_r
Ja, danke. Das klappt so jedoch leider nicht. Wenn ich folgendes mache, kommt der geometrische Mittelpunkt Deutschlands raus:

Code: Alles auswählen

coordinates(data_border)
      [,1]     [,2]
1 10.38734 51.09444
Die Daten bestehen aus einem Polygon, welches dann wiederum aus 92 Polygonen besteht, in denen unter coords die Koordinaten sind. Im Beispiel von coordinates() im sp-package geht das leichter, weil die Koordinaten auch als x und y bezeichnet sind. Das ist hier irgendwie nicht so direkt der Fall.
Ich will ja wirklich die coords aus den 92 Polygonen auslesen, die nach meiner Meinung genau die Koordinaten aus plot(data_border[1, 2]) sind. Wenn ich jedoch z.B. data_border[1,] mir ausgeben lasse, dann bekomme ich vieles, aber nicht nur die coords.

Re: SpatialPolygonsDataFrame auslesen

Verfasst: Do Jun 14, 2018 7:35 pm
von Athomas
Mal dreist durch die Struktur gefrinselt:

Code: Alles auswählen

library(sp)
data_border <- readRDS("D:/R/Shape/gadm36_DEU_0_sp.rds")

x <- data_border@polygons[[1]]@Polygons[[27]]@coords
Das könnte Castrop-Rauxel sein!

Re: SpatialPolygonsDataFrame auslesen

Verfasst: Do Jun 14, 2018 10:22 pm
von EDi
ggplotly::fortify() könnte nützlich sein.

Re: SpatialPolygonsDataFrame auslesen

Verfasst: Fr Jun 15, 2018 12:57 pm
von dvf
Nach meinem Schnellschuss lag mir doch eine sinnvolle Antwort am Herzen.

Code: Alles auswählen

library(sp)
data_border <- readRDS("gadm36_DEU_0_sp.rds")

extractCoords <- function(data_border)
{
    results <- list()
    for(i in 1:length(data_border@polygons[[1]]@Polygons))
    {
        results[[i]] <- data_border@polygons[[1]]@Polygons[[i]]@coords
    }
    results <- Reduce(rbind, results)
    results
}
xy_coord <- extractCoords(data_border)
plot(xy_coord, pch=".")
Gruß
dvf

Re: SpatialPolygonsDataFrame auslesen

Verfasst: Fr Jun 15, 2018 3:56 pm
von Athomas
Donnerwetter, wie kommt man denn auf sooowas :lol: ?

Re: SpatialPolygonsDataFrame auslesen

Verfasst: Fr Jun 15, 2018 5:54 pm
von dvf
Nicht auf meinem Mist gewachsen. Google hat geholfen.

Re: SpatialPolygonsDataFrame auslesen

Verfasst: Mo Jun 18, 2018 12:03 pm
von clara_in_r
super, vielen dank. hat mir auch sehr geholfen. auch schon wie man in die polygone reinschaut:

Code: Alles auswählen

data_border@polygons[[1]]@Polygons[[27]]@coords