一、题目说明
针对这个题目,首先要了解宗地的编码规则。
1、宗地统一编码规则
宗地代码结构为五层19位,按层次分别表示县级行政区划、地籍区、地籍子区、宗地号。编码结构图如下所示:
码段 |
第1至6位 |
第7-9位 |
第10-12位 |
第13位 |
第14位 |
第15-19位 |
代码值 |
000001-999999 |
001-999 |
001-999 |
G、J、Z |
A、B… |
00001-99999 |
代码意义 |
县级行政代码 |
地籍区代码 |
地籍子区代码 |
权属类型 |
特征码 |
宗地序号 |
其中第1位至第12位组成了地籍子区代码,第13-14位组成了权属类型码,第15-19位以地籍子区为单位对宗地按照一定原则进行顺序编号。
1、数据说明
1)XZQ_DJZQ.shp为地籍子区面数据,其中XZQDM字段中的12位数字代表地籍子区代码;
2)ZD_DBZD.shp为宗地面数据,其中QSLXM字段为权属类型码。
2、作业要求
1)对ZD_DBZD.shp中的宗地按照上述编码规则进行统一编码,模版输出时,将编好的宗地统一编码输出至该数据的ZDTYBM字段中。
2)当一个宗地跨多个地籍子区时,以落入面积最大的地籍子区作为该宗地所属地籍子区;
3)宗地序号按照一个地籍子区范围内宗地从左到右、从上到下的方式进行顺序编号。
二、题目分析
按照本题目的要求,针对该数据进行编码,重点在于两个方面:
1)理解编码规则,分析源数据。按照编码结构图表中所示,找到每段代码对应的字段,对于宗地序号则采用地籍子区内从左到右、从上到下的方式顺序编码得到。有了每段代码的值以后,通过字符串连接得到宗地的完整编码;
2)由于宗地顺序编码基于同一个地籍子区进行,当宗地跨多个地籍子区时,需要进行判断取落入面积最大的地籍子区作为该宗地所属地籍子区。
分析我们这次题目的源数据:
XZQ_DJZQ.shp为地籍子区面数据,其中XZQDM字段中的12位数字代表地籍子区代码,代表了宗地编码中的第1-12位;ZD_DBZD.shp为宗地面数据,其中QSLXM字段为权属类型码,代表宗地编码中的第13-14位。这样宗地编码中的前14位都找到了。通过空间叠加关系,根据宗地落入的地籍子区,获取地籍子区代码。再根据地籍子区代码再同一个地籍子区中按照宗地从左到右,从上到下,利用FME中转换器完成第15-19位的顺序编码。
这样,宗地编码中的19位都有了相应的值,只需要完成字符串连接即可。
根据本次数据的情况,在作业中主要需要考虑的是处理跨多个地籍子区宗地的地籍子区代码和顺序编码这两个方面。
下面来看看大家作业的情况。
三、 作业情况
本次一共收到17份作业,作业概括和分析如下:
四、小结
模板兴趣班的目的是教会大家一些方法。实际工作中宗地编码可能会比作业的数据更复杂,需要多分析数据,得到满足要求的结果。
本期作业开始不打算评分了,对我自己来说,看大家的作业本身就是学习的过程。以后根据我的喜好和各位的作业情况,给大家推荐一些模板学习,如上图中最后一列所示,给大家标出一些值得学习的模板。每份作业的主要思路和小结也建议大家都看看,帮助自己发现问题和解决问题。
不平服意味着以后我们通过别的方式给大家送礼物和纪念品,什么方式没想好,谁知道呢?班长的心情总是阴晴不定,难以捉摸,哈哈。
这一期的作业总的来说分为几种情况:
1、跨多个地籍子区的方法:Clipper、AreaOnArea、SpatialRelator/SpatialFilter几种情况;
2、顺序编码的取点:外接矩形左上角、CenterPoint、insidepoint几种情况。我个人比较倾向外接矩形左上角,不过需要根据实际工作中的需要选择。但是不建议大家使用Centerpoint,因为点可能不在面内。
3、在顺序编码取点的时候,还存在一种情况,大家选择了对跨多个地籍子区的宗地分割后,选择出面积最大的部分,有时候就直接取点了。我觉得基于未分割前的宗地取点可能更合适。
4、好像大部分同学在读取两个shp文件的时候都使用一个shp读模块就完成了。从直接在desktop中运行模板来说,没有太大的问题。不过我觉得还是养成每个数据源一个读模块的方式,参数明确。不管是运行前修改参数还是程序调用,都更清晰明了。
总结得不正确的地方,希望各位批评和指正。
期待各位下一次的作业!和你们一起学习!