设置system.ini 如下内容
Server=122.112.229.220
user=GisTest
Password=chinamtouch.com

该数据库中只提供 成都市火车南站附近的数据请注意,104.0648,30.61658

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 == null)
                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方法支持自动抽稀,可以显示很长的导航路线。

————————————————
版权声明:本文为CSDN博主「种瓜的」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xtgmd168/article/details/85454872

三维电子沙盘数字沙盘可视化大数据人工智能教程MR VR AR M3D GIS第56课相关推荐

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

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

  2. 元宇宙大数据人工智能三维电子沙盘数字沙盘元宇宙大数据人工智能无人机倾斜摄影三维全景建模第18课

    元宇宙大数据人工智能三维电子沙盘数字沙盘元宇宙大数据人工智能无人机倾斜摄影三维全景建模第18课 上一节我们实现了模型的移动控制.这次我们来实现模型的材质控制,首先我们找一个模型.在3dmax中如下: ...

  3. 三维电子沙盘数字沙盘元宇宙大数据人工智能无人机倾斜摄影三维全景建模第17课

    三维电子沙盘数字沙盘元宇宙大数据人工智能无人机倾斜摄影三维全景建模第17课 在SDK中提供底层的模型访问接口,利用好了可以实现模型的移动动画.材质替换动画等等.下面介绍一下具体的操作方法: 这部 分需 ...

  4. 三维数字沙盘交互大数据可视化GIS地理信息系统第十课

    三维电子沙盘交互无人机倾斜摄影大数据可视化GIS地理信息系统第十课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Password=chi ...

  5. M3DGIS全息裸眼三维电子沙盘数字沙盘大数据系统开发教程视频第6课

    M3DGIS全息裸眼三维电子沙盘数字沙盘大数据系统开发教程视频第6课 三维电子沙盘数字沙盘开发教程第6课 gis3d.MapGo(103, 30, 19); //第一次跳转会有点慢,主要是获取数据,如 ...

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

    三维电子沙盘数字沙盘大数据人工智能开发教程第7课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Password=chinamtouch. ...

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

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

  8. 哈尔滨3D可视化数字孪生工厂,三维可视化大数据平台,智慧工厂VR虚拟仿真系统,大屏可视化展示系统

    哈尔滨3D可视化数字孪生工厂,三维可视化大数据平台,智慧工厂VR虚拟仿真系统,大屏可视化展示系统.数字孪生的概念近年来逐渐进入大家的视野,它是指利用数字模型.传感器数据.系统数据等将物理世界在虚拟空间 ...

  9. 公安三维电子沙盘 数字沙盘方案书

    公安三维电子沙盘方案书 根据公安业务管理需求,以"指挥扁平化.管理精细化.勤务可视化.情指一体化.服务民本化"为设计思想,整合和利用三台合一.有无线通信.短信平台.视频监控.治安卡 ...

最新文章

  1. MySQL面试题 | 附答案解析(一)
  2. Spring Cloud分布式微服务云架构—源码结构图
  3. helm3添加harbor仓库:带鉴权--username --password
  4. 在Chrome console里修改Vue界面元素,更新如何刷新回UI?
  5. oracle安装过程掉电,Oracle数据库掉电后ORA-01172磁盘坏块解决方法
  6. python矩阵中的冒号:
  7. java使用初始化输入参数_使用初始化参数配置java web应用程序
  8. linux快速mysql5.7_Linux下安装MySQL 5.7
  9. 炉石怎么看服务器是否维护,炉石传说服务器维护故障补偿方案详细内容
  10. 三年磨一剑,钉的真好听 | 凌云时刻
  11. docker 之容器编排工具Docker Compose
  12. 筛选后系列填充_不会用Excel做数据筛选,老板叼的你没话说!
  13. 谈技术文章翻译的信雅达-上
  14. ExcelPatternTool: Excel表格-数据库互导工具
  15. dw如何制作图片自动切换效果_如何在Dreamweaver中制作图片切换的效果?
  16. eclipse全文搜索多个关键字
  17. win10总强制更新?教你永久关闭
  18. 电子制造企业如何做好商机管理,促成更多交易
  19. 生鲜经营——冷链管理的最后防线
  20. 7、android 高级控件(1)(下拉列表)

热门文章

  1. SWF逆向之AnyGantt 去水印
  2. 计算机专业简历的自我评价,计算机网络专业简历的自我评价
  3. 【python】读取卫星星历(RENIX 3.04)进行卫星位置的计算(北斗卫星专题)
  4. 关于plsql报错 初始化失败
  5. mete40鸿蒙,mete40和mete40 Pro区别?
  6. 群联MPALL(Rel) 7F V5.03.0A-DL07量产工具 PS2251-07(PS2307)
  7. 页面实时显示当前时间
  8. 西门子水处理1200PLC程序+触摸屏程序
  9. 【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程
  10. 机器学习实战笔记 第二章(1)