コード例 #1
0
 public FormMetaData(Demo.Entities.RasterLayer RL)
 {
     InitializeComponent();
     Raster2Control(RL);
     xtraTabControl1.SelectedTabPage = xtraTabPage1;
     Mode = 0;
 }
コード例 #2
0
        private void buttonImport_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "xml文件|*.xml";

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                string fname = ofd.FileName;
                if (Mode == 0)
                {
                    Demo.Entities.RasterLayer rl = xmlSerialize.DeSerialize <Demo.Entities.RasterLayer>(fname);
                    Raster2Control(rl);
                }
                else if (Mode == 1)
                {
                    VectorLayer vl = xmlSerialize.DeSerialize <VectorLayer>(fname);
                    Vector2Control(vl);
                }
                else if (Mode == 2)
                {
                    FileLayer fl = xmlSerialize.DeSerialize <FileLayer>(fname);
                    File2Control(fl);
                }
            }
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: jzChia/demo
        private void toolStripMenuItem4_Click(object sender, EventArgs e)
        {
            TreeNode tn = treeView1.SelectedNode;

            if (tn == null)
            {
                return;
            }

            string layerID = Convert.ToString(tn.Tag);

            if (tn.Parent.Tag != null && tn.Parent.Tag.ToString() == "RASTER_LAYERS")
            {
                Demo.Entities.RasterLayer rl = Demo.Entities.RasterLayer.GetRasterIndexById(layerID);
                if (rl == null)
                {
                    return;
                }
                FormMetaData fmd = new FormMetaData(rl);
                fmd.ShowDialog();
            }
            else if (tn.Parent.Tag != null && tn.Parent.Tag.ToString() == "VECTOR_LAYERS")
            {
                VectorLayer vl = VectorLayer.GetVectorIndexById(layerID);
                if (vl == null)
                {
                    return;
                }
                FormMetaData fmd = new FormMetaData(vl);
                fmd.ShowDialog();
            }
        }
コード例 #4
0
ファイル: ImportToGDB.cs プロジェクト: jzChia/demo
        private void buttonMetaData_Click(object sender, EventArgs e)
        {
            Demo.FormMetaData fmd;
            switch (nowDT)
            {
            case enumDataType.raster:
                fmd = new Demo.FormMetaData(this.rstLayer);
                break;

            case enumDataType.dem:
                fmd = new Demo.FormMetaData(this.rstLayer);
                break;

            case enumDataType.vector:
                fmd = new Demo.FormMetaData(this.vctLayer);
                break;

            default:
                fmd = new Demo.FormMetaData(this.fleLayer);
                break;
            }

            if (fmd.ShowDialog() == DialogResult.OK)
            {
                this.rstLayer = fmd.rstLayer;
                this.vctLayer = fmd.vctLayer;
                this.fleLayer = fmd.fleLayer;
            }
        }
コード例 #5
0
ファイル: ImportToGDB.cs プロジェクト: jzChia/demo
 private void button1_Click(object sender, EventArgs e)
 {
     Demo.Entities.RasterLayer rl = Demo.Entities.RasterLayer.GetRasterIndexById("");
     if (rl != null)
     {
         FormMetaData fmd = new FormMetaData(rl);
         fmd.ShowDialog();
     }
 }
コード例 #6
0
        private void Raster2Control(Demo.Entities.RasterLayer RL)
        {
            Base2Control((BaseLayer)RL);

            textBoxRBandCount.Text   = RL.BANDCOUNT.ToString();
            textBoxRHeight.Text      = RL.HEIGHT.ToString();
            textBoxRVisible.Text     = RL.ISVISIBLE.ToString();
            textBoxRMaxX.Text        = RL.MAXX.ToString();
            textBoxRMaxY.Text        = RL.MAXY.ToString();
            textBoxRMinX.Text        = RL.MINX.ToString();
            textBoxRMinY.Text        = RL.MINY.ToString();
            textBoxRNoDataValue.Text = RL.NODATAVALUE.ToString();
            textBoxRWidth.Text       = RL.WIDTH.ToString();
            textBoxRResolution.Text  = RL.RESOLUTION.ToString();
        }
コード例 #7
0
 private void Control2Base(out Demo.Entities.RasterLayer BL)
 {
     BL             = new Demo.Entities.RasterLayer();
     BL.SCALE       = Convert.ToInt64(textBoxScale.Text);
     BL.AUTHOR      = textBoxAuthor.Text;
     BL.CREATETIME  = textBoxCreateTime.Text;
     BL.DATATYPE    = textBoxDataType.Text;
     BL.DESCRIPTION = textBoxDescription.Text;
     BL.LAYERNAME   = textBoxLayerName.Text;
     BL.MAPNUM      = textBoxMapNum.Text;
     BL.PROJECTION  = textBoxProjection.Text;
     BL.DATAFORMAT  = textBoxDataformat.Text;
     BL.DATAGETDATE = dateTimePickerDatagetdate.Value;
     BL.DATASOURCES = comboBoxDatasource.Text;
     BL.REGION      = treeComboBoxArea.areacodetext.PadRight(9, '0');
 }
コード例 #8
0
ファイル: ImportToGDB.cs プロジェクト: jzChia/demo
        private void buttonOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            switch (nowDT)
            {
            case enumDataType.raster:
                ofd.Filter = "栅格数据|*.tif;*.img;*.pix;*.bmp;*.jpg";
                break;

            case enumDataType.dem:
                ofd.Filter = "地形数据|*.tif;*.img;*.pix;*.grd;*.dem";
                break;

            case enumDataType.vector:
                ofd.Filter = "矢量数据|*.shp;*.e00;*.dwg;*.bmp;*.mif";
                break;

            default:
                ofd.Filter = "数据|*.*";
                break;
            }

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                FormMetaData frmMD;

                textBoxImport.Text = ofd.FileName;
                ILayer pLayer = GetILayerFromPath(ofd.FileName);
                if (pLayer != null)
                {
                    frmMD = new FormMetaData(pLayer);
                }
                else
                {
                    frmMD = new FormMetaData(ofd.FileName);
                }

                if (frmMD.ShowDialog() == DialogResult.OK)
                {
                    this.rstLayer = frmMD.rstLayer;
                    this.vctLayer = frmMD.vctLayer;
                    this.fleLayer = frmMD.fleLayer;
                }
            }
        }
コード例 #9
0
        private void Control2Raster(out Demo.Entities.RasterLayer RL)
        {
            RL = new Demo.Entities.RasterLayer();
            Control2Base(out RL);
            if (RL == null)
            {
                return;
            }

            RL.BANDCOUNT   = Convert.ToInt64(textBoxRBandCount.Text);
            RL.HEIGHT      = Convert.ToInt64(textBoxRHeight.Text);
            RL.ISVISIBLE   = Convert.ToBoolean(textBoxRVisible.Text);
            RL.MAXX        = Convert.ToSingle(textBoxRMaxX.Text);
            RL.MAXY        = Convert.ToSingle(textBoxRMaxY.Text);
            RL.MINX        = Convert.ToSingle(textBoxRMinX.Text);
            RL.MINY        = Convert.ToSingle(textBoxRMinY.Text);
            RL.NODATAVALUE = Convert.ToSingle(textBoxRNoDataValue.Text);
            RL.WIDTH       = Convert.ToInt64(textBoxRWidth.Text);
            RL.RESOLUTION  = Convert.ToSingle(textBoxRResolution.Text);
        }
コード例 #10
0
        private void buttonExport_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "xml 文件|*.xml";

            sfd.RestoreDirectory = true;

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                string filename = sfd.FileName;
                if (!filename.EndsWith(".xml"))
                {
                    filename += ".xml";
                }
                if (Mode == 0)
                {
                    Demo.Entities.RasterLayer RL = new Demo.Entities.RasterLayer();
                    Control2Raster(out RL);

                    xmlSerialize.Serialize <Demo.Entities.RasterLayer>(RL, filename);
                }
                else if (Mode == 1)
                {
                    VectorLayer vl = new VectorLayer();
                    Control2Vector(out vl);
                    xmlSerialize.Serialize <VectorLayer>(vl, filename);
                }
                else if (Mode == 2)
                {
                    FileLayer fl = new FileLayer();
                    Control2File(out fl);
                    xmlSerialize.Serialize <FileLayer>(fl, filename);
                }
                else
                {
                    MessageBox.Show("未知文件类型,请重新导出!");
                }
            }
        }
コード例 #11
0
ファイル: MainForm.cs プロジェクト: jzChia/demo
        /// <summary>
        /// 导出到本地
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripMenuItem2_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode.Parent.Tag.ToString().Equals("RASTER_LAYERS"))
            {
                FolderBrowserDialog fbd = new FolderBrowserDialog();
                if (fbd.ShowDialog() == DialogResult.OK)
                {
                    Demo.Entities.RasterLayer rstLyr = Demo.Entities.RasterLayer.GetRasterIndexById(treeView1.SelectedNode.Tag.ToString());
                    URI    uri              = new URI();
                    string sourceFileName   = uri.GetServerTruePath(rstLyr.URI);
                    string destFileNickName = fbd.SelectedPath + "\\" + System.IO.Path.GetFileName(sourceFileName);
                    Transfer.RasterReadHelper destRstInfo = new Transfer.RasterReadHelper(destFileNickName);
                    string destFileName = fbd.SelectedPath + "\\" + destRstInfo.NameWithoutExtension + destRstInfo.Extension;

                    Guid         taskID       = Guid.NewGuid();
                    TransferTask transferTask = new TransferTask(taskID, sourceFileName, destFileName, TaskType.Download, RenameMode.Accumulate, TaskCategory.Raster, (int)rstLyr.LAYERSIZE);
                    transferTaskListControl1.AddTask(transferTask);
                }
            }
            else if (treeView1.SelectedNode.Parent.Tag.ToString().Equals("VECTOR_LAYERS"))
            {
                FolderBrowserDialog fbd = new FolderBrowserDialog();
                if (fbd.ShowDialog() == DialogResult.OK)
                {
                    VectorLayer vctLyr                      = VectorLayer.GetVectorIndexById(treeView1.SelectedNode.Tag.ToString());
                    URI         uri                         = new URI();
                    string      sourceFileName              = uri.GetServerTruePath(vctLyr.URI);
                    string      destFileNickName            = fbd.SelectedPath + "\\" + System.IO.Path.GetFileName(sourceFileName);
                    Transfer.FeatureReadHelper destFeatInfo = new Transfer.FeatureReadHelper(destFileNickName);
                    string destFileName                     = fbd.SelectedPath + "\\" + destFeatInfo.NameWithoutExtension;

                    Guid         taskID       = Guid.NewGuid();
                    TransferTask transferTask = new TransferTask(taskID, sourceFileName, destFileName, TaskType.Download, RenameMode.Accumulate, TaskCategory.Features, (int)vctLyr.LAYERSIZE);
                    transferTaskListControl1.AddTask(transferTask);
                }
            }
        }
コード例 #12
0
ファイル: MainForm.cs プロジェクト: jzChia/demo
        protected override void DefWndProc(ref System.Windows.Forms.Message m)
        {
            switch (m.Msg)
            {
            case WM_COPYDATA:
            {
                COPYDATASTRUCT mystr  = new COPYDATASTRUCT();
                Type           mytype = mystr.GetType();
                mystr = (COPYDATASTRUCT)m.GetLParam(mytype);
                TransferTask currentTask = transferTaskListControl1.GetTaskByID(new Guid(mystr.lpData.Substring(0, mystr.cbData)));
                if (currentTask != null)
                {
                    transferTaskListControl1.CompleteTask(currentTask);

                    //写入元数据
                    TemplateMetaData metaData;
                    MetaDts.TryGetValue(currentTask.ID, out metaData);

                    if (currentTask.Type == TaskType.Upload)
                    {
                        switch (metaData.MetaDataType)
                        {
                        case EnumMetaDataType.Raster:
                        {
                            Demo.Entities.RasterLayer rstLyr = metaData.LayerData as Demo.Entities.RasterLayer;
                            rstLyr.LAYERSIZE = (long)currentTask.Size;
                            if (Demo.Entities.RasterLayer.ImportRasterIndex(rstLyr) == 1)
                            {
                                //MessageBox.Show("元数据保存成功!");
                            }
                            else
                            {
                                MessageBox.Show("元数据保存失败!");
                            }
                            break;
                        }

                        case EnumMetaDataType.Features:
                        {
                            VectorLayer vecLyr = metaData.LayerData as VectorLayer;
                            vecLyr.LAYERSIZE = (long)currentTask.Size;
                            if (VectorLayer.ImportVectorIndex(vecLyr) == 1)
                            {
                                //MessageBox.Show("元数据保存成功!");
                            }
                            else
                            {
                                MessageBox.Show("元数据保存失败!");
                            }
                            break;
                        }

                        case EnumMetaDataType.Files:
                        {
                            FileLayer fileLyr = metaData.LayerData as FileLayer;
                            fileLyr.LAYERSIZE = (long)currentTask.Size;
                            if (FileLayer.ImportFileIndex(fileLyr) == 1)
                            {
                                //MessageBox.Show("元数据保存成功!");
                            }
                            else
                            {
                                MessageBox.Show("元数据保存失败!");
                            }
                            break;
                        }
                        }
                    }
                    else
                    {
                    }
                }
                break;
            }

            default:
                base.DefWndProc(ref m);
                break;
            }
        }
コード例 #13
0
        public static List <RasterLayer> GetRasterLayerBySearchConditions(string dbName, SearchConditions sc)
        {
            if (String.IsNullOrEmpty(dbName) || sc == null)
            {
                return(null);
            }

            List <RasterLayer> RLs = new List <RasterLayer>();

            OracleConnection oraRasterConn;
            OracleCommand    oraCMD;
            OracleDataReader oraDataReader;

            oraRasterConn = DBCon.OraConOpen();;

            StringBuilder sql;

            sql = new StringBuilder("SELECT * FROM RASTER_LAYERS WHERE 1=1 AND DBNAME='" + dbName + "' ");

            if (sc.area.Count > 0)
            {
                sql.Append("AND ( ");
                foreach (string s in sc.area)
                {
                    sql.Append("  REGION LIKE '" + s + "'  OR ");
                }
                sql.Append("1<>1 )");
            }

            if (sc.datasource.Count > 0)
            {
                sql.Append("AND ( ");
                foreach (string s in sc.datasource)
                {
                    sql.Append(" AND DATASOURCES='" + s + "'  OR ");
                }
                sql.Append("1<>1 )");
            }


            if (sc.scale.Count > 0 && sc.scale.Count == 2)
            {
                sql.Append(" AND SCALE BETWEEN " + sc.scale[0] + " AND " + sc.scale[1]);
            }

            if (sc.resolution.Count > 0 && sc.resolution.Count == 2)
            {
                sql.Append(" AND RESOLUTION BETWEEN " + sc.resolution[0] + " AND " + sc.resolution[1]);
            }

            if (!String.IsNullOrEmpty(sc.keywords))
            {
                sql.Append(" AND (LAYERNAME LIKE '" + sc.keywords + "%' OR DESCRIPTION LIKE '%" + sc.keywords + "%')");
            }

            oraCMD = new OracleCommand(sql.ToString(), oraRasterConn);


            try { oraDataReader = oraCMD.ExecuteReader(); }
            catch { return(null); }

            if (!oraDataReader.HasRows)
            {
                return(null);
            }

            RasterLayer RL;

            while (oraDataReader.Read())
            {
                int fieldCount = oraDataReader.FieldCount;
                RL = new RasterLayer();
                for (int i = 0; i < fieldCount; i++)
                {
                    string fieldName = oraDataReader.GetName(i).ToString();
                    if (fieldName.Equals("XMLFILE"))
                    {
                        try
                        {
                            byte[] data = (byte[])oraDataReader["XMLFILE"];

                            UTF8Encoding enc = new UTF8Encoding(true, true);//如果blob数据原本为utf8编码
                            RL.XMLFILE = System.Text.Encoding.UTF8.GetString(data);
                        }
                        catch
                        {
                            RL.XMLFILE = "";
                        }
                    }
                    else
                    {
                        RL = InitRasterData(RL, oraDataReader[fieldName], fieldName);
                    }
                }

                RLs.Add(RL);
            }
            oraRasterConn.Close();
            oraCMD.Dispose();

            return(RLs);
        }
コード例 #14
0
        private static RasterLayer InitRasterData(RasterLayer RL, object obj, string fieldName)
        {
            try
            {
                switch (fieldName)
                {
                case "LAYERID": RL.LAYERID = Convert.ToString(obj); break;

                case "AUTHOR": RL.AUTHOR = Convert.ToString(obj); break;

                case "BANDCOUNT": RL.BANDCOUNT = Convert.ToInt64(obj); break;

                case "CREATETIME": RL.CREATETIME = Convert.ToString(obj); break;

                case "DATATYPE": RL.DATATYPE = Convert.ToString(obj); break;

                case "DBNAME": RL.DBNAME = Convert.ToString(obj); break;

                case "DESCRIPTION": RL.DESCRIPTION = Convert.ToString(obj); break;

                case "HEIGHT": RL.HEIGHT = Convert.ToInt64(obj); break;

                case "LAYERSIZE": RL.LAYERSIZE = Convert.ToInt64(obj); break;

                case "ISEXIST": RL.ISEXIST = Convert.ToBoolean(Convert.ToInt32(obj)); break;

                case "ISVISIBLE": RL.ISVISIBLE = Convert.ToBoolean(Convert.ToInt32(obj)); break;

                case "LAYERNAME": RL.LAYERNAME = Convert.ToString(obj); break;

                case "MAPNUM": RL.MAPNUM = Convert.ToString(obj); break;

                case "MAXX": RL.MAXX = Convert.ToSingle(obj); break;

                case "MAXY": RL.MAXY = Convert.ToSingle(obj); break;

                case "MINX": RL.MINX = Convert.ToSingle(obj); break;

                case "MINY": RL.MINY = Convert.ToSingle(obj); break;

                case "NODATAVALUE": RL.NODATAVALUE = Convert.ToSingle(obj); break;

                case "PROJECTION": RL.PROJECTION = Convert.ToString(obj); break;

                case "RESOLUTION": RL.RESOLUTION = Convert.ToSingle(obj); break;

                case "SCALE": RL.SCALE = Convert.ToInt64(obj); break;

                case "URI": RL.URI = Convert.ToString(obj); break;

                case "WIDTH": RL.WIDTH = Convert.ToInt64(obj); break;

                case "QUERYGRADER": RL.QUERYGRADER = Convert.ToInt32(obj); break;

                case "GETGRADER": RL.GETGRADER = Convert.ToInt32(obj); break;

                case "REGION": RL.REGION = Convert.ToString(obj); break;

                case "DATAGETDATE": RL.DATAGETDATE = Convert.ToDateTime(obj); break;

                case "DATAFORMAT": RL.DATAFORMAT = Convert.ToString(obj); break;

                case "DATASOURCES": RL.DATASOURCES = Convert.ToString(obj); break;

                default: break;
                }
            }
            catch
            {
                errMSG = fieldName + ";";
            }

            return(RL);
        }
コード例 #15
0
        public static int ImportRasterIndex(RasterLayer RL, string xmlfile)
        {
            OracleConnection oraRasterConn;
            OracleCommand    oraCMD;

            oraRasterConn = DBCon.OraConOpen();

            //string sql;

            StringBuilder sql;

            sql = new StringBuilder("INSERT INTO RASTER_LAYERS(LAYERID,LAYERNAME,DBNAME,URI,MAPNUM,SCALE,PROJECTION,AUTHOR," +
                                    "CREATETIME,DATATYPE,DESCRIPTION,BANDCOUNT,MINX,MAXX,MINY,MAXY,HEIGHT,WIDTH,RESOLUTION," +
                                    "NODATAVALUE,ISVISIBLE,LAYERSIZE,ISEXIST,QUERYGRADER,GETGRADER,REGION,DATAGETDATE,DATAFORMAT,DATASOURCES");
            if (!String.IsNullOrEmpty(xmlfile))
            {
                sql.Append(",XMLFILE ");
            }
            sql.Append(")  VALUES(sys_guid(),:p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9, :p10, :p11, :p12, :p13," +
                       " :p14, :p15, :p16, :p17, :p18, :p19, :p20,:p21,:p22,:p23,:p24,:p25,:p26,:p27,:p28");
            if (!String.IsNullOrEmpty(xmlfile))
            {
                sql.Append(",:p29");
            }
            sql.Append(")");
            oraCMD = new OracleCommand(sql.ToString(), oraRasterConn);
            oraCMD.Parameters.Add(":p1", RL.LAYERNAME);
            oraCMD.Parameters.Add(":p2", RL.DBNAME);
            oraCMD.Parameters.Add(":p3", RL.URI);
            oraCMD.Parameters.Add(":p4", RL.MAPNUM);
            oraCMD.Parameters.Add(":p5", RL.SCALE);
            oraCMD.Parameters.Add(":p6", RL.PROJECTION);
            oraCMD.Parameters.Add(":p7", RL.AUTHOR);
            oraCMD.Parameters.Add(":p8", RL.CREATETIME);
            oraCMD.Parameters.Add(":p9", RL.DATATYPE);
            oraCMD.Parameters.Add(":p10", RL.DESCRIPTION);
            oraCMD.Parameters.Add(":p11", RL.BANDCOUNT);
            oraCMD.Parameters.Add(":p12", RL.MINX);
            oraCMD.Parameters.Add(":p13", RL.MAXX);
            oraCMD.Parameters.Add(":p14", RL.MINY);
            oraCMD.Parameters.Add(":p15", RL.MAXY);
            oraCMD.Parameters.Add(":p16", RL.HEIGHT);
            oraCMD.Parameters.Add(":p17", RL.WIDTH);
            oraCMD.Parameters.Add(":p18", RL.RESOLUTION);
            oraCMD.Parameters.Add(":p19", RL.NODATAVALUE);
            oraCMD.Parameters.Add(":p20", Convert.ToInt64(RL.ISVISIBLE));
            oraCMD.Parameters.Add(":p21", RL.LAYERSIZE);
            oraCMD.Parameters.Add(":p22", Convert.ToInt64(RL.ISEXIST));
            oraCMD.Parameters.Add(":p23", RL.QUERYGRADER);
            oraCMD.Parameters.Add(":p24", RL.GETGRADER);
            oraCMD.Parameters.Add(":p25", RL.REGION);
            oraCMD.Parameters.Add(":p26", RL.DATAGETDATE);
            oraCMD.Parameters.Add(":p27", RL.DATAFORMAT);
            oraCMD.Parameters.Add(":p28", RL.DATASOURCES);

            if (!String.IsNullOrEmpty(xmlfile))
            {
                oraCMD.Parameters.Add(":p29", OraBlob.WriteBolb(xmlfile));
            }


            int result = oraCMD.ExecuteNonQuery();

            oraRasterConn.Close();
            oraCMD.Dispose();

            return(result);
        }
コード例 #16
0
 public static int ImportRasterIndex(RasterLayer RL)
 {
     return(ImportRasterIndex(RL, null));
 }