加载中…
个人资料
樱木
樱木
  • 博客等级:
  • 博客积分:0
  • 博客访问:69,084
  • 关注人气:10
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

几何对象和空间坐标系(转载)

(2015-05-01 20:28:15)
标签:

杂谈

分类: ArcEngine

 空间数据都有一个坐标系统(即地理坐标系统或投影坐标系统),它定义了空间数据在地球上的位置。一幅地图上显示的空间数据地理坐标系是一致的,否则会造成数据无法正确拼合。

  地理坐标系统也称为真实世界的坐标系,是确定地物在地球上位置的坐标系,以经纬度作为地图的存储单位。

  投影坐标系统是将三纬地理坐标系统上的经纬网投影到二纬平面地图上使用的坐标系统,因此地理信息系统必须要考虑地图投影,地图投影的使用保证了空间信息在地域上的联系和完整性,在各类地理信息系统的建设过程中,都要考虑选择何种地里投影系统。

   Arc Engine提供了3种组件:ProjectedCoordinateSystem、GeographicCoordinateSystem和SpatialReferenceEnvironmentClass,这些组件可以用于自定义坐标系统。

 //改变一个图层的空间参考
             ESRI.ArcGIS.Carto.IFeatureLayer player;

             player = axMapControl1.Map.get_Layer(0) as ESRI.ArcGIS.Carto.IFeatureLayer;
             ESRI.ArcGIS.Geodatabase.IFeatureClass pFeatureClass;
             pFeatureClass = player.FeatureClass;
             ESRI.ArcGIS.Geodatabase.IDataset pGeoDataset;
             pGeoDataset = pFeatureClass as ESRI.ArcGIS.Geodatabase.IDataset;
             ESRI.ArcGIS.Geodatabase.IGeoDatasetSchemaEdit pGeoDatasetEdit;
             pGeoDatasetEdit = pGeoDataset as ESRI.ArcGIS.Geodatabase.IGeoDatasetSchemaEdit;
             if (pGeoDatasetEdit.CanAlterSpatialReference == true)
             {
                 ESRI.ArcGIS.Geometry.ISpatialReferenceFactory2 pSpatRefFact;
                 pSpatRefFact = new ESRI.ArcGIS.Geometry.SpatialReferenceEnvironmentClass();
                 ESRI.ArcGIS.Geometry.IGeographicCoordinateSystem pGeoSys;
                 pGeoSys = pSpatRefFact.CreateGeographicCoordinateSystem(4214);
                 pGeoDatasetEdit.AlterSpatialReference(pGeoSys);
             }
           pActiveView.Refresh();

 

      //得到一个图层的空间参考
             ESRI.ArcGIS.Carto.IFeatureLayer player;

             player = axMapControl1.Map.get_Layer(0) as ESRI.ArcGIS.Carto.IFeatureLayer;
           
             ESRI.ArcGIS.Geodatabase.IGeoDataset pGeoDataset;
             pGeoDataset = player as ESRI.ArcGIS.Geodatabase.IGeoDataset;

             ESRI.ArcGIS.Geometry.ISpatialReference pSpat;
             pSpat =pGeoDataset.SpatialReference;
             MessageBox.Show(pSpat.Name)

 

   //设置一个地图的空间参考,使用一个空间参考对话框
             IProjectedCoordinateSystem pSpaticalReference;
             ESRI.ArcGIS.CatalogUI.ISpatialReferenceDialog pDialog;
             pDialog = new ESRI.ArcGIS.CatalogUI.SpatialReferenceDialogClass();
             pSpaticalReference = pDialog.DoModalCreate(true, false, false, 0) as IProjectedCoordinateSystem;
             pMap.SpatialReference = pSpaticalReference;
             pActiveView.Refresh();

   Arc Engine的空间参考对象模型中有3个组件类:GeographicCoordinateSy(地理坐标系统)、ProjectedCoordinateSystem(投影坐标系统)和UnknownCoordinateSystem(未知坐标系统)。这3个组件类都都实现了ISpatialReference接口,该接口提供了操作方法和属性来设置数据集控件参考属性,如空间域和坐标精度等。如Changed是这个接口中最重要的一个方法,用于检查一个坐标系统中的参数是否发生了变化;GetDomain和SetDomain方法分别用于获取和设置一个坐标系统的域范围。

    IGeographicCoordinateSystem是GeographicCoordinateSystem类接口,提供了CoordinateUnit(坐标系的角度单位)、Datum(椭球体)和PrimeMeridian(本初子午线)等属性。

    IProjectedCoordinateSystem是ProjectedCoordinateSystem类的接口,该接口提供了新建一个投影坐标系统的方法。在一个新的投影坐标系统中,需要设置projection(投影方式)、GeographicCoordinateSystem、CoordinateUnit和Parameters等。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有