1 需求说明

某研究院拟利用三调地类图斑数据做用地类型分析。需求简单描述为分析某一空间范围内,各类土地的面积。

其他需求:

1、 用户在Web端实现用地类型分析

2、 用户可以通过手绘确定征收、征用范围

3、 用户可以通过上传shp、kml确定征收、征用范围

4、 土地面积需按行政区划、按类进行汇总统计

5、 统计结果能够导出为excel

6、 三调数据不直接对外提供,只提供分析结果

7、 征收与征用范围重叠时,需要用户确定重叠部分分别计算征收征用面积还是重叠部分按征收计算面积。

2 总体设计

整理上述需求,总体设计前端采用html、javascrpit等技术实现文件上传、用户绘制、统计结果导出等功能,后端实现传入用地范围,输出分类统计结果。

2.1 前端设计

略。

2.2 后端设计

2.2.1 输入数据

1、 存储三调地类图斑要素类的sde文件

2、 三调地类图斑要素类名。

测试数据为一个县的数据,地类斑块约8万。

示例:

3、 征收、征用数据

数据为wkt格式,单个要素结束后,用“zs”表示征收,用“zy”表示征用。每条记录用“|”分割。

示例数据:

MULTIPOLYGON (((104.72319615800006 36.968449338000028, 104.71741406700005 36.948104946000058, 104.72976347000008 36.945249593000028, 104.73690185300006 36.958027298000047, 104.72319615800006 36.968449338000028)));'zy'|MULTIPOLYGON (((104.74989371000004 36.95381565200006, 104.73683046900004 36.944250219000025, 104.76873904100006 36.943607765000024, 104.76588368800009 36.957384844000046, 104.74989371000004 36.95381565200006)));'zs'|MULTIPOLYGON (((104.73376096500004 36.975444953000078, 104.72183986500005 36.973374822000039, 104.73849717400009 36.961597503000064, 104.74115011700007 36.971738587000061, 104.73376096500004 36.975444953000078)));'zy'

4、 市级行政区划代码与行政区划名称对应表

5、 县级行政区划代码与行政区划名称对应表

6、 乡级行政区划代码与行政区划名称对应表

7、 征收征用是否分开计算

2.2.2 输出数据

1、 统计结果

示例:

Results:

{type: 'zs', xzqhbm: '6204031002020000000', shi: '白银市', xian: '平川区', xiang: '王家山镇', cun: '井尔川村',水浇地0102:355684.941581,旱地0103:456807.432928,其他园地0204:10991.0340928,其他林地0307:6926.02459714,其他草地0404:975104.31823,工业用地0601:2454.3626559,农村宅基地0702:32308.1631278,公路用地1003:7401.02643674,城镇村道路用地1004:1210.52360853,农村道路1006:32307.4672192,沟渠1107:18923.1634106,水工建筑用地1109:862.78139499,设施农用地1202:4702.67100571,裸土地1206:144359.484346},

{type: 'zs', xzqhbm: '6204031002030000000', shi: '白银市', xian: '平川区', xiang: '王家山镇', cun: '于大川村',旱地0103:228346.510198,其他草地0404:395005.523848,工业用地0601:610.40954762,公路用地1003:10189.0692505,农村道路1006:4957.73886657},

{type: 'zy', xzqhbm: '6204031002020000000', shi: '白银市', xian: '平川区', xiang: '王家山镇', cun: '井尔川村',水浇地0102:272707.886286,旱地0103:431029.718855,果园0201:1062.10102109,其他园地0204:7170.96103359,其他林地0307:43576.4570185,其他草地0404:2859479.81088,工业用地0601:23633.4219309,采矿用地0602:61703.4322156,农村宅基地0702:20080.6555199,特殊用地09:212.63788379,公路用地1003:8358.38708616,城镇村道路用地1004:297.62180777,农村道路1006:45673.3922054,坑塘水面1104:13784.4504369,沟渠1107:8618.88461535,设施农用地1202:1355.73091261,裸土地1206:40561.8145408}

2、 图斑的动态地图服务

采用动态服务既可以在web端看到图斑,又可防止数据泄密。地图服务采用三调地类图斑的标注符号。

2.2.3 技术路线

采用ArcGIS GP服务的技术路线,前端直接调用GP服务的接口,实现传参与数据获取。

GP逻辑大致如下:

1、 解析前端传回的用地范围、用地类型,形成要素类。

2、 获取三调地类图斑要素类

3、 1、2中要素类做相交分析

4、 对相交分析的结果重新计算面积值

5、 按征地类型、行政区划等做统计分析

6、 构造前端需要的字符串

7、 返回前端地图服务

3 实施步骤

代码属于项目成果,不便贴出,这里给出关键及难点步骤。

3.1 创建Python脚本工具箱

3.2 编辑Python脚本工具箱

可以将模板拷贝到其他IDE,编辑完成后再拷贝回来。

3.3 创建征收征用要素类

arcpy.CreateFeatureclass_management(gdbfile, "zsPolygon", "POLYGON",spatial_reference=sr)

3.4 插入征收征用数据

解析前端传回的用地范围、用地类型,插入形成要素类。

zscursor = arcpy.da.InsertCursor(zsPolygon,[ 'SHAPE@WKT','zdlx'])

3.5 征收征用分开计算

若用户选择征收征用分别计算面积,则将征收征用直接融合(arcpy.Merge_management())进一个要素类。

3.6 征收征用重叠只计算征收

若用户选择重叠部分按征收计算面积,则先执行擦除空间分析(arcpy.Erase_analysis()),用征收要素类擦除征用要素类,再将两要素融合进一个要素类。

3.7 相交分析

将3.5或3.6的结果与三调地类图斑做相交分析。

3.7.1 方案一

使用arcpy做相交分析(arcpy.Intersect_analysis())计算,保留用户输入要素类的“征地类型”字段,保留三调地类图斑中的“地类编码”、“地类名称”、“权属单位代码”、“权属单位名称”字段。此方案的优点在于脚本编写简单,逻辑清晰;缺点在于执行速度慢,一个县8万地类图斑执行相交分析需要耗时2-3分钟。

3.7.2 方案二

采用ST_Geometry脚本执行相交分析。ST_Intersection函数执行相交分析。先说性能,同样的一个县8万条地类图斑跑完SQL只需要十几秒。

我们在项目中使用PostgreSQL作为空间数据库。需要配置PostgreSQL客户端。配置PG客户端参考此链接https://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-postgresql/setup-geodatabase-postgresql-linux.htm。

Python中需要引入psycopg2包来实现Python链接PG数据库。在桌面端调试时,需要在桌面端的Python环境中安装psycopg2包,当桌面端调试完毕,发布GP服务到服务器端时,同样需要安装psycopg2包。

需要注意的是,不管是桌面端还是服务器端,可能有多个Python环境。不能直接使用pip install psycopg2命令来安装,如果是在桌面端,则需要使用这个如下图目录中的pip.exe命令安装。

如果服务器是linux,且GP通过ArcMap发布,则不能使用pip命令安装。而是要先通过Desktop的pip命令安装2.7版本的、64位的psycopg2包,然后将安装后生成的两个文件夹复制

拷贝至如下位置:

3.7.3 SQL脚本

"INSERT INTO gswhidi_jcsj.sde.{0}(objectid,clipoid,zdlx,dlbm,dlmc,qsdwmc,qsdwdm,shape) SELECT ROW_NUMBER() OVER(),clip.objectid,clip.zdlx,landuse.dlbm,landuse.dlmc,landuse.qsdwmc,landuse.qsdwdm,sde.st_intersection (landuse.shape, clip.shape)  FROM gswhidi_jcsj.sde.{1} clip,{2} landuse
WHERE sde.st_isempty(sde.st_intersection (landuse.shape, clip.shape)) = false".format(intersectClassName,"mixedPolygon"+ptime,landuseName)

其中两个核心函数是ST_Geometry中的sde.st_intersection()及sde.st_isempty()。函数的说明请见下面的链接:

https://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/using-sql-with-gdbs/st-intersection.htm

3.8 计算面积

对相交分析的结果重新计算面积值(arcpy.CalculateField_management())。地类图斑数据计算面积同样是非常耗时的操作,但是工具没有采用ST_Area()的SQL语句去做面积计算,原因在于地类图斑数据是经纬度坐标,ST_Area()计算出的面积是以度为单位的面积。而数据投影后有所变形,面积计算不准确。故仍然采用arcpy的字段计算器去做面积计算。

3.9 统计分析

统计分析(arcpy.Statistics_analysis())。

3.10 构造前端需要的字符串

略。

3.11 运行GP服务

3.12 配置三调符号库

3.13 发布结果为GP服务

3.14 服务器端测试

三调地类图斑统计分析——GP后端实现相关推荐

  1. 三调地类图斑符号化MXD

    自制三调地类图斑符号化MXD

  2. 三调地类代码_FME实现三调地类变化流量表制作

    今年的三调进行的如火如荼,三调的成果数据做完了之后,相信今后很大的工作就是要想办法将三调的成果数据更好的利用起来.而为了更直观的了解到相较于二调,三调的地类变化情况,三调地类变化流量表的制作就很有必要 ...

  3. 国土空间调查、规划、用途管制用地用海分类指南(试行)202011 整理的与三调地类的对应关系

    根据<国土空间调查.规划.用途管制用地用海分类指南(试行)202011>整理的地类对应关系: 表格下载地址: 链接:https://pan.baidu.com/s/18iZu38w2wZ7 ...

  4. 地理建模---------三调地类批量筛选----1

  5. ArcGIS三调地类转三大类

    农用地: DLBM in ('0101','0102','0103','0201','0201K','0202','0202K','0203','0203K','0204','0204K','0301 ...

  6. 三调图斑、地类图斑字段

    三调包含哪些图斑?每个图斑代表什么含义? 图斑 含义 CCWJQ 拆除未尽区 CJDCQ 村界调查区 CJDCQJX 村界调查区界线 CLKZD 测量控制点 CSKFBJ 城市开发边界 CZCDYD ...

  7. 三调数据库及DLTB各个字段含义

    三调包含哪些图斑?每个图斑代表什么含义? 图斑 含义 CCWJQ 拆除未尽区 CJDCQ 村界调查区 CJDCQJX 村界调查区界线 CLKZD 测量控制点 CSKFBJ 城市开发边界 CZCDYD ...

  8. 今奥无人机举证_无人机助力国土 “三调”外业举证

    "首先观察图斑有没有多个地类,然后照片要按规范拍照,做到一次举证到位."近日,安昌街道九鼎村上空,一架无人机正在空中盘旋拍摄照片,原来这是安昌街道自然资源所工作人员借助新型设备开展 ...

  9. 三调 图斑地类面积_国土三调攻坚冲刺,大疆无人机为调查举证提供加速度

    第三次全国土地调查(国土三调)已进入实地举证核查的攻坚阶段,大疆无人机解决方案正在辅助各地进行外业图斑举证工作.从导入图斑.自动规划航线,到举证拍摄.成果 DB 包生成.上传国土调查云平台,一体化工作 ...

最新文章

  1. 2020 我的C++的学习之路 第十章 对象和类
  2. 【leetcode-83】剑指 Offer 18-2 删除排序链表中的重复元素
  3. UDP打洞程序包的源码
  4. java 防止文件重名的方法_使用java避免文本文件中的重复输出?
  5. java中final语句_Java中使用非final变量的不可访问语句
  6. java nio connect_服务器或客户端上的Java NIO套接字在什么时...
  7. 站内搜索(ELK)之数据表字典类型字段的索引思路
  8. 毕设题目:Matlab图像检索
  9. c语言迷你计算器程序,C语言版 模拟计算器的程序
  10. 音乐播放器——SoundManager API介绍
  11. 从一个编程老菜鸟来看Delphi的优点
  12. 主持人大赛-即兴主持之新闻稿
  13. 【git及GitHub使用总结】(一)
  14. 数据结构严蔚敏--综述
  15. 计算广告第四章——合约广告
  16. Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a09_扩展内存
  17. 云服务器ECS远程监控
  18. 信雅达电子影像系统雄踞市场第一
  19. PDF417结构及原理
  20. 学软件的等于电脑高手?

热门文章

  1. kaggle比赛【Riiid! Answer Correctness Prediction】
  2. 使用ffmpeg调用摄像头录制视频(C#)
  3. springboot搭建支付宝手机网站支付
  4. 科普 | 如何创建一个DAO?
  5. 暴力递归到动态规划 02 (绝顶聪明的人的纸牌游戏)
  6. Anchor-free系列——FoveaBox: Beyond Anchor-based Object Detector
  7. 牛客面试系列之Redis
  8. 和 Cee 聊聊如何拿 Google Offer
  9. java天眼培训_Java天眼大型分布式跟踪系统 附带源码_IT教程网
  10. 【Unity2D游戏】实现实时的正确的遮挡关系(引擎自带功能)