hightopo实现电力拓扑着色功能
电力系统中传统意义上的网络拓扑着色是指确定网络元件的带电状态,并在图上以不同的颜色表示。
曾经想过,通过设备的带电状态来判断进行着色,比如对于一个设备,如果他的电压在规定范围内,就判断该设备带电,就对其颜色属性进行修改着色,同理各种母线线路也当做设备处理,判断母线电压并进行上色。
这种方案在正常运行中是没有问题的,但是还有一种模拟操作,就是对电网进行模拟分合闸操作,此时就不能依据是否带电来进行着色了,所以要从根本上解决着色问题还是必须罗列出设备之间的关联关系图,然后从进线开始遍历图进行着色。
对于之前的拓扑图,在图纸绘制的过程中,只是将图标拖拽到图纸当中去,但图标与图标之间并没有任何关联,也没有上下级的关系。
对于两个组件的,在图纸中仅仅标名了在X,Y轴的坐标,并没有拓扑关系。
通过实验发现hightopo自带的连线功能,可以在两个node节点间建立关联关系。
Edge类型node会通过source和target连接两个节点,借此我们可以依据这种关联建立这种图关联
关联建立之后,我们就可以依据关联图进行着色。
进入代码层面,在页面加载事件中,我们需要遍历图中节点,建立“图”关系。
//建立图对象
var graph={}
//获得图纸中的所有节点
var datas=view.dm().getDatas()
//遍历节点
for(var i=0;i<datas.length;i++){var data=datas.get(i)//如果节点类型是ht连线类型if(data instanceof ht.Edge){//获得该连线的IDvar id=data.getId()//分别获得Edge连接的两个node节点var nodeId=data.getSource().getId()var nodeId2=data.getTarget().getId()//图中如果没有nodeID,为nodeID创建一个空数组,如果有nodeID就将nodeID对应的连接关系数组取 //出来,将新的连接关系放入graph[nodeId]=graph[nodeId]||[]//该节点通过哪条线与哪个节点关联graph[nodeId].push({node:nodeId2,edge:id})graph[nodeId2]=graph[nodeId2]||[]graph[nodeId2].push({node:nodeId,edge:id})//先设置断电颜色,后期颜色以参数的形式传过来data.s('edge.color','rgb(200,200,200)')}else{//如果节点类型不是Node//如果是图像类型,将其background设为断电颜色data.s('shape.background','rgb(200,200,200)')//如果是组件类型(组件将其背景色通过attr引出为borderColor,修改borderColor为断电颜色)data.a('borderColor','rgb(200,200,200)')}//console.log(i,data.s('edge.color'),data.s('shape.background'))
}//记录已经着色的node,如果已经着色就不会在重复着色了(重复上色会有问题,比如两条母线不同着色顺序会有影响)
var colorNodes=[]
//着色函数
var fillColor=function(node){//如果着色数组包含这个节点if(colorNodes.indexOf(node)!=-1){return}console.log(node)colorNodes.push(node)node.s('shape.background','rgb(212,0,0)')//从图中获得节点关联数组 var nodeIds=graph[node.getId()]//遍历关联节点数组for(var i=0;i<nodeIds.length;i++){//关联的线var edgeId=nodeIds[i].edgevar edge=view.dm().getDataById(edgeId)//对关联的线进行带点着色edge.s('edge.color','rgb(212,0,0)')//关联的节点var nodeId2=nodeIds[i].nodevar node2=view.dm().getDataById(nodeId2)//如果是开关就包含state属性,如果state属性!=-1即开关属于合闸状态,对下一节点进行着色if(node2.a('state')!=-1){fillColor(node2)console.log(node2.a('state'));console.log(node2);node2.a('borderColor','rgb(212,0,0)')}}}var start1=view.dm().getDataByTag('start1')var start2 = view.dm().getDataByTag('start2')fillColor(start1)fillColor(start2)
当然在代码中写死的颜色属性都可以通过参数或者组件自身绑定属性进行动态配置。
之后我们运行图纸
就会根据开关的状态进行着色。
hightopo实现电力拓扑着色功能相关推荐
- 代码编辑器语法着色功能实现-Java版
引言 最近在整理代码时,找到了去年写的一个编辑器语法着色功能的代码.想来刚刚完成的时候,就想着能够公布出来,与大家交流.但直到现在仍寂寞的待在文件夹的角落里,颇有点明珠暗投的意思.自己能理解简单,通过 ...
- 遥信量采集、显示及信息处理功能 遥测及数据处理功能
3.1.2遥信量采集.显示及信息处理功能 3.1.2.1遥信信号的采集 根据对各变电所的遥信采集对象的要求,采集各遥信信号. 3.1.2.2遥信显示 正常运行状态时,各变电所将各种设备的运行状态和信息 ...
- 利用SciTE的导出功能保持代码语法着色效果
利用SciTE的导出功能保持代码语法着色效果 有些集成开发环境的代码,比如Eclipse和Visual Studio的代码拷贝到有道云笔记里,就失去了语法着色效果.(Intellij里的代码拷贝有道云 ...
- 【电力电子】【2012.07】三相升压整流器设计
本文为马来西亚东侯赛因大学(作者:ROHAIZAN BIN SAHER)的硕士论文,共41页. 电力可以通过电力电子设备从一种形式转换成另一种形式,用半导体器件作为开关的电力电子电路功能是改变或控制电 ...
- 智慧电力可视化大屏,赋能虚拟电厂精准减碳
前言 国网河北电力发布的<数字孪生电网白皮书>中提到: 随着"碳达峰.碳中和""构建以新能源为主体的新型电力系统"等战略目标的提出,电网将会接入大量 ...
- 图扑智慧电力可视化大屏,赋能虚拟电厂精准减碳
国网河北电力发布的<数字孪生电网白皮书>中提到: 随着"碳达峰.碳中和""构建以新能源为主体的新型电力系统"等战略目标的提出,电网将会接入大量具有随 ...
- TWaver可视化软件(五)电力可视化 下
之前,我们已经讲过电力行业的三维可视化,包括电厂以及变电站的运营三维可视化管理,本期将接着上篇,继续对电力行业的其他环节可视化进行介绍. 电力可视化 上 3.配电房/机房可视化 配电房通常采用无人值守 ...
- 关于安科瑞电力监控系统在电力工程中的应用与对策
摘要:随着经济的发展,能源消耗速度正不断加快,因此我国提出了绿色可持续发展战略,要求在发展建设中以节能为主,不断减少资源能耗,而电能便是首要控制内容.如今我国为电能使用,对计量表进行了优化创新,日常供 ...
- gvim中进行verilog语言信号追踪、显示拓扑插件
2019独角兽企业重金招聘Python工程师标准>>> 插件使用方法及功能: vtags 是一款在gvim下实现类似verdi的信号追踪.显示拓扑等功能的插件.vtags插件完全使用 ...
- OpsRamp推出以服务为中心的AIOps和云监控功能
OpsRamp是一个面向混合企业的以服务为中心的AIOps软件即服务(SaaS)平台,最近发布了新的拓扑图.增强的人工智能IT运维(AIOps)功能以及针对云原生工作负载的监控功能. 新版的OpsRa ...
最新文章
- 微服务:Java EE的拯救者还是掘墓人?
- Centos下用lamp搭建日志服务器
- VS的几个实用快捷键
- java f.lenth返回值,这个是什么意思,求仔细说明
- 阶乘之和计算_浅谈积分计算的技巧
- java方法重载_在Python中该如何实现Java的重写与重载
- 搭建etcd 3.4.15集群(详细教程,包括选举过程、数据备份和恢复)
- 苹果投影仪_无线投屏才是真正的王道,明基智能商务投影仪E580
- ubuntu 16.04 安装谷歌拼音输入法
- 测试显卡矿卡用什么软件,3分钟看懂:AMD二手矿卡简明鉴别、检测教程,从此脱坑不求人...
- python 给qq点赞_Python实现QQ自动点赞
- 怎么在档案写自己的计算机水平,关于个人档案怎么写范文
- 操作系统( 第二章)知识点总结
- 启动 AXD 配置开发板
- 电商项目5:商品模块
- linux安装硬盘阵列卡驱动,centos7 RAID磁盘阵列卡驱动安装图文教程
- CYUSB3014 USB3.0与FPGA设计
- 都没滤网质量重要 细数净化器鸡肋功能
- c语言Dvv实验报告,自考高等数学(工本)考试重点复习难点.pdf
- 2022年全球市场车载麦克风总体规模、主要生产商、主要地区、产品和应用细分研究报告