前言:
在基于Arcgis平台的地理信息系统开发中,数据有时是从别的平台的格式中转过来的,如从CAD转成Shapefile格式,在格式转换的过程中,经常会出现SpatialReference丢失的现象,这样的数据在使用中就会出现一些问题。为此,需要人为设置数据的SpatialReference。有两种方式设置SpatialReference。详述如下: 1、通过desktop设置数据的SpatialReference 可以用desktop的arccatalog,找到数据文件,选中点右键\properties,在弹出来的shapefile properties对话框中,选fields\Shape,在Shape字段属性中选 spatial reference,弹出spatial reference 属性对话框,利用这个对话框设置数据文件的SpatialReference。 2、数据加载过程中设置图层的SpatialReference 可以在数据加载过程中设置图层的空间参考,方法如下(以西安80坐标系为例) 打开数据,获取数据的featureclass,记为变量i_ftrCls;
IFeatureLayer i_ftrLyr =new FeatureLayer();//生成新的featurelayer
i_ftrLyr.FeatureClass=i_ftrCls;
//通过SpatialReferenceEnvironmen创建新的SpatialReference
ISpatialReferenceFactory ispfac=new ESRI.ArcGIS.Geometry.SpatialReferenceEnvironmen();
IGeographicCoordinateSystem igeocoorsys=ispfac.CreateGeographicCoordinateSystem(esriSRGeoCS_Xian1980);
i_ftrLyr.SpatialReference=igeosys;//设置featurelayer的SpatialReference axMapControl1.AddLayer(i_ftrLyr,0);//加载数据
注:上述esriSRGeoCS_Xian1980是arcgis Enging中定义好的SpatialReference,如果所需的SpatialReference在AE中没有预先定义,就可以通过ISpatialReference接口里的一系列方法和属性设置SpatialReference中的各项以达到相同的目的