Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/SymbolixAU/boostgeometry
R package wrapping boost::geometry
https://github.com/SymbolixAU/boostgeometry
boost geospatial gis r well-known-text
Last synced: about 2 months ago
JSON representation
R package wrapping boost::geometry
- Host: GitHub
- URL: https://github.com/SymbolixAU/boostgeometry
- Owner: SymbolixAU
- Created: 2018-05-20T08:35:28.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-25T21:38:44.000Z (over 4 years ago)
- Last Synced: 2024-05-02T11:13:55.119Z (5 months ago)
- Topics: boost, geospatial, gis, r, well-known-text
- Language: C++
- Size: 1.42 MB
- Stars: 8
- Watchers: 1
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: README.Rmd
Awesome Lists containing this project
README
---
output: github_document
---[![Travis build status](https://travis-ci.org/SymbolixAU/boostgeometry.svg?branch=master)](https://travis-ci.org/SymbolixAU/boostgeometry)
[![Coverage status](https://codecov.io/gh/SymbolixAU/boostgeometry/branch/master/graph/badge.svg)](https://codecov.io/github/SymbolixAU/boostgeometry?branch=master)```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# boostgeometryR package wrapping v1.67.0 of boost::geometry
## Installation
Install the development version from [GitHub](https://github.com/SymbolixAU/boostgeometry) with:
```r
# install.packages("devtools")
devtools::install_github("SymbolixAU/boostgeometry")
```
## Examples### Area
```{r}
library(boostgeometry)
bg_area("POLYGON((0 0,0 1,1 1,1 0,0 0))")
bg_area("POLYGON((0 0,0 1,1 1,1 0,0 0))", strategy = "spherical")
bg_area("POLYGON((0 0,0 1,1 1,1 0,0 0))", strategy = "geographic")```
### Centroid
```{r}
wkt <- paste0("POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,",
"5.4 1.2,4.9 0.8,2.9 0.7,2 1.3),(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))")
bg_centroid(wkt)
```### Clear
```{r}
bg_clear("POLYGON((0 0,0 1,1 1,1 0,0 0))")
bg_clear("LINESTRING(0 0,1 1)")
bg_clear("MULTIPOINT(0 0,1 1)")
## points remain unchanged
bg_clear("POINT(0 0)")
```### Convex Hull
```{r}
polygon <- paste0("POLYGON((2.0 1.3, 2.4 1.7, 2.8 1.8, 3.4 1.2, 3.7 1.6,3.4 2.0,",
" 4.1 3.0, 5.3 2.6, 5.4 1.2, 4.9 0.8, 2.9 0.7,2.0 1.3))")
bg_convex_hull(polygon)
```### Correct
```{r}
bg_correct("POLYGON((0 0, 0 1, 1 1, 1 0))")
bg_correct("POLYGON((0 0, 0 1, 1 1, 1 0),(0.25 0.25, 0.25 0.75, 0.75 0.75, 0.75 0.25))")
```### Crosses
```{r}
x <- "LINESTRING(-1 -1, 0 0, 1 1)"
y <- c("LINESTRING(1 -1, 0 0, -1 1)", "LINESTRING(0 0, 1 1)", "LINESTRING(-1 1, 0 0, 1 -1)")
bg_crosses(x, y)
```### Densify
```{r}
bg_densify("POLYGON((0 0,0 10,10 10,10 0,0 0),(1 1,4 1,4 4,1 4,1 1))", distance = 6)
bg_densify("POLYGON((0 0,0 10,10 10,10 0,0 0),(1 1,4 1,4 4,1 4,1 1))", strategy = "spherical", distance = 0.06)
bg_densify("POLYGON((0 0,0 10,10 10,10 0,0 0),(1 1,4 1,4 4,1 4,1 1))", strategy = "geographic", distance = 60000)
```### Distance
```{r}
points <- c("POINT(0 0)", "POINT(2 0)", "POINT(2 2)")
bg_distance(points)
bg_distance(points, points)lines <- c("LINESTRING(1 1, 1 0, 1 -1)")
bg_distance(points, lines)
bg_distance(points, lines, "geographic")
```### Envelope (bounding box)
```{r}
polygon <- paste0("POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3",
" 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3), (4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))")
bg_envelope(polygon)bg_envelope("LINESTRING(144 -37, 145 -36)", "geographic")
```### Is empty / simple / valid
```{r}
bg_is_empty("MULTILINESTRING((0 0,0 10,10 0),(1 1,8 1,1 8))")
bg_is_simple("MULTILINESTRING((0 0,0 10,10 10,10 0,0 0),(10 10,20 20))")
bg_is_simple("LINESTRING(0 0,0 10,10 10,10 0,0 0)")
bg_is_valid("POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 2,0 0),(0 0,2 9,1 9,0 0),(2 9,9 2,9 9,2 9))")
bg_is_valid("POLYGON((0 0,0 10,10 10,10 0,0 0))")
```### Length
```{r}
bg_length("LINESTRING(0 0,1 1,4 8,3 2)")
bg_length("LINESTRING(0 0,1 1,4 8,3 2)", "geographic")
```### Number geometries / rings / points / segments
```{r}
bg_number_geometries("LINESTRING(0 0, 0 1, 1 1, 1 0, 0 0)")
bg_number_geometries("MULTIPOLYGON(((0 0,0 10,10 0,0 0),(1 1,1 9,9 1,1 1)),((10 10,10 7,7 10,10 10)))")
bg_number_interior_rings("POLYGON((0 0,0 10,10 0,0 0),(1 1,1 2,2 1,1 1),(3 3,3 4,4 3,3 3))")
bg_number_points("MULTIPOLYGON(((0 0,0 10,10 0,0 0),(1 1,1 9,9 1,1 1)),((10 10,10 7,7 10,10 10)))")
bg_number_segments("MULTIPOLYGON(((0 0,0 10,10 0),(1 1,8 1,1 8)),((10 10,10 20,20 10)))")
```### Perimeter
```{r}
polygon <- "POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))"
bg_perimeter(polygon)
bg_perimeter(polygon, "spherical")
bg_perimeter(polygon, "geographic")
```### Reverse
```{r}
bg_reverse("POLYGON((0 0,0 1,1 1,1 0,0 0))")
```### Simplify
```{r}
polygon <- "POLYGON((0 0, 0 0.2, 0.2 0.2, 0.2 0, 0.3 0, 0.3 0.2, 0.25, 0.5, 0.1 0.4, 0 0.2, 0 0))"
bg_simplify(polygon, distance = 0.2)
```### Unique
```{r}
bg_unique("LINESTRING(0 0,0 0,1 1,1 1,2 2)")
bg_unique("POLYGON((0 0,0 0,0 5,5 5,5 5,5 5,5 0,5 0,0 0,0 0,0 0,0 0))")
```### Within
```{r}
x <- c("POINT(0 0)", "LINESTRING(1 1,1 2)")
y <- c("POLYGON((-1 -1, -1 1, 1 1, 1 -1, -1 -1))", "LINESTRING(0 0, 1 1, 1 2, 2 2)",
"POLYGON((-2 -2, -2 2, 2 2, 2 -2, -2 -2))")
bg_within(x, y)
```