gojs 节点右键点击事件_SWMM快速建模方法(3)—建立管线上下游节点编号

    在SWMM中,管线需要输入上下游节点检查井编号,那么在GIS中可否实现自动获取上下游节点编号呢?思路是这样的,首先获得管线两端节点,然后对端点进行融合,删除重复的节点,最后根据坐标关系分别建立管线起点和终点与节点之间的联系。

    1. 先形成管线两端节点(实际41个):对于上一节形成的管线修正shp文件,选择DateManagement Tools—要素—要素折点转点工具—点类型(Both_Ends),形成管线折点shp文件,这里形成了78个节点。

2.再对重复节点删除:这里有两种方法,第一种方法是在管线折点shp文件的属性列表中添加X和Y坐标,DateManagement Tools—要素—添加XY坐标,然后删除XY坐标相同的节点,DateManagement Tools—常规—删除相同的—勾选XY坐标,删除后的节点还有44个,也即这种方法形成的节点数量还是与实际不符合。这里介绍第二种方法:构建缓冲区,原理是这样的,相连接的两个管线实际并严丝合缝连接在一起,也即两条线形成的端部节点并非完全重合,有一定的距离,可以分别对这两个节点画个圈圈即缓冲区,然后两个圈圈相交组合成一个大的圈圈,最后生成这个大圈圈的重心即为两条线端部相连接的唯一节点,当然这个唯一节点可能并非在管线上,但这没关系,后续还有解决的办法。

280c513ec8dc027c40e63a5d13c9152b.png

选择工具箱中AnalysisTools—邻域分析—缓冲区—线性单位300mm—融合类型ALL,形成缓冲区shp文件。这里的线性单位需根据CAD中绘图单位确定,比如CAD中以mm绘制管线,300这个数据是感觉着来的,也即两条管线如果不重合,缝隙间距约300mm,这个可以多尝试几次。

3adb71fd5c384c806bcfaacb43de7a1c.png

此时行的缓冲区为一个大的面图层,即所有的管线节点处画的大圈圈形成了一个大的面域,为了得到单个的节点,需要对其进行炸开操作,具体操作如下:

1)内容列表—缓冲区shp文件—右键选中选择编辑要素—开始编辑,进而使得该shp文件处于编辑状态;

2)然后上边工具栏空白处右键操作调出高级编辑工具栏;

3)接下来内容列表—缓冲区shp文件—右键选中选择全选,也即选择了整个面域作为炸开对象;

4)点击高级编辑工具栏—拆分多部件要素—停止编辑并保存,此时的缓冲区shp文件有一个面域形成了41个面,拆分就是把里面的圈圈分割成一个一个,至此删除并融合了管线节点形成了41个节点面。

677a5b5ac2d1683d0b476800b33354c7.png

3.将形成的41个面转化为节点,DateManagement Tools—要素—要素转点,将缓冲区shp文件转化为管线修正折点shp文件。随后对其添加XY坐标,同上。

4.对于两个几乎重合或本身就是重合的点而言,如何判断是否为一个点呢,最简单的办法是判断他们的坐标,单纯只匹配X坐标或Y坐标误差较大,比如X轴上的点X坐标始终都相同,但是点不同;其次,由于线端点始终在线上,而上述缓冲区形成的检查井节点未必在线上,就像线端点的X坐标是3.14,上述通过缓冲区形成的折点X坐标是3.1415,如何将这两个点匹配在一起呢,那么就需要对后者截断,只取3.1415中的3.14即可,这时候两个3.14就可以建立一一对应的关系了。再比如,管线起点坐标(2.1415,3.2658),管线起点处检查井坐标(2.1428,3.2673),按道理两个点应该是一致的,但是处理过程中出现了不一致,这时候需要拟合两者关系,通过建立文本字符串,管线起点字符串2.14-3.26,检查井字符串2.14-3.26,一次性的可以同时比对XY坐标,这时候两个数据一致了,就可以建立一一对应关系了。

5.建立管线修正折点,也即检查井处属性列表中“整合”文本字符串,通过字段计算器将X和Y坐标整合进该字段。X坐标和Y坐标均取整。

776dd047bfaba89107d5161ac2aeb6c3.png

在字段计算器中通过Python代码将XY坐标连接在在一起,连接符为-,代码如下:

def f(POINT_X,POINT_Y):

      a=str(POINT_X)

      b=a[:9]

      c=str(POINT_Y)

      d=c[:10]

      e=b+"-"+d

      return e

整合=f( !POINT_X! , !POINT_Y! )

代码含义是将X坐标和Y坐标均由双精度数据转化为字符串数据,然后字符串长度分别取9和10,也即X和Y坐标均取整数,然后再对这两个取整后的字符串合并在一起,之所以合并是为了增加匹配的精度,可以同时匹配XY数据。

6.对于管线采用同样的方法,在管线修正属性表中增加QX、QY、ZX、ZY、QZ、ZZ字段,前四个字段分别为起点和终点的XY坐标,后两个分别为起点坐标整合和终点坐标整合。

df3428b0bc3ab90136bf0172acd8e5e7.png

   7. 建立连接关系,也即一一对应关系,内容列表—管线修正shp右键选择连接和关联—连接,将管线终点整合ZZ和管线修正折点属性表中的整合建立一一对应连接。可以看出有3个管线没有匹配上,这是因为管线终点与检查井离得太远,按照上述方法拟合了也不行,这时候需要手动编辑建立关系。然后将该数据框整体导出形成管线终点对应shp文件,同理在此文件基础上再对管线起点整合QZ和管线修正折点整合一一对应,建立连接关系,之后再次形成数据框,形成新的管线一一对应shp文件。

cf3975ee8aa8f495f7d5a173e67c9e16.png

0525c3fa91b4605f35a121a7e89f188d.png

    对于没有建立一一对应关系的检查井标号,需要处于编辑状态下手动需填写井的编号,当然这个工作量很小。

至此,管线上下游编号建立完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 设置setmultichoiceitems设置初始化勾选_Linux内核启动:虚拟盘空间设置和内存管理结构初始化...

1. 设置虚拟盘并初始化接下来main函数将对外设中的虚拟盘区进行设置。 检查makefile文件中"虚拟盘使用标志"是否设置, 以此确定系统是否使用了虚拟盘(假设有虚拟盘,大小设置为2 MB)。 操作系统从缓冲区的末端起开辟2MB内存空间设置为虚拟盘&am…

关闭mysql服务的方法有哪些_MySQL--启动和关闭MySQL服务

介绍了启动服务器的两种方式,以及可能遇到的问题第一种:系统服务1)可以通过右击方式一步步找到服务右击计算机->选择管理->找到服务,然后双击打开,找到mysql,我安装的是mysql8.0所以服务的名称显示是mysql80&…

devstack mysql_DevStack部署OpenStack开发环境 - 问题总结

建议在使用DevStack搭建OpenStack开发环境前,先安装好开发工具包组.特别是gcc,主要一定是在yum update -y 之前,否则更新完系统后,在安装开发工具包会出现很多依赖包因为版本更新而无法安装.要部署OpenStack需要注意若电脑配置不高,我自己的经验是先最小化或基本Web安装,然后,再…

linux 安装RabbitMQ 注意版本

Linux下安装RabbitMQ 一下载依赖包 1.下载Rabbitmq 所依赖的环境gcc、erlang包和rabbitmq包,这里演示是网上下载gcc 依赖 1yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xzerla…

jquery.js把我的时间修改了为什么?_电气老手在PLC程序调试修改时的几个必备小窍门,看你知道几个?...

我们工程师在设计程序,调试程序,修改程序的时候,为了方便以后对程序的理解,最好是对程序进行注释,能够对程序进行注释也是比较好的一个习惯。为什么这么说呢?因为我们人的脑容量是有限的,或多或…

android如何用adb shell启动应用程序

昨天研究了很久,可能由于基础比较菜吧,所以,没有搜到一个可以直接解决问题的,需要综合几个之后,问题得以解决,记下方法,为了方便自己之后遇到同样问题,也为了方便搜索同样问题的朋友…

mysql数据库删除操作指令_MySQL删除数据库的命令是什么?

删除数据库的命令是:“DROP DATABASE 数据库名;”;例“drop database student;”就是删除名为student的数据库。“DROP DATABASE”语句可以用于删除数据库。使用drop 命令删除数据库drop database语句可以用于删除数据库。drop database命令格式&#xf…

mariadb与mysql的兼容_「MySQL架构」MariaDB versus MySQL: Compatibility

完全替代MySQLMariaDB版本的功能相当于一个“完全替代”的MySQL版本,但有一些限制。这意味着:MariaDB的数据文件通常是二进制的,与MySQL版本的数据文件兼容。所有的文件名和路径通常是相同的。数据和表定义文件(.frm)文件是二进制兼容的。请参阅下面的注…

mysql数据存储和函数_MySQL数据库——存储和函数

一、存储过程1 基本语法CREATE PROCEDURE sp_name ([proc_parameter[,...]])[characteristic ...] routine_body格式[IN|OUT|INOUT]param_name type2. IN、OUT、INOUT参数(1)带84存储过程实例1 #带多重IF的存储过程2 CREATE PROCEDURE SP_SGRADE_LEVEL(IN p_level char(Repeat语…

在Salesforce中创建Approval Process

在Salesforce中可以创建Approval Process来实现审批流程的功能,实际功能与我们常说的Workflow很相似,具体的设置步骤如下所示 1):选择对应的Object去创建对应的Approval Process 2):点击下图中的Create New…

Python 运算符括号

转载于:https://www.cnblogs.com/fanweisheng/p/11236193.html

计算机二级java试题_计算机二级考试《Java》试题及答案

计算机二级考试《Java》试题及答案选择题(每小题2分,共50分)下列各题A、B、C、D、 四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应的位置上,答在试卷上不得分。(11)下列对Java语言的叙述中,错误的是()…

绕过waf mysql爆库_iwebsec刷题记录-SQL注入漏洞

被推荐了这个web平台,感觉挺适合新手的,网上搜了下没看到有人写wp,这里本入门萌新来稍微整理下自己解题的过程SQL注入漏洞01-数字型注入http://localhost:32774/sqli/01.php?id1发现有报错You have an error in your SQL syntax; check the …

【Vue】组件的基础与组件间通信

转载:https://segmentfault.com/a/1190000016409329 Vue.js 最核心的功能就是组件(Component),从组件的构建、注册到组件间通信,Vue 2.x 提供了更多方式,让我们更灵活地使用组件来实现不同需求。 一、构建组…

设计模式的功力长了!

今天醒来后,感觉理解了原来比较复杂的一些设计模式,很好,就像小时候感觉长高一样。学习设计模式有一年多了。进步需要时间!

java 验证码校验_JavaWeb验证码校验功能代码实例

后台生成验证码工具方法/** 设置图片的背景色*/public static void setBackGround(Graphics g, int WIDTH, int HEIGHT) {// 设置颜色g.setColor(Color.WHITE);// 填充区域g.fillRect(0, 0, WIDTH, HEIGHT);}/** 设置图片的边框*/public static void setBorder(Graphics g, int…

CSDN登陆校验码模式识别程序

下班后,吃饭前快速写了这么一个东西,以证明图片验证码的脆弱。防君子,不防XX。本来应该使用HTTP协议直接从CSDN的登陆页面DOWN校验图片的,因为时间仓促,所以没有仔细设计。只是做一个示例,还要麻烦大家手工…

关于异性朋友

听到别人在问一个问题:“可是你在大学里又有几个很要好的女性朋友?”   想到自己,却是一个没有。奇怪啊,我虽然木讷,但还不到白痴的地步,怎么会一个没有呢?思讨一下,明白了&#…

java全文检索工具_全文检索工具elasticsearch:第三章: Java程序中的应用

搭建模块创建二个项目gmall-list-service的appliction.properties:server.port8073spring.datasource.urljdbc:mysql://localhost:3306/gmall?characterEncodingUTF-8spring.datasource.usernamerootspring.datasource.passwordrootmybatis.configuration.map-underscore-to-c…

初探机器学习之使用百度EasyDL定制化模型

一、Why 定制化模型 一般来说,各大云服务厂商只会提供一些最常见通用的AI服务,针对具体场景的AI应用则需要在云服务厂商提供的服务之上进行定制。例如,通常的图像识别只能做到分析照片的主题内容,而我的需求是给定指定场景的图片&…