2016-04-16 6 views
2

Я пытаюсь импортировать файл формы openstreetmaps в R, используя пакет rgdal. Файл формы Скачал состоит из 5 компонентов в нем:Как импортировать файл формы openstreetmaps в R и извлечь lat/long centroids?

places.cpg 
places.dbf 
places.prj 
places.shp 
places.shx 

Файлы могут быть доступны по следующему адресу:

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

я должен сделать следующее: 1) Импортируйте файл формы 2) Извлечь lat/long точки или центроида формы в случае полигона 3) Приложить пару lat/long к файлу dbf, чтобы сделать некоторый анализ

Я застрял на первом этапе самого импорта, я бегу следующий код:

shape1 <- readOGR(dsn = "try", layer = "places") 

Вот попытка 'папка в моей рабочей директории, где файл все 5 «Places» от OpenStreetMaps упоминалось выше расположены.

я получаю следующее сообщение об ошибке при этом:

Error in readOGR(dsn = "try", layer = "places") : no features found 
In addition: Warning message: 
In ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = 
use_iconv, : ogrInfo: all features NULL 

мне нужна помощь с этим импортом. Альтернативно, если есть способ напрямую извлечь lat/long из одного из файлов формы мест, я могу просто открыть файл places.dbf в excel и добавить lat/long.

+0

это будет полезно, если бы были ссылка на шейп – hrbrmstr

+0

я совершенно забыл о that..have добавил ссылку на доступ к файлам формы:» https://drive.google.com/open?id=0B1ITb_7lHh1EUFVfVWc4ekRfSnc – Shaz

ответ

1

Когда вы сталкиваетесь с проблемами с функцией readOGR(): Еще одна возможность - использовать пакет maptools. Это создает SpatialXXXDataFrames, так что вы можете использовать все функции из rgeos и т.д.

library(maptools) 

setwd("/your/data/path/") 

places <- readShapeSpatial("places") 
# ... your geospatial functions, like 
plot(places) 

вероятно, вам придется настроить проекцию пространственных данных. Для OSM-Data вам нужно будет найти proj4string для WGS84 (или EPSG: 4326) по адресу spatialreference.org.

Таким образом, вы можете настроить проекцию в R:

proj4string(places) <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs") 

Для расчета/«извлечение» из полигонов центроидов см this поста.

0

Вам необходимо использовать шейп-файл (.shp) в качестве DSN. Включение SpatialPointsDataFrame в «нормальный» data.frame даст «тьфу» имена столбцов для Ланга & широчайших, так что вы можете переименовать их, чтобы сделать их более удобными:

library(sp) 
library(rgdal) 

places <- readOGR("places/places.shp", "places", verbose=FALSE, stringsAsFactors=FALSE) 

places_df <- setNames(as.data.frame(places), 
         c("osm_id", "name", "type", "population", "longitude", "latitude")) 

head(places_df) 

##  osm_id   name type population longitude latitude 
## 1 25431184 Stockertown village   NA -75.26156 40.75446 
## 2 25716549 Mechanicsburg village   NA -77.00473 40.21020 
## 3 25762119  Mansfield hamlet   NA -77.07929 41.80569 
## 4 25840249 New Columbia hamlet   NA -76.87368 41.03368 
## 5 25840585 Williamsport town  29381 -77.00277 41.24933 
## 6 25930002  Hershey town  14257 -76.65060 40.28549 
+0

Я сменил рабочий каталог на папку, в которой находится файл формы мест, и выполнил следующий код: shape1 <- readOGR (dsn = "places.shp "," places ", verbose = FALSE, stringsAsFactors = FALSE) Я все еще получаю ошибку, обнаруженную без ошибок. Я все еще что-то не так? \ – Shaz

+0

@Shaz - У меня такая же проблема. чтобы решить это? – PBD10017

+0

Я не мог ... Вместо этого я использовал maptools, как было предложено в следующем посте – Shaz

0

я не мог получить этот пакет, чтобы работать, но пакет «shapefiles» сделал для меня работу. Он имеет функцию read.shapefile, которая импортирует шейп-файлы.