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); } } }
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); } }
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); }
//函数号: //函数名: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>(); }
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); } } } }
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; } }
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); }
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); } }
// 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); }
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); } }
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; }
/// <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; } }
/// <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(); }
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); }
/// <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); }
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); }
/// <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(); }
//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); }
/// <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); }
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); } }
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); }
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); } }
//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); }
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); } }
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(); } } }
//************************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; }
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; }
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); }