sf पैकेज से सरल फीचर
sf मानक का प्रयोग करके स्थानिक ज्यामितियाँ पढ़ें, लिखें और उनमें बदलाव करें।
sf पैकेज से सरल फीचर, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
sf पैकेज क्या है
sf (Simple Features) पैकेज भू-स्थानिक वेक्टर डेटा के लिए R का मुख्य उपकरण है। यह ज्यामितियों (बिंदु, रेखाएँ, बहुभुज) को सामान्य डेटा फ़्रेम में एक विशेष सूची कॉलम के रूप में संग्रहीत करता है, जिससे यह dplyr और ggplot2 के साथ पूरी तरह संगत रहता है।
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: शेपफ़ाइल लोड करना
read_sf("file.shp") किसी भी OGR-समर्थित फ़ॉर्मैट (Shapefile, GeoJSON, GeoPackage, KML आदि) को sf ऑब्जेक्ट में पढ़ता है। यह ज्यामितियों के साथ CRS और एट्रिब्यूट तालिका को भी अपने-आप पढ़ लेता है।
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 और संरचना
st_geometry_type() प्रत्येक फीचर का ज्यामिति प्रकार लौटाता है। geometry कॉलम sfc ऑब्जेक्ट का एक सूची कॉलम होता है। आप इसका निरीक्षण, उपसमुच्चयन और हेरफेर किसी भी अन्य कॉलम की तरह कर सकते हैं।
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 निकालना
st_coordinates() किसी भी ज्यामिति से कच्चे निर्देशांक मैट्रिक्स निकालता है। बिंदुओं के लिए यह 2-कॉलम वाला मैट्रिक्स (X, Y) लौटाता है। बहुभुजों के लिए यह सभी रिंग शीर्षों के साथ भाग और बहुभुज इंडेक्स कॉलम लौटाता है।
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')डेटा फ़्रेम से sf बनाना
st_as_sf(df, coords = c('lon', 'lat'), crs = 4326) निर्देशांक कॉलम वाले सामान्य डेटा फ़्रेम को sf बिंदु ऑब्जेक्ट में बदलता है। coords आर्ग्युमेंट x (देशांतर) और y (अक्षांश) कॉलम के नाम बताता है।
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
आप कंस्ट्रक्टर फ़ंक्शन की सहायता से प्रोग्राम के द्वारा ज्यामितियाँ बना सकते हैं। st_point(c(x,y)) एक बिंदु बनाता है, st_linestring(matrix) निर्देशांक युग्मों से एक रेखा बनाता है, और st_polygon(list(matrix)) रिंग निर्देशांकों से एक बहुभुज बनाता है।
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 ऑब्जेक्ट का प्लॉट बनाना
sf ऑब्जेक्ट के लिए plot() मेथड प्रत्येक एट्रिब्यूट कॉलम का एक त्वरित मानचित्र बनाता है। केवल ज्यामिति का प्लॉट बनाने के लिए plot(st_geometry(sf_obj)) पास करें, ताकि एट्रिब्यूट पैनल न दिखें।
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 ऑब्जेक्ट का उपसमुच्चयन
sf ऑब्जेक्ट डेटा फ़्रेम की तरह काम करते हैं: आप [, subset() या dplyr::filter() से पंक्तियों को फ़िल्टर कर सकते हैं। पंक्तियों का उपसमुच्चयन करते समय ज्यामिति कॉलम सभी कार्रवाइयों में अपने-आप साथ बना रहता है।
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 और ggplot2 का एकीकरण
ggplot2, geom_sf() के माध्यम से sf ऑब्जेक्ट का मूल रूप से समर्थन करता है। यह फ़ंक्शन निर्देशांक प्रणाली को अपने-आप संभालता है और बिना किसी अतिरिक्त तैयारी के सही ज्यामिति प्रकार — बिंदु, रेखाएँ या बहुभुज — प्रदर्शित करता है।
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 को डिस्क पर लिखना
write_sf(sf_obj, 'output.gpkg') (या st_write()) ज्यामितियों और एट्रिब्यूट को डिस्क पर सहेजता है। GeoPackage (.gpkg) को Shapefile की तुलना में प्राथमिकता दी जाती है, क्योंकि यह लंबे कॉलम नाम और UTF-8 का समर्थन करता है तथा सब कुछ एक ही फ़ाइल में रखता है।
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 का सारांश और निरीक्षण
किसी sf ऑब्जेक्ट का तुरंत निरीक्षण करने के लिए print(), st_bbox(), st_crs() और summary() का उपयोग करें। st_bbox() बाउंडिंग बॉक्स को ऑब्जेक्ट के CRS की इकाइयों में नामित वेक्टर (xmin, ymin, xmax, ymax) के रूप में लौटाता है।
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')त्वरित जाँच
आपके पास longitude और latitude (WGS84) कॉलम वाला डेटा फ़्रेम है। कौन-सा फ़ंक्शन कॉल इसे sf बिंदु ऑब्जेक्ट में बदलता है?
पुनरावलोकन: sf पैकेज
मुख्य बातें:
read_sf()शेपफ़ाइल, GeoJSON, GeoPackage और अन्य फ़ॉर्मैट लोड करता हैst_geometry_type()प्रत्येक फीचर के लिए POINT, LINESTRING, POLYGON आदि लौटाता हैst_coordinates()कच्चे XY निर्देशांक मैट्रिक्स निकालता हैst_as_sf(df, coords = c('x','y'), crs = 4326)डेटा फ़्रेम से sf बनाता है- प्रोग्राम के द्वारा बनाने वाले कंस्ट्रक्टर:
st_point(),st_linestring(),st_polygon() - दृश्यांकन के लिए ggplot2 में
plot(sf_obj)याgeom_sf() write_sf()GeoPackage, Shapefile, GeoJSON आदि में सहेजता है
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')एआई शिक्षक के साथ R सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 43
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “sf पैकेज से सरल फीचर” पाठ निःशुल्क है?
हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “sf पैकेज से सरल फीचर” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“sf पैकेज से सरल फीचर” में मैं क्या सीखूँगा?
sf मानक का प्रयोग करके स्थानिक ज्यामितियाँ पढ़ें, लिखें और उनमें बदलाव करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“sf पैकेज से सरल फीचर” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- sf पैकेज से सरल फीचर
- निर्देशांक संदर्भ प्रणालियाँ और प्रक्षेपण
- स्थानिक जॉइन और संक्रियाएँ
- leaflet से इंटरैक्टिव मानचित्र