GISTools 地理情報処理ライブラリの主要機能と実装

GISTools は、地理情報システム(GIS)向けに設計されたオープンソースライブラリであり、座標変換、幾何計算、空間参照管理、GeoJSON 拡張などのコア機能を提供する。以下では、これらの機能を詳細に解説し、実際のコード例を交えて紹介する。

座標系変換機能

このライブラリは、WGS84(世界測地系)、GCJ-02(中国国家測地局による暗号化座標系)、BD-09(百度独自の座標系)間の相互変換をサポートしている。

主な変換メソッド

  • wgs84ToGcj02() / gcj02ToWgs84()
  • gcj02ToBd09() / bd09ToGcj02()
  • wgs84ToBd09() / bd09ToWgs84()

使用例

import gistools.geometry.*

func main() {
    let src = Point(x: 116.1211, y: 38.4564)
    let gcj = CoordinateTransformer.wgs84ToGcj02(src)
    let bd  = CoordinateTransformer.gcj02ToBd09(gcj)
    let rev = CoordinateTransformer.bd09ToWgs84(bd)

    print("GCJ-02: \(gcj)")
    print("BD-09 : \(bd)")
    print("復元  : \(rev)")
}

注意点

  • 変換アルゴリズムは中国国内の座標にのみ適用される
  • 複数回の往復変換により微小な誤差が蓄積される可能性がある
  • バッチ処理時はストリーム処理でパフォーマンスを最適化可能

幾何演算機能

ポイント、ライン、ポリゴンといった基本的なジオメトリ型をサポートし、面積や距離の計算を提供する。

ジオメトリ型の定義

abstract class Geometry {
    var srs: SpatialReference
    func toJson() -> JsonValue
}

面積計算メソッド

  • GeometryCalculator.mercatorArea(poly):Web メルカトル投影に基づく面積
  • GeometryCalculator.sphericalArea(poly):球面三角法による地球表面積
  • GeometryCalculator.planarArea(poly):平面直角座標系での面積

使用例

let poly = Polygon(
    rings: [[
        [116.1211, 38.4564],
        [116.1211, 38.4664],
        [116.1311, 38.4664],
        [116.1211, 38.4564]
    ]],
    srs: .wgs84
)

let area = GeometryCalculator.sphericalArea(poly)
print("面積: \(area) m²")

空間参照システム(SRS)管理

空間参照は SpatialReference クラスを通じて統一的に扱われる。

よく使われる SRS の作成

let wgs84 = SpatialReference.epsg(4326)
let webMercator = SpatialReference.epsg(3857)
let gcj02 = SpatialReference.custom(name: "GCJ-02", epsg: 4490)

WKID 照会

print(wgs84.wkid) // 出力: 4326

拡張 GeoJSON 形式

標準 GeoJSON に spatialReference フィールドを追加し、座標系情報を保持できるように拡張している。

拡張形式の例(Point)

{
  "geometry": {
    "type": "Point",
    "coordinates": [116.1211, 38.4564],
    "spatialReference": 4326
  }
}

対応 EPSG コード

EPSG名称用途
4326WGS84GPS 標準
3857Web MercatorWeb 地図
4490GCJ-02中国国内地図
4555BD-09百度地図

シリアライズ例

let pt = Point(x: 116.1211, y: 38.4564, srs: .wgs84)
print(pt.toJson())

プロジェクトは GitCode で公開されており、座標変換や空間解析を必要とする GIS アプリケーション開発に活用できる。
リポジトリ: https://gitcode.com/Cangjie-TPC/GISTools

タグ: GISTools 座標変換 GeoJSON 空間参照 WGS84

7月6日 19:09 投稿