sf ile coğrafi haritalar

shinydashboard ile Panolar Oluşturma

Png Kee Seng

Researcher

sf’ye giriş

  • Coğrafi haritalar için sf kullanın
    • “simple features”ın kısaltması
  • Bir sf görselleştirmesi her zaman katmanlardan oluşur
    • Boş tuvale atılan ustaca fırça darbeleri gibi
    • Coğrafi görselleştirmelere derinlemesine girmeyeceğiz

Boş tuvalde fırça darbeleri.

1 Freepik’te rawpixel.com tarafından sağlanan görsel
shinydashboard ile Panolar Oluşturma

Kütüphane ve coğrafi verilerin içe aktarımı

  • sf ve tidyverse paketlerini içe aktarın
  • Anahtar deliği biçim dili (KML) dosyalarını okumak için st_read() ve st_as_sf() kullanın
    • london_poly: Londra’nın coğrafi sınırları
    • london_loop: Londra’yı çevreleyen (neredeyse) dairesel yol
    • london_capital: İç Londra’nın bölümlerini bağlayan dairesel yol
    • listings_geo: Airbnb ilanlarının koordinatları
library(sf)
library(tidyverse)
london_poly <- st_read("../data/london_boroughs_boroughs_kml.kml",
                            drivers = "KML", quiet=TRUE)
london_loop <- st_read("../data/London-Loop-SWC-Walk-L24.kml",
                       drivers = "KML", quiet=TRUE)
london_capital <- st_read("../data/Capital-Ring-SWC-Walk-L23.kml",
                          drivers="KML", quiet=TRUE)
listings_geo <- st_as_sf(listings,
                         coords = c("longitude", "latitude"))
shinydashboard ile Panolar Oluşturma

sf nesne türleri: MULTIPOLYGON

london_poly$geometry
33 öğe için geometrik küme 
Geometri türü: MULTIPOLYGON

Boyut: XY Sınır kutusu: xmin: -0.508813 ymin: 51.28691 ... Jeodezik CRS: WGS 84 İlk 5 geometri: MULTIPOLYGON (((-0.183361 51.66868, -0.183383 5... MULTIPOLYGON (((0.158044 51.50904, 0.156309 51.... MULTIPOLYGON (((-0.212138 51.55558, -0.212689 5... MULTIPOLYGON (((0.076463 51.431, 0.075932 51.43... MULTIPOLYGON (((-0.140804 51.56946, -0.14081 51...

10 kenarlı rastgele çokgen.

15 kenarlı rastgele çokgen.

shinydashboard ile Panolar Oluşturma

sf nesne türleri: LINESTRING

london_loop$geometry
1 öğe için geometrik küme 
Geometri türü: LINESTRING
Boyut:        XYZ
Sınır kutusu: xmin: -0.499406 ymin: 51.29375 xmax: 0.257656 ymax: 51.67563
z_aralığı:    zmin: 0 zmax: 174
Jeodezik CRS: WGS 84
LINESTRING Z (0.236477 51.48095 1, 0.235149 51....

london_capital için de aynı

shinydashboard ile Panolar Oluşturma

sf nesne türleri: POINT

listings_geo$geometry
69351 öğe için geometrik küme 
Geometri türü: POINT
Boyut:        XY
Sınır kutusu: xmin: -0.5236 ymin: 51.27248 xmax: 0.30515 ymax: 51.70893
CRS:          NA
İlk 5 geometri:
POINT (-0.05396 51.52874)
POINT (-0.1127 51.56861)
POINT (-0.07426 51.52851)
POINT (-0.10484 51.52478)
POINT (-0.20004 51.51464)
shinydashboard ile Panolar Oluşturma

plot() ile çokgen çizimi

  • Çokgenler için st_geometry() kullanın
  • plot() kullanın
  • col ayarıyla her çokgeni farklı renkle doldurun
plot(st_geometry(london_poly), axes=TRUE, 
                border=grey(0.2, 0.5))
plot(st_geometry(london_poly), 
        col = sf.colors(length(london_poly$Name), 
                        categorical = TRUE), 
        axes=TRUE, border=grey(0.2, 0.5))

Renk doldurması olmadan çoklu çokgen grafikleri.

Renk doldurmalı çoklu çokgen grafikleri.

shinydashboard ile Panolar Oluşturma

plot() ile çizgi çizimi

  • london_loop için st_geometry() ile polylines çizin
    • add değerini TRUE yapın
    • col değerini mavi yapın
  • Aynısını london_capital için de yapın
plot(st_geometry(london_loop),

add=TRUE,
col="blue")
plot(st_geometry(london_capital), add=TRUE, col="darkgreen")

Tek dairesel yol içeren harita.

İki dairesel yol içeren harita.

shinydashboard ile Panolar Oluşturma

plot() ile nokta çizimi

  • st_geometry() ile noktalar ekleyin
    plot(st_geometry(listings_geo), add=TRUE, col='red')
    

sf noktalarının çizimi.

shinydashboard ile Panolar Oluşturma

ggplot() ile çokgen çizimi

  • ggplot() ile sf katmanları çizebiliriz
  • İki katman için koordinat referans sistemini (CRS) eşleştirmek gerekir

ggplot ile oluşturulmuş coğrafi harita.

num_listings <- listings %>% 
  group_by(neighbourhood) %>%
  summarize(`Number of listings` = n(),
            longitude = mean(longitude),
            latitude = mean(latitude),
            .groups = "drop") %>%

st_as_sf(coords = c("longitude", "latitude"))
st_crs(num_listings) <- st_crs(london_poly)
ggplot_map <- ggplot(london_poly) + geom_sf(aes(fill = Name)) +
geom_sf_label(data=num_listings, aes(label=`Number of listings`)) + theme_classic()
shinydashboard ile Panolar Oluşturma

Hadi pratik yapalım!

shinydashboard ile Panolar Oluşturma

Preparing Video For Download...