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. SIG Cloud Provider Alibaba 网研会第 2 期顺利召开 | 云原生生态周报 Vol. 46
  2. delphi 垃圾回收框架
  3. 站在巨人肩膀上的意思就是拒绝重复造轮子,分享12个常见的js插件
  4. joomla添加html,html – 向joomla的前端组件视图添加表单
  5. 手把手教你玩转网络编程模型之完成例程(Completion Routine)
  6. linux slub分配器浅析
  7. 双端队列 BFS + Chamber of Secrets CodeForces - 173B
  8. vue.extend与vue.component的区别和联系
  9. 计算机维修队,浙江万里学院计算机维修队
  10. php txtsql 说明,PHP学习笔记(2)txtSQL文档错误
  11. 我真out了,高端人士都这样玩儿?
  12. 珍稀干货!阿里 Web 音视频开发趟坑指南
  13. 8.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 指标监控与报警
  14. R语言学习之R程序包安装
  15. 计算机图标制作教程,电脑主题ICO图标制作方法 详细教程你一学就会
  16. 【数电】存储器容量的扩展
  17. 福昕阅读器中删除单个,多个注释,隐藏所有注释。
  18. 面试字节跳动后台开发(实习)
  19. 北京三大春天赏花圣地
  20. 大数据查询引擎 PrestoDB

热门文章

  1. 盛大Everbox邀请码[2011-01-20]
  2. 35岁测试工程师,公司因疫情降本增效被辞退
  3. 前端js 下载xls表格
  4. Android设置全局字体大小,实现小中大字体功能
  5. Python 基础知识教程
  6. 2012年5月《苹果的安全之缺》
  7. 2020-11-29 漫谈email之smtp、pop3、spf dkim
  8. 基于Java标准化考试系统
  9. 【Vitis Accel】2 - Vitis 应用加速开发平台简介
  10. 万代南梦宫面向中国市场推出《太鼓达人》限量版月饼