P3d-Peta Choropleth

A choropleth map (from Greek χῶρος “area/region” and πλῆθος“multitude”) is a type of thematic map in which areas are shaded or patterned in proportion to a statistical variable that represents an aggregate summary of a geographic characteristic within each area, such as population density or per-capita income.

Installing the Library

Pada penggunaan pertama, silahkan install terlebih dahulu package yang digunakan dengan menuliskan kode berikut ini :

install.packages("sf")           # Untuk memakai fungsi st_read nya
install.packages("tigris")       # Untuk 'Memotong' SHP
install.packages("ggplot2")      # Untuk Visualisasi Peta
install.packages("dplyr")        # untuk pakai fungsi Glimpse nya

Selanjutnya load package yang telah di install dengan kode berikut ini

library(sf)
library(ggplot2)
library(tigris)
library(dplyr)

Spatial Data Structure

Salah satu tipe data spasial yang paling umum digunakan adalah shapefile, walaupun banyak tipe data yang lain, untuk sesi kali ini, kita fokus pada bentuk data ini saja.

Reading Spatial Data

Data yang akan kita gunakan adalah Indonesia - Subnational Administrative Boundaries yang bisa diakses di HumData, data ini berisi :
HumData
Data ini sendiri berasal dari
BPS

Data-data tersebut, bisa diakses juga pada Link berikut ini :

  • Admin 0 : Berisi SHP Indonesia (Zip 26 MB)

  • Admin 1 : Berisi SHP Indonesia Per Provinsi (Zip 28 MB)

  • Admin 2 : Berisi SHP Indonesia Per Kabupaten (Zip 40.5 MB)

  • Admin 3 : Berisi SHP Indonesia per Kecamatan (Zip 78.5 MB)

Silahkan Download dan Extract file tersebut, pada praktikum ini, Kita hanya akan menggunakan SHP per Kabupaten (Admin 2)

Percobaan Pertama Jabar di Indonesia

Memasukkan Data SHP

Untuk memasukkan Data SHP, bisa dilakukan dengan melakukan akses pada file SHP yang telah anda download.

Admin2Kabupaten<-"D:/GDrive/01-Event/06-KSN-Peta/HumData/idn_admbnda_adm2_bps_20200401.shp"

Jika Anda ingin tahu seperti apa file SHP tersebut di R, bisa memakai fungsi glimpse dari Package dplyr

glimpse(Admin2Kabupaten)
##  chr "D:/GDrive/01-Event/06-KSN-Peta/HumData/idn_admbnda_adm2_bps_20200401.shp"

Kita perlu merubahnya menjadi melalui fungsi ‘st_read’ dari Package ‘sf’

Admin2<-st_read(Admin2Kabupaten)
## Reading layer `idn_admbnda_adm2_bps_20200401' from data source `D:\GDrive\01-Event\06-KSN-Peta\HumData\idn_admbnda_adm2_bps_20200401.shp' using driver `ESRI Shapefile'
## Simple feature collection with 522 features and 14 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: 95.01079 ymin: -11.00762 xmax: 141.0194 ymax: 6.07693
## geographic CRS: WGS 84

Dapat dilihat, sudah berubah

glimpse(Admin2)
## Rows: 522
## Columns: 15
## $ Shape_Leng <dbl> 2.360029, 1.963994, 4.590182, 3.287754, 4.448584, 4.9072...
## $ Shape_Area <dbl> 0.22896809, 0.15413587, 0.23639581, 0.31616114, 0.343038...
## $ ADM2_EN    <chr> "Aceh Barat", "Aceh Barat Daya", "Aceh Besar", "Aceh Jay...
## $ ADM2_PCODE <chr> "ID1107", "ID1112", "ID1108", "ID1116", "ID1103", "ID110...
## $ ADM2_REF   <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
## $ ADM2ALT1EN <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
## $ ADM2ALT2EN <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
## $ ADM1_EN    <chr> "Aceh", "Aceh", "Aceh", "Aceh", "Aceh", "Aceh", "Aceh", ...
## $ ADM1_PCODE <chr> "ID11", "ID11", "ID11", "ID11", "ID11", "ID11", "ID11", ...
## $ ADM0_EN    <chr> "Indonesia", "Indonesia", "Indonesia", "Indonesia", "Ind...
## $ ADM0_PCODE <chr> "ID", "ID", "ID", "ID", "ID", "ID", "ID", "ID", "ID", "I...
## $ date       <date> 2019-12-20, 2019-12-20, 2019-12-20, 2019-12-20, 2019-12...
## $ validOn    <date> 2020-04-01, 2020-04-01, 2020-04-01, 2020-04-01, 2020-04...
## $ validTo    <date> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
## $ geometry   <MULTIPOLYGON [°]> MULTIPOLYGON (((96.26836 4...., MULTIPOLYGO...

Memasukkan Data via File CSV

Data CSV bagaimana yang perlu digabungkan dengan file SHP?

Setiap File SHP biasanya disertai bentuk file lainnya, seperti : cpg, dbf, prj,sbn,sbx,shp.xml,shx Anda cuma perlu fokus pada file dbf atau dBase database file saja.

Saya biasanya, buka file dbf nya, tambahkan 1 atau lebih kolom baru dengan nama kolom sebagai Data Kuantitatif yang akan menentukan gradasi warna, lalu simpan sebagai csv. File dbf bisa dengan mudah anda buka melalui Microsoft Excel atau software lain yang sejenis.

JabarIndonesia<-read.csv("https://raw.githubusercontent.com/Nr5D/BatasWilayahID/main/JabarIndonesia.csv",
                         header=TRUE, sep=";")

Merge Data

Merge Data dilakukan dengan memmbandingkan primary key antara Spatial Data (Admin2 hasil import file SHP) dan Data Frame (JabarIndonesia hasil Import File CSV), karena CSV yang dipakai berasal dari file dbf biasanya tidak ada masalah. Ini menggunakan fungsi geo_join() dari package tigris

merged_JabarIndonesia <- geo_join(spatial_data=Admin2, 
                                  data_frame=JabarIndonesia, by_sp="ADM2_PCODE", 
                                  by_df="ADM2_PCODE", how = "inner")

Atur Warna

Anda bisa mengatur warna sendiri berikut sebagai contoh :

mycol <- c("green", "yellow", "red", "red4")

Menampilkan Plot Peta Chloropleth

pDATA<-ggplot()+
  geom_sf(data=merged_JabarIndonesia,aes(fill=DATA))+
  scale_fill_gradientn(colours=mycol)+
  labs(title="Jabar dan Indonesia")
pDATA

Percobaan Kedua : Jabar di Pulau Jawa Saja

JabarJawa<-read.csv("https://raw.githubusercontent.com/Nr5D/BatasWilayahID/main/JabarJawa.csv",
                    header=TRUE, sep=";")

Gabungkan Data

merged_JabarJawa <- geo_join(spatial_data=Admin2, 
                             data_frame=JabarJawa, by_sp="ADM2_PCODE", 
                             by_df="ADM2_PCODE", how = "inner")

Tampilkan Plot Data nya

pDATA<-ggplot()+
  geom_sf(data=merged_JabarJawa,aes(fill=DATA))+
  scale_fill_gradientn(colours=mycol)+
  labs(title="Jabar dan Pulau Jawa")
pDATA

Perbedaan dari 2 Percobaan

Perbedaan Utamanya hanya ada pada data yang dimasukkan CSV : JabarIndonesia dan JabarJawa

Seperti Apa Perbedaaannya

Dimensi Data

dim(JabarIndonesia)
## [1] 522   5
dim(JabarJawa)
## [1] 122   5

Lihat Lebih Jauh

head(JabarIndonesia)
##   Shape_Leng Shape_Area       ADM2_EN ADM2_PCODE DATA
## 1   6.732280  0.1494304      Simeulue     ID1101   NA
## 2   4.907219  0.1534414  Aceh Singkil     ID1102   NA
## 3   4.448584  0.3430383  Aceh Selatan     ID1103   NA
## 4   3.473021  0.3374562 Aceh Tenggara     ID1104   NA
## 5   5.037148  0.4434042    Aceh Timur     ID1105   NA
## 6   3.676889  0.3834894   Aceh Tengah     ID1106   NA
head(JabarJawa)
##   Shape_Leng  Shape_Area              ADM2_EN ADM2_PCODE DATA
## 1  1.2780153 0.000880270     Kepulauan Seribu     ID3101   NA
## 2  0.8389714 0.011833671 Kota Jakarta Selatan     ID3171   NA
## 3  1.0211135 0.015089248   Kota Jakarta Timur     ID3172   NA
## 4  0.3837589 0.003912531   Kota Jakarta Pusat     ID3173   NA
## 5  0.5903399 0.010251018   Kota Jakarta Barat     ID3174   NA
## 6  1.1430047 0.011458928   Kota Jakarta Utara     ID3175   NA

Lihat Lebih Jauh Lagi

glimpse(JabarIndonesia)
## Rows: 522
## Columns: 5
## $ Shape_Leng <dbl> 6.7322801, 4.9072187, 4.4485844, 3.4730211, 5.0371477, 3...
## $ Shape_Area <dbl> 0.149430413, 0.153441369, 0.343038263, 0.337456209, 0.44...
## $ ADM2_EN    <chr> "Simeulue", "Aceh Singkil", "Aceh Selatan", "Aceh Tengga...
## $ ADM2_PCODE <chr> "ID1101", "ID1102", "ID1103", "ID1104", "ID1105", "ID110...
## $ DATA       <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
glimpse(JabarJawa)
## Rows: 122
## Columns: 5
## $ Shape_Leng <dbl> 1.2780153, 0.8389714, 1.0211135, 0.3837589, 0.5903399, 1...
## $ Shape_Area <dbl> 0.000880270, 0.011833671, 0.015089248, 0.003912531, 0.01...
## $ ADM2_EN    <chr> "Kepulauan Seribu", "Kota Jakarta Selatan", "Kota Jakart...
## $ ADM2_PCODE <chr> "ID3101", "ID3171", "ID3172", "ID3173", "ID3174", "ID317...
## $ DATA       <int> NA, NA, NA, NA, NA, NA, 939, 921, 31, 912, 829, 485, 709...

Tugas

  • Tugas Praktikum 3.a
    • Praktikkan penggunaan inner_join(), left_join(), right_join(), full_join(), semi_join(), anti_join() untuk menggabungkan 2 buat table dari database chinook.db atau Northwind_large.sqlite
  • Tugas Praktikum 3.b
    • Buat satu Peta dari daerah Anda masing-masing (Kecamatan, Kabupaten), Anda bebas menggunakan data apapun.
  • Tugas dikerjakan dengan rmarkdown dan dipublish di rpubs masing-masing, yang dikumpulkan di newlms berupa file html, jangan lupa, sertakan url rpubs di file html yang dikumpulkan di newlms.

  1. Badan Informasi Geospasial, ↩︎