pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/missinglink/s2js

GitHub - missinglink/s2js: Javascript port of the S2 Geometry library for the browser & nodejs · GitHub
Skip to content

missinglink/s2js

Repository files navigation

s2js

s2js is a Javascript port of the s2 spherical geometry library.

| github | npm | documentation | demo |

Installation

npm install s2js

Usage

The library is available as both ESM & CJS modules:

ESM

import { s2 } from 's2js'

CJS

const { s2 } = require('s2js')

CDN

<script type="module">
  import { s2 } from 'https://esm.sh/s2js'
</script>

Features

s2js is a full-featured JavaScript/TypeScript port of Google's S2 Geometry library. It supports:

Feature Supported? Notes
CellId, Cell Encoding, decoding, neighbors
Point, LatLng Spherical & Planar projections
Loop, Polygon Polygons, potentially with holes
Polyline Represents linear paths
RegionCoverer Cover regions (loops, polys) with S2 cells
GeoJSON <> S2 conversions Supports all GeoJSON geometry types
Polygon contains/intersects Point-in-polygon & shape intersection
Union, Intersection, Difference Basic boolean polygon operations
BigInt cell/token conversion Handles full 64-bit cell IDs
CellIndex, ClosestCellQuery Query a list of cells with various shapes
ClosestEdgeQuery Query the edges of 2 geometries

Feature Completeness

The library is essentially feature compatible with the Golang library: https://github.com/golang/geo

Typescript Support

The library is written in Typescript and exports type definitions.

GeoJSON support

The supplementary geojson module provides convenience functions for working with GeoJSON data in S2:

import { geojson } from 's2js'

const s2Polyline = geojson.fromGeoJSON({
  type: 'LineString',
  coordinates: [
    [102.0, 0.0],
    [103.0, 1.0],
    [104.0, 0.0],
    [105.0, 1.0]
  ]
})

The RegionCoverer supports all geometry types including multi-geometries:

const coverer = new geojson.RegionCoverer({ maxCells: 30 })

const union = coverer.covering({
  type: 'Polygon',
  coordinates: [
    [
      [100.0, 0.0],
      [101.0, 0.0],
      [101.0, 1.0],
      [100.0, 1.0],
      [100.0, 0.0]
    ]
  ]
})

Contributing

If you'd like to contribute a module please open an Issue to discuss.

Copyright

© 2024 Peter Johnson <github:missinglink>

This source code is published under the Apache-2.0 license.

Contributors

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy