Option Explicit<!----><o:p></o:p>
<o:p></o:p>
Public Sub MoveFeatures()<o:p></o:p>
Dim pEditor As IEditor<o:p></o:p>
Dim pID As New UID<o:p></o:p>
Dim pEnumFeature As IEnumFeature<o:p></o:p>
Dim pFeature As IFeature<o:p></o:p>
Dim mySet As ISet<o:p></o:p>
Dim pSpatialReference As ISpatialReference<o:p></o:p>
Dim pStartPoint As IPoint<o:p></o:p>
Dim pEndPoint As IPoint<o:p></o:p>
Dim pFeatureEdit As IFeatureEdit<o:p></o:p>
Dim pLine As ILine<o:p></o:p>
Dim origX As Double<o:p></o:p>
Dim origY As Double<o:p></o:p>
Dim Count As Integer<o:p></o:p>
<o:p></o:p>
'Get a reference to the editor extension<o:p></o:p>
pID = "esriEditor.Editor"<o:p></o:p>
Set pEditor = Application.FindExtensionByCLSID(pID)<o:p></o:p>
'Make sure something has been selected<o:p></o:p>
If pEditor.SelectionCount = 0 Then<o:p></o:p>
MsgBox "Nothing Selected"<o:p></o:p>
Exit Sub<o:p></o:p>
End If<o:p></o:p>
'Create an edit operation enabling undo/redo<o:p></o:p>
pEditor.StartOperation<o:p></o:p>
<o:p></o:p>
'Get the selection from the Editor and add all the features to a new Set<o:p></o:p>
Set pEnumFeature = pEditor.EditSelection<o:p></o:p>
Set mySet = New esriSystem.Set<o:p></o:p>
pEnumFeature.Reset<o:p></o:p>
For Count = 0 To pEditor.SelectionCount - 1<o:p></o:p>
Set pFeature = pEnumFeature.Next<o:p></o:p>
mySet.Add pFeature<o:p></o:p>
Next Count<o:p></o:p>
<o:p></o:p>
'Reset the Set<o:p></o:p>
mySet.Reset<o:p></o:p>
<o:p></o:p>
'MoveSet requires a line to specify the new location<o:p></o:p>
'Use the selection anchor as a starting point for the line<o:p></o:p>
Set pStartPoint = pEditor.SelectionAnchor.Point<o:p></o:p>
Set pLine = New Line<o:p></o:p>
pStartPoint.QueryCoords origX, origY<o:p></o:p>
Set pEndPoint = New Point<o:p></o:p>
pEndPoint.PutCoords (origX + 50), (origY + 0) 'offset the selection by 50 units in the x direction<o:p></o:p>
pLine.PutCoords pStartPoint, pEndPoint<o:p></o:p>
<o:p></o:p>
'Get the spatial reference from the map and assign it to the new line<o:p></o:p>
Set pSpatialReference = pEditor.Map.SpatialReference<o:p></o:p>
Set pLine.SpatialReference = pSpatialReference 'set the spatial reference of the new line<o:p></o:p>
<o:p></o:p>
'Do the move while looping through the set<o:p></o:p>
Do<o:p></o:p>
Set pFeatureEdit = mySet.Next<o:p></o:p>
If Not pFeatureEdit Is Nothing Then<o:p></o:p>
pFeatureEdit.MoveSet mySet, pLine 'Move all the selected features 60 units to the right<o:p></o:p>
Else<o:p></o:p>
Exit Do<o:p></o:p>
End If<o:p></o:p>
<!----><st1:place w:st="on">Loop</st1:place><o:p></o:p>
<o:p></o:p>
'Stop the Edit Operation<o:p></o:p>
pEditor.StopOperation "Move Selection" 'String to appear in Edit menu<o:p></o:p>
<o:p></o:p>
'Refresh the Map to redisplay the moved features<o:p></o:p>
pEditor.Display.Invalidate Nothing, True, esriAllScreenCaches<o:p></o:p>
<o:p></o:p>
End Sub<o:p></o:p>
分享到:
相关推荐
它是一个javascript交互编辑器,它对javascript进行评估,并...此iEditor的用例:1.实时并排调试javascript代码2.使javascript的学习更加轻松3.逐步了解其他开发人员的javascript代码 支持语言:English (United States)
`IEditor`接口有两个方法:`PluginName`用于获取插件的名称,`GetControl`则返回一个`UserControl`对象,这是插件的主要交互界面。这样,任何实现`IEditor`接口的类都可以被主程序识别并作为插件处理。 接着,我们...
使用IEditor.StartEditSession开始编辑,IEditor.StopEditSession提交或取消更改。版本管理(Version Management)则用于处理多用户间的并发编辑。 8. **事件与用户交互** ArcEngine提供了一系列事件,如...
8. **保存编辑**:最后,使用`IEditor`的`StopEditing`方法提交编辑,将更改保存到Geodatabase中。 在“MapEdit”这个项目中,可能包含了实现上述功能的源代码文件和资源。开发者可以通过阅读和学习这些代码,掌握...
首先,获取数据集的`IEditor`对象,然后通过`StartEdit`方法开启编辑会话。接着,可以使用`SelectByShape`、`SelectById`等方法选择要编辑的对象,或者直接通过对象ID获取`iObject`实例。 2. **属性字段赋值**: ...
6. **数据编辑**:如果需要编辑数据,可以获取编辑会话(IEditor),开始编辑模式,然后进行增删改操作,最后提交编辑。 ```csharp ESRI.ArcGIS.Editor.IEditor editor = new ESRI.ArcGIS.Editor.EditorClass(); ...
3. **数据编辑**:使用IEditor和ITrackCache接口进行特征的增删改操作。 4. **空间查询**:通过IQueryFilter定义查询条件,使用IFeatureSelection和ISelectionSet接口进行选择并处理结果。 5. **投影转换**:利用...
5. **提交编辑**:移动操作完成后,必须调用IEditor接口的StopEditing方法,并传入true参数以保存编辑。这会触发编辑事务的提交,更新数据库中的要素位置。 6. **刷新地图**:最后,更新IMap对象,使其反映编辑后的...
4. 编辑对象:如IEditor,支持对地图数据进行添加、修改、删除操作。 5. 空间分析对象:如IGeoprocessor,用于执行各种空间分析任务,如缓冲区分析、地形分析等。 三、ArcObjects的开发环境 1. .NET Framework:...
6. **数据编辑**:如果需要,可以使用`IEDitor`接口进行数据编辑,包括新增、修改和删除地理特征。 7. **结果展示**:将分析结果以新图层的形式添加到地图,或者在控制台输出结果信息。 源代码的阅读和运行可以...
这可能需要调用`IEditor.Split`或`IFeatureSet.SplitFeatures`方法,指定断点坐标,将原始线对象分割为两个或多个新线对象。 6. **更新数据**:保存编辑结果,更新数据集和图层,使地图显示打断后的线段。 7. **...
1. 创建编辑会话:使用`IEditor`接口初始化编辑环境,启动编辑会话,如`Editor.StartEditing`和`Editor.StartOperation`。 2. 获取特征:通过`IFeatureClass`接口访问特定图层的特征类,然后使用`IFeatureCursor`...
例如,使用IGeometry接口可以创建和编辑几何对象,而利用IEditor接口则可进行高级的数据编辑任务。 5. **空间分析** ArcEngine内置了丰富的空间分析工具,如缓冲区分析、网络分析、地形分析等。开发者可以调用这些...
这涉及到IEditor的StopEditing()方法。 9. **编辑节点**:对于线和多边形要素,可以编辑其节点(即顶点)来改变其形状。这通常需要获取要素的几何对象,找到特定节点,然后移动或删除它。 10. **删除节点**:删除...
- `IEditEvents`和`IEditor`:提供编辑操作的事件处理和控制。 - `IToolbar`和`ITool`:构建工具条和工具的接口。 5. **代码实现流程**: - 初始化ArcEngine环境,加载数据源。 - 创建`IMapControl`,设置地图...
对于批量操作,可以使用IEditor或IDataset的CopyRows方法,将数据从一个数据源复制到另一个,或者使用IFeatureClass的CreateFeature和DeleteFeature方法添加或删除特征。 5. **事务管理**: ArcEngine支持事务处理...
同时,`IEditor`接口提供了图形化编辑功能,让用户在地图上直接进行数据修改。 总之,这个合集提供了C#与ArcEngine结合进行GIS开发的基础和进阶示例,无论是对于初学者还是有经验的开发者,都是一个宝贵的资源库,...
5. 编辑功能:利用IEditor接口,实现地图的编辑功能,如添加、修改和删除要素。 三、ArcGIS API开发 1. JavaScript API:适合构建Web GIS应用,提供了丰富的地图和图层控制,以及分析和查询功能。通过dojo.query、...
- **编辑工作流**:定义开始编辑、提交编辑和回退编辑的工作流程,使用IEditor和EditSession接口。 - **特征选择与编辑**:通过ISelectionSet选择地图上的特征,然后使用IFeatureClass和IFeature进行属性或几何...