npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

geojson-slicer

v0.1.0

Published

slice a set of features to fit within a certain bounding box

Downloads

2

Readme

geojson-slicer

slice a given set of geojson features to fit within a certain bounding box

Installation

Use standard npm installation

npm install --save geojson-slicer

Usage

require the geojson-slicer function and call it with the required parameters

const slicer = require('geojson-slicer'),
    geoJsonObject = {
        type : 'FeatureCollection',
        features : [ ... ]
    },
    bounds = [0, 1, 2, 3];  // compare geobound-object inputs

let group = slicer(geoJsonObject, bounds, {
        cutFeatures : false
    }),
    cut = slicer(geoJsonObject, bounds);

// group and cut describe GeoJSON-FeatureCollections with the same features.
// group contains the original features provided in geoJsonObject
// cut contains the features cutted at the borders of the given bounds

Parameters

The slicer method accepts three parameters:

  • Feature(s) (required)
  • bounds (requried)
  • Options (optional)

Feature(s) (required)

This property describes the input of features. There are three different ways to pass features:

Pass a list of features
[{
    type : 'Feature',
    geometry : {
        type : 'Point',
        coordinates : [ ... ]
    },
    properties : { ... }
},{
    type : 'Feature',
    geometry : {
        type : 'LineString',
        coordinates : [ ... ]
    },
    properties : { ... }
}]
Pass a FeatureCollection
{
    type : 'FeatureCollection',
    features : [{
        type : 'Feature',
        geometry : {
            type : 'Point',
            coordinates : [ ... ]
        },
        properties : { ... }
    },{
        type : 'Feature',
        geometry : {
            type : 'LineString',
            coordinates : [ ... ]
        },
        properties : { ... }
    }]
}
Pass a single feature
{
    type : 'Feature',
    geometry : {
        type : 'LineString',
        coordinates : [ ... ]
    },
    properties : { ... }
}

Please note that the last way is only useful if you want to cut the privided feature by the borders.

bounds (requried)

Bounds the features should be sliced with. The format of the bounds need to be a valid input for a WGS84 bound object constructor call.

Options (optional)

You can pass additional options to control the behavior.

cutFeatures (default: true)

Cut Features to fit within bounds. If set to false, the complete feature is added instead of a part of the feature that lies within the given bounds.

filter (default: null)

Optional filter function to prevent a feature to be added to the sliced boundary. Input parameter of the passed function is the feature.

A boolean return value is expected:

  • true: apply a boundary check and add the feature if it lies within the boundary,
  • false: do not add this feature to the given bound, although it may lie within the boundary.

Passing no function applies the boundary check for each feature (same behavior than passing a function that returns true all the time).

Future Work

The following improvements are planned:

  • add tests
  • support Polygon with wholes
  • support MultiPoint, MultiLineString, MultiPolygon and GeometryCollection

Contribute

Feel free to add issues or pull requests. I'm glad for every kind of feedback!