My blog has been opened for a long time, but I still don't know what to write on the homepage. I am engaged in the GIS industry. Recently I have been studying AE. I 'd like to write some basic knowledge about AE, hope to help beginners.
Any system cannot do without data loading. below is the complete code for loading several common data in AE:
I. Loading shp files:
IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
// Obtain the current path and file name
OpenFileDialog dlg = new OpenFileDialog ();
Dlg. ShowDialog ();
String strFullPath = dlg. FileName;
If (strFullPath = "") return;
Int Index = strFullPath. LastIndexOf ("\\");
String filePath = strFullPath. Substring (0, Index );
String fileName = strFullPath. Substring (Index + 1 );
// Open the workspace and add the shp File
PWorkspaceFactory = new ShapefileWorkspaceFactoryClass ();
// Note that the path here cannot contain a file name
PFeatureWorkspace = (IFeatureWorkspace) pWorkspaceFactory. OpenFromFile (filePath, 0 );
PFeatureLayer = new FeatureLayerClass ();
// Note that the file name here cannot contain a path
PFeatureLayer. FeatureClass = pFeatureWorkspace. OpenFeatureClass (fileName );
PFeatureLayer. Name = pFeatureLayer. FeatureClass. AliasName;
AxMapControl1.Map. AddLayer (pFeatureLayer );
AxMapControl1.ActiveView. Refresh ();
2. Personal Database loading:
IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
IFeatureDataset pFeatureDataset;
// Obtain the current path and file name
OpenFileDialog dlg = new OpenFileDialog ();
Dlg. ShowDialog ();
String strFullPath = dlg. FileName;
If (strFullPath = "") return;
// Open the personGeodatabase and add a layer
IWorkspaceFactory pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass ();
// Open the workspace and traverse the dataset
IWorkspace pWorkspace = pAccessWorkspaceFactory. OpenFromFile (strFullPath, 0 );
IEnumDataset pEnumDataset = pWorkspace. get_Datasets (ESRI. ArcGIS. Geodatabase. esriDatasetType. esriDTAny );
PEnumDataset. Reset ();
IDataset pDataset = pEnumDataset. Next ();
// If the dataset is IFeatureDataset, the Child classes under the dataset are traversed.
If (pDataset is IFeatureDataset)
{
PFeatureWorkspace = (IFeatureWorkspace) pAccessWorkspaceFactory. OpenFromFile (strFullPath, 0 );
PFeatureDataset = pFeatureWorkspace. OpenFeatureDataset (pDataset. Name );
IEnumDataset pEnumDataset1 = pFeatureDataset. Subsets;
PEnumDataset1.Reset ();
IDataset pDataset1 = pEnumDataset1.Next ();
// If the subclass is FeatureClass, add it to axMapControl1
If (pDataset1 is IFeatureClass)
{
PFeatureLayer = new FeatureLayerClass ();
PFeatureLayer. FeatureClass = pFeatureWorkspace. OpenFeatureClass (pDataset1.Name );
PFeatureLayer. Name = pFeatureLayer. FeatureClass. AliasName;
AxMapControl1.Map. AddLayer (pFeatureLayer );
AxMapControl1.ActiveView. Refresh ();
}
}
Iii. CAD file loading:
IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
IFeatureDataset pFeatureDataset;
// Obtain the current path and file name
OpenFileDialog dlg = new OpenFileDialog ();
Dlg. ShowDialog ();
String strFullPath = dlg. FileName;
If (strFullPath = "") return;
Int Index = strFullPath. LastIndexOf ("\\");
String filePath = strFullPath. Substring (0, Index );
String fileName = strFullPath. Substring (Index + 1 );
// Open the CAD Dataset
PWorkspaceFactory = new CadWorkspaceFactoryClass ();
PFeatureWorkspace = (IFeatureWorkspace) pWorkspaceFactory. OpenFromFile (filePath, 0 );
// Open a feature set
PFeatureDataset = pFeatureWorkspace. OpenFeatureDataset (fileName );
// IFeaturClassContainer can manage each element class in IFeatureDataset
IFeatureClassContainer pFeatClassContainer = (IFeatureClassContainer) pFeatureDataset;
// Traverse the elements in the CAD file
For (int I = 0; I <pFeatClassContainer. ClassCount-1; I ++)
{
IFeatureClass pFeatClass = pFeatClassContainer. get_Class (I );
If (pFeatClass. FeatureType = esriFeatureType. esriFTCoverageAnnotation)
// If it is a note, add the note Layer
PFeatureLayer = new CadAnnotationLayerClass ();
Else
// If it is a vertex, line, or surface, add the element layer.
PFeatureLayer = new FeatureLayerClass ();
PFeatureLayer. Name = pFeatClass. AliasName;
PFeatureLayer. FeatureClass = pFeatClass;
AxMapControl1.Map. AddLayer (pFeatureLayer );
AxMapControl1.ActiveView. Refresh ();
}
Iv. Load raster data:
IWorkspaceFactory pWorkspaceFactory;
IRasterWorkspace pRasterWorkspace;
OpenFileDialog openFileDialog2 = new OpenFileDialog ();
OpenFileDialog2.Filter = "Layer File (*. lyr) | *. jpg; *. bmp; *. tiff ";
OpenFileDialog2.Title = "Open Map File ";
OpenFileDialog2.ShowDialog ();
// Obtain the current path and file name
String strFullPath = openFileDialog2.FileName;
If (strFullPath = "") return;
Int Index = strFullPath. LastIndexOf ("\\");
String fileName = strFullPath. Substring (Index + 1 );
String filePath = strFullPath. Substring (0, Index );
PWorkspaceFactory = new RasterWorkspaceFactoryClass ();
PRasterWorkspace = (IRasterWorkspace) pWorkspaceFactory. OpenFromFile (filePath, 0 );
IRasterDataset pRasterDataset = (IRasterDataset) pRasterWorkspace. OpenRasterDataset (fileName );
IRasterLayer pRasterLayer = new RasterLayerClass ();
PRasterLayer. CreateFromDataset (pRasterDataset );
AxMapControl1.Map. AddLayer (pRasterLayer );
V. Loading SDE databases: