2016-04-17 5 views
1

У меня есть файл форма, загруженный по следующему пути:Извлечь центроид файла формы объекта в R?

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

Я импортируемые данные с помощью «read.shapefiles» функции в пакете «Шейп файлов»:

landuse<- read.shapefile("landuse") 

я теперь необходимо извлечь лат/длинные центроиды всех фигур в объекте landuse и добавить его к файлу данных на сумму $ dbf

Я пробовал две вещи:

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

Оба дали мне следующую ошибку:

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 

Я не уверен в том, как действовать.

ответ

1

Во-первых, я рекомендую использовать пакет rgdal для пространственных данных. Функции readOGR и writeOGR обеспечивают отличную обработку Shapefile (например, ввод и вывод прогнозов и т. Д.).

UPDATE: Поскольку это не работает для @Shaz (см ошибки в комментариях), была использована maptools функции readShapePoly(). Также см. this post.

К вашему вопросу: rgeos пакет предоставляет функцию gCentroid(), которая вычисляет центроид ваших полигонов. Решение выглядит примерно так:

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

Я не знаю, почему я не могу использовать функцию readOGR .. Я всегда получаю следующее сообщение об ошибке: Ошибки в readOGR («», „землепользование“) : no features found Кроме того: Предупреждающее сообщение: В ogrInfo (dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv,: ogrInfo: все функции NULL – Shaz

+0

использовать 'library (maptools)'. Ответ: – loki

+0

Это очень понравилось ... любая идея, почему readOGR не работает для меня? – Shaz