ArcEngine 9.3 学习笔记(三):几何对象与空间参考(空间参考,知识总结Demo:构建一个Polygon几何要素程序)
2.5 空间参考
2.5.1 空间参考简介
空间参考Spatial Reference,是GIS 数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确的坐标。在同一个地图上显示的地图数据的空间参考必须是一致的,如果两个图层的空间参考不一致,往往会导致两幅地图无法正确拼合,因此开发一个GIS系统时,为数据选择正确的空间参考非常重要。
AE 提供了三个定义好的坐标系统:ProjectedCoordinateSystem、GeographicCoordinateSystem、SpatialReference Environment;
若需要自定义定义坐标系统,则使用以下对象:Projection,Datum,AngularUnit,Spheriod,PrimeMeridian和GeoTransformation等。
2.5.2 修改空间参考
以下代码片段演示了如何改变一个图层的空间参考。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 /// <summary> 2 /// 改变一个图层的空间参考 3 /// </summary> 4 /// <param name="pFeatureLayer">图层</param> 5 /// <param name="gcsType">空间参考模型</param> 6 public void ChangeLayerRef(IFeatureLayer pFeatureLayer, int gcsType) 7 { 8 try 9 { 10 IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; 11 // QI到IGeoDataset 12 IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset; 13 // QI 到IGeoDatasetSchemaEdit 14 IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit; 15 16 // 判断是否可改变空间参考 17 if (pGeoDatasetSchemaEdit.CanAlterSpatialReference == true) 18 { 19 // 创建SpatialReferenceEnvironmentClass对象 20 ISpatialReferenceFactory2 pSpaRefFactory = new SpatialReferenceEnvironmentClass(); 21 // 创建地理坐标系对象 22 IGeographicCoordinateSystem pNewGeoSys = pSpaRefFactory.CreateGeographicCoordinateSystem(gcsType);// 4214代表北京1954 23 pGeoDatasetSchemaEdit.AlterSpatialReference(pNewGeoSys); 24 } 25 } 26 catch (Exception) 27 { 28 throw; 29 } 30 }
2.6 开发野外测量点构建一个Polygon几何要素程序
2.6.1 功能情景描述:
现有一存储为*.txt格式文本文件存储野外测量几个建筑物的坐标信息,如图所示,我们需要通过开发一个功能,能够图取这些坐标信息并根据坐标点建筑物属性来构建建筑物,并创建成一个ShapeFile加载到MapControl上。
首先,先创建如下图所示的WinForm界面:
后台代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
运行后,选择坐标文件,已经保存路径,点击创建后,将在指定的目录创建mxd文件,打开后显示效果如下:
2.4.6 Demo总结:
在本Demo中大家学习了如下主要内容:
1. 通过IWorkspaceFactory接口和IFeatureWorkspace以及Shapefile WorkspaceFactory对象创建一个存储在硬盘上的shapefile文件。
2. 通过IFields,IFieldsEdit,IField等接口为创建的ShapeFile创建属性字段
3.通过IGeometryDef和IGeometryDefEdit接口为Shapefile创建图形类型
4.通过IPointCollection来构建Polygon对象。