14

我已经阅读了包中使用的 shapefile readShapePolymaptools但无法使用readOGR. 我希望有人可以帮助我阅读 shapefile readOGR

orcounty.shp我从这里下载了文件:http: //geography.uoregon.edu/geogr/topics/maps.htm

我还下载了相关文件:orcounty.shx, orcounty.sbx, orcounty.sbn,orcounty.dbf并将所有五个文件放入文件夹中:c:/users/mark w miller/gis_in_R/shapefile_example/

以下代码读取 shapefile 并显示一些属性:

library(maptools)

setwd('c:/users/mark w miller/gis_in_R/shapefile_example/')

# Oregon county census data (polygons)
orcounty.poly <- readShapePoly('orcounty.shp', proj4string=CRS("+proj=longlat"))
orcounty.line <- readShapeLines('orcounty.shp', proj4string=CRS("+proj=longlat"))

# see projection
summary(orcounty.poly)

Object of class SpatialPolygonsDataFrame
Coordinates:
         min        max
x -124.55840 -116.46944
y   41.98779   46.23626
Is projected: FALSE 
proj4string : [+proj=longlat]
Data attributes:

但是,当我尝试使用以下代码读取相同的 shapefile 时,我收到一个错误:

library(rgdal)

# read shapefile
oregon.map <- readOGR(dsn="c:/users/mark w miller/gis_in_R/shapefile_example/", layer="orcounty")

# convert to dataframe
oregon.map_df <- fortify(oregon.map)

错误消息说:

Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv) : 
  Cannot open file

我可以阅读 Natural Earth http://www.naturalearthdata.com/ shapefiles 使用:

library(rgdal)

setwd("c:/users/mark w miller/gis_in_R/")

# read shapefile
wmap <- readOGR(dsn="ne_110m_physical", layer="ne_110m_land")

因此,自然地球 shapefile 和俄勒冈 shapefile 之间显然存在差异orcounty.shp

感谢您对如何阅读的任何orcounty.shp建议readOGR。我的问题类似于这里的问题:rgdal / readOGR - 无法从 .zip 读取 shapefile

4

4 回答 4

17

尝试从文件路径中删除最后一个“/”。

readOGR(dsn = 'c:/users/mark w miller/gis_in_R/shapefile_example',
        layer = 'orcounty')
于 2014-03-10T00:17:42.937 回答
3

对于任何在 Linux 机器上遇到此错误的人,我发现问题出在使用主路径快捷方式。IE

# Works
readOGR(dsn="/home/user/dir", layer="file")

# Doesn't work
readOGR(dsn="~/dir", layer="file")

我不知道为什么。

于 2015-12-01T17:05:27.180 回答
1

我使用了文件 ne_110m_land

试试这个:

setwd('D:/JMSR/codes.R/mapas')
unzip("ne_110m_land.zip")
ogrInfo(".", "ne_110m_land")
wmap <- readOGR(".", "ne_110m_land")
于 2015-10-02T16:26:31.233 回答
0

raster::shapefile环绕readOGR以照顾路径和波浪线;只需传递完整的文件名。

 library(raster)
 x <- shapefile("c:/users/orcounty.shp')

或者

 y <- shapefile("~/users/orcounty.shp")
于 2019-02-25T16:44:45.503 回答