免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 1856|回复: 4
收起左侧

[经验共享] 地理坐标和投影坐标转换程序,基于ArcGIS Engine

[复制链接]

155

主题

4871

铜板

3

好友

地信专家组

Rank: 14Rank: 14Rank: 14Rank: 14

积分
2288
发表于 2017-8-15 11:49 | 显示全部楼层 |阅读模式
通常需要将经纬度坐标与投影坐标相互转换,下面是一些源码,在ArcEngine中实现。

投影转经纬度
  1. private IPoint PRJtoGCS(double x, double y)  
  2.         {  
  3.           IPoint pPoint = new PointClass();  
  4.           pPoint.PutCoords(x, y);  
  5.           ISpatialReferenceFactory pSRF = new SpatialReferenceEnvironmentClass();  
  6.           pPoint.SpatialReference = pSRF.CreateProjectedCoordinateSystem(2428);  
  7.           pPoint.Project(pSRF.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Beijing1954));  
  8.           return pPoint;  
  9.         }
复制代码
其中,pPoint.SpatialReference = pSRF.CreateProjectedCoordinateSystem( 2428 );

这行代码是设置pPoint 的空间参考,也就是要转化的点的投影坐标。如果不知道投影坐标的话,转化会报异常。2428 为该投影的enum 值
pPoint.Project(pSRF.CreateGeographicCoordinateSystem(( int)esriSRGeoCSType.esriSRGeoCS_Beijing1954));

将该点的投影坐标转化为经纬度。

经纬度到投影
  1. private IPoint GCStoPRJ(IPoint pPoint, int GCSType,int PRJType)
  2.          {   
  3.              ISpatialReferenceFactory pSRF = new SpatialReferenceEnvironmentClass();   
  4.              pPoint.SpatialReference = pSRF.CreateGeographicCoordinateSystem(GCSType);   
  5.              pPoint.Project(pSRF.CreateProjectedCoordinateSystem(PRJType));   

  6.              return pPoint;  
  7.         }

  8. //同样的一个函数
复制代码
  1. private IPoint GCStoPRJ(IPoint pPoint)
  2. {
  3.             ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironment();
  4.             pPoint.SpatialReference = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Krasovsky1940);
  5.             IProjectedCoordinateSystem pProjectCoodinateSys = pSpatialReferenceFactory.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Xian1980_GK_Zone_17);
  6.             ISpatialReference pSpatialReference = (ISpatialReference)pProjectCoodinateSys;
  7.             pSpatialReference.SetDomain(17352988.066800, 18230892.557100, 2326007.173500, 3237311.062300);
  8.             pPoint.Project(pSpatialReference);
  9. }

  10. //球面坐标
  11. //esriSRGeoCS_WGS1984 4326 WGS 1984.
  12. //esriSRGeoCS_Beijing1954 4214 Beijing 1954.

  13. //平面坐标
  14. ////北京54六度带
  15. //esriSRProjCS_Beijing1954GK_13 21413 Beijing 1954 GK Zone 13.
  16. //esriSRProjCS_Beijing1954GK_14 21414 Beijing 1954 GK Zone 14.
  17. //esriSRProjCS_Beijing1954GK_15 21415 Beijing 1954 GK Zone 15.
  18. //esriSRProjCS_Beijing1954GK_16 21416 Beijing 1954 GK Zone 16.
  19. //esriSRProjCS_Beijing1954GK_17 21417 Beijing 1954 GK Zone 17.
  20. //esriSRProjCS_Beijing1954GK_18 21418 Beijing 1954 GK Zone 18.
  21. //esriSRProjCS_Beijing1954GK_19 21419 Beijing 1954 GK Zone 19.
  22. //esriSRProjCS_Beijing1954GK_20 21420 Beijing 1954 GK Zone 20.
  23. //esriSRProjCS_Beijing1954GK_21 21421 Beijing 1954 GK Zone 21.
  24. //esriSRProjCS_Beijing1954GK_22 21422 Beijing 1954 GK Zone 22.
  25. //esriSRProjCS_Beijing1954GK_23 21423 Beijing 1954 GK Zone 23.
  26. //esriSRProjCS_Beijing1954GK_13N 21473 Beijing 1954 GK Zone 13N.
  27. //esriSRProjCS_Beijing1954GK_14N 21474 Beijing 1954 GK Zone 14N.
  28. //esriSRProjCS_Beijing1954GK_15N 21475 Beijing 1954 GK Zone 15N.
  29. //esriSRProjCS_Beijing1954GK_16N 21476 Beijing 1954 GK Zone 16N.
  30. //esriSRProjCS_Beijing1954GK_17N 21477 Beijing 1954 GK Zone 17N.
  31. //esriSRProjCS_Beijing1954GK_18N 21478 Beijing 1954 GK Zone 18N.
  32. //esriSRProjCS_Beijing1954GK_19N 21479 Beijing 1954 GK Zone 19N.
  33. //esriSRProjCS_Beijing1954GK_20N 21480 Beijing 1954 GK Zone 20N.
  34. //esriSRProjCS_Beijing1954GK_21N 21481 Beijing 1954 GK Zone 21N.
  35. //esriSRProjCS_Beijing1954GK_22N 21482 Beijing 1954 GK Zone 22N.
  36. //esriSRProjCS_Beijing1954GK_23N 21483 Beijing 1954 GK Zone 23N.
  37. ////北京54三度带
  38. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_102E 2431 Beijing 1954 3 Degree GK CM 102E.
  39. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_105E 2432 Beijing 1954 3 Degree GK CM 105E.
  40. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_108E 2433 Beijing 1954 3 Degree GK CM 108E.
  41. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_111E 2434 Beijing 1954 3 Degree GK CM 111E.
  42. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_114E 2435 Beijing 1954 3 Degree GK CM 114E.
  43. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_117E 2436 Beijing 1954 3 Degree GK CM 117E.
  44. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_120E 2437 Beijing 1954 3 Degree GK CM 120E.
  45. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_123E 2438 Beijing 1954 3 Degree GK CM 123E.
  46. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_126E 2439 Beijing 1954 3 Degree GK CM 126E.
  47. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_129E 2440 Beijing 1954 3 Degree GK CM 129E.
  48. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_132E 2441 Beijing 1954 3 Degree GK CM 132E.
  49. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_135E 2442 Beijing 1954 3 Degree GK CM 135E.
  50. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_25 2401 Beijing 1954 3 Degree GK Zone 25.
  51. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_26 2402 Beijing 1954 3 Degree GK Zone 26.
  52. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_27 2403 Beijing 1954 3 Degree GK Zone 27.
  53. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_28 2404 Beijing 1954 3 Degree GK Zone 28.
  54. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_29 2405 Beijing 1954 3 Degree GK Zone 29.
  55. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_30 2406 Beijing 1954 3 Degree GK Zone 30.
  56. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_31 2407 Beijing 1954 3 Degree GK Zone 31.
  57. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_32 2408 Beijing 1954 3 Degree GK Zone 32.
  58. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_33 2409 Beijing 1954 3 Degree GK Zone 33.
  59. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_34 2410 Beijing 1954 3 Degree GK Zone 34.
  60. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_35 2411 Beijing 1954 3 Degree GK Zone 35.
  61. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_36 2412 Beijing 1954 3 Degree GK Zone 36.
  62. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_37 2413 Beijing 1954 3 Degree GK Zone 37.
  63. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_38 2414 Beijing 1954 3 Degree GK Zone 38.
  64. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_39 2415 Beijing 1954 3 Degree GK Zone 39.
  65. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_40 2416 Beijing 1954 3 Degree GK Zone 40.
  66. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_41 2417 Beijing 1954 3 Degree GK Zone 41.
  67. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_42 2418 Beijing 1954 3 Degree GK Zone 42.
  68. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_43 2419 Beijing 1954 3 Degree GK Zone 43.
  69. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_44 2420 Beijing 1954 3 Degree GK Zone 44.
  70. //esriSRProjCS_Beijing1954_3_Degree_GK_Zone_45 2421 Beijing 1954 3 Degree GK Zone 45.
  71. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_75E 2422 Beijing 1954 3 Degree GK CM 75E.
  72. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_78E 2423 Beijing 1954 3 Degree GK CM 78E.
  73. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_81E 2424 Beijing 1954 3 Degree GK CM 81E.
  74. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_84E 2425 Beijing 1954 3 Degree GK CM 84E.
  75. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_87E 2426 Beijing 1954 3 Degree GK CM 87E.
  76. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_90E 2427 Beijing 1954 3 Degree GK CM 90E.
  77. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_93E 2428 Beijing 1954 3 Degree GK CM 93E.
  78. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_96E 2429 Beijing 1954 3 Degree GK CM 96E.
  79. //esriSRProjCS_Beijing1954_3_Degree_GK_CM_99E 2430 Beijing 1954 3 Degree GK CM 99E.
复制代码

141

主题

982万

铜板

3万

好友

管理员

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
621916
发表于 2017-8-15 11:53 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

10

主题

1万

铜板

19

好友

资深会员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3722
发表于 2021-11-13 21:39 | 显示全部楼层
感谢分享!
回复

使用道具 举报

30

主题

2万

铜板

59

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
6290
QQ
发表于 2022-1-14 19:55 | 显示全部楼层
谢谢分享
回复

使用道具 举报

1

主题

1万

铜板

2

好友

黄金会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4853
发表于 2022-12-9 17:17 | 显示全部楼层
感谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表