🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

geojson-antimeridian-cut

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

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)

latest
Source
npmnpm
Version
0.1.0
Version published
Weekly downloads
40K
-16.17%
Maintainers
1
Weekly downloads
 
Created
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

geojson

FAQs

Package last updated on 25 Jul 2019

Did you know?

Socket

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