Coder Social home page Coder Social logo

javascript-sdk's Introduction

3D 空間 ID 共通ライブラリ

これは 3D 空間 ID の共通ライブラリの JavaScript 版のプロトタイプです。

概要

このライブラリは位置情報と空間 ID を相互変換したり操作するための共通ライブラリとして利用されるべき機能を提供します。

コンストラクタである Space() に対して、座標及び高度、または空間 ID を引数として渡して実行すると、空間オブジェクトを生成します。

空間オブジェクトは以下のプロパティを持っており、空間を移動するためのいくつかのメソッドも提供します。

  • 中心点の緯度及び経度
  • 高度
  • ズームレベル(分解能)
  • ZFXY(3次元タイル番号)
  • タイルハッシュ(3次元タイル番号をハッシュ化した値)

メソッドについては以下のリンク先をご参照ください。

https://github.com/spatial-id/spatial-object-model-specification#readme

インストール方法

$ npm install https://github.com/spatial-id/javascript-sdk -S

モジュールのロード

以下の方法でモジュールを読み込んでください。

import { Space } from '@spatial-id/javascript-sdk'

コンストラクタ

Space( input, zoom? )

新しい空間オブジェクトを返します。

引数

input

座標及び高度または空間 ID を以下のフォーマットで指定することができます。

  • LngLatWithAltitude: 緯度経度及び高度を含むオブジェクト。(例: { lng: number, lat: number, alt?: number }
  • ZFXYTile: ZFXY(3次元タイル番号)を示す文字列。(例: /15/6/2844/17952
  • TileHash: ZFXY をハッシュ化した値。(例: 100213200122640

zoom

ズームレベル(分解能)を整数で指定することができます。

この引数は省略も可能で、デフォルトは 25 です。

補助コンストラクタ

Space.boundingSpaceForGeometry( geometry, minZoom? )

geometry に渡された GeoJSON の Geometry オブジェクトに対して、最小分解能(ズームレベル)での空間IDを返す。 minZoom が指定している場合は、より少ない分解能(ズームレベル)の空間IDが作られるにしても、 minZoom での空間IDを返す。

Space.spacesForGeometry( geometry, zoom )

geometry に渡された GeoJSON の Geometry オブジェクトに対して、その Geometry と指定の zoom での分解能(ズームレベル)の空間IDの共通集合を配列として返す。

メソッド

このライブラリは Spatial Object Model を参照に実装しています。

Space のメソッドのドキュメンテーションは下記となります。

.center

  • 現在の空間オブジェクトの**点 (3Dの {lng: number, lat: number, alt: number} 型)

.alt

  • 現在の空間オブジェクトの最低高さ (floor)

.zoom

  • 現在の空間オブジェクトのズームレベル(分解能)

.zfxy

  • 現在の空間オブジェクトが表現している ZFXY を ZFXYTile 型 ({ z: number, f: number, x: number, y: number })

.id, .tilehash

  • 現在の空間オブジェクトが表現している ZFXY の tilehash の文字列

.zfxyStr

  • 現在の空間オブジェクトが表現している ZFXY を URL のパス型に変換したもの

.up(by?: number)

up

  • パラメータがない場合は、現在の空間オブジェクトのひとつ上の空間オブジェクトを返す
  • パラメータが指定されている場合は、その個数分の空間オブジェクトを配列で返す

.down(by?: number)

down

  • パラメータがない場合は現在の空間オブジェクトのひとつ下の空間オブジェクトを返す
  • パラメータが指定されている場合は、その個数分の空間オブジェクトを配列で返す

.north(by?: number), .east(by?: number), south(by?: number), .west(by?: number)

north

  • パラメータがない場合は、現在の空間オブジェクトの隣のオブジェクトを返す
  • パラメータが指定されている場合は、その個数分の空間オブジェクトを配列で返す

.move(by: Partial<Omit<ZFXYTile, 'z'>>)

  • 現在の空間オブジェクトから相対的な新しいオブジェクトを返す。 by は少なくとも x, y, f の一つ以上を含めてください
space.move({x: 1, y: 5, f: -1})

上記の例の場合では、返り値は西1マス、北5マス、下1マスにある空間オブジェクト

.surroundings()

surroundings

  • 現在の空間オブジェクトのまわりにあるすべての空間オブジェクトを配列で返す。

.parent(atZoom?: number)

  • 現在の空間オブジェクトから、分解能(ズームレベル)を atZoom のズームレベルまで下げる。デフォルトでは1段階下げます。

.children()

  • 現在の空間オブジェクトから、分解能(ズームレベル)を一つ上げて、そこに含まれるすべての空間オブジェクトを返す。

.contains()

  • 指定された緯度経度が、指定されたボクセル内に含まれるかどうかを判定して bool 値を返す。

.vertices3d()

  • 現在の空間オブジェクトの3Dバウンディングボックスを作る8点の座標を配列として返す。

javascript-sdk's People

Contributors

keichan34 avatar miya0001 avatar

Stargazers

shingo_takagi avatar  avatar Qifan Wu avatar HideBa avatar yuiseki avatar Hidenori avatar

Watchers

 avatar

javascript-sdk's Issues

APIの3次元対応について

お世話になっております。

NTTコミュニケーションズ 上原です。

弊社で本ライブラリを活用した実装を進めておりましたが、
1点念のための確認とご相談をさせていただきます。

static spacesForGeometry(geom: Geometry, zoom: number): Space[] {

ユースケース実証の中で緯度・経度・高度を引数に上記関数で空間IDを返す想定をして実装を進めておりましたが、
高度に関しては空間IDの変換が上記関数でサポートされておらず、ライブラリ利用者側で計算実装を行う仕様とお見受けしております。

上記の認識で相違ないかご確認をいただき、
相違なければ高度も含めて入力できるような関数の修正をご検討いただくようなご相談は可能そうでしょうか。

ご検討をよろしくお願いいたします。

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.