//清除选中图层 private void btnClearAll_Click(object sender, EventArgs e) { if (cbLayerName.SelectedItem == null) { MessageBox.Show("请选择要清除的图层!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //获取选中的图层信息 string layerName = cbLayerName.SelectedItem.ToString(); //获得临时库图层数据 string ProName = cbProName.SelectedItem.ToString(); XmlDocument xmlPro = new XmlDocument(); xmlPro.Load(ModData.v_projectDetalXML); XmlElement pTempConElement = xmlPro.SelectSingleNode("//工程[@名称='" + ProName + "']//内容//临时库//连接信息") as XmlElement; IWorkspace LTempWorkspace = ModDBOperator.GetDBInfoByXMLNode(pTempConElement, "") as IWorkspace; string TempDatasetName = xmlPro.SelectSingleNode("//工程[@名称='" + ProName + "']//内容//临时库//数据集").Attributes["名称"].Value.ToString(); List <IFeatureClass> listTempFeatureClass = clsLogicCheck.GetFeatureClass(LTempWorkspace, TempDatasetName); IFeatureClass pTempFeatureClass = GetFeatureClassByName(listTempFeatureClass, layerName); Exception errorMsg = null; clsInputTempDate.DeleteFeatureClass(pTempFeatureClass, "", layerName, out errorMsg); if (errorMsg != null) { MessageBox.Show("清除临时库图层失败!" + errorMsg.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { MessageBox.Show("成功清除临时库图层:" + layerName, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
//双击则创建该线,并弹出缓冲窗体 public override void OnDblClick() { //获取折线 并获取当前视图的屏幕显示 if (m_pNewLineFeedback == null) { return; } IPolyline pPolyline = m_pNewLineFeedback.Stop(); m_pNewLineFeedback = null; pPolyline.Project(m_MapControl.Map.SpatialReference); frmBufferSet pFrmBufSet = new frmBufferSet(pPolyline as IGeometry, m_MapControl.Map); IGeometry pGeometry = pFrmBufSet.GetBufferGeometry(); if (pGeometry == null || pFrmBufSet.Res == false) { return; } //================================================================================================== //执行查询数据操作 ModDBOperator.QueryDataByGeometry(pGeometry, m_hook); }
//主检查函数,针对临时库检查 ygc 2013-01-24 public static Dictionary <IFeatureClass, Dictionary <string, int> > GetLogicCheck(out Exception ex) { //获取工程配置文件 ex = null; Dictionary <IFeatureClass, Dictionary <string, int> > newdic = new Dictionary <IFeatureClass, Dictionary <string, int> >(); XmlDocument xmlPro = new XmlDocument(); xmlPro.Load(ModData.v_projectDetalXML); XmlNodeList xmlProList = xmlPro.SelectNodes("//工程"); for (int t = 0; t < xmlProList.Count; t++) { XmlElement xmlproCon = xmlProList[t].SelectSingleNode("//工程[@名称='" + xmlProList[t].Attributes["名称"].Value.ToString() + "']//内容//临时库//连接信息") as XmlElement; IWorkspace pWorkspace = ModDBOperator.GetDBInfoByXMLNode(xmlproCon, "") as IWorkspace; string DatasetName = xmlProList[t].SelectSingleNode("//工程[@名称='" + xmlProList[t].Attributes["名称"].Value.ToString() + "']//内容//临时库//数据集").Attributes["名称"].Value.ToString(); List <IFeatureClass> listfeatureClass = GetFeatureClass(pWorkspace, DatasetName); Dictionary <string, string> dicCondition = GetCheckCondition(); for (int i = 0; i < listfeatureClass.Count; i++) { Dictionary <string, int> dicCheckResult = CheckFeautreClass(listfeatureClass[i], dicCondition, out ex); newdic.Add(listfeatureClass[i], dicCheckResult); } } return(newdic); }
private void ShowFalshFeature(int iColumnIndex, int iRowIndex, string strLayerCoum) { if (iRowIndex == -1) { return; } int iOID = Convert.ToInt32(DataGridErrs.Rows[iRowIndex].Cells[iColumnIndex].Value); string strLayer = DataGridErrs.Rows[iRowIndex].Cells[strLayerCoum].Value.ToString(); ILayer pLayer = ModDBOperator.GetLayer(_MapControl, strLayer); double d_mapx = -1; double d_mapy = -1; string errFeaGepStr = string.Empty; try { d_mapx = Convert.ToDouble(DataGridErrs.CurrentRow.Cells["定位点X"].FormattedValue.ToString()); d_mapy = Convert.ToDouble(DataGridErrs.CurrentRow.Cells["定位点Y"].FormattedValue.ToString()); } catch { d_mapx = 0; d_mapy = 0; } try { errFeaGepStr = DataGridErrs.CurrentRow.Cells["错误几何形状"].FormattedValue.ToString(); } catch { errFeaGepStr = string.Empty; } if (iOID != -1) { if (pLayer != null && pLayer is IFeatureLayer) { IFeatureClass pFeatureClass = (pLayer as IFeatureLayer).FeatureClass; if (pFeatureClass == null) { return; } try { IFeature pFeature = pFeatureClass.GetFeature(iOID); //ModOperator.FlashFeature(pFeature, m_hookHelper.ActiveView); //IHookActions pHookActions = m_hookHelper as IHookActions; //pHookActions.DoAction(pFeature.Shape, esriHookActions.esriHookActionsPan); //Application.DoEvents(); //pHookActions.DoAction(pFeature.Shape, esriHookActions.esriHookActionsFlash); _MapControl.Map.ClearSelection(); _MapControl.Map.SelectFeature(pLayer, pFeature); ShowErrorGeo(d_mapx, d_mapy, errFeaGepStr); _MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, _MapControl.ActiveView.Extent); //Application.DoEvents(); //pHookActions.DoAction(pFeature.Shape, esriHookActions.esriHookActionsCallout); } catch { return; } } } }
/// <summary> /// 导出一条记录 /// </summary> /// <param name="dataID">数据ID</param> /// <param name="insertStr">插入字符串</param> /// <param name="orgTable">源表格</param> /// <param name="desSysTable">目标表格</param> /// <param name="path">存储路径</param> /// <param name="eError"></param> private void OutPutOneRacord(long dataID, string insertStr, DataTable orgTable, SysCommon.DataBase.SysTable desSysTable, string path, out Exception eError) { eError = null; string insertallStr = insertStr; string pointName = "";//控制点名 DataRow[] drs = orgTable.Select("ID =" + dataID); if (drs.Length == 0) { eError = new Exception("未找到ID为:'" + dataID + "'的记录"); return; } DataRow dr = drs[0]; for (int i = 5; i < dr.Table.Columns.Count - 1; i++) { Type columType = dr.Table.Columns[i].DataType; string columValue = dr[i].ToString(); string str = ModDBOperator.GetSQlEX(columType, columValue); insertallStr += str + ","; } insertallStr = insertallStr.Substring(0, insertallStr.Length - 1) + ")"; //导出元数据 desSysTable.UpdateTable(insertallStr, out eError); if (eError != null) { return; } //创建数据文件 pointName = dr[5].ToString(); string pDataName = path + "\\" + pointName + ".dwg"; //数据文件名 if (File.Exists(pDataName)) { if (SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "已存在同名文件,是否替换?")) { File.Delete(pDataName); } else { return; } } if (dr[dr.Table.Columns.Count - 1].ToString() != "") { byte[] picByte = dr[dr.Table.Columns.Count - 1] as byte[]; if (picByte.Length > 0) { FileStream pFStream = new FileStream(pDataName, FileMode.CreateNew, FileAccess.Write); pFStream.Write(picByte, 0, picByte.Length); MemoryStream meStream = new MemoryStream(picByte, true); meStream.Write(picByte, 0, picByte.Length); } } }
private bool CreateMdbDatabase() { IWorkspace pWks = ModDBOperator.CreatePDBWorkSpace(_MdbPath, _MdbName); if (pWks != null) { return(true); } return(false); }
/// <summary> /// 将要素类添加到拓扑中,针对针对特殊的要素类检查 /// </summary> /// <param name="pTopo">拓扑</param> /// <param name="pFeatureDataset">数据集</param> /// <param name="pFeaClsName">图层名</param> /// <param name="outError">异常</param> public void AddClasstoTopology(ITopology pTopo, IFeatureDataset pFeatureDataset, string pFeaClsName, out Exception outError) { outError = null; try { ITopologyRuleContainer pTopoRulrContainer = pTopo as ITopologyRuleContainer; List <IDataset> LstDataSet = ModDBOperator.GetAllFeaCls(pFeatureDataset); bool b = false; //遍历要素类,将符合条件的要素类添加到拓扑中 foreach (IDataset pDt in LstDataSet) { IFeatureClass pFeaCls = pDt as IFeatureClass; if (pFeaCls == null) { continue; } if (pFeaCls.FeatureType != esriFeatureType.esriFTSimple) { continue; } string pFeaName = pDt.Name.Trim(); if (pFeaName.Contains(".")) { pFeaName = pFeaName.Substring(pFeaName.IndexOf('.') + 1); } if (pFeaName == pFeaClsName) { pTopo.AddClass(pFeaCls as IClass, 5, 1, 1, false); b = true; break; } } if (b == false) { outError = new Exception("要进行检查的要素类不存在!"); ////********************************************* ////guozheng 2010-12-24 平安夜 added 系统异常日志 //if (ModData.SysLog == null) ModData.SysLog = new clsWriteSystemFunctionLog(); //ModData.SysLog.Write(outError); ////********************************************** return; } } catch (Exception ex) { ////********************************************* ////guozheng 2010-12-24 平安夜 added 系统异常日志 //if (ModData.SysLog == null) ModData.SysLog = new clsWriteSystemFunctionLog(); //ModData.SysLog.Write(ex); ////********************************************** outError = ex; } }
private void advTree_NodeClick(object sender, DevComponents.AdvTree.TreeNodeMouseEventArgs e) { try { IFeature pfeature = advTree.SelectedNode.Tag as IFeature; if (pfeature != null) { m_dataSourceGrid.Clear(); for (int i = 0; i < pfeature.Fields.FieldCount; i++) { if (pfeature.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeGeometry) { string strGeometryType = ""; if (pfeature.FeatureType == esriFeatureType.esriFTSimple) { switch (pfeature.Shape.GeometryType) { case esriGeometryType.esriGeometryPoint: strGeometryType = "点"; break; case esriGeometryType.esriGeometryPolyline: strGeometryType = "线"; break; case esriGeometryType.esriGeometryPolygon: strGeometryType = "多边形"; break; } } else if (pfeature.FeatureType == esriFeatureType.esriFTAnnotation) { strGeometryType = "注记"; } if (string.IsNullOrEmpty(strGeometryType)) { strGeometryType = pfeature.Shape.GeometryType.ToString(); } m_dataSourceGrid.Rows.Add(new object[] { pfeature.Fields.get_Field(i).AliasName, strGeometryType }); } else { m_dataSourceGrid.Rows.Add(new object[] { pfeature.Fields.get_Field(i).AliasName, pfeature.get_Value(i) }); } } ModDBOperator.FlashFeature(pfeature, m_pMapControl); } } catch { } }
public override void OnClick() { #region 获取系统维护库连接信息,并将工作空间保存起来 if (ModData.TempWks == null) { bool blnCanConnect = false; SysCommon.Gis.SysGisDB vgisDb = new SysCommon.Gis.SysGisDB(); if (File.Exists(ModData.v_ConfigPath)) { //获得系统维护库连接信息 SysCommon.Authorize.AuthorizeClass.GetConnectInfo(ModData.v_ConfigPath, out ModData.Server, out ModData.Instance, out ModData.Database, out ModData.User, out ModData.Password, out ModData.Version, out ModData.dbType); //连接系统维护库 blnCanConnect = ModDBOperator.CanOpenConnect(vgisDb, ModData.dbType, ModData.Server, ModData.Instance, ModData.Database, ModData.User, ModData.Password, ModData.Version); } else { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "缺失系统维护库连接信息文件:" + ModData.v_ConfigPath + "/n请重新配置"); return; } if (!blnCanConnect) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "系统能够维护库连接失败,请检查!"); return; } ModData.TempWks = vgisDb.WorkSpace; } if (ModData.TempWks == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取系统维护库工作空间失败,请检查!"); return; } #endregion //获得数据库工程ID //long proID = 0; //工程项目ID //string proIDStr = m_Hook.ProjectTree.SelectedNode.Name; //工程项目ID字符串 //try { proID = Convert.ToInt64(proIDStr); } //catch //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据源ID失败!"); // return; //} //进行初始化设置 FrmInitiaRasterCatalog pFrmInitiaRasterCatalog = new FrmInitiaRasterCatalog(ModData.TempWks, m_Hook, EnumRasterOperateType.Update); if (pFrmInitiaRasterCatalog.m_pRootPathfst != "") { pFrmInitiaRasterCatalog.ShowDialog(); } }
private void advTree_NodeDoubleClick(object sender, DevComponents.AdvTree.TreeNodeMouseEventArgs e) { try { IFeature pfeature = advTree.SelectedNode.Tag as IFeature; if (pfeature != null) { SysCommon.Gis.ModGisPub.ZoomToFeature(m_pMapControl, pfeature); Application.DoEvents(); ModDBOperator.FlashFeature(pfeature, m_pMapControl); //m_pMapControl.FlashShape(pfeature.Shape, 2, 500, null); } } catch { } }
/// <summary> /// 初始化数据库连接 /// </summary> private void InitialDB(out Exception err) { err = null; //cyf 20110625 modify List <IDataset> lstDataset = new List <IDataset>(); XmlDocument xml = new XmlDocument(); if (!File.Exists(ModData.v_projectDetalXML)) { err = new Exception(ModData.v_projectDetalXML + "不存在"); return; } xml.Load(ModData.v_projectDetalXML); XmlElement elementTemp = xml.SelectSingleNode("//现势库/连接信息[@类型!='']") as XmlElement;//取得矢量数据 //end IWorkspace TempWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; if (TempWorkSpace == null) { err = new Exception("连接数据库失败!"); return; } XmlElement elementTemp2 = xml.SelectSingleNode("//现势库/数据集[@名称!='']") as XmlElement; string datasetname = elementTemp2.GetAttribute("名称"); SysCommon.Gis.SysGisDataSet sysGisDataset = new SysCommon.Gis.SysGisDataSet(TempWorkSpace); //cyf 20110625 modify: IFeatureDataset dataset = sysGisDataset.GetFeatureDataset(datasetname, out err); //end if (err != null) { err = new Exception("获取数据失败!"); return; } lstDataset = sysGisDataset.GetFeatureClass(dataset); if (lstDataset == null || lstDataset.Count == 0) { err = new Exception("库体要素类为空!"); } m_LstDataset = lstDataset; }
private void Ok_btn_Click(object sender, EventArgs e) { Exception eError = null; this._ID = this.ID_tex.Text; this._IP = this.IP_tex.Text; this._Password = this.Password_tex.Text; if (this.IP_tex.Text == "" || this.ID_tex.Text == "" || this.Password_tex.Text == "" || txtDB.Text == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接信息填写不完整!"); return; } ModDBOperator.ConnectDB(txtDB.Text.Trim(), this.IP_tex.Text, this.ID_tex.Text, this.Password_tex.Text, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", eError.Message); } this.Close(); }
public override void OnMouseDown(int Button, int Shift, int X, int Y) { if (Button != 1) { return; } ESRI.ArcGIS.Geometry.IPoint pPoint = m_MapControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); frmBufferSet pFrmBufSet = new frmBufferSet(pPoint as IGeometry, m_MapControl.Map); IGeometry pGeometry = pFrmBufSet.GetBufferGeometry(); if (pGeometry == null || pFrmBufSet.Res == false) { return; } //================================================================================================== //执行查询数据操作 ModDBOperator.QueryDataByGeometry(pGeometry, m_hook); }
//默认选择第一个要素节点 并进行闪烁 private void DefaultSelNde() { Application.DoEvents(); for (int i = 0; i < this.advTree.Nodes.Count; i++) { if (!this.advTree.Nodes[i].HasChildNodes) { continue; } IFeature pFea = this.advTree.Nodes[i].Nodes[0].Tag as IFeature; if (pFea != null) { this.advTree.Nodes[i].IsSelectionVisible = true; ModDBOperator.FlashFeature(pFea.Shape, m_pMapControl.ActiveView, 100); break; } } }
private void initControls() { // LoadMap(); MapMain = ucHistoryMap1.AxMapCtrlHis; ucHistoryMap1.AxMapCtrlHis.Extent = MainMapExtent; ucHistoryMap1.AxMapCtrlHis.Map.Name = "地图1"; IMapControlDefault pMCD = MapMain.Object as IMapControlDefault; IFeatureLayer pFeatureLayer = ModDBOperator.GetMapFrameLayer("zone", pMCD, "示意图") as IFeatureLayer; ModHistory.SetMapLyrsDefinitionOfHPoint(DateTime.Now.ToString("yyyy-MM-dd"), ucHistoryMap1.AxMapCtrlHis); ucHistoryMap1.AxMapCtrlHis.Refresh(); IObjectCopy pOC = new ObjectCopyClass(); ucHistoryMap2.AxMapCtrlHis.Map = pOC.Copy(ucHistoryMap1.AxMapCtrlHis.Map) as IMap; ucHistoryMap2.AxMapCtrlHis.Map.Name = "地图2"; ModHistory.SetMapLyrsDefinitionOfHPoint(DateTime.Now.ToString("yyyy-MM-dd"), ucHistoryMap2.AxMapCtrlHis); ucHistoryMap2.AxMapCtrlHis.Refresh(); MapMain = ucHistoryMap1.AxMapCtrlHis; m_pMainXucHis = ucHistoryMap1; setAxMapControl(); splitContainer1.Refresh(); }
//双击则创建该线,并弹出缓冲窗体 public override void OnDblClick() { //获取折线 并获取当前视图的屏幕显示 if (m_pNewPolygonFeedback == null) { return; } IPolygon pPolygon = m_pNewPolygonFeedback.Stop(); m_pNewPolygonFeedback = null; //不存在,为空。尺寸不够均退出 if (pPolygon == null || pPolygon.IsEmpty) { return; } if (pPolygon.Envelope.Width < 0.01 || pPolygon.Envelope.Height < 0.01) { return; } //创建Topo对象,简化后统一空间参考 ITopologicalOperator pTopo = (ITopologicalOperator)pPolygon; pTopo.Simplify(); pPolygon.Project(m_MapControl.Map.SpatialReference); frmBufferSet pFrmBufSet = new frmBufferSet(pPolygon as IGeometry, m_MapControl.Map); IGeometry pGeometry = pFrmBufSet.GetBufferGeometry(); if (pGeometry == null || pFrmBufSet.Res == false) { return; } //================================================================================================== //执行查询数据操作 ModDBOperator.QueryDataByGeometry(pGeometry, m_hook); }
public override void OnClick() { SysCommon.Error.frmInformation eerorFrm = new SysCommon.Error.frmInformation("是", "否", "删除产品将删除产品下的所有数据文件,确定吗?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } //执行删除产品操作 Exception ex = null; ModDBOperator.DelProduct(m_Hook.ProjectTree.SelectedNode, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示!", ex.Message); return; } else { m_Hook.ProjectTree.SelectedNode.Remove(); m_Hook.DataInfoGrid.DataSource = null; } }
public override void OnClick() { SysCommon.Error.frmInformation eerorFrm = new SysCommon.Error.frmInformation("是", "否", "删除数据将无法恢复,确定吗?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } //执行成果数据删除操作(在列表中选中要删除的数据项,进行删除) Exception ex = null; #region 获取连接信息 DevComponents.AdvTree.Node mDBNode = m_Hook.ProjectTree.SelectedNode; DevComponents.AdvTree.Node Deltreenode = null; string ipStr = ""; string ip = ""; string id = ""; string password = ""; string ConnStr = ""; int datatype = -1; SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); //属性库连接类 while (mDBNode.Parent != null) { mDBNode = mDBNode.Parent; } if (mDBNode.Name == "文件连接") { Deltreenode = mDBNode; System.Xml.XmlElement dbElem = mDBNode.Tag as System.Xml.XmlElement; if (dbElem == null) { return; } ipStr = dbElem.GetAttribute("MetaDBConn"); ip = dbElem.GetAttribute("服务器"); id = dbElem.GetAttribute("用户"); password = dbElem.GetAttribute("密码"); //ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ipStr + ";Persist Security Info=True";//元数据连接字符串 ConnStr = ipStr; pSysDB.SetDbConnection(ConnStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out ex); } else { return; } #endregion if (EnumTreeNodeType.DATAITEM.ToString() == m_Hook.ProjectTree.SelectedNode.DataKey.ToString()) { #region 在树节点上选择要删除的数据 if (m_Hook.ProjectTree.SelectedNode.Tag == null) { return; } if (m_Hook.ProjectTree.SelectedNode.Tag.ToString() == "") { return; } long dataID = int.Parse(m_Hook.ProjectTree.SelectedNode.Tag.ToString());//数据 string DataType = m_Hook.ProjectTree.SelectedNode.Parent.Tag.ToString();; try { datatype = Convert.ToInt32(DataType); } catch { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示!", "获取数据类型失败!"); return; } if (2 != datatype)////数据类型不为控制点控制点数据 { string FilePath = m_Hook.ProjectTree.SelectedNode.Name; string FileName = m_Hook.ProjectTree.SelectedNode.Text.Trim(); bool Delstate = ModDBOperator.DelDataItem(FilePath, FileName, ip, id, password, out ex); if (!Delstate) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "文件库中删除文件:" + FilePath + "/" + FileName + "失败!" + "\n请确认文件是否存在或是否为占用状态!"); return; } m_Hook.ProjectTree.SelectedNode.Remove(); ModDBOperator.DelDataItem(dataID, datatype, pSysDB, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "元信息数据库中删除数据文件记录失败!"); return; } } else/////数据类型为控制点数据 { ModDBOperator.DelDataItem(dataID, datatype, pSysDB, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "元信息数据库中删除数据文件记录失败!"); return; } m_Hook.ProjectTree.SelectedNode.Remove(); } #endregion } else if (m_Hook.DataInfoGrid.Rows.Count > 0) { #region 其他所有节点 DevComponents.AdvTree.Node Selnode = m_Hook.ProjectTree.SelectedNode; if (null == Selnode.DataKey) { return; } string ID = ""; long lid = -1; string FileName = ""; string FilePath = ""; string type = ""; FrmProcessBar frmbar = new FrmProcessBar(); frmbar.SetFrmProcessBarText("删除操作:"); frmbar.Show(); List <int> delrowlist = new List <int>(); if (EnumTreeNodeType.PRODUCTPYPE.ToString() == Selnode.DataKey.ToString()) { #region 中的是产品类型节点(标准、非标准、控制点数据) type = Selnode.Text; switch (type) { case "标准图幅": datatype = 0; break; case "非标准图幅": datatype = 1; break; case "控制点数据": datatype = 2; break; default: datatype = -1; break; } if (datatype == -1) { return; } frmbar.SetFrmProcessBarMax((long)m_Hook.DataInfoGrid.Rows.Count); for (int i = 0; i < m_Hook.DataInfoGrid.Rows.Count; i++) { frmbar.SetFrmProcessBarValue((long)i); Application.DoEvents(); if (false == m_Hook.DataInfoGrid.Rows[i].Selected) { continue; } try { ID = m_Hook.DataInfoGrid.Rows[i].Cells["ID"].FormattedValue.ToString().Trim(); if (string.IsNullOrEmpty(ID)) { continue; } lid = Convert.ToInt64(ID); FileName = m_Hook.DataInfoGrid.Rows[i].Cells["数据文件名"].FormattedValue.ToString().Trim(); FilePath = m_Hook.DataInfoGrid.Rows[i].Cells["存储位置"].FormattedValue.ToString().Trim(); } catch { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件:" + FileName + "删除失败,是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } #region 在文件库中删除数据文件 //////////////////在文件库中删除数据文件//////////////////////////////// frmbar.SetFrmProcessBarText("正在删除文件:" + FileName); Application.DoEvents(); if (2 != datatype)////数据类型为控制点控制点数据不执行文件的删除操作 { bool Delstate = ModDBOperator.DelDataItem(FilePath, FileName, ip, id, password, out ex); if (!Delstate) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + FilePath + "/" + FileName + "'\n删除失败。\n" + "请确认文件是否存在或是否为占用状态" + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } } #endregion #region 在元数据表中删除成果信息 ///////////////////在元数据表中删除成果信息///////////////////////// ModDBOperator.DelDataItem(lid, datatype, pSysDB, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + FileName + "'\n元信息删除失败。\n" + "请确认元信息库的连接信息。" + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } // m_Hook.DataInfoGrid.Rows.Remove(m_Hook.DataInfoGrid.Rows[i]); // i = i - 1; delrowlist.Add(i); #endregion #region 在树节点中删除文件节点 /////////////////////在树节点中删除文件节点/////////////////////////// ModDBOperator.DelNodeByNameAndText(Deltreenode, FilePath, FileName, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "树节点删除失败。原因为:\n" + ex.Message + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { frmbar.Close(); return; } //else // return; } #endregion } #endregion } else //除产品类型节点以外的所有节点 { frmbar.SetFrmProcessBarMax((long)m_Hook.DataInfoGrid.Rows.Count); for (int i = 0; i < m_Hook.DataInfoGrid.Rows.Count; i++) { #region 获取必要信息 if (false == m_Hook.DataInfoGrid.Rows[i].Selected) { continue; } frmbar.SetFrmProcessBarValue((long)i); int DataType = -1;//产品的类型(标准,非标准,属性) try { ID = m_Hook.DataInfoGrid.Rows[i].Cells["ID"].FormattedValue.ToString().Trim(); if (string.IsNullOrEmpty(ID)) { continue; } lid = Convert.ToInt64(ID); FileName = m_Hook.DataInfoGrid.Rows[i].Cells["数据文件名"].FormattedValue.ToString().Trim(); FilePath = m_Hook.DataInfoGrid.Rows[i].Cells["存储位置"].FormattedValue.ToString().Trim(); type = m_Hook.DataInfoGrid.Rows[i].Cells["数据类型"].FormattedValue.ToString().Trim(); if ("标准图幅数据" == type) { datatype = EnumDataType.标准图幅.GetHashCode(); } else if ("非标准图幅数据" == type) { datatype = EnumDataType.非标准图幅.GetHashCode(); } else if ("控制点数据" == type) { datatype = EnumDataType.控制点数据.GetHashCode(); } } catch { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件:" + FileName + "删除失败。原因为:数据文件的ID获取失败\n" + "是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } #endregion #region 在元信息表中删除 frmbar.SetFrmProcessBarText("正在删除文件:" + FileName); if (ex != null) { ex = new Exception("连接元数据库失败!连接地址为:" + ConnStr); pSysDB.CloseDbConnection(); return; } if (lid != -1 && datatype != -1) { ModDBOperator.DelDataItem(lid, datatype, pSysDB, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件元信息删除失败。\n" + "请检查元信息库连接信息" + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } } #endregion #region 在文件库中删除 if (2 != datatype)////数据类型为控制点控制点数据则不进行文件的删除操作 { bool Delstate = ModDBOperator.DelDataItem(FilePath, FileName, ip, id, password, out ex); if (!Delstate) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + FilePath + "/" + FileName + "'\n删除失败。\n" + " 请确认文件是否存在或是否为占用状态。" + "\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } } #endregion #region 记录DataGrid中要删除的行 delrowlist.Add(i); #endregion #region 在树节点中删除文件节点 ModDBOperator.DelNodeByNameAndText(Deltreenode, FilePath, FileName, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "树节点删除失败。原因为:\n" + ex.Message + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } #endregion } } /////数据列表中移除相应的行 if (null != delrowlist) { for (int j = 0; j < delrowlist.Count; j++) { m_Hook.DataInfoGrid.Rows.Remove(m_Hook.DataInfoGrid.Rows[delrowlist[j] - j]); } } frmbar.Close(); #endregion } #region 图层处理 if (ModData.v_AppFileDB.MapControl.LayerCount > 0 && datatype != 2) { IGroupLayer Glayer = null; for (int i = 0; i < ModData.v_AppFileDB.MapControl.LayerCount; i++) { ILayer getlayer = ModData.v_AppFileDB.MapControl.get_Layer(i); if (getlayer.Name == "项目范围图") { Glayer = getlayer as IGroupLayer; } } if (null != Glayer) { ICompositeLayer comlayer = Glayer as ICompositeLayer; string layername = null; switch (datatype) { case 0: layername = "MapFrame_"; break; case 1: layername = "Range_"; break; default: layername = "_"; break; } if (comlayer != null) { for (int i = 0; i < comlayer.Count; i++) { ILayer orglayer = comlayer.get_Layer(i); string lname = orglayer.Name; if (lname.Contains(layername)) { Glayer.Delete(orglayer); ModData.v_AppFileDB.TOCControl.Update(); ModData.v_AppFileDB.MapControl.ActiveView.Refresh(); } } } } } if (datatype == EnumDataType.控制点数据.GetHashCode()) { IGraphicsContainer pGra = ModData.v_AppFileDB.MapControl.Map as IGraphicsContainer; pGra.DeleteAllElements(); ModData.v_AppFileDB.MapControl.ActiveView.Refresh(); } #endregion //刷新时间列表框 ModDBOperator.LoadComboxTime(ConnStr, out ex); if (ex != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "加载时间列表框失败," + ex.Message); return; } }
public override void OnClick() { Exception eError = null; SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); try { //设置查询条件后,执行查询操作 ///连接数据库 /// //string ipStr = v_DBNode.Text.Trim();//ip //if (ipStr == "") return; //string ipStr = "//" + ipStr + "//MetaDataBase//MetaDataBase.mdb";//元数据库路径 XmlElement dbElem = v_DBNode.Tag as XmlElement; if (dbElem == null) { return; } string ipStr = dbElem.GetAttribute("MetaDBConn"); //string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ipStr + ";Persist Security Info=True";//元数据连接字符串 //pSysDB.SetDbConnection(ConnStr, SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); pSysDB.SetDbConnection(ipStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接元数据库失败!"); pSysDB.CloseDbConnection(); return; } if (v_CondiStr == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置查询条件!"); pSysDB.CloseDbConnection(); return; } DataTable resultDT = pSysDB.GetSQLTable(v_CondiStr, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询成果索引表出错!"); pSysDB.CloseDbConnection(); return; } ///将查询到的结果在界面上表现出来(查询结果包括数据信息和元信息) #region 将结果保存在DataTable中 DataTable tempDT = ModDBOperator.CreateDataInfoTable(); for (int i = 0; i < resultDT.Rows.Count; i++) { string dataID = ""; //数据ID string DataName = ""; //数据文件名 string projectID = ""; //项目ID string productID = ""; //产品ID string projectName = ""; //项目名称 string productName = ""; //产品名称 string scale = ""; //比例尺 string rangNO = ""; //范围号 string dataFormatID = ""; //数据格式ID string dataTypeID = ""; //数据类型ID string dataFormat = ""; //数据格式名 string dataType = ""; //数据类型名 //string saveTime = ""; //存储时间 string savePath = ""; //存储路径 string fromDate = ""; //生产日期 dataID = resultDT.Rows[i]["数据ID"].ToString().Trim(); projectID = resultDT.Rows[i]["项目ID"].ToString().Trim(); productID = resultDT.Rows[i]["产品ID"].ToString().Trim(); scale = resultDT.Rows[i]["比例尺分母"].ToString().Trim(); rangNO = resultDT.Rows[i]["范围号"].ToString().Trim(); dataFormatID = resultDT.Rows[i]["数据格式编号"].ToString().Trim(); dataTypeID = resultDT.Rows[i]["数据类型编号"].ToString().Trim(); //saveTime = resultDT.Rows[i]["存储时间"].ToString().Trim(); savePath = resultDT.Rows[i]["存储位置"].ToString().Trim(); fromDate = resultDT.Rows[i]["生产日期"].ToString().Trim(); projectName = ModDBOperator.GetProjectName(long.Parse(projectID), pSysDB, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取项目名称出错!"); pSysDB.CloseDbConnection(); return; } productName = ModDBOperator.GetProductName(long.Parse(productID), pSysDB, out eError); if (eError != null || productName == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取产品名称出错!"); pSysDB.CloseDbConnection(); return; } if (dataTypeID == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "为填写数据类型,请检查!"); pSysDB.CloseDbConnection(); return; } DataName = GetDataName(int.Parse(dataTypeID), long.Parse(dataID), pSysDB, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据文件名称出错!"); pSysDB.CloseDbConnection(); return; } switch (int.Parse(dataFormatID)) { case 0: dataFormat = "DLG"; break; case 1: dataFormat = "DEM"; break; case 2: dataFormat = "DOM"; break; case 3: dataFormat = "DRG"; break; } switch (int.Parse(dataTypeID)) { case 0: dataType = "标准图幅数据"; break; case 1: dataType = "非标准图幅数据"; break; case 2: dataType = "控制点数据"; break; } DataRow newRow = tempDT.NewRow(); newRow["ID"] = dataID; newRow["项目名称"] = projectName; newRow["产品名称"] = productName; newRow["数据文件名"] = DataName; newRow["数据类型"] = dataType; newRow["比例尺"] = scale; newRow["范围号"] = rangNO; newRow["存储位置"] = savePath; //newRow["存储时间"] = saveTime; newRow["生产日期"] = fromDate; newRow["项目ID"] = projectID.ToString(); newRow["产品ID"] = productID.ToString(); tempDT.Rows.Add(newRow); } #endregion #region 将DataTable与DataGrid进行绑定 //清空表格 if (m_Hook.DataInfoGrid.DataSource != null) { m_Hook.DataInfoGrid.DataSource = null; } //绑定 m_Hook.DataInfoGrid.DataSource = tempDT; m_Hook.DataInfoGrid.ReadOnly = true; m_Hook.DataInfoGrid.Visible = true; m_Hook.DataInfoGrid.SelectionMode = DataGridViewSelectionMode.FullRowSelect; for (int j = 0; j < m_Hook.DataInfoGrid.Columns.Count; j++) { //m_Hook.DataInfoGrid.Columns[j].Width = (m_Hook.DataInfoGrid.Width - 20) / m_Hook.DataInfoGrid.Columns.Count; m_Hook.DataInfoGrid.Columns[j].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; } m_Hook.DataInfoGrid.RowHeadersWidth = 20; m_Hook.DataInfoGrid.Refresh(); pSysDB.CloseDbConnection(); #endregion } catch (Exception eR) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "未知错误:" + eR.Message); pSysDB.CloseDbConnection(); return; } }
public override void OnClick() { Exception eError = null; DevComponents.AdvTree.Node SelNode = m_Hook.ProjectTree.SelectedNode; if (SelNode.DataKey.ToString() == EnumTreeNodeType.DATACONNECT.ToString()) { //建立连接 if (SelNode.Name == "FileDBConnNode") { //文件连接 frmConSet frmconset = new frmConSet(); frmconset.ShowDialog(); } else if (SelNode.Name == "SpatialDBConnNode") { //空间连接 } } else if (SelNode.DataKey.ToString() == EnumTreeNodeType.DATABASE.ToString()) { //读取xml连接参数,连接库体 Exception ex = null; string ConType = SelNode.Name; if ("文件连接" == ConType) { //文件库连接 XmlElement Ele = SelNode.Tag as XmlElement; if (null == Ele) { return; } string ip = Ele.GetAttribute("服务器"); string id = Ele.GetAttribute("用户"); string password = Ele.GetAttribute("密码"); string dbConnStr = Ele.GetAttribute("MetaDBConn"); ModDBOperator.ConnectDB(dbConnStr, ip, id, password, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", eError.Message); return; } /////////////////////加载底图(2010.5.31临时添加)///////////////////////// //SysCommon.Gis.SysGisDataSet pSysGis = new SysCommon.Gis.SysGisDataSet(); //pSysGis.SetWorkspace(dbConnStr, SysCommon.enumWSType.PDB, out ex); //if (ex != null) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接范围图层失败!"); // return; //} //IFeatureLayer featurelayer = new FeatureLayerClass(); //IFeatureClass featureclass = pSysGis.GetFeatureClass("ProjectRange", out ex); //if (ex != null) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", ex.Message); // return; //} //featurelayer.FeatureClass = featureclass; //ILayer layer = featurelayer as ILayer; //layer.Name = "项目范围图"; //ModData.v_AppFileDB.MapControl.Map.AddLayer(layer); ////////////////////////////////////////////// } if (ConType == "空间连接") { //空间连接 } } }
private void btnSearch_Click(object sender, EventArgs e) { this.Hide(); Exception eError = null; string fieldVale = txtValue.Text.ToString(); //字段值 if (fieldVale == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请填写关键字!"); return; } string strMatch = cmbMatch.Text.Trim(); //匹配类型 #region 申明表格并进行绑定 DataTable resalutDT = ModDBOperator.CreateDataInfoTable(); //清空表格 if (m_Hook.DataInfoGrid.DataSource != null) { m_Hook.DataInfoGrid.DataSource = null; } //绑定 m_Hook.DataInfoGrid.DataSource = resalutDT; m_Hook.DataInfoGrid.ReadOnly = true; m_Hook.DataInfoGrid.Visible = true; m_Hook.DataInfoGrid.SelectionMode = DataGridViewSelectionMode.FullRowSelect; for (int j = 0; j < m_Hook.DataInfoGrid.Columns.Count; j++) { //m_Hook.DataInfoGrid.Columns[j].Width = (m_Hook.DataInfoGrid.Width - 20) / m_Hook.DataInfoGrid.Columns.Count; m_Hook.DataInfoGrid.Columns[j].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; } m_Hook.DataInfoGrid.RowHeadersWidth = 20; #endregion #region 连接数据库 if (ConnStr == "") { return; } SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); pSysDB.SetDbConnection(ConnStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接元数据库失败!"); pSysDB.CloseDbConnection(); return; } #endregion #region 首先查询成果索引表,获得符合条件的数据ID string dataIDStandarStr = ""; //标准图幅过滤条件 string dataIDNonStandarStr = ""; //非标准图幅过滤条件 string dataIDControlStr = ""; //控制点过滤条件 string wherestr = GetWhereStr(); //过滤条件 string str2 = ""; if (wherestr != "") { str2 = "select * from ProductIndexTable where " + wherestr; //查询成果索引表 DataTable tempDt = pSysDB.GetSQLTable(str2, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "查询成果索引表失败!"); pSysDB.CloseDbConnection(); return; } for (int i = 0; i < tempDt.Rows.Count; i++) { int dataType = Convert.ToInt32(tempDt.Rows[i]["数据类型编号"].ToString()); long pDataId = Convert.ToInt64(tempDt.Rows[i]["数据ID"].ToString()); if (dataType == 0) { //标准图幅 dataIDStandarStr += pDataId + ","; } else if (dataType == 1) { //非标准图幅 dataIDNonStandarStr += pDataId + ","; } else if (dataType == 2) { //控制点数据 dataIDControlStr += pDataId + ","; } } if (dataIDStandarStr != "") { dataIDStandarStr = dataIDStandarStr.Substring(0, dataIDStandarStr.Length - 1); } if (dataIDNonStandarStr != "") { dataIDNonStandarStr = dataIDNonStandarStr.Substring(0, dataIDNonStandarStr.Length - 1); } if (dataIDControlStr != "") { dataIDControlStr = dataIDControlStr.Substring(0, dataIDControlStr.Length - 1); } } #endregion //再次进行过滤查询表格 string pTableName = ""; string restrainStr = ""; if (cmbType.Text == "标准图幅") { pTableName = "StandardMapMDTable"; if (dataIDStandarStr != "") { restrainStr = dataIDStandarStr; } } else if (cmbType.Text == "非标准图幅") { pTableName = "NonstandardMapMDTable"; if (dataIDNonStandarStr != "") { restrainStr = dataIDNonStandarStr; } } else if (cmbType.Text == "控制点数据") { pTableName = "ControlPointMDTable"; if (dataIDControlStr != "") { restrainStr = dataIDControlStr; } } //DataTable mTable = pSysDB.GetTable(pTableName, out eError); //if (eError != null) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "获取源数据信息表失败!"); // return; //} try { if (cmbField.Text == "所有字段") { if (m_FieldDic == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "没有可用的字段!"); pSysDB.CloseDbConnection(); return; } foreach (KeyValuePair <string, Type> pField in m_FieldDic) { string fName = pField.Key.Trim(); Type fType = pField.Value; string pSQL = GetSQL(fName, fieldVale, fType, strMatch, out eError); if (eError != null) { pSysDB.CloseDbConnection(); return; } string str1 = ""; if (m_Hook.ProjectTree.SelectedNode.DataKey.ToString() == EnumTreeNodeType.DATABASE.ToString()) { //如果是数据库节点没有任何限制条件 str1 = "select * from " + pTableName + " where " + pSQL; } else { //如果是其他的节点则肯定 有限制条件 if (restrainStr != "") { //查询到数据 str1 = "select * from " + pTableName + " where ID in (" + restrainStr + ") and " + pSQL; } else { //查不到数据 return; } } //str1 = "select * from " + pTableName + " where ID in (" + restrainStr + ") and 数据文件名 like '%3%'"; DataTable pTable = pSysDB.GetSQLTable(str1, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "获取源数据信息表失败!"); return; } //DataRow[] pRowArr = mTable.Select(pSQL); showResault(pSysDB, pTable, resalutDT, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", eError.Message); pSysDB.CloseDbConnection(); return; } } } else { string fieldName = cmbField.Text.Trim(); Type fieldType = m_FieldDic[fieldName]; string selSQL = GetSQL(fieldName, fieldVale, fieldType, strMatch, out eError); if (eError != null) { pSysDB.CloseDbConnection(); return; } string str1 = ""; if (m_Hook.ProjectTree.SelectedNode.DataKey.ToString() == EnumTreeNodeType.DATABASE.ToString()) { //如果是数据库节点没有任何限制条件 str1 = "select * from " + pTableName + " where " + selSQL; } else { //如果是其他的节点则肯定 有限制条件 if (restrainStr != "") { //查询到数据 str1 = "select * from " + pTableName + " where " + selSQL + " and ID in (" + restrainStr + ")"; } else { //查不到数据 m_Hook.DataInfoGrid.Update(); m_Hook.DataInfoGrid.Refresh(); return; } } DataTable pTable = pSysDB.GetSQLTable(str1, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "获取源数据信息表失败!"); return; } //DataRow[] pRowsArr = mTable.Select(selSQL); showResault(pSysDB, pTable, resalutDT, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", eError.Message); pSysDB.CloseDbConnection(); return; } } } catch (Exception ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", ex.Message); } pSysDB.CloseDbConnection(); this.DialogResult = DialogResult.OK; this.Close(); }
public override void OnClick() { //当前所有范围面,用来设置数据显示范围 IFeatureLayer pRangeFeatLay = null; IFeatureLayer pFeatureLayer = null; IFeatureClass pFeatureClass = null; Exception exError = null; //如果工作库数据group图层已经存在 就不让再加了 for (int i = 0; i < _AppHk.MapControl.LayerCount; i++) { ILayer mLayer = _AppHk.MapControl.get_Layer(i); if (mLayer is IGroupLayer) { if (mLayer.Name == "现势库数据") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "现势库数据图层已经存在。"); return; } } } Plugin.Application.IAppFormRef pArrForm = _AppHk as Plugin.Application.IAppFormRef; pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.WaitCursor; //获取更新库体数据集 if (_AppHk.DBXmlDocument == null) { pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default; return; } XmlNode DBNode = _AppHk.DBXmlDocument.SelectSingleNode(".//项目工程"); if (DBNode == null) { return; } XmlElement DBElement = DBNode as XmlElement; XmlElement objNode = DBNode.SelectSingleNode(".//目标数据连接") as XmlElement; SysCommon.Gis.SysGisDataSet pObjSysGisDataSet = new SysCommon.Gis.SysGisDataSet(); pObjSysGisDataSet.SetWorkspace(objNode.GetAttribute("服务器"), objNode.GetAttribute("服务名"), objNode.GetAttribute("数据库"), objNode.GetAttribute("用户"), objNode.GetAttribute("密码"), objNode.GetAttribute("版本"), out exError); if (exError != null) { pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default; SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "现势库数据连接失败,请确认"); return; } //获取数据显示范围 IGeometry pGeometry = null; pRangeFeatLay = ModDBOperator.GetMapFrameLayer("zone", _AppHk.MapControl, "示意图") as IFeatureLayer; if (pRangeFeatLay == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无法获取数据显示范围!"); return; } //判断当前是否有示提交的范围面 IFeatureCursor pFeatureCursor = pRangeFeatLay.Search(null, false); if (pFeatureCursor != null) { IFeature pFeature = pFeatureCursor.NextFeature(); while (pFeature != null) { if (pGeometry == null) { pGeometry = pFeature.Shape; } else { pGeometry = (pGeometry as ITopologicalOperator).Union(pFeature.Shape); } pFeature = pFeatureCursor.NextFeature(); } } if (pGeometry == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无法获取数据显示范围!"); return; } //获取所有更新数据的FeatureClass IFeatureDataset pFeaDataset = pObjSysGisDataSet.GetFeatureDataset("c_njtdt", out exError);// 这个地方要素集的名称是写死的 暂时没有办法获得工作库的信息 需要修改 陈新伟 20091211 if (pFeaDataset == null) { pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default; SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无法获得指定的现势库数据【C_NJTDT】。");//yjl20120503 return; } //符号化类 //SymbolLyr symLyr = new SymbolLyr(); //@@@ List <IDataset> listFC = pObjSysGisDataSet.GetFeatureClass(pFeaDataset); IGroupLayer pLayer = new GroupLayerClass(); pLayer.Name = "现势库数据"; foreach (IDataset pDataset in listFC) { pFeatureClass = pDataset as IFeatureClass; if (pFeatureClass == null) { continue; } pFeatureLayer = new FeatureLayerClass(); if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new FDOGraphicsLayerClass(); } pFeatureLayer.FeatureClass = pFeatureClass; pFeatureLayer.Name = pDataset.Name; pFeatureLayer.ScaleSymbols = false; //pFeatureLayer = ModDBOperator.GetSelectionLayer(pTempFeatureLayer, pGeometry); //if (pFeatureLayer == null) return; //符号化图层 //symLyr.SymbolFeatrueLayer(pFeatureLayer); //@@@ //收缩图例 if (pFeatureClass.FeatureType == esriFeatureType.esriFTSimple) { ModDBOperator.ExpandLegend(pFeatureLayer as ILayer, false); } pLayer.Add(pFeatureLayer as ILayer); } _AppHk.MapControl.Map.AddLayer(pLayer); pObjSysGisDataSet.CloseWorkspace(true); //对图层进行排序 SysCommon.Gis.ModGisPub.LayersCompose(pLayer); //将图幅结合表置于底层 //ModDBOperator.MoveMapFrameLayer(_AppHk.MapControl); _AppHk.TOCControl.Update(); _AppHk.MapControl.Map.ClipGeometry = pGeometry; _AppHk.MapControl.ActiveView.Refresh(); pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default; }
//cyf 2011065 modify public override void OnClick() { Exception err = null; /////获取工程项目名称 DevComponents.AdvTree.Node ProjectNode = new DevComponents.AdvTree.Node(); ProjectNode = m_Hook.ProjectTree.SelectedNode; while (ProjectNode.Parent != null) { ProjectNode = ProjectNode.Parent; } //cyf 20110625 add: DevComponents.AdvTree.Node DBNode = new DevComponents.AdvTree.Node(); //数据库树节点 //获取数据库节点 DBNode = m_Hook.ProjectTree.SelectedNode; while (DBNode.Parent != null && DBNode.DataKeyString != "DB") { DBNode = DBNode.Parent; } if (DBNode.DataKeyString != "DB") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据库节点失败!"); return; } DevComponents.AdvTree.Node DtSetNode = new DevComponents.AdvTree.Node(); //数据集树节点 #region 获取数据集节点 if (DBNode.Text == "现势库" || DBNode.Text == "历史库" || DBNode.Text == "临时库") //.DataKeyString == "现势库" { //获取数据集节点 DtSetNode = m_Hook.ProjectTree.SelectedNode; while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "FD") { DtSetNode = DtSetNode.Parent; } if (DtSetNode.DataKeyString != "FD") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!"); return; } } else if (DBNode.Text == "栅格数据库") { //cyf 20110626 add:获取栅格数据库图层节点 DtSetNode = m_Hook.ProjectTree.SelectedNode; if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "RC") { while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "RC") { DtSetNode = DtSetNode.Parent; } if (DtSetNode.DataKeyString != "RC") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!"); return; } } else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "RD") { while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "RD") { DtSetNode = DtSetNode.Parent; } if (DtSetNode.DataKeyString != "RD") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!"); return; } } //end } #endregion XmlElement elementTemp = (DBNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement; IWorkspace TempWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; if (TempWorkSpace == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!"); return; } //cyf 20110625 modify ILayer player = null; //ILayer player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + ProjectNode.Text); if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FD") { player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, m_Hook.ProjectTree.SelectedNode.Text + "_" + ProjectNode.Text); } else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FC") { player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, DtSetNode.Text + "_" + ProjectNode.Text); } //cyf 20110626 add:添加获取栅格数据图层 else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "RC" || m_Hook.ProjectTree.SelectedNode.DataKeyString == "RD") { //获取栅格数据图层 player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, DtSetNode.Text + "_" + ProjectNode.Text); } //end if (player != null) { m_Hook.MapControl.Map.DeleteLayer(player); m_Hook.TOCControl.Update(); } //end IGroupLayer pGroupLayer = new GroupLayerClass(); //cyf 20110625 if (DBNode.Text == "现势库" || DBNode.Text == "历史库" || DBNode.Text == "临时库") //.DataKeyString == "现势库" { /////////若为历史库管理状态退出该状态,加载现势库 m_Hook.MapControl.Map.ClearLayers(); Plugin.Interface.ICommandRef HisBaseCommand = null; bool GetSeccess = Plugin.ModuleCommon.DicCommands.TryGetValue("GeoDBATool.ControlsDBHistoryManage", out HisBaseCommand); if (GetSeccess) { HisCommand = HisBaseCommand as ControlsDBHistoryManage; if (HisCommand.Checked) { HisCommand.IsHistory = false;//判断是不是历史库点的加载,若是现势库就卸载掉历史库,若是历史库就不操作 HisCommand.OnClick(); } } #region 加载数据 SysCommon.Gis.SysGisDataSet sysGisDataset = new SysCommon.Gis.SysGisDataSet(TempWorkSpace); //cyf 20110625 modify IFeatureDataset featureDataset = null; //数据集 if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FD") { featureDataset = sysGisDataset.GetFeatureDataset(m_Hook.ProjectTree.SelectedNode.Text, out err); if (err != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败,请检查该数据集是否存在!"); return; } pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.Text + "_" + ProjectNode.Text; } else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FC") { featureDataset = sysGisDataset.GetFeatureDataset(DtSetNode.Text, out err); if (err != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败!"); return; } pGroupLayer.Name = DtSetNode.Text + "_" + ProjectNode.Text; } //end List <IDataset> lstDataset = sysGisDataset.GetFeatureClass(featureDataset); //遍历要素类,加载图层 string dbType = ""; string userName = "";//用户名 userName = elementTemp.GetAttribute("用户"); dbType = elementTemp.GetAttribute("类型"); foreach (IDataset dataset in lstDataset) { IFeatureClass pFeatureClass = dataset as IFeatureClass; if (pFeatureClass == null) { continue; } IFeatureLayer pFeatureLayer = new FeatureLayerClass(); if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new FDOGraphicsLayerClass(); } pFeatureLayer.FeatureClass = pFeatureClass; if (dbType.Trim().ToUpper() == "SDE") { //cyf 20110706 modify:修改为不去掉用户名 changed by xisheng 0906 去掉用户名 if (dataset.Name.ToUpper().Contains(userName.Trim().ToUpper())) { //SDE用户图层名去掉用户名 pFeatureLayer.Name = dataset.Name.Substring(userName.Trim().Length + 1); } else { pFeatureLayer.Name = dataset.Name; } //end } else { pFeatureLayer.Name = dataset.Name; } //cyf 20110625 modify if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FC") { //加载指定的图层 if (m_Hook.ProjectTree.SelectedNode.Text != pFeatureLayer.Name) { continue; } } else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FD") { //加载具备权限的图层 XmlElement feaclsElem = null; try { feaclsElem = (m_Hook.ProjectTree.SelectedNode.Tag as XmlElement).SelectSingleNode(".//图层名") as XmlElement; } catch { } if (feaclsElem != null) { if (!feaclsElem.GetAttribute("名称").Contains(pFeatureLayer.Name)) { //若不具备数据权限,则不进行加载 continue; } } } //end pGroupLayer.Add(pFeatureLayer as ILayer); } m_Hook.MapControl.Map.AddLayer(pGroupLayer); #endregion } //else if (DBNode.Text == "历史库") //{ // //历史库加载 // //ModDBOperator.WriteLog("GetCommand"); // Plugin.Interface.ICommandRef HisBaseCommand = null; // bool GetSeccess = Plugin.ModuleCommon.DicCommands.TryGetValue("GeoDBATool.ControlsDBHistoryManage", out HisBaseCommand); // if (GetSeccess) // { // HisCommand = HisBaseCommand as ControlsDBHistoryManage; // //判断是不是历史库点的加载,若是现势库就卸载掉历史库,若是历史库就不操作 // HisCommand.IsHistory = true; // HisCommand.OnClick(); // if (HisCommand.MyControlHistoryBar != null) // { // string HisDBType = elementTemp.GetAttribute("类型"); // string[] strTemp = new string[] { elementTemp.GetAttribute("服务器"), elementTemp.GetAttribute("服务名"), elementTemp.GetAttribute("数据库"), elementTemp.GetAttribute("用户"), elementTemp.GetAttribute("密码"), elementTemp.GetAttribute("版本") }; // HisCommand.MyControlHistoryBar.AddHistoryData(strTemp, HisDBType); // } // } //} //加载sde数据后,注册版本 //if (dbType.Trim().ToUpper() == "SDE") //{ // IDataset pFeaDt = featureDataset as IDataset; // if (pFeaDt != null) // { // IVersionedObject pVerObj = pFeaDt as IVersionedObject; // if (!pVerObj.IsRegisteredAsVersioned) // { // //注册版本 // pVerObj.RegisterAsVersioned(true); // } // else // { // pVerObj.RegisterAsVersioned(false); // } // } //} else if (DBNode.Text == "栅格数据库") { //栅格数据加载,分为两种情况:栅格数据集、栅格编目 //cyf 20110625 modify pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.Text + "_" + ProjectNode.Text; //end string rasterDBType = (m_Hook.ProjectTree.SelectedNode.Tag as XmlElement).GetAttribute("存储类型"); elementTemp = (DBNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement; //cyf 20110626 TempWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; if (TempWorkSpace == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!"); return; } IRasterWorkspaceEx pRasterWS = TempWorkSpace as IRasterWorkspaceEx; if (pRasterWS == null) { return; } //string feaclsName = (elementTemp.FirstChild as XmlElement).GetAttribute("名称"); string feaclsName = m_Hook.ProjectTree.SelectedNode.Text; try { 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); //IFeatureClass pFeaCls = pRasterCatalog as IFeatureClass; //if (pFeaCls == null) return; //IFeatureCursor pFeaCursor=pFeaCls.Search(null,false); //if(pFeaCursor==null) return; //IFeature pFea=pFeaCursor.NextFeature(); //while (pFea != null) //{ // IRasterCatalogItem pRCItem = pFea as IRasterCatalogItem; // IRasterDataset pRasterDt = pRCItem.RasterDataset; // IRasterLayer mRasterLayer = new RasterLayerClass(); // mRasterLayer.CreateFromDataset(pRasterDt); // if (mRasterLayer == null) return; // pGroupLayer.Add(mRasterLayer as ILayer); // pFea = pFeaCursor.NextFeature(); // //IFeatureLayer pFeaLayer = new FeatureLayerClass(); // //pFeaLayer.FeatureClass = pFeaCls as IFeatureClass; // //pFeaLayer.Name = feaclsName; // //pGroupLayer.Add(pFeaLayer as ILayer); //} } else if (rasterDBType.Trim() == "栅格数据集") { //栅格数据集加载 IRasterDataset pRasterDataset = pRasterWS.OpenRasterDataset(feaclsName); //IRasterPyramid pRasterPyramid = pRasterDataset as IRasterPyramid; //if(!pRasterPyramid.Present) //{ // if (SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "未构建金字塔,是否构建金字塔?")) // { // pRasterPyramid.Create(); // } //} IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromDataset(pRasterDataset); if (pRasterLayer == null) { return; } pGroupLayer.Add(pRasterLayer as ILayer); } m_Hook.MapControl.Map.AddLayer(pGroupLayer); } catch (Exception e) { //******************************************************************* //guozheng added if (ModData.SysLog != null) { ModData.SysLog.Write(e, null, DateTime.Now); } else { ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog(); ModData.SysLog.Write(e, null, DateTime.Now); } //******************************************************************** return; } } //对图层进行排序 SysCommon.Gis.ModGisPub.LayersCompose(m_Hook.MapControl); //符号化 去掉加载的符号化 20111025 席胜 //GeoUtilities.ControlsRenderLayerByMxd RenderLayerByMxd = new GeoUtilities.ControlsRenderLayerByMxd(); //RenderLayerByMxd.OnCreate(m_Hook); //RenderLayerByMxd.OnClick(); }
//将数据导入到临时库中 private void btnDoInput_Click(object sender, EventArgs e) { if (dgvInputList.Rows.Count == 0) { MessageBox.Show("请先添加要入库的文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } for (int i = 0; i < dgvInputList.Rows.Count; i++) { #region 获取源图层 //获取源文件名称和图层名称 string SourceFile = dgvInputList.Rows[i].Cells["SourceLayerName"].Value.ToString(); IFeatureClass pSourceFeatureClass = null; if (SourceFile.Contains("--")) { string filePath = SourceFile.Substring(0, SourceFile.IndexOf("--")); string layerName = SourceFile.Substring(SourceFile.IndexOf("--") + 2, SourceFile.Length - SourceFile.IndexOf("--") - 2); pSourceFeatureClass = GetFeatureClassByName(filePath, layerName); } else { string layerName1 = SourceFile.Substring(SourceFile.LastIndexOf("\\") + 1, SourceFile.Length - 5 - SourceFile.LastIndexOf("\\")); pSourceFeatureClass = GetFeatureClassByName(SourceFile, layerName1); } //通过工程名称和表格目标层,获取目标图层 if (!File.Exists(ModData.v_projectDetalXML)) { MessageBox.Show("无法获取工程配置文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } #endregion #region 获取目标图层 string ProName = dgvInputList.Rows[i].Cells["ProName"].Value.ToString(); string targetLayerName = dgvInputList.Rows[i].Cells["TargetLayerName"].FormattedValue.ToString(); XmlDocument xmlPro = new XmlDocument(); xmlPro.Load(ModData.v_projectDetalXML); XmlElement xmlConElement = xmlPro.SelectSingleNode("//工程[@名称='" + ProName + "']//内容//临时库//连接信息") as XmlElement; IWorkspace pTargetWorkspace = ModDBOperator.GetDBInfoByXMLNode(xmlConElement, "") as IWorkspace; XmlNode xmlDataset = xmlPro.SelectSingleNode("//工程[@名称='" + ProName + "']//内容//临时库//数据集"); string datasetName = xmlDataset.Attributes["名称"].Value.ToString(); IFeatureClass pTargetFeatureClass = GetFeatureClass(pTargetWorkspace, targetLayerName, datasetName); #endregion dgvInputList.Rows[i].Cells["InputState"].Value = "正在入库"; Exception error = null; List <string> listXianCode = GetUniqueValues(pSourceFeatureClass, "xian", ""); List <string> listExitCode = null; //循环判断临时库中是否存在该县的数据 if (listXianCode == null || listXianCode.Count == 0) { CopySourceFeatureClass(pSourceFeatureClass, pTargetFeatureClass, null, "", out error); } else { string xianName = CheckXianData(pTargetFeatureClass, listXianCode, "xian", out listExitCode); if (xianName != "") { if (MessageBox.Show("当前临时库已存在:" + xianName + "的数据,是否覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes) { //清空已有县数据 for (int t = 0; t < listExitCode.Count; t++) { string tableName = pTargetFeatureClass.AliasName; tableName = tableName.Substring(tableName.IndexOf(".") + 1, tableName.Length - tableName.IndexOf(".") - 1); clsInputTempDate.DeleteFeatureClass(pTargetFeatureClass, "xian='" + listExitCode[t] + "'", tableName, out error); CopySourceFeatureClass(pSourceFeatureClass, pTargetFeatureClass, null, "", out error); } } else { return; } } else { CopySourceFeatureClass(pSourceFeatureClass, pTargetFeatureClass, null, "", out error); } } if (error != null) { dgvInputList.Rows[i].Cells["InputState"].Value = "入库失败"; dgvInputList.Rows[i].Cells["InputLog"].Value = error.Message.ToString(); } else { dgvInputList.Rows[i].Cells["InputState"].Value = "入库成功"; } } MessageBox.Show("完成入库操作!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }
public override void OnClick() { //执行删除项目操作 SysCommon.Error.frmInformation eerorFrm = new SysCommon.Error.frmInformation("是", "否", "删除项目将删除项目下的所有产品和数据文件,\n 确定吗?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } ///////////////////////// 删除服务器上所有的文件夹目录//////////////////// DevComponents.AdvTree.Node SelNode = m_Hook.ProjectTree.SelectedNode; DevComponents.AdvTree.Node ConNode = m_Hook.ProjectTree.SelectedNode.Parent; if (null == ConNode) { return; } string DelProName = SelNode.Text; System.Xml.XmlElement Ele = ConNode.Tag as System.Xml.XmlElement; if (null == Ele) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示", "获取工程元信息失败!"); return; } string ip = Ele.GetAttribute("服务器"); string id = Ele.GetAttribute("用户"); string password = Ele.GetAttribute("密码"); long ProjectID = int.Parse(m_Hook.ProjectTree.SelectedNode.Tag.ToString());//项目的ID string ipStr = Ele.GetAttribute("MetaDBConn"); //string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ipStr + ";Persist Security Info=True";//元数据连接字符串 string ConnStr = ipStr; clsProject DelPro = new clsProject(DelProName, ip, id, password); string error = ""; bool DelState = DelPro.DeleteProject(SelNode, ConnStr, ProjectID, out error); if (!DelState) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示", error); return; } ///////////////////////// 删除元信息表中记录信息//////////////////// Exception ex = null; ModDBOperator.DelProject(ProjectID, ConnStr, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示", ex.Message); } else { m_Hook.ProjectTree.SelectedNode.Remove(); SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "项目删除成功"); } m_Hook.DataInfoGrid.DataSource = null; m_Hook.MetaDataGrid.DataSource = null; //刷新时间列表框 Exception eError = null; ModDBOperator.LoadComboxTime(ConnStr, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "加载时间列表框失败," + eError.Message); return; } }
private void btnOK_Click(object sender, EventArgs e) { Exception eError = null; m_FeaLayer = axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureSelection pFeaSel = m_FeaLayer as IFeatureSelection; if (pFeaSel.SelectionSet == null || pFeaSel.SelectionSet.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请在图上选择范围!"); return; } else { m_Geometry = GetFeaLayerGeometry(pFeaSel, m_FeaLayer); } if (m_Geometry == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置图幅数据范围!"); return; } //对范围进行检查看该范围是否是本地工作库图幅数据的总范围…… //将范围信息解析后写入XML中 byte[] xmlByte = xmlSerializer(m_Geometry); string base64String = Convert.ToBase64String(xmlByte); //XmlDocument DocXml = (m_AppGIS.ProjectTree.SelectedNode.Tag as XmlNode) //DocXml.Load(ModData.v_projectXML); XmlNode ProNode = m_AppGIS.ProjectTree.SelectedNode.Tag as XmlNode;//DocXml.SelectSingleNode(".//工程[@名称='" + m_AppGIS.ProjectTree.SelectedNode.Name + "']"); XmlElement RangeElem = ProNode.SelectSingleNode(".//内容//图幅工作库//范围信息") as XmlElement; RangeElem.SetAttribute("范围", base64String); ProNode.OwnerDocument.Save(ModData.v_projectDetalXML); //cyf 20110628 //cyf 20110621 modify ;将范围信息存储到系统维护库当中 #region 获取系统维护库连接信息,并连接系统维护库,将工作空间保存起来 if (ModData.TempWks == null) { bool blnCanConnect = false; SysCommon.Gis.SysGisDB vgisDb = new SysCommon.Gis.SysGisDB(); if (File.Exists(ModData.v_ConfigPath)) { //获得系统维护库连接信息 SysCommon.Authorize.AuthorizeClass.GetConnectInfo(ModData.v_ConfigPath, out ModData.Server, out ModData.Instance, out ModData.Database, out ModData.User, out ModData.Password, out ModData.Version, out ModData.dbType); //连接系统维护库 blnCanConnect = ModDBOperator.CanOpenConnect(vgisDb, ModData.dbType, ModData.Server, ModData.Instance, ModData.Database, ModData.User, ModData.Password, ModData.Version); } else { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "缺失系统维护库连接信息文件:" + ModData.v_ConfigPath + "/n请重新配置"); return; } if (!blnCanConnect) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "系统能够维护库连接失败,请检查!"); return; } ModData.TempWks = vgisDb.WorkSpace; } if (ModData.TempWks == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取系统维护库工作空间失败,请检查!"); return; } #endregion ////将范围信息写入数据库 //if (!File.Exists(ModData.v_DbInterConn)) return; ////读取系统维护库连接信息 //XmlDocument xmlConnDoc = new XmlDocument(); //xmlConnDoc.Load(ModData.v_DbInterConn); //XmlElement ele = xmlConnDoc.SelectSingleNode(".//系统维护库连接信息") as XmlElement; //if (ele == null) return; //string sConnect = ele.GetAttribute("连接字符串");//系统维护库连接字符串 ////连接系统维护库 //SysCommon.DataBase.SysTable pTable = new SysCommon.DataBase.SysTable(); //pTable.SetDbConnection(sConnect, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out eError); //if (eError != null) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "提示,连接系统维护库失败!"); // return; //} if (m_AppGIS.ProjectTree.SelectedNode.Name.ToString().Trim() == "") { return; } ///原有更新ROW的方法 //string upStr = "update DATABASEMD set DBPARA='" + base64String + "' where ID=" + Convert.ToInt32(m_AppGIS.ProjectTree.SelectedNode.Name.ToString().Trim()); //pTable.UpdateTable(upStr, out eError); //if (eError != null) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "提示,更新图幅范围信息失败!"); // return; //} //现在的更新ROW xisheng changed 20111018 SysGisTable sysTable = new SysGisTable(ModData.TempWks); Dictionary <string, object> dicData = new Dictionary <string, object>(); dicData.Add("DBPARA", base64String); try { sysTable.UpdateRow("DATABASEMD", "ID='" + Convert.ToInt32(m_AppGIS.ProjectTree.SelectedNode.Name.ToString().Trim()) + "'", dicData, out eError); } catch { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "提示,更新图幅范围信息失败!+详细信息:" + eError.Message); return; } SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "完成范围信息的获取和存储!"); //end this.Close(); }
private void btnOk_Click(object sender, EventArgs e) { if (listViewEx.CheckedItems.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "未选择对象,无法生成历史!"); return; } Exception err = null; //获取现势库连接信息 SysCommon.Gis.SysGisDataSet sourceSysGisDataSet = new SysCommon.Gis.SysGisDataSet(); switch (comBoxType.Text) { case "SDE": sourceSysGisDataSet.SetWorkspace(txtServer.Text, txtInstance.Text, txtDB.Text, txtUser.Text, txtPassword.Text, txtVersion.Text, out err); break; case "GDB": sourceSysGisDataSet.SetWorkspace(txtDB.Text, SysCommon.enumWSType.GDB, out err); break; case "PDB": sourceSysGisDataSet.SetWorkspace(txtDB.Text, SysCommon.enumWSType.PDB, out err); break; default: break; } if (err != null || sourceSysGisDataSet.WorkSpace == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "未设置用户数据库连接或连接失败,请检查!"); return; } //获取历史库连接信息 IPropertySet pPropSet = new PropertySetClass(); IWorkspace pTagetWorkspace = null; try { switch (comboBoxTypeHistory.Text) { case "PDB": AccessWorkspaceFactory pAccessFact = new AccessWorkspaceFactoryClass(); if (!File.Exists(txtDBHistory.Text)) { FileInfo filePDB = new FileInfo(txtDBHistory.Text); pAccessFact.Create(filePDB.DirectoryName, filePDB.Name, null, 0); } pPropSet.SetProperty("DATABASE", txtDBHistory.Text); pTagetWorkspace = pAccessFact.Open(pPropSet, 0); break; case "GDB": FileGDBWorkspaceFactoryClass pFileGDBFact = new FileGDBWorkspaceFactoryClass(); DirectoryInfo dirGDB = new DirectoryInfo(txtDBHistory.Text); pFileGDBFact.Create(dirGDB.Parent.FullName, dirGDB.Name.Substring(0, dirGDB.Name.Length - 4), null, 0); pPropSet.SetProperty("DATABASE", txtDBHistory.Text); pTagetWorkspace = pFileGDBFact.Open(pPropSet, 0); break; case "SDE": IWorkspaceFactory pSdeFact = new SdeWorkspaceFactoryClass(); pPropSet.SetProperty("SERVER", txtServerHistory.Text); pPropSet.SetProperty("INSTANCE", txtInstanceHistory.Text); pPropSet.SetProperty("DATABASE", txtDBHistory.Text); pPropSet.SetProperty("USER", txtUserHistory.Text); pPropSet.SetProperty("PASSWORD", txtPasswordHistory.Text); pPropSet.SetProperty("VERSION", txtVersionHistory.Text); pTagetWorkspace = pSdeFact.Open(pPropSet, 0); break; default: break; } } catch (Exception er) { //******************************************************************* //guozheng added if (ModData.SysLog != null) { ModData.SysLog.Write(er, null, DateTime.Now); } else { ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog(); ModData.SysLog.Write(er, null, DateTime.Now); } //******************************************************************** } if (pTagetWorkspace == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "未设置历史库连接或连接失败,请检查!"); return; } this.Cursor = System.Windows.Forms.Cursors.AppStarting; List <string> lstData = new List <string>(); try { //根据用户数据库结构创建历史库 foreach (ListViewItem aItem in listViewEx.CheckedItems) { if (aItem.Tag.ToString() == "FD") { IFeatureDataset tagetFeatureDataset = null; IFeatureDataset pFeatureDataset = sourceSysGisDataSet.GetFeatureDataset(aItem.Text, out err); if (!(pTagetWorkspace as IWorkspace2).get_NameExists(esriDatasetType.esriDTFeatureDataset, aItem.Text + "_GOH")) { tagetFeatureDataset = (pTagetWorkspace as IFeatureWorkspace).CreateFeatureDataset(aItem.Text + "_GOH", (pFeatureDataset as IGeoDataset).SpatialReference); } else { tagetFeatureDataset = (pTagetWorkspace as IFeatureWorkspace).OpenFeatureDataset(aItem.Text + "_GOH"); } IEnumDataset pEnumDs = pFeatureDataset.Subsets; pEnumDs.Reset(); IDataset pDs = pEnumDs.Next(); while (pDs != null) { IFeatureClass pFeatureClass = pDs as IFeatureClass; if (pFeatureClass != null) { if (!(pTagetWorkspace as IWorkspace2).get_NameExists(esriDatasetType.esriDTFeatureClass, pDs.Name + "_GOH")) { CreateFeatCls(tagetFeatureDataset, pFeatureClass, pDs.Name + "_GOH", out err); } lstData.Add(pDs.Name); } pDs = pEnumDs.Next(); } } else if (aItem.Tag.ToString() == "FC") { IFeatureClass pFeatureClass = sourceSysGisDataSet.GetFeatureClass(aItem.Text, out err); if (!(pTagetWorkspace as IWorkspace2).get_NameExists(esriDatasetType.esriDTFeatureClass, aItem.Text + "_GOH")) { CreateFeatCls(pTagetWorkspace as IFeatureWorkspace, pFeatureClass, aItem.Text + "_GOH", out err); } lstData.Add(aItem.Text); } } } catch (Exception er) { //******************************************************************* //guozheng added if (ModData.SysLog != null) { ModData.SysLog.Write(er, null, DateTime.Now); } else { ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog(); ModData.SysLog.Write(er, null, DateTime.Now); } //******************************************************************** this.Cursor = System.Windows.Forms.Cursors.Default; SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "创建历史库结构失败!"); return; } //遍历现势库数据FC进行数据移植 Dictionary <string, string> dicFieldsPair = new Dictionary <string, string>(); dicFieldsPair.Add("OBJECTID", "SourceOID"); Dictionary <string, object> dicValue = new Dictionary <string, object>(); dicValue.Add("FromDate", DateTime.Now.ToString("u")); dicValue.Add("ToDate", DateTime.MaxValue.ToString("u"));//.ToString("YYYY-MM-DD HH:MI:SS")); dicValue.Add("State", 0); (pTagetWorkspace as IWorkspaceEdit).StartEditing(false); bool res = true; progressBarXLay.Maximum = lstData.Count; progressBarXLay.Minimum = 0; progressBarXLay.Value = 0; foreach (string aFeatClsName in lstData) { labelXMemo.Text = "正在进行图层" + aFeatClsName + "..."; Application.DoEvents(); int cnt = 0; int allcnt = 0; IFeatureCursor featureCursor = null; IFeatureClass tagetFeatCls = null; try { featureCursor = sourceSysGisDataSet.GetFeatureCursor(aFeatClsName, "", null, "", out err, out cnt, out allcnt); tagetFeatCls = (pTagetWorkspace as IFeatureWorkspace).OpenFeatureClass(aFeatClsName + "_GOH"); } 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); } //******************************************************************** SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", ex.Message); return; } progressBarXFeat.Maximum = cnt; progressBarXFeat.Minimum = 0; progressBarXFeat.Value = 0; ModDBOperator.NewFeatures(tagetFeatCls, featureCursor, dicFieldsPair, dicValue, true, false, progressBarXFeat, out err); Marshal.ReleaseComObject(featureCursor); progressBarXLay.Value++; labelXMemo.Text = ""; Application.DoEvents(); if (err != null) { res = false; break; } } (pTagetWorkspace as IWorkspaceEdit).StopEditing(res); this.Cursor = System.Windows.Forms.Cursors.Default; if (res) { if (m_DbProjectElement != null) { try { XmlElement aElement = m_DbProjectElement.SelectSingleNode(".//内容//历史库//连接信息") as XmlElement; SaveObjDB(aElement, listViewEx.Items[0].Text + "_GOH"); } catch (Exception er) { //******************************************************************* //guozheng added if (ModData.SysLog != null) { ModData.SysLog.Write(er, null, DateTime.Now); } else { ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog(); ModData.SysLog.Write(er, null, DateTime.Now); } //******************************************************************** return; } } SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "生成历史库成功!"); this.Close(); } else { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "生成历史库失败!"); } }
/// <summary> /// 删除一个工程 /// </summary> /// <returns></returns> public bool DeleteProject(DevComponents.AdvTree.Node ProjectNode, string ConStr, long Projiectid , out string err) { Exception ex = null; err = ""; if (string.IsNullOrEmpty(this._ProName)) { err = "没有指定项目名称!"; return(false); } if (string.IsNullOrEmpty(ConStr)) { err = "没有指定元信息库连接信息!"; return(false); } int value = 0; FrmProcessBar DelBar = new FrmProcessBar(10); DelBar.Show(); DelBar.SetFrmProcessBarText("正在连接元信息库"); Application.DoEvents(); SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); //属性库连接类 pSysDB.SetDbConnection(ConStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out ex); if (ex != null) { err = "元信息库连接失败!连接地址为:" + ConStr; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } long ProjectID = Projiectid; #region 除项目的所有产品 string Sql = "SELECT ID,产品名称,存储位置 FROM ProductMDTable WHERE 项目ID=" + ProjectID; DataTable GetTable = pSysDB.GetSQLTable(Sql, out ex); if (null != ex) { err = "获取项目的产品信息失败!"; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } if (null != GetTable) { for (int i = 0; i < GetTable.Rows.Count; i++) { long ProducetId = -1; string ProductName = string.Empty; string ProductPath = string.Empty; ProducetId = long.Parse(GetTable.Rows[i][0].ToString()); ProductName = GetTable.Rows[i][1].ToString().Trim(); ProductPath = GetTable.Rows[i][2].ToString().Trim(); DelBar.SetFrmProcessBarValue(value); DelBar.SetFrmProcessBarText(" 正在删除产品:" + ProductName); value += 1; if (value == 10) { value = 0; } Application.DoEvents(); DevComponents.AdvTree.Node ProductNode = ModDBOperator.GetTreeNode(ProjectNode, ProductPath, ProductName, EnumTreeNodeType.PRODUCT.ToString(), ProducetId, out ex); if (null != ex) { err = "获取项目的产品:‘" + ProductName + "’树节点失败!"; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } if (null != ProductNode) { if (!ModDBOperator.DelProduct(ProductNode, out ex)) { err = "删除项目的产品:‘" + ProductName + "’失败!"; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } } } } #endregion #region 除项目的文件夹 DelBar.SetFrmProcessBarText("正在删除工程项目目录"); Application.DoEvents(); if (!ModDBOperator.DelDirtory(this._ftpIP, this._ftpUSER, this._ftpPassWord, this._ProName, out ex)) { err = "工程项目项目目录删除失败!"; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } #endregion DelBar.Dispose(); DelBar.Close(); pSysDB.CloseDbConnection(); return(true); }
//从外部TXT文件导入范围 private void RadioBtnInputRange_CheckedChanged(object sender, EventArgs e) { Exception outError = null; if (RadioBtnInputRange.Checked) { OpenFileDialog OpenFile = new OpenFileDialog(); OpenFile.CheckFileExists = true; OpenFile.CheckPathExists = true; OpenFile.Title = "选择图形范围坐标txt"; OpenFile.Filter = "图形范围坐标文本(*.txt)|*.txt"; if (OpenFile.ShowDialog() == DialogResult.OK) { StringBuilder sb = new StringBuilder(); try { StreamReader sr = new StreamReader(OpenFile.FileName); while (sr.Peek() >= 0) { string[] strTemp = sr.ReadLine().Split(','); //cyf 20110621 add:根据文本文件获取几何范围 for (int i = 0; i < strTemp.Length - 1; i = i + 2) { if (sb.Length != 0) { sb.Append(","); } sb.Append(strTemp[i] + "@" + strTemp[i + 1]); } //end } } catch (Exception er) { //******************************************************************* //guozheng added if (ModData.SysLog != null) { ModData.SysLog.Write(er, null, DateTime.Now); } else { ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog(); ModData.SysLog.Write(er, null, DateTime.Now); } //******************************************************************** SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "图形范围坐标txt格式不正确!\n文本每行为点坐标且以','分割"); return; } if (sb.Length == 0) { return; } m_Geometry = ModDBOperator.GetPolygonByCol(sb.ToString()) as IGeometry; //获得几何范围的空间参考 //if (ModData.TempWks != null) //{ // IFeatureWorkspace pFeaWs = ModData.TempWks as IFeatureWorkspace; // if (pFeaWs == null) // { // //获取系统维护库连接信息失败 // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取系统维护库连接信息失败!"); // return; // } //} //m_Geometry.SpatialReference= //cyf 20110621 在临时工作库中创建一个范围图层 //CreateMapFrameLayerInWorkSpace(m_Geometry, out outError); //if(outError!=null) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "创建临时的范围图层失败!\n原因:"+outError.Message); // return; //} //end } } }
private void btnOK_Click(object sender, EventArgs e) { Exception eError = null; //判断源数据是否连接 if (this.textBoxUptRange.Text == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置更新范围数据连接"); return; } if (this.textBoxUptData.Text == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置更新数据连接"); return; } ClsBatchUpdate pClsBatchUpdate = new ClsBatchUpdate(); //从数据树图中获取现势库和历史库节点 DevComponents.AdvTree.Node pCurNode = pClsBatchUpdate.GetNodeOfProjectTree(v_AppGIS.ProjectTree, "DB", "现势库"); DevComponents.AdvTree.Node pHisNode = pClsBatchUpdate.GetNodeOfProjectTree(v_AppGIS.ProjectTree, "DB", "历史库"); if (pCurNode == null || pHisNode == null) { return; } //获取现势库连接 XmlElement elementTemp = (pCurNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement; IWorkspace pCurWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; if (pCurWorkSpace == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接现势库失败!"); return; } //获取历史库连接 elementTemp = (pHisNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement; IWorkspace pHisWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; if (pHisWorkSpace == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接历史库失败!"); return; } //获取更新数据库连接 SysCommon.Gis.SysGisDataSet pUptSysGisDT = new SysCommon.Gis.SysGisDataSet();//更新库连接 SysCommon.enumWSType pUptType = SysCommon.enumWSType.PDB; if (this.textBoxUptData.Tag == "PDB") { pUptType = SysCommon.enumWSType.PDB; } else if (this.textBoxUptData.Tag == "GDB") { pUptType = SysCommon.enumWSType.GDB; } Exception ERR0 = null; pUptSysGisDT.SetWorkspace(this.textBoxUptData.Text, pUptType, out ERR0); IWorkspace pUptWorkSpace = pUptSysGisDT.WorkSpace; //获取更新范围 IGeometry pUptGeometry = null; pUptGeometry = SysCommon.ModPublicFun.GetPolyGonFromFile(this.textBoxUptRange.Text); this.Hide(); FrmProcessBar frmbar = new FrmProcessBar(); frmbar.Show(); if (pUptGeometry != null) { pClsBatchUpdate.DoBatchUpdate(pCurWorkSpace, pHisWorkSpace, pUptWorkSpace, pUptGeometry, pCurNode, pHisNode, frmbar); } frmbar.Close(); this.Close(); }