我正在跟踪this教程中的“一些简单的地图”步骤,试图从here为新奥尔良的邮政编码地图上色(我在2011年新奥尔良使用.shp文件)来自该链接的数据)。
当我尝试像教程中那样加载文件时,我收到以下错误:
nolazip.shp <- readShapePoly("/PathTo/Orleans_ZCTA_2010_SP.shp", proj4string=CRS("+proj=longlat"))
Error in validityMethod(as(object, superClass)) :
Geographical CRS given to non-conformant data: 3820725.379655 613426.584024
基于this文档,看起来这个错误意味着形状文件不使用带有效longlat数据的proj4string。
它是否使用其他类型的proj4string或CRS对象?
我做了这些命令试图找出,搜索CRS的输出但没有找到任何东西。
> summary(orcounty.shp)
> str(orcounty.shp)
我可以通过在readShapePoly命令中省略proj4string参数来导入形状文件,但这不是一个可行的解决方案,因为当我按照“一些简单的地图”部分时,地图不会出现在绘图窗口中(我需要的唯一部分)。
答案 0 :(得分:5)
我会使用readOGR
解决这个问题,ggplot2
会保留投影信息,因此您不必像上面的问题一样搞乱它。这里似乎是相同的shapefile(从this US government site下载)读入然后在RColorBrewer
中绘制。化妆品可能需要整理,但这会给你一些ggplot2
和鳞片以及其他aes
事物的练习。 [编辑 - 在geom_polygon
]
# if the packages are not installed, you will have to install and load them.
install.packages("rgdal")
install.packages("ggplot2")
install.packages("scales")
library(rgdal)
library(ggplot2)
library(scales)
require(rgdal)
require(ggplot2)
require(scales)
work.dir <- "your_dirname" # your directory
# no trailing slash
orl <- readOGR(work.dir, layer = "Orleans_ZCTA_2010_SP")
orl.df <- fortify(orl) # ggplot needs data frame, not spatial object
ggplot(data = orl.df, aes(x = long, y = lat, group = group)) +
geom_polygon(aes(fill = orl.df$group)) +
coord_equal() +
theme(legend.position = "none")
来电
{{1}}
答案 1 :(得分:0)
@SlowLearner的答案是解决潜在问题的好方法。对于刚刚来到这里寻找标题问题的其他人:
与我的shapefile关联的proj4字符串是什么?
area <- rgdal::readOGR(dsn = "path/to/shape.shp")
rgdal::CRSargs(area@proj4string)