Questions tagged «arcgis-engine»

ArcGIS Engine用于将GIS数据,地图和地理处理嵌入到桌面和移动应用程序中。


1
超链接工具在ArcEngine中的使用
使用ArcEngine中的超链接工具(ControlsMapHyperlinkTool)时遇到一些困难。有人有经验吗? 除了用户每次单击超链接功能时,它都会显示一条消息“无法启动超链接”,看起来它的行为正常。我正在使用“脚本”超链接,它在ArcMap中表现良好。它似乎并没有试图在单击时执行脚本。我检查了IHotlinkExpressionProperties对象,并正确设置了Expression属性。有什么想法吗?谢谢!

3
解除对要素类的锁定
当我尝试删除要素类时,在使用使用相同要素类的Arcgis引擎应用程序后或使用过程中,出现关于锁的错误,因此在重新启动计算机之前无法使用该锁。 我想知道一种使用arcpy或arcobjects 10.1删除锁的方法,如果我能在也可以锁定地理数据库的arcengine应用中使用锁,那将是完美的选择,我在SE中看到过有关锁的不同文章,但没人它们提供了使用ArcObjects释放锁的解决方案。

3
个人地理数据库是否比文件地理数据库更适合于快速查询索引属性?
我正在为查询数据以搜索地址的ArcGIS Engine应用程序准备数据。有时我们只在街道名称字段,门牌号字段或两者上搜索。使用个人地理数据库或SDE地理数据库时,除了单列索引外,还可以添加多列属性索引。由于某些原因,根据创建属性索引 ESRI文章,使用文件地理数据库时无法使用多列属性索引。他们没有提到为什么会这样-也许文件地理数据库出于某种原因不需要它们? 理论上,一次搜索两个字段时,在门牌号字段和街道名称字段上使用多列索引应该可以提高我的查询性能,但是是否值得切换到使用个人地理数据库?我感觉使用个人地理数据库的缺点可能会抵消多列索引的好处。 我一直以为Esri希望我们远离个人地理数据库,但是在这种情况下,个人地理数据库是更好的选择吗?如果您有任何经验,我很想知道。

4
使用多个文件地理数据库而不是使用多个文件地理数据库的ArcGIS Engine的性能?
我正在尝试确定组织ArcGIS Engine应用程序数据的最佳方法。我对地图显示和查询速度特别感兴趣。目前,我已根据主题将所有数据分离到单独的文件地理数据库中。因此,我有Transportation.gdb,Utilities.gdb等。数据不一定需要根据主题进行组织,我正在考虑将其全部放入一个文件地理数据库中。 我将进行自己的测试,但我想将问题抛给社区。 通常,使用单个文件地理数据库是否比使用多个(大约7个)较小的文件更快?我也对其他优点/缺点感兴趣。 注意:该软件和所有数据将在客户的本地计算机上。没有数据在网络上或通过网络提供,并且数据量非常小(大约100,000个功能)。

3
哪种数据格式通常在ArcMap中显示最快?
我的组织正在开发在ArcGIS Engine上运行的应用程序。该应用程序的先前版本主要使用Shapefile来显示道路,地块,建筑物等。 由于在大学期间管理数据时,我被教导避免使用Shapefile,因此我建议移至文件地理数据库。 Esri声称文件地理数据库针对性能和存储进行了优化。 我的同事记得曾经听说Shapefile绘制得更快。 我没有看到直接谈论该主题的文章,所以我想向社区提问。 我倾向于使用文件地理数据库,但是很高兴知道我是否缺少Shapefile提供的任何功能。

4
升级ArcGIS后,要从早期版本中卸载ArcGIS扩展吗?
我卸载了ArcGIS 9.3.1(服务器,桌面,引擎),然后安装了ArcGIS10.0(服务器,桌面,引擎)。 当我尝试卸载一些arcmap扩展时,出现错误1001“无法获取安装程序类型”。 换句话说,我忘记了这个建议: 请注意,在尝试卸载ArcGIS之前,必须先卸载自定义组件。这样做的原因是自定义组件需要在安装/卸载时加载。 有谁知道如何干净地卸载它而不卸载10.0并重新安装9.3.1? 更新:我认为我已经使用Revo Uninstaller清理了所有内容,然后使用CCleaner清理了注册表。


2
绘制图形后刷新视图的最佳方法是什么?
我在单击按钮时绘制了一个多边形以突出显示一个特征。然后,我需要刷新ActiveView以显示新的多边形。这行有效: mapControl.ActiveView.ScreenDisplay.StartDrawing(StartDrawing(mapControl.ActiveView.ScreenDisplay.hDC, (System.Int16)ESRI.ArcGIS.Display.esriScreenCache.esriNoScreenCache); mapControl.ActiveView.ScreenDisplay.DrawPolygon(feature.Shape); mapControl.ActiveView.ScreenDisplay.FinishDrawing(); mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewAll, feature.Extent, null); 但是它总是重新加载每一层。我尝试了几乎所有PartialRefresh与其他对象调用的方法,esriViewDrawPhase但是没有一种方法显示新的多边形。 有比重绘更好的解决方案esriViewDrawPhase.esriViewAll吗? 更新资料 我用了一个ILayerExtensionDraw.AfterDraw测试阶段抽签和AfterDraw只被击中了PartialRefresh()用esriViewAll。该扩展已添加到MapControl.Layers中的所有图层。我希望它每次都会受到打击?在哪一层上mapControl.ActiveView.ScreenDisplay.DrawPolygon(feature.Shape);绘制,以使AfterDraw甚至不凸起? 回答 多亏了Kirk,这才是解决方案,它无需重新加载任何图层即可显示新添加的图形。 IGraphicsContainer con = _mapControl.Map as IGraphicsContainer; if (con != null) { IFillShapeElement fillShapeElement = new PolygonElementClass(); fillShapeElement.Symbol = fillSymbol; IElement element = (IElement)fillShapeElement; element.Geometry = feature.Shape; con.DeleteAllElements(); con.AddElement(element, 0); _mapControl.ActiveView.ScreenDisplay.Invalidate(feature.Extent, true, _mapControl.ActiveView.get_ScreenCacheID(esriViewDrawPhase.esriViewGraphics, null)); }

1
如何验证FeatureLayer是否已经存在?
我目前正在一个项目中,当用户将其地图(mxd)加载到我们的系统中时,我们会为他们创建几个自定义的特征层。但是我的问题是,我不知道如何检查是否已经创建了这些图层(例如,用户加载了mxd,创建了图层,保存,重新加载了mxd,应该验证图层是否已经存在)。 ArcEngine10中的FeatuerLayerClass是否有一个唯一ID,FeatureLayerClass.FeatureClass中是否有OIDName和ObjectClassID,但是似乎不起作用(无法分配ObjectClassId,并且想对OIDName使用UniqueId)? 我像这样将图层创建为featurelayerclass业务对象。 码: /// <summary> /// Unique Route LayerId /// </summary> public static Guid RouteFeatureLayerId { get { return Guid.Parse("ba25a332-0e48-4ce5-a4c5-38dc36c0700c"); } } /// <summary> /// Feature class that stores info on the routes /// </summary> public FeatureLayerClass RouteFeatureLayer { get { if (_routeFeatureClass == null) { IPropertySet property = …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.