library(sf)
library(ggplot2)
library(rnaturalearth)
library(dplyr)
library(haven)
## # A tibble: 6 × 2
## r112_lat r112_long
## <dbl> <dbl>
## 1 4.61 97.7
## 2 4.61 97.7
## 3 4.61 97.7
## 4 4.61 97.7
## 5 4.61 97.7
## 6 4.61 97.7
Pastikan kolom koordinat dalam format numerik
str(df$r112_long)
## num [1:10745] 97.7 97.7 97.7 97.7 97.7 ...
## - attr(*, "label")= chr "R112. Longitude (bujur)"
## - attr(*, "format.spss")= chr "F8.2"
## - attr(*, "display_width")= int 10
str(df$r112_lat)
## num [1:10745] 4.61 4.61 4.61 4.61 4.61 ...
## - attr(*, "label")= chr "R112. Latitude (lintang)"
## - attr(*, "format.spss")= chr "F8.2"
## - attr(*, "display_width")= int 10
Hapus baris dengan lat/long = 0
df <- df %>% filter(r112_long != 0 & r112_lat != 0)
Konversi ke format sf
Fungsi st_as_sf()
berasal dari paket sf dan mengubah
koordinat longitude (r112_long) serta latitude (r112_lat) menjadi
geometri titik (POINT). Parameter crs = 4326
menetapkan
sistem referensi koordinat WGS 84, yang merupakan standard global dalam
format derajat lintang dan bujur, seperti yang digunakan oleh GPS dan
Google Maps. Setelah konversi, dataframe tidak lagi menyimpan koordinat
sebagai kolom numerik biasa, tetapi dalam bentuk geometri spasial.
Selain itu, objek sf ini memungkinkan analisis spasial lebih lanjut,
seperti overlay, buffering, atau ekspor ke format GIS seperti
shapefile.
df_sf <- st_as_sf(df, coords = c("r112_long", "r112_lat"), crs = 4326)
head(df_sf)
## Simple feature collection with 6 features and 66 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: 97.65412 ymin: 4.605625 xmax: 97.65914 ymax: 4.612266
## Geodetic CRS: WGS 84
## # A tibble: 6 × 67
## assignment_id assignment_status_al…¹ assignment_status_id r101 r102 r103
## <chr> <chr> <dbl> <dbl+lb> <dbl> <dbl>
## 1 21864296-2b5… COMPLETED BY Admin Ka… 2 11 [ Ac… 5 82
## 2 39f397fd-336… COMPLETED BY Admin Ka… 2 11 [ Ac… 5 82
## 3 5dc3b6df-9c3… COMPLETED BY Admin Ka… 2 11 [ Ac… 5 82
## 4 6fb1b9ba-563… COMPLETED BY Admin Ka… 2 11 [ Ac… 5 82
## 5 78312299-905… COMPLETED BY Admin Ka… 2 11 [ Ac… 5 82
## 6 b1455453-559… COMPLETED BY Admin Ka… 2 11 [ Ac… 5 82
## # ℹ abbreviated name: ¹assignment_status_alias
## # ℹ 61 more variables: r104 <dbl>, r106 <chr>, kabu <dbl>, keca <dbl>,
## # desa <dbl>, r401 <dbl>, r402 <chr>, r403 <dbl+lbl>, r404 <dbl+lbl>,
## # r405 <dbl+lbl>, r406a <dbl>, r406b <dbl>, r406c <dbl>, r407 <dbl>,
## # r408 <dbl+lbl>, b5k5 <chr>, bersedia_value <dbl+lbl>, kunjungan_1 <chr>,
## # kunjungan_2 <chr>, kunjungan_3 <chr>, no_urut_terpilih <dbl>,
## # nu_sampel <dbl>, tarik_sampel_value <dbl>, no_hp_terpilih <chr>, …
# Menggunakan rnaturalearth untuk Peta Indonesia
# indonesia <- ne_countries(country = "Indonesia", returnclass = "sf")
## Reading layer `PetaSHP514_38' from data source
## `D:\2. Pengembangan diri\1 Exercise Bagus\0 Peta 514 Kako Indonesia OK\Peta_SHP_514_38Prov\PetaSHP514_38.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 514 features and 8 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 95.00971 ymin: -11.00766 xmax: 141.02 ymax: 6.076809
## Geodetic CRS: WGS 84
Plot dengan menggunakan ggplot2
ggplot() +
geom_sf(data = indonesia, fill = "gray90", color = "black") + # Layer peta Indonesia
geom_sf(data = df_sf, color = "blue", size = 2) + # Titik koordinat
theme_minimal() +
ggtitle("Peta Distribusi Sampel")
Direktorat Statistik Kesejahteraan Rakyat, BPS, saptahas@bps.go.id