# @treecg/geospatial-bucketizer

> Applies a geospatial fragmentation to LDES members

Latest version **2.1.9** (published 2023-10-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install @treecg/geospatial-bucketizer
pnpm add @treecg/geospatial-bucketizer
yarn add @treecg/geospatial-bucketizer
bun add @treecg/geospatial-bucketizer
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.9 |
| Published | 2023-10-30 |
| First published | 2021-11-22 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 7 |
| Unpacked size | 16 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Dwight Van Lancker |
| Maintainers | ajuvercr, woutslabbinck, ddvlanck, dexagod, pietercolpaert, hdlva, julianrojas87, brechtvdv, kasperzutterman |

## Links

- npm: https://www.npmjs.com/package/@treecg/geospatial-bucketizer
- Repository: https://github.com/TREEcg/bucketizers
- Homepage: https://github.com/TREEcg/bucketizers#readme
- Issues: https://github.com/TREEcg/bucketizers/issues
- npm.io page: https://npm.io/package/@treecg/geospatial-bucketizer

## Dependencies (7)

- [wkt](https://npm.io/package/wkt.md) ^0.1.1
- [winston](https://npm.io/package/winston.md) ^3.11.0
- [@turf/turf](https://npm.io/package/@turf/turf.md) ^6.5.0
- [slippy-bbox](https://npm.io/package/slippy-bbox.md) ^1.0.0
- [geojson-dissolve](https://npm.io/package/geojson-dissolve.md) ^3.1.0
- [@turf/bbox-polygon](https://npm.io/package/@turf/bbox-polygon.md) ^6.5.0
- [@treecg/bucketizer-core](https://npm.io/package/@treecg/bucketizer-core.md) ^1.1.9

## Recent versions

- 2.1.9 (latest) — 2023-10-30
- 2.1.8 — 2023-06-07
- 2.1.7 — 2023-05-08
- 2.1.6 — 2023-05-08
- 2.1.5 — 2023-03-07
- 2.1.4 — 2023-03-03
- 2.1.3 — 2023-03-03
- 2.1.2 — 2023-03-03
- 2.1.1 — 2023-02-28
- 2.1.0 — 2022-07-28
- 2.0.0 — 2022-06-17
- 2.0.0-alpha.1 — 2022-06-01
- 2.0.0-alpha.0 — 2022-05-31
- 1.1.3-alpha.0 — 2021-11-29
- 1.1.2-alpha.0 — 2021-11-29
- … 4 more at https://npm.io/package/@treecg/geospatial-bucketizer/versions

## README

# Geospatial Bucketizer
[![npm](https://img.shields.io/npm/v/@treecg/geospatial-bucketizer)](https://www.npmjs.com/package/@treecg/geospatial-bucketizer)

The purpose of the geospatial bucketizer is to apply a geospatial fragmentation to TREE members, based on a property path.

> An LDES bucketizer adds triples with the ldes bucket predicate (https://w3id.org/ldes#bucket)[https://w3id.org/ldes#bucket] to the array of quads representating an LDES member, indicating the bucket in which the member belongs.

The fragmentation strategy converts the geospatial string to a GeoJson object, which is used to determine in which tile(s) the LDES member is present and adds these values `{zoom}/{x}/{y}` to the bucket triples. **At the moment only wkt literals are supported**.
The hypermedia controls are stored in a map. There is a root, which contains relation to one or more intermediate root files, the columns (X). Each of these root files, then contains relation to the tiles that contain the actual LDES members

## Example

We assume the following LDES member on which we apply a geospatial fragmentation, using the property path `<http://www.w3.org/ns/dcat#bbox>` and zoom level set to 4.
```ttl
<http://example.ord/id/123@456> dct:created "2002-08-13T16:33:18+02:00"^^xsd:dateTime ;
          dct:isVersionOf <http://example.org/id/123> ;
          prov:generatedAtTime "2021-09-07T15:44:05.975Z"^^xsd:dateTime ;
          dcat:bbox "Polygon((-63.37716 45.97597,-71.05923 45.97597,-71.05923 41.65926,-63.37716 41.65926,-63.37716 45.97597))"^^gsp:wktLiteral ;
          rdfs:label "Random place" .
```

After passing through the bucketizer, the LDES member will have one or more triples:
```ttl
<http://example.ord/id/123@456> dct:created "2002-08-13T16:33:18+02:00"^^xsd:dateTime ;
          dct:isVersionOf <http://example.org/id/123> ;
          prov:generatedAtTime "2021-09-07T15:44:05.975Z"^^xsd:dateTime ;
          dcat:bbox "Polygon((-63.37716 45.97597,-71.05923 45.97597,-71.05923 41.65926,-63.37716 41.65926,-63.37716 45.97597))"^^gsp:wktLiteral ;
          rdfs:label "Random place" ;
          ldes:bucket "4/0/1", "4/0/2" .
```

## Install

```
> npm install @treecg/geospatial-bucketizer
```

## Usage

A bucketizer should always be used in combination with the LDES client. More information on how to setup an LDES client can be found [here](https://github.com/TREEcg/event-stream-client/tree/main/packages/actor-init-ldes-client). It is important to set the option in the LDES client to receive the LDES member as an array of quads: `representation: 'quads'`.

The bucketizer expects a valid property path.

```
import { GeospatialBucketizer } from '@treecg/geospatial-bucketizer';

const run = async (): Promise<void> => {
  const options = {...};
  const url = ...;
  const zoomLevel = ...;

  const bucketizer = await GeospatialBucketizer.build({propertyPath: '<http://www.w3.org/2000/01/rdf-schema#label>'}, zoomLevel);

  const ldes = LDESClient.createReadStream(url, options);
  ldes.on('data', (member) => {
    bucketizer.bucketize(member.quads, member.id)

    // Continue processing the member, but now the array of quads will have extra triples, the bucket triples
  });
}

run().catch(error => console.error(error.stack));
```

---
_Source: https://npm.io/package/@treecg/geospatial-bucketizer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
