private void RepairWithDataset(IDataLayer2 dataLayer, Moves.GisDataset oldDataset, Moves.GisDataset newDataset, AlertForm alert) { // This routine, can only repair workspace path, and dataset name. // The workspace type and data type must be the same. // This can be checked with the CSV verifier. Violations will be ignored in the CSV loader if (oldDataset.DatasourceType != newDataset.DatasourceType || oldDataset.WorkspaceProgId != newDataset.WorkspaceProgId) { return; } var helper = (IDataSourceHelperLayer) new DataSourceHelper(); if (oldDataset.DatasourceName == newDataset.DatasourceName) { helper.FindAndReplaceWorkspaceNamePath((ILayer)dataLayer, oldDataset.Workspace.Folder, newDataset.Workspace.Folder, false); } else { // I can't find a way to simply change the name of the dataset in a layer. // To set the data source of a layer I need to first open the data source (using the newDataset properties) // I can then use the Name (as IName) of the data source to fix the layer. IDataset dataset = TryOpenDataset(newDataset); if (dataset == null) { alert.Text = @"Error"; alert.msgBox.Text = $"Map Fixer is unable to repair the layer {((ILayer2)dataLayer).Name}. " + "Use the 'Set Data Source button' on the Source tab of the layer properties dialog to " + $"set the data source to {newDataset.Workspace.Folder}\\{newDataset.DatasourceName}"; alert.ShowDialog(new WindowWrapper(new IntPtr(ArcMap.Application.hWnd))); return; } helper.ReplaceName((ILayer)dataLayer, dataset.FullName, false); } }
public Tests() { _objectType = "Function"; string baseDir = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin"))); AdapterSettings adapterSettings = new AdapterSettings(); adapterSettings.AppendSettings(new AppSettingsReader("App.config")); FileInfo log4netConfig = new FileInfo("Log4net.config"); log4net.Config.XmlConfigurator.Configure(log4netConfig); string twConfigFile = String.Format("{0}{1}.{2}.config", adapterSettings["AppDataPath"], adapterSettings["ProjectName"], adapterSettings["ApplicationName"] ); AppSettingsReader twSettings = new AppSettingsReader(twConfigFile); adapterSettings.AppendSettings(twSettings); _dataLayer = new Bechtel.DataLayer.RestDataLayer2(adapterSettings); _filter = Utility.Read<DataFilter>(adapterSettings["FilterPath"]); //_scenarios = Utility.Read<Scenarios>("Scenarios.xml"); _objectType = adapterSettings["ObjectType"]; _modifiedProperty = adapterSettings["ModifiedProperty"]; _modifiedValue = adapterSettings["ModifiedValue"]; _objectDefinition = GetObjectDefinition(_objectType); }
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(); } }
/// <summary> /// 移除图层右键菜单 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void removeLayer_ToolStripMenuItem_Click(object sender, EventArgs e) { IBasicMap map = null; ILayer selectedLayer = null; object unk = null; object data = null; esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone; m_tocControl.GetSelectedItem(ref item, ref map, ref selectedLayer, ref unk, ref data); if (item == esriTOCControlItem.esriTOCControlItemLayer) { IDataLayer2 datalayer = selectedLayer as IDataLayer2; if (datalayer.DataSourceName.NameString != "") { datalayer.Disconnect(); } m_mapControl.Map.DeleteLayer(selectedLayer); if (m_attForm != null && selectedLayer is IFeatureLayer) { m_attForm.att_removetable(selectedLayer as IFeatureLayer); } } this.Focus(); m_mapControl.Focus(); }
public void ConnectSource(ILayer pLayer, string ConnectFloder, int mode) { switch (mode) { case 0: //图层来源为gdb IFeatureLayer pFlayer = pLayer as IFeatureLayer; IDataLayer2 pDLayer = pFlayer as IDataLayer2; IDatasetName pDsName = pDLayer.DataSourceName as IDatasetName; IWorkspaceName ws = pDsName.WorkspaceName; ws.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory"; ws.PathName = ConnectFloder; pDsName.WorkspaceName = ws; break; case 1: //图层来源为shp文件 IFeatureLayer pFLayer = pLayer as IFeatureLayer; IDataLayer2 pDlayer = pFLayer as IDataLayer2; IDatasetName pDsname = pDlayer.DataSourceName as IDatasetName; IWorkspaceName wsf = pDsname.WorkspaceName; wsf.PathName = ConnectFloder; pDsname.WorkspaceName = wsf; break; case 2: //图层来源为栅格图像 IRasterLayer pRlayer = pLayer as IRasterLayer; IDataLayer2 pDlayerr = pRlayer as IDataLayer2; IDatasetName pDsnamer = pDlayerr.DataSourceName as IDatasetName; IWorkspaceName wsfr = pDsnamer.WorkspaceName; wsfr.PathName = ConnectFloder; pDsnamer.WorkspaceName = wsfr; break; } }
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()); } } }
private void RepairWithLayerFile(int mapIndex, IDataLayer2 dataLayer, string newLayerFile, bool keepBrokenLayer, AlertForm alert) { // Add Layer File to ActiveView Snippet: (http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#//004900000050000000) IGxLayer gxLayer = new GxLayer(); IGxFile gxFile = (IGxFile)gxLayer; gxFile.Path = newLayerFile; if (gxLayer.Layer != null) { // AddLayer will add the new layer at the most appropriate point in the TOC. // This is much easier and potentially less confusing than adding at the old data location. ArcMap.Document.Maps.Item[mapIndex].AddLayer(gxLayer.Layer); if (!keepBrokenLayer) { ArcMap.Document.Maps.Item[mapIndex].DeleteLayer((ILayer)dataLayer); } } else { // Notify the user that the LayerFile could not be opened (missing, corrupt, ...) alert.Text = @"Error"; alert.msgBox.Text = $"The layer file '{newLayerFile}' could not be opened."; alert.ShowDialog(new WindowWrapper(new IntPtr(ArcMap.Application.hWnd))); } }
public override void OnDblClick() { IMapControl3 pMapCtrl = ClsGlobal.GetMapControl(m_hookHelper); if (pMapCtrl == null) { if (m_NewPolygonFeedback != null) { m_NewPolygonFeedback.Stop(); m_NewPolygonFeedback = null; return; } } IGeometry pGeometry = m_NewPolygonFeedback.Stop(); m_NewPolygonFeedback = null; if (pGeometry == null) { return; } m_pClipPolygon = pGeometry as IPolygon; double dbNoDataValue = m_pFrmSetRasterNoDataValue.NoDataValue; //获取到无效值区域、无效值、栅格数据之后,开始设置 ClsSetRasterRegionToDataValue pSetRasterToNoDataValue = new ClsSetRasterRegionToDataValue(m_pRasterLayer.Raster, m_pClipPolygon, dbNoDataValue); if (!pSetRasterToNoDataValue.SetRegionToNoDataValue()) { MessageBox.Show("设置无效值出错!"); } else { //MessageBox.Show("设置无效值成功!"); //重新加载栅格数据 try { IRaster2 pSrcRaster2 = m_pRasterLayer.Raster as IRaster2; IRasterDataset pDstRasterDataset = pSrcRaster2.RasterDataset; IRasterPyramid3 pDstRasterPyramid3 = pDstRasterDataset as IRasterPyramid3; if (pDstRasterPyramid3.Present) { IDataLayer2 pDataLayer = m_pRasterLayer as IDataLayer2; pDataLayer.Disconnect(); pDstRasterPyramid3.DeletePyramid(); pDstRasterPyramid3.Create(); m_pRasterLayer.CreateFromDataset(pDstRasterDataset); } IMapControl3 pMapControl3 = ClsGlobal.GetMapControl(m_hookHelper); pMapControl3.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } } base.OnDblClick(); }
/// <summary> /// 重置图层数据源 /// </summary> /// <param name="pLayer"></param> /// <param name="pNewWksp"></param> /// <returns></returns> public static bool ResetLayerDatasource(IDataLayer2 pLayer, IWorkspace pNewWksp) { if (pLayer == null || pNewWksp == null) { return(false); } //// 2012-06-15 张航宇 //// 直接获取Layer的数据源名称,从新的Workspace打开FeatureClass进行替换 //IDatasetName fClassName = pLayer.DataSourceName as IDatasetName; //if (fClassName != null) //{ // string strClassName = fClassName.Name; // try // { // IFeatureClass fClass = (pNewWksp as IFeatureWorkspace).OpenFeatureClass(strClassName); // pLayer.DataSourceName = (fClass as IDataset).FullName; // } // catch // { // return false; // } //} IEnumDatasetName pEnumDsName = pNewWksp.get_DatasetNames(esriDatasetType.esriDTFeatureDataset); IDatasetName pFtDsName = pEnumDsName.Next(); try { if (!pLayer.InWorkspace(pNewWksp)) { IFeatureClassName pOldName = pLayer.DataSourceName as IFeatureClassName; // 2012-06-15 张航宇 // 修改对没有Dataset的Workspace,直接将Workspace重置 if (pOldName != null) { if (pOldName.FeatureDatasetName == null || pFtDsName == null) { (pOldName as IDatasetName).WorkspaceName = (pNewWksp as IDataset).FullName as IWorkspaceName; } else { pOldName.FeatureDatasetName = pFtDsName; pOldName.FeatureDatasetName.WorkspaceName = ((IDataset)pNewWksp).FullName as IWorkspaceName; } } pLayer.Connect(pOldName as IName); } } catch (Exception exp) { Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString()); return(false); } return(true); }
private Dictionary <int, List <IDataLayer2> > GetBrokenDataSources() { var brokenDataSources = new Dictionary <int, List <IDataLayer2> >(); IMaps maps = ArcMap.Document.Maps; for (int i = 0; i < maps.Count; i++) { IMap map = maps.Item[i]; // ReSharper disable once RedundantArgumentDefaultValue IEnumLayer layerEnumerator = map.Layers[null]; ILayer layer; while ((layer = layerEnumerator.Next()) != null) { if (layer is ILayer2 layer2) { IDataLayer2 dataLayer = null; if (!layer2.Valid) { dataLayer = layer2 as IDataLayer2; } // An IMosaicLayer (raster mosaic dataset) will report valid when it is not; need to check the sub layers. // Repairing the sub layers is insufficient. The IMosaicLayer must be repaired (this will repair the sub layers as well) // NOTE: It would be nice to remove the sub-layers (they will report invalid), // 1) they do not need to be fixed if the parent layer is fixed (must do) // 2) they will report as unfixable after the parent layer is fixed because the new, correct path isn't in the moves db else if (layer is IMosaicLayer) { var groupLayer = layer as ICompositeLayer; var groupCount = groupLayer?.Count ?? 0; for (int j = 0; j < groupCount; j++) { // Checking the Valid property on a Mosaic sublayer as ILayer will crash; Casting to ILayer2 is works. Why???? // The raster sub layer does not implement ILayer2. That is ok, since the boundary and footprint will indicate validity if (groupLayer?.Layer[j] is ILayer2 subLayer) { if (!subLayer.Valid) { dataLayer = layer as IDataLayer2; break; } } } } if (dataLayer != null) { if (!brokenDataSources.ContainsKey(i)) { brokenDataSources[i] = new List <IDataLayer2>(); } brokenDataSources[i].Add(dataLayer); } } } } return(brokenDataSources); }
private string GetLayerPath(ILayer pLayer) { string path = null; IDataLayer2 dataLyr = pLayer as IDataLayer2; IDatasetName datasetName = dataLyr.DataSourceName as IDatasetName; IWorkspaceName ws = datasetName.WorkspaceName; path = ws.PathName + "\\" + pLayer.Name; return(path); }
public XmlProjectionEngine(AdapterSettings settings, IDataLayer2 dataLayer, Mapping mapping) : base(settings, dataLayer, mapping) { _individualsCache = new Dictionary <string, List <string> >(); string baseUri = _settings["GraphBaseUri"]; string project = _settings["ProjectName"]; string app = _settings["ApplicationName"]; _appNamespace = Utility.FormEndpointBaseURI(_uriMaps, baseUri, project, app); }
private Moves.GisDataset GetDataset(IDataLayer2 dataLayer) { //TODO: dataLayer.DataSourceName is an IName. Are we guaranteed this cast will not throw an exception? var datasetName = (IDatasetName)dataLayer.DataSourceName; IWorkspaceName workspaceName = datasetName.WorkspaceName; //TODO: If the workspace.PathName is null (probably true for SDE or OleDB) then the GisDataset ctor will throw an exception. // Maybe check IWorkspaceName.Type != esriWorkspaceType.esriRemoteDatabaseWorkspace (esriFileSystemWorkspace and esriLocalDatabaseWorkspace are ok) // Looking at ~6300 data sources in Theme Manager, all have a pathName, for SDE it is the connection file, for web services it is the URL return(new Moves.GisDataset(workspaceName.PathName, workspaceName.WorkspaceFactoryProgID, datasetName.Name, datasetName.Type.ToString())); }
/// <summary> /// 从图层中获取,要素的路径 /// </summary> /// <param name="pLayer"></param> /// <returns></returns> public string LayerToShapefilePath(ILayer pLayer) { string filename = ""; IDataLayer2 pDLayer = (IDataLayer2)pLayer; IDatasetName pDsName = (IDatasetName)(pDLayer.DataSourceName); string dsname = pDsName.Name; IWorkspaceName ws = pDsName.WorkspaceName; //filename = ws.PathName+"\\"+dsname+".shp"; filename = ws.PathName + "\\" + dsname; return(filename); }
/// <summary> /// 关闭主窗口 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MainForm_FormClosed(object sender, FormClosedEventArgs e) { //try //{ //检查编辑状态 if (pEngineEditor != null && pEngineEditor.HasEdits() == false) { pEngineEditor.StopEditing(false); } else { if (pEngineEditor != null) { if (MessageBox.Show("Save Edits?", "Save Prompt", MessageBoxButtons.YesNo) == DialogResult.Yes) { pEngineEditor.StopEditing(true); } else { pEngineEditor.StopEditing(false); } } } //恢复光标 ICommand t_editcommand = new ESRI.ArcGIS.Controls.ControlsEditingEditToolClass(); t_editcommand.OnCreate(m_mapControl.Object); m_mapControl.CurrentTool = t_editcommand as ITool; t_editcommand.OnClick(); m_editinglayer.Caption = "当前图层:"; map_edittools.Visible = false; //移除图层并解除图层锁 for (int i = m_mapControl.Map.LayerCount - 1; i >= 0; i--) { IDataLayer2 datalayer = m_mapControl.get_Layer(i) as IDataLayer2; if (datalayer.DataSourceName.NameString != "") { datalayer.Disconnect(); } m_mapControl.DeleteLayer(i); } //} //catch (Exception err) //{ // MessageBox.Show(err.Message); //} }
public test() { string baseDir = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin"))); AdapterSettings adapterSettings = new AdapterSettings(); adapterSettings.AppendSettings(new AppSettingsReader("App.config")); _dataLayer = new Bechtel.iRING.SPR.SPRDataLayer(adapterSettings); _objectType = adapterSettings["ObjectType"]; _objectDefinition = GetObjectDefinition(_objectType); _dataLayer.GetDictionary(); //_dataLayer.RefreshAll(); }
public Tests() { string baseDir = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin"))); AdapterSettings adapterSettings = new AdapterSettings(); adapterSettings.AppendSettings(new AppSettingsReader("App.config")); FileInfo log4netConfig = new FileInfo("Log4net.config"); log4net.Config.XmlConfigurator.Configure(log4netConfig); _dataLayer = new ebDataLayer(adapterSettings); _scenarios = Utility.Read<Scenarios>("Scenarios.xml"); }
/// <summary> /// 11.3 修改数据源 /// </summary> private void addDataToolStripMenuItem_Click(object sender, EventArgs e) { FolderBrowserDialog OpenSHP = new FolderBrowserDialog(); if (DialogResult.OK == OpenSHP.ShowDialog()) { IDataLayer2 pDLayer = (IDataLayer2)pLayer; IDatasetName pDsName = (IDatasetName)(pDLayer.DataSourceName); IWorkspaceName ws = pDsName.WorkspaceName; string ShpPath = OpenSHP.SelectedPath; ws.PathName = ShpPath; pDsName.WorkspaceName = ws; } }
public Tests() { string baseDir = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin"))); AdapterSettings adapterSettings = new AdapterSettings(); adapterSettings["ProjectName"] = project; adapterSettings["ApplicationName"] = app; string appConfigPath = string.Format("App_Data\\{0}.{1}.config", project, app); adapterSettings.AppendSettings(new AppSettingsReader(appConfigPath)); _dataLayer = new SPPIDDataLayer(adapterSettings); _scenarios = org.iringtools.utility.Utility.Read<Scenarios>("Scenarios.xml"); }
public test() { string baseDir = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin"))); AdapterSettings adapterSettings = new AdapterSettings(); adapterSettings.AppendSettings(new AppSettingsReader("App.config")); _dataLayer = new Bechtel.iRING.SPR.SPRDataLayer(adapterSettings); _objectType = adapterSettings["ObjectType"]; _objectDefinition = GetObjectDefinition(_objectType); _dataLayer.GetDictionary(); //_dataLayer.RefreshAll(); }
public List <string> GetLayerPath() { List <string> LayerPathList = new List <string>(); ILayer pEnumLayer; for (int i = 0; i < FrmGISMain.mainMap.LayerCount; i++) { pEnumLayer = FrmGISMain.mainMap.get_Layer(i); IDataLayer2 dlayer = pEnumLayer as IDataLayer2; IDatasetName ds = dlayer.DataSourceName as IDatasetName; IWorkspaceName ws = ds.WorkspaceName; string layerpath = ws.PathName + pEnumLayer.Name; LayerPathList.Add(layerpath); } return(LayerPathList); }
public Tests() { string baseDir = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin"))); AdapterSettings adapterSettings = new AdapterSettings(); adapterSettings.AppendSettings(new AppSettingsReader("App.config")); FileInfo log4netConfig = new FileInfo("Log4net.config"); log4net.Config.XmlConfigurator.Configure(log4netConfig); _dataLayer = new ebDataLayer(adapterSettings); _scenarios = Utility.Read <Scenarios>("Scenarios.xml"); }
/// <summary> /// 重置图层数据源 /// </summary> /// <param name="pLayer"></param> /// <param name="pNewWksp"></param> /// <returns></returns> public static bool ResetLayerDatasource2(IDataLayer2 pLayer, IWorkspace pNewWksp) { if (pLayer == null || pNewWksp == null) { return(false); } IEnumDataset pEnumDsName = pNewWksp.get_Datasets(esriDatasetType.esriDTFeatureDataset); IDataset pFtDsName = pEnumDsName.Next(); IEnumDataset pEnumDs = pFtDsName.Subsets; try { if (!pLayer.InWorkspace(pNewWksp)) { IFeatureClassName pOldName = pLayer.DataSourceName as IFeatureClassName; if (pOldName != null) { IDatasetName dsName = pOldName as IDatasetName; IDataset pDs = null; while ((pDs = pEnumDs.Next()) != null) { if (dsName.Name.Equals(pDs.Name, StringComparison.OrdinalIgnoreCase) || pDs.Name.Contains(dsName.Name.ToUpper())) { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; if (pFeatureLayer == null) { return(true); } pFeatureLayer.FeatureClass = pDs as IFeatureClass; return(true); } } } } } catch (Exception exp) { Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString()); return(false); } return(true); }
public Tests() { string baseDir = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin"))); AdapterSettings adapterSettings = new AdapterSettings(); adapterSettings["ProjectName"] = project; adapterSettings["ApplicationName"] = app; string appConfigPath = string.Format("App_Data\\{0}.{1}.config", project, app); adapterSettings.AppendSettings(new AppSettingsReader(appConfigPath)); _dataLayer = new SPPIDDataLayer(adapterSettings); _scenarios = org.iringtools.utility.Utility.Read <Scenarios>("Scenarios.xml"); }
static void Main(string[] args) { AdapterSettings settings = new AdapterSettings(); settings["WhereClauseAlias"] = "_t"; sampleDL = new SampleSQLDataLayer(settings); #region test get // from iRING service point of view IList <IDataObject> dataObjects = sampleDL.Get("LINES", null); Console.WriteLine("Object Count: " + dataObjects.Count); foreach (IDataObject dataObject in dataObjects) { DebugDataObject(dataObject, "LINES"); } #endregion #region test post foreach (IDataObject dataObject in dataObjects) { ((GenericDataObject)dataObject).ObjectType = "LINES"; // make tag different by appending timestamp on it string tag = dataObject.GetPropertyValue("TAG").ToString(); string newTag = tag + DateTime.Now.ToString(); if (newTag.Length > 100) { newTag = newTag.Substring(0, 100); } dataObject.SetPropertyValue("TAG", newTag); } // from iRING service point of view Response response = sampleDL.Post(dataObjects); Console.WriteLine("Post result: " + response.Level.ToString()); #endregion Console.WriteLine("Test completed!"); Console.ReadKey(); }
/// <summary> /// Occurs when this command is clicked /// </summary> public override void OnClick() { // TODO: Add CmdRasterTransZ.OnClick implementation IMapControl3 pMapCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl3; if (pMapCtr != null) { FrmRasterTransZ m_frmRasterTranZ = new FrmRasterTransZ(); if (m_frmRasterTranZ.ShowDialog() == DialogResult.OK) { if (m_frmRasterTranZ.istrue == true) { ClsRasterOp pRasterOp = new ClsRasterOp(); IRaster2 pRaster2 = pRasterLayer.Raster as IRaster2; IRasterDataset2 pRasterDataset = pRaster2.RasterDataset as IRasterDataset2; pRasterOp.ChangeRasterValue(pRasterDataset, m_frmRasterTranZ.a, m_frmRasterTranZ.b); //此处要判断图层是否存在金字塔,如果存在则需要重新创建 IRasterPyramid3 pDstRasterPyramid3 = pRasterDataset as IRasterPyramid3; if (pDstRasterPyramid3.Present) { IDataLayer2 pDataLayer = pRasterLayer as IDataLayer2; pDataLayer.Disconnect(); pDstRasterPyramid3.DeletePyramid(); pDstRasterPyramid3.Create(); pRasterLayer.CreateFromDataset(pRasterDataset); } //更新图层渲染方式 ChangeStrechRender(pRasterLayer); pMapCtr.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); if (m_axTocControl != null) { m_axTocControl.SetBuddyControl(pMapCtr); m_axTocControl.Update(); m_axTocControl.ActiveView.Refresh(); } } } } }
static void Main(string[] args) { AdapterSettings settings = new AdapterSettings(); settings["WhereClauseAlias"] = "_t"; sampleDL = new SampleSQLDataLayer(settings); #region test get // from iRING service point of view IList<IDataObject> dataObjects = sampleDL.Get("LINES", null); Console.WriteLine("Object Count: " + dataObjects.Count); foreach (IDataObject dataObject in dataObjects) { DebugDataObject(dataObject, "LINES"); } #endregion #region test post foreach (IDataObject dataObject in dataObjects) { ((GenericDataObject)dataObject).ObjectType = "LINES"; // make tag different by appending timestamp on it string tag = dataObject.GetPropertyValue("TAG").ToString(); string newTag = tag + DateTime.Now.ToString(); if (newTag.Length > 100) newTag = newTag.Substring(0, 100); dataObject.SetPropertyValue("TAG", newTag); } // from iRING service point of view Response response = sampleDL.Post(dataObjects); Console.WriteLine("Post result: " + response.Level.ToString()); #endregion Console.WriteLine("Test completed!"); Console.ReadKey(); }
/// <summary> /// 获取矢量图层文件路径 /// </summary> /// <param name="inFeatureLayer">输入矢量图层</param> /// <returns>文件路径</returns> public static string GetFeatureFilePath(IFeatureLayer inFeatureLayer) { string directory = null; string fileName = null; IDataLayer2 pDataLayer = (IDataLayer2)inFeatureLayer; IDatasetName datasetName = pDataLayer.DataSourceName as IDatasetName; if (datasetName != null) { IDatasetName pDatasetName = datasetName; IWorkspaceName pWorkspaceName = pDatasetName.WorkspaceName; directory = pWorkspaceName.PathName; //文件目录 fileName = inFeatureLayer.Name; //文件名 } if (fileName == null || directory == null) { return(null); } return(directory + @"\" + fileName + ".shp"); }
private void LoopCloseAllLayer(ILayer layer) { if (layer is ICompositeLayer) { ICompositeLayer cplayer = layer as ICompositeLayer; for (int j = cplayer.Count - 1; j >= 0; j--) { LoopCloseAllLayer(cplayer.get_Layer(j)); } } if (layer is IDataLayer2) { IDataLayer2 pDataLayer = (IDataLayer2)layer; pDataLayer.Disconnect(); } if (layer is IFeatureLayer) { IFeatureClass fc = (layer as IFeatureLayer).FeatureClass; TokayWorkspace.ComRelease(fc); fc = null; } this.Map.DeleteLayer(layer); }
/// <summary> /// Called when the user clicks a command. /// </summary> /// <remarks>Note to inheritors: override OnClick and use this method to /// perform the actual work of the custom command.</remarks> public override void OnClick() { try { ILayer currentLayer = CommandAPI.GetCurrentLayer(this.m_hookHelper); if (currentLayer != null) { if (!(currentLayer is MapServerRESTLayer)) { IDataLayer2 pDataLayer = currentLayer as IDataLayer2; pDataLayer.Disconnect(); } this.m_hookHelper.ActiveView.FocusMap.DeleteLayer(currentLayer); (this.m_hookHelper.ActiveView.FocusMap as IActiveView).Refresh(); GFS.BLL.EnviVars.instance.TOCControl.Update(); } } catch (Exception ex) { //logger.Log(LogLevel.Error, EventType.UserManagement, AppMessage.MSG0104, ex); GFS.BLL.Log.WriteLog(typeof(CmdRemoveLayer), ex); } }
private void loadSourceTab() { //Extent IEnvelope pEnvelope = ((IGeoDataset)((IFeatureLayer)pLayer).FeatureClass).Extent; this.txtExtentTop.Text = pEnvelope.YMax.ToString(); this.txtExtentButtom.Text = pEnvelope.YMin.ToString(); this.txtExtentLeft.Text = pEnvelope.XMin.ToString(); this.txtExtentRight.Text = pEnvelope.XMax.ToString(); //DataSource StringBuilder strDataSource = new StringBuilder(); strDataSource.Append("DataType:"); IFeatureLayer pFeatureLayer = (IFeatureLayer)this.pLayer; strDataSource.Append(pFeatureLayer.DataSourceType); IDataLayer2 pDataLayer2 = (IDataLayer2)this.pLayer; strDataSource.Append(":\n"); strDataSource.Append(pDataLayer2.DataSourceName.NameString); IGeoDataset pGeoDataset = (IGeoDataset)this.pLayer; ISpatialReference pSpatialReference = pGeoDataset.SpatialReference; IProjectedCoordinateSystem5 pProCoorSys = pSpatialReference as IProjectedCoordinateSystem5; if (pProCoorSys != null) { strDataSource.Append("\nProjected Corrdinate System:"); strDataSource.Append(pProCoorSys.Name); strDataSource.Append("\nProjection:"); strDataSource.Append(pProCoorSys.Projection.Name); strDataSource.Append("\nFalse_Easting:"); strDataSource.Append(pProCoorSys.FalseEasting); //strDataSource.AppendFormat("F8", pProCoorSys.FalseEasting); strDataSource.Append("\nFalse_Northing:"); strDataSource.Append(pProCoorSys.FalseNorthing); strDataSource.Append("\nCentral_Meridian:"); strDataSource.Append(pProCoorSys.get_CentralMeridian(true)); strDataSource.Append("\nStandard)Parallel_1:"); strDataSource.Append(pProCoorSys.StandardParallel1); strDataSource.Append("\nStandard_Parallel_2:"); strDataSource.Append(pProCoorSys.StandardParallel2); strDataSource.Append("\nLatitude_Of_Origin:"); strDataSource.Append(pProCoorSys.LatitudeOfOrigin); strDataSource.Append("\nLinear_Unit:"); strDataSource.Append(pProCoorSys.CoordinateUnit.Name); strDataSource.Append("\n"); } //IGeographicCoordinateSystem pGeoCoorSys = pProCoorSys.GeographicCoordinateSystem; IGeographicCoordinateSystem pGeoCoorSys = pSpatialReference as IGeographicCoordinateSystem; if (pGeoCoorSys != null) { strDataSource.Append("\nGeographic Coordinate System:"); strDataSource.Append(pGeoCoorSys.Name); strDataSource.Append("\nDatum:"); strDataSource.Append(pGeoCoorSys.Datum.Name); strDataSource.Append("\nPrime_Meridian:"); strDataSource.Append(pGeoCoorSys.PrimeMeridian.Longitude); strDataSource.Append("\nAangular_Unit:"); strDataSource.Append(pGeoCoorSys.CoordinateUnit.Name); } this.txtDataSource.Text = strDataSource.ToString(); }
/// <summary> /// 重置图层数据源 /// </summary> /// <param name="pLayer"></param> /// <param name="pNewWksp"></param> /// <returns></returns> public static bool ResetLayerDatasource(IDataLayer2 pLayer, IWorkspace pNewWksp) { if (pLayer == null || pNewWksp == null) return false; //// 2012-06-15 张航宇 //// 直接获取Layer的数据源名称,从新的Workspace打开FeatureClass进行替换 //IDatasetName fClassName = pLayer.DataSourceName as IDatasetName; //if (fClassName != null) //{ // string strClassName = fClassName.Name; // try // { // IFeatureClass fClass = (pNewWksp as IFeatureWorkspace).OpenFeatureClass(strClassName); // pLayer.DataSourceName = (fClass as IDataset).FullName; // } // catch // { // return false; // } //} IEnumDatasetName pEnumDsName = pNewWksp.get_DatasetNames(esriDatasetType.esriDTFeatureDataset); IDatasetName pFtDsName = pEnumDsName.Next(); try { if (!pLayer.InWorkspace(pNewWksp)) { IFeatureClassName pOldName = pLayer.DataSourceName as IFeatureClassName; // 2012-06-15 张航宇 // 修改对没有Dataset的Workspace,直接将Workspace重置 if (pOldName != null) { if (pOldName.FeatureDatasetName == null || pFtDsName == null) { (pOldName as IDatasetName).WorkspaceName = (pNewWksp as IDataset).FullName as IWorkspaceName; } else { pOldName.FeatureDatasetName = pFtDsName; pOldName.FeatureDatasetName.WorkspaceName = ((IDataset)pNewWksp).FullName as IWorkspaceName; } } pLayer.Connect(pOldName as IName); } } catch (Exception exp) { Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString()); return false; } return true; }
/// <summary> /// 重置图层数据源 /// </summary> /// <param name="pLayer"></param> /// <param name="pNewWksp"></param> /// <returns></returns> public static bool ResetLayerDatasource2(IDataLayer2 pLayer, IWorkspace pNewWksp) { if (pLayer == null || pNewWksp == null) return false; IEnumDataset pEnumDsName = pNewWksp.get_Datasets(esriDatasetType.esriDTFeatureDataset); IDataset pFtDsName = pEnumDsName.Next(); IEnumDataset pEnumDs = pFtDsName.Subsets; try { if (!pLayer.InWorkspace(pNewWksp)) { IFeatureClassName pOldName = pLayer.DataSourceName as IFeatureClassName; if (pOldName != null) { IDatasetName dsName = pOldName as IDatasetName; IDataset pDs = null; while ((pDs = pEnumDs.Next()) != null) { if (dsName.Name.Equals(pDs.Name, StringComparison.OrdinalIgnoreCase) || pDs.Name.Contains(dsName.Name.ToUpper())) { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; if (pFeatureLayer == null) return true; pFeatureLayer.FeatureClass = pDs as IFeatureClass; return true; } } } } } catch (Exception exp) { Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString()); return false; } return true; }
private void btnOK_Click(object sender, EventArgs e) { /*FileInfo openpath = new FileInfo(textBox1.Text); * string ss = openpath.Directory.ToString();//路径的父目录 * * ILayer pLayer; * pLayer = m_mapControl.Map.get_Layer(comboBox1.SelectedIndex); * IFeatureLayer pInputFeatureLayer; * pInputFeatureLayer = pLayer as IFeatureLayer; * IFeatureClass pInputFeatureClass = pInputFeatureLayer.FeatureClass; * * * ITable pInputTable; * pInputTable = pInputFeatureClass as ITable; * * * pInputFeatureClass = pInputFeatureLayer.FeatureClass; * * pLayer = m_mapControl.Map.get_Layer(comboBox2.SelectedIndex); * IFeatureLayer pOverlayFeatureLayer; * pOverlayFeatureLayer = pLayer as IFeatureLayer; * IFeatureClass pOverlayFeatureClass; * pOverlayFeatureClass = pOverlayFeatureLayer.FeatureClass; * * ITable pOverlayTable; * pOverlayTable = pOverlayFeatureClass as ITable; * * * //IFeatureClass pOverlayFeatureClass; * //pOverlayFeatureClass = pOverlayFeatureLayer.FeatureClass; * * if (pInputTable == null) * { * MessageBox.Show("输入图层为空"); * return; * } * * if (pOverlayTable == null) * { * MessageBox.Show("叠置图层为空"); * return; * } * * IFeatureClassName pFeatureClassName; * pFeatureClassName = new FeatureClassNameClass(); * pFeatureClassName.FeatureType = esriFeatureType.esriFTSimple; * pFeatureClassName.ShapeFieldName = "Shape"; * pFeatureClassName.ShapeType = pInputFeatureClass.ShapeType; * * IWorkspaceName pNewWSName; * pNewWSName = new WorkspaceNameClass(); * pNewWSName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"; * pNewWSName.PathName = ss; * * IDatasetName pDatasetName; * pDatasetName = pFeatureClassName as IDatasetName; * pDatasetName.Name = openpath.Name; //"Intersect_Result"; * pDatasetName.WorkspaceName = pNewWSName; * * double tol = 0.1; * * IBasicGeoprocessor pBGP; * pBGP = new BasicGeoprocessorClass(); * pBGP.SpatialReference = m_mapControl.Map.SpatialReference; * IFeatureClass pOutputFeatureClass; * IFeatureLayer pOutputFeatLayer; * pOutputFeatLayer = new FeatureLayerClass(); * int n = listBox1.SelectedIndex; * * if (n>= 0 && n< 3) * { * switch (n) * { * case(0): * pOutputFeatureClass = pBGP.Intersect(pInputTable, false, pOverlayTable, false, tol, pFeatureClassName); * pOutputFeatLayer.FeatureClass = pOutputFeatureClass; * pOutputFeatLayer.Name = pOutputFeatureClass.AliasName; * m_mapControl.Map.AddLayer(pOutputFeatLayer); * break; * case(1): * pOutputFeatureClass = pBGP.Union(pInputTable, false, pOverlayTable, false, tol, pFeatureClassName); * pOutputFeatLayer.FeatureClass = pOutputFeatureClass; * pOutputFeatLayer.Name = pOutputFeatureClass.AliasName; * m_mapControl.Map.AddLayer(pOutputFeatLayer); * break; * case(2): * pOutputFeatureClass = pBGP.Clip(pInputTable, false, pOverlayTable, false, tol, pFeatureClassName); * pOutputFeatLayer.FeatureClass = pOutputFeatureClass; * pOutputFeatLayer.Name = pOutputFeatureClass.AliasName; * m_mapControl.Map.AddLayer(pOutputFeatLayer); * break; * } * }*/ //Geoprocessor processor = new Geoprocessor(); IFeatureLayer inputLyr = m_mapControl.Map.get_Layer(comboBox1.SelectedIndex) as IFeatureLayer; IDataLayer2 dataLy = inputLyr as IDataLayer2; IDatasetName inputdsName = dataLy.DataSourceName as IDatasetName; IWorkspaceName inputws = inputdsName.WorkspaceName as IWorkspaceName; string input = inputws.PathName + "\\" + inputLyr.Name; IFeatureLayer overlayLyr = m_mapControl.Map.get_Layer(comboBox2.SelectedIndex) as IFeatureLayer; IDataLayer2 dataOverlay = overlayLyr as IDataLayer2; IDatasetName overlayDsName = dataOverlay.DataSourceName as IDatasetName; IWorkspaceName overlayWs = overlayDsName.WorkspaceName; string overlay = overlayWs.PathName + "\\" + overlayLyr.Name; string output = textBox1.Text; Geoprocessor processor = new Geoprocessor(); processor.OverwriteOutput = true; IGPProcess process = null; switch (listBox1.SelectedIndex) { case 0: Intersect intersect = new Intersect(); intersect.in_features = "'" + input + "'" + ";" + "'" + overlay + "'"; intersect.out_feature_class = output; intersect.output_type = "INPUT"; intersect.join_attributes = "ALL"; //intersect.cluster_tolerance=0.1; process = intersect; break; case 1: Union union = new Union(); union.in_features = "'" + input + "'" + ";" + "'" + overlay + "'"; union.out_feature_class = @"" + output; union.join_attributes = "ALL"; //union.cluster_tolerance = 0.1; process = union; break; case 2: Erase erase = new Erase(); erase.in_features = "'" + input + "'"; erase.erase_features = "'" + overlay + "'"; erase.out_feature_class = output; //erase.cluster_tolerance = 0.1; process = erase; break; } processor.Validate(process, true); processor.Execute(process, null); this.Dispose(); FileInfo fi = new FileInfo(textBox1.Text); string pathDir = fi.Directory.FullName; string name = fi.Name; IWorkspaceFactory wsf = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace fws = wsf.OpenFromFile(pathDir, 0) as IFeatureWorkspace; IFeatureClass featCls = fws.OpenFeatureClass(name); IFeatureLayer layer = new FeatureLayerClass(); layer.FeatureClass = featCls; layer.Name = featCls.AliasName; m_mapControl.Map.AddLayer(layer as ILayer); }
public static bool SwitchSource(IDataLayer2 pDataLayer, IPropertySet pSDEConnectionProps, string newDatasetName) { bool retVal = false; try { IDatasetName pDatasetName; IWorkspaceName pWorkspaceName = new WorkspaceNameClass(); pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory"; pWorkspaceName.ConnectionProperties = pSDEConnectionProps; pDatasetName = (IDatasetName)pDataLayer.DataSourceName; pDatasetName.WorkspaceName = pWorkspaceName; pDatasetName.Name = newDatasetName; //e.g. //ISDUT.TA_XXXX; pDataLayer.Disconnect(); pDataLayer.DataSourceName = (IName)pDatasetName; pDataLayer.Connect(null); retVal = true; } catch(Exception ex) { Debug.WriteLine(ex.Message + "\n" + ex.StackTrace); } return retVal; }