Library sf dan rgdal digunakan untuk
membaca dan mengelola data spasial.
library(sf)
## Warning: package 'sf' was built under R version 4.2.3
## Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE
library(rgdal)
## Warning: package 'rgdal' was built under R version 4.2.3
## Loading required package: sp
## Warning: package 'sp' was built under R version 4.2.3
## The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,
## which was just loaded, will retire in October 2023.
## Please refer to R-spatial evolution reports for details, especially
## https://r-spatial.org/r/2023/05/15/evolution4.html.
## It may be desirable to make the sf package available;
## package maintainers should consider adding sf to Suggests:.
## The sp package is now running under evolution status 2
## (status 2 uses the sf package in place of rgdal)
## Please note that rgdal will be retired during October 2023,
## plan transition to sf/stars/terra functions using GDAL and PROJ
## at your earliest convenience.
## See https://r-spatial.org/r/2023/05/15/evolution4.html and https://github.com/r-spatial/evolution
## rgdal: version: 1.6-7, (SVN revision 1203)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.5.2, released 2022/09/02
## Path to GDAL shared files: C:/Users/lutfi/AppData/Local/R/win-library/4.2/rgdal/gdal
## GDAL binary built with GEOS: TRUE
## Loaded PROJ runtime: Rel. 8.2.1, January 1st, 2022, [PJ_VERSION: 821]
## Path to PROJ shared files: C:/Users/lutfi/AppData/Local/R/win-library/4.2/rgdal/proj
## PROJ CDN enabled: FALSE
## Linking to sp version:2.0-0
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading sp or rgdal.
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.2.3
mapIndonesia <- st_read("C:/Users/lutfi/OneDrive/Documents/IPB University/1. Kuliah/Semester 5/Regresi Spasial/idn_adm_bps_20200401_shp/idn_admbnda_adm3_bps_20200401.shp", quiet = TRUE)
# Menampilkan gambaran data spasial Indonesia
glimpse(mapIndonesia)
## Rows: 7,069
## Columns: 17
## $ Shape_Leng <dbl> 0.2798656, 0.7514001, 0.6900061, 0.6483629, 0.2437073, 1.35…
## $ Shape_Area <dbl> 0.003107633, 0.016925540, 0.024636382, 0.010761277, 0.00116…
## $ ADM3_EN <chr> "2 X 11 Enam Lingkung", "2 X 11 Kayu Tanam", "Abab", "Abang…
## $ ADM3_PCODE <chr> "ID1306050", "ID1306052", "ID1612030", "ID5107050", "ID7471…
## $ ADM3_REF <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ ADM3ALT1EN <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ ADM3ALT2EN <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ ADM2_EN <chr> "Padang Pariaman", "Padang Pariaman", "Penukal Abab Lematan…
## $ ADM2_PCODE <chr> "ID1306", "ID1306", "ID1612", "ID5107", "ID7471", "ID9432",…
## $ ADM1_EN <chr> "Sumatera Barat", "Sumatera Barat", "Sumatera Selatan", "Ba…
## $ ADM1_PCODE <chr> "ID13", "ID13", "ID16", "ID51", "ID74", "ID94", "ID94", "ID…
## $ ADM0_EN <chr> "Indonesia", "Indonesia", "Indonesia", "Indonesia", "Indone…
## $ ADM0_PCODE <chr> "ID", "ID", "ID", "ID", "ID", "ID", "ID", "ID", "ID", "ID",…
## $ date <date> 2019-12-20, 2019-12-20, 2019-12-20, 2019-12-20, 2019-12-20…
## $ validOn <date> 2020-04-01, 2020-04-01, 2020-04-01, 2020-04-01, 2020-04-01…
## $ validTo <date> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((100.2811 -0..., MULTIPOLYGON (…
Data jumlah dan kepadatan penduduk di Kota Padangsidimpuan diperoleh
dari laman Visualisasi Data Kependudukan Kementerian Dalam Negeri dengan
tautan https://gis.dukcapil.kemendagri.go.id/peta/.
dataPSP <- read_excel("C:/Users/lutfi/OneDrive/Documents/IPB University/1. Kuliah/Semester 5/Regresi Spasial/PSP.xlsx")
dataPSP
## # A tibble: 6 × 4
## Kecamatan Kode JumlahPenduduk KepadatanPenduduk
## <chr> <chr> <dbl> <dbl>
## 1 Padangsidimpuan Angkola Julu ID1277051 9592 405.
## 2 Padangsidimpuan Batunadua ID1277030 29294 954.
## 3 Padangsidimpuan Hutaimbaru ID1277050 19900 891.
## 4 Padangsidimpuan Selatan ID1277020 69435 4392.
## 5 Padangsidimpuan Tenggara ID1277010 34468 1246.
## 6 Padangsidimpuan Utara ID1277040 66221 4700.
Menggabungkan data jumlah dan kepadatan penduduk Kota Padangsidimpuan dengan data Indonesia berdasarkan kode kecamatan.
mapPSP<- mapIndonesia %>%
inner_join(dataPSP, by = c("ADM3_PCODE" = "Kode"))
mapPSP
## Simple feature collection with 6 features and 19 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 99.22175 ymin: 1.303477 xmax: 99.34987 ymax: 1.470234
## Geodetic CRS: WGS 84
## Shape_Leng Shape_Area ADM3_EN ADM3_PCODE ADM3_REF
## 1 0.2394296 0.001923370 Padangsidimpuan Angkola Julu ID1277051 <NA>
## 2 0.4509922 0.002493813 Padangsidimpuan Batunadua ID1277030 <NA>
## 3 0.2493852 0.001814370 Padangsidimpuan Hutaimbaru ID1277050 <NA>
## 4 0.2531742 0.001284056 Padangsidimpuan Selatan ID1277020 <NA>
## 5 0.2865612 0.002273776 Padangsidimpuan Tenggara ID1277010 <NA>
## 6 0.2136018 0.001144457 Padangsidimpuan Utara ID1277040 <NA>
## ADM3ALT1EN ADM3ALT2EN ADM2_EN ADM2_PCODE ADM1_EN
## 1 <NA> <NA> Kota Padangsidimpuan ID1277 Sumatera Utara
## 2 <NA> <NA> Kota Padangsidimpuan ID1277 Sumatera Utara
## 3 <NA> <NA> Kota Padangsidimpuan ID1277 Sumatera Utara
## 4 <NA> <NA> Kota Padangsidimpuan ID1277 Sumatera Utara
## 5 <NA> <NA> Kota Padangsidimpuan ID1277 Sumatera Utara
## 6 <NA> <NA> Kota Padangsidimpuan ID1277 Sumatera Utara
## ADM1_PCODE ADM0_EN ADM0_PCODE date validOn validTo
## 1 ID12 Indonesia ID 2019-12-20 2020-04-01 <NA>
## 2 ID12 Indonesia ID 2019-12-20 2020-04-01 <NA>
## 3 ID12 Indonesia ID 2019-12-20 2020-04-01 <NA>
## 4 ID12 Indonesia ID 2019-12-20 2020-04-01 <NA>
## 5 ID12 Indonesia ID 2019-12-20 2020-04-01 <NA>
## 6 ID12 Indonesia ID 2019-12-20 2020-04-01 <NA>
## Kecamatan JumlahPenduduk KepadatanPenduduk
## 1 Padangsidimpuan Angkola Julu 9592 405.07
## 2 Padangsidimpuan Batunadua 29294 953.89
## 3 Padangsidimpuan Hutaimbaru 19900 891.18
## 4 Padangsidimpuan Selatan 69435 4391.84
## 5 Padangsidimpuan Tenggara 34468 1246.13
## 6 Padangsidimpuan Utara 66221 4699.86
## geometry
## 1 MULTIPOLYGON (((99.25068 1....
## 2 MULTIPOLYGON (((99.30184 1....
## 3 MULTIPOLYGON (((99.23344 1....
## 4 MULTIPOLYGON (((99.27729 1....
## 5 MULTIPOLYGON (((99.32068 1....
## 6 MULTIPOLYGON (((99.27282 1....
p <- ggplot() +
geom_sf(data=mapPSP, aes(fill=JumlahPenduduk))
p
colorPalette = RColorBrewer::brewer.pal(5,"YlGnBu")
yBreak = seq(106.72, 106.86, by=0.04)
p + scale_fill_gradientn(colors = colorPalette,
name = "Jumlah Penduduk") +
labs(title = "Jumlah Penduduk Kota Padangsidimpuanm") +
theme(legend.text = element_text(size=7),
legend.title = element_text(size=7),
axis.text.x = element_text(size = 7),
axis.text.y = element_text(size = 7),
title = element_text(size=12, face='bold')) +
scale_x_continuous(breaks = yBreak)
a <- ggplot() +
geom_sf(data=mapPSP, aes(fill=KepadatanPenduduk))
a
colorPalette = RColorBrewer::brewer.pal(5,"YlGnBu")
yBreak = seq(106.72, 106.86, by=0.04)
a + scale_fill_gradientn(colors = colorPalette,
name = "Kepadatan Penduduk") +
labs(title = "Kepadatan Penduduk Kota Padangsidimpuan") +
theme(legend.text = element_text(size=7),
legend.title = element_text(size=7),
axis.text.x = element_text(size = 7),
axis.text.y = element_text(size = 7),
title = element_text(size=12, face='bold')) +
scale_x_continuous(breaks = yBreak)
leaflet# membuat custom palette warna
populationPalette <- colorNumeric(
palette = "YlGnBu",
domain = mapPSP$JumlahPenduduk
)
# membuat custom popup
popupLabel <- paste0(
"<b>Kecamatan ", mapPSP$Kecamatan,"</b><br/>",
"Jumlah Penduduk (jiwa): ", mapPSP$JumlahPenduduk, "<br/>",
"Luas Wilayah (km2): ", mapPSP$LuasWilayah, "<br/>",
"Kepadatan Penduduk (jiwa/km2): ", mapPSP$KepadatanPenduduk) %>%
lapply(htmltools::HTML)
# membuat peta leaflet
leaflet(mapPSP) %>%
addProviderTiles(providers$CartoDB.PositronNoLabels, group = "Light Mode") %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels, group = "Dark Mode") %>%
addPolygons(weight = 1,
opacity = 1,
fillOpacity = 0.9,
label = popupLabel,
color = ~populationPalette(JumlahPenduduk),
highlightOptions = highlightOptions(color = "white",
weight = 2,
bringToFront = TRUE) ) %>%
addLegend(position = "bottomright",
pal = populationPalette,
values = ~JumlahPenduduk,
title = "Jumlah\nPenduduk",
opacity = 1) %>%
addLayersControl(position = 'topright',
baseGroups = c("Light Mode", "Dark Mode"),
options = layersControlOptions(collapsed = FALSE)) %>%
setView(lat = - 6.595, lng = 106.87, zoom = 12)
leaflet# membuat custom palette warna
populationPalette <- colorNumeric(
palette = "YlGnBu",
domain = mapPSP$KepadatanPenduduk
)
# membuat peta leaflet
leaflet(mapPSP) %>%
addProviderTiles(providers$CartoDB.PositronNoLabels, group = "Light Mode") %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels, group = "Dark Mode") %>%
addPolygons(weight = 1,
opacity = 1,
fillOpacity = 0.9,
label = popupLabel,
color = ~populationPalette(KepadatanPenduduk),
highlightOptions = highlightOptions(color = "white",
weight = 2,
bringToFront = TRUE) ) %>%
addLegend(position = "bottomright",
pal = populationPalette,
values = ~KepadatanPenduduk,
title = "Kepadatan\nPenduduk",
opacity = 1) %>%
addLayersControl(position = 'topright',
baseGroups = c("Light Mode", "Dark Mode"),
options = layersControlOptions(collapsed = FALSE)) %>%
setView(lat = - 6.595, lng = 106.87, zoom = 12)