利用ARCGIS进行地类计算与统计Word格式文档下载.docx
《利用ARCGIS进行地类计算与统计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《利用ARCGIS进行地类计算与统计Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
![利用ARCGIS进行地类计算与统计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/11/ecacc6ba-2609-4644-8a30-3ae863a8ccd2/ecacc6ba-2609-4644-8a30-3ae863a8ccd21.gif)
【双击】进入数据集aaa,【右键】→【导入】→【要素类(多个)】
(2)在【InputFeatures】中添加DWG文件的注记层(Annotation)和面层(Polygon)
添加注记和面层,然后点【确定】导入
2.1.3检查修改面层的拓扑
面层可能存在裂缝和重叠错误,这样会带来计算面积的错误,因此要进行拓扑的检查
(1)数据集aaa中,【右键】→【新建】→【拓扑】
(2)前面两步使用默认直接【下一步】,选择要素的时候勾选面层然后【下一步】
使用默认等级,然后【下一步】
添加拓扑规则,规则选择【不能重叠】和【不能有缝隙】,分两次添加,然后【下一步】
点击【完成】,然后选【是】验证拓扑
(3)修改拓扑错误
打开ArcMap,添加aaa_Topology,即可看到拓扑检查结果(红色部分)
可以看出,面层存在重叠,不存在裂缝,修要修改重叠部分,采用挖空的方法
【编辑器】→【开始编辑】→用【选择工具】
(
)选中重叠部分:
【编辑器】→【裁切】
(clip,可以将与选择部分有重叠的所有面擦除)
直接【确定】,对所有重叠部分重复以上步骤
在ArcMap工具栏位置【右键】→【拓扑】调出拓扑工具栏→【验证全部拓扑】
重新验证拓扑看还有没有拓扑错误
修改完没有拓扑问题后,【编辑器】→【保存编辑】→【停止编辑】
拓扑错误已经消除,可以进行下一步操作
如果导入DWG文件的线层,然后用线层构面的话,可以省略掉拓扑检查和修改这一步,操作会相对简单些。
但拓扑检查是保证数据质量最常用的检查方式,因此这里将这部分内容写上,大家可以对比一下两种方法,以达到一方面简化操作步骤增加效率,一方面可以增加对拓扑的理解,保证数据质量的效果。
重叠部分的挖空和缝隙的填补操作是比较常用的编辑方式。
挖空用【裁切】命令,填补缝隙则通过【修改要素】修改节点或者【自动完成多边形】完成,在此不写具体的操作步骤。
2.2点面属性连接
!
点面属性连接是根据点落在面内部的特性,通过空间连接运算,将点的属性添加到面的属性里面。
具体来说就是标注点(Annotation)的Refname字段存储了社名,要将社名这个属性添加到对应的社界面上。
2.2.1添加数据,检查位置,保留字段
(1)在ArcMap中添加标注层(sj_dwg_Annotation)和面层(sj_dwg_Polygon)
原CAD图对应ARCMAP图
检查一下点的位置,确定每个面上对应唯一的注记点,排除异常情况。
(2)保留字段
保留字段是保留有用的字段参与空间连接,去除不需要的字段,使结果简洁明了。
打开相应图层的【属性】
切换到【字段】这一栏
对于注记层,点【全部清除】,然后勾选【Refname】,保留Refname字段(存储社名的字段)
对于面层,点【全部清除】即可,不需要保留属性字段
2.2.2进行空间相交运算
点击工具栏的【ArcToolbox】按钮,打开ArcToolbox工具箱
按照【ArcToolbox】→【AnalysisTools】→【Overlay】→【SpatialJoin】
(空间连接)
打开空间连接对话框
早期计算地类采用【Intersect】
(相交)工具,一样可以得到结果且有助于理解连接的过程,但操作相对复杂,应用【空间连接】工具操作比较简单,对结果检查比较容易
对话框中,【目标要素】下拉选择面层,【连接要素】下拉选择注记层,【输出要素类】则自己选择路径并为输出的要素类命名(在此命名为SJ)。
其余使用默认。
点击【确定】
ArcMap自动加载空间连接生成的图层(SJ),打开其【属性表】
找到相应图层→【右键】→【打开属性表】
【Refname】存储社名,【Shape_Area】存储面积,【Join_Count】字段是空间连接过程中自动生成的,表示连接到这个面的注记点的个数,如果为0则表示这个面上没有点,如果为2或3则表示这个面上有2个或者3个点,这样就不符合一一对应原则,要检查修改。
由上图可知【Join_Count】全部为1,点与面一一对应,可以进行下一步运算。
到了这一步,社界面积就计算出来了,可以通过Access统计每个社的面积。
2.3图层相交求地类面积
(1)在上节打开的ArcMap中添加2007年的现状地类Shape数据(Geodatabase数据也可,如果求2008年地类则添加2008年现状图,以此类推)
(2)由图上可以看出社界和现状图重叠在一起,相交运算是通过现状图的界线将村界切开,并且把现状图的属性放到切开的小块社界中(可以参看Intersect工具的帮助)
(3)打开相交工具对话框【ArcToolbox】→【AnalysisTools】→【Overlay】→【Intersect】
(相交)
在【输入要素】中下拉选择SJ(社界)和07MZDL(07现状图),【输出要素类】选择路径并输入名称(在此命名为SJDL)。
其余使用默认,点击【确定】开始相交运算。
运算完成后会自动将SDDL加载到ArcMap中。
上图中红色是原先SJ层边界,淡绿填充层是相交后生成的SJDL层,可以看出SJDL实际上就是07地类界线将SJ层切开,或者SJ层界线将07地类切开,亦即两者的公共部分保留。
(4)打开SJDL的图层属性,在字段对话框中保留【Refname】
(社名)、【DLDM】
(地类代码)、【DLMC】
(地类名称)和【Shape_Area】
(面积)四个字段(参见2.2.1)。
(5)打开SJDL的属性表(参见2.2.2)
属性表里面每一条记录对应SJDL中的一个面,表明了这块地所属的社、地类名称和代码以及面积这些信息,比如说腊圃村村委这块地被07现状边界切成了四块,对应前面四条记录。
这个表是最基本的表,后面的数据都将由这个表整理得出。
(6)导出属性表
在属性表界面中,右下角的【选项】菜单,【选项】→【导出】,打开导出表对话框
导出数据对话框中,【导出:
】栏选allrecords(所有数据),输出表里选路径并命名dbf文件(这里命名为DLSJ.dbf),然后【确定】
由上图可以看出,导出的dbf文件包含两个:
dbf后缀和xml后缀文件。
dbf后缀文件存储所有数据;
xml是元数据文档,起说明作用,可以忽略。
用Excel【打开】dbf后缀文件,【另存为】xls文件(DLSJ.xls)。
至此,地类面积已经求出并导出为Excel文件,后续统计以导出的Excel文件为基础。
三、地类数据统计
(1)打开Access(【开始】→【程序】→下图)
(2)用Access打开DLSJ.xls
(3)上图中,点击【打开】后,会出现导入对话框
这个不修改,直接【下一步】
这里要勾选【第一行包含列标题】,然后【完成】。
这里直接点击【完成】则使用默认名为表名,如果想修改表名则点击【下一步】,然后再【完成】。
如上图所示,在数据库的表视图里可以看到导入的表(DLSJ)
双击表DLSJ可以查看导入内容是否正确。
(4)地类统计,合并相同地类的面积。
由上图可以看到,每个社都存在有同一地类有多块地的情况,如村委有两块1110的地,布尾社有多块1310的地。
一般情况我们制表只需知道红线范围内每个社每个地类有多少面积,所以要进行统计将同一个社的同一地类的所有地块的面积加起来。
点击【查询】→双击【在设计视图中创建查询】
添加要进行查询的表,选中DLSJ然后【添加】→【关闭】
在查询对话框中,分别【双击】RefName、DLDM、DLMC和Shape_Area,添加四个字段到查询字段中。
在字段栏内部【右键】→【总计】,调出【总计】选项
在【总计】选项中,除了Shape_Area对应栏选【总计】外,其余栏选【分组】。
其他选项不用修改
这个查询实际上是将同一个分组的相同项进行总计,首先是合并同一个社的相同地类,然后合并同一地类的不同地块面积。
选项设立好后,点击工具栏的【红色!
号】
(运行),则得到查询结果。
查询结果是每个社的每个地类的总面积
【点击】左上角(红色圈)全选数据,然后【右键】→【复制】,将复制的数据粘贴到Excel表中,可以用于制作各种表格。
理解查询操作可以有助于各种面积的统计,比如说要统计红线范围内各个地类的面积,则在查询字段里不选RefName字段即可,得到结果如下:
整个地类计算过程中,要求前后面积一致,这样方能保证计算的过程不会出错。
一般要确保下面等式:
红线面积=拓扑处理后的社界总面积=与现状图相交后的地类总面积=查询后的地类总面积
计算过程会有系统差,但一般前后面积相差不到1个平方米,如果范围比较大可以将误差适当放大,但是超过10个平方米则应当认为计算过程有错误,可以分环节进行检查。
在ARCGIS中查看总面积:
打开面层的属性表,在属性表的面积字段(Shape_Area)
【右键】→【统计】
【总计】一项就是总的面积。
在计算过程中多查看面积并进行对比可保证计算过程的准确性。
ARCGIS注记转化到CAD
进行空间运算后的结果有时要导出为CAD文件,这里以导出社界亩数为例说明如何将ARCGIS的面层及标注导出到CAD中去。
打开ArcMap,添加社界层(SJ)
【图层】→【右键】→【属性】,打开图层属性对话框
【常规】→【地图】→【分米】
(此选项可以控制标注的大小,一般选分米即可)→【确定】
打开SJ层属性,在字段中只保留Shape_Area字段(参见地类计算与统计2.2.1)
打开SJ层属性表,【选项】→【添加字段】
(添加一个字段用来存储亩数)
如上图设置,然后【确认】
常用的字段类型包括Text(文本型),用来存储文字;
ShortInteger和LongInteger(短、长整型),用来存储整数,只是长整型可存储位数更多;
Float和Double(单、双精度型),用来存储小数,Double型可存储更长位数。
添加字段后如上图所示
在mu字段上【右键】→【计算字段】,打开计算字段对话框
设置如上图所示,在等号下面输入round([Shape_Area]*0.0015,3),亦即mu=round([Shape_Area]*0.0015,3),其中[Shape_Area]*0.0015是根据[Shape_Area]字段的平方数计算出亩数,round函数用来对亩数保留三位小数。
点击【确定】,进行计算。
计算结果如图所示,ArcGIS的double类型默认将小数点前的0去掉,而Cad注记则要把0显示出来(如0.184亩)。
在这里采取先导出Excel表将0显示,然后粘贴到新建的text字段中的办法来解决。
导出上图的属性表到Excel中(参见地类计算与统计2.3之(6))
【选项】→【导出】,在Excel表中打开如下图:
设置【mu】列的单元格格式,保留三位小数,然后选中数据部分【复制】
在SJ属性表中新建一个text字段,【选项】→【添加字段】,设置如下:
点击【确认】后,结果如下图:
将数据粘贴到[mu1]中:
【编辑器】→【开始编辑】,然后在[mu1]第一格进行粘贴:
可以看到,缺失的0已经补上。
【编辑器】→【保存编辑】→【停止编辑】,关闭SJ属性表。
打开SJ层属性对话框,对SJ层进行标注:
鼠标在SJ层上【右键】→【属性】→【标注】:
先勾选【标注这个图层中的要素】,然后点击【表达式】
在【表达式】中输入:
[mu1]&
"
亩"
,其中&
是连接符号,将数字与字符“亩”连接起来。
点击【确定】,在图层属性对话框也点击【确定】
不同的表达式可以取得不同的标注效果,比如说现状图中的
(如
),可以通过输入:
[TBBH]&
vbnewline&
-"
&
[DLDM]来完成。
标注结果如上图,此时要将图层【缩放】一下,以调整标注文字的大小,一般以标注文字填满最小面积的多边形为标准
将图层标注转化为注记:
选择SJ层,【右键】→【将标注转化为注记】
记下注记存放的位置和名称,然后点击【转换】
ArcMap自动把转化的注记层(SJAnno)加载数据库中生成了SJAnno要素类
到这一步,注记要素在ArcGIS中已经生成,剩下的就是将其和面层导出为CAD格式
打开FMEWorkbench(【程序】→【FME】→【FMEWorkbench】)
FME是加拿大Safe软件公司开发的一款商用数据转换软件,在数据格式转换方面较为常用,功能非常强大。
根据向导进行数据转换
直接【ok】
这一步是选择源数据的格式
选中ESRIGeodatabase(MDB),然后【ok】
格式选好后,【next】进行下一步
这一步是对MDB进行定位,点击“…”浏览数据库并将其添加,结果如图,点击【next】到下一步
这一步是选择目标格式
选择ACAD格式,然后【ok】,然后【next】
这一步是对目标格式进行设置,比如版本、属性等。
点击【Settings】
在Release中选择2000,其他不变,然后【ok】,然后【Next】
这个选项规定了输出的CAD版本,默认是2007,由于CAD2006打不开2007版本的dwg文件,因此选择比较通用的2000版本。
直接点击【Finish】
(完成)
此对话框是选择参加转换的要素类,只勾选面层(SJ)和注记层(SJAnno)即可,然后【ok】
点击绿色按钮运行【转换】
这个对话框是对转换后的DWG存放路径及文件名进行设定,注意路径不能有中文,不然转出去是空的。
设定路径后,点【ok】,然后就进行转换了。
在设定的路径下找到sjmj.dwg即是转出去的社界面积
结果如图所示:
转出去的DWG图打开时有些中文字会显示为问号,这是字体原因,修改为中文字体即可。
另外其默认图形单位为[英寸],进行插入等操作时要将其修改为对应的图形单位(如:
无单位)