geojson-geometries-lookup
⚡️ Fast geometry in geometry lookup for large GeoJSONs.
With this package you can perform the following operations (and more) on a given GeoJSON.
- Given a Point get all the Points intersecting it in the GeoJSON inheriting properties.
- Given a Point get all the Lines intersecting it in the GeoJSON inheriting properties.
- Given a Point get all the Polygons containing it in the GeoJSON inheriting properties.
- Given a Line get all the Lines containing it in the GeoJSON inheriting properties.
- Given a Polygon get all the Lines containing it in the GeoJSON inheriting properties.
- Given a Polygon get all the Polygons containing it in the GeoJSON inheriting properties.
Install
$ npm install --save geojson-geometries-lookup
Usage
const GeoJsonGeometriesLookup = require('geojson-geometries-lookup');
const geojson = {type: 'FeatureCollection',
features: [{
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [102.0, 0.5]
},
properties: {prop0: 'value0'}
}, {
type: 'Feature',
geometry: {
type: 'LineString',
coordinates: [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0]]
},
properties: {prop1: 'value1'}
}, {
type: 'Feature',
geometry: {
type: 'Polygon',
coordinates: [
[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]]
]
},
properties: {prop2: 'value2'}
}]
};
const glookup = new GeoJsonGeometriesLookup(geojson);
const point1 = {type: "Point", coordinates: [102.0, 0.5]};
glookup.getContainers(point1);
glookup.countContainers(point1);
glookup.getContainers(point1, {ignorePoints: true});
glookup.countContainers(point1, {ignorePoints: true});
const point2 = {type: "Point", coordinates: [101.0, 0.0]};
glookup.getContainers(point2);
glookup.getContainers(point2, {ignorePolygons: true});
glookup.hasContainers(point1, {ignorePoints: true, ignoreLines: true});
const poly1 = {
type: 'Polygon',
coordinates: [
[[100.0+0.25, 0.0+0.25], [101.0-0.25, 0.0+0.25], [101.0-0.25, 1.0-0.25], [100.0+0.25, 1.0-0.25], [100.0+0.25, 0.0+0.25]]
]
}
glookup.getContainers(poly1, {ignorePoints: true, ignoreLines: true});
API
new GeoJsonGeometriesLookup(geoJson, [options])
Create an instance of the GeoJSON lookup class.
Param | Type | Description |
---|
geoJson | Object | The GeoJSON for which create the lookup data. |
[options] | Object | Optional options. |
options.ignorePoints | boolean | If true the extractor will ignore geometries of type Point. |
options.ignoreLines | boolean | If true the extractor will ignore geometries of type LineString. |
options.ignorePolygon | boolean | If true the extractor will ignore geometries of type Polygon. |
geoJsonGeometriesLookup.forEachCotainer(geometry, [options]) ⇒ boolean
Iterate on each geometry that completely contains the geometry provided.
Kind: instance method of GeoJsonGeometriesLookup
Returns: boolean
- The number of geometries that completely contains the
geometry provided iterated. The interiors of both geometries must intersect and,
the interior and boundary of the secondary (geometry b) must not intersect
the exterior of the primary (geometry a).
Param | Type | Description |
---|
geometry | Object | The geometry of type Point, LineString or Polygon for which to check if a container exists. |
[options] | Object | Optional options. |
options.limit | boolean | If greater than 0 it will limit the number of results on which iterate. |
options.ignorePoints | boolean | If true will ignore geometries of type Point. |
options.ignoreLines | boolean | If true will ignore geometries of type LineString. |
options.ignorePolygon | boolean | If true will ignore geometries of type Polygon. |
geoJsonGeometriesLookup.getContainers(geometry, [options]) ⇒ Object
Gets the geometries that completely contains the geometry provided.
Kind: instance method of GeoJsonGeometriesLookup
Returns: Object
- A FatureCollection of geometries that completely contains
the geometry provided. The interiors of both geometries must intersect
and, the interior and boundary of the secondary (geometry b) must not
intersect the exterior of the primary (geometry a).
Param | Type | Description |
---|
geometry | Object | The geometry of type Point, LineString or Polygon for which to count containers. |
[options] | Object | Optional options. |
options.limit | boolean | If greater than 0 it will limit the number of results returned. |
options.ignorePoints | boolean | If true will ignore geometries of type Point. |
options.ignoreLines | boolean | If true will ignore geometries of type LineString. |
options.ignorePolygon | boolean | If true will ignore geometries of type Polygon. |
geoJsonGeometriesLookup.hasContainers(geometry, [options]) ⇒ boolean
Checks if there is at least one geometry that completely contains the
geometry provided.
Kind: instance method of GeoJsonGeometriesLookup
Returns: boolean
- True if there is at least one geometry that completely
contains the geometry provided. The interiors of both geometries must
intersect and, the interior and boundary of the secondary (geometry b)
must not intersect the exterior of the primary (geometry a).
Param | Type | Description |
---|
geometry | Object | The geometry of type Point, LineString or Polygon for which to check if a container exists. |
[options] | Object | Optional options. |
options.ignorePoints | boolean | If true will ignore geometries of type Point. |
options.ignoreLines | boolean | If true will ignore geometries of type LineString. |
options.ignorePolygon | boolean | If true will ignore geometries of type Polygon. |
geoJsonGeometriesLookup.countContainers(geometry, [options]) ⇒ number
Counts the number of geometries that completely contains the geometry provided.
Kind: instance method of GeoJsonGeometriesLookup
Returns: number
- The number of geometries that completely contains the
geometry provided. The interiors of both geometries must intersect and,
the interior and boundary of the secondary (geometry b) must not intersect
the exterior of the primary (geometry a).
Param | Type | Description |
---|
geometry | Object | The geometry of type Point, LineString or Polygon for which to count containers. |
[options] | Object | Optional options. |
options.limit | boolean | If greater than 0 it will stop counting when this number of containers has been found. |
options.ignorePoints | boolean | If true will ignore geometries of type Point. |
options.ignoreLines | boolean | If true will ignore geometries of type LineString. |
options.ignorePolygon | boolean | If true will ignore geometries of type Polygon. |
Authors
See also the list of contributors who participated in this project.
License
This project is licensed under the MIT License - see the LICENSE file for details.