Skip to content

Use GSI's geoid model of Japan (GSIGEO2011) in Rust, Python and JavaScript — 国土地理院の日本のジオイドモデルを用いてジオイド高を計算する Rust、Python、JavaScript 用ライブラリ

License

Notifications You must be signed in to change notification settings

ciscorn/japan-geoid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

japan-geoid

Test Maturin codecov Crates.io Version PyPI - Version NPM Version

A library for calculating geoid heights in Japan using GSI's geoid model. It is implemented in Rust and additionally supports Python and JavaScript. The library contains geoid data based on GSIGEO2011 (gsigeo2011_ver2_2.asc), created with the permission: 「測量法に基づく国土地理院長承認(使用)R 5JHs 560」.

日本のジオイド高を計算するためライブラリです。Rust で実装されており、Python と JavaScript (Wasm) でも利用できます。国土地理院のジオイドモデル「日本のジオイド2011」を用いて、国土地理院による C++ のサンプルコードに準拠した補間計算を行います。本ライブラリには、日本のジオイド2011 v.2.2 (gsigeo2011_ver2_2.asc) を元にしたジオイドデータが同梱されています(測量法に基づく国土地理院長承認(使用)R 5JHs 560)。

License: MIT

本ライブラリは、国土地理院が提供するものではありません。

Python

Installation

pip install japan-geoid -U

Usage

from japan_geoid import load_embedded_gsigeo2011

# Load the embedded GSIGEO2011 model.
geoid = load_embedded_gsigeo2011()

# Calculate the geoid height.
(lng, lat) = (138.2839817085188, 37.12378643088312)
height = geoid.get_height(lng, lat)
print(f"{lng=} {lat=} {height=}")

# Returns NaN if the input is outside the domain.
geoid.get_height(10.0, 10.0)) # => nan

# The library also works with Numpy.
import numpy as np
geoid.get_heights(
    np.array([138.2839817085188, 141.36199967724426]),
    np.array([37.12378643088312, 43.06539278249951]),
)

Rust

Installation

cargo add japan-geoid

Usage

use japan_geoid::gsi::load_embedded_gsigeo2011;
use japan_geoid::Geoid;

fn main() {
    // Load the embedded GSIGEO2011 model.
    let geoid = load_embedded_gsigeo2011();

    // Calculate the geoid height.
    let (lng, lat) = (138.2839817085188, 37.12378643088312);
    let height = geoid.get_height(lng, lat);
    println!("Input: (lng: {lng}, lat: {lat}) -> Geoid height: {height}");

    // Returns NaN if the input is outside the domain.
    assert!(f64::is_nan(geoid.get_height(10.0, 10.0)))
}

JavaScript (Wasm) - Experimental

Installation

npm add japan-geoid

Usage

import init, { loadEmbeddedGSIGEO2011 } from "japan-geoid";

await init(); // load .wasm

const geoid = loadEmbeddedGSIGEO2011();

console.log(
  geoid.getHeight(138.2839817085188, 37.12378643088312)
); // => 39.47387115961899

console.log(
  geoid.getHeights(
    [138.2839817085188, 141.36199967724426],
    [37.12378643088312, 43.06539278249951]
  )
); // => Float64Array(2) [ 39.47387115961899, 31.90071200378531 ]

Build

wasm-pack build -t web

License

MIT License

測量法に基づく国土地理院長承認(使用)R 5JHs 560

Authors

Taku Fukada (@ciscorn)

About

Use GSI's geoid model of Japan (GSIGEO2011) in Rust, Python and JavaScript — 国土地理院の日本のジオイドモデルを用いてジオイド高を計算する Rust、Python、JavaScript 用ライブラリ

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published