Polygone aus Koordinaten

Habe ich eine data.frame mit lats und lngs, die definieren die Grenzen der rechteckigen Box, wie so

  geohash north_lat south_lat  east_lng  west_lng
1   gbsuv  48.69141  48.64746 -4.306641 -4.350586
2   gbsuy  48.69141  48.64746 -4.262695 -4.306641

Was ist der einfachste Weg zu konvertieren, das in einer sf – Objekt mit einer Spalte der POLYGONs?

InformationsquelleAutor RoyalTS | 2017-06-02



One Reply
  1. 6

    Der Schlüssel zum erstellen von Polygonen ist, dass die Koordinaten werden in der Reihenfolge bilden einen geschlossenen Bereich (d.h., der Letzte Punkt ist der gleiche wie der erste Punkt).

    So werden Ihre Daten brauchen Sie ein bisschen manipulation zu erstellen, die Koordinaten, und setzen Sie Sie um. In meinem Beispiel habe ich das mit einem lapply

    Dann der rest entnommen werden kann, die sf Beispiele

    lst <- lapply(1:nrow(df), function(x){
      ## create a matrix of coordinates that also 'close' the polygon
      res <- matrix(c(df[x, 'north_lat'], df[x, 'west_lng'],
               df[x, 'north_lat'], df[x, 'east_lng'],
               df[x, 'south_lat'], df[x, 'east_lng'],
               df[x, 'south_lat'], df[x, 'west_lng'],
               df[x, 'north_lat'], df[x, 'west_lng'])  ## need to close the polygon
             , ncol =2, byrow = T
      )
      ## create polygon objects
      st_polygon(list(res))
    
    })
    
    ## st_sfc : creates simple features collection
    ## st_sf : creates simple feature object
    sfdf <- st_sf(geohash = df[, 'geohash'], st_sfc(lst))
    
    sfdf
    # Simple feature collection with 2 features and 1 field
    # geometry type:  POLYGON
    # dimension:      XY
    # bbox:           xmin: 48.64746 ymin: -4.350586 xmax: 48.69141 ymax: -4.262695
    # epsg (SRID):    NA
    # proj4string:    NA
    # geohash                    st_sfc.lst.
    # 1   gbsuv POLYGON((48.69141 -4.350586...
    # 2   gbsuy POLYGON((48.69141 -4.306641...
    
    plot(sfdf)

    Polygone aus Koordinaten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.