In-Class Ex05

Published

February 6, 2023

Modified

March 6, 2023

Getting started

  • sfdep - working with simple features. point pattern analysis

  • only focus on local CLq

pacman::p_load(tidyverse, sf, tmap, sfdep)

Reading the data

studyArea <- st_read(dsn = "data",
                     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
store <- st_read(dsn = "data",
                     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)

nb <- include_self(
  st_knn(st_geometry(store), 6)
)
wt <- st_kernel_weights(nb, 
                        store, 
                        "gaussian", 
                        adaptive = TRUE)
FamilyMart <- store %>% 
  filter(Name == "Family Mart")
A <- FamilyMart$Name
SevenEleven <- store %>% 
  filter(Name == "7-Eleven")
B <- SevenEleven$Name
LCLQ <-local_colocation(A,B,nb,wt,49)

Combining both dataframes together. Can’t use relational join because no unique id

Using LCLQ join to store

LCLQ_stores<-cbind(store, LCLQ)
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))