Skip to content
Back to skills

Sp

ASecurity

R sp package for spatial data. Use for spatial data classes and methods (legacy, see sf for modern approach).

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 4, 2026
datago

Security analysis

A100/100

Scanned June 4, 2026

npx -y skills add LeoLin990405/r-analytics-skill --skill sp --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sp?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sp
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/leolin990405-sp/badge)](https://www.skillsdirectory.com/skills/leolin990405-sp)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: sp
description: R sp package for spatial data. Use for spatial data classes and methods (legacy, see sf for modern approach).
---

# sp

Classes and methods for spatial data.

## Spatial Points

```r
library(sp)

# Create SpatialPoints
coords <- cbind(x = c(1, 2, 3), y = c(4, 5, 6))
sp_points <- SpatialPoints(coords)

# With CRS
sp_points <- SpatialPoints(coords, proj4string = CRS("+proj=longlat +datum=WGS84"))

# With data
df <- data.frame(id = 1:3, value = c(10, 20, 30))
spdf <- SpatialPointsDataFrame(coords, df)
```

## Spatial Lines

```r
# Create Line
line1 <- Line(cbind(c(1, 2, 3), c(1, 2, 1)))
line2 <- Line(cbind(c(4, 5, 6), c(4, 5, 4)))

# Create Lines (collection)
lines1 <- Lines(list(line1), ID = "a")
lines2 <- Lines(list(line2), ID = "b")

# Create SpatialLines
sp_lines <- SpatialLines(list(lines1, lines2))

# With data
df <- data.frame(id = c("a", "b"), length = c(10, 15))
sldf <- SpatialLinesDataFrame(sp_lines, df, match.ID = "id")
```

## Spatial Polygons

```r
# Create Polygon
poly1 <- Polygon(cbind(c(0, 1, 1, 0, 0), c(0, 0, 1, 1, 0)))
poly2 <- Polygon(cbind(c(2, 3, 3, 2, 2), c(0, 0, 1, 1, 0)))

# Create Polygons
polys1 <- Polygons(list(poly1), ID = "a")
polys2 <- Polygons(list(poly2), ID = "b")

# Create SpatialPolygons
sp_polys <- SpatialPolygons(list(polys1, polys2))

# With data
df <- data.frame(id = c("a", "b"), area = c(1, 1))
spdf <- SpatialPolygonsDataFrame(sp_polys, df, match.ID = "id")
```

## Coordinate Reference Systems

```r
# Set CRS
proj4string(sp_obj) <- CRS("+proj=longlat +datum=WGS84")

# Get CRS
proj4string(sp_obj)

# Transform CRS
sp_transformed <- spTransform(sp_obj, CRS("+proj=utm +zone=10 +datum=WGS84"))

# Common CRS strings
# WGS84: "+proj=longlat +datum=WGS84"
# UTM: "+proj=utm +zone=10 +datum=WGS84"
# Web Mercator: "+proj=merc +a=6378137 +b=6378137"
```

## Subsetting

```r
# By index
sp_obj[1:5, ]

# By attribute
sp_obj[sp_obj$value > 10, ]

# Access data
sp_obj@data
sp_obj$column_name
```

## Spatial Operations

```r
# Bounding box
bbox(sp_obj)

# Coordinates
coordinates(sp_obj)

# Area (polygons)
library(rgeos)
gArea(sp_polys)

# Length (lines)
gLength(sp_lines)

# Centroid
gCentroid(sp_polys)
```

## Overlay Operations

```r
library(rgeos)

# Intersection
gIntersection(sp1, sp2)

# Union
gUnion(sp1, sp2)

# Difference
gDifference(sp1, sp2)

# Buffer
gBuffer(sp_obj, width = 100)

# Contains
gContains(sp1, sp2)

# Intersects
gIntersects(sp1, sp2)
```

## Reading/Writing

```r
library(rgdal)

# Read shapefile
sp_obj <- readOGR(dsn = "path/to/folder", layer = "filename")

# Write shapefile
writeOGR(sp_obj, dsn = "output", layer = "name", driver = "ESRI Shapefile")

# Read from GeoJSON
sp_obj <- readOGR("file.geojson")
```

## Plotting

```r
# Basic plot
plot(sp_obj)

# With colors
plot(sp_obj, col = sp_obj$value)

# Add points to existing plot
plot(sp_polys)
points(sp_points, col = "red", pch = 16)

# spplot (lattice-based)
spplot(spdf, "value")
```

## Convert to sf

```r
library(sf)

# sp to sf
sf_obj <- st_as_sf(sp_obj)

# sf to sp
sp_obj <- as(sf_obj, "Spatial")
```

## Grid Data

```r
# Create grid
grd <- GridTopology(c(0, 0), c(1, 1), c(10, 10))
sp_grid <- SpatialGrid(grd)

# Pixels
sp_pixels <- SpatialPixels(SpatialPoints(coordinates(sp_grid)))

# With data
spgdf <- SpatialGridDataFrame(grd, data.frame(value = 1:100))
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…