sf Paketiyle Basit Öznitelikler
sf standardını kullanarak uzamsal geometrileri okuyun, yazın ve değiştirin.
sf Paketiyle Basit Öznitelikler, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
sf Paketi Nedir?
sf (Simple Features) paketi, R'ın coğrafi vektör verileri için temel aracıdır. Geometrileri (noktalar, çizgiler, çokgenler) normal bir veri çerçevesinde özel bir liste sütunu olarak depolar; bu sayede dplyr ve ggplot2 ile tamamen uyumlu çalışır.
library(sf)
# sf data frames look like regular data frames
# but have a special 'geometry' column
cat('sf version:', packageVersion('sf'), '\n')
# Supported geometry types
cat('Geometry types: POINT, LINESTRING, POLYGON,\n')
cat(' MULTIPOINT, MULTILINESTRING, MULTIPOLYGON,\n')
cat(' GEOMETRYCOLLECTION\n')read_sf: Shapefile'ları Yükleme
read_sf("file.shp"), OGR tarafından desteklenen tüm biçimleri (Shapefile, GeoJSON, GeoPackage, KML vb.) bir sf nesnesine okur. CRS'yi ve öznitelik tablosunu geometrilerle birlikte otomatik olarak okur.
library(sf)
# Read a GeoJSON file from a URL
url <- 'https://raw.githubusercontent.com/datasets/geo-countries/master/data/countries.geojson'
# For demonstration, use the system example data
nc <- read_sf(system.file('shape/nc.shp', package = 'sf'))
cat('Class:', class(nc), '\n')
cat('Dimensions:', nrow(nc), 'rows x', ncol(nc), 'cols\n')
cat('CRS:', st_crs(nc)$epsg, '\n')
cat('Geometry type:', unique(st_geometry_type(nc)), '\n')
cat('Column names:', paste(names(nc)[1:5], collapse = ', '), '...\n')st_geometry_type ve Yapı
st_geometry_type(), her geometrinin türünü döndürür. geometry sütunu, sfc nesnelerinden oluşan bir liste sütunudur. Bu sütunu diğer tüm sütunlar gibi inceleyebilir, alt kümeye ayırabilir ve işleyebilirsiniz.
library(sf)
nc <- read_sf(system.file('shape/nc.shp', package = 'sf'))
# Geometry type for each feature
types <- st_geometry_type(nc)
cat('Unique types:', unique(as.character(types)), '\n')
# The geometry column
geom_col <- st_geometry(nc)
cat('Geometry class:', class(geom_col), '\n')
cat('First geometry:\n')
print(geom_col[[1]]) # MULTIPOLYGON coordinates
# Access as a normal column
nc$area_est <- st_area(nc) # adds an area column
cat('\nArea column class:', class(nc$area_est), '\n')st_coordinates: XY'yi Çıkarma
st_coordinates(), herhangi bir geometriden ham koordinat matrislerini çıkarır. Noktalar için 2 sütunlu bir matris (X, Y) döndürür. Poligonlar için tüm halka köşelerini, parça ve poligon indeks sütunlarıyla birlikte döndürür.
library(sf)
# Create simple point features
pts <- st_sfc(
st_point(c(-80.0, 35.0)),
st_point(c(-79.5, 35.5)),
st_point(c(-79.0, 34.8))
)
pts_sf <- st_sf(id = 1:3, geometry = pts)
# Extract coordinates
coords <- st_coordinates(pts_sf)
cat('Coordinates:\n')
print(coords)
# For polygons: includes part (L1) and polygon (L2) columns
nc <- read_sf(system.file('shape/nc.shp', package = 'sf'))
ring_coords <- st_coordinates(nc[1, ])
cat('Polygon ring vertices:', nrow(ring_coords), '\n')
cat('Column names:', colnames(ring_coords), '\n')Veri Çerçevesinden sf Oluşturma
st_as_sf(df, coords = c('lon', 'lat'), crs = 4326), koordinat sütunları içeren normal bir veri çerçevesini sf nokta nesnesine dönüştürür. coords bağımsız değişkeni, x (boylam) ve y (enlem) sütunlarının adlarını belirtir.
library(sf)
# Typical scenario: CSV with lon/lat columns
cities <- data.frame(
name = c('New York', 'Los Angeles', 'Chicago', 'Houston'),
lon = c(-74.006, -118.244, -87.629, -95.369),
lat = c(40.713, 34.052, 41.878, 29.760),
pop = c(8336817, 3979576, 2693976, 2304580)
)
# Convert to sf
cities_sf <- st_as_sf(
cities,
coords = c('lon', 'lat'),
crs = 4326
)
print(cities_sf)
cat('\nCRS:', st_crs(cities_sf)$epsg, '(WGS84)\n')st_point, st_linestring, st_polygon
Geometrileri kurucu işlevlerle programatik olarak oluşturabilirsiniz. st_point(c(x,y)) bir nokta, st_linestring(matrix) koordinat çiftlerinden bir çizgi ve st_polygon(list(matrix)) halka koordinatlarından bir poligon oluşturur.
library(sf)
# POINT
p <- st_point(c(-74.006, 40.713))
cat('Point:', class(p), '\n')
# LINESTRING: a route with 4 waypoints
route_coords <- matrix(
c(-74.0, 40.7,
-75.0, 41.0,
-76.0, 41.5,
-77.0, 42.0),
ncol = 2, byrow = TRUE
)
line <- st_linestring(route_coords)
cat('Linestring length:', st_length(line), '\n') # in degrees (no CRS yet)
# POLYGON: a simple bounding box
bbox_ring <- matrix(
c(0,0, 1,0, 1,1, 0,1, 0,0),
ncol = 2, byrow = TRUE
)
poly <- st_polygon(list(bbox_ring))
cat('Polygon area:', st_area(poly), '\n')sf Nesnelerini Görselleştirme
sf nesneleri için plot() yöntemi, her öznitelik sütunu için hızlı bir harita oluşturur. Öznitelik panelleri olmadan yalnızca geometriyi çizmek için plot(st_geometry(sf_obj)) kullanın.
library(sf)
nc <- read_sf(system.file('shape/nc.shp', package = 'sf'))
# Plot all attributes (creates a panel per column)
# plot(nc) # too many panels
# Plot a single attribute
plot(nc['BIR74'],
main = 'North Carolina: Births 1974',
border = 'white',
lwd = 0.5)
# Plot geometry only
plot(st_geometry(nc),
col = 'lightblue',
border = 'gray40',
main = 'NC Counties')sf Nesnelerini Alt Kümeye Ayırma
sf nesneleri veri çerçeveleri gibi davranır: satırları [, subset() veya dplyr::filter() ile filtreleyebilirsiniz. Geometri sütunu, satırları alt kümeye ayıran tüm işlemlerde otomatik olarak korunur.
library(sf)
library(dplyr)
nc <- read_sf(system.file('shape/nc.shp', package = 'sf'))
# Base R subsetting
western_nc <- nc[nc$CNTY_ID < 1830, ]
cat('Western counties:', nrow(western_nc), '\n')
# dplyr filter works identically
high_birth <- nc |>
filter(BIR74 > 3000) |>
select(NAME, BIR74, geometry)
cat('High-birth counties:', nrow(high_birth), '\n')
cat('Names:', paste(high_birth$NAME[1:3], collapse = ', '), '...\n')sf ve ggplot2 Tümleştirmesi
ggplot2, geom_sf() aracılığıyla sf nesnelerini yerel olarak destekler. İşlev, koordinat sistemini otomatik olarak yönetir ve ek bir hazırlık gerektirmeden doğru geometri türünü (noktalar, çizgiler veya poligonlar) görüntüler.
library(sf)
library(ggplot2)
nc <- read_sf(system.file('shape/nc.shp', package = 'sf'))
# Choropleth map with ggplot2
ggplot(nc) +
geom_sf(aes(fill = BIR74), color = 'white', lwd = 0.2) +
scale_fill_viridis_c(
option = 'plasma',
name = 'Births (1974)'
) +
labs(
title = 'North Carolina Birth Counts, 1974',
subtitle = 'County-level data'
) +
theme_minimal()sf'yi Diske Yazma
write_sf(sf_obj, 'output.gpkg') (veya st_write()), geometrileri ve öznitelikleri diske kaydeder. GeoPackage (.gpkg), uzun sütun adlarını ve UTF-8'i desteklediği ve her şeyi tek bir dosyada sakladığı için Shapefile'a tercih edilir.
library(sf)
nc <- read_sf(system.file('shape/nc.shp', package = 'sf'))
# Write to GeoPackage
out_path <- tempfile(fileext = '.gpkg')
write_sf(nc, out_path)
cat('Written to:', out_path, '\n')
cat('File size:', file.info(out_path)$size / 1024, 'KB\n')
# Round-trip: read back
nc_rt <- read_sf(out_path)
cat('Round-trip features:', nrow(nc_rt), '\n')
cat('Round-trip CRS match:', identical(st_crs(nc), st_crs(nc_rt)), '\n')sf Özetleme ve İnceleme
Bir sf nesnesini hızlıca incelemek için print(), st_bbox(), st_crs() ve summary() kullanın. st_bbox(), sınırlayıcı kutuyu (xmin, ymin, xmax, ymax) nesnenin CRS birimleri cinsinden adlandırılmış bir vektör olarak döndürür.
library(sf)
nc <- read_sf(system.file('shape/nc.shp', package = 'sf'))
# Bounding box
bbox <- st_bbox(nc)
cat('Bounding box:\n')
cat(' xmin:', bbox['xmin'], ' xmax:', bbox['xmax'], '\n')
cat(' ymin:', bbox['ymin'], ' ymax:', bbox['ymax'], '\n')
# CRS
crs_info <- st_crs(nc)
cat('\nEPSG:', crs_info$epsg, '\n')
cat('Proj4:', crs_info$proj4string, '\n')
# Attribute summary
cat('\nBIR74 range:',
range(nc$BIR74)[1], 'to',
range(nc$BIR74)[2], '\n')Hızlı Kontrol
longitude ve latitude sütunlarını (WGS84) içeren bir veri çerçeveniz var. Bunu sf nokta nesnesine dönüştüren işlev çağrısı hangisidir?
Özet: sf Paketi
Temel çıkarımlar:
read_sf(), shapefile'ları, GeoJSON'u, GeoPackage'ı ve diğer biçimleri yüklerst_geometry_type(), her özellik için POINT, LINESTRING, POLYGON vb. döndürürst_coordinates(), ham XY koordinat matrislerini çıkarırst_as_sf(df, coords = c('x','y'), crs = 4326), bir veri çerçevesinden sf oluşturur- Programatik kurucular:
st_point(),st_linestring(),st_polygon() - Görselleştirme için ggplot2'de
plot(sf_obj)veyageom_sf() write_sf(), verileri GeoPackage, Shapefile, GeoJSON vb. biçimlerde kaydeder
library(sf)
# Quick sf workflow
nc <- read_sf(system.file('shape/nc.shp', package = 'sf'))
cat('Features:', nrow(nc), '\n')
cat('CRS EPSG:', st_crs(nc)$epsg, '\n')
cat('Geom type:', unique(as.character(st_geometry_type(nc))), '\n')
cat('Bbox xmin:', st_bbox(nc)['xmin'], '\n')Sıkça Sorulan Sorular
“sf Paketiyle Basit Öznitelikler” dersi ücretsiz mi?
Evet — “sf Paketiyle Basit Öznitelikler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“sf Paketiyle Basit Öznitelikler” dersinde ne öğreneceğim?
sf standardını kullanarak uzamsal geometrileri okuyun, yazın ve değiştirin. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“sf Paketiyle Basit Öznitelikler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- sf Paketiyle Basit Öznitelikler
- Koordinat Referans Sistemleri ve İzdüşümler
- Uzamsal Birleştirmeler ve İşlemler
- leaflet ile Etkileşimli Haritalar