測地系の変更(座標変換)

static void Main(string[] args)
 {
     //ESRI License Initializer generated code.
     m_AOLicenseInitializer.InitializeApplication(new esriLicenseProductCode[] { esriLicenseProductCode.esriLicenseProductCodeBasic },
     new esriLicenseExtensionCode[] { });
     //ESRI License Initializer generated code.


     Type t = Type.GetTypeFromProgID("esriGeometry.SpatialReferenceEnvironment");
     ISpatialReferenceFactory pSpatialReferenceFactory = (ISpatialReferenceFactory)Activator.CreateInstance(t);  //シングルトン

     //日本測地系
     ISpatialReference pGCS_Tokyo = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Tokyo);

     //日本測地系2000
     ISpatialReference pGCS_JGD2000 = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCS3Type.esriSRGeoCS_JapanGeodeticDatum2000);

     //地理座標系変換
     IGeoTransformation pGeo2000 = TKY2JGD2000();
     IGeoTransformation pGeo2011 = TKY2JGD2011();

     IPoint pPoint = new PointClass();
     Console.WriteLine("GCS_Tokyo:" + pPoint.X.ToString() + "," + pPoint.Y.ToString());

     pPoint.PutCoords(135,35);                   //元の座標値の設定
     pPoint.SpatialReference = pGCS_Tokyo;       //元の座標系の設定
     IGeometry2 pGeometry2 = (IGeometry2)pPoint;
     pGeometry2.ProjectEx(pGCS_JGD2000, esriTransformDirection.esriTransformForward, pGeo2000, false, 0, 0); //測地系の変換

     Console.WriteLine("GCS_JGD2000:" + pPoint.X.ToString() + "," + pPoint.Y.ToString());

     Console.ReadLine();



     //Do not make any call to ArcObjects after ShutDownApplication()
     m_AOLicenseInitializer.ShutdownApplication();
 }

 //TKY2JGD(測地成果2000)の作成
 static IGeoTransformation TKY2JGD2000()
 {

     IGridTransformation pGridTransformation = new NTv2TransformationClass();
     pGridTransformation.Name    = "Tokyo_To_JGD_2000_NTv2";
     pGridTransformation.GridDatasetName = "Dataset_japan/tky2jgd.gsb";
     pGridTransformation.Load();
     return pGridTransformation;
 }

 //TKY2JGD(測地成果2011)の作成
 static IGeoTransformation TKY2JGD2011()
 {

     IGridTransformation pGridTransformation = new NTv2TransformationClass();
     pGridTransformation.Name = "JGD_2000_To_JGD_2011_NTv2_1";
     pGridTransformation.GridDatasetName = "Dataset_japan/touhokutaiheiyouoki2011.gsb";
     pGridTransformation.Load();
     return pGridTransformation;
 }
' WGS84の図形をGCS_JGD2000に投影変換する。
' @param pTarget 投影変換する図形
' @return IGeometry 投影変換後の図形
Function Wgs84_to_Gcsjgd200(ByRef pTarget As IGeometry)
Dim pGeometry2 As IGeometry2
Dim pSpatialReferenceFactory As ISpatialReferenceFactory
Dim pGcsjgd2000 As ISpatialReference
Dim pGeotransformation As IGeoTransformation

Set pGeometry2 = pTarget

' GCS_JGD2000の投影法定義を作成
Set pSpatialReferenceFactory = New SpatialReferenceEnvironment
Set pGcsjgd2000 = pSpatialReferenceFactory.CreateGeographicCoordinateSystem(esriSRGeoCS_JapanGeodeticDatum2000)

' 地理座標系(測地基準系)を考慮するため、JGD2000 -> WGS84の変換方法を作成する
Set pGeotransformation = pSpatialReferenceFactory.CreateGeoTransformation(esriSRGeoTransformation_JGD_2000_To_WGS_1984)

' 地理座標系(測地基準系)を考慮した投影変換
pGeometry2.ProjectEx pGcsjgd2000, esriTransformReverse, pGeotransformation, False, 0, 0
End Function