Пример #1
0
        //清除选中图层
        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);
            }
        }
Пример #2
0
        //双击则创建该线,并弹出缓冲窗体
        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);
        }
Пример #3
0
        //主检查函数,针对临时库检查  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);
        }
Пример #4
0
        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; }
                }
            }
        }
Пример #5
0
        /// <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);
                }
            }
        }
Пример #6
0
        private bool CreateMdbDatabase()
        {
            IWorkspace pWks = ModDBOperator.CreatePDBWorkSpace(_MdbPath, _MdbName);

            if (pWks != null)
            {
                return(true);
            }
            return(false);
        }
Пример #7
0
        /// <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;
            }
        }
Пример #8
0
        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
            {
            }
        }
Пример #9
0
        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();
            }
        }
Пример #10
0
 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
     {
     }
 }
Пример #11
0
        /// <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;
        }
Пример #12
0
        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);
        }
Пример #14
0
        //默认选择第一个要素节点  并进行闪烁
        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;
                }
            }
        }
Пример #15
0
        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);
        }
Пример #17
0
        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;
            }
        }
Пример #18
0
        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;
            }
        }
Пример #20
0
        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 == "空间连接")
                {
                    //空间连接
                }
            }
        }
Пример #21
0
        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();
        }
Пример #22
0
        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;
        }
Пример #23
0
        //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();
        }
Пример #24
0
        //将数据导入到临时库中
        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);
        }
Пример #25
0
        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;
            }
        }
Пример #26
0
        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();
        }
Пример #27
0
        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("提示", "生成历史库失败!");
            }
        }
Пример #28
0
        /// <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);
        }
Пример #29
0
        //从外部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
                }
            }
        }
Пример #30
0
        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();
        }