Esempio n. 1
0
        // Explore the File GeoDatabase specified in fgdbPath, print information about its contents to the CSV file 'outfile'
        private static void exploreFGDB(string fgdbPath, string outfile)
        {
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(typeof(FileGDBWorkspaceFactoryClass));

            IFeatureWorkspace ifw;

            try
            {
                ifw = (IFeatureWorkspace)workspaceFactory.OpenFromFile(fgdbPath, 0);
            }catch (COMException)
            {
                return;
            }

            if (ifw == null)
            {
                return;
            }

            IWorkspace fw = workspaceFactory.OpenFromFile(fgdbPath, 0);

            IEnumDataset datasets = fw.Datasets[esriDatasetType.esriDTAny];

            processIEnumDataset(outfile, ifw, datasets, 0, "", fgdbPath);
        }
Esempio n. 2
0
        private void ComboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBoxEdit1.Text == "")
            {
                return;
            }
            else
            {
                //
                //此处为测试代码,需要替换为加载工作空间,打开要素类的代码
                //
                targetFeatureName = comboBoxEdit1.Text;
                pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile("E:\\测试数据", 0);
                pFeatureClass1    = pFeatureWorkspace.OpenFeatureClass(targetFeatureName);

                //得到标准要素类和原要素类的属性字段列表
                List <string> s1 = AttTableOperate.get_FieldsString(pFeatureClass1);
                int           index;
                for (int i = 0; i < s1.Count; i++)
                {
                    if (s1[i].ToUpper() == "FID" || s1[i].ToUpper() == "SHAPE")
                    {
                        continue;
                    }
                    else
                    {
                        index = dataGridView1.Rows.Add();
                    }
                    dataGridView1.Rows[index].Cells[0].Value = s1[i];
                }
            }
        }
Esempio n. 3
0
        private void populateDictionary()
        {
            //IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspaceFactory.OpenFromFile(@"C:\PFWGISBeta\PFWGIS.gdb", 0);
            IEnumDataset fcEnum = workspaceFactory.OpenFromFile(gdbPath, 0).Datasets[esriDatasetType.esriDTFeatureClass];
            IDataset     fcTemp;

            while ((fcTemp = fcEnum.Next()) != null)
            {
                nameFeatureClass.Add(fcTemp.BrowseName);
            }
            setFcList();
        }
Esempio n. 4
0
        public static ILayer OpenFile(string workPath, string fileName)
        {
            IWorkspace        pWorkspace        = pWorkspaceFactory.OpenFromFile(workPath, 0);
            IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
            IFeatureClass     pFeatureClass     = pFeatureWorkspace.OpenFeatureClass(fileName);
            IFeatureLayer     pFeatureLayer     = new FeatureLayerClass();

            pFeatureLayer.FeatureClass = pFeatureClass;
            pFeatureLayer.Name         = pFeatureClass.AliasName;
            ILayer pLayer = pFeatureLayer as ILayer;

            return(pLayer);
        }
        public static ILayer OpenRasterFile(string fullFilePath)
        {
            String           path            = System.IO.Path.GetDirectoryName(fullFilePath); //路径
            String           _name           = System.IO.Path.GetFileName(fullFilePath);      //文件名
            IWorkspace       myWorkspace     = rWorkspaceFactory.OpenFromFile(path, 0);
            IRasterWorkspace rasterWorkspace = myWorkspace as IRasterWorkspace;
            IRasterDataset   rasterDataset   = new RasterDatasetClass();
            IRasterLayer     rasterLayer     = new RasterLayerClass();

            rasterDataset = rasterWorkspace.OpenRasterDataset(_name);
            rasterLayer.CreateFromDataset(rasterDataset);
            return(rasterLayer);
        }
Esempio n. 6
0
        /// <summary>
        /// 初始化CADtoShape类(进行转换操作时)
        /// </summary>
        /// <param name="_CADPath">"*.dwg"文件的路径</param>
        public CADtoShape(string _CADPath, string savePath, string _TypeTag)
        {
            CADPath = _CADPath;
            //建立存储点线面的文件夹
            int    index = CADPath.LastIndexOf("\\");
            string name  = CADPath.Substring(index + 1);
            string path  = CADPath.Substring(0, index);

            pFeaWorkspace = pWorkspaceFactory.OpenFromFile(path, 0) as IFeatureWorkspace;
            SavePath      = savePath;//导出要素的路径
            TypeTag       = _TypeTag;
            IFeatureDataset pFeaDataset = pFeaWorkspace.OpenFeatureDataset(name);

            pFeaClassContainer = pFeaDataset as IFeatureClassContainer;
        }
Esempio n. 7
0
        /// <summary>
        /// 根据文件名和后缀,直接得到IFeatureWorkspace对象
        /// </summary>
        /// <param name="filename">文件路径</param>
        /// <param name="extention">后缀</param>
        /// <returns></returns>
        public IFeatureWorkspace getFeatureWorkspaceFromFile(string filename, string extention)
        {
            IWorkspaceFactory workspaceFactory = getWorkspaceFactory(extention);
            IFeatureWorkspace featureWorkspace = null;

            if (extention.ToUpper() == "SHP")
            {
                featureWorkspace = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(filename), 0) as IFeatureWorkspace;
            }
            else
            {
                featureWorkspace = workspaceFactory.OpenFromFile(filename, 0) as IFeatureWorkspace;
            }
            return(featureWorkspace);
        }
Esempio n. 8
0
        private void openFile_Click(object sender, EventArgs e)
        {
            DialogResult res = openFileDlg.ShowDialog(this);

            if (res == DialogResult.OK)
            {
                try
                {
                    zigFile.Text = openFileDlg.FileName;
                    // Open workspace
                    wksf = new PostGisWorkspaceFactory();
                    fwks = (IFeatureWorkspace)wksf.OpenFromFile(zigFile.Text, 0);
                    // Open workspace
                    IWorkspace ws = fwks as IWorkspace;
                    // Show workspace PostGIS layer
                    IEnumDatasetName edsn = ws.get_DatasetNames(esriDatasetType.esriDTFeatureClass);
                    IDatasetName     dsn;
                    // Load PostGIS layer names
                    clbLayers.Items.Clear();
                    while ((dsn = edsn.Next()) != null)
                    {
                        clbLayers.Items.Add(dsn.Name);
                    }
                }
                catch (COMException COMex)
                {
                    MessageBox.Show("Error " + COMex.ErrorCode.ToString() + ": " + COMex.Message);
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("Error: " + ex.Message);
                }
            }
        }
Esempio n. 9
0
        //窗体加载时遍历工作空间,初始化输入要素类下拉框的列表
        private void FrmProjTrans_Load(object sender, EventArgs e)
        {
            //初始化选择要素集
            //此处为测试工作空间
            pWorkspaceFactory = new ShapefileWorkspaceFactory();
            pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(OpenShpPath, 0) as IFeatureWorkspace;
            IWorkspace pWorkspace = pFeatureWorkspace as IWorkspace;

            List <IFeatureClass> featureClassList = new List <IFeatureClass>();
            List <string>        FeatureNameList  = new List <string>();
            IEnumDataset         pEnumDs          = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureClass);
            IDataset             pDS;

            while ((pDS = pEnumDs.Next()) != null)
            {
                FeatureNameList.Add(pDS.Name);
                featureClassList.Add(pFeatureWorkspace.OpenFeatureClass(pDS.Name));
            }
            for (int i = 0; i < featureClassList.Count; i++)
            {
                comBxInputFeaClass.Items.Add(FeatureNameList[i]);
            }

            //初始化datagridview控件
            dataGridView1.Rows.Add("X方向平移量", "米", "0");
            dataGridView1.Rows.Add("Y方向平移量", "米", "0");
            dataGridView1.Rows.Add("Z方向平移量", "米", "0");
            dataGridView1.Rows.Add("X方向旋转角度", "秒", "0");
            dataGridView1.Rows.Add("Y方向旋转角度", "秒", "0");
            dataGridView1.Rows.Add("Z方向旋转角度", "秒", "0");
            dataGridView1.Rows.Add("比例尺差", "%", "0");
        }
        private void btnDrive_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                IObjectFactory objFactory = m_application as IObjectFactory;

                //Use reflection to get ClsID of ShapefileWorkspaceFactory
                Type   shpWkspFactType = typeof(ShapefileWorkspaceFactoryClass);
                string typeClsID       = shpWkspFactType.GUID.ToString("B");

                string            shapeFile        = System.IO.Path.GetFileNameWithoutExtension(txtShapeFilePath.Text);
                string            fileFolder       = System.IO.Path.GetDirectoryName(txtShapeFilePath.Text);
                IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)objFactory.Create(typeClsID);
                IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspaceFactory.OpenFromFile(fileFolder, 0); //(@"C:\data\test", 0);

                //Create the layer
                IFeatureLayer featureLayer = (IFeatureLayer)objFactory.Create("esriCarto.FeatureLayer");
                featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass(shapeFile); // ("worldgrid");
                featureLayer.Name         = featureLayer.FeatureClass.AliasName;

                //Add the layer to document
                IBasicDocument document = (IBasicDocument)m_application.Document;
                document.AddLayer(featureLayer);
                document.UpdateContents();
            }
            catch { } //Or make sure it is a valid shp file first

            this.Cursor = Cursors.Default;
        }
Esempio n. 11
0
        public static IFeatureWorkspace GetFeatureWorkspace(string workspacePath)
        {
            if (!System.IO.Directory.Exists(workspacePath))
            {
                throw new Exception("Directory does not exist");
            }

            IWorkspaceFactory workspaceFactory = Activator.CreateInstance(Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory")) as IWorkspaceFactory;

            if (workspaceFactory == null)
            {
                throw new Exception("NATestNetworkDataset: workspaceFactory should not be null");
            }

            IFeatureWorkspace featureWorkspace = workspaceFactory.OpenFromFile(workspacePath, 0) as IFeatureWorkspace;

            if (featureWorkspace == null)
            {
                throw new Exception("NATestNetworkDataset: featureWorkspace should not be null");
            }

            // clean up the workspace factory singleton
            System.Runtime.InteropServices.Marshal.ReleaseComObject(workspaceFactory);
            workspaceFactory = null;
            GC.Collect();

            return(featureWorkspace);
        }
Esempio n. 12
0
        public IFeatureWorkspace OpenCadWorkspace(string cadPath)
        {
            m_workspaceFactory = new CadWorkspaceFactoryClass();
            IFeatureWorkspace featureWorkspce = m_workspaceFactory.OpenFromFile(cadPath, 0) as IFeatureWorkspace;

            return(featureWorkspce);
        }
Esempio n. 13
0
        public IFeatureWorkspace OpenSHPWorkspace(string shpPath)
        {
            m_workspaceFactory = new ShapefileWorkspaceFactoryClass();
            IFeatureWorkspace featureWorkspce = m_workspaceFactory.OpenFromFile(shpPath, 0) as IFeatureWorkspace;

            return(featureWorkspce);
        }
Esempio n. 14
0
 /// <summary>
 /// Common tools for manipulating GDB data
 /// </summary>
 /// <param name="gdbPath">the GDB file path</param>
 public CommonTool(string gdbPath)
 {
     //Construct FeatureWorkspace
     workspaceFactory = new FileGDBWorkspaceFactoryClass();
     pWorkspace       = workspaceFactory.OpenFromFile(gdbPath, 0);
     pFeaWorkspace    = (IFeatureWorkspace)pWorkspace;
 }
Esempio n. 15
0
        /// <summary>
        /// open file GDB
        /// </summary>
        /// <param name="path">path of file geodatabase</param>
        /// <returns>objects workspace</returns>
        internal static IWorkspace FileGdbWorkspaceFromPath(string path)
        {
            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);

            return(workspaceFactory.OpenFromFile(path, 0));
        }
Esempio n. 16
0
        private static IGeoFeatureLayer CreateLayerCopy(IFeatureLayer layer, IObjectFactory objFactory)
        {
            var workspacePath = GetWorkspacePathForLayer(layer);

            Type   factoryType   = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
            string typeFactoryID = factoryType.GUID.ToString("B");

            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)objFactory.Create(typeFactoryID);
            IFeatureWorkspace calcWorkspace    = (IFeatureWorkspace)workspaceFactory.OpenFromFile(workspacePath, 0);

            var featureLayer  = (IFeatureLayer)objFactory.Create("esriCarto.FeatureLayer");
            var featureClassC = calcWorkspace.OpenFeatureClass(layer.FeatureClass.AliasName);

            featureLayer.FeatureClass = featureClassC;
            featureLayer.Name         = layer.Name;

            var arcMapLayerDefinition = layer as IFeatureLayerDefinition2;
            var layerDefinition       = featureLayer as IFeatureLayerDefinition2;

            layerDefinition.DefinitionExpression = arcMapLayerDefinition.DefinitionExpression;

            IGeoFeatureLayer geoArcMapLayer = layer as IGeoFeatureLayer;
            IGeoFeatureLayer geoFL          = featureLayer as IGeoFeatureLayer;

            geoFL.Renderer = geoArcMapLayer.Renderer;

            return(geoFL);
        }
Esempio n. 17
0
        protected override void OnClick()
        {
            string tablePath = Path.Combine(DataPath, @"File-Based\MajorCities.csv");
            string tableName = Path.GetFileName(tablePath);

            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesFile.TextFileWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = Activator.CreateInstance(factoryType) as IWorkspaceFactory;
            IWorkspace workspace = workspaceFactory.OpenFromFile(Path.GetDirectoryName(tablePath), 0);

            ITable table = ((IFeatureWorkspace) workspace).OpenTable(tableName);
            ISpatialReference sRef = CreateSpatialReference(esriSRGeoCSType.esriSRGeoCS_WGS1984);

            IFeatureClass featureClass = CreateXYEventFeature(table, "POINT_X", "POINT_y", sRef);
            IFeatureLayer featureLayer = new FeatureLayerClass
            {
                FeatureClass = featureClass,
                Name = "CSV XY Event Table"
            };

            IFeatureLayerSourcePageExtension sourcePageExtension = new XYDataSourcePageExtensionClass();
            ((ILayerExtensions) featureLayer).AddExtension(sourcePageExtension);

            ArcMap.Document.FocusMap.AddLayer(featureLayer);
            ArcMap.Document.UpdateContents();
        }
Esempio n. 18
0
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //create raster dataset from the JPIP service url
                Type factoryType           = Type.GetTypeFromProgID("esriDataSourcesRaster.RasterWorkspaceFactory");
                IWorkspaceFactory wsFact   = Activator.CreateInstance(factoryType) as IWorkspaceFactory;
                string            tempPath = Path.GetTempPath();
                IRasterWorkspace2 ws       = wsFact.OpenFromFile(tempPath, 0) as IRasterWorkspace2;
                IRasterDataset    rds      = ws.OpenRasterDataset(txtJPIPUrl.Text);

                //create a layer from the raster dataset
                IRasterLayer rasterLayer = new RasterLayerClass();
                rasterLayer.CreateFromDataset(rds);
                string layerName = txtLayerName.Text;
                if (layerName == "")
                {
                    layerName = txtJPIPUrl.Text.Substring(txtJPIPUrl.Text.LastIndexOf("/") + 1, txtJPIPUrl.Text.Length - txtJPIPUrl.Text.LastIndexOf("/") - 1);
                }
                rasterLayer.Name = layerName;

                //add the JPIP layer to the current data frame of ArcMap
                ArcMap.Document.FocusMap.AddLayer(rasterLayer);
                this.Close();
            }
            catch
            {
                MessageBox.Show("Couldn't connect to the specified URL, sample url: jpip://myserver:8080/JP2Server/imagealias");
            }
        }
Esempio n. 19
0
        private IWorkspace OpenPlugInWorkspace()
        {
            try
            {
                string path = GetFileName();
                if (string.Empty == path)
                {
                    return(null);
                }

                //update the path textbox
                txtPath.Text = path;

                //get the type using the ProgID
                Type t = Type.GetTypeFromProgID("esriGeoDatabase.SimplePointPluginWorkspaceFactory");
                //Use activator in order to create an instance of the workspace factory
                IWorkspaceFactory workspaceFactory = Activator.CreateInstance(t) as IWorkspaceFactory;

                //open the workspace
                return(workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(path), 0));
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(ex.Message);
                return(null);
            }
        }
Esempio n. 20
0
        public static IWorkspace openWorkspace()
        {
            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);

            return(workspaceFactory.OpenFromFile(@"E:\csantos\src\ArcEasyObjects\data\aeoSample.gdb", 0));
        }
        public IWorkspace GetGeodatabaseWorkspace(string gdbPath)
        {
            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);

            return(workspaceFactory.OpenFromFile(gdbPath, 0));
        }
        // For example, connectionFile = @"C:\myData\Connection to Kona.sde".
        public IWorkspace OpenArcSDEConnection(String connectionFile)
        {
            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);

            return(workspaceFactory.OpenFromFile(connectionFile, 0));
        }
Esempio n. 23
0
        public static IWorkspace GetWorkspace()
        {
            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
            IWorkspace        workspace        = workspaceFactory.OpenFromFile(@"C:\Users\YourUserName\AppData\Roaming\ESRI\Desktop10.3\ArcCatalog\[email protected]", 0);

            return(workspace);
        }
Esempio n. 24
0
        public static IWorkspace OpenGeodatabaseWorkspace(string geodatabase)
        {
            const string      progId            = "esriDataSourcesGDB.FileGDBWorkspaceFactory";
            Type              factoryType       = Type.GetTypeFromProgID(progId);
            IWorkspaceFactory pWorkspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);

            return(pWorkspaceFactory.OpenFromFile(geodatabase, 0));
        }
Esempio n. 25
0
        public IWorkspace OpenFileGDB(string fgdbpath)
        {
            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
            IWorkspace        fgdbWorkspace    = workspaceFactory.OpenFromFile(fgdbpath, 0);

            return(fgdbWorkspace);
        }
Esempio n. 26
0
        protected override void OnClick()
        {
            string       tablePath   = Path.Combine(DataPath, @"Geodatabase\ManhattanKS.gdb\ParcelIDs");
            string       tableName   = Path.GetFileName(tablePath);
            const string searchField = "PID";

            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = Activator.CreateInstance(factoryType) as IWorkspaceFactory;
            IWorkspace        workspace        = workspaceFactory.OpenFromFile(Path.GetDirectoryName(tablePath), 0);

            IObjectClassDescription objClassDesc = new ObjectClassDescriptionClass();

            IFields     fields     = objClassDesc.RequiredFields;
            IFieldsEdit fieldsEdit = (IFieldsEdit)fields;

            IField     field     = new FieldClass();
            IFieldEdit fieldEdit = (IFieldEdit)field;

            fieldEdit.Name_2       = searchField;
            fieldEdit.Type_2       = esriFieldType.esriFieldTypeString;
            fieldEdit.IsNullable_2 = true;
            fieldEdit.AliasName_2  = searchField;
            fieldEdit.Editable_2   = true;
            fieldEdit.Length_2     = 250;

            fieldsEdit.AddField(field);
            fields = fieldsEdit;

            ITable table = CreateTable((IWorkspace2)workspace, tableName, fields);

            using (ComReleaser releaser = new ComReleaser())
            {
                ICursor cursor = table.Insert(true);
                releaser.ManageLifetime(cursor);

                string txtPath          = Path.Combine(DataPath, "UniqueValues.txt");
                int    searchFieldIndex = table.FindField(searchField);

                IRowBuffer buffer = table.CreateRowBuffer();

                using (StreamReader reader = new StreamReader(txtPath))
                {
                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        string id = line.Split(new[] { '.', ' ' }, StringSplitOptions.RemoveEmptyEntries)[1];
                        buffer.Value[searchFieldIndex] = id;
                        cursor.InsertRow(buffer);
                    }

                    cursor.Flush();
                }
            }

            ((ITableCollection)ArcMap.Document.FocusMap).AddTable(table);
            ArcMap.Document.UpdateContents();
            Marshal.FinalReleaseComObject(table);
        }
Esempio n. 27
0
        /// <summary>
        /// Create the analysis layer, load the locations, solve the analysis, and write to disk
        /// </summary>
        public void SolveRoute()
        {
            // Open the feature workspace, input feature class, and network dataset
            // As Workspace Factories are Singleton objects, they must be instantiated with the Activator
            IWorkspaceFactory workspaceFactory = System.Activator.CreateInstance(System.Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory")) as IWorkspaceFactory;
            IFeatureWorkspace featureWorkspace = workspaceFactory.OpenFromFile(Application.StartupPath + FGDB_WORKSPACE, 0) as IFeatureWorkspace;
            IFeatureClass     inputStopsFClass = featureWorkspace.OpenFeatureClass(INPUT_STOPS_FC);

            // Obtain the dataset container from the workspace
            ESRI.ArcGIS.Geodatabase.IFeatureDataset featureDataset = featureWorkspace.OpenFeatureDataset(FEATURE_DATASET);
            var featureDatasetExtensionContainer = featureDataset as ESRI.ArcGIS.Geodatabase.IFeatureDatasetExtensionContainer;

            ESRI.ArcGIS.Geodatabase.IFeatureDatasetExtension featureDatasetExtension = featureDatasetExtensionContainer.FindExtension(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTNetworkDataset);
            var datasetContainer3 = featureDatasetExtension as ESRI.ArcGIS.Geodatabase.IDatasetContainer3;

            // Use the container to open the network dataset.
            ESRI.ArcGIS.Geodatabase.IDataset dataset = datasetContainer3.get_DatasetByName(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTNetworkDataset, NETWORK_DATASET);
            INetworkDataset networkDataset           = dataset as INetworkDataset;

            // Create the Route NALayer
            INALayer      naLayer      = CreateRouteAnalysisLayer("Route", networkDataset);
            INAContext    naContext    = naLayer.Context;
            INAClass      stopsNAClass = naContext.NAClasses.get_ItemByName("Stops") as INAClass;
            IFeatureClass routesFC     = naContext.NAClasses.get_ItemByName("Routes") as IFeatureClass;

            // Load the Stops
            INAClassFieldMap naClassFieldMap = new NAClassFieldMapClass();

            naClassFieldMap.set_MappedField("Name", INPUT_NAME_FIELD);

            INAClassLoader naLoader = new NAClassLoaderClass();

            naLoader.Locator  = naContext.Locator;
            naLoader.NAClass  = stopsNAClass;
            naLoader.FieldMap = naClassFieldMap;

            // Avoid loading network locations onto non-traversable portions of elements
            INALocator3 locator = naContext.Locator as INALocator3;

            locator.ExcludeRestrictedElements = true;
            locator.CacheRestrictedElements(naContext);

            int rowsInCursor = 0;
            int rowsLocated  = 0;

            naLoader.Load(inputStopsFClass.Search(new QueryFilterClass(), false) as ICursor, new CancelTrackerClass(), ref rowsInCursor, ref rowsLocated);

            //Message all of the network analysis agents that the analysis context has changed
            ((INAContextEdit)naContext).ContextChanged();

            //Solve
            INASolver naSolver = naContext.Solver;

            naSolver.Solve(naContext, new GPMessagesClass(), new CancelTrackerClass());

            //Save the layer to disk
            SaveLayerToDisk(naLayer as ILayer, System.Environment.CurrentDirectory + @"\Route.lyr");
        }
Esempio n. 28
0
        private IWorkspace ConnectToFgdb(string path)
        {
            Type factoryType = Type.GetTypeFromProgID(
                "esriDataSourcesGDB.FileGDBWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
                                                     (factoryType);

            return(workspaceFactory.OpenFromFile(path, 0));
        }
Esempio n. 29
0
        /// <summary>
        ///     Connects to the geodatabase given the specified parameters.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <returns>
        ///     Returns the <see cref="IWorkspace" /> representing the connection to the geodatabase; otherwise <c>null</c>.
        /// </returns>
        protected IWorkspace Open(string fileName)
        {
            Log.Info("");
            Log.Info("Connecting to the geodatabase specified by the {0} file.", Path.GetFileName(fileName));

            IWorkspaceFactory factory = WorkspaceFactories.GetFactory(fileName);

            return(factory.OpenFromFile(fileName, 0));
        }
Esempio n. 30
0
        public static void MyClassInitialize(TestContext testContext)
        {
            // 打开测试shp数据
            Type FactoryType = Type.GetTypeFromProgID("esriDataSourcesFile.ShapefileWorkspaceFactory");

            m_workspaceFactory = Activator.CreateInstance(FactoryType) as IWorkspaceFactory;
            string shpPath = System.IO.Path.GetFullPath(TestInitialize.m_testDataPath + "shapefiles\\airports.shp");

            m_featureWorkspace = m_workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(shpPath), 0) as IFeatureWorkspace;
        }
Esempio n. 31
0
        public IWorkspace OpenSDEWorkspace()
        {
            m_workspaceFactory = new FileGDBWorkspaceFactoryClass();

            IFeatureWorkspace featureWorkspace = null;
            try
            {
                featureWorkspace = m_workspaceFactory.OpenFromFile(m_fgdbPath, 0) as IFeatureWorkspace;

            }
            catch
            {
                MessageBox.Show("请检查连接SDE服务器的连接字符串");
                return null;
            }
            IWorkspace workspace = featureWorkspace as IWorkspace;
            this.m_workSpace = workspace;
            return workspace;
        }
Esempio n. 32
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pSourceFeatureClass"></param>
        /// <param name="_pTWorkspaceFactory"></param>
        /// <param name="_pTWs"></param>
        /// <param name="_pTName"></param>
        public void ConvertQuery2FeatureClass( IFeatureClass pSourceFeatureClass , IWorkspaceFactory _pTWorkspaceFactory, String _pTWs, string _pTName)
        {
            IWorkspace pTWorkspace = _pTWorkspaceFactory.OpenFromFile(_pTWs, 0);

            IDataset pSDataset = pSourceFeatureClass as IDataset;

            IFeatureClassName pSourceFeatureClassName = pSDataset.FullName as IFeatureClassName;

            IDataset pTDataset = (IDataset)pTWorkspace;

            IName pTDatasetName = pTDataset.FullName;

            IWorkspaceName pTargetWorkspaceName = (IWorkspaceName)pTDatasetName;

            IFeatureClassName pTargetFeatureClassName = new FeatureClassNameClass();

            IDatasetName pTargetDatasetName = (IDatasetName)pTargetFeatureClassName;

            // 验证要素类的名称是否合法,但是并没有对这个名称是否存在做检查
            string pTableName = null;

            IFieldChecker pNameChecker = new FieldCheckerClass();

            pNameChecker.ValidateWorkspace = pTWorkspace;

            int pFlag = pNameChecker.ValidateTableName(_pTName, out pTableName);

            pTargetDatasetName.Name = pTableName;

            pTargetDatasetName.WorkspaceName = pTargetWorkspaceName;

            // 创建字段检查对象
            IFieldChecker pFieldChecker = new FieldCheckerClass();

            IFields sourceFields = pSourceFeatureClass.Fields;
            IFields pTargetFields = null;

            IEnumFieldError pEnumFieldError = null;

            pFieldChecker.InputWorkspace = ((IDataset)pSourceFeatureClass).Workspace;

            pFieldChecker.ValidateWorkspace = pTWorkspace;

            // 验证字段
            pFieldChecker.Validate(sourceFields, out pEnumFieldError, out pTargetFields);
            if (pEnumFieldError != null)
            {
                // 报错提示
                Console.WriteLine("Errors were encountered during field validation.");
            }

            String pShapeFieldName = pSourceFeatureClass.ShapeFieldName;

            int pFieldIndex = pSourceFeatureClass.FindField(pShapeFieldName);

            IField pShapeField = sourceFields.get_Field(pFieldIndex);

            IGeometryDef pTargetGeometryDef = pShapeField.GeometryDef;

            // 创建要素转换对象
            IFeatureDataConverter pFDConverter = new FeatureDataConverterClass();

            IEnumInvalidObject pEnumInvalidObject = pFDConverter.ConvertFeatureClass(pSourceFeatureClassName, null, null, pTargetFeatureClassName,
                pTargetGeometryDef, pTargetFields, "", 1000, 0);

            // 检查是否有错误
            IInvalidObjectInfo pInvalidInfo = null;

            pEnumInvalidObject.Reset();

            while ((pInvalidInfo = pEnumInvalidObject.Next()) != null)
            {
                // 报错提示.
                Console.WriteLine("Errors occurred for the following feature: {0}",
                    pInvalidInfo.InvalidObjectID);
            }
        }
Esempio n. 33
0
 public IFeatureWorkspace OpenSHPWorkspace(string shpPath)
 {
     m_workspaceFactory = new ShapefileWorkspaceFactoryClass();
     IFeatureWorkspace featureWorkspce = m_workspaceFactory.OpenFromFile(shpPath, 0) as IFeatureWorkspace;
     return featureWorkspce;
 }
Esempio n. 34
0
 public IFeatureWorkspace OpenCadWorkspace(string cadPath)
 {
     m_workspaceFactory = new CadWorkspaceFactoryClass();
     IFeatureWorkspace featureWorkspce = m_workspaceFactory.OpenFromFile(cadPath, 0) as IFeatureWorkspace;
     return featureWorkspce;
 }
Esempio n. 35
0
 private void openFile_Click(object sender, EventArgs e)
 {
     DialogResult res = openFileDlg.ShowDialog(this);
     if (res == DialogResult.OK)
     {
         try
         {
             zigFile.Text = openFileDlg.FileName;
             // Open workspace
             wksf = new PostGisWorkspaceFactory();
             fwks = (IFeatureWorkspace)wksf.OpenFromFile(zigFile.Text, 0);
             // Open workspace
             IWorkspace ws = fwks as IWorkspace;
             // Show workspace PostGIS layer
             IEnumDatasetName edsn = ws.get_DatasetNames(esriDatasetType.esriDTFeatureClass);
             IDatasetName dsn;
             // Load PostGIS layer names
             clbLayers.Items.Clear();
             while ((dsn = edsn.Next()) != null)
             {
                 clbLayers.Items.Add(dsn.Name);
             }
         }
         catch (COMException COMex)
         {
             MessageBox.Show("Error " + COMex.ErrorCode.ToString() + ": " + COMex.Message);
         }
         catch (System.Exception ex)
         {
             MessageBox.Show("Error: " + ex.Message);
         }
     }
 }