#japan #geodesy #gsi #model #gis #python #geoid

japan-geoid

Calculates geoid heights for Japan using GSI's geoid model

2 releases

0.4.1 Aug 14, 2024
0.4.0 Jan 21, 2024
0.3.2 Jan 20, 2024
0.2.1 Jan 19, 2024

#59 in Geospatial

41 downloads per month

MIT license

385KB
353 lines

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
python patch_esm.py

License

MIT License

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

Authors

Dependencies