赵威
扬州市邗江测量服务所 江苏 扬州 225000
摘要:本文通过使用C#+ArcGIS Engine高效准确地处理空间数据。
关键词:土地整理项目报备;ArcGIS Engine
1引言
1.1土地整理项目
土地整理亦称“土地整治”、“土地调整”或“土地重划”。将零碎高低不平和不规整的土地或被破坏的土地加以整理,使人类在土地利用中不断建设土地和重新配置土地的过程。是土地管理的重要内容,也是实施土地利用规划的重要手段。主要内容包括:
1)农村建设用地的整理。包括村庄改造、乡村工矿企业破坏土地和废弃农业建设用地的整治垦复、平坟复田等。
2)城镇建设用地的整理。包括旧城改造、城镇产业用地置换以及闲置、低效用地的开发与再开发。
3)大型建设项目用地整理。包括工矿、交通、水利等建设直接破坏土地的复垦、线状工程两侧畸零土地的调整利用以及水库下游河道土地的整治开发等。
4)农田的整理。包括地块合并、农田平整、明渠改暗渠、坡地改梯田以及水冲砂压农田的复垦等。
通过探讨土地整理过程中各要素的组合规律,并依此进行模式的划分,可以为政府的土地整理决策提供技术支持,为完善国家的土地整理技术规程和制定相关政策奠定科学基础。在分析土地整理模式内涵与特征的基础上,应用层次指标分类法,分别采用土地整理地域特征指标、待整理土地利用类型指标、土地整理目标指标和土地整理运作方式指标对土地整理模式进行了划分,并依此对我国的土地整理模式进行了分类。
1.2 ArcGIS Engine
ArcGIS是美国ESRI(Environmental Systems Research Institute,Inc. 美国环境系统研究所公司)推出的一条为不同需求层次用户提供的全面的、可伸缩的GIS产品线和解决方案。ESRI是GIS领域的拓荒者和领导者,而ArcGIS也代表了当前GIS行业最高的技术水平。
ArcGIS Engine是ESRI在ArcGIS9版本才开始推出的新产品,它是一套完备的嵌入式GIS 组件库和工具库,使用ArcGIS Engine开发的GIS应用程序可以脱离ArcGIS Desktop而运行。ArcGIS Engine面向的用户并不是最终使用者,而是GIS项目程序开发员。对开发人员而言,ArcGIS Engine不再是一个终端应用,不再包括ArcGIS桌面的用户界面,它只是一个用于开发新应用程序的二次开发功能组件包。
由于MapObjects本身只是一个ActiveX控件,与ESRI ArcGIS的核心库ArcObjects不存在任何联系,因此,ArcGIS中的许多高级GIS功能无法在MapObjects中实现。为了改变这种情况,ESRI将ArcObjects中的一部分组件重新包装后命名为ArcGIS Engine发布,这个产品取代MapObjects进入嵌入式GIS开发领域,同时,MapObjects在3.2版后已经退出了市场,ESRI不会再为这个产品开发下一个版本。
2土地整理项目报备格式
土地整理项目报备的文件格式(以下简称报备格式)采用txt格式,源数据为shp格式,每个shp格式的要素类生成一份txt文件,其中txt文件中的内容按照固定格式填写。
对于每个地区而言,txt文本中前9行内容固定,接着下面,对于每个图形要素,第一行内容以坐标点数、面积、地块号、地块名称、地块类型的顺序填写,第二行开始为坐标点,坐标点编号从J1沿着图形外环顺时针开始编号,最后以起始编号为结尾;如果图形要素中存在内环,则内环的坐标点以外环结束的坐标点号加1为起始坐标点号,逆时针沿着内环编号,同样以每个内环的起始坐标点号为结尾。
3报备格式在C#+ArcGIS Engine中的实现
3.1开头部分
由于每个地区的坐标系以及坐标分带号等都是固定不变的,可以利用System.IO命名空间中的StreamWriter对象,直接写入txt格式。
期刊文章分类查询,尽在期刊图书馆
3.2写入坐标点
3.2.1遍历每个要素
采用for循环遍历要素类中每个要素,得到接口IFeature。
for(int M = 0;M < pFeatureClass.FeatureCount(null);M++)
3.2.2生成标题
IPolygon4 pPolygon= pFeature.Shape as IPolygon4;
IPointCollection fullpoint = pPolygon as IPointCollection;
int pointcount = fullpoint.PointCount;//点数量
根据IPolygon4 pPolygon = pFeature.Shape as IPolygon4,得到IPolygon4接口,继而由该接口QI至IPointCollection接口,得到点数量;
IArea pArea = pPolygon as IArea;
double MJ = Math.Round(pArea.Area / 10000,4);
面积可以通过IArea接口的.Area()方法计算求得,将结果除以1000后将平方米转化为了公顷;地块名称可以由IFeature的.get_Value()方法得到。最终将各个结果进行字符串相加便可以得到每个要素的标题部分。
3.2.2生成点坐标
对于每个要素,可以抽象理解为该要素是由外环和内环构成,外环一般情况下数量为1,内环数则是大于等于0的整数。因此要想生成坐标点,首先生成外环的坐标点坐标,如果有内环存在,则依次生成每个内环的坐标点坐标。
按照此思路,由IPolygon4接口首先获取外环集合接口IGeometryBag,由于shp事先处理过,所以外环数一定为1,因此外环可以通过直接获取集合中第一个外环即可开始遍历其中的点,通过WriteLine()方法即可按照固定格式写入txt文件。其中对于外环最后一个点,点号固定为J1。
外环点坐标生成完了开始生成内环点坐标。内环坐标的生成方式与外环大体相同。区别在于首先判断是否存在内环,在读取每个内环的点之前,首先保存当前的点号,即变量BH,当该内环遍历读取到最后一个点时,该点点号使用之前保存的点号。每读取完一个内环,用来保存环号的变量加1。
if(pInteriorRingBag != null)//判断是否存在内环
int STBH = BH;//存储起始编号
IGeometry InteriorRing = pInteriorRings.get_Geometry(j);//获取内环
IPointCollection pInteriorPointCollection = InteriorRing as IPointCollection; //获取内环点的集合
int STBH = BH;//存储起始编号
3.3保存txt格式
sw.Close();
使用StreamWriter的close()方法直接保存为txt文件。
4结语
土地整理项目报备坐标格式容不得一点差错,否则无法提交入库。使用程序代替人工处理数据可以大大减少出错几率并且提升工作效率,通过事先几何检查,拓扑检查后,便可利用该程序生成txt文件。
参考文献
[1]陆雄文.管理学大辞典:上海辞书出版社,2013年
论文作者:赵威
论文发表刊物:《防护工程》2018年第11期
论文发表时间:2018/10/16
标签:内环论文; 土地论文; 要素论文; 报备论文; 格式论文; 坐标论文; 坐标点论文; 《防护工程》2018年第11期论文;