Latar Belakang

Dalam era digital, transformasi data telah bergeser dari sekadar pengumpulan data (Big Data) menuju sistem cerdas yang terintegrasi. Kita kini menyaksikan konvergensi antara kecerdasan buatan dan data geospasial, sebuah bidang yang berkembang pesat dan dikenal sebagai GeoAI (Geospatial Artificial Intelligence).Setiap hari, sensor real-time, citra satelit beresolusi tinggi, dan perangkat Internet of Things (IoT) menghasilkan aliran data masif yang tidak hanya besar volumenya, tetapi juga secara fundamental terikat pada lokasi. Data spasial ini telah menjadi fondasi dalam berbagai inovasi, mulai dari model kota pintar (smart cities), monitoring kebencanaan, hingga pemantauan perubahan iklim presisi tinggi (Darmawan dkk, 2024).

Namun, volume dan kompleksitas data spasial modern ini menciptakan tantangan interpretasi yang signifikan. Aliran data mentah berbentuk koordinat, poligon, atau piksel raster tidak memiliki nilai intrinsik jika tidak dapat dipahami oleh manusia. Di sinilah visualisasi data spasial, atau geovisualisasi, berperan sebagai alat kognitif esensial untuk menerjemahkan data mentah menjadi wawasan yang dapat ditindaklanjuti. Jauh melampaui kartografi tradisional, geovisualisasi modern berfokus pada analitik visual interaktif, yang memungkinkan para analis dan pemangku kepentingan untuk mengeksplorasi data secara dinamis, mengungkap pola spasial stemporal yang tersembunyi, dan mengkomunikasikan temuan kompleks untuk mendukung pengambilan keputusan berbasis data (Sajati & Panji, 2024).

Untuk menjawab tantangan analitik dan visualisasi ini, berbagai perangkat lunak Sistem Informasi Geografis (SIG) telah berevolusi menjadi ekosistem sains data spasial yang kuat. Perangkat lunak seperti QGIS dan platform WebGIS memungkinkan alur kerja yang mulus dari impor data hingga analisis spasial canggih.Platform ini memfasilitasi pembuatan peta interaktif dan statis berkualitas tinggi, serta integrasi dengan berbagai sumber data. Kemampuan platform modern ini untuk menggabungkan analisis spasial, pemodelan, dan geovisualisasi canggih dalam satu lingkungan yang transparan dan dapat direproduksi (reproducible research) menjadikannya pilihan utama bagi para peneliti di era digital ini.

Tujuan Praktikum

  1. Mahasiswa dapat membuat peta dengan paket pemrograman R
  2. Mahasiswa dapat membuat peta dengan data titik spasial pada R

Rumusan Masalah

  1. Bagaimana cara membuat peta dengan paket pemrograman R?
  2. Bagaimana cara membuat peta dengan data titik spasial pada R?

Instal Library

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(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
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(rnaturalearth)
library(rnaturalearthdata)
## Warning: package 'rnaturalearthdata' was built under R version 4.2.3
## 
## Attaching package: 'rnaturalearthdata'
## The following object is masked from 'package:rnaturalearth':
## 
##     countries110
library(viridis)
## Warning: package 'viridis' was built under R version 4.2.3
## Loading required package: viridisLite
library(readr)
## Warning: package 'readr' was built under R version 4.2.3
library(remotes)
## Warning: package 'remotes' was built under R version 4.2.3

Impor data

data_gempa <- read_csv("data gempa jatim.csv")
## Rows: 72 Columns: 22
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr   (8): magType, net, id, place, type, status, locationSource, magSource
## dbl  (12): latitude, longitude, depth, mag, nst, gap, dmin, rms, horizontalE...
## dttm  (2): time, updated
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(data_gempa)
## # A tibble: 6 × 22
##   time                latitude longitude depth   mag magType   nst   gap  dmin
##   <dttm>                 <dbl>     <dbl> <dbl> <dbl> <chr>   <dbl> <dbl> <dbl>
## 1 2024-12-13 17:39:26    -9.39      113.  55.9   4.4 mb         47    65 1.59 
## 2 2024-12-10 20:11:22    -9.78      112.  10     4.4 mb         33   125 2.34 
## 3 2024-12-02 16:06:10    -9.59      110.  10     4.5 mb         44   115 2.53 
## 4 2024-11-29 04:49:41    -8.92      115.  93.9   4.3 mb         20    96 0.621
## 5 2024-11-17 23:26:48    -9.47      114.  48.3   4.5 mb         38   110 1.03 
## 6 2024-11-04 03:26:05    -8.86      110. 101.    4.5 mb         20   132 1.81 
## # ℹ 13 more variables: rms <dbl>, net <chr>, id <chr>, updated <dttm>,
## #   place <chr>, type <chr>, horizontalError <dbl>, depthError <dbl>,
## #   magError <dbl>, magNst <dbl>, status <chr>, locationSource <chr>,
## #   magSource <chr>
gempa_sf <- sf::st_as_sf(
  data_gempa,
  coords = c("longitude", "latitude"),
  crs = 4326
)
indo <- ne_states(country = "indonesia", returnclass = "sf")
JawaTimur <- indo %>% filter(name == "Jawa Timur")
peta_gempa <- ggplot() +
  geom_sf(data = JawaTimur, fill = "gray", color = "black") +
  geom_sf(data = gempa_sf, aes(size = mag, color = depth), alpha = 0.7) +
  scale_color_viridis_c(option = "plasma", name = "Kedalaman (km)") +
  scale_size_continuous(name = "Magnitudo", range = c(2, 6)) +
  labs(title = "Sebaran Gempa di Provinsi Jawa Timur", 
       subtitle = "Sumber: USGS",
       x = "longitude", y = "latitude") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold", size = 14),
        legend.position = "right")
peta_gempa

- ggplot() digunakan untuk memulai pembuatan grafik.
- geom_sf(data = JawaTimur, fill = "gray", color = "black") menampilkan peta dasar Provinsi Jawa Timur.
- geom_sf(data = gempa_sf, aes(size = mag, color = depth), alpha = 0.7) menambahkan titik lokasi gempa dengan ukuran mewakili magnitudo dan warna menunjukkan kedalaman.
- scale_color_viridis_c(option = "plasma", name = "Kedalaman (km)") memberikan gradasi warna dengan legenda “Kedalaman (km)”.
- scale_size_continuous(name = "Magnitudo", range = c(2, 6)) mengatur ukuran titik agar sesuai dengan kekuatan gempa.
- labs() menambahkan judul, subjudul, dan label sumbu.

##Interpretasi

Berdasarkan peta sebaran gempa bumi di jawa timur dapat dilihat bahwa gempa paling banyak terjadi di laut, yaitu di sebelah selatan Jawa Timur, sedangkan di daratan hampir tidak ada. Warna titik-titiknya kebanyakan ungu, yang artinya gempa-gempa itu terjadi sangat dalam (sekitar 100-300 km di bawah permukaan), bukan gempa dangkal. Ukuran titiknya juga berbeda-beda, yang menunjukkan kekuatannya bervariasi, kebanyakan antara 4.5 sampai 5.5 Magnitudo. Pola ini sangat wajar untuk wilayah selatan Jawa, karena di situlah terjadi tumbukan lempeng bumi yang menyebabkan gempa.

jatim_shp<-st_read("jawatimur.shp") 
## Reading layer `jawatimur' from data source 
##   `E:\SEMESTER 7\PRAKTIKUM PSS\jawatimur.shp' using driver `ESRI Shapefile'
## Simple feature collection with 39 features and 26 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY, XYZ
## Bounding box:  xmin: 110.8953 ymin: -8.780223 xmax: 116.2702 ymax: -5.042965
## z_range:       zmin: 0 zmax: 0
## Geodetic CRS:  WGS 84
head(jatim_shp) 
## Simple feature collection with 6 features and 26 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY, XYZ
## Bounding box:  xmin: 111.4498 ymin: -8.463947 xmax: 112.9531 ymax: -5.715754
## z_range:       zmin: 0 zmax: 0
## Geodetic CRS:  WGS 84
##   OBJECTID      NAMOBJ      FCODE  REMARK
## 1     9173 Anggaswangi BA03070040    <NA>
## 2     9164  Ampeldento BA03070040    <NA>
## 3     9276     Bakalan BA03070040    <NA>
## 4     9217 Babadan Lor BA03070040 Sepakat
## 5     9111   Abar-abir BA03070040       -
## 6    18744  Jawa Timur BA03070040    <NA>
##                                       METADATA    SRS_ID KDBBPS KDCBPS   KDCPUM
## 1 TASWIL1000020221227_DATA_BATAS_DESAKELURAHAN SRGI 2013   <NA>   <NA> 35.15.14
## 2 TASWIL1000020221227_DATA_BATAS_DESAKELURAHAN SRGI 2013   <NA>   <NA> 35.07.23
## 3 TASWIL1000020221227_DATA_BATAS_DESAKELURAHAN SRGI 2013   <NA>   <NA> 35.75.03
## 4 TASWIL1000020221227_DATA_BATAS_DESAKELURAHAN SRGI 2013   3519 351910 35.19.10
## 5 TASWIL1000020221227_DATA_BATAS_DESAKELURAHAN SRGI 2013   <NA>   <NA> 35.25.12
## 6 TASWIL1000020221227_DATA_BATAS_DESAKELURAHAN SRGI 2013   <NA>   <NA>     <NA>
##       KDEBPS        KDEPUM KDPBPS KDPKAB KDPPUM LUASWH TIPADM      WADMKC
## 1       <NA> 35.15.14.2003   <NA>  35.15     35      0      1    Sukodono
## 2       <NA> 35.07.23.2005   <NA>  35.07     35      0      1 Karangploso
## 3       <NA> 35.75.03.1005   <NA>  35.75     35      0      2 Bugul Kidul
## 4 3519102008 35.19.10.2008     35  35.19     35      0      1    Balerejo
## 5       <NA> 35.25.12.2011   <NA>  35.25     35      0      1      Bungah
## 6       <NA>          <NA>   <NA>   <NA>   <NA>      0      1        <NA>
##        WADMKD        WADMKK     WADMPR WIADKC WIADKK WIADPR WIADKD
## 1 Anggaswangi      Sidoarjo Jawa Timur   <NA>   <NA>   <NA>   <NA>
## 2  Ampeldento        Malang Jawa Timur   <NA>   <NA>   <NA>   <NA>
## 3     Bakalan Kota Pasuruan Jawa Timur   <NA>   <NA>   <NA>   <NA>
## 4 Babadan Lor        Madiun Jawa Timur   <NA>   <NA>   <NA>   <NA>
## 5  Abar- abir        Gresik Jawa Timur   <NA>   <NA>   <NA>   <NA>
## 6        <NA>          <NA> Jawa Timur   <NA>   <NA>   <NA>   <NA>
##                                                   UUPP     LUAS
## 1 Hasil Sinkronisasi Data Pemerintah Daerah Tahun 2019 1.804394
## 2                                       Ajudikasi 2015 1.495720
## 3                      Hasil Delineasi Batas Desa 2019 1.905789
## 4                      Hasil Delineasi Batas Desa 2017 3.057107
## 5 Hasil Sinkronisasi Data Pemerintah Daerah Tahun 2019 1.071223
## 6 Hasil Sinkronisasi Data Pemerintah Daerah Tahun 2019 0.857572
##                         geometry
## 1 MULTIPOLYGON Z (((112.5835 ...
## 2 MULTIPOLYGON (((112.445 -8....
## 3 MULTIPOLYGON Z (((112.9107 ...
## 4 MULTIPOLYGON Z (((111.5241 ...
## 5 MULTIPOLYGON (((112.3985 -7...
## 6 MULTIPOLYGON (((112.8797 -7...
# Membaca data gempa dan mengubahnya menjadi objek spasial
# Kolom longitude dan latitude digunakan sebagai koordinat
jatim_shp <- st_read("E:/SEMESTER 7/PRAKTIKUM PSS/jawatimur.shp")
## Reading layer `jawatimur' from data source 
##   `E:\SEMESTER 7\PRAKTIKUM PSS\jawatimur.shp' using driver `ESRI Shapefile'
## Simple feature collection with 39 features and 26 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY, XYZ
## Bounding box:  xmin: 110.8953 ymin: -8.780223 xmax: 116.2702 ymax: -5.042965
## z_range:       zmin: 0 zmax: 0
## Geodetic CRS:  WGS 84
jatim_shp <- st_zm(jatim_shp, drop = TRUE, what = "ZM")
jatim_shp <- st_make_valid(jatim_shp)
jatim_shp <- st_buffer(jatim_shp, 0)
gempa_data <- read.csv("E:/SEMESTER 7/PRAKTIKUM PSS/data gempa jatim.csv")
gempa_sf <- st_as_sf(gempa_data,
                     coords = c("longitude", "latitude"),
                     crs = 4326)
# Membuat peta sebaran gempa di Jawa Timur
# geom_sf menampilkan batas wilayah dan titik lokasi gempa
# Warna menunjukkan kedalaman, ukuran menunjukkan magnitudo
#Visualisasi peta sebaran gempa di Jawa Timur
ggplot() +
  geom_sf(data = jatim_shp, aes(fill = WADMKK), color = "black", size = 0.3) +
  geom_sf(data = gempa_sf, aes(size = mag, color = depth), alpha = 0.7) +
  guides(fill = "none") +
  scale_color_viridis(option = "plasma", name = "Kedalaman (km)") +
  scale_size_continuous(name = "Magnitudo", range = c(2, 6)) +
  labs(
    title = "Sebaran Gempa Utama di Provinsi Jawa Timur",
    subtitle = "Sumber: USGS",
    x = "Longitude", y = "Latitude",
    caption = "Visualisasi: ggplot2 + sf"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 14),
    legend.position = "right"
  )

##Interpertasi

Berdasarkan visualisasi data gempa “Sebaran Gempa Utama di Provinsi Jawa Timur”, peta ini mengilustrasikan bahwa aktivitas seismik terkonsentrasi di lepas pantai, baik di Samudra Hindia (selatan) maupun Laut Jawa (utara). Setiap kejadian gempa direpresentasikan oleh titik yang ukurannya menunjukkan Magnitudo (berkisar 4.5 hingga 6.0) dan warnanya menunjukkan Kedalaman (dari ungu/dangkal 100 km hingga kuning/sangat dalam 600 km). Pola utama yang teridentifikasi adalah dominasi gempa dangkal (berwarna ungu) di sepanjang zona subduksi di selatan Jawa, sementara di Laut Jawa teridentifikasi klaster gempa dangkal yang signifikan (sekitar 112°E) serta beberapa gempa yang sangat dalam (berwarna kuning).

Kesimpulan

Pembuatan peta di R dapat dilakukan dengan memanfaatkan paket-paket pemetaan seperti ggplot2, sf, dan rnaturalearth. Paket-paket ini memungkinkan pengguna menampilkan data spasial dalam berbagai bentuk, baik batas wilayah administratif, garis, maupun poligon. Dengan fungsi seperti geom_sf(), peta dapat divisualisasikan secara informatif dan estetis, sementara sistem koordinat geografis (crs) memastikan hasil peta sesuai dengan posisi sebenarnya di bumi.

Untuk membuat peta dengan data titik spasial, data terlebih dahulu perlu dikonversi ke format spasial menggunakan fungsi st_as_sf() dari paket sf. Kolom koordinat seperti longitude dan latitude digunakan sebagai acuan posisi titik. Selanjutnya, titik-titik tersebut dapat ditampilkan di atas peta dasar menggunakan geom_sf() pada ggplot2, dengan opsi penyesuaian warna, ukuran, dan transparansi agar informasi seperti magnitudo, kedalaman, atau kategori lainnya dapat divisualisasikan dengan

Berdasarkan peta sebaran gempa di Jawa Timur, sebagian besar gempa terjadi di laut selatan, sedangkan di daratan hampir tidak ada. Warna ungu menunjukkan gempa-gempa tersebut terjadi pada kedalaman 100–300 km di bawah permukaan bumi. Pola ini wajar karena wilayah selatan Jawa merupakan zona tumbukan lempeng yang sering memicu gempa bumi.

Referensi

Darmawan, S., Nurulhakim, N. N., & Hernawati, R. (2024). Kecerdasan Buatan berbasis Geospasial (GeoAI) menggunakan Google Earth Engine untuk Monitoring Fenomena Urban Heat Island di Indonesia. Elkomika, 12(2)

Sejati, S. P., & Panji, P. (2024). Geovisualisasi Kondisi Air Tanah pada Akuifer Tidak Tertekan di Kecamatan Ngemplak Kabupaten Sleman. Jurnal Wilayah dan Lingkungan, 12(1), 1–16.