为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

图斑自动编号

2017-12-08 10页 doc 178KB 76阅读

用户头像

is_196623

暂无简介

举报
图斑自动编号图斑自动编号2010-06-1516:16【编者语】如何利用arcmap软件实现对图斑进行高级编号,本文主要解决两种常见的编号生成方法,全部整理来源于ESRI中国论坛,感谢来生缘大哥帮助~1、图斑按不同的字段值进行自动编号问题提出:在属性表里面如何实现~~~根据某个字段的值进行自动编号。比如说一个图层,这个图层里面有很多个村,一个村里有很多图斑,对这些图斑进行编号。比如A村有10个图斑,那就从1,2,3,„„10.B村有30个图斑,那就从1,2,3„„30C村有60个图斑,那就从...
图斑自动编号
图斑自动编号2010-06-1516:16【编者语】如何利用arcmap软件实现对图斑进行高级编号,本文主要解决两种常见的编号生成,全部整理来源于ESRI中国论坛,感谢来生缘大哥帮助~1、图斑按不同的字段值进行自动编号问题提出:在属性里面如何实现~~~根据某个字段的值进行自动编号。比如说一个图层,这个图层里面有很多个村,一个村里有很多图斑,对这些图斑进行编号。比如A村有10个图斑,那就从1,2,3,„„10.B村有30个图斑,那就从1,2,3„„30C村有60个图斑,那就从1,2,3„„60.解决:在属性表里新建一长整形字段,比如bianhao,在其字段名上点右键,选fieldcalculator,将下列代码复制到pro-logicvbascriptcode窗口内,把“所属地市”修改成你的字段名,在下边bianhao=窗口内填入lSerialStaticdAsObjectStaticiAsLongDimlSerialAsLongDimsField'========================='改成你要按其编号的字段名sField=[所属地市]'=========================If(i=0)ThenSetd=CreateObject("Scripting.Dictionary")EndIfIf(d.Exists(CStr(sField)))ThenlSerial=d.Item(CStr(sField))+1d.Item(CStr(sField))=lSerialElselSerial=1d.AddCStr(sField),lSerialEndIfi=i+12、图斑自上而下,从左到右编号问题提出:很多工作要求将图斑自上而下、从左到右排序,arcgis没有现成的工具做这事情,许多软件虽然能做,但方式是采用按质心点来排序,这种方法有很多弊端,比如有个图斑从左上角开始一直延伸到左下角,按理说应该是第一个图斑,但按质心排序时会排到后边去。下面介绍的方法是按照每个图斑的最小外包矩形的左上角坐标来排序,这样的排序方法基本符合要求。具体步骤:1、在属性表中增加xmin、ymax、tbxh字段用于存放外包矩形左上角x、y坐标和排序后的图斑序号2、shape_Get_X_Min.cal和shape_Get_Y_Max.cal两个文件分别用于计算xmin和ymaxshape_Get_X_Min.cal'========================='shape_Get_X_Min.cal'Author:IankoTchoukanski''=========================DimpMxDocAsIMxDocumentDimpGeometryAsIGeometryDimpMapAsIMapDimpEnvelopeAsIEnvelopeDimdXMinAsDoubleDimbSrefFromMapAsBoolean'======================='Adjusttheparameterbelow'bSrefFromMap=True==>thecoordinateswillbecalculatedintheprojectionoftheMap'bSrefFromMap=False==>thecoordinateswillbecalculatedintheprojectionofthedatabSrefFromMap=True'=======================If(NotIsNull([Shape]))ThenSetpGeometry=[Shape]If(NotpGeometry.IsEmpty)ThenIf(bSrefFromMap)ThenSetpMxDoc=ThisDocumentSetpMap=pMxDoc.FocusMappGeometry.ProjectpMap.SpatialReferenceEndIfSetpEnvelope=pGeometry.EnvelopedXMin=pEnvelope.LowerLeft.XEndIfEndIf__esri_field_calculator_splitter__dXMinshape_Get_Y_Max.cal:'========================='shape_Get_Y_Max.cal'Author:IankoTchoukanski''=========================OnErrorResumeNextDimpMxDocAsIMxDocumentDimpGeometryAsIGeometryDimpMapAsIMapDimpEnvelopeAsIEnvelopeDimdYMaxAsDoubleDimbSrefFromMapAsBoolean'======================='Adjusttheparameterbelow'bSrefFromMap=True==>thecoordinateswillbecalculatedintheprojectionoftheMap'bSrefFromMap=False==>thecoordinateswillbecalculatedintheprojectionofthedatabSrefFromMap=True'=======================If(NotIsNull([Shape]))ThenSetpGeometry=[Shape]If(NotpGeometry.IsEmpty)ThenIf(bSrefFromMap)ThenSetpMxDoc=ThisDocumentSetpMap=pMxDoc.FocusMappGeometry.ProjectpMap.SpatialReferenceEndIfSetpEnvelope=pGeometry.EnvelopedYMax=pEnvelope.UpperRight.YEndIfEndIf__esri_field_calculator_splitter__dYMax3、把上面两个计算按照字段计算4、导出属性表到dbf,在excel里将其打开,按ymax降序,xmin升序排序5、在excel里将表增加一个字段,比如bh,令bh=row()-1,将表另存为.xls文件。6、在arcmap里将属性表和上步保存的xls文件通过objectid或fid做join。8、开属性表,在tbxh上点右键,令tbxh等于xls中的bh8、保存结果。这样做后,排序后的图斑编号就保存在了tbxh里。3、FME解决图斑至上到下,至左到右排序怎样将图斑自上而下,从左到右编号一文中提到,很多工作要求将图斑自上而下、从左到右排序。目前比较粗略的实现方法:1、获取图斑的某一特征点。2、根据此点的X、Y值来排序。3、将序好结果挂回去。这里特征点可以是:?图斑质心点(重心点);?图斑外接矩形左上角点。质心点的方法有诸多弊端,比如有个图斑从左上角开始一直延伸到左下角,按理说应该是第一个图斑,但按质心排序时会排到后边去。而单纯使用ArcMap,在处理的时候又有许多限制,不得不将排序的工作拿出去用msexcel来完成。在这里,简单介绍使用ArcGISSpatialETLTool(FMEDesktopWorkbench)来完成这项工作,整个流程变得很简洁,思路很清晰。经测试,本方案所的结果与上述方法结果一致。#数#介绍1、BoundingBoxReplacer:得到图斑的外接矩形。2、CoordinateExtractor:得到外接矩形左上角点坐标(该工具参数里,index设置为1就是左上角点;设置为零对应矩形左下角点,其他以此类推)注:此为fme2010内函数,之前版本函数名为CoordinateFetcher。3、sorter:排序,根据上一步的到的左上角点坐标Y倒序、X升序。4、counter:计数器,根据排序结果生成新的序号。5、FeatureMerger:相当于ArcMap里的Join,这里将排序好新生成的序号挂回去。Workbench里设置如下:说明:1、矩形左上角点,CoordinateExtractor函数,index值设为1对应的是左上角点。2、根据左上角点XY值排序,sorter函数,如下图所示。3、counter函数生成排序好的序号。4、回挂属性,即ArcMap里join。这里的FeatureMerger函数。后续:1、这里图斑的某特征点可以是其他,比如质心点、外接矩形中心点等,但,如最初来生缘老师所说,外包矩形左上角点在这里更合理一些。2、从左而右、自上到下体现在sorter,如果需要从下到上、自右至左可以修改为取外包矩形右上角点、sorter里xy排序方式为Y升序、X降序等。3、这里得到的结果基本符合要求,但是标注到图上,没有明显的顺序规律,所以这个简单的配需算法需要改进。
/
本文档为【图斑自动编号】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索