//#### ArcGIS Snippets #### #region "Add Shapefile Using OpenFileDialog" ///<summary>Add a shapefile to the ActiveView using the Windows.Forms.OpenFileDialog control.</summary> /// ///<param name="activeView">An IActiveView interface</param> /// ///<remarks></remarks> public void AddShapefileUsingOpenFileDialog(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:\test\cities.shp" string shapefileLocation = openFileDialog.FileName; if (shapefileLocation != "") { // Ensure the user chooses a shapefile // Create a new ShapefileWorkspaceFactory CoClass to create a new workspace ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactory(); // 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.GetFileNameWithoutExtension(shapefileLocation) returns the base filename (without extension). Example: "cities" ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(shapefileLocation)); ESRI.ArcGIS.Carto.IFeatureLayer featureLayer = new ESRI.ArcGIS.Carto.FeatureLayer(); 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); } }
/// <summary> /// Add Shapefile layer /// </summary> /// <param name="path"></param> /// <param name="fileName"></param> private void AddShapeFileLayer(string path, string fileName) { try { // Create a new ShapefileWorkspaceFactory object and // open a shapefile folder - the path works with standard 9.3 installation IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactory(); IFeatureWorkspace featureWorkspace = (IFeatureWorkspace) workspaceFactory.OpenFromFile(path, 0); // Create a new FeatureLayer and assign a shapefile to it IFeatureLayer featureLayer = new ESRI.ArcGIS.Carto.FeatureLayer(); featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass(fileName); ILayer layer = (ILayer)featureLayer; layer.Name = featureLayer.FeatureClass.AliasName; // Add the Layer to the focus map IMap map = ArcMap.Document.FocusMap; map.AddLayer(layer); } catch (Exception e) { Log.WriteLine("AddShapeFileLayer: " + e.Message); } }
/// <summary> /// Cearte shapefile layer(Raster Layer) to open new layer for Polygons /// </summary> /// <returns></returns> /// <summary> /// Cearte New FeatureLayer /// </summary> /// <param name="featureClass"></param> /// <returns></returns> public IFeatureLayer CreateFeatureLayer(IFeatureClass featureClass) { try { // Create a new FeatureLayer and assign a shapefile to it IFeatureLayer featureLayer = new ESRI.ArcGIS.Carto.FeatureLayer(); featureLayer.FeatureClass = featureClass; ILayer layer = (ILayer)featureLayer; layer.Name = featureLayer.FeatureClass.AliasName; return (IFeatureLayer)layer; } catch (Exception e) { Log.WriteLine("CreateFeatureLayer:" + e.Message); } return null; }