::p_load(tidyverse, sf, tmap, sfdep) pacman
In-Class Ex05
Getting started
sfdep - working with simple features. point pattern analysis
only focus on local CLq
Reading the data
<- st_read(dsn = "data",
studyArea layer = "study_area") %>%
st_transform(crs= 3829)
Reading layer `study_area' from data source
`C:\xinyeehow\IS415-GAA\In-Class_Ex\In-Class_Ex05\data' using driver `ESRI Shapefile'
Simple feature collection with 7 features and 7 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 121.4836 ymin: 25.00776 xmax: 121.592 ymax: 25.09288
Geodetic CRS: TWD97
<- st_read(dsn = "data",
store layer = "stores") %>%
st_transform(crs= 3829)
Reading layer `stores' from data source
`C:\xinyeehow\IS415-GAA\In-Class_Ex\In-Class_Ex05\data' using driver `ESRI Shapefile'
Simple feature collection with 1409 features and 4 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 121.4902 ymin: 25.01257 xmax: 121.5874 ymax: 25.08557
Geodetic CRS: TWD97
Visualizing sf layer
tm_polygon must be on top with the dots coming next
tmap_mode("view")
tm_shape(studyArea) +
tm_polygons() +
tm_shape(store)+
tm_dots(col = "Name",
size = 0.01,
border.col = "black",
border.lwd = 0.5) +
tm_view(set.zoom.limits = c(12,16))
Local Colocation Quotient
number 6 = 6 neighbors (always go for even number)
<- include_self(
nb st_knn(st_geometry(store), 6)
)
<- st_kernel_weights(nb,
wt
store, "gaussian",
adaptive = TRUE)
<- store %>%
FamilyMart filter(Name == "Family Mart")
<- FamilyMart$Name A
<- store %>%
SevenEleven filter(Name == "7-Eleven")
<- SevenEleven$Name B
<-local_colocation(A,B,nb,wt,49) LCLQ
Combining both dataframes together. Can’t use relational join because no unique id
Using LCLQ join to store
<-cbind(store, LCLQ) LCLQ_stores
tmap_mode("view")
tm_shape(studyArea) +
tm_polygons() +
tm_shape(LCLQ_stores) +
tm_dots(col = "X7.Eleven",
size = 0.1,
border.col = "black",
border.lwd = 0.5) +
tm_dots(col = "X7.Eleven",
size = 0.1,
border.col = "black",
border.lwd = 0.5) +
tm_view(set.zoom.limits = c(12,16))