知識を追加する方法

座標系

    目次
    No headers

    1 つのマップの中で、異なるソースのデータを組み合わせることがあり、それらのソースで異なる座標系を使用していることがあります。マップで固有の座標系を使用し、そのマップで使われているフィーチャ ソースの座標系が異なる場合もあります。表示したり分析を行うためには、すべての位置が同じ座標系に変換されていることが重要です。

    注:

    座標系は、空間参照システム(SRS)または、座標参照システム(CRS)とも呼ばれます。ここでは、略語の SRS を使用します。

    Infrastructure Map Server では、3 種類の座標系をサポートしています。

    • 任意のX-Y座標
    • 地理座標、または緯度/経度
    • 投影座標

    MgCoordinateSystem オブジェクトは、座標系を表します。

    注:

    任意のX-Y座標を地理座標、投影座標との間で変換することはできません。

    マップ画層から MgMap オブジェクトから MgCoordinateSystem オブジェクトを作成するには、

    • MgMap::GetMapSRS() を使用して、マップ座標系の WKT 表現を取得します。
    • WKT から MgCoordinateSystemFactory::Create() を使用して、MgCoordinateSystem オブジェクトを作成します。

    マップ画層から MgCoordinateSystem オブジェクトを作成するには、

    • 画層のフィーチャ ソースを取得します。
    • フィーチャ ソースのアクティブな空間コンテキストを取得します。
    • 空間コンテキストを WKT に変換します。
    • WKT から MgCoordinateSystem オブジェクトを作成します。

    ジオメトリをある座標系から別の座標系に変換するには、MgCoordinateSystemFactory オブジェクトおよび該当の 2 つの座標系を使用して、MgCoordinateSystemTransform オブジェクトを作成します。この変換を MgGeometry オブジェクトに適用します。

    たとえば、ある座標系を使用した画層上にフィーチャを表現するジオメトリがあり、それを別の座標系を使用した画層上のフィーチャと比較する場合には、次の手順を実行します。

    $featureSource1 = $layer1->GetFeatureSourceId();
    $contexts1 = $featureService->GetSpatialContexts(
        $featureSource1, true);
    $contexts1->ReadNext();
    $srs1 = $contexts1->GetCoordinateSystemWkt();
     
    $featureSource2 = $layer2->GetFeatureSourceId();
    $contexts2 = $featureService->GetSpatialContexts(
        $featureSource2, true);
    $contexts2->ReadNext();
    $srs2 = $contexts2->GetCoordinateSystemWkt();
     
    $coordSysFactory = new MgCoordinateSystemFactory();
    $xform = $coordSysFactory->GetTransform($srs1, $srs2);
    $geometry1xform = $geometry1->Transform($xform);