【GeoEvent】实现点要素服务几何信息联合StreamServer流服务数据信息绑定

news/2024/9/19 11:20:12/文章来源:https://www.cnblogs.com/wongjzzz/p/18404055

数据情况

通过sid字段挂接,35个一组

数据流结构 CSV

image-20240905135654-isgnkg1

IOT点位数据

image-20240905135851-5ok72jh

点位数据提前发布为FeatureServer要素服务

注意关联字段类型与GeoEvent定义一致

image-20240905141736-myvges8

image-20240905141718-m8u9rox

创建GeoEvent定义(数据结构)

根据数据流结构决定,注意关联字段与GeoEvent定义一致

image-20240905140107-7bn7pau

创建TCP接收器

image-20240905140251-3iuy15z

image-20240905140457-e5j8rvi

推送csv数据

import socket
import time# 指定服务器的IP地址和端口号
server_ip = '192.168.1.142'
server_port = 5565# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 连接到服务器
client_socket.connect((server_ip, server_port))while True:# 打开CSV文件with open('stationRealTime.csv', 'r') as file:# 跳过标题行next(file)# 初始化行计数器line_count = 0# 初始化数据缓存data_buffer = ''for line in file:# 将当前行添加到数据缓存data_buffer += "STA," + lineline_count += 1# 每35行或文件末尾,发送数据if line_count == 35:# 发送数据client_socket.sendall(data_buffer.encode('utf-8'))print(data_buffer)# 清空数据缓存和行计数器data_buffer = ''line_count = 0# 等待1秒``time.sleep(1)# 发送剩余的数据(如果有)if data_buffer:client_socket.sendall(data_buffer.encode('utf-8'))print(data_buffer)time.sleep(1)client_socket.close()

image-20240905140556-zjrvi7d

创建StreamService输出器

image-20240905140840-41yo099

image-20240905141002-b9hqz3p

选择关联要素

image-20240905141642-joocl9y

创建GeoEvent定义

image-20240909095132-9njbeb8

前端页面构建

主要实现:

  1. class-breaks 根据data分级渲染
  2. popupTemplate 点击弹窗显示 sid 、data
  3. boatLabelClass 标注 data 值
<html lang="zh-cn"><head><meta charset="utf-8" /><meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" /><title>StreamLayer | Sample </title><style>html,body,#viewDiv {height: 100%;width: 100%;margin: 0;padding: 0;}#streamLayerDiv {padding: 10px;background-color: #f5f5f5;}</style><link rel="stylesheet" href="https://js.arcgis.com/4.30/esri/themes/light/main.css" /><script src="https://js.arcgis.com/4.30/"></script><script>require(["esri/Map","esri/views/MapView","esri/layers/StreamLayer","esri/geometry/Polygon","esri/Graphic","esri/widgets/LayerList","esri/core/reactiveUtils","esri/layers/support/LabelClass","esri/widgets/Legend"], (Map, MapView, StreamLayer, Polygon, Graphic, LayerList, reactiveUtils, LabelClass, Legend) => {let streamLayer, streamLayerView;const svcUrl = "https://ip142.gsgz.com:6443/geoscene/rest/services/station-stream-out/StreamServer";const map = new Map({basemap: "gray-vector"});const view = new MapView({container: "viewDiv",map: map,center: [113, 23],zoom: 9});view.ui.add(new LayerList({ view }), "bottom-left");let renderer2 = {type: "class-breaks",field: "data",classBreakInfos: [{minValue: 100,maxValue: 300,symbol: {type: "simple-marker",size: 10,color: "red",outline: {color: [0, 255, 0],width: 1}}},{minValue: 300,maxValue: 600,symbol: {type: "simple-marker",size: 10,color: "yellow",outline: {color: [0, 255, 0],width: 1}}},{minValue: 600,maxValue: 1000,symbol: {type: "simple-marker",size: 10,color: "green",outline: {color: [0, 255, 0],width: 1}}}],defaultSymbol :{type: "simple-marker",size: 10,color: "blue",}}const boatLabelClass = new LabelClass({labelExpressionInfo: { expression: "$feature.data" },symbol: {type: "text",  // autocasts as new LabelSymbol3D()symbolLayers: [{type: "text",  // autocasts as new TextSymbol3DLayer()material: { color: [ 49,163,84 ] },size: 12  // points}]}});// Construct Stream Layerconst layer = new StreamLayer({url: svcUrl,purgeOptions: {displayCount: 10000},popupTemplate: {title: "{status}",content: "{sid}, {data}"},renderer: renderer2,labelingInfo : [boatLabelClass],timeInfo: {trackIdField: "sid"}});map.add(layer);const legend = new Legend({view: view});view.ui.add(legend, "top-left");});</script>
</head><body><div id="viewDiv"></div>
</body></html>

验证

StreamServer订阅

StreamServer流服务不带位置信息

image-20240909095253-7y03koi

前端页面

值动态变化,实现数据流绑定点位

PixPin_2024-09-09_10-17-31-20240909101801-pzowrrt

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

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

相关文章

宝塔安装JDK

软件商店安装JDK后,设置一下JDK的版本: 拷贝一下JDK的路径:vim /etc/profile//追加内容 export JAVA_HOME=/www/server/java/jdk1.8.0_371 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH //保…

腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

ONCE论文阅读笔记

ONCE: Boosting Content-based Recommendation with Both Open- and Closed-source Large Language Models论文阅读笔记 Abstract ​ 现有的推荐器在理解项目内容方面面临着巨大挑战。大语言模型(LLM)拥有深层语义理解能力和来自预训练的广泛知识,已被证明在各种自然语言处理…

LeetCode刷题笔记9.2-9.9

leetCode刷题笔记(9.2-9.9) 48.旋转图像(9.3) 1)图像即二维数组,图像的旋转本质上是二维数组的旋转变换 2)二维数组从外层来看,是若干个子数组的集合,子数组内部维护各自的元素,即若干个row里是row.length个column 3)由此可理解下面几个关于二维数组的函数:创建二维数…

从零搭建 Docker 私有库

对于涉及机密的公司,不可能提供镜像给公网中的镜像仓库,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。对于涉及机密的公司,不可能提供镜像给公网中的镜像仓库,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。 Docker Regi…

[C++ Daily] 确保类复制了所有应该复制的成员

确保类复制了所有应该复制的成员结果:源代码: #include <iostream> #include <string> #include <vector> /*** copy操作应该包含对象内的所有成员变量及所有父类的成员变量,* 此种可以通过调用对应的拷贝构造与拷贝赋值操作完成*//// @brief simple termina…

Docker 知识梳理及其安装使用

Docker 介绍 Docker 是一个强大的工具,用于高效开发、打包和部署应用程序。Docker 是一种容器管理服务。Docker 于 2013 年发布。它是开源的,可用于 Windows、macOS 和 Linux 等不同平台。Docker 正在快速交付、测试和部署代码。这样可以减少编写代码和在生产环境中运行代码之…

硬件功能电路

EEPROMLCD1602电路数码管max485红外开关蜂鸣器译码器移位寄存器步进电机控制复位电路下载电路电源模块温度模块红外热敏电阻交通灯时钟555彩屏矩阵按键单片机烧录电路数码管红外发射显示模块红外接收蜂鸣器驱动流水灯usb供电单片机矩阵单片机电路时钟ADC接口电路单片机电源声音…

BeanShell预处理器获取jmeter请求后变量无法替换

背景 jmeter接口验签逻辑是从请求参数中获取值处理加密验签后,讲请求参数中的sign值替换 如果处理后直接讲sign生成Jmeter变量,在当前请求是无法替换的,因为jmeter请求的URL和body已经运行,不会再重新运行替换解决方法 在当前预处理程序中再写处理当前请求的逻辑// 替换URL…

word 看不到页眉和页脚 以及空白页面的设置

修改文档时,发现递交的文档 不显示 页眉和页脚 以及空白页面的设置在选项卡中勾选jcmaxx33@gmail.com jcmaxx33Team@github

plsql工具无法显示tables问题

每次打开plsql12时tables、views等为空,没有表和视图等 解决办法:选择tool->preferences2、取消勾选最近使用最后重新选择已经登录的用户,就可以正常显示table了

Ftrans无缝替代FTP方案:保障数据传输的安全性与合规性!

FTP(文件传输协议)是一种用于在网络上进行文件传输的标准网络协议,历史悠久并且被广泛使用。但随着业务规模和文件体量的快速增长,在应用实践中,FTP存在一些安全和效率问题。因此政府单位需要可以平滑替代FTP的文件传输解决方案,从而更好的保障数据安全、提升工作效率。具…