Giter VIP home page Giter VIP logo

placekey-js's Introduction

@placekey/placekey

npm version

A JavaScript library for working with Placekeys.

The source code for this library can be found here, and documentation for the Placekey service API can be found here. The Placekey design specification is available here. The details in Placekey encoding is here. We welcome your feedback.

To install:

npm install @placekey/placekey

Or with yarn:

yarn add @placekey/placekey

Usage

Note: Be careful to note that like the H3 API, the placekey-js API use latitude, longitude order.

Failure to account of this order when interoperating with other geospatial software is a common source of errors, for more information see lon lat lon lat.

import {geoToPlacekey} from '@placekey/placekey';
const [lat, long] = [0.0, 0.0];
geoToPlacekey(lat, long); // => '@dvt-smp-tvz';
import {placekeyToGeo} from '@placekey/placekey';
placekeyToGeo('@qjk-m7r-whq'); // => [-46.0033934397115, -155.09988163615031]
import {placekeyToH3} from '@placekey/placekey';
placekeyToH3('@dpr-6q6-73q'); // => '8a734e64992ffff'
import {h3ToPlacekey} from '@placekey/placekey';
h3ToPlacekey('8a734e64992ffff');
('@dpr-6q6-73q');

An upper bound on the maximal distance in meters between two Placekeys based on the length of their shared prefix is provided by getPlacekeyPrefixDistanceDict().

{
  1: 12740000.0,
  2: 2777000.0,
  3: 1065000.0,
  4: 152400.0,
  5: 21770.0,
  6: 8227.0,
  7: 1176.0,
  8: 444.3,
  9: 63.47
}

Contributing

To build and test:

yarn bootstrap # install and build
yarn test # run tests

To run benchmarks:

yarn bench

PRs should include tests and, if necessary, documentation updates. To make sure non-trivial PRs will be accepted, consider opening an issue first and describe the changes you want to make before completing the work.

License and Attribution

Provided as open source under the Apache 2 license.

The placekey-js JavaScript library is provided and maintained by Unfolded, Inc.

Unfolded

placekey-js's People

Contributors

algunenano avatar dependabot[bot] avatar felixsafegraph avatar ibgreen avatar isaacbrodsky avatar nrabinowitz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

placekey-js's Issues

H3-Placekey round trip generating invalid results

We've discovered that converting a valid H3 Index to a Placekey and then converting it back generates an invalid H3 Index. Here's a test example:

import { h3ToPlacekey, placekeyToH3 } from '@placekey/placekey'
import { isValidCell } from "h3-js"

const h3Input = "847b59dffffffff"
const placekey = h3ToPlacekey(h3Input)
const h3Output = placekeyToH3(placekey)
console.log({
  validInput: isValidCell(h3Input),
  h3Input,
  placekey,
  h3Output,
  validOutput: isValidCell(h3Output),
})

Output:

{
  validInput: true,
  h3Input: '847b59dffffffff',
  placekey: '@ff7-swh-m49',
  h3Output: '8a7b59dffffffff',
  validOutput: false
}

Note that the output index is only different in the 2nd digit; 4 changes to an a.

We first discovered this using the Carto spatial library for Snowflake, which uses Placekey and H3 under the covers: https://docs.carto.com/data-and-analysis/analytics-toolbox-for-snowflake/sql-reference/placekey. The same bug exists there.

How to implement search using placekeys

I have explored the placekey code, docs, and postman collections, but I could not understand how can we do address matching or normalization using this library.

For example If I have a placekey, how can I get country, state, city, street, unit, and zip out of that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.