private void btnOK_Click(object sender, EventArgs e)
 {
     if (this.txtRasterDatastName.Text.Trim().Length == 0)
     {
         MessageBox.Show("新建栅格数据集名字不能为空!");
     }
     else
     {
         IRasterWorkspaceEx ex = this.igxObject_0.InternalObjectName.Open() as IRasterWorkspaceEx;
         try
         {
             if (
                 RasterUtility.CreateSDERasterDs(ex, this.txtRasterDatastName.Text,
                                                 int.Parse(this.txtRasterBand.Text), (rstPixelType)this.cboPixelType.SelectedIndex,
                                                 this.ispatialReference_0, null, null, "") != null)
             {
                 base.DialogResult = DialogResult.OK;
             }
         }
         catch (COMException exception)
         {
             int errorCode = exception.ErrorCode;
             MessageBox.Show(exception.Message);
         }
     }
 }
Beispiel #2
0
        private void frmSelectBand_Load(object sender, EventArgs e)
        {
            this.comboBox1.Items.Clear();
            IDataLayer2 dataLayer  = m_rasLayer as IDataLayer2;
            string      dataSource = dataLayer.DataSourceName.NameString;

            if (dataSource.Contains("RASTER")) //Îļþ
            {
                string            path = dataSource.Substring(dataSource.IndexOf('=') + 1, dataSource.IndexOf(';') - dataSource.IndexOf('=') - 2);
                string            name = dataSource.Substring(dataSource.LastIndexOf('=') + 1, dataSource.LastIndexOf(';') - dataSource.LastIndexOf('=') - 1);
                IWorkspaceFactory m_workspaceFactory = new RasterWorkspaceFactoryClass();
                IRasterWorkspace  rasterWorkspce     = m_workspaceFactory.OpenFromFile(path.Trim(), 0) as IRasterWorkspace;
                IRasterDataset    rasDataset         = rasterWorkspce.OpenRasterDataset(name.Trim());
                m_rc = rasDataset as IRasterBandCollection;
                for (int i = 0; i < m_rc.Count; i++)
                {
                    this.comboBox1.Items.Add(m_rc.Item(i).Bandname.ToString());
                }
            }
            else
            {
                string             name           = dataSource;
                IRasterWorkspaceEx rasterWorkspce = m_workSpace as IRasterWorkspaceEx;
                IRasterDataset     rasDataset     = rasterWorkspce.OpenRasterDataset(name);
                m_rc = rasDataset as IRasterBandCollection;
                for (int i = 0; i < m_rc.Count; i++)
                {
                    this.comboBox1.Items.Add(m_rc.Item(i).Bandname.ToString());
                }
            }
        }
        /// <summary>
        /// 获得栅格数据集
        /// </summary>
        /// <param name="name">栅格数据集名称</param>
        /// <param name="pWorkspace">geodatabase数据库工作空间</param>
        /// <param name="eError"></param>
        /// <returns></returns>
        private IRasterDataset GetRasterDataset(string name, IWorkspace pWorkspace, out Exception eError)
        {
            eError = null;

            IRasterWorkspaceEx pRasterWSEx = (IRasterWorkspaceEx)pWorkspace;

            try
            {   //要素集可能不存在,做一次保护
                return(pRasterWSEx.OpenRasterDataset(name));
            }
            catch (Exception eX)
            {
                //*******************************************************************
                //guozheng added
                if (ModData.SysLog != null)
                {
                    ModData.SysLog.Write(eX, null, DateTime.Now);
                }
                else
                {
                    ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog();
                    ModData.SysLog.Write(eX, null, DateTime.Now);
                }
                //********************************************************************

                eError = eX;
                return(null);
            }
        }
Beispiel #4
0
        public IList <RasterName> get_RasterDataSetNames()
        {
            IList <RasterName> names = new List <RasterName>();

            if (this.m_workSpace != null)
            {
                IEnumDatasetName   enumDatasetName   = m_workSpace.get_DatasetNames(esriDatasetType.esriDTRasterCatalog);
                IDatasetName       datasetName       = enumDatasetName.Next();//DataSet的名字
                IRasterWorkspaceEx rasterWorkspaceEx = m_workSpace as IRasterWorkspaceEx;
                while (datasetName != null)
                {
                    RasterName name = new RasterName();
                    name.RasDCName = datasetName.Name.ToString();
                    IRasterCatalogName rasterCaName  = (IRasterCatalogName)datasetName;
                    IRasterCatalog     rasterCatalog = rasterWorkspaceEx.OpenRasterCatalog(name.RasDCName);
                    ITable             table         = rasterCatalog as ITable;
                    ICursor            cursor        = table.Search(null, false);
                    IRow row = cursor.NextRow();
                    while (row != null)
                    {
                        name.RDSName.Add(row.get_Value(cursor.FindField("NAME")).ToString());

                        row = cursor.NextRow();
                    }
                    names.Add(name);
                    datasetName = enumDatasetName.Next();
                }
            }
            return(names);
        }
Beispiel #5
0
        //函数号:
        //函数名:LoadRasterToCatalogDatabase
        //函数功能:Raster导入Database
        //参数:pWorkspace:数据库,pWorkspace可以是Access 或者SDE
        //		strCata:Catalog名称
        //		pRasterDs:需要入库的Rasterdataset
        //备注:insert a raster dataset with given path and file name to an existing raster catalog
        public void LoadRasterToCatalogDatabase(IWorkspace pWorkspace, string strCata, IRasterDataset pRasterDs, string name)
        {
            //QI IRasterWorkspaceEx to IWorkspace
            IRasterWorkspaceEx pRasWKS = pWorkspace as IRasterWorkspaceEx;

            //Open raster catalog
            //IRasterCatalog相当于一个FeatureClass(表),表中的每一个记录可以存放Raster
            IRasterCatalog pInCatalog = pRasWKS.OpenRasterCatalog(strCata);
            // get raster field index
            int iRaster = pInCatalog.RasterFieldIndex;

            // QI IFeatureClass for inserting
            IFeatureClass pFeatureClass = pInCatalog as IFeatureClass;

            // get insert cursor
            IFeatureCursor pCursor = pFeatureClass.Insert(false);

            // create raster value from raster dataset with default storagedef
            IRasterValue pRasterValue = new RasterValueClass();

            pRasterValue.RasterDataset    = pRasterDs;
            pRasterValue.RasterStorageDef = new RasterStorageDefClass();

            pRasterValue.RasterDatasetName.NameString = name;
            //这里可以设置新的RasterStorageDef

            // insert the rastervalue  ' it will update name, metadata and geometry field
            IFeatureBuffer pRow = pFeatureClass.CreateFeatureBuffer();

            pRow.set_Value(iRaster, pRasterValue);
            pCursor.InsertFeature(pRow);
        }
        public PointInRasterQueryCommand(IRasterWorkspaceEx featureWorkspace, SpatialQueryArgs args)
        {
            FeatureWorkspace = featureWorkspace;
            Args             = args;

            _container.Results = new List <SearchResult>();
        }
Beispiel #7
0
        private void btnSelectOutLocation_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text = "保存位置"
            };

            file.RemoveAllFilters();
            file.AddFilter(new MyGxFilterWorkspaces(), true);
            if (file.ShowDialog() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    this.cboConfigKey.Properties.Items.Clear();
                    this.igxObject_0 = items.get_Element(0) as IGxObject;
                    IRasterWorkspaceEx ex = this.igxObject_0.InternalObjectName.Open() as IRasterWorkspaceEx;
                    this.method_1(ex as IGeodatabaseRelease, this.ispatialReference_1);
                    this.method_1(ex as IGeodatabaseRelease, this.ispatialReference_0);
                    this.txtLoaction.Name = this.igxObject_0.FullName;
                    if ((this.igxObject_0 is IGxDatabase) && (this.igxObject_0 as IGxDatabase).IsRemoteDatabase)
                    {
                        this.method_2((this.igxObject_0 as IGxDatabase).Workspace as IWorkspaceConfiguration);
                    }
                }
            }
        }
Beispiel #8
0
        public bool CopyRaster(IRasterWorkspace2 pRW, string pFileName, IRasterWorkspaceEx pWorkSpace, string pDestName)
        {
            try
            {

                IRasterDataset pRds = pRW.OpenRasterDataset(pFileName);

                IRasterProps pRasterProps = (IRasterProps)pRds.CreateDefaultRaster();
                IRasterStorageDef pRasterStorageDef = new RasterStorageDefClass();

                IRasterDef pRasterDef = new RasterDefClass();
                pRasterDef.SpatialReference = pRasterProps.SpatialReference;
                IGeometryDef pGeoDef = new GeometryDefClass();
                IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit;
                pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
                pGeoDefEdit.AvgNumPoints_2 = 4;
                pGeoDefEdit.GridCount_2 = 1;
                pGeoDefEdit.set_GridSize(0, 1000);
                pGeoDefEdit.SpatialReference_2 = pRasterProps.SpatialReference;
                IRasterDataset pRasterDataset = pWorkSpace.SaveAsRasterDataset(pDestName, pRds.CreateDefaultRaster(), pRasterStorageDef, "", pRasterDef, pGeoDef);

                return true;
            }
            catch (System.Exception ex)
            {
                return false;
            }
        }
Beispiel #9
0
        public bool CreateRaster(IRasterDataset pRDs, IRasterWorkspaceEx pWorkSpace)
        {
            IRasterProps      pRasterProps      = (IRasterProps)pRDs.CreateDefaultRaster();
            IRasterStorageDef pRasterStorageDef = new RasterStorageDefClass();

            pRasterStorageDef.CompressionType     = esriRasterCompressionType.esriRasterCompressionJPEG2000;
            pRasterStorageDef.CompressionQuality  = 50;
            pRasterStorageDef.PyramidLevel        = 2;
            pRasterStorageDef.PyramidResampleType = rstResamplingTypes.RSP_BilinearInterpolation;
            pRasterStorageDef.TileHeight          = 128;
            pRasterStorageDef.TileWidth           = 128;
            IRasterDef pRasterDef = new RasterDefClass();

            pRasterDef.Description      = "RasterDataset";
            pRasterDef.SpatialReference = pRasterProps.SpatialReference;
            IGeometryDef     pGeoDef     = new GeometryDefClass();
            IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit;

            pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
            pGeoDefEdit.AvgNumPoints_2 = 4;
            pGeoDefEdit.GridCount_2    = 1;
            pGeoDefEdit.set_GridSize(0, 1000);
            pGeoDefEdit.SpatialReference_2 = pRasterProps.SpatialReference;
            IRasterDataset pRasterDataset = pWorkSpace.CreateRasterDataset("zzy", 3, rstPixelType.PT_UCHAR, pRasterStorageDef, "", pRasterDef, pGeoDef);

            pRasterDataset = pRDs;
            return(true);
        }
Beispiel #10
0
        public bool CopyRaster(IRasterWorkspace2 pRW, string pFileName, IRasterWorkspaceEx pWorkSpace, string pDestName)
        {
            try
            {
                IRasterDataset pRds = pRW.OpenRasterDataset(pFileName);


                IRasterProps      pRasterProps      = (IRasterProps)pRds.CreateDefaultRaster();
                IRasterStorageDef pRasterStorageDef = new RasterStorageDefClass();

                IRasterDef pRasterDef = new RasterDefClass();
                pRasterDef.SpatialReference = pRasterProps.SpatialReference;
                IGeometryDef     pGeoDef     = new GeometryDefClass();
                IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit;
                pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
                pGeoDefEdit.AvgNumPoints_2 = 4;
                pGeoDefEdit.GridCount_2    = 1;
                pGeoDefEdit.set_GridSize(0, 1000);
                pGeoDefEdit.SpatialReference_2 = pRasterProps.SpatialReference;
                IRasterDataset pRasterDataset = pWorkSpace.SaveAsRasterDataset(pDestName, pRds.CreateDefaultRaster(), pRasterStorageDef, "", pRasterDef, pGeoDef);

                return(true);
            }
            catch (System.Exception ex)
            {
                return(false);
            }
        }
Beispiel #11
0
        // Handle exception and continue
        // executing.
        //*************************Raster Create End***************************


        //**************************Raster Open Begin**************************

        //函数名:	OpenRasterDatasetFromSDE
        //函数功能:在SDE中获得RasterDataset
        //参数:	rasterDatasetName函数名。
        //备注:
        //Libraries needed to run this code:
        //ESRI.ArcGIS.esriSystem, ESRI.ArcGIS.Geodatabase, ESRI.ArcGIS.DataSourcesGDB
        public IRasterDataset OpenRasterDatasetFromSDE(string server, string instance, string database, string user,
                                                       string password, string rasterDatasetName, string version)
        {
            // Open an ArcSDE raster dataset with the given name
            // server, instance, database, user, password, version are database connection info
            // rasterDatasetName is the name of the raster dataset to be opened//Open the ArcSDE workspace
            IPropertySet propertySet = new PropertySetClass();

            propertySet.SetProperty("server", server);
            propertySet.SetProperty("instance", instance);
            propertySet.SetProperty("database", database);
            propertySet.SetProperty("user", user);
            propertySet.SetProperty("password", password);
            propertySet.SetProperty("version", version);

            // cocreate the workspace factory
            IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactoryClass();

            // Open the raster workspace using the previously defined porperty set and
            //  QI to the desired IRasterWorkspaceEx interface to access the existing dataset
            IRasterWorkspaceEx rasterWorkspaceEx = workspaceFactory.Open(propertySet, 0) as IRasterWorkspaceEx;

            //Open the ArcSDE raster dataset
            IRasterDataset rasterDataset = null;

            rasterDataset = rasterWorkspaceEx.OpenRasterDataset(rasterDatasetName);

            return(rasterDataset);
        }
Beispiel #12
0
        public static IRaster AbrirRasterDesdeGDB(string sDir, string sNombre)
        {
            try
            {
                IWorkspaceFactory2 pWorkspaceFactory2 = (IWorkspaceFactory2) new AccessWorkspaceFactoryClass();
                IRasterWorkspaceEx pRasterWorkspaceEx = (IRasterWorkspaceEx)pWorkspaceFactory2.OpenFromFile(sDir, 0);
                //IWorkspace pWorkspace = (IWorkspace)pRasterWorkspaceEx;
                //IEnumDataset pEnumDS = pWorkspace.get_Datasets(esriDatasetType.esriDTRasterDataset);
                //IDataset pDS = pEnumDS.Next();
                //while (pDS != null)
                //{
                //  if (pDS.Name.ToUpper().Equals(sNombre.ToUpper()))
                //  {
                //    IRasterDataset pRDS = (IRasterDataset)pDS;

                //  }
                //  pDS = pEnumDS.Next();
                //}
                IRasterDataset pRDS2 = pRasterWorkspaceEx.OpenRasterDataset(sNombre);
                return(pRDS2.CreateDefaultRaster());
                //IWorkspaceFactory wsFactory = new RasterWorkspaceFactoryClass();
                //IRasterWorkspace ws = (IRasterWorkspace)wsFactory.OpenFromFile(sDir, 0);
                //IRasterDataset rasterDataset = ws.OpenRasterDataset(sNombre);
                //return rasterDataset.CreateDefaultRaster();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return(null);
            }
        }
Beispiel #13
0
 private void btnOK_Click(object sender, EventArgs e)
 {
     try
     {
         if (this.CanDo())
         {
             RasterUtil rasterUtil = new RasterUtil();
             if (!(this.m_pOutName is IRasterCatalogName))
             {
                 IRasterWorkspaceEx rasterWorkspaceEx = this.m_pOutName.Open() as IRasterWorkspaceEx;
                 for (int i = 0; i < this.m_pInNames.Count; i++)
                 {
                     IRasterDataset2 rasterDataset2           = (this.m_pInNames[i] as IName).Open() as IRasterDataset2;
                     string          fileNameWithoutExtension =
                         Path.GetFileNameWithoutExtension((rasterDataset2 as IDataset).Name);
                     if ((fileNameWithoutExtension[0] < '0' ? false : fileNameWithoutExtension[0] <= '9'))
                     {
                         fileNameWithoutExtension = string.Concat("A", fileNameWithoutExtension);
                     }
                     if (rasterWorkspaceEx is IWorkspace2)
                     {
                         int    num = 1;
                         string str = fileNameWithoutExtension;
                         try
                         {
                             while (
                                 (rasterWorkspaceEx as IWorkspace2).NameExists[
                                     esriDatasetType.esriDTFeatureClass, str])
                             {
                                 str = string.Concat(fileNameWithoutExtension, "_", num.ToString());
                                 num++;
                             }
                         }
                         catch
                         {
                         }
                         fileNameWithoutExtension = str;
                     }
                     ((IGeometryDefEdit)(new GeometryDef())).SpatialReference_2 =
                         (rasterDataset2 as IGeoDataset).SpatialReference;
                     rasterWorkspaceEx.SaveAsRasterDataset(fileNameWithoutExtension,
                                                           rasterDataset2.CreateFullRaster(), null, "", null, null);
                 }
             }
             else
             {
                 IFeatureClass featureClass = this.m_pOutName.Open() as IFeatureClass;
                 rasterUtil.ToRasterCatalog(this.m_pInNames, featureClass);
             }
         }
     }
     catch (Exception exception1)
     {
         Exception exception = exception1;
         CErrorLog.writeErrorLog(this, exception, "");
         MessageBox.Show(exception.Message);
     }
     this.progressBar1.Visible = false;
 }
Beispiel #14
0
        /// <summary>
        /// 加载栅格库体
        /// </summary>
        /// <param name="m_Hook">主程序hook</param>
        /// <param name="DbEleInfo">矢量库体对应的库体信息XmlElement</param>
        /// <param name="ex">输出错误信息</param>
        public static void AddRasterLayer(Plugin.Application.IAppDBIntegraRef m_Hook, XmlElement DbEleInfo, out Exception ex)
        {
            ex = null;
            try
            {
                IGroupLayer pGroupLayer = new GroupLayerClass();
                pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + m_Hook.ProjectTree.SelectedNode.Text;
                // string rasterDBType = (m_Hook.ProjectTree.SelectedNode.Tag as XmlElement).GetAttribute("存储类型");
                // string rasterDBType = DbEleInfo.GetAttribute("存储类型");
                string     rasterDBType = string.Empty;
                XmlElement RasterEle    = DbEleInfo.SelectSingleNode(".//栅格数据库") as XmlElement;
                rasterDBType = RasterEle.GetAttribute("存储类型").Trim();
                XmlElement elementTemp   = DbEleInfo.SelectSingleNode(".//栅格数据库/连接信息") as XmlElement;
                IWorkspace TempWorkSpace = ModDBOperate.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace;
                if (TempWorkSpace == null)
                {
                    // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!");
                    ex = new Exception("连接数据库失发生异常");
                    return;
                }
                IRasterWorkspaceEx pRasterWS = TempWorkSpace as IRasterWorkspaceEx;
                if (pRasterWS == null)
                {
                    return;
                }
                string feaclsName = (elementTemp.FirstChild as XmlElement).GetAttribute("名称");
                if (rasterDBType.Trim() == "栅格编目")
                {
                    //栅格编目数据加载
                    IRasterCatalog         pRasterCatalog = pRasterWS.OpenRasterCatalog(feaclsName);
                    IGdbRasterCatalogLayer pGDBRCLayer    = new GdbRasterCatalogLayerClass();
                    if (!pGDBRCLayer.Setup(pRasterCatalog as ITable))
                    {
                        return;
                    }
                    IFeatureLayer mFeaLayer = pGDBRCLayer as IFeatureLayer;
                    pGroupLayer.Add(mFeaLayer as ILayer);
                }
                else if (rasterDBType.Trim() == "栅格数据集")
                {
                    //栅格数据集加载

                    IRasterDataset pRasterDataset = pRasterWS.OpenRasterDataset(feaclsName);
                    IRasterLayer   pRasterLayer   = new RasterLayerClass();
                    pRasterLayer.CreateFromDataset(pRasterDataset);
                    if (pRasterLayer == null)
                    {
                        return;
                    }
                    pGroupLayer.Add(pRasterLayer as ILayer);
                }
                m_Hook.MapControl.Map.AddLayer(pGroupLayer);
            }
            catch (Exception eError)
            {
                ex = eError;
                return;
            }
        }
Beispiel #15
0
        /// <summary>
        /// 加载数据集
        /// </summary>
        /// <param name="workspace">数据集所在工作空间</param>
        /// <param name="mapControl">要加载的地图控件</param>
        public void AddAllDataset(IWorkspace workspace, AxMapControl mapControl)
        {
            IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny);

            enumDataset.Reset();
            IDataset dataset;

            while ((dataset = enumDataset.Next()) != null)
            {
                if (dataset is IFeatureDataset)     //要素数据集
                {
                    IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
                    IFeatureDataset   featureDataset   = featureWorkspace.OpenFeatureDataset(dataset.Name);
                    IEnumDataset      enumDatasetSub   = featureDataset.Subsets;
                    enumDatasetSub.Reset();
                    IDataset datasetSub;
                    while ((datasetSub = enumDatasetSub.Next()) != null)
                    {
                        if (datasetSub is FeatureClass)
                        {
                            IFeatureLayer featureLayer = new FeatureLayerClass();
                            featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass(datasetSub.Name);
                            if (featureLayer.FeatureClass != null)
                            {
                                featureLayer.Name = featureLayer.FeatureClass.AliasName;
                                mapControl.AddLayer(featureLayer);
                            }
                        }
                    }
                }
                else if (dataset is IFeatureClass)  //要素类
                {
                    IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
                    IFeatureClass     featureClass     = featureWorkspace.OpenFeatureClass(dataset.Name);
                    IFeatureLayer     featureLayer     = new FeatureLayerClass();
                    featureLayer.FeatureClass = featureClass;
                    featureLayer.Name         = featureClass.AliasName;
                    mapControl.AddLayer(featureLayer);
                }
                else if (dataset is IRasterDataset) //栅格数据集
                {
                    IRasterWorkspaceEx rasterWorkspace = (IRasterWorkspaceEx)workspace;
                    IRasterDataset     rasterDataset   = rasterWorkspace.OpenRasterDataset(dataset.Name);
                    IRasterPyramid3    rasPyramid      = rasterDataset as IRasterPyramid3;
                    if (rasPyramid != null)
                    {
                        if (!rasPyramid.Present)
                        {
                            rasPyramid.Create();
                        }
                    }
                    IRasterLayer rasterLayer = new RasterLayerClass();
                    rasterLayer.CreateFromDataset(rasterDataset);
                    ILayer layer = rasterLayer as ILayer;
                    mapControl.AddLayer(layer, 0);
                }
            }
            mapControl.ActiveView.Refresh();
        }
Beispiel #16
0
        private IDataset TryOpenDataset(Moves.GisDataset dataset, IWorkspace workspace, IDatasetName datasetName)
        {
            if (dataset.DatasourceType.AsDatasetType() == null)
            {
                return(null);
            }
            var datasetType = dataset.DatasourceType.AsDatasetType().Value;

            if (datasetType == esriDatasetType.esriDTFeatureClass)
            {
                try
                {
                    IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
                    IFeatureClass     featureClass     = featureWorkspace.OpenFeatureClass(datasetName.Name);
                    return((IDataset)featureClass);
                }
                catch (Exception)
                {
                    return(null);
                }
            }
            // For opening raster data see https://desktop.arcgis.com/en/arcobjects/10.5/net/webframe.htm#62937a09-b1c5-47d7-a1ac-f7a5daab3c89.htm
            if (datasetType == esriDatasetType.esriDTRasterDataset)
            {
                try
                {
                    // ReSharper disable once SuspiciousTypeConversion.Global
                    // Raster Workspace Class is in ESRI.ArcGIS.DataSourcesRaster
                    IRasterWorkspace2 rasterWorkspace = (IRasterWorkspace2)workspace;
                    IRasterDataset    rasterDataset   = rasterWorkspace.OpenRasterDataset(datasetName.Name);
                    // ReSharper disable once SuspiciousTypeConversion.Global
                    // Three possible co-classes FunctionRasterDataset, RasterBand, RasterDataset are in ESRI.ArcGIS.DataSourcesRaster
                    return((IDataset)rasterDataset);
                }
                catch (Exception)
                {
                    return(null);
                }
            }
            if (datasetType == esriDatasetType.esriDTRasterCatalog || datasetType == esriDatasetType.esriDTMosaicDataset)
            {
                try
                {
                    IRasterWorkspaceEx rasterWorkspace = (IRasterWorkspaceEx)workspace;
                    IRasterDataset     rasterDataset   = rasterWorkspace.OpenRasterDataset(datasetName.Name);
                    // ReSharper disable once SuspiciousTypeConversion.Global
                    // Three possible co-classes FunctionRasterDataset, RasterBand, RasterDataset are in ESRI.ArcGIS.DataSourcesRaster
                    return((IDataset)rasterDataset);
                }
                catch (Exception)
                {
                    return(null);
                }
            }
            //TODO: Open additional types of data sources, support at least all in theme Manager

            return(null);
        }
        /// <summary>
        /// 打开栅格数据集,返回RasterLayer
        /// </summary>
        /// <param name="path"></param>
        /// <param name="filename"></param>
        /// <returns></returns>
        public IRasterLayer RasterLayer(string path, string filename)
        {
            IRasterWorkspaceEx workspaceEx   = (IRasterWorkspaceEx)workspaceFactory.OpenFromFile(path, 0);
            IRasterLayer       rasterLayer   = new RasterLayerClass();
            IRasterDataset     rasterDataset = workspaceEx.OpenRasterDataset(filename);

            rasterLayer.CreateFromDataset(rasterDataset);
            return(rasterLayer);
        }
Beispiel #18
0
        /// <summary>
        /// 栅格入库类似ArcMap中的Load
        /// </summary>
        /// <param name="pWs"></param>
        /// <param name="pRasterName"></param>
        /// <param name="pRaser"></param>
        public void RasterInput(IWorkspace pWs, string pRasterName, IRaster pRaser)
        {
            IRasterWorkspaceEx pRsWx = pWs as IRasterWorkspaceEx;

            IRasterLoader pRastCatLoader = new RasterLoaderClass();

            pRastCatLoader.MosaicColormapMode = rstMosaicColormapMode.MM_FIRST;
            pRastCatLoader.Load(pRsWx.OpenRasterDataset(pRasterName), pRaser);
        }
Beispiel #19
0
        private void 现势性检查ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IWorkspaceFactory pFileGDBWorkspaceFactory;

            pFileGDBWorkspaceFactory = new FileGDBWorkspaceFactoryClass();
            IWorkspace   pWorkspace   = pFileGDBWorkspaceFactory.OpenFromFile(Path, 0);
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);

            pEnumDataset.Reset();
            IDataset  pDataset        = pEnumDataset.Next();
            DataTable SpatialRefTable = new DataTable();

            SpatialRefTable.Columns.Add(new DataColumn("影像名称", typeof(string)));
            SpatialRefTable.Columns.Add(new DataColumn("影像拍摄时间", typeof(string)));
            SpatialRefTable.Columns.Add(new DataColumn("时间现势性检查", typeof(string)));

            //判断数据集是否有数据
            while (pDataset != null)
            {
                if (pDataset is IRasterDataset) //栅格数据集
                {
                    IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace;
                    IRasterDataset     pRasterDataset   = pRasterWorkspace.OpenRasterDataset(pDataset.Name);
                    //影像金字塔判断与创建
                    ISpatialReference pSpatialRef = (pRasterDataset as IGeoDataset).SpatialReference;
                    string            spatialref  = pSpatialRef.Name.ToString();
                    string            rastername  = pDataset.Name.ToString();
                    string[]          strArray    = rastername.Split('_');

                    DataRow dr = SpatialRefTable.NewRow();
                    dr["影像名称"]   = pDataset.Name.ToString();
                    dr["影像拍摄时间"] = strArray[1].Substring(0, 8);
                    IRasterLayer pRasterLayer = new RasterLayerClass();
                    pRasterLayer.CreateFromDataset(pRasterDataset);
                    if (int.Parse(strArray[1].Substring(0, 8)) < 20170000 && int.Parse(strArray[1].Substring(0, 8)) > 20120000)
                    {
                        dr["时间现势性检查"] = "√";
                    }
                    else
                    {
                        dr["时间现势性检查"] = "×";
                    }
                    SpatialRefTable.Rows.Add(dr);
                }
                pDataset = pEnumDataset.Next();
            }
            // ExportExcel(SpatialRefTable);
            //弹出显示框
            TimeCheck tc = new TimeCheck();

            tc.Text = "影像质量检查";
            tc.dataGridView1.DataSource       = SpatialRefTable;
            tc.dataGridView1.Columns[1].Width = 200;
            tc.dataGridView1.Columns[2].Width = 300;
            tc.Show();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (this.listBox1.SelectedItems == null)
            {
                MessageBox.Show("请选择图幅名!");
                return;
            }

            string sqlText = "";

            for (int i = 0; i < this.listBox1.SelectedItems.Count; i++)
            {
                sqlText = "select name,DATASTRUCTURE from sheetmetadata where NAME='" + listBox1.SelectedItems[i] + "'";
                m_oraCmd.CommandText = sqlText;
                OracleDataReader dr = m_oraCmd.ExecuteReader();
                if (!dr.HasRows)
                {
                    MessageBox.Show("图幅不存在!");
                    return;
                }
                while (dr.Read())
                {
                    // this.listBox1.Items.Add(dr.GetValue(0).ToString());
                    if (dr.GetValue(1).ToString() == "矢量")
                    {
                        IFeatureLayer feaLyr;
                        feaLyr = m_gdata.AddFeatureClassToMap(dr.GetValue(0).ToString());
                        this.m_mapControl.Map.AddLayer(feaLyr);
                    }
                    if (dr.GetValue(1).ToString() == "影像")
                    {
                        IRasterWorkspaceEx rasterWS      = m_workSpace as IRasterWorkspaceEx;
                        IRasterCatalog     rasterCatalog = rasterWS.OpenRasterCatalog("COASTALGIS." + dr.GetValue(1).ToString());
                        ITable             table         = rasterCatalog as ITable;
                        ICursor            cursor        = table.Search(null, false);
                        IRow           row      = cursor.NextRow();
                        IRasterDataset rasterDS = null;
                        while (row != null)
                        {
                            IRasterCatalogItem rasterCatalogItem = row as IRasterCatalogItem;

                            if (dr.GetValue(0).ToString() == row.get_Value(cursor.FindField("NAME")).ToString())
                            {
                                rasterDS = rasterCatalogItem.RasterDataset;
                                break;
                            }
                            row = cursor.NextRow();
                        }
                        IRasterLayer rasterLayer = new RasterLayerClass();
                        rasterLayer.CreateFromDataset(rasterDS);
                        this.m_mapControl.Map.AddLayer(rasterLayer);
                    }
                }
            }
        }
        // 从地理数据库中加载栅格数据
        private void AddRasterFromGDB(string rastername)
        {
            FileGDBWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactoryClass();
            IWorkspace         pWorkspace             = pWorkspaceFactory.OpenFromFile(DATADIR + "Database.gdb", 0);
            IRasterWorkspaceEx pRasterWorkspace       = pWorkspace as IRasterWorkspaceEx;
            IRasterDataset     pRasterDataset         = pRasterWorkspace.OpenRasterDataset(rastername);
            IRasterLayer       pRasterLayer           = new RasterLayerClass();

            pRasterLayer.CreateFromDataset(pRasterDataset);
            m_pMapC2.AddLayer(pRasterLayer);
        }
Beispiel #22
0
        /// <summary>
        /// 栅格目录
        /// </summary>
        /// <param name="pWs"></param>
        /// <param name="pCatlogName"></param>
        /// <param name="pImage"></param>
        public void RasterCatlogInput(IWorkspace pWs, string pCatlogName, string pImage)
        {
            IRasterWorkspaceEx pRsWx = pWs as IRasterWorkspaceEx;

            //IRasterCatalog pRsCat = pRsWx.OpenRasterCatalog(pCatlogName);

            IRasterCatalogLoader pRastCatLoader = new RasterCatalogLoaderClass();

            pRastCatLoader.Workspace = pWs;
            pRastCatLoader.LoadDatasets(pCatlogName, pImage, null);
        }
        private void btnQuery_Click(object sender, EventArgs e)
        {
            string year  = cbxYear.SelectedItem.ToString();
            string month = cbxMonth.SelectedItem.ToString();

            IWorkspaceFactory pFileGDBWorkspaceFactory;

            pFileGDBWorkspaceFactory = new FileGDBWorkspaceFactory();
            IWorkspace   pWorkspace   = pFileGDBWorkspaceFactory.OpenFromFile(rasterPath, 0);
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);

            pEnumDataset.Reset();
            IDataset  pDataset        = pEnumDataset.Next();
            DataTable SpatialRefTable = new DataTable();

            SpatialRefTable.Columns.Add(new DataColumn("影像名称", typeof(string)));
            SpatialRefTable.Columns.Add(new DataColumn("影像拍摄时间", typeof(string)));

            //判断数据集是否有数据
            while (pDataset != null)
            {
                if (pDataset is IRasterDataset) //栅格数据集
                {
                    IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace;
                    IRasterDataset     pRasterDataset   = pRasterWorkspace.OpenRasterDataset(pDataset.Name);
                    //影像金字塔判断与创建
                    ISpatialReference pSpatialRef = (pRasterDataset as IGeoDataset).SpatialReference;
                    string            spatialref  = pSpatialRef.Name.ToString();
                    string            rastername  = pDataset.Name.ToString();
                    string[]          strArray    = rastername.Split('_');

                    DataRow dr = SpatialRefTable.NewRow();
                    dr["影像名称"]   = pDataset.Name.ToString();
                    dr["影像拍摄时间"] = strArray[1].Substring(0, 8);
                    IRasterLayer pRasterLayer = new RasterLayer();
                    pRasterLayer.CreateFromDataset(pRasterDataset);
                    if (strArray[1].Substring(0, 6) == year + month)
                    {
                        SpatialRefTable.Rows.Add(dr);
                    }
                }
                pDataset = pEnumDataset.Next();
            }
            // ExportExcel(SpatialRefTable);
            //弹出显示框
            FormQueryShowResult timeQuery = new FormQueryShowResult();

            timeQuery.Text = "时间查询";
            timeQuery.dgvQueryResult.DataSource       = SpatialRefTable;
            timeQuery.dgvQueryResult.Columns[1].Width = 200;
            timeQuery.Show();
        }
Beispiel #24
0
        //Open SDE RasterCatalog2
        // Libraries needed to run the code:
        //   ESRI.ArcGIS.esriSystem, ESRI.ArcGIS.Geodatabase, and ESRI.ArcGIS.DataSourcesGDB
        public IRasterCatalog OpenSDERasCata2(IWorkspace pWorkspace, string rasterCatalogName)
        {
            // Open the raster workspace using the previously defined porperty set
            // and QI to the desired IRasterWorkspaceEx interface to access the existing catalog
            IRasterWorkspaceEx rasterWorkspaceEx = pWorkspace as IRasterWorkspaceEx;

            //Open the ArcSDE raster Catalog
            IRasterCatalog rasterCatalog = null;

            rasterCatalog = rasterWorkspaceEx.OpenRasterCatalog(rasterCatalogName);

            return(rasterCatalog);
        }
Beispiel #25
0
        /// <summary>
        /// 创建栅格数据集
        /// </summary>
        /// <param name="pWorkspace"></param>
        /// <param name="sName"></param>
        /// <returns></returns>
        public IRasterDataset CreateRasterDataset(IWorkspace pWorkspace, string sName)
        {
            IRasterDataset rasterDataset = null;

            try
            {
                IRasterWorkspaceEx rasterWorkspace = pWorkspace as IRasterWorkspaceEx;
                rasterDataset = rasterWorkspace.CreateRasterDataset(sName, 3, rstPixelType.PT_CHAR, null, null, null, null);
            }
            catch (Exception ex)
            {
            }
            return(rasterDataset);
        }
Beispiel #26
0
        public static bool AddWatermarkDataToMD(string MDWorkspaceFolder, string MDName, string watermarkImagePath,
                                                double blendPercentage, esriWatermarkLocation watermarklocation, bool clearFunctions)
        {
            try
            {
                // Open MD
                Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
                IWorkspaceFactory  mdWorkspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
                IWorkspace         mdWorkspace        = mdWorkspaceFactory.OpenFromFile(MDWorkspaceFolder, 0);
                IRasterWorkspaceEx workspaceEx        = (IRasterWorkspaceEx)(mdWorkspace);
                IMosaicDataset     mosaicDataset      = (IMosaicDataset)workspaceEx.OpenRasterDataset(
                    MDName);

                if (clearFunctions) // Clear functions already added to MD.
                {
                    mosaicDataset.ClearFunction();
                }

                // Create Watermark Function
                IRasterFunction rasterFunction = new CustomFunction.WatermarkFunction();
                // Create the Watermark Function Arguments object
                IWatermarkFunctionArguments rasterFunctionArguments =
                    new WatermarkFunctionArguments();
                // Set the WatermarkImagePath
                rasterFunctionArguments.WatermarkImagePath =
                    watermarkImagePath;
                // the blending percentage,
                rasterFunctionArguments.BlendPercentage = blendPercentage;
                // and the watermark location.
                rasterFunctionArguments.WatermarkLocation = watermarklocation;

                // Add function to MD.
                // This function takes the name of the property corresponding to the Raster
                // property of the Arguments object (in this case is it called Raster itself:
                // rasterFunctionArguments.Raster) as its third argument.
                mosaicDataset.ApplyFunction(rasterFunction, rasterFunctionArguments, "Raster");

                Console.WriteLine("Added Watermark to MD: " + MDName + ".");
                Console.WriteLine("Success.");
                return(true);
            }
            catch (Exception exc)
            {
                Console.WriteLine("Exception Caught while adding watermark to MD: " + exc.Message);
                Console.WriteLine("Failed.");
                return(false);
            }
        }
Beispiel #27
0
        private ITable BuildRasterAttributeTable(string rasterName)
        {
            Type factoryType = Type.GetTypeFromProgID(
                "esriDataSourcesGDB.AccessWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
                                                     (factoryType);
            IRasterWorkspaceEx  rasterWorkspaceEx = workspaceFactory.OpenFromFile(AppSingleton.Instance().WorkspacePath, 0) as IRasterWorkspaceEx;
            IRasterDataset      rasterDataset     = rasterWorkspaceEx.OpenRasterDataset(rasterName);
            IRasterDatasetEdit2 raster            = (IRasterDatasetEdit2)rasterDataset;

            ESRI.ArcGIS.Geodatabase.IGeoDataset geoDataset = (ESRI.ArcGIS.Geodatabase.IGeoDataset)rasterDataset;
            raster.BuildAttributeTable();
            ITable vat = (raster as IRasterBandCollection).Item(0).AttributeTable;

            return(vat);
        }
Beispiel #28
0
 public static IRaster GetDEM()
 {
     try
     {
         string             path   = Config.GetConfigValue("2DMdbDEM");
         IWorkspaceFactory2 pWsF   = new AccessWorkspaceFactoryClass();
         IRasterWorkspaceEx pRws   = pWsF.OpenFromFile(path, 0) as IRasterWorkspaceEx;
         IRasterDataset     pRDs   = pRws.OpenRasterDataset("DEM");
         IRaster            raster = pRDs.CreateDefaultRaster();
         return(raster);
     }
     catch (System.Exception ex)
     {
         return(null);
     }
 }
Beispiel #29
0
        //Open Personal Geodatabase RasterCatalog
        //   ESRI.ArcGIS.Geodatabase, ESRI.ArcGIS.DataSourcesGDB
        public IRasterCatalog OpenPGDBRasterCatalog(string pathName, string rasterCatalogName)
        {
            // Open personal geodatabase raster catalog with the given name
            // pathName is the PGDB path (location of the personal geodatabase)
            // rasterCatalogName is the name of the raster catalog to be opened

            //Open the Access workspace
            IWorkspaceFactory2 workspaceFactory = new AccessWorkspaceFactoryClass();

            IRasterWorkspaceEx rasterWorkspaceEx = workspaceFactory.OpenFromFile(pathName, 0) as IRasterWorkspaceEx;

            //Open the PGDB raster Catalog
            IRasterCatalog rasterCatalog = null;

            rasterCatalog = rasterWorkspaceEx.OpenRasterCatalog(rasterCatalogName);

            return(rasterCatalog);
        }
Beispiel #30
0
 private IGeoDataset GetDEM()
 {
     try
     {
         string             path = Config.GetConfigValue("2DDEM");
         IWorkspaceFactory2 pWsF = new AccessWorkspaceFactoryClass();
         IRasterWorkspaceEx pRws = pWsF.OpenFromFile(path, 0) as IRasterWorkspaceEx;
         //IRasterDataset pRDs = new RasterDataset();
         //IRasterWorkspace pRws = pFws as IRasterWorkspace;
         IRasterDataset pRDs  = pRws.OpenRasterDataset("DY_DEM");
         IGeoDataset    pRGeo = pRDs as IGeoDataset;
         return(pRGeo);
     }
     catch (System.Exception ex)
     {
         return(null);
     }
 }
Beispiel #31
0
 private void btnOK_Click(object sender, EventArgs e)
 {
     if (this.txtRasterDatastName.Text.Trim().Length == 0)
     {
         MessageBox.Show("新建栅格目录名字不能为空!");
     }
     else
     {
         IRasterWorkspaceEx ex = this.igxObject_0.InternalObjectName.Open() as IRasterWorkspaceEx;
         if (
             RasterUtility.createCatalog(ex, this.txtRasterDatastName.Text, "Raster", "Shape",
                                         this.ispatialReference_0, this.ispatialReference_1, this.cboPixelType.SelectedIndex == 0, null,
                                         this.cboConfigKey.Text) != null)
         {
             base.DialogResult = DialogResult.OK;
             base.Close();
         }
     }
 }
Beispiel #32
0
        //************************Raster Load End***************************
        //************************Raster Create Begin***********************
        //������ţ�RasterCreate-01
        //��������createSDERasterDs
        //�������ܣ��ڸ��������ݿ��д����µ�RasterDataset
        //������
        //        rasterWorkspaceEx == destination geodatabase workspace (personal or ArcSDE)
        //        rasterDatasetName == Name of raster dataset to create
        //        numberOfBands == number of bands in the raster dataset that will be created
        //        pixelType == type of pixel in target raster dataset
        //        spatialReference == desired spatial reference in raster dataset
        //        rasterStorageDef == RasterStorageDef object of Raster dataset -- defines pyramids, tiling, etc
        //        rasterDef == definition for spatial reference
        //        sKeyword == ArcSDE only, configuration keyword
        //��ע��
        //        ���õĺ�����createGeometryDef(),createRasterStorageDef()��createRasterDef()�Ⱥ�����ϡ�
        //        Libraries:	ESRI.ArcGIS.Geodatabase, ESRI.ArcGIS.Geometry
        public IRasterDataset createSDERasterDs(IRasterWorkspaceEx rasterWorkspaceEx,
            string rasterDatasetName, int numberOfBands,
            rstPixelType pixelType, ISpatialReference spatialReference,
            IRasterStorageDef rasterStorageDef, IRasterDef rasterDef,
            string keyword)
        {
            // Create a raster dataset in a geodatabase workspace
            IRasterDataset rasterDataset = null;
            IGeometryDef geometryDef;

            // if rasterdef is missing, create one with specified/unknown spatialreference
            if (rasterDef == null)
                rasterDef = createRasterDef(false, spatialReference);

            // if rasterstoragedef is missing, use default parameters
            if (rasterStorageDef == null)
                rasterStorageDef = createRasterStorageDef();

            // create geometry definition
            geometryDef = createGeometryDef(spatialReference);

            // if keyword is missing, use default
            if (keyword.Length == 0)
                keyword = "DEFAULTS";
            Console.WriteLine("bb");
            rasterDataset = rasterWorkspaceEx.CreateRasterDataset(rasterDatasetName, numberOfBands, pixelType,
                rasterStorageDef, keyword, rasterDef, geometryDef);

            return rasterDataset;
        }
Beispiel #33
0
 public bool CreateRaster(IRasterDataset pRDs, IRasterWorkspaceEx pWorkSpace)
 {
     IRasterProps pRasterProps = (IRasterProps)pRDs.CreateDefaultRaster();
     IRasterStorageDef pRasterStorageDef = new RasterStorageDefClass();
     pRasterStorageDef.CompressionType = esriRasterCompressionType.esriRasterCompressionJPEG2000;
     pRasterStorageDef.CompressionQuality = 50;
     pRasterStorageDef.PyramidLevel = 2;
     pRasterStorageDef.PyramidResampleType = rstResamplingTypes.RSP_BilinearInterpolation;
     pRasterStorageDef.TileHeight = 128;
     pRasterStorageDef.TileWidth = 128;
     IRasterDef pRasterDef = new RasterDefClass();
     pRasterDef.Description = "RasterDataset";
     pRasterDef.SpatialReference = pRasterProps.SpatialReference;
     IGeometryDef pGeoDef = new GeometryDefClass();
     IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit;
     pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
     pGeoDefEdit.AvgNumPoints_2 = 4;
     pGeoDefEdit.GridCount_2 = 1;
     pGeoDefEdit.set_GridSize(0, 1000);
     pGeoDefEdit.SpatialReference_2 = pRasterProps.SpatialReference;
     IRasterDataset pRasterDataset = pWorkSpace.CreateRasterDataset("zzy", 3, rstPixelType.PT_UCHAR, pRasterStorageDef, "", pRasterDef, pGeoDef);
     pRasterDataset = pRDs;
     return true;
 }
Beispiel #34
0
        public void CreateSDERasterBaseOnFile(IRasterStorageDef pRasterStorage, string NewFileName, IRasterWorkspaceEx pRasterWSEx, string strRasterPath, string strRasterName)
        {
            //1��get original Raster
            IRasterDataset pRasterDataset = OpenRasterDataset(strRasterPath, strRasterName);

            //2��get the Raster's property
            IRaster pRaster = pRasterDataset.CreateDefaultRaster();
            IRasterProps pRasterProp = pRaster as IRasterProps;

            rstPixelType pPixelType = pRasterProp.PixelType;

            //get the BandNumber of the Raster
            IRasterBandCollection pBands = pRasterDataset as IRasterBandCollection;
            int iBandNumber = pBands.Count;

            ISpatialReference pSR = pRasterProp.SpatialReference;

            Console.WriteLine("AAA");
            IRasterDataset NewRaster = createSDERasterDs(pRasterWSEx, NewFileName, iBandNumber, pPixelType, pSR, pRasterStorage, null, "");
            MosaicRasterToGDBRaster(pRasterDataset, NewRaster as IRasterDatasetEdit);
        }
 IRasterDataset OpenGDBRasterDataset(IRasterWorkspaceEx pRasterWorkspaceEx, string pDatasetName)
 {
     //打开存放在数据库中的栅格数据
     return pRasterWorkspaceEx.OpenRasterDataset(pDatasetName);
 }