1 つのマップの中で、異なるソースのデータを組み合わせることがあり、それらのソースで異なる座標系を使用していることがあります。マップで固有の座標系を使用し、そのマップで使われているフィーチャ ソースの座標系が異なる場合もあります。表示したり分析を行うためには、すべての位置が同じ座標系に変換されていることが重要です。
座標系は、空間参照システム(SRS)または、座標参照システム(CRS)とも呼ばれます。ここでは、略語の SRS を使用します。
Infrastructure Map Server では、3 種類の座標系をサポートしています。
MgCoordinateSystem オブジェクトは、座標系を表します。
任意のX-Y座標を地理座標、投影座標との間で変換することはできません。
マップ画層から MgMap オブジェクトから MgCoordinateSystem オブジェクトを作成するには、
マップ画層から 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);