原文地址:ArcEngine加载图层的五个步骤
作者:小马哥淡定
转自:
http://manwang.blog.sohu.com/130537431.html
1.创建一个类工厂
2.使用类工厂创建一个要使用的工作区
3.使用工作区打开并得到图层的dataset
4.把dataset装入到新建的图层实例
5.把图层加载到MapControl控件
示例代码:源自ArcGis help文件
1.添加rasterfile
[C#]
#region"Open Raster File As GeoDatset"
public ESRI.ArcGIS.Geodatabase.IGeoDataset OpenRasterFileAsGeoDatset(System.String path, System.String name)
{
try
{
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesRaster.RasterWorkspaceFactoryCl ass();
ESRI.ArcGIS.DataSourcesRaster.IRasterWorkspace rasterWorkspace = (ESRI.ArcGIS.DataSourcesRaster.IRasterWorkspace)(workspaceFactory.OpenFromFile(path, 0));
ESRI.ArcGIS.Geodatabase.IRasterDataset rasterDataset = rasterWorkspace.OpenRasterDataset(name);
ESRI.ArcGIS.Geodatabase.IGeoDataset geoDataset = (ESRI.ArcGIS.Geodatabase.IGeoDataset)rasterDataset; // Explicit Cast
return geoDataset;
}
catch (Exception ex)
{
//System.Diagnostics.Debug.WriteLine(ex.Message)
return null;
}
}
#endregion
[Visual Basic .NET]
#Region"Open Raster File As GeoDatset"
Public Function OpenRasterFileAsGeoDatse t(ByVal path As System.String, ByVal name As System.String) As ESRI.ArcGIS.Geodatabase.IGeoDataset
Try
Dim workspaceFactory As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory = New ESRI.ArcGIS.DataSourcesRaster.RasterWorkspaceFactoryCl ass()
Dim rasterWorkspace As ESRI.ArcGIS.DataSourcesRaster.IRasterWorkspace = CType(workspaceFactory.OpenFromFile(path, 0), ESRI.ArcGIS.DataSourcesRaster.IRasterWorkspace)
Dim rasterDataset As ESRI.ArcGIS.Geodatabase.IRasterDataset = rasterWorkspace.OpenRasterDataset(name)
Dim geoDataset As ESRI.ArcGIS.Geodatabase.IGeoDataset = CType(rasterDataset, ESRI.ArcGIS.Geodatabase.IGeoDataset) ' Explicit Cast
Return geoDataset
Catch ex As Exception
'System.Diagnostics.Debug.WriteLine(ex.Message)
Return Nothing
End Try
End Function
#End Region
2.添加shapefile
[C#]
#region"Add Shapefile Using OpenFileDialog"
public void AddShapefileUsingOpenFil eDialog(ESRI.ArcGIS.Carto.IActiveView activeView)
{
//parameter check
if (activeView == null)
{
return;
}
// Use the OpenFileDialog Class to choose which shapefile to load.
System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog();
openFileDialog.InitialDirectory = "c:";
openFileDialog.Filter = "Shapefiles (*.shp)|*.shp";
openFileDialog.FilterIndex = 2;
openFileDialog.RestoreDirectory = true;
openFileDialog.Multiselect = false;
if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// The user chose a particular shapefile.
// The returned string will be the full path, filename and file-extension for the chosen shapefile. Example: "C:testcities.shp"
string shapefileLocation = openFileDialog.FileName;
if (shapefileLocation != "")
{
// Ensure the user chooses a shapefile
// Create a new ShapefileWorkspaceFactor y CoClass to create a new workspace
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactor yClass();
// System.IO.Path.GetDirectoryName(shapefileLocation) returns the directory part of the string. Example: "C:test"
ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(shapefileLocation), 0); // Explicit Cast
// System.IO.Path.GetFileNameWithoutExtens ion(shapefileLocation) returns the base filename (without extension). Example: "cities"
ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtens ion(shapefileLocation));
ESRI.ArcGIS.Carto.IFeatureLayer featureLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass();
featureLayer.FeatureClass = featureClass;
featureLayer.Name = featureClass.AliasName;
featureLayer.Visible = true;
activeView.FocusMap.AddLayer(featureLayer);
// Zoom the display to the full extent of all layers in the map
activeView.Extent = activeView.FullExtent;
activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeography, null, null);
}
else
{
// The user did not choose a shapefile.
// Do whatever remedial actions as necessary
// System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #1",
// System.Windows.Forms.MessageBoxButtons.OK,
// System.Windows.Forms.MessageBoxIcon.Exclamation);
}
}
else
{
// The user did not choose a shapefile. They clicked Cancel or closed the dialog by the "X" button.
// Do whatever remedial actions as necessary.
// System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #2",
// System.Windows.Forms.MessageBoxButtons.OK,
// System.Windows.Forms.MessageBoxIcon.Exclamation);
}
}
#endregion
[Visual Basic .NET]
#Region"Add Shapefile Using OpenFileDialog"
Public Sub AddShapefileUsingOpenFil eDialog(ByVal activeView As ESRI.ArcGIS.Carto.IActiveView)
'parameter check
If activeView Is Nothing Then
Return
End If
' Use the OpenFileDialog Class to choose which shapefile to load.
Dim openFileDialog As System.Windows.Forms.OpenFileDialog = New System.Windows.Forms.OpenFileDialog
openFileDialog.InitialDirectory = "c:"
openFileDialog.Filter = "Shapefiles (*.shp)|*.shp"
openFileDialog.FilterIndex = 2
openFileDialog.RestoreDirectory = True
openFileDialog.Multiselect = False
If openFileDialog.ShowDialog = System.Windows.Forms.DialogResult.OK Then
' The user chose a particular shapefile.
' The returned string will be the full path, filename and file-extension for the chosen shapefile. Example: "C:testcities.shp"
Dim shapefileLocation As String = openFileDialog.FileName
If shapefileLocation <> "" Then
' Ensure the user chooses a shapefile
' Create a new ShapefileWorkspaceFactor y CoClass to create a new workspace
Dim workspaceFactory As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory = New ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactor yClass
' System.IO.Path.GetDirectoryName(shapefileLocation) returns the directory part of the string. Example: "C:test"
Dim featureWorkspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace = CType(workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(shapefileLocation), 0), ESRI.ArcGIS.Geodatabase.IFeatureWorkspace) ' Explicit Cast
' System.IO.Path.GetFileNameWithoutExtens ion(shapefileLocation) returns the base filename (without extension). Example: "cities"
Dim featureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtens ion(shapefileLocation))
Dim featureLayer As ESRI.ArcGIS.Carto.IFeatureLayer = New ESRI.ArcGIS.Carto.FeatureLayerClass
featureLayer.FeatureClass = featureClass
featureLayer.Name = featureClass.AliasName
featureLayer.Visible = True
activeView.FocusMap.AddLayer(featureLayer)
' Zoom the display to the full extent of all layers in the map
activeView.Extent = activeView.FullExtent
activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeography, Nothing, Nothing)
Else
' The user did not choose a shapefile.
' Do whatever remedial actions as necessary
' System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #1", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation)
End If
Else
' The user did not choose a shapefile. They clicked Cancel or closed the dialog by the "X" button.
' Do whatever remedial actions as necessary.
' System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #2", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation)
End If
End Sub
#End Region