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

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

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

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等。