Analisis Data Area

Jumlah dan Kepadatan Penduduk di Kota Padangsidimpuan

Packages

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

Membaca data spasial Indonesia

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 Kota Padangsidimpuan

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 Kota Padangsidimpuan dengan data Indonesia

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

Peta Choropleth Jumlah Penduduk Kota Padangsidimpuan

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) 

Peta Choropleth Kepadatan Penduduk Kota Padangsidimpuan

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) 

Peta Choropleth Jumlah Penduduk Kota Padangsidimpuan menggunakan fungsi 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)

Peta Choropleth Kepadatan Penduduk Kota Padangsidimpuan menggunakan fungsi 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)