https://github.com/ciscorn/japan-geoid
Use GSI's geoid model of Japan (GSIGEO2011) in Rust, Python and JavaScript — 国土地理院の日本のジオイドモデルを用いてジオイド高を計算する Rust、Python、JavaScript 用ライブラリ
https://github.com/ciscorn/japan-geoid
geo geodesy geoid gis japan projection python rust science
Last synced: 8 months ago
JSON representation
Use GSI's geoid model of Japan (GSIGEO2011) in Rust, Python and JavaScript — 国土地理院の日本のジオイドモデルを用いてジオイド高を計算する Rust、Python、JavaScript 用ライブラリ
- Host: GitHub
- URL: https://github.com/ciscorn/japan-geoid
- Owner: ciscorn
- License: mit
- Created: 2023-11-19T23:25:55.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-22T06:27:37.000Z (about 1 year ago)
- Last Synced: 2024-10-23T06:29:07.509Z (about 1 year ago)
- Topics: geo, geodesy, geoid, gis, japan, projection, python, rust, science
- Language: AGS Script
- Homepage: https://crates.io/crates/japan-geoid
- Size: 5.68 MB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# japan-geoid
[](https://github.com/ciscorn/japan-geoid/actions/workflows/test.yml)
[](https://github.com/ciscorn/japan-geoid/actions/workflows/maturin.yml)
[](https://codecov.io/gh/ciscorn/japan-geoid)
[](https://crates.io/crates/japan-geoid)
[](https://pypi.org/project/japan-geoid/)
[](https://www.npmjs.com/package/japan-geoid)
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](https://fgd.gsi.go.jp/download/geoid.php)」を用いて、国土地理院による C++ のサンプルコードに準拠した補間計算を行います。本ライブラリには、日本のジオイド2011 v.2.2 (`gsigeo2011_ver2_2.asc`) を元にしたジオイドデータが同梱されています(測量法に基づく国土地理院長承認(使用)R 5JHs 560)。
License: MIT
本ライブラリは、国土地理院が提供するものではありません。
## Python
### Installation
```
pip install japan-geoid -U
```
### Usage
```python
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
```rust
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
```javascript
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
```bash
wasm-pack build -t web
```
## License
MIT License
測量法に基づく国土地理院長承認(使用)R 5JHs 560
## Authors
Taku Fukada ([@ciscorn](https://github.com/ciscorn))