世界測地系と日本測地系
測地系とは緯度経度を表すときの基準になるものです。
(詳しくはググってください)
普段GoogleMap等で目にするのは世界測地系ですが、まれに日本測地系を使用する場合があります。
今回その例に遭遇したので、変換方法をメモしておこうと思います。
ライブラリのインストール
使用するライブラリ→ Proj4J
// 測地系変換を実現するPROJライブラリ
implementation 'org.osgeo:proj4j:0.1.0'
測地系の変換
最後のconvertPoint
に変換後の緯度経度が入っています。
val crsFactory = CRSFactory()
// wgs84(世界測地系)
val wgs84 = crsFactory.createFromParameters(
null,
"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
// 日本測地系
val tokyo = crsFactory.createFromParameters(
null,
"+proj=longlat +ellps=bessel +towgs84=-146.336,506.832,680.254,0,0,0,0 +no_defs")
val transformFactory = CoordinateTransformFactory()
val transform: CoordinateTransform = transformFactory.createTransform(wgs84, tokyo)
// 変換したい緯度経度
val targetPoint = ProjCoordinate(lng, lat)
var convertPoint = ProjCoordinate()
convertPoint = transform.transform(targetPoint, convertPoint)