0.0.6 • Published 4 years ago

geocoordarith v0.0.6

Weekly downloads
1
License
ISC
Repository
-
Last release
4 years ago

はじめに

Geocoordarithは経度緯度に基づいたさまざまな計算を行うためのライブラリです。

簡単な例

import { createLocation } from "geocoordarith/build/src/SimpleLocation"
import { getDistance, getMidpoint } from "geocoordarith/build/src/GeoCoords"

const TokyoStation = createLocation(35.681540, 139.767209)
const OsakaStation = createLocation(34.702776, 135.496090)
console.log(getDistance(TokyoStation, OsakaStation, 'km'))
// -> 403.5031624306115
const middle = getMidpoint(TokyoStation, OsakaStation))
console.log(middle.getLatitude(), middle.getLongitude())
// -> 35.21090841886774 137.61877971013595
// 注)長野県下伊那郡根羽村

インストール

最新版はnpmでインストールすることができます。

npm install geocoordarith

ドキュメント

GeoCoordinated

geocoordarithでの計算は経緯度を提供するインターフェースを実装するすべてのオブジェクトに対して行うことができます。

GeoCoordinatedインターフェースを実装するためには、緯度経度を度数法で与えるgetLatitude, getLongitudeと弧度法で与えるgetLatitudeInRad, getLongitudeInRadを実装する必要があります。

GeoCoordinatedインターフェースを実装するもっとも簡単なクラスはSimpleLocationです。ただ、new SimpleLocation(x, y)によってオブジェクトを作るのは推奨しません。代わりにcreateLocationでは、(度数法での)緯度経度で簡単にSimpleLocationオブジェクトを生成できます。

import { createLocation } from "geocoordarith/build/src/SimpleLocation"

const TokyoStation = createLocation(35.681540, 139.767209)

なお、new SimpleLocation(x, y)で直接オブジェクトを作る際には、自分で度数法と弧度法の変換に関する情報をunitconvを使って自分で実装する必要があります。

距離の計算

地球を半径6378.137KMの完全な球体と仮定して距離の計算を行うには、GeoCoords.getDistance関数を利用します。

/**
 * 地球を完全な球体と仮定して球面上の二点間の距離を計算する。
 * Returns the distance between x and y on the earth, assuming it is a perfect sphere.
 * @param x 
 * @param y 
 * @param unitName km, m, cm
 */
export declare function getDistance(x: GeoCoordinated, y: GeoCoordinated, unitName?: string): number;

unitNameは現在

  • km: キロメートル
  • m : メートル
  • cm: センチメートル

のみ対応しています。unitNameを指定しないときはメートルでの値を返します。

import { createLocation } from "geocoordarith/build/src/SimpleLocation"
import { getDistance } from "geocoordarith/build/src/GeoCoords"

const TokyoStation = createLocation(35.681540, 139.767209)
const OsakaStation = createLocation(34.702776, 135.496090)
console.log(getDistance(TokyoStation, OsakaStation, 'km'))
// -> 403.5031624306115

中点の計算

地球を半径6378.137KMの完全な球体と仮定して、二点の中点の計算を行うには、GeoCoords.getMidpoint関数を利用します。

/**
 * 地球を完全な球体と仮定して、二点の球面上の中点を求める。
 * Returns the midpoint between x and y on the earth, assuming it is a perfect sphere.
 * @param x 
 * @param y 
 */
export declare function getMidpoint(x: GeoCoordinated, y: GeoCoordinated): SimpleLocation;

import { createLocation } from "geocoordarith/build/src/SimpleLocation"
import { getMidpoint } from "geocoordarith/build/src/GeoCoords"

const TokyoStation = createLocation(35.681540, 139.767209)
const OsakaStation = createLocation(34.702776, 135.496090)
const middle = getMidpoint(TokyoStation, OsakaStation))
console.log(middle.getLatitude(), middle.getLongitude())
// -> 35.21090841886774 137.61877971013595
0.0.5

4 years ago

0.0.6

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago