Visualisasi Peta Spasial Data Teks di R |
Kalau dengan ARCGIS atau QGIS, visualisasi analisis spasial dilakukan dengan melakukan import peta dan data lalu diintegrasikan serta divisualkan secara otomatis tanpa coding, berbeda dengan ketika kita menggunakan R atau bahasa pemrograman lainnya seperti Python. Kita perlu melakukan coding sehingga diperlukan keterampilan atau pengalaman dalam meng-costumize visualisasi spasial.
Tetapi, kelebihan dari pemanfaatan coding di sini adalah keleluasaan kita dalam melakukan custome terhadap output peta spasial yang kita harapkan sehingga diperoleh visualisasi data seoptimal mungkin dan semenarik mungkin.
Di R sendiri, beberapa package yang diperlukan dalam aktivitas visualisasi spasial terdiri atas rgdal, ggplot2, sf, dan ggspatial. Package rgdal berfungsi untuk melakukan import peta ke dalam R, termasuk juga dengan fungsi dari sf, sedangkan ggspatial dapat dimanfaatkan untuk memunculkan kompas atau arah mata angin serta skala peta. Adapun ggplot2 memiliki fungsi untuk menghasilkan visualisasi peta spasial. Oiya, sebagai catatan, dalam praktikum kali ini peta yang digunakan adalah peta berformat *shp dan polygon atau geometri.
Beberapa langkah yang dilakukan untuk memvisualisasikan peta spasial dengan data teks berupa status potensi pembangunan agroindustri kopi di Jawa Tengah selama 2018-2023 adalah sebagai berikut:
# Aktivasi beberapa package
library(readxl)
library(rgdal)
## Loading required package: sp
## Warning: package 'sp' was built under R version 4.4.1
## 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 (unknown))
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.6.2, released 2023/01/02
## Path to GDAL shared files: C:/Users/BPS Prov Jawa Timur/AppData/Local/R/win-library/4.4/rgdal/gdal
## GDAL does not use iconv for recoding strings.
## GDAL binary built with GEOS: TRUE
## Loaded PROJ runtime: Rel. 9.2.0, March 1st, 2023, [PJ_VERSION: 920]
## Path to PROJ shared files: C:/Users/BPS Prov Jawa Timur/AppData/Local/R/win-library/4.4/rgdal/proj
## PROJ CDN enabled: FALSE
## Linking to sp version:1.6-0
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading sp or rgdal.
library(ggplot2)
library(sf)
## Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.3.1; sf_use_s2() is TRUE
library(dplyr)
##
## 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(ggspatial) # package untuk kompas dan skala peta
# import peta dan data
jateng <- readOGR(dsn = "D:\\Joko Ade\\KERJAAN 2024\\petajateng", layer = "jateng")
## Warning in readOGR(dsn = "D:\\Joko Ade\\KERJAAN 2024\\petajateng", layer =
## "jateng"): OGR support is provided by the sf and terra packages among others
## Warning in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv =
## use_iconv, : OGR support is provided by the sf and terra packages among others
## Warning in ogrFIDs(dsn = dsn, layer = layer): OGR support is provided by the sf
## and terra packages among others
## Warning in OGRSpatialRef(dsn, layer, morphFromESRI = morphFromESRI, dumpSRS =
## dumpSRS, : OGR support is provided by the sf and terra packages among others
## Warning in ogrListLayers(dsn): OGR support is provided by the sf and terra
## packages among others
## Warning in ogrFIDs(dsn = dsn, layer = layer): OGR support is provided by the sf
## and terra packages among others
## OGR data source with driver: ESRI Shapefile
## Source: "D:\Joko Ade\KERJAAN 2024\petajateng", layer: "jateng"
## with 35 features
## It has 5 fields
jateng$NAMA_KAB <- gsub(" \\(City\\)", " \\(Kota\\)", jateng$NAMA_KAB)
kopi <- read_excel("kopi.xlsx")
# sekilas data
head(kopi)
## # A tibble: 6 × 6
## Wilayah `Rata-Rata LQ` Klassen Status `Status-2` coba
## <chr> <dbl> <chr> <chr> <chr> <chr>
## 1 Cilacap 0.354 Kuadran III Tidak Layak Potensian Non Basis Pote…
## 2 Banyumas 0.490 Kuadran III Tidak Layak Potensian Non Basis Pote…
## 3 Purbalingga 0.709 Kuadran IV Tidak Layak Tertinggal Non Basis Tert…
## 4 Banjarnegara 5.65 Kuadran I Tidak Layak Maju dan Berkembang… Maju…
## 5 Kebumen 0.272 Kuadran III Tidak Layak Potensian Non Basis Pote…
## 6 Purworejo 0.450 Kuadran III Tidak Layak Potensian Non Basis Pote…
jateng$Status2 <- kopi$coba
# konversi ke sf
jateng_sf <- st_as_sf(jateng)
# Menambahkan koordinat centroid untuk label
jateng_sf <- jateng_sf %>%
mutate(centroid = st_centroid(geometry)) %>% # Menentukan centroid
mutate(x = st_coordinates(centroid)[,1], # Ekstrak koordinat x
y = st_coordinates(centroid)[,2]) # Ekstrak koordinat y
# menentukan warna polygon
palette <- c("#fbbbbb", "#f78877", "#f45454", "#d11c4a",
"#b84384", "#8d2d6d", "#6f1959", "#5f0351")
# Visualisasi peta
ggplot(data = jateng_sf) +
geom_sf(aes(fill = Status2), color = "#FBF8EF", size = 0.3) +
scale_fill_manual(values = palette, name = "Status Kategori") + # Warna manual
geom_text(aes(x = x, y = y, label = NAMA_KAB), size = 2, color = "black") +
annotation_scale(location = "bl",
width_hint = 0.2,
bar_units = "km",
height = unit(0.3, "cm"),
text_cex = 0.8,
scale = 1/100) +
annotation_north_arrow(location = "tr", which_north = "true",
style = north_arrow_fancy_orienteering) +
theme_minimal() +
theme(legend.position = "right",
panel.grid = element_blank(), # Hilangkan grid
axis.text = element_blank(), # Hilangkan teks sumbu
axis.ticks = element_blank(), # Hilangkan tanda sumbu
axis.title = element_blank(), # Hilangkan keterangan sumbu
axis.line = element_blank(), # Hilangkan garis sumbu
panel.border = element_blank()) +
labs(title = "Sebaran Potensi Pengembangan Agroindustri Kopi di Jawa Tengah",
caption = "Sumber data: BPS (diolah)")
## Warning in annotation_scale(location = "bl", width_hint = 0.2, bar_units =
## "km", : Ignoring unknown parameters: `bar_units` and `scale`
Demikian sedikit sharing kita kali ini, jangan lupa untuk terus support blog ini dengan cara komentar dan share. Selamat memahami dan mempraktikkan!