使用readOGR和readShapePoly读取形状文件

时间:2014-03-09 23:43:23

标签: r shapefile rgdal

我在readShapePoly包中使用maptools读取了shapefile,但无法使用readOGR读取该文件。我希望有人可以帮我用readOGR读取shapefile。

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

我还下载了相关文件:orcounty.shxorcounty.sbxorcounty.sbnorcounty.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

我可以使用以下方式阅读自然地球http://www.naturalearthdata.com/ shapefile

library(rgdal)

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

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

因此,显然天然地球形状文件与俄勒冈形状文件orcounty.shp之间存在差异。

感谢您提供有关如何使用orcounty.shp阅读readOGR的任何建议。我的问题类似于此处的问题:rgdal / readOGR - unable to read shapefile from .zip

4 个答案:

答案 0 :(得分:13)

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

readOGR(dsn = 'c:/users/mark w miller/gis_in_R/shapefile_example',
        layer = 'orcounty')

答案 1 :(得分:3)

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

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

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

我不知道为什么。

答案 2 :(得分:1)

我使用了文件ne_110m_land

试试这个:

setwd('D:/JMSR/codes.R/mapas')
unzip("ne_110m_land.zip")
ogrInfo(".", "ne_110m_land")
wmap <- readOGR(".", "ne_110m_land")

答案 3 :(得分:0)

raster::shapefile环绕readOGR来处理路径和波浪号;只需输入完整的文件名即可。

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

 y <- shapefile("~/users/orcounty.shp")