PIE SDK Geometry的座標轉換

1. 基於SpatialReference對象的座標轉換

1.1 示例簡介

    Geometry類是全部幾何形體對象的父類,它是一個抽象類,IGeometry接口定義了全部的幾何對象都有的方法和屬性。數組

    下面介紹基於Geometry對象的座標轉換的主要接口。函數

Transform方法

函數原型:spa

bool Transform(ISpatialReference spatialReference);code

bool Transform(CoordinateTransformation coordTransform);orm

函數說明:視頻

    該方法用於幾何體的投影轉換,當參數爲座標轉換對象時投影轉換過程當中會忽略原來的空間參考。對象

參數說明:blog

名稱教程

說明接口

spatialReference

空間參考對象

coordTransform

座標轉換對象

返回值

投影轉換成功時爲true,不然爲false

1.2 示例代碼

項目路徑

百度雲盤地址下/PIE示例程序/SpatialReference. CoordinateTransform

視頻路徑

百度雲盤地址下/PIE視頻教程/ Geometry的座標轉換avi

示例代碼

 1  private void GeometryTest()
 2  {
 3    // 空間參考WKT字符串
 4 string str_BJ54 = "GEOGCS[\"GCS_Beijing_1954\",DATUM[\"D_Beijing_1954\",
 5 SPHEROID[\"Krasovsky_1940\",6378245,298.3]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",
 6 0.017453292519943295]]";
string str_BJ54_18 = "PROJCS[\"Beijing_1954_GK_Zone_18\",GEOGCS[\"GCS_Beijing_1954\",
 8 DATUM[\"D_Beijing_1954\",
 9 SPHEROID[\"Krasovsky_1940\",6378245,298.3]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",
10 0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",
11 18500000],PARAMETER[\"False_Northing\",0],PARAMETER[\"Central_Meridian\",105],PARAMETER
12 [\"Scale_Factor\",1],PARAMETER[\"Latitude_Of_Origin\",0],UNIT[\"Meter\",1]]";
13 
14 ISpatialReference spatialReference1 = new GeographicCoordinateSystem();
15 spatialReference1.ImportFromWkt(str_BJ54);
1  ISpatialReference spatialReference2 = new ProjectedCoordinateSystem();
17 spatialReference2.ImportFromWkt(str_BJ54_18);
18 
19   // 定義點
20   IPoint point = new PIE.Geometry.Point();
21   point.PutCoords(104, 45, 0.0);
22 
23   // 設置空間參考
24   IGeometry geo = point as IGeometry;
25   geo.SpatialReference = spatialReference1;
26 
27   // 空間參考變換
28   geo.Transform(spatialReference2);
29  }

2. 基於CoordinateTransformation對象的座標轉換

2.1 示例簡介

    同一個地圖上顯示的地理數據的空間參考必須是一致的,所以須要實現空間座標系的相互轉換。ICoordinateTransformation接口主要實現了獲取源座標系統和目標座標系統、實現座標轉換的方法。

    下面對基於CoordinateTransformation對象的座標轉換的方法進行介紹。

TransformEx方法

函數原型:

       bool TransformEx(int count, array<double>pX, array<double>pY,  array<double> pZ, array<int> pSuccess);

函數說明:

    該方法用於座標系統的座標轉換。

參數說明:

名稱

說明

count

要轉換的個數

pX

X座標

pY

Y座標

pZ

Z座標

pSuccess

轉換結果數組

返回值

座標轉換是否成功,轉換成功返回1,不然返回0

2.2 示例代碼

示例代碼

 1   private void CoordinateTransformationTest()
 2         {
 3             // 空間參考WKT字符串
 4             string str_BJ54 = "GEOGCS[\"GCS_Beijing_1954\",DATUM[\"D_Beijing_1954\",
 5 SPHEROID[\"Krasovsky_1940\",6378245,298.3]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",
 6 0.017453292519943295]]";
 7             string str_BJ54_18 = "PROJCS[\"Beijing_1954_GK_Zone_18\",GEOGCS[\"GCS_Beijing_1954\",
 8 DATUM[\"D_Beijing_1954\",
 9 SPHEROID[\"Krasovsky_1940\",6378245,298.3]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",
10 0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",
11 18500000],PARAMETER[\"False_Northing\",0],PARAMETER[\"Central_Meridian\",105],PARAMETER
12 [\"Scale_Factor\",1],PARAMETER[\"Latitude_Of_Origin\",0],UNIT[\"Meter\",1]]";
13 
14             // 生成空間參考對象
15  ISpatialReference spatialReference1 = SpatialReferenceFactory.CreateSpatialReference(str_BJ54);
16  ISpatialReference spatialReference2 = SpatialReferenceFactory.CreateSpatialReference(str_BJ54_18);
17 
18             // 座標轉換
19             int count = 3;
20             double[] px = new double[] { 104, 105, 106 };
21             double[] py = new double[] { 45, 46, 47 };
22             double[] pz = new double[] { 0, 0, 0 };
23             int[] pSuccess = new int[3];
24 CoordinateTransformation coordTF = new CoordinateTransformation(spatialReference1, spatialReference2);
25 coordTF.TransformEx(count, px, py, null, pSuccess);
26         }
相關文章
相關標籤/搜索