arcgis二次开发动态追踪以及提高
提高 动态 以及 追踪 ArcGIS 二次开发
2023-06-13 09:12:41 时间
大家好,又见面了,我是你们的朋友全栈君。
前几天呢,想做动态追踪,发现这篇文章(https://blog.csdn.net/anlidengshiwei/article/details/41545301)写的不错,功能实现了之后,感觉可以更好,所有就自己就试着写了一下,本人新手,还望大家多多包涵;
第一种方法,小车点的行进路径该有鼠标动态获取;
double[] arrx=new double[1000];
double[] arry=new double[1000];
int i = 0;
private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
{
arrx[i] = e.mapX;
arry2[i] = e.mapY;
i++;
}
这是鼠标点击事件事件,获取用来获取点的坐标,
private void timer1_Tick(object sender, EventArgs e)
{
if (s < i)
{
dx = arrx[s];
dy = arry2[s];
MoveCar();
s++;
}
else {
this.timer1.Dispose();
MessageBox.Show("走完了");
}
}
这是对控件time1的处理
private void MoveCar()
{
//得到当前活动范围
IActiveView pActiveView = axMapControl1.ActiveView;
//开始画笔
pActiveView.ScreenDisplay.StartDrawing(pActiveView.ScreenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache);
IPoint ppoint;
IGeometry pgeo;
IPictureMarkerSymbol psymbol = new PictureMarkerSymbolClass();
IRgbColor prgbcolor = new RgbColorClass();
prgbcolor.Red = 0;
prgbcolor.Green = 0;
prgbcolor.Blue = 0;
psymbol.BitmapTransparencyColor = prgbcolor;
psymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, @"C:\Users\deng\Desktop\毕业设计\NodeAnimation\Command1.bmp");
psymbol.Size = 15;
psymbol.Angle = 270;
//ISimpleMarkerSymbol psimplesymbol = new SimpleMarkerSymbolClass();
//psimplesymbol.Size = 10;
//psimplesymbol.Color = (IColor)prgbcolor;
ppoint = new PointClass();
ppoint.PutCoords(dx, dy);
pgeo = ppoint;
pActiveView.ScreenDisplay.SetSymbol((ISymbol)psymbol);
pActiveView.ScreenDisplay.DrawPoint(ppoint);
//结束画笔
pActiveView.ScreenDisplay.UpdateWindow();
pActiveView.ScreenDisplay.FinishDrawing();
//System.Object obj = psymbol;
//this.axMapControl1.DrawShape(pgeo, ref obj);
//this.axMapControl1.CenterAt(ppoint);
IEnvelope penv = this.axMapControl1.Extent;
penv.CenterAt(ppoint);
this.axMapControl1.Extent = penv;
}
这是主要方法,与我之前学习的文章相同.
private void toolStripButton1_Click(object sender, EventArgs e)
{
this.timer1.Enabled = true;
this.timer1.Interval = 1000;
}
这是启动运行的方法
int s = 0;
double dx = 112.906;
double dy = 27.912;
IActiveView pactiveview;
public Form1()
{
InitializeComponent();
timer1.Enabled = false;
this.axToolbarControl1.SetBuddyControl(this.axMapControl1);
pactiveview = this.axMapControl1.ActiveView;
}
运行之后可以在地图点击多个点,在点击
toolStripButton1
这个控件就会按照我们所选的位置行动
源码
https://download.csdn.net/download/qq_27380923/10373709
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163437.html原文链接:https://javaforall.cn
相关文章
- 利用Oracle动态采样提高软件性能(oracle动态采样)
- 学会编写MySQL存储过程,提高工作效率(存储过程编写mysql)
- 服务器提高Linux服务器负载能力的尝试与实践(负载linux)
- 利用 Oracle 外包实现营销提高(oracle外包)
- 卢伟冰谈小米平板5:用了两个多月 办公效率提高了很多
- “Linux 双栈技术如何提高网络通信效率?”(linux双栈)
- Oracle内联外连把DBA的工作效率提高极致(oracle 内联外连)
- 游戏服务器利用Redis提高性能(游戏服务器用redis吗)
- 使用公网Redis提高业务流程效率(公网redis)
- 可以提高性能Oracle中如何利用对象提升性能(oracle中哪些对象)
- 如何使用索引提高查询速度