[英]R googleway with ABS census data
I'm intending to analyse Australian census data using googleway to produce heat maps.我打算使用googleway分析澳大利亚人口普查数据以生成热图。
My approach has been to use prepared data from googleway melbourne
which contains column SA2_NAME
and join it with the ESRI shape file from the census data after conversion with rgdal (code below).我的方法是使用来自 googleway
melbourne
准备好的数据,其中包含列SA2_NAME
并在使用rgdal (下面的代码)转换后将其与来自人口普查数据的 ESRI 形状文件连接起来。 The problem is that joining by SA2_NAME
is not unique for polylines - some SA2 areas are made of multiple 'sub' areas.问题在于,通过
SA2_NAME
连接对于多段线并不是唯一的 - 一些 SA2 区域由多个“子”区域组成。 So it seems this is not a good approach.所以这似乎不是一个好方法。
A better approach would be to convert the ESRI shape data sa2_shape
below to have polylines in the format of the melbourne
data.更好的方法是将下面的 ESRI 形状数据
sa2_shape
转换为具有melbourne
数据格式的折线。 How is this done?这是怎么做的?
Code below produces a 'bridging' data frame to use in joining melbourne
data from googleway
with ABS data which has SA2_MAIN
as the key field - as stated above, the problem with this 'hack' approach is that polylines are not unique by SA2_NAME
下面的代码生成一个“桥接”数据框,用于将来自
googleway
melbourne
数据与以SA2_MAIN
作为关键字段的 ABS 数据连接SA2_MAIN
- 如上所述,这种“hack”方法的问题在于,折线不是SA2_NAME
唯一的
library(tidyverse)
library(googleway)
library(rgdal)
shape_path <- "abs_data/sa2_esri_shapefile"
shape_file <- "SA2_2016_AUST"
sa2_shape <- readOGR(shape_path, shape_file)
sa2_df <- data.frame(sa2_shape$SA2_MAIN, sa2_shape$SA2_NAME)
names(sa2_df) <- c("SA2_MAIN", "SA2_NAME")
sa2_df <- sa2_df %>% semi_join(melbourne, by = "SA2_NAME")
As per SymbolixAU comment - used sf
to load the data and this works as long as geometry
is not an empty list - see code below.根据 SymbolixAU 注释 - 使用
sf
加载数据,只要geometry
不是空列表就可以工作 - 请参阅下面的代码。
library(tidyverse)
library(googleway)
library(sf)
shape_path <- "abs_data/sa2_esri_shapefile"
shape_file <- "SA2_2016_AUST"
shape_file_path <- paste0(shape_path, "/", shape_file, '.shp')
sa2_shape <- sf::st_read(shape_file_path)
sa2_shape <- sa2_shape %>%
filter(STATE_NAME == "Victoria",
AREA_SQKM > 0)# This is important - otherwise google_map() will crash!
google_map() %>%
googleway::add_polygons(data = sa2_shape,
polyline = "geometry",
fill_colour = "SA2_NAME")
> sa2_shape %>% head()
Simple feature collection with 6 features and 6 fields
geometry type: MULTIPOLYGON
dimension: XY
bbox: xmin: 143.6849 ymin: -37.68153 xmax: 143.951 ymax: -37.46847
epsg (SRID): 4283
proj4string: +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs
SA2_MAIN SA2_MAIN16 SA2_NAME STATE_CODE STATE_NAME AREA_SQKM geometry
1 201011001 201011001 Alfredton 2 Victoria 52.7111 MULTIPOLYGON (((143.7072 -3...
2 201011002 201011002 Ballarat 2 Victoria 12.3787 MULTIPOLYGON (((143.8675 -3...
3 201011003 201011003 Ballarat - North 2 Victoria 92.3577 MULTIPOLYGON (((143.853 -37...
4 201011004 201011004 Ballarat - South 2 Victoria 32.8541 MULTIPOLYGON (((143.8675 -3...
5 201011005 201011005 Buninyong 2 Victoria 51.5855 MULTIPOLYGON (((143.8533 -3...
6 201011006 201011006 Delacombe 2 Victoria 34.1608 MULTIPOLYGON (((143.7072 -3...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.