r - 当给定“多边形”数据类型中的坐标时,如何在 R 中绘制纬度/经度六边形?
问题描述
我用奥斯汀市的滑板车数据集做了一些基本的数据分析。在这个数据集中,每个滑板车骑行都被赋予了骑行开始或结束的地理六边形的 ID 。
我按六边形分组并总结了游乐设施的数量并制作了一个 csv,你可以像这样得到:
austin_hexagon_SO <- read_csv("http://www.sharecsv.com/dl/229ad18b34ffb021189a821a3bcbd5a8/austin_hexagon_SO.csv")
glimpse(austin_hexagon_SO)
# Observations: 2,482
# Variables: 3
# $ orig_cell_id <dbl> 15186, 14864, 14706, 14707, 15019, 14714, 1502…
# $ n <dbl> 10765, 8756, 8538, 8338, 8291, 8049, 7988, 778…
# $ polygon <chr> "POLYGON ((-97.735143 30.283413000000003, -97.…
现在,我已经研究了一堆不同的包,特别是library(sp)
但是我无法弥合从获取看起来像这样的数据框并将其转换为基本 R plot、ggplot、ggmap 或 sp 可以理解的东西和阴谋。
我很想从一个基本的热图开始,其中六边形的填充美学被缩放到n
.
在此先感谢您的帮助!
解决方案
读取数据框后,多边形仍然只是字符串(即 class character
)。R 还不知道这些字符串有一种非常特殊的格式,称为WKT
.
library("readr")
library("tidyverse")
austin_hexagon <- read_csv(
"http://www.sharecsv.com/dl/229ad18b34ffb021189a821a3bcbd5a8/austin_hexagon_SO.csv",
# 10 polygons are sufficient for an example
n_max = 10)
#> Parsed with column specification:
#> cols(
#> orig_cell_id = col_double(),
#> n = col_double(),
#> polygon = col_character()
#> )
glimpse(austin_hexagon)
#> Observations: 10
#> Variables: 3
#> $ orig_cell_id <dbl> 15186, 14864, 14706, 14707, 15019, 14714, 15029, ...
#> $ n <dbl> 10765, 8756, 8538, 8338, 8291, 8049, 7988, 7787, ...
#> $ polygon <chr> "POLYGON ((-97.735143 30.283413000000003, -97.735...
# This package contains a function that can handle the conversion from
# WKT polygons to a SpatialPolygons data frame
library("rangeMapper")
#> Warning: package 'rangeMapper' was built under R version 3.5.3
#> Loading required package: RSQLite
#> This is rangeMapper 0.3-4
X <- WKT2SpatialPolygonsDataFrame(austin_hexagon, "polygon", "orig_cell_id")
class(X)
#> [1] "SpatialPolygonsDataFrame"
#> attr(,"package")
#> [1] "sp"
plot(X)
library("sp")
# If you want to color by n, first add n to the SpatialPolygons DF
X <- merge(X, austin_hexagon, by = "orig_cell_id")
# There a number of ways to plot spatial polygons; let's use base graphics
# Create a color palette
maxColorValue <- 255
palette <- colorRampPalette(c("white", "red"))(maxColorValue)
plot(X, col = palette[cut(X$n, maxColorValue)])
由reprex 包(v0.2.1)于 2019 年 3 月 23 日创建
推荐阅读
- mysql - 如何将左连接限制为仅 1 行?没有子查询?
- ffmpeg - 如何(正确)在 Google 的 Nest Device Access API 中使用 ExtendRtspStream 命令?
- javascript - Shopify order api 在发布请求时给出 cookie 错误
- html - HTML CSS 响应卡
- javascript - Redux:在匿名函数中产生
- django - 如何在整数字段 Django Rest 上设置最大长度
- json - 如何根据键前缀解码 JSON 对象
- html - 如何更新 csv 文件以记录使用 toggleClass jQuery 函数实现的用户选择的图像?
- javascript - chrome.runtime.sendMessage 从后台脚本收到空响应
- multithreading - 为当前调用子程序下方的对象提供变量的正确方法?