/// <summary>
        /// 创建GDB
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="gdbname"></param>
        /// <returns></returns>
        public static string CreateGDB(string folder, string gdbname)
        {
            if (string.IsNullOrWhiteSpace(folder) || string.IsNullOrWhiteSpace(gdbname))
            {
                throw new Exception("路径不能为空");
            }
            if (System.Text.RegularExpressions.Regex.IsMatch(gdbname, "[/\\, ]"))
            {
                throw new Exception("路径不能含有特殊字符");
            }
            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }
            IWorkspaceFactory2 wsFctry = new FileGDBWorkspaceFactoryClass();

            if (!gdbname.ToLower().EndsWith(".gdb"))
            {
                gdbname += ".gdb";
            }
            IWorkspaceName wsName  = wsFctry.Create(folder, gdbname, null, 0);
            string         gdbPath = wsName == null ? "" : wsName.PathName;

            Marshal.ReleaseComObject(wsName);
            Marshal.ReleaseComObject(wsFctry);
            return(gdbPath);
        }
Beispiel #2
0
 private void Clip_Load(object sender, EventArgs e)
 {
     //将featurelayerlist中的元素添加到inputcombox中与maskcombox中
     for (int i = 0; i < featurelayerlist.Count; i++)
     {
         IDataLayer     datalayer = featurelayerlist[i] as IDataLayer;
         IWorkspaceName w_name    = ((IDatasetName)(datalayer.DataSourceName)).WorkspaceName;
         clip_input.Properties.Items.Add(w_name.PathName + "\\" + featurelayerlist[i].Name + ".shp");
         clip_mask.Properties.Items.Add(w_name.PathName + "\\" + featurelayerlist[i].Name + ".shp");
     }
     //将rasterlayerlist中的元素添加到inputcombox中
     for (int i = 0; i < rasterlayerlist.Count; i++)
     {
         IDataLayer     datalayer = rasterlayerlist[i] as IDataLayer;
         IWorkspaceName w_name    = ((IDatasetName)(datalayer.DataSourceName)).WorkspaceName;
         //地图文档数据w_name.PathName没有斜杠,非地图文档数据w_name.PathName有斜杠,所以路径拼接的时候需要判断
         if (w_name.PathName.LastIndexOf("\\") == w_name.PathName.Length - 1)
         {
             clip_input.Properties.Items.Add(w_name.PathName + rasterlayerlist[i].Name);
             clip_mask.Properties.Items.Add(w_name.PathName + rasterlayerlist[i].Name);
         }
         else
         {
             clip_input.Properties.Items.Add(w_name.PathName + "\\" + rasterlayerlist[i].Name);
             clip_mask.Properties.Items.Add(w_name.PathName + "\\" + rasterlayerlist[i].Name);
         }
     }
     clip_featureboundarycheck.Enabled = false; //是否根据矢量图形边界裁剪选项不可用
     clip_exporttomapbutton.Enabled    = false;
     this.Tag = this.Handle;                    //将main窗口中mapcontrol返回的坐标通过handle传回clip窗口
 }
        public ITable DataTableToAETable(DataTable table, string name)
        {
            IWorkspaceFactory workspaceFactory = new InMemoryWorkspaceFactoryClass();
            IWorkspaceName    workspaceName    = workspaceFactory.Create("", "MyWorkspace", null, 0);
            IName             names            = (IName)workspaceName;
            IWorkspace        inmemWor         = (IWorkspace)names.Open();
            ITable            pTable           = DataTableToAETable(table, inmemWor as IFeatureWorkspace, name);

            if (names != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(names);
            }
            if (workspaceFactory != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(workspaceFactory);
            }
            if (workspaceName != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(workspaceName);
            }
            if (inmemWor != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(inmemWor);
            }
            return(pTable);
        }
Beispiel #4
0
        /// <summary>
        /// 导出要素类到目标工作空间
        /// </summary>
        /// <param name="featureClass"></param>
        /// <param name="workspace"></param>
        /// <param name="queryGeometry"></param>
        /// <param name="spatialRelEnum"></param>
        /// <param name="whereClause"></param>
        /// <returns></returns>
        public static Boolean ExportToWorkspace(IFeatureClass featureClass, IWorkspace workspace, IGeometry queryGeometry = null, esriSpatialRelEnum spatialRelEnum = esriSpatialRelEnum.esriSpatialRelIntersects, string whereClause = "")
        {
            IDataset          inDataSet        = featureClass as IDataset;
            IFeatureClassName inFCName         = inDataSet.FullName as IFeatureClassName;
            IWorkspace        inWorkspace      = inDataSet.Workspace;
            IDataset          outDataSet       = workspace as IDataset;
            IWorkspaceName    outWorkspaceName = outDataSet.FullName as IWorkspaceName;
            IFeatureClassName outFCName        = new FeatureClassNameClass();
            IDatasetName      dataSetName      = outFCName as IDatasetName;

            dataSetName.WorkspaceName = outWorkspaceName;
            dataSetName.Name          = inDataSet.Name;

            IFieldChecker fieldChecker = new FieldCheckerClass
            {
                InputWorkspace    = inWorkspace,
                ValidateWorkspace = workspace
            };
            IFields fields = featureClass.Fields;

            fieldChecker.Validate(fields, out IEnumFieldError enumFieldError, out IFields outFields);
            IFeatureDataConverter featureDataConverter = null;

            IField geometryField;

            try
            {
                IGeometryDef   geometryDef = null;
                ISpatialFilter pSF         = new SpatialFilterClass();

                for (int i = 0; i < outFields.FieldCount; i++)
                {
                    if (outFields.get_Field(i).Type == esriFieldType.esriFieldTypeGeometry)
                    {
                        geometryField = outFields.get_Field(i);
                        geometryDef   = geometryField.GeometryDef;
                        IGeometryDefEdit targetFCGeoDefEdit = (IGeometryDefEdit)geometryDef;
                        targetFCGeoDefEdit.GridCount_2 = 1;
                        targetFCGeoDefEdit.set_GridSize(0, 0);
                        targetFCGeoDefEdit.SpatialReference_2 = geometryField.GeometryDef.SpatialReference;

                        pSF.Geometry      = queryGeometry;
                        pSF.GeometryField = featureClass.ShapeFieldName;
                        pSF.SpatialRel    = spatialRelEnum;
                        pSF.WhereClause   = whereClause;
                        break;
                    }
                }

                featureDataConverter = new FeatureDataConverterClass();
                featureDataConverter.ConvertFeatureClass(inFCName, pSF, null, outFCName, geometryDef, outFields, " ", 1000, 0);

                return(true);
            }
            catch (Exception ex)
            {
                LOG.Error("图层数据导出出错!" + ex.Message);
                throw ex;
            }
        }
Beispiel #5
0
 public static bool ConvertFeatureDataset(IWorkspace sourceWorkspace, IWorkspace targetWorkspace,
                                          string nameOfSourceFeatureDataset, string nameOfTargetFeatureDataset)
 {
     try
     {
         //create source workspace name
         IDataset       sourceWorkspaceDataset = (IDataset)sourceWorkspace;
         IWorkspaceName sourceWorkspaceName    = (IWorkspaceName)sourceWorkspaceDataset.FullName;
         //create source dataset name
         IFeatureDatasetName sourceFeatureDatasetName = new FeatureDatasetNameClass();
         IDatasetName        sourceDatasetName        = (IDatasetName)sourceFeatureDatasetName;
         sourceDatasetName.WorkspaceName = sourceWorkspaceName;
         sourceDatasetName.Name          = nameOfSourceFeatureDataset;
         //create target workspace name
         IDataset       targetWorkspaceDataset = (IDataset)targetWorkspace;
         IWorkspaceName targetWorkspaceName    = (IWorkspaceName)targetWorkspaceDataset.FullName;
         //create target dataset name
         IFeatureDatasetName targetFeatureDatasetName = new FeatureDatasetNameClass();
         IDatasetName        targetDatasetName        = (IDatasetName)targetFeatureDatasetName;
         targetDatasetName.WorkspaceName = targetWorkspaceName;
         targetDatasetName.Name          = nameOfTargetFeatureDataset;
         //Convert feature dataset
         IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();
         featureDataConverter.ConvertFeatureDataset(sourceFeatureDatasetName, targetFeatureDatasetName, null, "", 1000, 0);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Beispiel #6
0
        private void InitialComboxEx(ComboBoxEx cobox)
        {
            IMap       pMap       = pMapControl.Map;
            IEnumLayer pEnumLayer = pMap.get_Layers(null, true);

            pEnumLayer.Reset();
            ILayer pLayer = pEnumLayer.Next();

            while (pLayer != null)
            {
                cobox.Items.Add(pLayer.Name);
                //获取layer的完整路径
                IDataLayer2    pDatalayer   = pLayer as IDataLayer2;
                IDatasetName   pDatasetName = pDatalayer.DataSourceName as IDatasetName;
                IWorkspaceName pWPName      = pDatasetName.WorkspaceName;

                if (!pdic.ContainsKey(pLayer.Name))
                {
                    pdic.Add(pLayer.Name, pWPName.PathName + "\\" + pLayer.Name + ".shp");
                }
                if (!pdicLayer.ContainsKey(pLayer.Name))
                {
                    pdicLayer.Add(pLayer.Name, pLayer);
                }
                pLayer = pEnumLayer.Next();
            }
        }
Beispiel #7
0
        /// <summary>
        /// 如果是文件库则需要创建辅助库体的pdb
        /// 重载构造函数

        /// </summary>
        /// <param name="MTpath">本地辅助库存放路径</param>
        public GOFuzingTables(string MTpath)
        {
            //创建PDB工作空间
            IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass();

            FileInfo finfo        = new FileInfo(MTpath);
            string   outputDBPath = finfo.DirectoryName;
            string   outputDBName = finfo.Name;

            if (finfo.Exists)
            {
                SysCommon.Error.frmInformation frmInfo = new SysCommon.Error.frmInformation("是", "否", "存在同名的辅助库,是否进行替代?");
                if (frmInfo.ShowDialog() == DialogResult.OK)
                {
                    finfo.Delete();
                }
                else
                {
                    return;
                }
            }

            //outputDBName = outputDBName.Substring(0, outputDBName.Length - 4);
            IWorkspaceName pWorkspaceName = pWorkspaceFactory.Create(outputDBPath, outputDBName, null, 0);

            ESRI.ArcGIS.esriSystem.IName pName = (ESRI.ArcGIS.esriSystem.IName)pWorkspaceName;
            this._Workspace         = (IWorkspace)pName.Open();
            this._TempleteWorkspace = OpenTempleteWorkSpace();
        }
Beispiel #8
0
        private void ExportDatasetToXML(string fileGdbPath, string sourceFCName, string outputXmlFile)
        {
            // Open the source geodatabase and create a name object for it.
            IWorkspaceName sourceWorkspaceName = getWorkspaceName("esriDataSourcesGDB.FileGDBWorkspaceFactory", fileGdbPath);

            IFeatureClassName sourceFeatureClassName = getFeatureClassName(sourceWorkspaceName, sourceFCName);
            IName             sourceName             = (IName)sourceFeatureClassName;

            // Create a new names enumerator and add the feature dataset name.
            IEnumNameEdit enumNameEdit = new NamesEnumeratorClass();

            enumNameEdit.Add(sourceName);
            IEnumName enumName = (IEnumName)enumNameEdit;

            // Create a GeoDBDataTransfer object and create a name mapping.
            IGeoDBDataTransfer geoDBDataTransfer = new GeoDBDataTransferClass();
            IEnumNameMapping   enumNameMapping   = null;

            geoDBDataTransfer.GenerateNameMapping(enumName, sourceWorkspaceName as IName, out enumNameMapping);

            // Create an exporter and export the dataset with binary geometry, not compressed,
            // and including metadata.
            IGdbXmlExport gdbXmlExport = new GdbExporterClass();

            gdbXmlExport.ExportDatasets(enumNameMapping, outputXmlFile, true, false, true);
        }
Beispiel #9
0
        /// <summary>
        /// 创建FileGDB和PGDB Workspace
        /// @remark
        /// 1.Shp创建Workspace没有意义
        /// 2.不支持SDE创建
        /// </summary>
        /// <param name="wsType"></param>
        /// <param name="strPath"></param>
        /// <param name="strName"></param>
        /// <returns></returns>
        public static IWorkspace CreateWorkspace(enumWorkspaceType wsType, string strPath, string strName)
        {
            try
            {
                IWorkspaceFactory wsf = null;
                switch (wsType)
                {
                case enumWorkspaceType.SDE:
                    throw new Exception("CreateWorkspace方法被设计为不支持SDE方式创建");

                case enumWorkspaceType.FileGDB:
                    wsf = new ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass();
                    break;

                case enumWorkspaceType.PGDB:
                    wsf = new AccessWorkspaceFactoryClass();
                    break;

                case enumWorkspaceType.File:
                    wsf = new ShapefileWorkspaceFactoryClass();
                    break;
                }
                IWorkspaceName wsName = wsf.Create(strPath, strName, null, 0);
                return((wsName as IName).Open() as IWorkspace);
            }
            catch
            {
                return(null);
            }
        }
Beispiel #10
0
        public static void ExtractSpecifyHRegFeatures(IWorkspaceName iworkspaceName_0, IMap imap_0,
                                                      IGeometry igeometry_0, IMap imap_1)
        {
            (new SelectionEnvironment()).CombinationMethod = esriSelectionResultEnum.esriSelectionResultNew;
            IWorkspace workspace = (iworkspaceName_0 as IName).Open() as IWorkspace;

            for (int i = imap_0.LayerCount - 1; i >= 0; i--)
            {
                ILayer layer = imap_0.Layer[i];
                if ((!layer.Visible ? false : layer is IFeatureLayer))
                {
                    try
                    {
                        IEnvelope            areaOfInterest      = layer.AreaOfInterest;
                        ITopologicalOperator topologicalOperator = (ITopologicalOperator)((IClone)igeometry_0).Clone();
                        topologicalOperator.Simplify();
                        if (topologicalOperator.IsSimple)
                        {
                            topologicalOperator.Clip(areaOfInterest);
                        }
                    }
                    catch (Exception exception)
                    {
                    }
                    if (!igeometry_0.IsEmpty)
                    {
                        ClipHelper.ExtractSelectFeatureFormFeatureCursor(layer,
                                                                         ClipHelper.searchFeatureFormLayer(layer, igeometry_0), (IFeatureWorkspace)workspace,
                                                                         igeometry_0, imap_1);
                    }
                }
            }
            Marshal.ReleaseComObject(workspace);
            workspace = null;
        }
Beispiel #11
0
        private static void ExtractSpecifyRegFeatures(IWorkspaceName iworkspaceName_0, IMap imap_0,
                                                      IGeometry igeometry_0)
        {
            ISelectionEnvironment selectionEnvironment = new SelectionEnvironment();

            selectionEnvironment.CombinationMethod = esriSelectionResultEnum.esriSelectionResultNew;
            try
            {
                imap_0.SelectByShape(igeometry_0, selectionEnvironment, false);
            }
            catch (COMException ex)
            {
                if (ex.ErrorCode == -2147467259)
                {
                    System.Windows.Forms.MessageBox.Show("执行查询时产生错误。空间索引不存在", "选择");
                }
            }
            catch (Exception)
            {
            }
            IWorkspace workspace = (iworkspaceName_0 as IName).Open() as IWorkspace;

            for (int i = 0; i < imap_0.LayerCount; i++)
            {
                ILayer layer = imap_0.get_Layer(i);
                if (layer is IFeatureLayer)
                {
                    ClipHelper.ExtractSelectFeatureFormLayer((IFeatureLayer)layer, (IFeatureWorkspace)workspace,
                                                             igeometry_0);
                }
            }
        }
Beispiel #12
0
        //--------------------------------------------------------------------------------

        public static IWorkspace GetSDEWorkspace()
        {
            try
            {
                //声明临时路径
                string path = @"d:\temp";
                // 声明临时.sde文件名称
                string sdeName = @"localhost.sde";
                string sdePath = path + "\\" + sdeName;
                // 如果已经存在了,则删除了重新创建
                if (File.Exists(sdePath))
                {
                    File.Delete(sdePath);
                }
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");
                IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactoryClass();
                // 创建.sde文件
                IWorkspaceName workspaceName = workspaceFactory.Create(path, sdeName, ConnectSDE(true), 0);
                // 使用.sde文件,通过.sde文件获取IWorkspace,之后就可以对数据库中的数据进行操作了
                IWorkspace pWorkspace = workspaceFactory.OpenFromFile(sdePath, 0);

                return(pWorkspace);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public static IWorkspace CreateInMemoryWorkspace()
        {
            IWorkspaceFactory workspaceFactory = null;
            IWorkspaceName    workspaceName    = null;
            IName             name             = null;
            IWorkspace        workspace        = null;

            try
            {
                // Create an InMemory workspace factory.
                workspaceFactory = new InMemoryWorkspaceFactory();

                // Create an InMemory geodatabase.
                workspaceName = workspaceFactory.Create("", "MyWorkspace",
                                                        null, 0);

                // Cast for IName.
                name = (IName)workspaceName;

                //Open a reference to the InMemory workspace through the name object.
                workspace = (IWorkspace)name.Open();
                return(workspace);
            }
            catch
            {
                return(null);
            }
            finally
            {
                workspaceFactory = null;
                workspaceName    = null;
                name             = null;
            }
        }
Beispiel #14
0
        /// <summary>
        /// 根据传入的要素图层删除其对应的属性表
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="att_flayer">矢量图层</param>
        public void att_removetable(IFeatureLayer att_flayer)
        {
            //获取传入图层的路径
            IDataLayer     datalayer   = att_flayer as IDataLayer;
            IWorkspaceName w_name      = ((IDatasetName)(datalayer.DataSourceName)).WorkspaceName;
            string         indexstring = w_name.PathName + "\\" + att_flayer.Name + "_" + att_flayer.DataSourceType;

            //根据indexstring删除flayer_list中的图层
            for (int i = 0; i < flayer_list.Count; i++)
            {
                IDataLayer     listdatalayer = flayer_list[i] as IDataLayer;
                IWorkspaceName listw_name    = ((IDatasetName)(datalayer.DataSourceName)).WorkspaceName;
                if (indexstring == w_name.PathName + "\\" + flayer_list[i].Name + "_" + flayer_list[i].DataSourceType)
                {
                    flayer_list.RemoveAt(i);
                }
            }
            //删除gridview_list中的表格
            for (int i = 0; i < gridview_list.Count; i++)
            {
                if (indexstring == gridview_list[i].Tag.ToString())
                {
                    gridview_list.RemoveAt(i);
                }
            }
            //关闭标签页
            for (int i = 0; i < att_xtraTabControl.TabPages.Count; i++)
            {
                if (att_xtraTabControl.TabPages[i].Text == att_flayer.Name)
                {
                    att_xtraTabControl.TabPages.RemoveAt(i);
                }
            }
        }
Beispiel #15
0
        private void Form3_Load(object sender, EventArgs e)
        {
            //获取图层
            IEnumLayer layers = GetFeatureLayers();

            layers.Reset();
            ILayer layer = null;

            while ((layer = layers.Next()) != null)
            {
                comboBox1.Items.Add(layer.Name);
                comboBox2.Items.Add(layer.Name);

                //错误写法
                //IFeatureLayer pFeatureLayer = (IFeatureLayer)layer;
                //IFeatureClass fc = (IFeatureClass)pFeatureLayer.FeatureClass;
                //IFeatureDataset fds = (IFeatureDataset)fc.FeatureDataset;
                //IWorkspace ws = (IWorkspace)fds.Workspace;

                IDataLayer     pDLayer = (IDataLayer)layer;
                IWorkspaceName ws      = ((IDatasetName)(pDLayer.DataSourceName)).WorkspaceName;

                myCol.Add(layer.Name, ws.PathName + @"\" + layer.Name + ".shp");
                System.Console.WriteLine(ws.PathName + @"\" + layer.Name + ".shp");
            }

            label3.Text = "";
        }
Beispiel #16
0
        /// <summary>
        /// 创建内存IFeatureLayer,该方法为创建内存临时图层的便捷方法,创建的图层带有id,和name两个属性字段。
        /// </summary>
        /// <param name="myAxMapControl">AxMapControl扩展对象</param>
        /// <param name="strIFeatureClassName">IFeatureClass名称</param>
        /// <param name="myEsriGeometryType">数据类型</param>
        /// <returns>IFeatureLayer对象</returns>
        public static IFeatureLayer CreateMemoryFeatureLayer(this AxMapControl myAxMapControl, String strIFeatureClassName, esriGeometryType myEsriGeometryType)
        {
            IWorkspaceFactory myIWorkspaceFactory = new InMemoryWorkspaceFactoryClass();
            IWorkspaceName    myIWorkspaceName    = myIWorkspaceFactory.Create("", strIFeatureClassName, null, 0);
            IName             myIName             = (IName)myIWorkspaceName;
            IWorkspace        myIWorkspace        = (IWorkspace)myIName.Open();
            IField            myIField            = null;
            IFields           myIFields           = new FieldsClass();
            IFieldsEdit       myIFieldsEdit       = myIFields as IFieldsEdit;
            IFieldEdit        myIFieldEdit        = null;
            IFeatureClass     myIFeatureClass     = null;
            IFeatureLayer     myIFeatureLayer     = null;

            try
            {
                //主键id
                myIField                  = new FieldClass();
                myIFieldEdit              = myIField as IFieldEdit;
                myIFieldEdit.Name_2       = "id";
                myIFieldEdit.IsNullable_2 = true;
                myIFieldEdit.Length_2     = 50;
                myIFieldEdit.Type_2       = esriFieldType.esriFieldTypeString;
                myIFieldsEdit.AddField(myIField);
                //名称name
                myIField                  = new FieldClass();
                myIFieldEdit              = myIField as IFieldEdit;
                myIFieldEdit.Name_2       = "name";
                myIFieldEdit.IsNullable_2 = true;
                myIFieldEdit.Length_2     = 50;
                myIFieldEdit.Type_2       = esriFieldType.esriFieldTypeString;
                myIFieldsEdit.AddField(myIField);
                //IGeometryI字段
                IGeometryDef     myIGeometryDef     = new GeometryDefClass();
                IGeometryDefEdit myIGeometryDefEdit = (IGeometryDefEdit)myIGeometryDef;
                myIGeometryDefEdit.AvgNumPoints_2     = 5;
                myIGeometryDefEdit.GeometryType_2     = myEsriGeometryType;
                myIGeometryDefEdit.GridCount_2        = 1;
                myIGeometryDefEdit.HasM_2             = false;
                myIGeometryDefEdit.HasZ_2             = false;
                myIGeometryDefEdit.SpatialReference_2 = myAxMapControl.SpatialReference;
                myIField                   = new FieldClass();
                myIFieldEdit               = myIField as IFieldEdit;
                myIFieldEdit.Name_2        = "SHAPE";
                myIFieldEdit.Type_2        = esriFieldType.esriFieldTypeGeometry;
                myIFieldEdit.GeometryDef_2 = myIGeometryDef;
                myIFieldEdit.IsNullable_2  = true;
                myIFieldEdit.Required_2    = true;
                myIFieldsEdit.AddField(myIField);
                //
                myIFeatureClass = (myIWorkspace as IFeatureWorkspace).CreateFeatureClass(strIFeatureClassName, myIFields, null, null, esriFeatureType.esriFTSimple, "SHAPE", "");
                (myIFeatureClass as IDataset).BrowseName = strIFeatureClassName;
                myIFeatureLayer              = new FeatureLayerClass();
                myIFeatureLayer.Name         = strIFeatureClassName;
                myIFeatureLayer.FeatureClass = myIFeatureClass;
            }
            catch
            {
            }
            return(myIFeatureLayer);
        }
        public void ExportFeature(IFeatureClass pInFeatureClass, string pPath)
        {
            // create a new Access workspace factory
            IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
            string            parentPath        = pPath.Substring(0, pPath.LastIndexOf('\\'));
            string            fileName          = pPath.Substring(pPath.LastIndexOf('\\') + 1, pPath.Length - pPath.LastIndexOf('\\') - 1);
            IWorkspaceName    pWorkspaceName    = pWorkspaceFactory.Create(parentPath, fileName, null, 0);
            // Cast for IName
            IName name = (IName)pWorkspaceName;
            //Open a reference to the access workspace through the name object
            IWorkspace pOutWorkspace = (IWorkspace)name.Open();

            IDataset          pInDataset        = pInFeatureClass as IDataset;
            IFeatureClassName pInFCName         = pInDataset.FullName as IFeatureClassName;
            IWorkspace        pInWorkspace      = pInDataset.Workspace;
            IDataset          pOutDataset       = pOutWorkspace as IDataset;
            IWorkspaceName    pOutWorkspaceName = pOutDataset.FullName as IWorkspaceName;
            IFeatureClassName pOutFCName        = new FeatureClassNameClass();
            IDatasetName      pDatasetName      = pOutFCName as IDatasetName;

            pDatasetName.WorkspaceName = pOutWorkspaceName;
            pDatasetName.Name          = pInFeatureClass.AliasName;
            IFieldChecker pFieldChecker = new FieldCheckerClass();

            pFieldChecker.InputWorkspace    = pInWorkspace;
            pFieldChecker.ValidateWorkspace = pOutWorkspace;
            IFields         pFields = pInFeatureClass.Fields;
            IFields         pOutFields;
            IEnumFieldError pEnumFieldError;

            pFieldChecker.Validate(pFields, out pEnumFieldError, out pOutFields);
            IFeatureDataConverter pFeatureDataConverter = new FeatureDataConverterClass();

            pFeatureDataConverter.ConvertFeatureClass(pInFCName, null, null, pOutFCName, null, pOutFields, "", 100, 0);
        }
Beispiel #18
0
        /// <summary>
        /// 关闭属性表标签页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void xtraTabControl_CloseButtonClick(object sender, EventArgs e)
        {
            XtraTabControl           tabControl = sender as XtraTabControl;
            ClosePageButtonEventArgs arg        = e as ClosePageButtonEventArgs;
            string indexstring = arg.Page.Tooltip;

            // 删除flayer_list中的图层
            for (int i = 0; i < flayer_list.Count; i++)
            {
                IDataLayer     datalayer = flayer_list[i] as IDataLayer;
                IWorkspaceName w_name    = ((IDatasetName)(datalayer.DataSourceName)).WorkspaceName;
                if (indexstring == w_name.PathName + "\\" + flayer_list[i].Name + "_" + flayer_list[i].DataSourceType)
                {
                    flayer_list.RemoveAt(i);
                }
            }
            // 删除gridview_list中的表格
            for (int i = 0; i < gridview_list.Count; i++)
            {
                if (indexstring == gridview_list[i].Tag.ToString())
                {
                    gridview_list.RemoveAt(i);
                }
            }
            tabControl.TabPages.Remove(arg.Page as XtraTabPage);
        }
Beispiel #19
0
        public override void OnClick()
        {
            IGxObject firstObject = ((IGxSelection)_context.GxSelection).FirstObject;

            if (firstObject is IGxFile)
            {
                string path = (firstObject as IGxFile).Path;
                path = (path[path.Length - 1] != '\\'
                    ? string.Concat(path, "\\新建文件型数据库")
                    : string.Concat(path, "新建文件型数据库"));
                string str = string.Concat(path, ".gdb");
                int    num = 1;
                while (Directory.Exists(str))
                {
                    num++;
                    str = string.Concat(path, " (", num.ToString(), ").gdb");
                }
                IWorkspaceFactory fileGDBWorkspaceFactoryClass = new FileGDBWorkspaceFactory();
                try
                {
                    IWorkspaceName workspaceName = fileGDBWorkspaceFactoryClass.Create(Path.GetDirectoryName(str),
                                                                                       Path.GetFileNameWithoutExtension(str), null, 0);
                    IGxObject gxDatabase = new GxDatabase();
                    (gxDatabase as IGxDatabase).WorkspaceName = workspaceName;
                    IGxCatalog catalog = GxCatalogCommon.GetCatalog(firstObject);
                    gxDatabase.Attach(firstObject, catalog);
                    catalog.ObjectAdded(gxDatabase);
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message);
                }
            }
        }
Beispiel #20
0
        public void TransferMapDataWithinExtents_Test(string subDirectory, string mapDocumentFilename, string dataframeName, string outputShapefileDirectory)
        {
            string temp   = System.IO.Path.Combine(_dataDirectory, subDirectory);
            string mapDoc = System.IO.Path.Combine(temp, mapDocumentFilename);

            IMapDocument mapDocument = new MapDocumentClass();

            mapDocument.Open(mapDoc, null);

            IMap map = GeodatabaseUtil.GetMap(mapDocument, dataframeName);
            List <IFeatureLayer> layers     = GeodatabaseUtil.GetFeatureLayers(map);
            IDataset             dataset    = (IDataset)layers[0].FeatureClass;
            IGeoDataset          geoDataset = (IGeoDataset)layers[0].FeatureClass;

            string destination = System.IO.Path.Combine(temp, outputShapefileDirectory);

            if (Directory.Exists(destination))
            {
                Directory.Delete(destination, true);
            }
            Directory.CreateDirectory(destination);

            IWorkspace        outWorkspace        = GeodatabaseUtil.GetShapefileWorkspace(destination);
            IFeatureWorkspace outFeatureWorkspace = (IFeatureWorkspace)outWorkspace;
            IWorkspaceName    outWorkspaceName    = GeodatabaseUtil.GetWorkspaceName(outWorkspace);
            IFeatureClassName outFeatureclassName = GeodatabaseUtil.GetFeatureClassName(outWorkspaceName, dataset.Name);

            //ESRI.ArcGIS.ADF.Web.Geometry.Envelope envelope = new ESRI.ArcGIS.ADF.Web.Geometry.Envelope(227884.141, 4167884.377, 602406.528, 4470244.455);
            ESRI.ArcGIS.ADF.Web.Geometry.Envelope envelope = new ESRI.ArcGIS.ADF.Web.Geometry.Envelope(445092.693, 4360557.744, 541068.565, 4418287.592);

            Dictionary <int, KeyValuePair <string, IEnumInvalidObject> > invalidObjects = GeodatabaseUtil.TransferMapDataWithinExtents(map, outFeatureWorkspace, null, envelope, geoDataset.SpatialReference);
        }
Beispiel #21
0
        /// <summary>
        /// 给指定的WorkspaceName生成GP字符串
        /// </summary>
        /// <param name="wsNameTarget"></param>
        /// <returns></returns>
        public static string GetGpString(IWorkspaceName wsNameTarget)
        {
            if (wsNameTarget == null)
            {
                return(null);
            }

            if (wsNameTarget.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
            {
                try
                {
                    string strTempPath = System.IO.Path.GetPathRoot(System.Environment.SystemDirectory); // System.IO.Path.Combine(System.IO.Path.GetPathRoot(Environment.SystemDirectory), "SDETemp");
                    string strTempName = string.Format("Temp_{0}", wsNameTarget.GetHashCode());
                    string strGpString = System.IO.Path.Combine(strTempPath, strTempName + ".SDE");

                    IPropertySet      propertySet = wsNameTarget.ConnectionProperties;
                    IWorkspaceFactory wsfSDE      = new SdeWorkspaceFactoryClass();
                    if (System.IO.File.Exists(strGpString))
                    {
                        System.IO.File.Delete(strGpString);
                    }
                    wsfSDE.Create(strTempPath, strTempName, propertySet, 0);
                    return(strGpString);
                }
                catch
                {
                    return(null);
                }
            }
            else
            {
                return(wsNameTarget.PathName);
            }
        }
        // Create the file geodatabase.
        public static void CreateFileGeodatabase()
        {
            string strFgdPath = @"C:\temp\";
            //string strFgdName = @"AddressCrossCheck";
            string strFgdName = fileGeodatabaseName;

            IWorkspaceName workspaceName = null;
            // Instantiate a file geodatabase workspace factory and create a new file geodatabase.
            // The Create method returns a workspace name object.
            IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass();

            Console.WriteLine("Creating File Geodatabase...");

            // check if file geodatabase exists, before creating it
            if (!(workspaceFactory.IsWorkspace(strFgdPath + strFgdName + ".gdb")))
            {
                workspaceName = workspaceFactory.Create(strFgdPath, strFgdName, null, 0);
            }
            else
            {
                IFileNames arcFileNames = new FileNames();
                arcFileNames.Add(strFgdPath + strFgdName + ".gdb");
                workspaceName = workspaceFactory.GetWorkspaceName(strFgdPath, arcFileNames);
            }

            // Cast the workspace name object to the IName interface and open the workspace.
            var name = (IName)workspaceName;

            workspaceFGDB = (IWorkspace)name.Open();

            // Load the data.
            ImportDataToFGDB();
        }
Beispiel #23
0
        /// <summary>
        /// Gets the connection string.
        /// </summary>
        /// <param name="layer">The layer.</param>
        /// <returns></returns>
        private string GetConnectionString(ILayer layer)
        {
            try
            {
                string connectionstring = string.Empty;

                IDataLayer     dataLayer     = (IDataLayer)layer;
                IDatasetName   datasetName   = (IDatasetName)dataLayer.DataSourceName;
                IWorkspaceName workspaceName = (IWorkspaceName)datasetName.WorkspaceName;

                IPropertySet propertySet = workspaceName.ConnectionProperties;

                Dictionary <string, string> properties = Umbriel.ArcGIS.Layer.LayerHelper.BuildDictionary(propertySet);

                StringBuilder sb = new StringBuilder();
                foreach (KeyValuePair <string, string> property in properties)
                {
                    sb.Append(property.Key);
                    sb.Append("=");
                    sb.Append(property.Value);
                    sb.Append(";");
                }

                connectionstring = sb.ToString();

                return(connectionstring);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.StackTrace);
                return("ERROR: Cannot Access Connection Information");
            }
        }
Beispiel #24
0
        /// <summary>
        /// Saves as shpfile.
        /// </summary>
        /// <param name="inputFeatureClass">The input feature class.</param>
        /// <param name="pInDataset">The p in dataset.</param>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="pOutWorkspace">The p out workspace.</param>
        private void SaveAsShpfile(IFeatureClass inputFeatureClass, IDataset pInDataset, string fileName, IWorkspace pOutWorkspace)
        {
            IFeatureClassName inputDatasetName = pInDataset.FullName as IFeatureClassName;
            IWorkspace        workspace        = pInDataset.Workspace;
            IDataset          dataset          = pOutWorkspace as IDataset;
            IWorkspaceName    workspaceName    = dataset.FullName as IWorkspaceName;
            IFeatureClassName featureClassName = new FeatureClassNameClass();
            IDatasetName      datasetName      = featureClassName as IDatasetName;

            datasetName.WorkspaceName = workspaceName;
            datasetName.Name          = fileName;
            IFieldChecker fieldChecker = new FieldCheckerClass();

            fieldChecker.InputWorkspace    = workspace;
            fieldChecker.ValidateWorkspace = pOutWorkspace;
            IFields         fields = inputFeatureClass.Fields;
            IEnumFieldError enumFieldError;
            IFields         outputFields;

            fieldChecker.Validate(fields, out enumFieldError, out outputFields);
            IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();

            featureDataConverter.ConvertFeatureClass(inputDatasetName, null, null, featureClassName, null, outputFields, "", 100, 0);
            XtraMessageBox.Show(AppMessage.MSG0029, AppMessage.MSG0000, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Asterisk);
        }
Beispiel #25
0
        //通过intersect关系进行裁切
        public void ClipByExtent(int groupNm, int extNum)
        {
            IGeometry       extent   = GetClipExtent(extNum);
            string          findName = "grp" + groupNm.ToString() + "ext0";
            IGroupLayer     grpLy    = avlbLayers.Find(item => item.Name == findName);
            ICompositeLayer comLy    = grpLy as ICompositeLayer;

            IGroupLayer newGroupLayer = new GroupLayerClass();

            newGroupLayer.Name = "grp" + groupNm.ToString() + "ext" + extNum.ToString();

            for (int i = 0; i < comLy.Count; i++)
            {
                IFeatureLayer feaLy  = comLy.get_Layer(i) as IFeatureLayer;
                IFeatureClass clipFC = feaLy.FeatureClass;
                IFields       flds   = clipFC.Fields;

                ISpatialFilter spatialFilter = new SpatialFilterClass();
                spatialFilter.Geometry   = extent;
                spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
                IFeatureCursor cursor = clipFC.Search(spatialFilter, false);

                IWorkspaceFactory workspaceFactory = new InMemoryWorkspaceFactoryClass();
                IWorkspaceName    workspaceName    = workspaceFactory.Create(null, "MyWorkspace", null, 0);
                IName             name             = (IName)workspaceName;
                IWorkspace        workspace        = (IWorkspace)name.Open();
                IFeatureWorkspace inmemFeaWksp     = workspace as IFeatureWorkspace;

                if (clipFC.ShapeType == esriGeometryType.esriGeometryPoint)
                {
                    IFeatureClass inmemPTFC = CreateWithoutDescription("inmemPTFC_" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds);
                    InsertFeaturesBoun(inmemPTFC, cursor, extent);

                    IFeatureLayer inmemPTFCLayer = new FeatureLayerClass();
                    inmemPTFCLayer.FeatureClass = inmemPTFC;
                    newGroupLayer.Add(inmemPTFCLayer);
                }

                else if (clipFC.ShapeType == esriGeometryType.esriGeometryPolyline)
                {
                    IFeatureClass inmemLNFC = CreateWithoutDescription("inmemLNFC" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds);
                    InsertFeaturesBoun(inmemLNFC, cursor, extent);

                    IFeatureLayer inmemLNFCLayer = new FeatureLayerClass();
                    inmemLNFCLayer.FeatureClass = inmemLNFC;
                    newGroupLayer.Add(inmemLNFCLayer);
                }

                else if (clipFC.ShapeType == esriGeometryType.esriGeometryPolygon)
                {
                    IFeatureClass inmemPLGFC = CreateWithoutDescription("inmemPLGFC" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds);
                    InsertFeaturesBoun(inmemPLGFC, cursor, extent);

                    IFeatureLayer inmemPLGFCLayer = new FeatureLayerClass();
                    inmemPLGFCLayer.FeatureClass = inmemPLGFC;
                    newGroupLayer.Add(inmemPLGFCLayer);
                }
            }
            avlbLayers.Add(newGroupLayer);
        }
Beispiel #26
0
        private void ExportFeature(IFeatureClass pInFeatureClass, string pPath)
        {
            //创建一个输出shp文件的工作空间
            IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
            string            parentPath        = pPath.Substring(0, pPath.LastIndexOf("\\"));
            string            fileName          = pPath.Substring(pPath.LastIndexOf("\\") + 1, pPath.Length - pPath.LastIndexOf("\\") - 1);
            IWorkspaceName    pWorkspaceName    = pWorkspaceFactory.Create(parentPath, fileName, null, 0);
            //创建一个要素类
            IName      name          = (IName)pWorkspaceName;
            IWorkspace pOutWorkspace = (IWorkspace)name.Open();

            IDataset          pInDataset        = pInFeatureClass as IDataset;
            IFeatureClassName pInFCName         = pInDataset.FullName as IFeatureClassName;
            IWorkspace        pInWorkspace      = pInDataset.Workspace;
            IDataset          pOutDataset       = pOutWorkspace as IDataset;
            IWorkspaceName    pOutWorkspaceName = pOutDataset.FullName as IWorkspaceName;
            IFeatureClassName pOutFCName        = new FeatureClassNameClass();
            IDatasetName      pDatasetName      = pOutFCName as IDatasetName;

            pDatasetName.WorkspaceName = pOutWorkspaceName;
            pDatasetName.Name          = pInFeatureClass.AliasName;
            IFieldChecker pFieldChecker = new FieldCheckerClass();

            pFieldChecker.InputWorkspace    = pInWorkspace;
            pFieldChecker.ValidateWorkspace = pOutWorkspace;
            IFields         pFields = pInFeatureClass.Fields;
            IFields         pOutFields;
            IEnumFieldError pEnumFieldError;

            pFieldChecker.Validate(pFields, out pEnumFieldError, out pOutFields);
            IFeatureDataConverter pFeatureDataConverter = new FeatureDataConverterClass();

            pFeatureDataConverter.ConvertFeatureClass(pInFCName, null, null, pOutFCName, null, pOutFields, "", 100, 0);
        }
Beispiel #27
0
        /// <summary>
        /// 复制要素集(ConvertFeatureDataset)
        /// </summary>
        /// <param name="sourceWorkspace"></param>
        /// <param name="targetWorkspace"></param>
        /// <param name="nameOfSourceFeatureDataset"></param>
        /// <param name="nameOfTargetFeatureDataset"></param>
        public void IFeatureDataConverter_ConvertFeatureDataset(IWorkspace sourceWorkspace, IWorkspace targetWorkspace, string nameOfSourceFeatureDataset, string nameOfTargetFeatureDataset)
        {
            //create source workspace name
            IDataset       sourceWorkspaceDataset = (IDataset)sourceWorkspace;
            IWorkspaceName sourceWorkspaceName    = (IWorkspaceName)sourceWorkspaceDataset.FullName;

            //create source dataset name
            IFeatureDatasetName sourceFeatureDatasetName = new FeatureDatasetNameClass();
            IDatasetName        sourceDatasetName        = (IDatasetName)sourceFeatureDatasetName;

            sourceDatasetName.WorkspaceName = sourceWorkspaceName;
            sourceDatasetName.Name          = nameOfSourceFeatureDataset;

            //create target workspace name
            IDataset       targetWorkspaceDataset = (IDataset)targetWorkspace;
            IWorkspaceName targetWorkspaceName    = (IWorkspaceName)targetWorkspaceDataset.FullName;

            //create target dataset name
            IFeatureDatasetName targetFeatureDatasetName = new FeatureDatasetNameClass();
            IDatasetName        targetDatasetName        = (IDatasetName)targetFeatureDatasetName;

            targetDatasetName.WorkspaceName = targetWorkspaceName;
            targetDatasetName.Name          = nameOfTargetFeatureDataset;

            //Convert feature dataset
            IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();

            featureDataConverter.ConvertFeatureDataset(sourceFeatureDatasetName, targetFeatureDatasetName, null, "", 1000, 0);
            //Console.WriteLine("Conversion Complete");
        }
Beispiel #28
0
 private void btnImpSymbol_Click(object sender, EventArgs e)
 {
     try
     {
         SaveFileDialog fbd = new SaveFileDialog();
         fbd.Title            = "Save file";
         fbd.InitialDirectory = System.IO.Path.GetDirectoryName(XMLPath);
         if (fbd.ShowDialog() == DialogResult.OK)
         {
             if (System.IO.Directory.Exists(fbd.FileName + ".shp") == true)
             {
                 MessageBox.Show("shp已存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                 return;
             }
             IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass();
             IWorkspaceName    workspaceName    = workspaceFactory.Create(System.IO.Path.GetDirectoryName(fbd.FileName), System.IO.Path.GetFileName(fbd.FileName), null, 0);
             gdbPath        = fbd.FileName + ".gdb";
             textBoxX2.Text = fbd.FileName + ".gdb";
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
         return;
     }
 }
Beispiel #29
0
        private bool method_9(IWorkspaceName iworkspaceName_0, bool bool_2)
        {
            string pathName = iworkspaceName_0.PathName;
            string str2     = System.IO.Path.GetExtension(pathName).ToLower();
            string str3     = this.string_0 + System.IO.Path.GetFileNameWithoutExtension(pathName);

            if (pathName.ToLower() == str3.ToLower())
            {
                MessageBox.Show("无法复制 " + System.IO.Path.GetFileName(pathName) + " 源文件和目标文件相同!");
                return(false);
            }
            if (File.Exists(str3 + str2))
            {
                int num = 1;
                str3 = str3 + "复件";
                while (File.Exists(str3 + str2))
                {
                    str3 = str3 + num.ToString();
                    num++;
                }
            }
            if (bool_2)
            {
                File.Move(pathName, str3 + str2);
            }
            else
            {
                File.Copy(pathName, str3 + str2);
            }
            this.method_0(pathName, str2, true);
            return(true);
        }
        // create a file geodatabase in user-specified location
        #region "Create FileGeodatabase"
        public static IWorkspace CreateFileGdbWorkspace(string strFgdPath, string strFgdName)
        {
            IWorkspaceName workspaceName = null;
            // Instantiate a file geodatabase workspace factory and create a new file geodatabase.
            // The Create method returns a workspace name object.
            IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass() as IWorkspaceFactory;

            // check if file geodatabase exists, before creating it
            if (!(workspaceFactory.IsWorkspace(strFgdPath + strFgdName)))
            {
                workspaceName = workspaceFactory.Create(strFgdPath, strFgdName, null, 0);
            }
            else
            {
                IFileNames arcFileNames = new FileNames();
                arcFileNames.Add(strFgdPath + strFgdName);
                workspaceName = workspaceFactory.GetWorkspaceName(strFgdPath, arcFileNames);
            }

            // Cast the workspace name object to the IName interface and open the workspace.
            IName      name      = (IName)workspaceName;
            IWorkspace workspace = (IWorkspace)name.Open();

            return(workspace);
        }
Beispiel #31
0
        public void Load(IStream pstm)
        {
            StreamHelper helper = new StreamHelper(pstm);

            // Restore the Postgres schema name.
            m_name = helper.readString();

            // Restore the WorkspaceName.
            m_wksName = new PostGisWorkspaceName();
            ((IPersistStream)m_wksName).Load(pstm);
        }
Beispiel #32
0
        /// <summary>
        /// 指定WorkspaceName,FeatureDataset名 和 FeatureClass名生成Gp字符串
        /// </summary>
        /// <param name="wsNameTarget"></param>
        /// <param name="featureDatasetName">可以为空</param>
        /// <param name="featureClassName">可以为空</param>
        /// <returns></returns>
        public static string GetGpString(IWorkspaceName wsNameTarget, string featureDatasetName, string featureClassName)
        {
            string strGpString = GetGpString(wsNameTarget);
            if (strGpString == null)
                return null;

            if (!string.IsNullOrEmpty(featureDatasetName))
            {
                strGpString = string.Format("{0}\\{1}", strGpString, featureDatasetName);
            }
            if (!string.IsNullOrWhiteSpace(featureClassName))
            {
                strGpString = string.Format("{0}\\{1}", strGpString, featureClassName);
            }

            return strGpString;
        }
Beispiel #33
0
        /// <summary>
        /// 给指定的WorkspaceName生成GP字符串
        /// </summary>
        /// <param name="wsNameTarget"></param>
        /// <returns></returns>
        public static string GetGpString(IWorkspaceName wsNameTarget)
        {
            if (wsNameTarget == null)
                return null;

            if (wsNameTarget.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
            {
                try
                {
                    string strTempPath = System.IO.Path.GetPathRoot(System.Environment.SystemDirectory); // System.IO.Path.Combine(System.IO.Path.GetPathRoot(Environment.SystemDirectory), "SDETemp");
                    string strTempName = string.Format("Temp_{0}", wsNameTarget.GetHashCode());
                    string strGpString = System.IO.Path.Combine(strTempPath, strTempName + ".SDE");

                    IPropertySet propertySet = wsNameTarget.ConnectionProperties;
                    IWorkspaceFactory wsfSDE = new SdeWorkspaceFactoryClass();
                    if (System.IO.File.Exists(strGpString))
                    {
                        System.IO.File.Delete(strGpString);
                    }
                    wsfSDE.Create(strTempPath, strTempName, propertySet, 0);
                    return strGpString;
                }
                catch
                {
                    return null;
                }
            }
            else
            {
                return wsNameTarget.PathName;
            }
        }
Beispiel #34
0
        IWorkspace ISdeConnectionInfo.CreateSdeWorkspace()
        {
            if (_sdeUser != null)
            {
                try
                {
                    //MessageBox.Show(string.Format("line 90 SdeConnection:sde service:{0}", _sdeUser.Sde_service));
                    UtilitiesBox.StartService(_sdeUser.Sde_service, 5000);
                    //UtilitiesBox.StartService("MSSQLSERVER", 3000);
                    WorkspaceManagement wspm = new WorkspaceManagement();
                    //_workspace = wspm.CreateWorkspaceSDE(_sdeUser.ServerSde, _sdeUser.Instance, _sdeUser.Db, _sdeUser.Version, _sdeUser.UserName, _sdeUser.Pass);
                    //_environment = String.Format("Database Connections/Connection to {0}.sde", _sdeUser.ServerSde);
                    string path=TnSystemTempPath.ConnectionFilePath;
                    try
                    {
                        if (System.IO.File.Exists("c:/tn/temp/tn.sde"))
                        {
                            System.IO.File.Delete("c:/tn/temp/tn.sde");
                        }
                    }
                    catch { }

                    _workspaceName = wspm.CreateConnectionFile(_sdeUser.Server, _sdeUser.Instance, _sdeUser.UserName, _sdeUser.Pass, _sdeUser.Db, _sdeUser.Version, "c:/tn/temp/","tn.sde");
                    _environment = "c:/tn/temp/tn.sde";
                    _workspace = (IWorkspace)((IName)_workspaceName).Open();

                    //MessageBox.Show("line 100 SdeConnection, path=" + _workspaceName.PathName);
                    return _workspace;

                }
                catch (Exception ex) { MessageBox.Show(ex.ToString()); }
                return _workspace;
            }
            return null;
        }
        private static string ExportWorkspaceXml(IWorkspaceName workspaceName) {
            // Exclude FileSystemWorkspaces
            switch (workspaceName.Type) {
                case esriWorkspaceType.esriLocalDatabaseWorkspace:
                case esriWorkspaceType.esriRemoteDatabaseWorkspace:
                    break;
                case esriWorkspaceType.esriFileSystemWorkspace:
                default:
                    MessageBox.Show(
                        Resources.TEXT_DROPPED_OBJECT_NOT_GEODATABASE,
                        Resources.TEXT_APPLICATION,
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error,
                        MessageBoxDefaultButton.Button1,
                        MessageBoxOptions.DefaultDesktopOnly);
                    return null;
            }

            // Get Workspace
            IName name = (IName)workspaceName;
            IWorkspace workspace = (IWorkspace)name.Open();

            // Create Temporary File
            string path = System.IO.Path.GetTempPath();
            string file = string.Format("{0}.{1}", Guid.NewGuid().ToString("N").ToUpper(), "xml");
            string outfile = System.IO.Path.Combine(path, file);
  
            //
            IGdbXmlExport gdbXmlExport = new GdbExporterClass();
            try {
                gdbXmlExport.ExportWorkspaceSchema(workspace, outfile, false, true);
            }
            catch (COMException ex) {
                // Handle Exception
                ExceptionDialog.HandleException(ex);

                // Display Informative Error Message
                switch (ex.ErrorCode) {
                    case -2147220967: // 0x80040219
                        // Invalid network weight association.
                        // Connection to ESRI OLE DB provider is invalid.
                        MessageBox.Show(
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_1A + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_1B,
                            Resources.TEXT_APPLICATION,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error,
                            MessageBoxDefaultButton.Button1,
                            MessageBoxOptions.DefaultDesktopOnly);
                        break;
                    case -2147220735: // 0x80040301
                        // The dataset was not found.
                        MessageBox.Show(
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_2,
                            Resources.TEXT_APPLICATION,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error,
                            MessageBoxDefaultButton.Button1,
                            MessageBoxOptions.DefaultDesktopOnly);
                        break;
                    case -2147220655: // 0x80040351
                        // The table was not found
                        MessageBox.Show(
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_3,
                            Resources.TEXT_APPLICATION,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error,
                            MessageBoxDefaultButton.Button1,
                            MessageBoxOptions.DefaultDesktopOnly);
                        break;
                    case -2147220473: // 0x80040407
                        // The feature class' default subtype code cannot be retrieved or is invalid.
                        MessageBox.Show(
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_4,
                            Resources.TEXT_APPLICATION,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error,
                            MessageBoxDefaultButton.Button1,
                            MessageBoxOptions.DefaultDesktopOnly);
                        break;
                    case -2147216558: // 0x80041352
                        // Unable to instantiate object class extension COM component.
                        MessageBox.Show(
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_5,
                            Resources.TEXT_APPLICATION,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error,
                            MessageBoxDefaultButton.Button1,
                            MessageBoxOptions.DefaultDesktopOnly);
                        break;
                    case -2147216100: // 0x8004151C
                        // You have insufficient permissions to access one or more datasets.
                        MessageBox.Show(
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_6,
                            Resources.TEXT_APPLICATION,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error,
                            MessageBoxDefaultButton.Button1,
                            MessageBoxOptions.DefaultDesktopOnly);
                        break;
                    case -2147216086: // 0x8004152A
                        // Specified attribute column doesn't exist.
                        MessageBox.Show(
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_7,
                            Resources.TEXT_APPLICATION,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error,
                            MessageBoxDefaultButton.Button1,
                            MessageBoxOptions.DefaultDesktopOnly);
                        break;
                    default:
                        // Display a general error message.
                        MessageBox.Show(
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_8A + Environment.NewLine +
                            Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_8B,
                            Resources.TEXT_APPLICATION,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error,
                            MessageBoxDefaultButton.Button1,
                            MessageBoxOptions.DefaultDesktopOnly);
                        break;
                }

                // Exit Method
                return null;
            }
            catch (Exception ex) {
                // Handle Exception
                ExceptionDialog.HandleException(ex);

                // Display a general error message.
                MessageBox.Show(
                    Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED + Environment.NewLine +
                    Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_9A + Environment.NewLine +
                    Resources.TEXT_GEODATABASE_SCHEMA_EXPORT_FAILED_9B,
                    Resources.TEXT_APPLICATION,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error,
                    MessageBoxDefaultButton.Button1,
                    MessageBoxOptions.DefaultDesktopOnly);

                // Exit Method
                return null;
            }

            // Clear Geodatabase Exporter
            gdbXmlExport = null;

            // Return pathname to Xml File
            return outfile;
        }
Beispiel #36
0
 public bool Move(IWorkspaceName WorkspaceName, string destinationFolder)
 {
     return false;
 }
Beispiel #37
0
        IWorkspace ISdeConnectionInfo.CreateSdeWorkspace(ISdeUserInfo sdeUserInfo)
        {
            try
            {
                UtilitiesBox.StartService(sdeUserInfo.Sde_service, 3000);
                //UtilitiesBox.StartService("MSSQLSERVER", 3000);
                WorkspaceManagement wspm = new WorkspaceManagement();
                _workspace = wspm.CreateWorkspaceSDE(sdeUserInfo.ServerSde, sdeUserInfo.Instance, sdeUserInfo.Db, sdeUserInfo.Version, sdeUserInfo.UserName, sdeUserInfo.Pass);
                _environment = String.Format("Database Connections/Connection to {0}.sde", sdeUserInfo.ServerSde);
                _workspaceName = wspm.CreateConnectionFile(sdeUserInfo.Server, sdeUserInfo.Instance, sdeUserInfo.UserName, sdeUserInfo.Pass, sdeUserInfo.Db, sdeUserInfo.Version,TnSystemTempPath.ConnectionFileFullPath);
                //MessageBox.Show("line 44 SdeConnection, path=" + _workspaceName.PathName);
                return _workspace;
                //IWorkspace wsp = wspm.CreateWorkspaceSDE("froxtal-pc", "5152", "sde", "sde.DEFAULT", "sde", "arcsde");
                //if (wsp != null)
                //{
                //    TnConnectionInfo.CallMe.SetSDEWorkspace(wsp);
                //    _connectionOk = true;
                //}
                //else
                //{
                //    _connectionOk = false;
                //}

            }
            catch (Exception ex) { MessageBox.Show(ex.ToString());}

            return _workspace;
        }
Beispiel #38
0
 public bool Copy(IWorkspaceName WorkspaceName, string destinationFolder, out IWorkspaceName workspaceNameCopy)
 {
     workspaceNameCopy = null;
     return false;
 }