4

我正在按照本教程中的“一些简单地图”步骤尝试从这里为新奥尔良的邮政编码地图着色(我正在使用来自该链接的 New Orleans 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  

根据文档,此错误似乎意味着形状文件未使用具有有效 longlat 数据的 proj4string。

它是否使用其他类型的 proj4string 或 CRS 对象?

我做了这些命令试图找出答案,搜索 CRS 的输出但没有找到任何东西。

    > summary(orcounty.shp)
    > str(orcounty.shp)

我可以通过简单地在 readShapePoly 命令中省略 proj4string 参数来导入形状文件,但这不是一个可行的解决方案,因为当我按照“一些简单的地图”部分(唯一的部分)时,地图不会出现在绘图窗口中我需要)。

  1. 与我的 shapefile 关联的 proj4 字符串是什么?我如何将其作为 readShapePoly 的输入
  2. 我是否有其他方法可以导入适用于这种制图方法的 shapefile?同样,简单地省略有问题的参数意味着地图不会出现在 R studio 的图中。
4

2 回答 2

6

我将使用 来解决这个问题readOGR,它保留了投影信息,因此您不必像在上面的问题中那样弄乱它。这似乎是相同的 shapefile(从这个美国政府网站下载)读入然后绘制在ggplot2. 化妆品可能需要整理,但这会给你一些练习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")

奥尔良

于 2013-10-26T23:51:15.813 回答
0

@SlowLearner 的回答很好地解决了根本问题。对于其他所有人,他们只是为了标题问题来到这里:

与我的 shapefile 关联的 proj4 字符串是什么?

area <- rgdal::readOGR(dsn = "path/to/shape.shp")

rgdal::CRSargs(area@proj4string)
于 2017-04-12T13:05:33.647 回答