电子沙盘数字沙盘大数据可视化GIS系统开发教程第16课
电子沙盘数字沙盘大数据可视化GIS系统开发教程第16课:新增加属性在MTGIS3d控件
public bool ShowFLGrid;//是否显 示方里网格。
public bool Atmosphere;//是否显示大气圈。(因为WPF不支持shader功能,所以效果嘛。。。)
在SDK中为了方便三方数据的接入,引入了一个用户层接口。主要是完成三方数据的接入,含动态数据(如GPS),用户可自行控制UI及UI的交互,可实现如滴滴打车的车辆控制,公安应用中的UI按属性控制显示,并且该用户层的显示是由核心部分直接调用,在需要显示数据的调用下面的接口,这样可防止因为用户是从外部接入。而卡顿,影响用户使用体验。而UI的回收是由核心负责,不需要用户干预,二次开发时用户只用关心自己要承现的UI,及UI的交互:
public interface UserGisData : INotifyPropertyChanged
{
NewGisBiao.Base.JunBiao.CenteType BiaoCenterType
{
get; //这个UI对象的中心点类型
}
string LayName {
get; //用户层名称
}
/// <summary>
/// 标签整体缩放
/// </summary>
double MScal
{
get; //UI整体缩放参数
}
Dictionary <string, GisLib.DrawPointData> DrawObject
{
get; //访问当前已经存在UI对象
set;
}
/// <summary>
/// 是否显示
/// </summary>
bool ISShow
{
get; //隐藏和显示该用户层
set;
}
/// <summary>
/// 最小显示层
/// </summary>
int MinZoom
{
get; //该用户层的最小显示层
set;
}
/// <summary>
/// 最大显示层
/// </summary>
int MaxZoom
{
get; //该用户层的最大显示层
set;
}
/// <summary>
/// 返回一个图标表示这个层的图标
/// </summary>
System.Windows.Media.Imaging.BitmapImage MICon
{
get;
}
/// <summary>
///
/// </summary>
/// <param name="centerx">查询中心点经度(如果没有会传入null) </param>
/// <param name="centery">查询中心点纬度(如果没有会传入null)</param>
/// <param name="info">查询的信息(如果是全部会传入*)</param>
/// <param name="length">范围(如果没有会传入null)</param>
/// <returns></returns>
Dictionary<SechData, Point> SechPro(double centerx, double centery, string info, double length);
Dictionary<SechData, Point> SechForLine(List<Point> Line, string info, double length);
Dictionary<SechData, Point> SechForRect(List<Point> Line, string info, double length);
/// <summary>
/// 画用户物体
/// </summary>
/// <param name="centerx"></param>
/// <param name="centery"></param>
/// <returns></returns>
List<DrawPointData> DrawData(double centerx, double centery);
void OnUserBiaoClick(DrawPointData va); //UI点击的事件,现已作废,UI可自行响应所有交互事件
}
List<DrawPointData> DrawData(double centerx, double centery); 为该接口的核心部分,传入参数为当前地图的中心 点经纬度,根据这个经纬度,二次开发用户需要从 数据(如mysql或者其它三方数据中)查询当前需要显示范围的 数据,并连通UI一起返回:例子如下:
List<DrawPointData> UserGisData.DrawData(double centerx, double centery)
{
if (Con == null)
{
Con = new MySql.Data.MySqlClient.MySqlConnection(IniRead.IniReadWrite.GetMySqlDataConnstring());
Con.Open();
}
int mmzoom = IniRead.IniReadWrite.MPareant.Zoom;
int drawfanwei = 5;
double bx, by, ex, ey;
Int64 cx, cy;
NewGisBiao.Help.MathHelp.MyConver(centerx, centery, out cx, out cy, (int)mmzoom - 1);
NewGisBiao.Help.MathHelp.MyConver2(cx - drawfanwei, cy - drawfanwei, (int)mmzoom - 1, out bx, out by);
NewGisBiao.Help.MathHelp.MyConver2(cx + drawfanwei, cy + drawfanwei, (int)mmzoom - 1, out ex, out ey);
string t6 = " where (jingdu > " + bx.ToString() + " and jingdu<"
+ ex.ToString() + " and weidu > "
+ ey.ToString() + " and weidu < "
+ by + ")";
MySqlCommand cmd = Con.CreateCommand();
cmd.CommandText = "select * from gw_shigu" + t6;
MySqlDataReader read = cmd.ExecuteReader();
try
{
if (read.HasRows)
{
List<DrawPointData> y1 = new List<DrawPointData>();
while (read.Read())
{
if (MData.ContainsKey(read["number"].ToString() + "A") == false)
{
DrawPointData u1 = new DrawPointData();
u1.ISAutoAngle = true;
u1.ISAutoScal = true;
u1.MaxZoomScal = 15;
u1.ID = read["number"].ToString() + "A";
u1.MPoint = new Point(Convert.ToDouble(read["jingdu"].ToString()), Convert.ToDouble(read["weidu"].ToString()));
Image h1 = new Image();
u1.Hi = 0.05;
h1.Width = 45;
h1.Height = 70;
if (read["sgtype"].ToString().Trim() == "重伤")
h1.Source = new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory + "\\res\\重伤.png"));
if (read["sgtype"].ToString().Trim() == "轻伤")
h1.Source = new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory + "\\res\\轻伤.png"));
if (read["sgtype"].ToString().Trim() == "无伤")
{
BitmapImage u11 = new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory + "\\res\\无伤.png"));
h1.Source = u11;
h1.Width = u11.Width;
h1.Height = u11.Height;
}
h1.Stretch = Stretch.Fill;
h1.Tag = read["number"].ToString() + ";" + u1.MPoint.X.ToString() + ";" + u1.MPoint.Y.ToString();
u1.UIObject = h1;
y1.Add(u1);
}
}
read.Close();
return y1;
}
read.Close();
return null;
}
catch
{
read.Close();
return null;
}
}
上面的方法主要是从接口返回的中心点得到一 个范围内的用户数据,并根据用户的属性创建不同的UI,
————————————————
版权声明:本文为CSDN博主「种瓜的」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xtgmd168/article/details/85686408
电子沙盘数字沙盘大数据可视化GIS系统开发教程第16课相关推荐
- 电子沙盘数字沙盘大数据可视化交互地理信息系统开发教程第8课
多点触摸三维电子沙盘可视化交互地理信息系统(M3D GIS)(平衡+极简+实用)TREND MTOUCH 3D GIS(English)自主知识产权的通过手势多点触摸控制的大型二.三维一体化地理信息系 ...
- VR三维数字沙盘电子沙盘大数据可视化交互GIS系统开发教程第15课
VR三维数字沙盘电子沙盘大数据可视化交互GIS系统开发教程第15课:现在不管什么GIS平台首先要解决的就是数据来源问题,因为没有数据的GIS就是一个空壳,下面我就目前一些主流的数据获取 方式了解做如下 ...
- M3DGIS三维电子沙盘数字沙盘大数据人工智能模拟对抗推演系统开发教程视频第一课
M3DGIS开发培训视频第一课https://live.csdn.net/v/168403 该数据库中只提供 成都市火车南站附近的数据请注意,104.0648,30.61658 而且该公用服务器带宽不 ...
- 三维数字沙盘交互大数据可视化GIS地理信息系统第十课
三维电子沙盘交互无人机倾斜摄影大数据可视化GIS地理信息系统第十课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Password=chi ...
- 电子沙盘数字沙盘虚拟现实可视化系统开发教程第4课
电子沙盘数字沙盘虚拟现实可视化系统开发教程第4课下面介绍怎样在地球上增加自己的FrameworkElement,因为FrameworkElement为WPF的基础UI对象,基本上所有的UI对象都是继承 ...
- 三维数字沙盘电子沙盘M3DGIS地理信息立体显示系统开发教程第9课
三维数字沙盘电子沙盘M3DGIS地理信息立体显示系统开发教程第9课 虚拟三维数字沙盘开发教程第9课 查询面板调用: private void Button_Click_11(object sender ...
- M3DGIS全息裸眼三维电子沙盘数字沙盘大数据系统开发教程视频第6课
M3DGIS全息裸眼三维电子沙盘数字沙盘大数据系统开发教程视频第6课 三维电子沙盘数字沙盘开发教程第6课 gis3d.MapGo(103, 30, 19); //第一次跳转会有点慢,主要是获取数据,如 ...
- 交互式电子沙盘数字沙盘大数据系统开发第8课
交互式电子沙盘数字沙盘大数据系统开发第8课 这次我们完成的功能为拖动一个外部的UI对象到球球上: private void Button_PreviewMouseMove(object sender, ...
- ByteV智能电网大数据可视化分析系统
ByteV智能电网大数据可视化分析系统是一个面向电力行业管理部门的综合辅助决策平台,旨在通过大数据技术和系统全方位时空动态感知能力,为电力行业管理决策者提供及时.准确的多维数据分析结果信息,直观展现数 ...
最新文章
- 团队项目个人进展——Day10
- 腾讯“科学探索奖”提名报名正式启动
- python叫什么-python中什么叫类
- 【推荐系统】深入理解推荐系统:排序
- 日志-周报-月报(2019年2月)
- Java2精要_java知识精要(一)
- zookeeper和eureka的对比
- JavaSE学习--面向对象
- cocos creator 数组_5Cocos Creator 脚本简介
- 《数字图像处理(第三版)》 第一章 绪论 笔记
- lockdir 密码破解
- 【2022最新Java面试宝典】—— Java集合面试题(52道含答案)
- qq视频资源源码功能有哪些
- 蓝桥杯质数的后代码c语言,质因数
- html里怎么画斜线表头,Word2013中绘制斜线表头的方法
- 《梁宁·产品思维30讲》
- 【离散数学】单射、满射和双射的定义、区别
- php获取蓝凑云文件列表,自制蓝奏云网盘解析接口全解
- WIN10环境英伟达9系显卡tensorflow安装记录及调试过程 CUDA8.0+tensorflow-gpu1.4+CuDNN6.0
- Chrome 再次优化内存占用,新增内存释放开关