我在readShapePoly
包中使用maptools
读取了shapefile,但无法使用readOGR
读取该文件。我希望有人可以帮我用readOGR
读取shapefile。
我从这里下载了文件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
我可以使用以下方式阅读自然地球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
答案 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")