![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
engine
文章平均质量分 59
rrrrssss00
这个作者很懒,什么都没留下…
展开
-
arcgis engine中图层的datasource访问与修改相关
当图层可以正常访问时,可以通过如下方式得到图层的数据源路径IFeature pFeatureLayer = ( IFeatureLayer ) pLayer;IFeature fc = ( IFeatureClass ) pFeatureLayer.FeatureClass;fds = ( IFeatureDataset ) fc.FeatureDataset;ws = ( IWorkspace原创 2008-11-07 09:55:00 · 3427 阅读 · 0 评论 -
engine中空间运算接口ITopologicalOperator与空间关系接口IRelationalOperator
<br />示例:<br /> <br />ITopologicalOperator sourcePolygon= (ITopologicalOperator)outerPolygon;IPolygon resultPolygon = (IPolygon)sourcePolygon.Difference(cutPolygons);<br /> <br />IRelationalOperator re = (IRelationalOperator)outerPolygon;if (!re.Contai转载 2010-08-12 11:14:00 · 9803 阅读 · 1 评论 -
engine中调整Element的上下显示顺序(遮盖)
添加Element:pGraphicsContainer.AddElement(pElement, 0);Engine中IGraphicsContainer类似于栈,加Element时,默认加到第一个,所以会将之前加的要素盖住(这里,AddElement函数中的ZOrder参数貌似没有作用),要想改变Element的显示顺序,可以用BringForward,BringToFront,SendToBack,SendBackward这些函数来调整但是,这些函数的输入参数是IEnumElement,这个貌似有点不原创 2010-08-12 15:24:00 · 1947 阅读 · 0 评论 -
engine的工具中实现Snapping(捕捉)
在Engine的工具(ITool)里:OnClick事件处理函数中:首先需要获取一个图层,作为Snapping的参照,IFeatureLayer targetLayer然后声明一个IMovePointFeedBack作为鼠标移动时捕捉点的显示: IMovePointFeedback m_pMovePtFeed = new MovePointFeedback(); mFeedback = (IDisplayFeedback)m_pMovePtFeed;原创 2010-08-13 11:32:00 · 3844 阅读 · 3 评论 -
关于Engine中的元素(ELEMENT)
<br />我们都知道,在ArcMap中,有DataView和LayoutView两种视图,基本上相当于Engine中的MapControl以及PageLayoutControl,在ArcMap中在这两种视图中的元素(Element)是不属于一种体系的,可以通过如下操作进行验证:<br />1:切换到DataView,添加一个元素(例如在Insert菜单下,选择Text添加一个TextElement),再切换到LayoutView视图下,使用Select Element工具(黑色箭头,也就是默认的工具),无原创 2010-12-09 17:18:00 · 1742 阅读 · 0 评论 -
FeatureClass下创建要素(CreateFeature)遇到的一些问题及解决
FeatureClass 创建要素 CreateFeature EXTENT 无法 正常显示原创 2010-10-21 11:28:00 · 9996 阅读 · 4 评论 -
ArcEngine中加载和读取Style文件
首先使用接口装载.style文件,注意.style文件需要用到ESRI.ArcGIS.Framework.StyleGalleryClass类,而非ServerStyleGallery类,这个类是用来读取.serverstyle文件的 //获取现有的Styles,初始状态下,styleGalleryStorage中是没有东西的,但styleGalley里边是有东西的(ESRI默认那些样式)IStyleGallery styleGalley = new ESRI.ArcGIS.Framework.S原创 2011-01-28 08:45:00 · 8090 阅读 · 4 评论 -
根据图幅号(新图幅号)计算左下角点坐标的方法及代码(C#)
<br />计算的方法如下图:<br /><br />相应的代码如下(100W,50W,25W,10W,5W几种比例尺,其它比例尺同理):<br />/// <summary> 从新图幅号计算角点坐标 </summary> /// <param name="newNumber">输入的新图幅号(请先验证图幅号格式合法,再)</param> /// <returns>角点列表</returns> public static List<ESRI.ArcGIS原创 2011-03-15 16:03:00 · 12251 阅读 · 1 评论 -
向SDE图层中添加大量数据时,出现ORA-00604以及ORA-01000的解决办法
<br />写了一个小程序,从一个列表中读取坐标串,每个坐标串生成一个IPolygon,然后将这些Polygon添加到一个SDE图层中,<br />向SDE中添加要素的初始代码类似下面:<br />IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;workspaceEdit.StartEditing(true);workspaceEdit.StartEditOperation();for(int i=0;i<polygons.c原创 2011-03-24 11:28:00 · 3442 阅读 · 2 评论 -
ArcGIS Engine栅格数据使用总结
ArcGIS Engine栅格数据使用总结1、栅格数据的存储类型栅格数据一般可以存储为ESRI GRID(由一系列文件组成),TIFF格式(包括一个TIF文件和一个AUX文件),IMAGINE Image格式 在AE中一般调用ISaveAs接口来保存栅格数据2转载 2011-07-05 10:47:37 · 6948 阅读 · 0 评论 -
ArcGIS Engine 中对栅格数据的波段信息统计
先打开栅格文件所在的工作空间(文件),然后获取其所有的波段,访问每一个波段有时候波段中已经有直方图或统计信息,有时候没有这些信息,可以使用ComputeStatsAndHist()函数对其进行计算(数据量较大时,可能耗时较长)IWorkspaceFactory原创 2011-07-05 11:04:44 · 6104 阅读 · 0 评论 -
ARCGIS拓扑检查步骤
转载自:http://hi.baidu.com/bdlsl/blog/item/17594287bf3f5826c75cc342.html启动ArcCatlalog;任意选择一个本地目录,"右键"->"新建"->"创建个人personal GeoDatabase";选择刚才创建的GeoDatabase,"右键"->"新建"->"数据集dataset";设置数据集的坐标系转载 2011-11-21 15:52:33 · 7063 阅读 · 0 评论 -
矢量图层(FeatureClass)获取和更新Extent
在FeatureClass中编辑,删除,或添加要素后,可用如下的代码手动更新一下其Extent ((IFeatureClassManage)pFeatureClass).UpdateExtent(); 获取图层Extent的方法为:((IGeoDataset)pFeatureClass).Extent 或根据图层中的所有要素计算一下Extent: IEn原创 2011-12-10 11:06:37 · 4467 阅读 · 0 评论 -
关于Engine中the geometry has no z values的问题
今天遇到了一个问题,在使用a.Shape = b as IGeometry 时,经常报the geometry has no z values错误。。。查了一下,解决方法如下:首先,要判断a.Shape是不是含Z值的,如果把一个不含Z值的geometry赋给含Z值的a.Shape,是会报错的,反过来,也报一样的错。。。。。 int index = pFeature.Fields.F转载 2012-04-13 16:48:30 · 3035 阅读 · 0 评论 -
[好玩的想法]使用ArcGIS Engine+WebService,在客户机上不安装Engine Runtime实现编辑SDE图层
需求:要写一个程序,局域网内使用,主要是根据用户输入的信息(属性值和坐标),更新数据库里的表,以及SDE里的图层文件,不涉及空间数据的浏览,只有对数据库表的修改以及对SDE图层要素的修改和增删,并发以及效率上的要求不高 问题:使用ArcGIS Engine写的代码在部署时需要安装Enige runtime,比较麻烦,还有一点比较麻烦的是,ArcGIS是不向下兼容的,例如,如果使用1原创 2012-08-27 14:59:55 · 3258 阅读 · 0 评论 -
IRasterClassifyColorRampRenderer 使用时的一些奇怪的地方
1.IRasterClassifyColorRampRenderer 的Break设置方法IRasterClassifyColorRampRenderer这个接口是ArcEngine里对单波段栅格影像进行分类渲染的接口,这里的Break(也就是分断点)的设置有点奇怪,很容易用错,研究了一下,用法是这样的.一个简单的例子,一个0-255的波段图像,要分为三类,0-85,85-170,原创 2012-09-27 21:49:05 · 3119 阅读 · 0 评论 -
UniqueValueRenderer的DefaultSymbol及DefaultLabel设置
DefaultSymbol及DefaultLabel即为ArcMap里使用UniquValueRenderer时显示的All other values对应的符号以及标签 使用时发现,这两个值在设置后,经常会不生效, 后发现,如果UseDefaultSymbol为true,那么设置之前需要使UseDefaultSymbol为false,设置完后再置为true即可使这两个值的设置生效原创 2012-09-25 20:57:32 · 2280 阅读 · 0 评论 -
SDE数据库的直接连接 direct connection to SDE
1、到SDE for Oracle的连接(1)首先在本地Net Configuration Assistant中配置一个到目标数据库的Net服务名并在SQLPLUS中验证是否能够连接,验证方法为:在CMD中输入 sqlplus 用户名/密码@Net服务名,若连接成功,则表示配置成功。(2)在Catalog的Database Connection中,点击Add Spatial Dat原创 2010-04-08 16:02:00 · 4240 阅读 · 0 评论 -
IEngineEditor与IWorkspaceEdit,以及相关的事件监听
IEngineEditor适用于直接在图层上的编辑,例如使用“要素编辑”工具菜单上的“开始编辑”等工具进行编辑,相应的事件使用IWorkspaceEdit监听,例如以下的代码: private IEngineEditor m_EngineEditor = new EngineEditorClass();private IEngineEditEvents_Event m_EngineEd原创 2009-10-17 16:28:00 · 3483 阅读 · 5 评论 -
arcgis engine中添加及修改图层的字段
ILayer layer = m_hookHelper.FocusMap.get_Layer(layerIndex); //输入图层1 IFeatureLayer flayer = (IFeatureLayer)layer; IFeatureClass fclass = flayer.FeatureClass;原创 2008-11-07 09:58:00 · 10191 阅读 · 8 评论 -
arcgis engine中几种常用数据的加载方法
一、shp文件的加载:IWorkspaceFactory pWorkspaceFactory;IFeatureWorkspace pFeatureWorkspace;IFeatureLayer pFeatureLayer;//获取当前路径和文件名OpenFileDialog dlg=new OpenFileDialog();dlg.ShowDialog();string strFullPath=d转载 2008-11-07 10:07:00 · 6845 阅读 · 1 评论 -
arcgis engine中图层与数据表之间的join操作
在进行join之前,请确认数据库可以连接 try { //使用oledb连接数据库,连接到sys.基本信息表 IWorkspaceFactory pWorkspaceFactory = new OLEDBWorkspaceFactory(); IPropertySet原创 2008-11-07 10:03:00 · 5241 阅读 · 0 评论 -
从FileGDB导出shp
//Create inworkspace name. ESRI.ArcGIS.esriSystem.IPropertySet propertySet = new ESRI.ArcGIS.esriSystem.PropertySetClass(); propertySet.SetProperty("DATABASE",@"J:/work/xings转载 2008-11-10 12:36:00 · 3690 阅读 · 0 评论 -
在toolbarControl之外调用自定义command或tool的方法
在ToolbarControl之外调用自定义的command或control的办法:1、添加一个事件,比如某个button的onclick,在这个事件里添加如下方法In this post ESRI Support shows how to run a Command without using a ToolbarControl.To run your custom command, you wo原创 2009-01-31 19:24:00 · 2949 阅读 · 2 评论 -
使用IActiveView.PartialRefresh方法刷新选择集
当进行选择要素操作时 ,需要调用PartialRefresh两次,分别在选择操作之前和之后。IActiveView pActiveView = (IActiveView)(mMap.Map); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, mMap.get_Layer(0),原创 2009-01-31 19:26:00 · 2762 阅读 · 0 评论 -
arcgis engine 图形操作函数(by 懒羊羊)
1.封闭线与打断操作,这部分新手未必知道。 /// /// 利用面生成闭合的曲线 /// /// 传入的面图形 /// /// 创建人: 懒羊羊 private IPolyline PolygonToLine(IPolygon pPolygon)转载 2009-01-31 21:43:00 · 3845 阅读 · 0 评论 -
编辑时snapping的添加
注意需要在编辑模式下进行snapping的添加(也即先需要使用IEngineEditor进入编辑状态): IMapControl3 mMap = (IMapControl3)((IToolbarControl)toolHook).Buddy; IEngineEditor m_engineEditor = new EngineEditorClass();原创 2009-01-31 19:49:00 · 2394 阅读 · 1 评论 -
arcmap以及arcgis server中mapcontrol里图层加载顺序与空间参考之间的关系
对于arcmap 以及 arcgisserver中的mapcontrol控件,加载第一个图层(arcmap)或者地图资源(mapcontrol)时,会将整个环境的默认空间参考都设为该图层或资源的空间参考。此后添加的图层或资源,会自动将其空间转到默认参考或尽量与其保持一致。原创 2009-02-14 10:47:00 · 2977 阅读 · 0 评论 -
使用engine查询图层的属性表
使用engine查询图层的属性表,有几个入口,可以通过IFeatureLayer.FeatureClass 其中可以得到各个Field,也可以通过getFeature再查找相应的属性值也可以通过 ((IDisplayTable)IFeatureLayer).DisplayTable来查询,从这个入口查询就类似于表单的查询了,是通过行列来查询值 这两种查询方式的主要区别在于:当图层原创 2009-04-16 22:48:00 · 2478 阅读 · 0 评论 -
将图层导入SDE
将图层导入SDE有两种情况,一种是直接导入到SDE的根目录下,一种是SDE中用户建立了要素集(Dataset),然后往某个要素集中导入数据 第一种情况:直接往SDE根目录下导入图层: bool impLayerByName(IName lName,IWorkspace inWorkspace,IWorkspace outWorkspace) {原创 2009-04-14 09:36:00 · 2984 阅读 · 3 评论 -
关于IGeometry的值随IFeature变化的问题
来看下面一段代码:IFeature pFeature;IGeometry pUnionGeometry;IGeometry pGeometry;ITopologicalOperator pTopo;pUnionGeometry = null;pFeature = pFeatureCursor.NextFeature();while (pFeature != null)原创 2009-04-06 15:11:00 · 2864 阅读 · 1 评论 -
从IFeatureClass判断数据源的类型
需要从workspacefactory中得到数据源的类型 IWorkspace ws = ((IDataset)pFeatureClass).Workspace;string wType = ws.WorkspaceFactory.get_WorkspaceDescription(true);原创 2009-04-09 23:32:00 · 1379 阅读 · 0 评论 -
修改sde图层中要素的属性表
修改shp文件中要素的属性表时,只需要得到IFeature后,再使用IFeature.setValue()方法,最后使用IFeature.Store()方法保存即可。而对于sde图层中的要素,还需要另外做一些处理。首先得到要素所在的IFeatureClass后,对其进行转换,得到IWorkspaceEdit,再开始编辑,完成后再保存编辑,才能修改成功,样例如下:输入参数:ILayer pSelLa原创 2009-05-13 21:14:00 · 2806 阅读 · 0 评论 -
在engine程序的运行时调用engine自带的command或tool
command的调用方法//Create a command instance.ICommand command = new ControlsZoomToSelectedCommandClass();//Pass the MapControl to the OnCreate method.command.OnCreate(axMapControl1.Object);//Call O原创 2009-05-14 01:27:00 · 1412 阅读 · 0 评论 -
控制TOC控件中图层名称的修改
控制TOC控件中图层名称的修改首先在Form_Load中添加如下代码:this.tocControl1.LabelEdit = esriTOCControlEdit.esriTOCControlManual;然后,在TOCControl中重载OnBeginLabelEdit或OnEndLabelEdit事件,其中前者在用户开始修改图层名之前被触发,后者在修改完成之后被触发。原创 2009-10-09 16:18:00 · 3767 阅读 · 0 评论 -
在BackGroundWorker中使用ArcGIS组件
有一段代码用到了ArcGIS的组件(实例中用到的是Geometry命名空间下的投影转换函数),正常在主线程下运行时是正常的,但由于运行时间长,用户体验较差,就想把这部分代码放在BackGroundWorker下面运行,以提高用户体验,但迁移到BGW下时,发现无法正常运行了, 上网查了一下,似乎是ArcGIS的COM组件必须在STA模式下运行(关于什么是STA STA:single t原创 2013-09-11 20:49:02 · 1427 阅读 · 1 评论