资源简介
c#下Arcobject的应用实例
介绍了AO在c#下的加载、创建的基本流程
代码片段和文件信息
using System;
using System.IO ;
using System.Windows.Forms ;
using System.Reflection ;
using ESRI.ArcGIS.Carto ;
using ESRI.ArcGIS.Display ;
using ESRI.ArcGIS.Geometry ;
using ESRI.ArcGIS.Geodatabase ;
namespace AoTest
{
///
/// 使用本类可以新建点、线、面
/// 移动点、线、面
/// 编辑线、面的节点
/// 使用时需设置Map和Currentlayer
///
public class AoEditor
{
private ilayer m_pCurrentlayer;
private IMap m_pMap ;
private IFeature m_pEditFeature ;
private IPoint m_pPoint;
private IDisplayFeedback m_pFeedback;
// private ISelectionTracker m_pSelectionTracker;
private bool m_bInUse;
private IPointCollection m_pPointCollection;
///
/// 当前图层只写
///
public ilayer Currentlayer
{
set
{
m_pCurrentlayer = (ilayer) value;
}
}
///
/// 地图对象只写
///
public IMap Map
{
set
{
m_pMap = (IMap) value;
}
}
///
/// 构造函数
///
public AoEditor()
{
}
///
/// 开始编辑使工作空间处于可编辑状态
/// 在进行图层编辑前必须调用本方法
///
public void StartEditing()
{
try
{
if (m_pCurrentlayer ==null ) return ;
if (!(m_pCurrentlayer is IGeoFeaturelayer)) return ;
IFeaturelayer pFeaturelayer = (IFeaturelayer) m_pCurrentlayer;
IDataset pDataset = (IDataset) pFeaturelayer.FeatureClass;
if (pDataset ==null) return ;
// 开始编辑并设置Undo/Redo 为可用
IWorkspaceEdit pWorkspaceEdit =(IWorkspaceEdit) pDataset.Workspace;
if (!pWorkspaceEdit.IsBeingEdited())
{
pWorkspaceEdit.StartEditing(true);
pWorkspaceEdit.EnableUndoRedo();
}
}
catch(Exception e)
{
Console.WriteLine(e.Message.ToString());
}
}
///
/// 停止编辑,并将以前的编辑结果保存到数据文件中。
///
public void StopEditing()
{
bool bHasEdits = false;
bool bSave = false;
try
{
if (m_pCurrentlayer ==null) return ;
IFeaturelayer pFeaturelayer =(IFeaturelayer) m_pCurrentlayer;
if (pFeaturelayer.FeatureClass ==null) return ;
IDataset pDataset =(IDataset) pFeaturelayer.FeatureClass;
if (pDataset ==null) return ;
//如果数据已被修改,则提示用户是否保存
IWorkspaceEdit pWorkspaceEdit =(IWorkspaceEdit) pDataset.Workspace;
if (pWorkspaceEdit.IsBeingEdited())
{
pWorkspaceEdit.HasEdits(ref bHasEdits);
if (bHasEdits)
{
DialogResult result;
result = MessageBox.Show(“是否保存已做的修改?““提示“MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
bSave = true;
}
}
pWorkspaceEdit.StopEditing(bSave);
}
m_pMap.ClearSelection();
IActiveView pActiveView =(IActiveView) m_pMap;
pActiveView.Refresh();
}
catch(Exception e)
{
Console.WriteLine(e.Message.ToString());
}
}
///
/// 检查工作空间中是否有数据处于编辑状态
///
/// 是否正在编辑
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 28157 2005-08-17 16:39 AoTest\AoEditor.cs
文件 17924 2008-04-28 14:55 AoTest\AoTest.csproj
文件 2083 2008-04-21 13:51 AoTest\AoTest.csproj.user
文件 899 2008-04-21 13:51 AoTest\AoTest.sln
..A..H. 23552 2008-05-20 23:23 AoTest\AoTest.suo
文件 1078 2005-08-08 08:50 AoTest\App.ico
文件 1859 2005-08-08 08:50 AoTest\AssemblyInfo.cs
文件 6692 2005-08-10 09:35 AoTest\AttributeList.cs
文件 9223 2005-08-09 17:37 AoTest\AttributeList.resx
文件 28157 2005-08-17 16:39 AoTest\Backup\AoEditor.cs
文件 11126 2005-08-17 14:34 AoTest\Backup\AoTest.csproj
文件 1805 2005-09-29 15:53 AoTest\Backup\AoTest.csproj.user
文件 897 2005-08-08 08:50 AoTest\Backup\AoTest.sln
..A..H. 9216 2005-09-29 15:53 AoTest\Backup\AoTest.suo
文件 1078 2005-08-08 08:50 AoTest\Backup\App.ico
文件 1859 2005-08-08 08:50 AoTest\Backup\AssemblyInfo.cs
文件 6692 2005-08-10 09:35 AoTest\Backup\AttributeList.cs
文件 9223 2005-08-09 17:37 AoTest\Backup\AttributeList.resx
文件 66248 2005-09-27 15:01 AoTest\Backup\Form1.cs
文件 63755 2005-08-18 09:38 AoTest\Backup\Form1.resx
文件 9944 2005-09-29 15:52 AoTest\Backup\SurveyTools.cs
文件 122880 2005-09-27 15:01 AoTest\bin\Debug\AoTest.exe
文件 105984 2005-09-27 15:01 AoTest\bin\Debug\AoTest.pdb
文件 5632 2005-12-08 14:51 AoTest\bin\Debug\AoTest.vshost.exe
文件 5120 2005-08-09 09:07 AoTest\bin\Debug\Noname43651.mxd
文件 11862 2005-08-18 09:54 AoTest\bin\Debug\USA\CAPITALS.DBF
文件 167 1999-05-28 13:59 AoTest\bin\Debug\USA\Capitals.prj
文件 788 2005-08-18 09:54 AoTest\bin\Debug\USA\CAPITALS.sbn
文件 156 2005-08-18 09:54 AoTest\bin\Debug\USA\CAPITALS.sbx
文件 2004 2005-08-18 09:54 AoTest\bin\Debug\USA\CAPITALS.SHP
............此处省略41个文件信息
- 上一篇:蚁群算法演示程序
- 下一篇:2016年武汉大学地理信息夏令营编程试题与答案
评论
共有 条评论