HES 505 Fall 2024: Session 10
Due this week: assignment revision 1
Image Source: USGS
By the end of today, you should be able to:
Recognize the unary, binary, and n-ary transformers
Articulate common uses for unary and binary transformers
Use unary transformations to fix invalid geometries
Implement common binary transformers to align and combine data
predicates
and measures
Predicates: evaluate a logical statement asserting that a property is TRUE
Measures: return a numeric value with units based on the units of the CRS
Unary, binary, and n-ary distinguish how many geometries each function accepts and returns
transformer | returns a geometry … |
---|---|
centroid |
of type POINT with the geometry’s centroid |
buffer |
that is larger (or smaller) than the input geometry, depending on the buffer size |
jitter |
that was moved in space a certain amount, using a bivariate uniform distribution |
wrap_dateline |
cut into pieces that do no longer cover the dateline |
boundary |
with the boundary of the input geometry |
convex_hull |
that forms the convex hull of the input geometry |
line_merge |
after merging connecting LINESTRING elements of a MULTILINESTRING into longer LINESTRING s. |
make_valid |
that is valid |
node |
with added nodes to linear geometries at intersections without a node; only works on individual linear geometries |
point_on_surface |
with an arbitrary point on a surface |
polygonize |
of type polygon, created from lines that form a closed ring |
all(st_is_valid(your.shapefile))
returns FALSE
st_make_valid
has two methods:
st_make_valid
st_buffer
CRS
with st_transform
You’ve already been using this!!
Does not guarantee valid geometries (use check = TRUE
if you want this)
We’ll try to keep things from getting too complicated
st_centroid
or st_point_on_surface
Uncertainty in your point locations
Incorporate a fixed range around each point
Combine multiple points into a single polygon
transformer | returns a geometry … |
---|---|
segmentize |
a (linear) geometry with nodes at a given density or minimal distance |
simplify |
simplified by removing vertices/nodes (lines or polygons) |
split |
that has been split with a splitting linestring |
transform |
transformed or convert to a new coordinate reference system |
triangulate |
with Delauney triangulated polygon(s) |
voronoi |
with the Voronoi tessellation of an input geometry |
zm |
with removed or added Z and/or M coordinates |
collection_extract |
with subgeometries from a GEOMETRYCOLLECTION of a particular type |
cast |
that is converted to another type |
+ |
that is shifted over a given vector |
* |
that is multiplied by a scalar or matrix |
function | returns | infix operator |
---|---|---|
intersection |
the overlapping geometries for pair of geometries | & |
union |
the combination of the geometries; removes internal boundaries and duplicate points, nodes or line pieces | | |
difference |
the geometries of the first after removing the overlap with the second geometry | / |
sym_difference |
the combinations of the geometries after removing where they intersect; the negation (opposite) of intersection |
%/% |
crop |
crop an sf object to a specific rectangle |
Relating partially overlapping datasets to each other
Reducing the extent of vector objects
Similar to Binary (except st_crop
)
union
can be applied to a set of geometries to return its geometrical union
intersection
and difference
take a single argument, but operate (sequentially) on all pairs, triples, quadruples, etc.
The function system.time
tells you how long a function takes to run:
user system elapsed
0.84 0.49 1.33
Find the counties that are the furthest distance from each other in Idaho using the polygons, centroids, and point on surface objects we created earlier. Which distance calculation is the fastest?
(You may want to refer to our session 7 example code.)
tigris::primary_secondary_roads()
retrieves shapefiles for major roads in each state of the US.
Plot just Ada county and the major roads within.
Map the portion of major roads that are within 50 km (as the crow flies) of the center of Ada county. (Remember to check the units of your CRS.)
Challenge: Include county borders in your plot for part 2.