C#+arcengine10.0+SP5实现鹰眼(加载的是mdb数据库中的数据)
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using ESRI.ArcGIS.Controls;
- using ESRI.ArcGIS.esriSystem;
- using ESRI.ArcGIS.Geodatabase;
- using ESRI.ArcGIS.DataSourcesRaster;
- using DevComponents.DotNetBar;
- using System.Runtime.InteropServices;
- using ESRI.ArcGIS.ADF.BaseClasses;
- using ESRI.ArcGIS.ADF.CATIDs;
- using ESRI.ArcGIS.Carto;
- using ESRI.ArcGIS.Geometry;
- using ESRI.ArcGIS.Output;
- using ESRI.ArcGIS.SystemUI;
- using ESRI.ArcGIS.Display;
- private void btAddMdb_Click_1(object sender, EventArgs e) //添加mdb数据库打开数据
- {
- OpenFileDialog dlg = new OpenFileDialog();
- dlg.Filter = " Personal Geodatabase(*.mdb)|*.mdb|All Files(*.*)|*.* ";
- dlg.Title = " Open PersonGeodatabase file ";
- if (dlg.ShowDialog() != DialogResult.OK) return;
- commonfun.load_Mdb(dlg.FileName, axMap);
- AddLayerToOverViewMap(); //加入地图到鹰眼里
- axMap.Refresh();
- }
- private void axMap_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)
- {
- #region 添加鹰眼 载入地图到鹰眼控件
- AddLayerToOverViewMap();
- #endregion
- }
- #region 鹰眼功能
- /// <summary>
- /// 把地图加到鹰眼里的方法,
///该段代码摘自http://www.cnblogs.com/zya-gis/archive/2009/04/17/1438033.html,非常好用,解决了我鹰眼一直不能显示的问题- /// </summary>
- private void AddLayerToOverViewMap()
- {
- axMapSmall.ClearLayers();
- for (int i = ; i < axMap.LayerCount; i++)
- {
- IObjectCopy objectcopy = new ObjectCopyClass();
- object toCopyLayer = axMap.get_Layer(i);
- object copiedLayer = objectcopy.Copy(toCopyLayer);
- ILayer C = (new FeatureLayerClass()) as ILayer;
- object toOverwriteLayer = C;
- objectcopy.Overwrite(copiedLayer, ref toOverwriteLayer);
- axMapSmall.AddLayer(C, i);
- }
- }
- private void axMap_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e) //绘制鹰眼矩形框
- {
- try
- {
- //得到范围
- IEnvelope pEnv = e.newEnvelope as IEnvelope;
- IGraphicsContainer pGraphicsContainer = axMapSmall.Map as IGraphicsContainer;
- IActiveView pActiveView = pGraphicsContainer as IActiveView;
- //在绘制新的矩形框前,清楚、清除Map对象中的任何图形元素
- pGraphicsContainer.DeleteAllElements();
- IRectangleElement pRectangleEle = new RectangleElementClass();
- IElement pEle = pRectangleEle as IElement;
- pEle.Geometry = pEnv;
- IRgbColor pColor = new RgbColorClass();
- pColor.RGB = ;
- pColor.Transparency = ;
- //产生一个线符号对象
- ILineSymbol pOutLine = new SimpleLineSymbolClass();
- pOutLine.Width = ;
- pOutLine.Color = pColor;
- //设置颜色属性
- pColor.RGB = ; pColor.Transparency = ;
- //设置填充符号的属性
- IFillSymbol pFillsymbol = new SimpleFillSymbolClass();
- pFillsymbol.Color = pColor;
- pFillsymbol.Outline = pOutLine;
- IFillShapeElement pFillshapEle;
- pFillshapEle = pEle as IFillShapeElement;
- pFillshapEle.Symbol = pFillsymbol;
- pEle = pFillshapEle as IElement;
- pGraphicsContainer.AddElement(pEle, );
- pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
- }
- catch (Exception ey)
- {
- }
- }
- private void axMapSmall_OnMouseDown(object sender, AxESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) //鹰眼与主 Map 控件互动
- {
- if (this.axMapSmall.Map.LayerCount != )
- {
- // 按下鼠标左键移动矩形框
- if (e.button == )
- {
- IPoint pPoint = new PointClass();
- pPoint.PutCoords(e.mapX, e.mapY);
- IEnvelope pEnvelope = this.axMap.Extent;
- pEnvelope.CenterAt(pPoint);
- this.axMap.Extent = pEnvelope;
- this.axMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
- }
- // 按下鼠标右键绘制矩形框
- else if (e.button == )
- {
- IEnvelope pEnvelop = this.axMapSmall.TrackRectangle();
- this.axMap.Extent = pEnvelop;
- this.axMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
- }
- }
- }
- private void axMapSmall_OnMouseMove(object sender, AxESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e) //按下鼠标左键的时候移动矩形框,同时也改变主的图控件的显示范围
- {
- // 如果不是左键按下就直接返回
- if (e.button != ) return;
- IPoint pPoint = new PointClass();
- pPoint.PutCoords(e.mapX, e.mapY);
- this.axMap.CenterAt(pPoint);
- this.axMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
- }
- #endregion 鹰眼功能完结
放效果图一张:
C#+arcengine10.0+SP5实现鹰眼(加载的是mdb数据库中的数据)的更多相关文章
- [Asp.net mvc]实体更新异常:存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。
学习asp.net mvc 时在更新实体进行SaveChanges()的时候出现了异常,异常如下: “/”应用程序中的服务器错误. 存储区更新.插入或删除语句影响到了意外的行数(0).实体在加载后可能 ...
- 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。
在用asp.net MVC3 的MusicStore时候 Edit某个数据项时提示下面的错误: 存储区更新.插入或删除语句影响到了意外的行数(0).实体在加载后可能被修改或删除.刷新 ObjectSt ...
- HTTP 筛选器 DLL C:\Windows\Microsoft.Net\Framework\v4.0.30319\aspnet_filter.dll 加载失败。数据是错误。
今天在一台win2003的云主机上,安装.net 4.0时,所有的网站都打不开了.打开事件查看器,发现以下错误: HTTP 筛选器 DLL C:\Windows\Microsoft.Net\Frame ...
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://ww ...
- 用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法
S3C44B0开发板中,用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法 1.开发板说明: 开发板上已有移植好的UBOOT运行. 2.交叉编译工具链为arm-linu-g ...
- MVC学习系列6--使用Ajax加载分部视图和Json格式的数据
Ajax的应用在平时的工作中,很是常见,这篇文章,完全是为了,巩固复习. 我们先看看不使用json格式返回分部视图: 先说需求吧: 我有两个实体,一个是出版商[Publisher],一个是书[Book ...
- 无法为具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“MySql.Data.MySqlClient.MySqlProviderServices,MySql.Data.Entity.EF6”
"System.InvalidOperationException"类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 无法为具有固定名称"MySql. ...
- 无法为具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer”。请确保使用限定程序集的名称且该程序集对运行的应用程序可用。有关详细信息,请参阅 http://go.m
Windows服务中程序发布之后会如下错误: 无法为具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“Syste ...
- InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式
InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式 https://mp.weixin.qq.com/s/HGa_90XvC22anabiBF8AbQ 在这篇文章里,我将讨论在MySQL 5 ...
随机推荐
- Android 知识杂记(MVP模式)
MVP的模式在于将原来activity中业务逻辑的部分剥离出来,代码示例如下: Account public class Account { private String mUsername; pri ...
- 剑指Offer面试题:25.二叉搜索树与双向链表
一.题目:二叉搜索树与双向链表 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向.比如输入下图中左边的二叉搜索树,则输出转换之后的 ...
- 走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器
一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 ) DECLARE @id int (2)为变量赋值 SET @变量名 =值 --set用于普通的赋值 SE ...
- Nodejs之MEAN栈开发(二)----视图与模型
上一节做了对Express做了简单的介绍,提出了controller,介绍了路由.这一节将重点放到视图和模型上,完成几个静态页面并部署到heroku上. 导航 前端布局使用bootstrap,从官网下 ...
- .NET实现微博粉丝服务平台接口
[文章摘要]Senparc.Weixin.MP虽然是微信公众号的SDK,但由于易信公众号和新浪微博粉丝服务平台也提供了微信兼容接口,所以也可以使用其快速实现相应的服务,当然微博由于与微信存在差异,如果 ...
- Hibernate 延迟加载原理
如何简单的理解延迟加载?开发中常见的org.hibernate.LazyInitializationException no session错误又是怎么产生的?下面通过一个简单的例子来解析一下 ...
- css双飞翼布局
双飞翼布局是一种比较灵活的布局,始于淘宝UED,玉伯提出的,他着重介绍的是双飞翼栅格布局. 三列布局为"双飞燕"布局,可以把三栏比作一只鸟,main部分相当是于鸟的身体,而lef ...
- java IO流 之 字节流
一.file类的常用操作 File file=new File("E:\\test\\javaIo"); System.out.println(file.isDirectory() ...
- thinkPHP入门之二
thinkphp提供了很多便利的方法,因为php要记的东西太多了,而thinkphp极大简化了这些,让编写过程更加快速. 为了预防那些了解它的人胡乱玩耍,thinkphp提供一个函数_empty 它是 ...
- jQuery源码分析系列(36) : Ajax - 类型转化器
什么是类型转化器? jQuery支持不同格式的数据返回形式,比如dataType为 xml, json,jsonp,script, or html 但是浏览器的XMLHttpRequest对象对数据的 ...