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: 2 months ago
JSON representation

R package wrapping boost::geometry

Lists

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%"
)
```
# boostgeometry

R 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)
```