原文:利用WPF建立自己的3d gis软件(非axhost方式)(十二)SDK中的导航系统

先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew密码:1te1

地图数据包(sqlserver2008R2版本,也可以不下载):  https://pan.baidu.com/s/1PjcNamad7OVpCrsVJ7dwFQ 密码:uw9r

下载 核心SDK升级包:https://pan.baidu.com/s/1Q3dlM-Va-RmlEYbnmi8Xuw 并覆盖到SDK目录中。里面有也每一篇的例子代码

完整的视频演示:http://v.youku.com/v_show/id_XMTU4MTI5NTE4NA==.html  再三强调一下,用互联网的服务器使用速度上会卡顿,建议最好的效果一定要下载sql数据库,本地建服务。

下载完成以后,解压出来,将30-1.exe 拖动到 把授权拖到我上面install.bat上完成授权安装。。。

 

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

  ,

 

 

http://www.chinamtouch.com QQ:40140203  微信公众号:m3dgis2001

利用WPF建立自己的3d gis软件(非axhost方式)(十二)SDK中的导航系统的更多相关文章

  1. 利用WPF建立自己的3d gis软件(非axhost方式)(十三)万能的用户层接口,(强大的WPF)

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(十三)万能的用户层接口,(强大的WPF) 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt ...

  2. 利用WPF建立自己的3d gis软件(非axhost方式)(十一)SDK中的动画系统

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(十一)SDK中的动画系统 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew ...

  3. 利用WPF建立自己的3d gis软件(非axhost方式)(十)SDK中一些自带的展示面板应用

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(十)SDK中一些自带的展示面板应用 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV ...

  4. 利用WPF建立自己的3d gis软件(非axhost方式)(七)实现简单的粒子效果

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(七)实现简单的粒子效果 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew密 ...

  5. 利用WPF建立自己的3d gis软件(非axhost方式)(八)拖动一个UI到地球上

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(八)拖动一个UI到地球上 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew ...

  6. 利用WPF建立自己的3d gis软件(非axhost方式)(九)SDK自带部分面板的调用

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(九)SDK自带部分面板的调用 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bP ...

  7. 利用WPF建立自己的3d gis软件(非axhost方式)(六)跳转,增加外部三维模型

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(六)跳转,增加外部三维模型 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPe ...

  8. 利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bP ...

  9. 利用WPF建立自己的3d gis软件(非axhost方式)(四)在地图上添加FrameworkElement

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(四)在地图上添加FrameworkElement 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUw ...

随机推荐

  1. 2.JPA学习总结

    转自:https://shmilyaw-hotmail-com.iteye.com/blog/1969190 前言 最近在做一个项目的时候因为牵涉到要对数据库的操作,在最开始实现的时候采用了直接的JD ...

  2. C语言深度解剖读书笔记

    开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客.正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下 ...

  3. javascript中的this指向问题总结

    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 1.函数执行的时候,首先看函数名前边是否有点 ‘·’,有的话点’ ...

  4. Webpack学习手册

    多端阅读<Webpack官方文档>: 在PC/MAC上查看:下载w3cschool客户端,进入客户端后通过搜索当前教程手册的名称并下载,就可以查看当前离线教程文档.下载Webpack官方文 ...

  5. 详解Spring Boot配置文件之多环境配置

    一. 多环境配置的好处: 1.不同环境配置可以配置不同的参数~ 2.便于部署,提高效率,减少出错~ 二. properties多环境配置 1. 配置激活选项 spring.profiles.activ ...

  6. OC学习篇之---文件的操作

    今天我们来介绍OC中文件操作,在之前的文章中,已经接触到了文件的创建了,但是那不是很具体和详细,这篇文章我们就来仔细看一下OC中是如何操作文件的: 第一.首先来看一下本身NSString类给我们提供了 ...

  7. [Angular] HostListener Method Arguments - Blocking Default Keyboard Behavior

    We are going to see how to using method arguments for @HostListener. First, we can use HostListener ...

  8. MyCAT分表初体验

    1.mycat二进制包安装 下载地址:http://dl.mycat.io/ tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar ...

  9. angular表单知识点

    原文 https://www.jianshu.com/p/c772d143e1fc 大纲 1.对表单的理解 2.模板驱动表单(Template Driven Forms) 3.响应式表单(Reacti ...

  10. P2P网络借贷系统简要解读

    P2P网络借贷系统的核心功能其实很简单,就是若干投资者(借款人)集体把钱贷给贷款人,到期后,贷款人把利息和本金按时还给借款人.平台的主要作用是"撮合",收取一定的服务费和管理费. ...