- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个关于用 R 映射的问题,特别是关于 R 中的等值线图。
我有一个分配给 are 的邮政编码数据集和一些相关数据(数据集是 here )。
我的最终数据格式是:区域 ID、ZIP、概率值、客户计数、区域概率和区域客户总数。我试图通过在 map 上绘制区域概率和区域客户总数来呈现这些数据。我试图通过使用人口普查 TIGER Shapefiles 来做到这一点,但我想 R 无法处理整个国家。
我对统计功能感到满意,现在我正在将我所有的映射从第三方 GIS 应用程序转移到在 R 中完成我所有的映射。有没有人有任何关于如何从 R 中实现这一点的指示?
更详细一点,这里是 R 停止工作的点 -
shapes <- readShapeSpatial("tl_2013_us_zcta510.shp")
require(maptools)
shapes<-readShapeSpatial("tl_2013_us_zcta510.shp")
Error: cannot allocate vector of size 317 Kb
最佳答案
有几个关于使用 R 制作 map 的示例和教程,但大多数都非常笼统,不幸的是,大多数 map 项目都有细微差别,会产生难以理解的问题。你的就是一个很好的例子。
我遇到的最大问题是美国人口普查局整个美国的邮政编码列表区域 shapefile 很大:~800MB。使用 readOGR(...)
加载时R SpatialPolygonDataFrame 对象大约为 913MB。尝试处理这种大小的文件(例如,使用 fortify(...)
转换为数据帧),至少在我的系统上,会导致您在上面确定的错误。因此,解决方案是根据实际数据中的邮政编码对文件进行子集化。
这张 map :
是使用以下代码根据您的数据制作的。
library(rgdal)
library(ggplot2)
library(stringr)
library(RColorBrewer)
setwd("<directory containing shapfiles and sample data>")
data <- read.csv("Sample.csv",header=T) # your sample data, downloaded as csv
data$ZIP <- str_pad(data$ZIP,5,"left","0") # convert ZIP to char(5) w/leading zeros
zips <- readOGR(dsn=".","tl_2013_us_zcta510") # import zip code polygon shapefile
map <- zips[zips$ZCTA5CE10 %in% data$ZIP,] # extract only zips in your Sample.csv
map.df <- fortify(map) # convert to data frame suitable for plotting
# merge data from Samples.csv into map data frame
map.data <- data.frame(id=rownames(map@data),ZIP=map@data$ZCTA5CE10)
map.data <- merge(map.data,data,by="ZIP")
map.df <- merge(map.df,map.data,by="id")
# load state boundaries
states <- readOGR(dsn=".","gz_2010_us_040_00_5m")
states <- states[states$NAME %in% c("New York","New Jersey"),] # extract NY and NJ
states.df <- fortify(states) # convert to data frame suitable for plotting
ggMap <- ggplot(data = map.df, aes(long, lat, group = group))
ggMap <- ggMap + geom_polygon(aes(fill = Probability_1))
ggMap <- ggMap + geom_path(data=states.df, aes(x=long,y=lat,group=group))
ggMap <- ggMap + scale_fill_gradientn(name="Probability",colours=brewer.pal(9,"Reds"))
ggMap <- ggMap + coord_equal()
ggMap
rgdal
包有助于从 ESRI 形状文件创建 R 空间对象。在您的情况下,我们将多边形 shapefile 导入 R 中的 SpatialPolygonDataFrame 对象。后者有两个主要部分:多边形部分,其中包含将连接以在 map 上创建多边形的纬度和经度点,以及数据部分其中包含有关多边形的信息(因此,每个多边形一行)。例如,如果我们调用空间对象
map
,那么这两部分可以引用为
map@polygons
和
map@data
.制作等值线 map 的基本挑战是关联来自
Sample.csv
的数据。文件,带有相关的多边形(邮政编码)。
1. Load polygon shapefiles into Spatial object ( => zips)
2. Subset if appropriate ( => map).
3. Convert to data frame suitable for plotting ( => map.df).
4. Merge data from Sample.csv into map.df.
5. Draw the map.
Probability_1
每个邮政编码。这是一个三步过程。
map@data
中.邮政编码存储在
map@data
, 在
ZCTA5CE10
列中.所以首先我们必须创建一个关联
map@data
的数据框。行名称 (
id
) 和
map@data$ZCTA5CE10
(
ZIP
)。然后我们合并您的
Sample.csv
结果使用两个数据帧中的 ZIP 字段。然后我们将结果合并到
map.df
.这可以在 3 行代码中完成。
long
,
lat
, 和
group
在
map.df
都是通过调用
fortify(...)
创建的.调用
geom_polygon(...)
告诉 ggplot 绘制多边形并使用
map.df$Probability_1
中的信息进行填充.调用
geom_path(...)
告诉 ggplot 创建一个具有状态边界的层。调用
scale_fill_gradientn(...)
告诉 ggplot 使用基于颜色啤酒“红色”调色板的配色方案。最后,调用
coord_equal(...)
告诉 ggplot 对 x 和 y 使用相同的比例,这样 map 就不会失真。
关于r - R 中的等值线图 - TIGER Shapefile 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20774732/
我想为 H3 生成 shapefile特定地理区域的六边形。特别是,我对分辨率为 6、7 和 9 的湾区感兴趣。如何为覆盖该区域的六边形创建 shapefile? 我是 shapefile 或任何其他
我有一个形状文件 (Sample.shp) 以及其他两个文件(Sample.shx 和 Sample.dbf),其中为孟买的 15 个 pincode 定义了几何图形(多边形)。 我可以使用快速入门教
我已经在这方面工作了一段时间并且取得了一些成功,但是在重写文件时,我没有。 我正在使用的 shapefile 是都市和小都市地区的多边形形状文件,但我对小都市地区不感兴趣,所以我正在使用 R 中的 s
我下载了波士顿的 shapefile,并想使用下面的代码将其绘制出来。然而它给了我一个错误 ValueError: lat_0 必须在 -90.000000 和 90.000000 度之间 原来coo
我正在使用 {raster} 来根据不规则形状文件(亚马逊生物群落)剪辑(或裁剪)栅格,但输出始终具有矩形范围。但是,我需要形状文件的完全相同的几何形状的输出。有小费吗?干杯。 library(ras
在 fiona 1.5.0 上(我很困惑为什么各种文件(例如 .dbf 和 .gdb)不打印我的“不是 Shapefile!”(这是我想要的文件不是 . shp) 退出前警告。 import fion
我正在尝试使用 python 中的 matplotlib 在世界地图上绘制国家/地区的填充多边形。 我有一个包含每个国家/地区边界坐标的 shapefile。现在,我想使用 matplotlib 将这
我使用 postgresql 9.1,postgis 2.0.1。为了将 shapefile 导入我的数据库,我使用 shp2pgsql。我尝试了很多导入这些 shapefile 的方法(shp2pg
有没有办法读取具有特定字符编码的形状文件?我正在尝试读取在某些名称中包含特殊(法语)字符的加拿大 shapefile。我可以手动转换它们,但如果我对某处的设置一无所知,我宁愿不这样做。 # manua
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
library(raster) admin <- getData('GADM', country='FRA', level=2) set.seed(123) id <- data.frame(ID_2
我目前有一个英国的 shapefile,并绘制了英国不同地区的物种种群。到目前为止,我刚刚绘制了 3 个物种种群水平,并将它们着色为红色 = 高、橙色 = 中、绿色 = 低。但我想做的是有一个渐变图,
Facebook 构建了它所谓的 relative wealth index适用于全局 > 1900 万个微型区域(2.4 公里网格单元)。他们已经 shared the data ( zip ) 在
在阅读了大量帖子和网站后,我无法找到如何从我的经纬度数据表中创建多边形 shapefile。我想创建这样的 map 。 我的csv数据文件包含地中海1000个点的经度、纬度和属性。我想按属性创建 sh
你好我尝试实现传单插入,以显示本地托管的 shapefile。 shapefile 的显示有效,但我想添加一个图层控件(用于切换 shapefile 图层)。插件链接:https://github.c
使用下面的代码,我可以创建一条折线并将其写入形状文件。但我也想读取Polyline类型的形状文件并将Point转换为x:f64和y:f64。 use shapefile::{Point, Polyli
我有一个包含亚马逊大河的 shapefile。仅 shapefile 就有 37.9 MB,连同属性表高达 42.1 MB。我正在生成所有巴西亚马逊的 PNG 图像,每个 1260x940 像素,sh
我正在尝试导入这样的形状文件: fn <- "Proj1" my_shp <- readShapeSpatial(fn) 在 Windows 计算机(32 位)上它工作正常,但是当我在 Ubuntu
我有一个导出 ArcGIS map 点的应用程序。 Spring MVC Controller 中的接收点。 我的指针有一个可变的属性列表。属性是具有两个值(名称和值)的字符串列表。代码: publi
我正在编写一个 map 应用程序,用于导入人口普查和 USGS 信息并将其显示为 Google map 上的叠加层。我想导出这些项目的混搭并导出为 Shapefile . 我使用 geotools 库
我是一名优秀的程序员,十分优秀!