简体   繁体   English

带有 ABS 人口普查数据的 R googleway

[英]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地图

> 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM