2016-04-17 22 views
1

Ich habe eine Shape-Datei unter folgendem Pfad hochgeladen:Zentroid des Formdateiobjekts in R extrahieren?

landuse<- read.shapefile("landuse") 

ich jetzt:

https://drive.google.com/open?id=0B1ITb_7lHh1EUFVfVWc4ekRfSnc

ich die Daten mit Hilfe des "read.shapefiles" -Funktion in "Shape-Dateien" Paket importiert müssen die lat/long Centroids aller Formen innerhalb des Landuse-Objekts extrahieren und es der Landuse hinzufügen $ dbf dateframe

Ich habe zwei Dinge versucht:

lu_df<-coordinates(landuse) 
lu_df<-SpatialPoints(landuse) 

Beide gaben mir den folgenden Fehler:

Error in coordinates(as.data.frame(obj)) : 
    error in evaluating the argument 'obj' in selecting a method for function 'coordinates': Error in data.frame(record = 1L, content.length = 80L, shape.type = 5L, : 
    arguments imply differing number of rows: 1, 4, 7 

Ich bin nicht sicher, wie es weitergehen.

Antwort

1

Zuerst empfehle ich die Verwendung des rgdal Pakets für räumliche Daten. Die Funktionen readOGR und writeOGR bieten eine schöne Shapefile-Handhabung (wie Ein- und Ausgabe von Projektionen usw.).

UPDATE: Da dies nicht für @Shaz arbeiten (siehe Fehler in den Kommentaren), die maptools Funktion readShapePoly() verwendet wurde. Siehe auch this post.

Zu Ihrem Problem: Das rgeos-Paket enthält eine Funktion gCentroid(), die den Schwerpunkt Ihrer Polygone berechnet. Die Lösung sieht ungefähr so ​​aus:

setwd("/path/to/your/shapefile/") 

library(maptools) 
library(rgeos) 
landuse <- readShapePoly("landuse") 

centr <- gCentroid(landuse, byid = TRUE) 

# create SpatialPointsDataFrame to export via writeOGR 
# positive side effect: All data from [email protected] joined to [email protected] 
centr <- SpatialPointsDataFrame(centr, data= [email protected]) 

writeOGR(centr, ".", "landuse_centroids", driver = "ESRI Shapefile") 
+0

Ich weiß nicht, warum ich nicht in der Lage bin, die readOGR Funktion zu nutzen .. Ich bekomme immer folgende Fehlermeldung: Fehler in readOGR („“, ‚landuse‘) : no features found Zusätzlich: Warnmeldung: In ogrInfo (dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv,: ogrInfo: alle Features NULL – Shaz

+0

benutze 'library (maptools)' Antwort: – loki

+0

Es hat funktioniert, vielen Dank ... eine Idee, warum readOGR bei mir nicht funktioniert – Shaz