library(sf)
library(ggplot2)
library(rnaturalearth)
library(dplyr)
library(haven)

1 Load Data

## # 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)

2 Titik Koodinat

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>, …

3 Mapping

# 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,