Title: | Open Source Geometry Engine ('GEOS') R API |
---|---|
Description: | Provides an R API to the Open Source Geometry Engine ('GEOS') library (<https://libgeos.org/>) and a vector format with which to efficiently store 'GEOS' geometries. High-performance functions to extract information from, calculate relationships between, and transform geometries are provided. Finally, facilities to import and export geometry vectors to other spatial formats are provided. |
Authors: | Dewey Dunnington [aut, cre] , Edzer Pebesma [aut] |
Maintainer: | Dewey Dunnington <[email protected]> |
License: | MIT + file LICENSE |
Version: | 0.2.4.9000 |
Built: | 2024-11-28 03:07:51 UTC |
Source: | https://github.com/paleolimbot/geos |
Create GEOS Geometry Vectors
## S3 method for class 'wk_xy' as_geos_geometry(x, ...) ## S3 method for class 'wk_xyz' as_geos_geometry(x, ...) as_geos_geometry(x, ...) ## S3 method for class 'geos_geometry' as_geos_geometry(x, ...) ## Default S3 method: as_geos_geometry(x, ...) ## S3 method for class 'character' as_geos_geometry(x, ..., crs = NULL) ## S3 method for class 'blob' as_geos_geometry(x, ..., crs = NULL) ## S3 method for class 'WKB' as_geos_geometry(x, ..., crs = NULL) geos_geometry(crs = wk::wk_crs_inherit())
## S3 method for class 'wk_xy' as_geos_geometry(x, ...) ## S3 method for class 'wk_xyz' as_geos_geometry(x, ...) as_geos_geometry(x, ...) ## S3 method for class 'geos_geometry' as_geos_geometry(x, ...) ## Default S3 method: as_geos_geometry(x, ...) ## S3 method for class 'character' as_geos_geometry(x, ..., crs = NULL) ## S3 method for class 'blob' as_geos_geometry(x, ..., crs = NULL) ## S3 method for class 'WKB' as_geos_geometry(x, ..., crs = NULL) geos_geometry(crs = wk::wk_crs_inherit())
x |
An object to be coerced to a geometry vector |
... |
Unused |
crs |
An object that can be interpreted as a CRS. See |
A geos geometry vector
as_geos_geometry("LINESTRING (0 1, 3 9)")
as_geos_geometry("LINESTRING (0 1, 3 9)")
Note that geos_x()
, geos_y()
, and geos_z()
do not handle
empty points (use geos_write_xy()
if you need to handle this case).
Similarly, the min/max functions will error on empty geometries.
geos_area(geom) geos_length(geom) geos_x(geom) geos_y(geom) geos_z(geom) geos_xmin(geom) geos_ymin(geom) geos_xmax(geom) geos_ymax(geom) geos_minimum_clearance(geom) geos_is_empty(geom) geos_is_simple(geom) geos_is_ring(geom) geos_has_z(geom) geos_is_closed(geom) geos_type_id(geom) geos_type(geom) geos_precision(geom) geos_srid(geom) geos_num_coordinates(geom) geos_num_geometries(geom) geos_num_interior_rings(geom) geos_num_rings(geom) geos_dimension(geom) geos_coordinate_dimension(geom) geos_is_clockwise(geom) geos_hilbert_code(geom, extent = wk::wk_bbox(geom), level = 15)
geos_area(geom) geos_length(geom) geos_x(geom) geos_y(geom) geos_z(geom) geos_xmin(geom) geos_ymin(geom) geos_xmax(geom) geos_ymax(geom) geos_minimum_clearance(geom) geos_is_empty(geom) geos_is_simple(geom) geos_is_ring(geom) geos_has_z(geom) geos_is_closed(geom) geos_type_id(geom) geos_type(geom) geos_precision(geom) geos_srid(geom) geos_num_coordinates(geom) geos_num_geometries(geom) geos_num_interior_rings(geom) geos_num_rings(geom) geos_dimension(geom) geos_coordinate_dimension(geom) geos_is_clockwise(geom) geos_hilbert_code(geom, extent = wk::wk_bbox(geom), level = 15)
geom |
|
extent |
A geometry describing the extent of |
level |
The Hilbert level of precision (between 0 and 15). |
A vector of length geom
geos_area("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))") geos_length("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))") geos_x("POINT Z (1 2 3)") geos_y("POINT Z (1 2 3)") geos_z("POINT Z (1 2 3)") geos_xmin("LINESTRING (0 1, 2 3)") geos_ymin("LINESTRING (0 1, 2 3)") geos_xmax("LINESTRING (0 1, 2 3)") geos_ymax("LINESTRING (0 1, 2 3)") geos_minimum_clearance("POLYGON ((0 0, 10 0, 10 10, 3 5, 0 10, 0 0))") geos_is_empty(c("POINT EMPTY", "POINT (0 1)")) geos_is_simple(c("LINESTRING (0 0, 1 1)", "LINESTRING (0 0, 1 1, 1 0, 0 1)")) geos_is_ring( c( "LINESTRING (0 0, 1 0, 1 1, 0 1, 0 0)", "LINESTRING (0 0, 1 0, 1 1, 0 1)" ) ) geos_is_closed( c( "LINESTRING (0 0, 1 0, 1 1, 0 1, 0 0)", "LINESTRING (0 0, 1 0, 1 1, 0 1)" ) ) geos_has_z(c("POINT Z (1 2 3)", "POINT (1 2)")) geos_type_id(c("POINT (0 0)", "LINESTRING (0 0, 1 1)")) geos_srid(wk::as_wkb(c("SRID=1234;POINT (0 0)", "POINT (0 0)"))) geos_num_coordinates(c("POINT (0 0)", "MULTIPOINT (0 0, 1 1)")) geos_num_geometries(c("POINT (0 0)", "MULTIPOINT (0 0, 1 1)")) geos_num_interior_rings("POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))") geos_dimension(c("POINT (0 0)", "LINESTRING (0 0, 1 1)")) geos_coordinate_dimension(c("POINT (0 0)", "POINT Z (0 0 1)"))
geos_area("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))") geos_length("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))") geos_x("POINT Z (1 2 3)") geos_y("POINT Z (1 2 3)") geos_z("POINT Z (1 2 3)") geos_xmin("LINESTRING (0 1, 2 3)") geos_ymin("LINESTRING (0 1, 2 3)") geos_xmax("LINESTRING (0 1, 2 3)") geos_ymax("LINESTRING (0 1, 2 3)") geos_minimum_clearance("POLYGON ((0 0, 10 0, 10 10, 3 5, 0 10, 0 0))") geos_is_empty(c("POINT EMPTY", "POINT (0 1)")) geos_is_simple(c("LINESTRING (0 0, 1 1)", "LINESTRING (0 0, 1 1, 1 0, 0 1)")) geos_is_ring( c( "LINESTRING (0 0, 1 0, 1 1, 0 1, 0 0)", "LINESTRING (0 0, 1 0, 1 1, 0 1)" ) ) geos_is_closed( c( "LINESTRING (0 0, 1 0, 1 1, 0 1, 0 0)", "LINESTRING (0 0, 1 0, 1 1, 0 1)" ) ) geos_has_z(c("POINT Z (1 2 3)", "POINT (1 2)")) geos_type_id(c("POINT (0 0)", "LINESTRING (0 0, 1 1)")) geos_srid(wk::as_wkb(c("SRID=1234;POINT (0 0)", "POINT (0 0)"))) geos_num_coordinates(c("POINT (0 0)", "MULTIPOINT (0 0, 1 1)")) geos_num_geometries(c("POINT (0 0)", "MULTIPOINT (0 0, 1 1)")) geos_num_interior_rings("POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))") geos_dimension(c("POINT (0 0)", "LINESTRING (0 0, 1 1)")) geos_coordinate_dimension(c("POINT (0 0)", "POINT Z (0 0 1)"))
An experimental alternative to the geos_strtree()
that provides a more
flexible interface and potentially faster spatial joins. Notably,
geos_basic_strtree_insert()
uses wk::wk_envelope()
instead of
as_geos_geometry()
and does not keep the underlying geometry in memory.
For object types like wk::xy()
with an optimized wk::wk_envelope()
method, this is very efficient.
geos_basic_strtree(items = NULL, node_capacity = 10L) geos_basic_strtree_size(tree) geos_basic_strtree_finalized(tree) geos_basic_strtree_insert(tree, items) geos_basic_strtree_query(tree, query, limit = NA, fill = FALSE) geos_basic_strtree_query_filtered( tree, query, tree_geom, fun, ..., .chunk_size = 65536 )
geos_basic_strtree(items = NULL, node_capacity = 10L) geos_basic_strtree_size(tree) geos_basic_strtree_finalized(tree) geos_basic_strtree_insert(tree, items) geos_basic_strtree_query(tree, query, limit = NA, fill = FALSE) geos_basic_strtree_query_filtered( tree, query, tree_geom, fun, ..., .chunk_size = 65536 )
items |
Items to add to the tree index |
node_capacity |
The maximum number of child nodes that a node may have. The minimum recommended capacity value is 4. If unsure, use a default node capacity of 10. |
tree |
|
query |
Items with which to query the tree |
limit |
The maximum number of matches in the tree to return |
fill |
If |
tree_geom |
A vctr coercible to |
fun |
A vectorized binary predicate (e.g. |
... |
Passed to |
.chunk_size |
The approximate number of comparisons to pass to |
A geos_basic_strtree object
tree <- geos_basic_strtree(wk::xy(1:5, 1:5)) geos_basic_strtree_size(tree) (geos_basic_strtree_insert(tree, wk::xy(6:10, 6:10))) geos_basic_strtree_query(tree, as_geos_geometry("LINESTRING (3 0, 0 3)"))
tree <- geos_basic_strtree(wk::xy(1:5, 1:5)) geos_basic_strtree_size(tree) (geos_basic_strtree_insert(tree, wk::xy(6:10, 6:10))) geos_basic_strtree_query(tree, as_geos_geometry("LINESTRING (3 0, 0 3)"))
geos_buffer()
returns a polygon or multipolygon geometry.
geos_offset_curve()
returns a linestring offset to the left by distance
.
geos_buffer(geom, distance, params = geos_buffer_params()) geos_offset_curve(geom, distance, params = geos_buffer_params()) geos_buffer_params( quad_segs = 30, end_cap_style = c("round", "flat", "square"), join_style = c("round", "mitre", "bevel"), mitre_limit = 1, single_sided = FALSE )
geos_buffer(geom, distance, params = geos_buffer_params()) geos_offset_curve(geom, distance, params = geos_buffer_params()) geos_buffer_params( quad_segs = 30, end_cap_style = c("round", "flat", "square"), join_style = c("round", "mitre", "bevel"), mitre_limit = 1, single_sided = FALSE )
geom |
|
distance |
The buffer distance. Can be negative to buffer or offset on the righthand side of the geometry. |
params |
|
quad_segs |
The number of segments per quadrant. A higher number here will increase the apparent resolution of the resulting polygon. |
end_cap_style |
One of "round", "flat", or "square". |
join_style |
One of "round", "mitre", or "bevel". |
mitre_limit |
If |
single_sided |
Use |
A GEOS geometry vector along the recycled
length of geom
and distance
.
geos_buffer("POINT (0 0)", 1) geos_offset_curve("LINESTRING (0 0, 0 10, 10 0)", 1)
geos_buffer("POINT (0 0)", 1) geos_offset_curve("LINESTRING (0 0, 0 10, 10 0)", 1)
Geometry transformers
geos_centroid(geom) geos_boundary(geom) geos_minimum_width(geom) geos_minimum_clearance_line(geom) geos_minimum_rotated_rectangle(geom) geos_unary_union(geom) geos_unary_union_prec(geom, grid_size) geos_coverage_union(geom) geos_point_on_surface(geom) geos_node(geom) geos_make_valid(geom, make_valid_params = geos_make_valid_params()) geos_make_valid_params( keep_collapsed = TRUE, method = c("make_valid_linework", "make_valid_structure") ) geos_unique_points(geom) geos_reverse(geom) geos_merge_lines(geom) geos_build_area(geom) geos_envelope(geom) geos_envelope_rct(geom) geos_extent(geom) geos_convex_hull(geom) geos_concave_hull(geom, ratio, allow_holes = FALSE) geos_concave_hull_of_polygons( geom, ratio, is_tight = TRUE, allow_holes = FALSE ) geos_polygon_hull_simplify( geom, ratio, hull_type = c("outer", "inner"), ratio_mode = c("vertex", "area") ) geos_point_start(geom) geos_point_end(geom) geos_line_merge(geom) geos_line_merge_directed(geom) geos_transform_xy(geom, trans) geos_clone(geom) geos_set_srid(geom, srid) geos_point_n(geom, index) geos_simplify(geom, tolerance) geos_remove_repeated_points(geom, tolerance) geos_simplify_preserve_topology(geom, tolerance) geos_set_precision( geom, grid_size, preserve_topology = TRUE, keep_collapsed = FALSE ) geos_normalize(geom) geos_densify(geom, tolerance) geos_clip_by_rect(geom, rect)
geos_centroid(geom) geos_boundary(geom) geos_minimum_width(geom) geos_minimum_clearance_line(geom) geos_minimum_rotated_rectangle(geom) geos_unary_union(geom) geos_unary_union_prec(geom, grid_size) geos_coverage_union(geom) geos_point_on_surface(geom) geos_node(geom) geos_make_valid(geom, make_valid_params = geos_make_valid_params()) geos_make_valid_params( keep_collapsed = TRUE, method = c("make_valid_linework", "make_valid_structure") ) geos_unique_points(geom) geos_reverse(geom) geos_merge_lines(geom) geos_build_area(geom) geos_envelope(geom) geos_envelope_rct(geom) geos_extent(geom) geos_convex_hull(geom) geos_concave_hull(geom, ratio, allow_holes = FALSE) geos_concave_hull_of_polygons( geom, ratio, is_tight = TRUE, allow_holes = FALSE ) geos_polygon_hull_simplify( geom, ratio, hull_type = c("outer", "inner"), ratio_mode = c("vertex", "area") ) geos_point_start(geom) geos_point_end(geom) geos_line_merge(geom) geos_line_merge_directed(geom) geos_transform_xy(geom, trans) geos_clone(geom) geos_set_srid(geom, srid) geos_point_n(geom, index) geos_simplify(geom, tolerance) geos_remove_repeated_points(geom, tolerance) geos_simplify_preserve_topology(geom, tolerance) geos_set_precision( geom, grid_size, preserve_topology = TRUE, keep_collapsed = FALSE ) geos_normalize(geom) geos_densify(geom, tolerance) geos_clip_by_rect(geom, rect)
geom |
|
grid_size |
For |
make_valid_params |
A |
keep_collapsed |
Should items that become EMPTY due to rounding be kept in the output? |
method |
The method to use for
|
ratio |
The normalized ratio between the shape of the concave hull and the area of the return value. Use 1 for the convex hull; use 0 for maximum concave-ness. |
allow_holes |
Use |
is_tight |
Use |
hull_type |
One of "outer" or "inner". |
ratio_mode |
One of "vertex" or "area", describing the normalized
proportion type for which |
trans |
A wk transform object. |
srid |
An integer spatial reference identifier. |
index |
The index of the point or geometry to extract. |
tolerance |
A minimum distance to use for simplification or densification. Use a higher value for more simplification (or less densification). |
preserve_topology |
Should topology internal to each feature be preserved? |
rect |
A |
A GEOS geometry vector of length geom
geos_centroid(c("POINT (0 1)", "LINESTRING (0 0, 1 1)")) geos_boundary(c("POLYGON ((0 0, 1 0, 0 1, 0 0))", "LINESTRING (0 0, 1 1)")) geos_minimum_width("POLYGON ((0 0, 1 0, 0 1, 0 0))") geos_minimum_clearance_line("POLYGON ((0 0, 10 0, 10 10, 3 5, 0 10, 0 0))") geos_minimum_rotated_rectangle("POLYGON ((0 0, 1 0, 0.5 0.5, 0 0))") geos_minimum_bounding_circle("LINESTRING (-1 -1, 1 1)") geos_unary_union("MULTIPOINT (0 1, 0 1)") geos_point_on_surface("LINESTRING (0 1, 0.2 3, 10 10)") geos_node("POLYGON ((0 0, 1 0, 0 1, 0 0))") geos_make_valid("POLYGON ((0 0, 1 1, 1 0, 0 1, 0 0))") geos_unique_points("POLYGON ((0 0, 1 0, 0 1, 0 0))") geos_reverse("LINESTRING (0 0, 1 1)") geos_merge_lines( "MULTILINESTRING ((0 0, 0.5 0.5, 2 2), (0.5 0.5, 2 2))" ) geos_build_area("LINESTRING (0 0, 1 0, 0 1, 0 0)") geos_envelope("LINESTRING (0 0, 1 2)") geos_convex_hull("MULTIPOINT (0 0, 1 0, 0 2, 0 0)") geos_point_start("LINESTRING (0 0, 1 1)") geos_point_end("LINESTRING (0 0, 1 1)") geos_simplify("LINESTRING (0 0, 0 1, 0 2)", 0.1) geos_simplify_preserve_topology("LINESTRING (0 0, 0 1, 0 2)", 0.1)
geos_centroid(c("POINT (0 1)", "LINESTRING (0 0, 1 1)")) geos_boundary(c("POLYGON ((0 0, 1 0, 0 1, 0 0))", "LINESTRING (0 0, 1 1)")) geos_minimum_width("POLYGON ((0 0, 1 0, 0 1, 0 0))") geos_minimum_clearance_line("POLYGON ((0 0, 10 0, 10 10, 3 5, 0 10, 0 0))") geos_minimum_rotated_rectangle("POLYGON ((0 0, 1 0, 0.5 0.5, 0 0))") geos_minimum_bounding_circle("LINESTRING (-1 -1, 1 1)") geos_unary_union("MULTIPOINT (0 1, 0 1)") geos_point_on_surface("LINESTRING (0 1, 0.2 3, 10 10)") geos_node("POLYGON ((0 0, 1 0, 0 1, 0 0))") geos_make_valid("POLYGON ((0 0, 1 1, 1 0, 0 1, 0 0))") geos_unique_points("POLYGON ((0 0, 1 0, 0 1, 0 0))") geos_reverse("LINESTRING (0 0, 1 1)") geos_merge_lines( "MULTILINESTRING ((0 0, 0.5 0.5, 2 2), (0.5 0.5, 2 2))" ) geos_build_area("LINESTRING (0 0, 1 0, 0 1, 0 0)") geos_envelope("LINESTRING (0 0, 1 2)") geos_convex_hull("MULTIPOINT (0 0, 1 0, 0 2, 0 0)") geos_point_start("LINESTRING (0 0, 1 1)") geos_point_end("LINESTRING (0 0, 1 1)") geos_simplify("LINESTRING (0 0, 0 1, 0 2)", 0.1) geos_simplify_preserve_topology("LINESTRING (0 0, 0 1, 0 2)", 0.1)
Create rectangles from bounds
geos_create_rectangle(xmin, ymin, xmax, ymax, crs = NULL)
geos_create_rectangle(xmin, ymin, xmax, ymax, crs = NULL)
xmin |
Left bound of envelope |
ymin |
Lower bound of envelope |
xmax |
Right bound of envelope |
ymax |
Upper bound of envelope |
crs |
An object that can be interpreted as a CRS. See |
A geos_geometry()
consisting of a polygon
These functions return one triangulation/diagram per feature as a multi geometry. These functions are not vectorized along their parameters.
geos_delaunay_triangles(geom, tolerance = 0) geos_constrained_delaunay_triangles(geom) geos_delaunay_edges(geom, tolerance = 0) geos_voronoi_polygons(geom, env = NULL, tolerance = 0) geos_voronoi_edges(geom, env = NULL, tolerance = 0)
geos_delaunay_triangles(geom, tolerance = 0) geos_constrained_delaunay_triangles(geom) geos_delaunay_edges(geom, tolerance = 0) geos_voronoi_polygons(geom, env = NULL, tolerance = 0) geos_voronoi_edges(geom, env = NULL, tolerance = 0)
geom |
A GEOS geometry vector whose nodes will be used as input. |
tolerance |
A snapping tolerance or 0 to disable snapping |
env |
A boundary for the diagram, or |
A GEOS geometry vector of length geom
geos_delaunay_triangles("MULTIPOINT (0 0, 1 0, 0 1)") geos_delaunay_edges("MULTIPOINT (0 0, 1 0, 0 1)") geos_voronoi_polygons("MULTIPOINT (0 0, 1 0, 0 1)") geos_voronoi_edges("MULTIPOINT (0 0, 1 0, 0 1)")
geos_delaunay_triangles("MULTIPOINT (0 0, 1 0, 0 1)") geos_delaunay_edges("MULTIPOINT (0 0, 1 0, 0 1)") geos_voronoi_polygons("MULTIPOINT (0 0, 1 0, 0 1)") geos_voronoi_edges("MULTIPOINT (0 0, 1 0, 0 1)")
Binary predicates
geos_disjoint(geom1, geom2) geos_touches(geom1, geom2) geos_intersects(geom1, geom2) geos_crosses(geom1, geom2) geos_within(geom1, geom2) geos_contains(geom1, geom2) geos_overlaps(geom1, geom2) geos_equals(geom1, geom2) geos_equals_exact(geom1, geom2, tolerance = .Machine$double.eps^2) geos_covers(geom1, geom2) geos_covered_by(geom1, geom2) geos_prepared_disjoint(geom1, geom2) geos_prepared_touches(geom1, geom2) geos_prepared_intersects(geom1, geom2) geos_prepared_crosses(geom1, geom2) geos_prepared_within(geom1, geom2) geos_prepared_contains(geom1, geom2) geos_prepared_contains_properly(geom1, geom2) geos_prepared_overlaps(geom1, geom2) geos_prepared_covers(geom1, geom2) geos_prepared_covered_by(geom1, geom2)
geos_disjoint(geom1, geom2) geos_touches(geom1, geom2) geos_intersects(geom1, geom2) geos_crosses(geom1, geom2) geos_within(geom1, geom2) geos_contains(geom1, geom2) geos_overlaps(geom1, geom2) geos_equals(geom1, geom2) geos_equals_exact(geom1, geom2, tolerance = .Machine$double.eps^2) geos_covers(geom1, geom2) geos_covered_by(geom1, geom2) geos_prepared_disjoint(geom1, geom2) geos_prepared_touches(geom1, geom2) geos_prepared_intersects(geom1, geom2) geos_prepared_crosses(geom1, geom2) geos_prepared_within(geom1, geom2) geos_prepared_contains(geom1, geom2) geos_prepared_contains_properly(geom1, geom2) geos_prepared_overlaps(geom1, geom2) geos_prepared_covers(geom1, geom2) geos_prepared_covered_by(geom1, geom2)
geom1 , geom2
|
GEOS geometry vectors, recycled to a common length. |
tolerance |
The maximum separation of vertices that should be considered equal. |
A logical vector along the recycled length of geom1
and geom2
Matrix predicates
geos_disjoint_matrix(geom, tree) geos_touches_matrix(geom, tree) geos_intersects_matrix(geom, tree) geos_crosses_matrix(geom, tree) geos_within_matrix(geom, tree) geos_contains_matrix(geom, tree) geos_contains_properly_matrix(geom, tree) geos_overlaps_matrix(geom, tree) geos_equals_matrix(geom, tree) geos_equals_exact_matrix(geom, tree, tolerance = .Machine$double.eps^2) geos_covers_matrix(geom, tree) geos_covered_by_matrix(geom, tree) geos_disjoint_any(geom, tree) geos_touches_any(geom, tree) geos_intersects_any(geom, tree) geos_crosses_any(geom, tree) geos_within_any(geom, tree) geos_contains_any(geom, tree) geos_contains_properly_any(geom, tree) geos_overlaps_any(geom, tree) geos_equals_any(geom, tree) geos_equals_exact_any(geom, tree, tolerance = .Machine$double.eps^2) geos_covers_any(geom, tree) geos_covered_by_any(geom, tree)
geos_disjoint_matrix(geom, tree) geos_touches_matrix(geom, tree) geos_intersects_matrix(geom, tree) geos_crosses_matrix(geom, tree) geos_within_matrix(geom, tree) geos_contains_matrix(geom, tree) geos_contains_properly_matrix(geom, tree) geos_overlaps_matrix(geom, tree) geos_equals_matrix(geom, tree) geos_equals_exact_matrix(geom, tree, tolerance = .Machine$double.eps^2) geos_covers_matrix(geom, tree) geos_covered_by_matrix(geom, tree) geos_disjoint_any(geom, tree) geos_touches_any(geom, tree) geos_intersects_any(geom, tree) geos_crosses_any(geom, tree) geos_within_any(geom, tree) geos_contains_any(geom, tree) geos_contains_properly_any(geom, tree) geos_overlaps_any(geom, tree) geos_equals_any(geom, tree) geos_equals_exact_any(geom, tree, tolerance = .Machine$double.eps^2) geos_covers_any(geom, tree) geos_covered_by_any(geom, tree)
geom |
|
tree |
|
tolerance |
The maximum separation of vertices that should be considered equal. |
A list()
of integer vectors containing the indices of tree
for which the predicate would return TRUE.
Distance calculations
geos_distance(geom1, geom2) geos_prepared_distance(geom1, geom2) geos_distance_indexed(geom1, geom2) geos_distance_hausdorff(geom1, geom2, densify = NULL) geos_distance_frechet(geom1, geom2, densify = NULL) geos_is_within_distance(geom1, geom2, distance) geos_prepared_is_within_distance(geom1, geom2, distance)
geos_distance(geom1, geom2) geos_prepared_distance(geom1, geom2) geos_distance_indexed(geom1, geom2) geos_distance_hausdorff(geom1, geom2, densify = NULL) geos_distance_frechet(geom1, geom2, densify = NULL) geos_is_within_distance(geom1, geom2, distance) geos_prepared_is_within_distance(geom1, geom2, distance)
geom1 , geom2
|
GEOS geometry vectors, recycled to a common length. |
densify |
A fraction between 0 and 1 denoting the degree to which edges should be subdivided (smaller value means more subdivisions). Use NULL to calculate the distance as-is. |
distance |
A threshold distance, below which |
A numeric vector along the recycled length of geom1
and geom2
Create empty geometries
geos_empty(type_id = "geometrycollection", crs = wk::wk_crs_inherit()) as_geos_type_id(type_id) ## Default S3 method: as_geos_type_id(type_id) ## S3 method for class 'character' as_geos_type_id(type_id) ## S3 method for class 'numeric' as_geos_type_id(type_id)
geos_empty(type_id = "geometrycollection", crs = wk::wk_crs_inherit()) as_geos_type_id(type_id) ## Default S3 method: as_geos_type_id(type_id) ## S3 method for class 'character' as_geos_type_id(type_id) ## S3 method for class 'numeric' as_geos_type_id(type_id)
type_id |
The numeric type identifier for which an
empty should be returned, an object from which
one can be extracted using |
crs |
An object that can be interpreted as a CRS. See |
geos_empty(c("point", "linestring", "polygon")) geos_empty(1:7) geos_empty(geos_read_wkt(c("POINT (0 1)", "LINESTRING (0 0, 1 1)")))
geos_empty(c("point", "linestring", "polygon")) geos_empty(1:7) geos_empty(geos_read_wkt(c("POINT (0 1)", "LINESTRING (0 0, 1 1)")))
Access child geometries
geos_geometry_n(geom, n) geos_ring_n(geom, n)
geos_geometry_n(geom, n) geos_ring_n(geom, n)
geom |
|
n |
The (one-based) index of the child geometry |
A GEOS geometry vector along the recycled
length of geom
and i
.
multipoint <- "MULTIPOINT (0 0, 1 1, 2 2)" geos_geometry_n(multipoint, seq_len(geos_num_geometries(multipoint))) poly <- "POLYGON ((0 0, 0 1, 1 0, 0 0), (0.1 0.1, 0.1 0.2, 0.2 0.1, 0.1 0.1))" geos_ring_n(poly, seq_len(geos_num_rings(poly)))
multipoint <- "MULTIPOINT (0 0, 1 1, 2 2)" geos_geometry_n(multipoint, seq_len(geos_num_geometries(multipoint))) poly <- "POLYGON ((0 0, 0 1, 1 0, 0 0), (0.1 0.1, 0.1 0.2, 0.2 0.1, 0.1 0.1))" geos_ring_n(poly, seq_len(geos_num_rings(poly)))
Experimental low-level spatial join infrastructure based on the
geos_basic_strtree()
.
geos_inner_join( x, y, predicate = "intersects", distance = NA, suffix = c(".x", ".y") ) geos_inner_join_keys(x, y, predicate = "intersects", distance = NA)
geos_inner_join( x, y, predicate = "intersects", distance = NA, suffix = c(".x", ".y") ) geos_inner_join_keys(x, y, predicate = "intersects", distance = NA)
x , y
|
Geometry vectors with a |
predicate |
One of:
|
distance |
Passed to |
suffix |
A character vector of length 2 with suffixes for the left and right sides for output columns with duplicated names. |
A data.frame with columns x and y corresponding to the 1-based
indices on pairs of x
and y
for which predicate
is TRUE.
x <- data.frame( col_x = "a", geometry = as_geos_geometry("POINT (10 10)") ) y <- data.frame( col_y = "a", geometry = as_geos_geometry("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))") ) geos_inner_join(x, y, "intersects") geos_inner_join_keys( "POINT (5 5)", "POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))", "intersects" )
x <- data.frame( col_x = "a", geometry = as_geos_geometry("POINT (10 10)") ) y <- data.frame( col_y = "a", geometry = as_geos_geometry("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))") ) geos_inner_join(x, y, "intersects") geos_inner_join_keys( "POINT (5 5)", "POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))", "intersects" )
geos_intersection()
returns the set of points common to both x
and y
.
geos_difference()
returns the set of points from x
that are
not contained by y
.
geos_sym_difference()
returns the set of points that are not
common to x
and y
.
geos_union()
returns the set of points contained by either x
or y
.
geos_shared_paths()
returns a GEOMETRYCOLLECTION containing two
MULTILINESTRINGS: the first containing paths in the same direction,
the second containing common paths in the opposite direction.
geos_snap()
snaps the vertices of x
within tolerance
of y
to y
.
geos_intersection(geom1, geom2) geos_difference(geom1, geom2) geos_sym_difference(geom1, geom2) geos_union(geom1, geom2) geos_intersection_prec(geom1, geom2, grid_size) geos_difference_prec(geom1, geom2, grid_size) geos_sym_difference_prec(geom1, geom2, grid_size) geos_union_prec(geom1, geom2, grid_size) geos_shared_paths(geom1, geom2) geos_snap(geom1, geom2, tolerance = .Machine$double.eps^2) geos_clearance_line_between(geom1, geom2, prepare = FALSE)
geos_intersection(geom1, geom2) geos_difference(geom1, geom2) geos_sym_difference(geom1, geom2) geos_union(geom1, geom2) geos_intersection_prec(geom1, geom2, grid_size) geos_difference_prec(geom1, geom2, grid_size) geos_sym_difference_prec(geom1, geom2, grid_size) geos_union_prec(geom1, geom2, grid_size) geos_shared_paths(geom1, geom2) geos_snap(geom1, geom2, tolerance = .Machine$double.eps^2) geos_clearance_line_between(geom1, geom2, prepare = FALSE)
geom1 , geom2
|
GEOS geometry vectors, recycled to a common length. |
grid_size |
For |
tolerance |
The maximum separation of vertices that should be considered equal. |
prepare |
Use prepared geometries to calculate clearance line |
A GEOS geometry vector along the recycled
length of geom1
and geom2
.
poly1 <- "POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))" poly2 <- "POLYGON ((5 5, 5 15, 15 15, 15 5, 5 5))" geos_intersection(poly1, poly2) geos_difference(poly1, poly2) geos_sym_difference(poly1, poly2) geos_union(poly1, poly2) line <- "LINESTRING (11 0, 11 10)" geos_snap(poly1, line, tolerance = 2) geos_shared_paths("LINESTRING (0 0, 1 1, 2 2)", "LINESTRING (3 3, 2 2, 1 1)")
poly1 <- "POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))" poly2 <- "POLYGON ((5 5, 5 15, 15 15, 15 5, 5 5))" geos_intersection(poly1, poly2) geos_difference(poly1, poly2) geos_sym_difference(poly1, poly2) geos_union(poly1, poly2) line <- "LINESTRING (11 0, 11 10)" geos_snap(poly1, line, tolerance = 2) geos_shared_paths("LINESTRING (0 0, 1 1, 2 2)", "LINESTRING (3 3, 2 2, 1 1)")
geos_is_valid()
returns a logical vector denoting if each feature
is a valid geometry.
geos_is_valid_detail()
returns a data frame with columns is_valid
(logical),
reason
(character), and location
(geos_geometry).
geos_is_valid(geom) geos_is_valid_detail(geom, allow_self_touching_ring_forming_hole = FALSE)
geos_is_valid(geom) geos_is_valid_detail(geom, allow_self_touching_ring_forming_hole = FALSE)
geom |
|
allow_self_touching_ring_forming_hole |
It's all in the name |
geos_is_valid( c( "POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))", "POLYGON ((0 0, 1 1, 1 0, 0 1, 0 0))" ) ) geos_is_valid_detail( c( "POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))", "POLYGON ((0 0, 1 1, 1 0, 0 1, 0 0))" ) )
geos_is_valid( c( "POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))", "POLYGON ((0 0, 1 1, 1 0, 0 1, 0 0))" ) ) geos_is_valid_detail( c( "POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))", "POLYGON ((0 0, 1 1, 1 0, 0 1, 0 0))" ) )
Circular approximations
geos_largest_empty_circle_spec(geom, boundary, tolerance) geos_largest_empty_crc(geom, boundary, tolerance) geos_minimum_bounding_circle(geom) geos_minimum_bounding_crc(geom) geos_maximum_inscribed_circle_spec(geom, tolerance) geos_maximum_inscribed_crc(geom, tolerance)
geos_largest_empty_circle_spec(geom, boundary, tolerance) geos_largest_empty_crc(geom, boundary, tolerance) geos_minimum_bounding_circle(geom) geos_minimum_bounding_crc(geom) geos_maximum_inscribed_circle_spec(geom, tolerance) geos_maximum_inscribed_crc(geom, tolerance)
geom |
|
boundary |
An outer boundary for the largest empty circle algorithm. |
tolerance |
Threshold for considering circles to be touching a boundary. |
These functions transform raw coordinates into point, line, polygon,
features, or nest a vector of geometries into a MULTI* type or
GEOMETRYCOLLECTION. See wk::wk_coords()
, geos_unnest()
, or
wk::wk_flatten()
to perform inverse operations; see wk::xy()
,
wk::wk_linestring()
, wk::wk_polygon()
, or wk::wk_collection()
for
generic versions that work with non-GEOS types.
geos_make_point(x, y, z = NA_real_, crs = NULL) geos_make_linestring(x, y, z = NA_real_, feature_id = 1L, crs = NULL) geos_make_polygon( x, y, z = NA_real_, feature_id = 1L, ring_id = 1L, crs = NULL ) geos_make_collection(geom, type_id = "geometrycollection", feature_id = 1L)
geos_make_point(x, y, z = NA_real_, crs = NULL) geos_make_linestring(x, y, z = NA_real_, feature_id = 1L, crs = NULL) geos_make_polygon( x, y, z = NA_real_, feature_id = 1L, ring_id = 1L, crs = NULL ) geos_make_collection(geom, type_id = "geometrycollection", feature_id = 1L)
x , y , z
|
Vectors of coordinate values |
crs |
An object that can be interpreted as a CRS. See |
feature_id , ring_id
|
Vectors for which a change in sequential values
indicates a new feature or ring. Use |
geom |
|
type_id |
The numeric type identifier for which an
empty should be returned, an object from which
one can be extracted using |
geos_make_point(1:3, 1:3) geos_make_linestring(1:3, 1:3) geos_make_polygon(c(0, 1, 0), c(0, 0, 1)) geos_make_collection("POINT (1 1)")
geos_make_point(1:3, 1:3) geos_make_linestring(1:3, 1:3) geos_make_polygon(c(0, 1, 0), c(0, 0, 1)) geos_make_collection("POINT (1 1)")
Finds the closest item index in tree
to geom
, vectorized along geom
.
geos_nearest(geom, tree) geos_nearest_indexed(geom, tree) geos_nearest_hausdorff(geom, tree, densify = NULL) geos_nearest_frechet(geom, tree, densify = NULL)
geos_nearest(geom, tree) geos_nearest_indexed(geom, tree) geos_nearest_hausdorff(geom, tree, densify = NULL) geos_nearest_frechet(geom, tree, densify = NULL)
geom |
|
tree |
|
densify |
A fraction between 0 and 1 denoting the degree to which edges should be subdivided (smaller value means more subdivisions). Use NULL to calculate the distance as-is. |
An integer vector of length geom
containing the index
of tree
that is closest to each feature in geom
.
Create polygons from noded edges
geos_polygonize(collection) geos_polygonize_valid(collection) geos_polygonize_cut_edges(collection) geos_polygonize_full(collection)
geos_polygonize(collection) geos_polygonize_valid(collection) geos_polygonize_cut_edges(collection) geos_polygonize_full(collection)
collection |
A GEOMETRYCOLLECTION or MULTILINESTRING of edges that meet at their endpoints. |
A GEOMETRYCOLLECTION of polygons
geos_polygonize("MULTILINESTRING ((0 0, 0 1), (0 1, 1 0), (1 0, 0 0))") geos_polygonize_valid("MULTILINESTRING ((0 0, 0 1), (0 1, 1 0), (1 0, 0 0))") geos_polygonize_cut_edges("MULTILINESTRING ((0 0, 0 1), (0 1, 1 0), (1 0, 0 0))")
geos_polygonize("MULTILINESTRING ((0 0, 0 1), (0 1, 1 0), (1 0, 0 0))") geos_polygonize_valid("MULTILINESTRING ((0 0, 0 1), (0 1, 1 0), (1 0, 0 0))") geos_polygonize_cut_edges("MULTILINESTRING ((0 0, 0 1), (0 1, 1 0), (1 0, 0 0))")
geos_project()
and geos_project_normalized()
return
the distance of point geom2
projected on geom1
from the origin
of geom1
, which must be a lineal geometry.
geos_interpolate()
performs an
inverse operation, returning the point along geom
representing
the given distance
from the origin along the geometry.
_normalized()
variants use a distance normalized to the
geos_length()
of the geometry.
geos_project(geom1, geom2) geos_project_normalized(geom1, geom2) geos_interpolate(geom, distance) geos_interpolate_normalized(geom, distance_normalized)
geos_project(geom1, geom2) geos_project_normalized(geom1, geom2) geos_interpolate(geom, distance) geos_interpolate_normalized(geom, distance_normalized)
geom1 , geom2
|
GEOS geometry vectors, recycled to a common length. |
geom |
|
distance |
Distance along the linestring to interpolate |
distance_normalized |
Distance along the linestring to interpolate relative to the length of the linestring. |
geos_interpolate("LINESTRING (0 0, 1 1)", 1) geos_interpolate_normalized("LINESTRING (0 0, 1 1)", 1) geos_project("LINESTRING (0 0, 10 10)", "POINT (5 5)") geos_project_normalized("LINESTRING (0 0, 10 10)", "POINT (5 5)")
geos_interpolate("LINESTRING (0 0, 1 1)", 1) geos_interpolate_normalized("LINESTRING (0 0, 1 1)", 1) geos_project("LINESTRING (0 0, 10 10)", "POINT (5 5)") geos_project_normalized("LINESTRING (0 0, 10 10)", "POINT (5 5)")
Read and write well-known text
geos_read_wkt(wkt, fix_structure = FALSE, crs = NULL) geos_write_wkt(geom, include_z = TRUE, precision = 16, trim = TRUE) geos_read_geojson(geojson, crs = NULL) geos_write_geojson(geom, indent = -1) geos_read_wkb(wkb, fix_structure = FALSE, crs = NULL) geos_write_wkb( geom, include_z = TRUE, include_srid = FALSE, endian = 1, flavor = c("extended", "iso") ) geos_read_hex(hex, fix_structure = FALSE, crs = NULL) geos_write_hex( geom, include_z = TRUE, include_srid = FALSE, endian = 1, flavor = c("extended", "iso") ) geos_read_xy(point) geos_write_xy(geom)
geos_read_wkt(wkt, fix_structure = FALSE, crs = NULL) geos_write_wkt(geom, include_z = TRUE, precision = 16, trim = TRUE) geos_read_geojson(geojson, crs = NULL) geos_write_geojson(geom, indent = -1) geos_read_wkb(wkb, fix_structure = FALSE, crs = NULL) geos_write_wkb( geom, include_z = TRUE, include_srid = FALSE, endian = 1, flavor = c("extended", "iso") ) geos_read_hex(hex, fix_structure = FALSE, crs = NULL) geos_write_hex( geom, include_z = TRUE, include_srid = FALSE, endian = 1, flavor = c("extended", "iso") ) geos_read_xy(point) geos_write_xy(geom)
wkt |
a |
fix_structure |
Set the reader to automatically repair structural errors in the input (currently just unclosed rings) while reading. |
crs |
An object that can be interpreted as a CRS. See |
geom |
|
include_z , include_srid
|
Include the values of the Z and M coordinates and/or
SRID in the output?
Use |
precision |
The number of significant digits to include iin WKT output. |
trim |
Trim unnecessary zeroes in the output? |
geojson |
A |
indent |
The number of spaces to use when indenting a formatted version of the output. Use -1 to indicate no formatting. |
wkb |
A |
endian |
0 for big endian or 1 for little endian. |
flavor |
One of "extended" (i.e., EWKB) or "iso". |
hex |
A hexidecimal representation of well-known binary |
point |
A |
geos_read_wkt("POINT (30 10)") geos_write_wkt(geos_read_wkt("POINT (30 10)"))
geos_read_wkt("POINT (30 10)") geos_write_wkt(geos_read_wkt("POINT (30 10)"))
See the Wikipedia entry on DE-9IM
for how to interpret pattern
, match
, and the result of geos_relate()
and/or geos_relate_pattern_create()
.
geos_relate(geom1, geom2, boundary_node_rule = "mod2") geos_relate_pattern(geom1, geom2, pattern, boundary_node_rule = "mod2") geos_relate_pattern_match(match, pattern) geos_relate_pattern_create( II = "*", IB = "*", IE = "*", BI = "*", BB = "*", BE = "*", EI = "*", EB = "*", EE = "*" )
geos_relate(geom1, geom2, boundary_node_rule = "mod2") geos_relate_pattern(geom1, geom2, pattern, boundary_node_rule = "mod2") geos_relate_pattern_match(match, pattern) geos_relate_pattern_create( II = "*", IB = "*", IE = "*", BI = "*", BB = "*", BE = "*", EI = "*", EB = "*", EE = "*" )
geom1 , geom2
|
GEOS geometry vectors, recycled to a common length. |
boundary_node_rule |
One of "mod2", "endpoint", "multivalent_endpoint", or "monovalent_endpoint". |
pattern , match
|
A character vector representing the match |
II , IB , IE , BI , BB , BE , EI , EB , EE
|
One of "0", "1", "2", "T", "F", or "*" describing the dimension of the intersection between the interior (I), boundary (B), and exterior (E). |
geos_relate_pattern_match("FF*FF1***", c(NA, "FF*FF****", "FF*FF***F")) geos_relate("POINT (0 0)", "POINT (0 0)") geos_relate_pattern("POINT (0 0)", "POINT (0 0)", "T********") geos_relate_pattern_create(II = "T")
geos_relate_pattern_match("FF*FF1***", c(NA, "FF*FF****", "FF*FF***F")) geos_relate("POINT (0 0)", "POINT (0 0)") geos_relate_pattern("POINT (0 0)", "POINT (0 0)", "T********") geos_relate_pattern_create(II = "T")
Segment operations
geos_segment_intersection(a, b) geos_orientation_index(a, point)
geos_segment_intersection(a, b) geos_orientation_index(a, point)
a , b
|
A |
point |
A |
geos_segment_intersection()
returns a list(x, y)
;
geos_orientation_index()
returns -1, 0 or 1, depending if
the point
lies to the right of (-1), is colinear with (0) or
lies to the left of (1) the segment (as judged from the start
of the segment looking towards the end).
geos_segment_intersection( list(0, 0, 10, 10), list(10, 0, 0, 10) ) geos_orientation_index( list(0, 0, 10, 10), list(15, c(12, 15, 17)) )
geos_segment_intersection( list(0, 0, 10, 10), list(10, 0, 0, 10) ) geos_orientation_index( list(0, 0, 10, 10), list(15, c(12, 15, 17)) )
Create a GEOS STRTree
geos_strtree(geom, node_capacity = 10L) geos_strtree_query(tree, geom) geos_strtree_data(tree) as_geos_strtree(x, ...) ## Default S3 method: as_geos_strtree(x, ...) ## S3 method for class 'geos_strtree' as_geos_strtree(x, ...) ## S3 method for class 'geos_geometry' as_geos_strtree(x, ...)
geos_strtree(geom, node_capacity = 10L) geos_strtree_query(tree, geom) geos_strtree_data(tree) as_geos_strtree(x, ...) ## Default S3 method: as_geos_strtree(x, ...) ## S3 method for class 'geos_strtree' as_geos_strtree(x, ...) ## S3 method for class 'geos_geometry' as_geos_strtree(x, ...)
geom |
|
node_capacity |
The maximum number of child nodes that a node may have. The minimum recommended capacity value is 4. If unsure, use a default node capacity of 10. |
tree |
|
x |
An object to convert to a |
... |
Unused |
A geos_str_tree object
Ths function flattens nested geometries (i.e., multi or
geometrycollection types) into a vector with the same or fewer levels of
nesting. See geos_geometry_n()
to access individual geometries within a
collection; see wk::wk_flatten()
for a version of this function that
works with non-GEOS geometries; see geos_make_collection()
and
wk::wk_collection()
for functions that perform the inverse operation.
geos_unnest(geom, keep_empty = FALSE, keep_multi = TRUE, max_depth = 1)
geos_unnest(geom, keep_empty = FALSE, keep_multi = TRUE, max_depth = 1)
geom |
|
keep_empty |
If |
keep_multi |
If |
max_depth |
The maximum recursive GEOMETRYCOLLECTION depth to unnest. |
A GEOS geometry vector, with a length
greater than or equal to geom
with an attribute "lengths"
that can be used to map elements of the result to the
original item.
geos_unnest("GEOMETRYCOLLECTION (POINT (1 2), POINT (3 4))")
geos_unnest("GEOMETRYCOLLECTION (POINT (1 2), POINT (3 4))")
GEOS version information
geos_version(runtime = TRUE)
geos_version(runtime = TRUE)
runtime |
Use FALSE to return the build-time GEOS version, which may be different than the runtime version if a different version of the libgeos package was used to build this package. |
geos_version() geos_version(runtime = FALSE) # check for a minimum version of GEOS geos_version() >= "3.8.1"
geos_version() geos_version(runtime = FALSE) # check for a minimum version of GEOS geos_version() >= "3.8.1"
Plot GEOS geometries
## S3 method for class 'geos_geometry' plot( x, ..., asp = 1, bbox = NULL, xlab = "", ylab = "", rule = "evenodd", add = FALSE, simplify = 1, crop = TRUE )
## S3 method for class 'geos_geometry' plot( x, ..., asp = 1, bbox = NULL, xlab = "", ylab = "", rule = "evenodd", add = FALSE, simplify = 1, crop = TRUE )
x |
|
... |
Passed to plotting functions for features: |
asp , xlab , ylab
|
Passed to |
bbox |
The limits of the plot as a |
rule |
The rule to use for filling polygons (see |
add |
Should a new plot be created, or should |
simplify |
A relative tolerance to use for simplification of geometries. Use 0 to disable simplification; use a higher number to make simplification coarser. |
crop |
Use |
The input, invisibly
plot(as_geos_geometry("LINESTRING (0 0, 1 1)")) plot(as_geos_geometry("POINT (0.5 0.4)"), add = TRUE)
plot(as_geos_geometry("LINESTRING (0 0, 1 1)")) plot(as_geos_geometry("POINT (0.5 0.4)"), add = TRUE)
Vctrs methods
vec_cast.geos_geometry(x, to, ...) vec_ptype2.geos_geometry(x, y, ...)
vec_cast.geos_geometry(x, to, ...) vec_ptype2.geos_geometry(x, y, ...)
x , y , to , ...
|
See |
Compatibility with the wk package
## S3 method for class 'geos_geometry' wk_handle(handleable, handler, ...) geos_geometry_writer() ## S3 method for class 'geos_geometry' wk_writer(handleable, ...)
## S3 method for class 'geos_geometry' wk_handle(handleable, handler, ...) geos_geometry_writer() ## S3 method for class 'geos_geometry' wk_writer(handleable, ...)
handleable |
A geometry vector (e.g., |
handler |
A wk_handler object. |
... |
Passed to the |
The result of the handler
library(wk) wk_handle(as_geos_geometry("POINT (1 2)"), wk::wkt_writer())
library(wk) wk_handle(as_geos_geometry("POINT (1 2)"), wk::wkt_writer())