Questions tagged «c#»

C#是.NET编程语言。

5
在ArcGIS中以编程方式编辑/更新元数据?
有谁成功通过编程方式更新了ArcGIS 10中的元数据?考虑使用Python / arcpy但也可以使用ArcObjects(C#或Python / comtypes)。 我需要同时更新FGDC和ArcGIS-ISO格式的元数据,并且无论使用哪种解决方案,都必须能够保留现有(非空白)元素以及添加的元素,除非在发生冲突的情况下添加的元素将覆盖现有元素。

3
这是ArcGIS的新功能,希望“在鱼游动时”计算两点之间的距离
我们有一个名为Hydrography的图层,它是给定任务的水域。我有一个车站和一个目标点。我需要计算这两个点之间的距离,但要计算在水文内部。(船不能越过陆地) DefenseService距离计算看起来是可以通过的,但是它似乎是一条直线,因为它不使用任何Raster作为输入。欧几里得似乎快要在那里了,但是我找不到任何直接的东西。 我正在使用ArcGIS Explorer 2500,ArcGIS for Server 10.1 SP1 Enterprise,并且我们正在用C#编写服务和工具。 我负责水文学的编写和IPoint的创建,但是下一步该怎么办! 任何帮助,请。

1
在Addin中运行的ArcObjects速度较慢?
我创建了一个类库,该类库进行了一些地理处理。插件会调用一个异步过程的类。我已经确保线程是STA,并且arcobjects是线程安全的(即未从插件中传递)。所有arcobjects在线程内创建。 因为这是一个类库,所以我将其包装在winforms UI中,也作为外接程序包装。两组代码完全相同,并且使用完全相同的数据执行测试。Winforms和Addin都以所需的结果完成了代码,并且没有明显的内存泄漏。对于插件,此时与映射周期没有交互,并且winforms代码中也没有映射或显示元素。 唯一的UI更新是插件和UI中进度对话框的更新。该插件正在使用可停靠窗口(用户控件ui)。 我看到的问题是,从插件中调用库时,代码执行速度比通过winforms应用程序调用的相同代码慢5倍。 关于我可能会看到为什么发生的任何想法?


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
以编程方式在ArcMap中编辑shapefile?
这是可以做到的吗? 例如,如果我在地图上创建了一个叠加层并将其另存为shapefile,我想去编辑该(预先存在的文件。)叠加层...添加点/删除点都会更改颜色/ fillstyle / etc。 理想情况下,我想避免创建新的shapefile并删除旧的shapefile。 有什么想法吗? 编辑1:好,既然有人说可以做到。显而易见的问题是,如何编辑shapefile(在ArcObjects中以编程方式)? 编辑2:看评论,我似乎需要做这样的事情,但我不确定。 我目前有一个基本的shapefile,我想在C#的ArcObjects中进行编辑。 我通过创建FeatureClass,Workspace并随后传入我的形状来创建了shapefile。在这种情况下,它只是一条简单的折线,上面有一些点。我想做的就是能够更新此shapefile。 我假设我需要重用FeatureClass,Workspace并传递新形状。但是,我在做什么似乎不起作用。这就是我在进行编辑的地方-任何建议都很棒。 IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)inWorkspace; workspaceEdit.StartEditing(true); workspaceEdit.StartEditOperation(); ComReleaser comReleaser = new ComReleaser(); IFeatureCursor featureCursor = inFeatureClass.Update(null , true); IFeature feature = null; while((feature = featureCursor.NextFeature()) != null) { int id = feature.Fields.FindField("shape"); IFeatureBuffer featureBuffer = inFeatureClass.CreateFeatureBuffer(); featureCursor.DeleteFeature(); //Delete the …

3
使用ArcObjects在ArcMap中创建仅浮动(不可停靠)窗口?
我正在寻找一种在ArcMap中创建浮动窗口的方法。举个例子,看看“识别”工具的窗口。 浮动表示它始终处于地图文档的前面,并且用户可以继续使用ArcMap。我知道IDockableWindowDef接口可用于创建也可以浮动的可停靠窗口,但是我不希望它们停靠。据我所知,如果用户将其推到ArcMap窗口的边界,则无法阻止IDockableWindowManager创建的表单停靠。 有任何想法吗? 解决方案是搜索子窗口和MDI之类的关键字。高温超导 问题的解决方案似乎就像@llcf的答案一样简单: MyForm form = new MyForm(); form.Show(NativeWindow.FromHandle(new IntPtr(m_application.hWnd)));
9 arcmap  arcobjects  c# 
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.