Socket
Socket
Sign inDemoInstall

geojson-antimeridian-cut

Package Overview
Dependencies
1
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    geojson-antimeridian-cut

Splits GeoJSON Objects that cross the Antimeridian. See [RFC 7946 Section 3.1.9](https://tools.ietf.org/html/rfc7946#section-3.1.9)


Version published
Maintainers
1
Install size
1.17 MB
Created

Readme

Source

Geojson Antimeridian Cutting

GeoJSON is a standard for representing geographic data in a JSON file. Features and FeatureCollections are composed of different geometry objects, including:

  • LineStrings
  • MultiLineStrings
  • Polygons
  • MultiPolygons
  • GeometryCollections

It is very likely that some geographic data may cross the Antimeridian (180° E or 180° W). RFC 7946 Section 3.1.9 specifies that such objects SHOULD be broken up into two or more objects, none of which cross the antimeridian, and which together are all equivalent. This package implements that splitting.

The API currently provides one function: splitGeoJSON(object), which takes any valid GeoJSON object and, if it crosses the antimeridian, creates a new Object that is equivalent but does not cross the antimeridian. LineStrings may become MultiLineStrings, and MultiLineStrings will gain more entries. The same goes for Polygons and MultiPolygons.

All feature properties and object foreign members are preserved.

Example usage:

const splitGeoJSON = require('geojson-antimeridian-cut');

const lineString = {
  type: 'Polygon',
  coordinates: [
    [
      [170, 10],
      [170, -10],
      [-170, -10],
      [-170, 10],
      [170, 10],
    ],
  ],
};

console.log(splitGeoJSON(lineString));
/*
{
  "type": "MultiPolygon",
  "coordinates": [
    [
      [180, 10],
      [170, 10],
      [170, -10],
      [180, -10],
      [180, 10]
    ],
    [
      [-180, -10],
      [-170, -10],
      [-170, 10],
      [-180, 10],
      [-180, -10]
    ]
  ]
}
*/

const feature = {
  type: 'Feature',
  properties: {
    name: 'Anchorage to Tokyo',
  },
  geometry: {
    type: 'LineString',
    coordinates: [
      [-149.89, 61.23],
      [-220.29, 35.69],
    ],
  },
};

console.log(splitGeoJSON(feature));
/*
{
  "type": "Feature",
  "properties": {
    "name": "Anchorage to Tokyo"
  },
  "geometry": {
    "type": "MultiLineString",
    "coordinates": [
      [
        [-149.89, 61.23],
        [-180, 50.31]
      ],
      [
        [-180, 50.31],
        [-220.29, 35.69]
      ]
    ]
  }
}
*/

Keywords

FAQs

Last updated on 25 Jul 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc