武警中队三维电子沙盘智慧磐石 科技强勤开发教程第十三课

SDK中自带了一套 导航系统,用的是比较详细的导航数据,你们懂的,修正了一下在使用互联网服务器时候的一个BUG,请在使用这部分功能时务必下载上面地址中的核心更新包覆盖。 截图如下:

该导航图为切片导航图。年份嘛,你们懂的,另外导航系统为线程异步工作。因需要数据库支持,所以如果你是用的互联网服务器

导航算法得到路径的时间会有所增长,建议是把数据库下载到本地才可以看到真实的导航算法速度。

导航算法在单独的ShortRoad.dll中(可独立使用,担需要相关数据文件。)导航算法可根据权值进行微调,目前有高速优先和,最短路径两种。

ShortRoad.ShortPath.MyPareant = this.Dispatcher;  //因为导航算法为异步委托+多线程方式完成,需要一个异步委托主对象(静态)。

ShortRoad.ShortPath.chuslhi(); //初始化数据(静态)

MyShort = new ShortRoad.ShortPath();

//初始化导航类

MyShort.OnShortPath += new ShortRoad.ShortPath.PathOver(ShortPath_OnShortPath);

//导航数据回调事件

MyShort.OnPro += new ShortRoad.ShortPath.ChuLiPro(ShortPath_OnPro);

//导航算法信息事件。

MyShort.GetShortPath(BeginPoint.X, BeginPoint.Y, EndPoint.X, EndPoint.Y,false);

//获取最短路径:

参数起点经度,纬度,终点经度,纬度,是否启用高速优先。

路径回调事件:
     void ShortPath_OnShortPath(System.Collections.Generic.Dictionary<string, System.Collections.Generic.List<System.Drawing.PointF>> value,System.Windows.Point bx,System.Windows.Point ey)

{            double Totolength = 0;

Pareant.PlayPath.Add(new Point3D(BeginPoint.X, BeginPoint.Y, 0));

foreach (string key in value.Keys)

{

Totolength += Convert.ToDouble(key.Split('#')[1].Split(',')[12]);

foreach (System.Drawing.PointF y1 in value[key])

{

Pareant.PlayPath.Add(new Point3D(y1.X, y1.Y, 0));

}

}

}

事件参数1:System.Collections.Generic.Dictionary<string,System.Collections.Generic.List<System.Drawing.PointF>>

存放有所有的路径数据 KEY为路径详细信息内容如下(Value中为经纬度数据):

"清江东路#464400 , 49559714 , 1 , 0302 , 130 , 3 , 2 , 1 ,  , 47106369 , 5880354 , 3 , 0.012 , 1 , 1 ,  , 0 , 1 , 0 , 510105 , 510105 , 1 ,  ,  , 5 ,  , 4 , 3 , 11110001110000000000000000000000 , 0 , 0 ,  ,  ,  , 600 ,  , 1 , 1 ,  , 清江东路"

该KEY描述了这条路的所有信息。可参看下表:

字段设置

取值范围

注释

含义

名称

类型

1

图幅号

MapID

Char(8)

2

号码

ID

Char(13)

Link 号码

3

种别代码数

Kind_num

Char(2)

1—4

种别个数

4

种别代码(M)

Kind

Char(23)

道路等级属性,多个之间用"|"分隔

(1)

5

幅宽

Width

Char(3)

15

<=3.0m

(2)

30

(3.0m, 5.5m]

55

(5.5m, 13.0m]

130

>13m

6

通行方向

Direction

Char(1)

0

未调查:默认为双方向都可以通行

1

双向:双方向可以通行

2

顺方向:单向通行,通行方向为起点到终点

方向

3

逆方向:单向通行,通行方向为终点到起点

方向

7

收费设置

Toll

Char(1)

0

未调查

(3)

下面上代码,先要引用shortroad.dll

ShortRoad.ShortPath.MyPareant = this.Dispatcher;  //因为导航算法为异步委托+多线程方式完成,需要一个异步委托主对象(静态)。
            ShortRoad.ShortPath.chuslhi(); //初始化数据(静态)
            MyShort = new ShortRoad.ShortPath();
            //初始化导航类
            MyShort.OnShortPath += this.MyShort_OnShortPath;
            //导航数据回调事件
 
 
            MyShort.OnPro += MyShort_OnPro;
            //导航算法信息事件。

#region 导航系统
        System.Windows.Point FirstJW= new System.Windows.Point();
        System.Windows.Point secJW = new System.Windows.Point();
        private void Button_Click_15(object sender, RoutedEventArgs e)
        {
            gis3d.State = GisLib.WindowsMT.GisState.获取经纬度;
            gis3d.GetJWEvent += Gis3d_GetJWEvent2;
                
        }
 
        private void Gis3d_GetJWEvent2(System.Windows.Media.Media3D.Point3D value)
        {
            gis3d.GetJWEvent -= Gis3d_GetJWEvent2;
            FirstJW = new System.Windows.Point(value.X, value.Y);
            gis3d.State = GisLib.WindowsMT.GisState.漫游;
        }
 
        private void Button_Click_16(object sender, RoutedEventArgs e)
        {
            gis3d.State = GisLib.WindowsMT.GisState.获取经纬度;
            gis3d.GetJWEvent += Gis3d_GetJWEvent3;
        }
 
        private void Gis3d_GetJWEvent3(System.Windows.Media.Media3D.Point3D value)
        {
            gis3d.GetJWEvent -= Gis3d_GetJWEvent2;
            secJW = new System.Windows.Point(value.X, value.Y);
            MyShort.GetShortPath(FirstJW.X, FirstJW.Y, secJW.X, secJW.Y, true);
            gis3d.State = GisLib.WindowsMT.GisState.漫游;
        }
 
        private void MyShort_OnPro(string value)
        {
            FirstShort.Content = value;
        }
 
        private void MyShort_OnShortPath(Dictionary<string, List<PointF>> value, System.Windows.Point mbegin, System.Windows.Point mend)
        {
            if (value == )
                return;
            if (value.Count == 0)
                return;
 
 
 
            List<Point3D> PlayPath = new List<Point3D>();
 
            double Totolength = 0;
 
            // Pareant.PlayPath.Add(new Point3D(BeginPoint.X, BeginPoint.Y, 0));
            foreach (string key in value.Keys)
            {
                if (key.Length > 12)
                {
                    if (key.Split('#').Length >= 2)
                        Totolength += Convert.ToDouble(key.Split('#')[1].Split(',')[12]);
                }
 
                foreach (System.Drawing.PointF y1 in value[key])
                {
                    PlayPath.Add(new Point3D(y1.X, y1.Y, 0));
                }
 
            }
            PlayPath.Add(new Point3D(secJW.X, secJW.Y, 0));
            Random t1 = new System.Random();
 
            System.Windows.Media.Color pp = new System.Windows.Media.Color();
           
                pp = Colors.Red;
 
            //调用SDK提供的画路方法把路画出来
            gis3d.RemoveShotPath("导航路径");
            gis3d.DrawShortPath(PlayPath, "导航路径", pp, true);
 
 
 
        }
        #endregion

效果如下:再三强调数据库配合,所以用互联网服务器的时候。在计算时会比较慢,担因为使用的是线程模式,所以不影响主进程做其它事。SDK自带的drashortpath方法支持自动抽稀,可以显示很长的导航路线。

武警中队智慧磐石,科技强勤,三维电子沙盘开发教程第十三课相关推荐

  1. 无人机倾斜摄影三维全景电子沙盘开发教程第5课

    无人机倾斜摄影三维电子沙盘开发教程第5课 多点触摸三维电子沙盘可视化交互地理信息系统(M3D GIS)秉承贰拾多载(2001)工匠精神自主知识产权的通过手势多点触摸控制的大型二.三维一体化地理信息系统 ...

  2. 三维电子沙盘开发教程 数字沙盘培训教程

    三维电子沙盘开发教程 数字沙盘培训教程 无人机倾斜摄影三维全景建模 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Password=chi ...

  3. 虚拟现实MR VR AR三维数字沙盘电子沙盘开发教程第2课

    虚拟现实MR VR AR三维数字沙盘电子沙盘大数据人工智能开发教程第2课 上一篇实现了一个基本球,在基本球中已经实现了类似google earth的操作,即鼠标单键拖动,滚轮放大,鼠标中键按下左右旋转 ...

  4. 数字沙盘虚拟电子沙盘开发教程第9课

    多点触摸三维电子沙盘可视化交互地理信息系统(M3D GIS)(平衡+极简+实用)TREND MTOUCH 3D GIS(English)是成都趋势电子有限责任公司秉承贰拾多载(2001)工匠精神自主知 ...

  5. 电子沙盘数字沙盘开发教程第26课:三维数字沙盘M3D GIS导航数据开发代码说明

    电子沙盘开发教程第26课:三维数字沙盘M3D GIS导航数据开发代码说明 SDK中自带了一套 导航系统,用的是比较详细的导航数据,你们懂的,修正了一下在使用互联网服务器时候的一个BUG,请在使用这部分 ...

  6. 三维电子沙盘数字沙盘开发教程第3课

    三维电子沙盘数字沙盘开发教程第3课 下面介绍矢量图层的控制显示:上代码 foreach(string key in gis3d.SetFile.Biao.Keys)// gis3d.SetFile.B ...

  7. 三维电子沙盘无人机倾斜摄影开发教程第22课

    三维电子沙盘无人机倾斜摄影开发教程第22课 gis3d.MapGo(103, 30, 19); //第一次跳转会有点慢,主要是获取数据,如果是用的公网服务器可能会卡一下.第二次就不会了 运行上面的代码 ...

  8. 三维数字沙盘电子沙盘M3DGIS地理信息立体显示系统开发教程第9课

    三维数字沙盘电子沙盘M3DGIS地理信息立体显示系统开发教程第9课 虚拟三维数字沙盘开发教程第9课 查询面板调用: private void Button_Click_11(object sender ...

  9. M3DGIS三维电子沙盘数字沙盘可视化交互地理信息系统开发教程第4课

    M3DGIS三维电子沙盘数字沙盘可视化交互地理信息系统开发教程第4课 虚拟三维数字沙盘开发教程第4课 下面介绍怎样在地球上增加自己的FrameworkElement,因为FrameworkElemen ...

最新文章

  1. inssider v4.3.7 key_小布翻译软件下载-小布翻译器 v2.5.1 免费版
  2. 微信小程序,技术创业的时代可能要来了,但窗口期不会太长
  3. 初探下一代SIEM核心技术发展趋势
  4. 一天一种设计模式之二-----备忘录模式
  5. Javascript高级程序设计第四版详细测评
  6. 千方百剂2008升级到千方百计II 脚本执行错误 请检查第69行
  7. Python量化分析财务指标,教你用净资产收益率选股!
  8. 怎么把html导入xmind,XMind思维导图怎么导入图标?
  9. 阵列信号处理笔记-波达方向DOA-子空间方法
  10. B端和C端产品主要差异:用户、体验、数据
  11. 北京圣思园_Java SE Lesson 11
  12. YOLOv7改进主干系列:首发结合最新 QARepVGG 升级Rep结构, 本文对其进行原创改进 QARepNeXt 结构,基于美团提出一种量化感知方法:再一次让 RepVGG 变得更好
  13. 唯众本科Web前端专业解决方案
  14. 【c++提高1】最近共先祖LCA优化求法
  15. java描述空间直线_java实验作业类的定义与描述
  16. SCI分区方法---JCR期刊分区及其检索方法
  17. 大一作业HTML网页作业 HTML CSS制作二十四节气网页
  18. adb remount 失败
  19. 怎么判断手机天线坏了_如何确认iphone6wifi天线坏了
  20. iMeta期刊部分文章被PubMed收录

热门文章

  1. 大数据培训技术Elasticsearch集群健康
  2. 华南农业大学 Linux 实验大全
  3. BBC纪录片:新型冠状病毒是如何入侵的?
  4. pickle 库的使用
  5. Unity 内存优化之理解托管堆和本机堆
  6. 华为鸿蒙系统手机魅族,魅族宣布接入鸿蒙系统 魅族鸿蒙系统手机是哪些?
  7. 寂静之地百度云在线观看迅雷下载A Quiet Place高清BT下载
  8. 弹球小游戏java代码_java实现简单的弹球游戏
  9. 读写csv文件时出现‘gbk‘问题
  10. jetpack组件之Room原理分析