首页 / 浏览问题 / 组件GIS / 问题详情
dataflowlayer使用方法
4EXP 2017年11月06日
准备要用dataflowlayer来实现实时显示飞机飞行情况,但是给的帮助资料对这方面介绍不对,网上找也就一篇文章介绍到这个,不过不完全懂,特别是在通过ip和port接收数据这块,是具体如何实现的,完全不明白,有知道的请讲解下吧!

1个回答

您好,该接口主要是通过基于Socket来读取数据,然后在动态图层上面显示,这儿有一篇关于基于Socket应用介绍的博文,参考http://blog.csdn.net/supermapsupport/article/details/70895761?locationNum=6&fps=1

DataFlowLayer.Mode 属性决定数据来源于服务器还是客户端,DataFlowLayer.Port 属性DataFlowLayer.IP属性是用来访问Socket服务器的IP和端口号,DataFlowLayer.MessageType 属性 是接收的数据格式,通常是CSV,Json,Geojson,当然用户也可以自定义。其他属性和方法可以参考帮助文档,该接口使用的技术点就在于如何使用Socket。

5,985EXP 2017年11月06日
嗯啦,重点就是如何实现socket,dataflowlayer在自己属性中已经定义了IP和port,我现在不太明白,dataflowlayer在后台到底实现了哪些功能,还需要我自己去定义socket的哪些东西
大神大神,还是不会用dataflowlayer啊,这个图层到底如何实现数据接收啊
假如我们一CSV(使用逗号分隔值)格式的数据为例,Socket服务端工作:读取CSV的一条数据,向客户端发送一条消息

Socket客户端工作:

1. 需要设置数据连接的服务器

       m_dataflowlyr.IP = "127.0.0.1";//本机
       m_dataflowlyr.Port = 5565;

2.指定数据流格式

       m_dataflowlyr.MessageType = DataFlowMessageType.CSV;

3.解析接收的数据流

       

          (1).设置字典,字段信息与数据格式保持一致

Dictionary<String, FieldInfo> m_formatDic = new Dictionary<String, FieldInfo>();

          (2)解析数据流

             m_dataflowlyr.SetFormatDict(m_formatDic);

4.指定要构造的点对象的信息

             m_dataflowlyr.KeyFieldName = "1";
            m_dataflowlyr.XFieldName = "2";
            m_dataflowlyr.YFieldName = "3";//1,2,3字段为第三步在解析数据流中所设置的字段

5.设置对象风格

6.将图层加载到地图中

 m_map.DynamicLayers.Add(m_dataflowlyr,true);
总的来说,服务端负责读取数据,发送消息,客户端设置好端口号和IP,底层会自动接收消息,

再调用m_dataflowlyr.SetFormatDict(m_formatDic)方法,会按照你设置的字段格式去解析消息,再指定你设置的字段信息中,哪个字段作为构造点对象X字段哪个字段作为Y,底层会自动构造点对象,你需要自己设置好对象的风格就行了,然后把图层加载到地图中。
CSV数据格式一般是GPS数据格式,即同一行字段值顺序分别是 ID, time, x, y
...