地理座標和投影座標轉換程式,基於ArcGIS Engine
通常需要將經緯度座標與投影座標相互轉換,下面是一些原始碼,在ArcEngine中實現。
投影轉經緯度
private IPoint PRJtoGCS(double x, double y)
{
IPoint pPoint = new PointClass();
pPoint.PutCoords(x, y);
ISpatialReferenceFactory pSRF = new SpatialReferenceEnvironmentClass();
pPoint.SpatialReference = pSRF.CreateProjectedCoordinateSystem(2428);
pPoint.Project(pSRF.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Beijing1954));
return pPoint;
}
其中,pPoint.SpatialReference = pSRF.CreateProjectedCoordinateSystem( 2428 );
這行程式碼是設定pPoint 的空間參考,也就是要轉化的點的投影座標。如果不知道投影座標的話,轉化會報異常。2428 為該投影的enum 值
pPoint.Project(pSRF.CreateGeographicCoordinateSystem(( int)esriSRGeoCSType.esriSRGeoCS_Beijing1954));
將該點的投影座標轉化為經緯度。
經緯度到投影
private IPoint GCStoPRJ(IPoint pPoint, int GCSType,int PRJType)
{
ISpatialReferenceFactory pSRF = new SpatialReferenceEnvironmentClass();
pPoint.SpatialReference = pSRF.CreateGeographicCoordinateSystem(GCSType);
pPoint.Project(pSRF.CreateProjectedCoordinateSystem(PRJType));
return pPoint;
}
//同樣的一個函式
private IPoint GCStoPRJ(IPoint pPoint)
{
ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironment();
pPoint.SpatialReference = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Krasovsky1940);
IProjectedCoordinateSystem pProjectCoodinateSys = pSpatialReferenceFactory.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Xian1980_GK_Zone_17);
ISpatialReference pSpatialReference = (ISpatialReference)pProjectCoodinateSys;
pSpatialReference.SetDomain(17352988.066800, 18230892.557100, 2326007.173500, 3237311.062300);
pPoint.Project(pSpatialReference);
}
//球面座標
//esriSRGeoCS_WGS1984 4326 WGS 1984.
//esriSRGeoCS_Beijing1954 4214 Beijing 1954.
//平面座標
////北京54六度帶
//esriSRProjCS_Beijing1954GK_13 21413 Beijing 1954 GK Zone 13.
//esriSRProjCS_Beijing1954GK_14 21414 Beijing 1954 GK Zone 14.
//esriSRProjCS_Beijing1954GK_15 21415 Beijing 1954 GK Zone 15.
//esriSRProjCS_Beijing1954GK_16 21416 Beijing 1954 GK Zone 16.
//esriSRProjCS_Beijing1954GK_17 21417 Beijing 1954 GK Zone 17.
//esriSRProjCS_Beijing1954GK_18 21418 Beijing 1954 GK Zone 18.
//esriSRProjCS_Beijing1954GK_19 21419 Beijing 1954 GK Zone 19.
//esriSRProjCS_Beijing1954GK_20 21420 Beijing 1954 GK Zone 20.
//esriSRProjCS_Beijing1954GK_21 21421 Beijing 1954 GK Zone 21.
//esriSRProjCS_Beijing1954GK_22 21422 Beijing 1954 GK Zone 22.
//esriSRProjCS_Beijing1954GK_23 21423 Beijing 1954 GK Zone 23.
//esriSRProjCS_Beijing1954GK_13N 21473 Beijing 1954 GK Zone 13N.
//esriSRProjCS_Beijing1954GK_14N 21474 Beijing 1954 GK Zone 14N.
//esriSRProjCS_Beijing1954GK_15N 21475 Beijing 1954 GK Zone 15N.
//esriSRProjCS_Beijing1954GK_16N 21476 Beijing 1954 GK Zone 16N.
//esriSRProjCS_Beijing1954GK_17N 21477 Beijing 1954 GK Zone 17N.
//esriSRProjCS_Beijing1954GK_18N 21478 Beijing 1954 GK Zone 18N.
//esriSRProjCS_Beijing1954GK_19N 21479 Beijing 1954 GK Zone 19N.
//esriSRProjCS_Beijing1954GK_20N 21480 Beijing 1954 GK Zone 20N.
//esriSRProjCS_Beijing1954GK_21N 21481 Beijing 1954 GK Zone 21N.
//esriSRProjCS_Beijing1954GK_22N 21482 Beijing 1954 GK Zone 22N.
//esriSRProjCS_Beijing1954GK_23N 21483 Beijing 1954 GK Zone 23N.
////北京54三度帶
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_102E 2431 Beijing 1954 3 Degree GK CM 102E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_105E 2432 Beijing 1954 3 Degree GK CM 105E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_108E 2433 Beijing 1954 3 Degree GK CM 108E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_111E 2434 Beijing 1954 3 Degree GK CM 111E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_114E 2435 Beijing 1954 3 Degree GK CM 114E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_117E 2436 Beijing 1954 3 Degree GK CM 117E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_120E 2437 Beijing 1954 3 Degree GK CM 120E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_123E 2438 Beijing 1954 3 Degree GK CM 123E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_126E 2439 Beijing 1954 3 Degree GK CM 126E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_129E 2440 Beijing 1954 3 Degree GK CM 129E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_132E 2441 Beijing 1954 3 Degree GK CM 132E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_135E 2442 Beijing 1954 3 Degree GK CM 135E.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_25 2401 Beijing 1954 3 Degree GK Zone 25.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_26 2402 Beijing 1954 3 Degree GK Zone 26.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_27 2403 Beijing 1954 3 Degree GK Zone 27.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_28 2404 Beijing 1954 3 Degree GK Zone 28.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_29 2405 Beijing 1954 3 Degree GK Zone 29.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_30 2406 Beijing 1954 3 Degree GK Zone 30.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_31 2407 Beijing 1954 3 Degree GK Zone 31.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_32 2408 Beijing 1954 3 Degree GK Zone 32.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_33 2409 Beijing 1954 3 Degree GK Zone 33.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_34 2410 Beijing 1954 3 Degree GK Zone 34.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_35 2411 Beijing 1954 3 Degree GK Zone 35.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_36 2412 Beijing 1954 3 Degree GK Zone 36.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_37 2413 Beijing 1954 3 Degree GK Zone 37.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_38 2414 Beijing 1954 3 Degree GK Zone 38.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_39 2415 Beijing 1954 3 Degree GK Zone 39.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_40 2416 Beijing 1954 3 Degree GK Zone 40.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_41 2417 Beijing 1954 3 Degree GK Zone 41.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_42 2418 Beijing 1954 3 Degree GK Zone 42.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_43 2419 Beijing 1954 3 Degree GK Zone 43.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_44 2420 Beijing 1954 3 Degree GK Zone 44.
//esriSRProjCS_Beijing1954_3_Degree_GK_Zone_45 2421 Beijing 1954 3 Degree GK Zone 45.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_75E 2422 Beijing 1954 3 Degree GK CM 75E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_78E 2423 Beijing 1954 3 Degree GK CM 78E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_81E 2424 Beijing 1954 3 Degree GK CM 81E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_84E 2425 Beijing 1954 3 Degree GK CM 84E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_87E 2426 Beijing 1954 3 Degree GK CM 87E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_90E 2427 Beijing 1954 3 Degree GK CM 90E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_93E 2428 Beijing 1954 3 Degree GK CM 93E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_96E 2429 Beijing 1954 3 Degree GK CM 96E.
//esriSRProjCS_Beijing1954_3_Degree_GK_CM_99E 2430 Beijing 1954 3 Degree GK CM 99E.
如果親覺得我們的文章還不錯的話,那就請分享轉發一下吧!