예제 #1
0
        /// <summary>
        /// 查询数据,将查询到的结果放到新建的 temp 类中
        /// </summary>
        /// <param name="className">要查询的类的名字</param>
        /// <param name="search">查询语句</param>
        /// <param name="tempClass">要创建的临时类</param>
        /// <returns></returns>
        public static bool SearchData(string className, string search, string tempClass)
        {
            //定义变量
            IVectorCls VectorCls = new SFeatureCls();
            //打开简单要素类
            bool rtn = VectorCls.Open("GDBP://MapGisLocal/Templates/sfcls/" + className);

            if (!rtn)
            {
                PUMessageBox.ShowDialog("简单要素类 " + className + " 打开失败", "失败");
                return(false);
            }

            QueryDef def = new QueryDef();

            //设置属性查询条件
            def.Filter = search;
            //查询要素
            RecordSet recordSet = VectorCls.Select(def);

            if (recordSet != null)
            {
                int num = recordSet.Count;
            }
            else
            {
                return(false);
            }

            Server svr = new Server();

            //连接数据源
            svr.Connect("MapGISLocal", "", "");
            DataBase    GDB      = svr.OpenGDB("templates");
            SFeatureCls tmpSFCls = new SFeatureCls(GDB);
            int         id       = tmpSFCls.Create(tempClass, GeomType.Pnt, 0, 0, null);

            if (id == 0)
            {
                bool temp = SFeatureCls.Remove(GDB, tempClass);
                id = tmpSFCls.Create(tempClass, GeomType.Pnt, 0, 0, null);
                if (id == 0)
                {
                    PUMessageBox.ShowDialog("无法操作简单要素类,请检查是否有其他进程正在使用 " + tempClass, "失败");
                    return(false);
                }
            }

            rtn = tmpSFCls.CopySet(recordSet);
            if (rtn == false)
            {
                tmpSFCls.Close();
                SFeatureCls.Remove(GDB, id);
            }
            //关闭类
            VectorCls.Close();
            return(true);
        }
예제 #2
0
        /// <summary>
        /// 向数据库添加点数据
        /// </summary>
        public static bool ImportSFCLSData(DataTable dataTable, string className)
        {
            DataBase gdb = DataBase.OpenByURL("GDBP://MapGisLocal/Templates");
            //打开简单要素类
            SFeatureCls sfcls = gdb.GetXClass(XClsType.SFCls) as SFeatureCls;
            bool        op    = sfcls.Open(className, 0);

            GeoPoints pnts   = null;
            Dot3D     newdot = new Dot3D();
            //PntInfo pntInfo = new PntInfo();

            int i = 0;

            foreach (DataRow dr in dataTable.Rows)
            {
                double.TryParse(dr["x 坐标"].ToString(), out double x);
                double.TryParse(dr["y 坐标"].ToString(), out double y);
                //点要素坐标
                newdot.X = y;
                newdot.Y = x;
                newdot.Z = 0;
                pnts     = new GeoPoints();
                pnts.Append(newdot);

                Record rcd  = new Record();
                Fields Flds = sfcls.Fields;
                if (Flds == null)
                {
                    return(false);
                }

                PntInfo pntInfo = new PntInfo();
                //点参数
                pntInfo.LibID  = 0;
                pntInfo.SymID  = 1;
                pntInfo.Width  = 10;
                pntInfo.Height = 10;


                rcd.Fields = Flds;

                //设置属性字段的值
                rcd.set_FldVal(1, (i++).ToString());
                rcd.set_FldVal(2, dr["车牌"].ToString());
                string time = dr["时间"].ToString().Replace('T', ' ');
                rcd.set_FldVal(3, time);
                rcd.set_FldVal(4, time);
                rcd.set_FldVal(5, x);
                rcd.set_FldVal(6, y);

                //添加点要素
                long oid = sfcls.Append(pnts, rcd, pntInfo);
            }

            Debug.WriteLine("Done.");
            return(true);
        }
예제 #3
0
        private void 添加图层ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //判断地图视图中是否有处于显示状态中的地图
            if (this.mapCtrl.ActiveMap == null)
            {
                MessageBox.Show("请先在地图视图中显示一幅地图!!!");
                return;
            }

            //选择待添加的图层
            GDBOpenFileDialog ofDlg = new GDBOpenFileDialog();

            //ofDlg.Filter = "简单要素类、注记类|sfcls;acls";
            if (ofDlg.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            string fileName = ofDlg.FileName;

            IVectorCls sfcls = new SFeatureCls();

            if (sfcls.Open(fileName))
            {
                MessageBox.Show("打开成功");
            }
            else
            {
                MessageBox.Show("打开失败");
            }
            return;

            this._Tree.WorkSpace.BeginUpdateTree();

            //附加矢量图层
            VectorLayer vecLayer = new VectorLayer(VectorLayerType.SFclsLayer);

            vecLayer.AttachData(sfcls);
            //将图层添加到地图中
            vecLayer.Name = sfcls.ClsName;
            //获取激活地图
            Map activeMap = this.mapCtrl.ActiveMap;

            activeMap.Append(vecLayer);
            //复位
            this.mapCtrl.ActiveMap = activeMap;
            this.mapCtrl.Restore();

            this._Tree.WorkSpace.EndUpdateTree();

            return;
        }
예제 #4
0
        /// <summary>
        /// 获取一天的骑行量
        /// </summary>
        /// <returns></returns>
        public static double[] GetOneDayData(string className)
        {
            //0:00 1:00 ... 23:00
            double[] results = new double[24] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };

            //定义变量
            IVectorCls VectorCls = new SFeatureCls();
            //打开简单要素类
            bool rtn = VectorCls.Open("GDBP://MapGisLocal/Templates/sfcls/" + className);

            if (!rtn)
            {
                PUMessageBox.ShowDialog("简单要素类 " + className + " 打开失败", "失败");
                return(null);
            }

            QueryDef  def       = new QueryDef();
            RecordSet recordSet = null;

            for (int i = 0; i < 23; i++)
            {
                //设置属性查询条件
                def.Filter = "ParkTime > '" + i + ":00:00' AND ParkTime < '" + (i + 1).ToString() + ":00:00'";
                //查询要素
                recordSet = VectorCls.Select(def);
                if (recordSet != null)
                {
                    results[i] = recordSet.Count;
                }
            }

            def.Filter = "ParkTime > '23:00:00'";
            //查询要素
            recordSet = VectorCls.Select(def);
            if (recordSet != null)
            {
                results[23] = recordSet.Count;
            }

            //关闭类
            VectorCls.Close();
            return(results);
        }
        /// <summary>
        /// 获取类的所有字段显示到列表中
        /// </summary>
        /// <param name="className"></param>
        private void ShowFlds(string className)
        {
            AttrListView.Items.Clear();
            FldsNames = new List <string>();

            //打开选中的简单要素类
            Server svr = new Server();

            svr.Connect("MapGISLocal", "", "");
            DataBase    GDB   = svr.OpenGDB("Templates");
            SFeatureCls SFCls = new SFeatureCls(GDB);

            SFCls.Open(className, 0);

            Fields Flds = null; //获取属性结构
            Field  Fld  = null; //获取属性字段信息

            Fld  = new Field();
            Flds = new Fields();

            //直接取它的属性结构
            Flds = SFCls.Fields;
            if (Flds == null)
            {
                return;
            }

            //可以查看属性结构对象中的字段数目
            int cou = Flds.Count;

            //获取属性字段
            int i = 0;

            while (i < cou)
            {
                Fld = Flds.GetItem(i);
                AttrListView.Items.Add(Fld.FieldName + " (" + GetFieldTypeText(Fld.FieldType) + ")");
                FldsNames.Add(Fld.FieldName);
                i++;
            }
            SFCls.Close();
        }
예제 #6
0
        /// <summary>
        /// 获取热点数据
        /// </summary>
        /// <param name="className"></param>
        /// <returns></returns>
        public static double[] GetGeoHeatMapData(string className)
        {
            double[] results = new double[81];
            for (int i = 0; i < 81; i++)
            {
                results[i] = 0;
            }

            //定义变量
            IVectorCls VectorCls = new SFeatureCls();
            //打开简单要素类
            bool rtn = VectorCls.Open("GDBP://MapGisLocal/Templates/sfcls/" + className);

            if (!rtn)
            {
                PUMessageBox.ShowDialog("简单要素类 " + className + " 打开失败", "失败");
                return(null);
            }

            QueryDef  def       = new QueryDef();
            RecordSet recordSet = null;
            int       index     = 0;
            double    xStart    = 113.750;
            double    yStart    = 31.000;

            for (int y = 0; y < 9; y++)
            {
                for (int x = 0; x < 9; x++)
                {
                    def.Filter = "yAsis > " + (xStart + 0.125 * x).ToString() + " AND yAsis < " + (xStart + 0.125 * x + 0.125).ToString() + " AND xAsis < " + (yStart - 0.125 * y).ToString() + " AND xAsis > " + (yStart - 0.125 * y - 0.125) + "";
                    recordSet  = VectorCls.Select(def);
                    if (recordSet != null)
                    {
                        results[index++] = recordSet.Count;
                    }
                }
            }

            //关闭类
            VectorCls.Close();
            return(results);
        }
예제 #7
0
        private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //定义数据源
            Server svr = new Server();

            //连接数据源
            if (svr.Connect("MapGISLocal", "", ""))
            {
                ;
            }
            {
                //打开数据库
                DataBase gdb = svr.OpenGDB("sample");
                if (gdb != null)
                {
                    //打开简单要素类
                    SFeatureCls sfcls = new SFeatureCls(gdb);
                    if (sfcls.Open("等值线", 0))
                    {
                        MessageBox.Show("读取数据成功");
                        //显示简单要素类,实例地图显示控件
                        //实例化地图显示控件
                        MapControl mapCtrl = new MapControl();
                        mapCtrl.Dock = DockStyle.Fill;
                        //添加控件
                        this.splitContainer1.Panel2.Controls.Add(mapCtrl);
                        //创建图层
                        VectorLayer layer = new VectorLayer(VectorLayerType.SFclsLayer);
                        if (layer.AttachData(sfcls))
                        {
                            Map map = new Map();
                            map.Append(layer);
                            mapCtrl.ActiveMap = map;
                            //复位显示地图
                            mapCtrl.Restore();
                        }
                    }
                }
            }
        }
예제 #8
0
        private void  择ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Map      acMap    = this.mapCtrl.ActiveMap;
            MapLayer mapLayer = null;

            if (acMap.LayerCount > 0)
            {
                mapLayer = acMap.get_Layer(0);
            }
            SFeatureCls Sfcls  = mapLayer.GetData() as SFeatureCls;
            FileLayer6x file6x = mapLayer as FileLayer6x;

            VectorLayer veclayer = file6x.get_Item(0) as VectorLayer;

            Sfcls = veclayer.GetData() as SFeatureCls;

            SFeatureCls tesfcl = new SFeatureCls();

            if (!tesfcl.Open("file:///c:\\users\\tangchao\\desktop\\ppp.wp"))
            {
                int i = 0;
            }

            QueryDef def = new QueryDef();

            def.Filter = "NAME=吉林省";
            RecordSet rst = Sfcls.Select(def);

            this.mapCtrl.FlashSelectSet();
            //设置为拉框查询
            SelectType seltype = SelectType.Rectangle;

            //创建拉框选择类对象
            mapCtrl.SetBasTool(null);
            CirSelectToolClass basTool = new CirSelectToolClass(mapCtrl, SelectDataType.Anyone, attCtrl, seltype);

            mapCtrl.SetBasTool(basTool);
        }
예제 #9
0
        /// <summary>
        /// 获取简单要素类列表
        /// </summary>
        /// <param name="url">要打开的地理数据库的url</param>
        /// <returns></returns>
        public static List <string> GetXClasses(string url)
        {
            List <string> names = new List <string>();
            Server        Svr   = new Server();

            Svr.Connect("MapGISLocal", "", "");
            DataBase GDB = Svr.OpenGDB("Templates");

            int count;

            List <int> dsIDs   = null; //要素数据集ID列表
            List <int> sfIDs   = null; //要素数据集中矢量类的ID列表
            List <int> dbSFIDs = null; //数据库中矢量类的ID列表

            List <string> allnames = new List <string>();

            //先查找要素数据集中的矢量类信息
            if (true)
            {
                dsIDs = GDB.GetXclses(XClsType.Fds, 0);

                if (dsIDs != null)
                {
                    count = dsIDs.Count;

                    while (count > 0)
                    {
                        sfIDs = GDB.GetXclses(XClsType.SFCls, dsIDs[count - 1]);
                        if (sfIDs == null)
                        {
                            break;
                        }

                        int n = sfIDs.Count;
                        while (n > 0)
                        {
                            string ClsName = GDB.GetXclsName(XClsType.SFCls, sfIDs[n - 1]);
                            string FdsName = GDB.GetXclsName(XClsType.Fds, dsIDs[count - 1]);
                            allnames.Add(sfIDs[n - 1].ToString() + ". " + ClsName);

                            allnames.Add(dsIDs[count - 1].ToString() + ". " + FdsName);
                            n--;
                        }
                        count--;
                    }
                }
            }

            //再查找数据库中的矢量类,如果查询的是要素数据集,则只需要执行下面语句就可以了
            dbSFIDs = GDB.GetXclses(XClsType.SFCls, 0);
            if (dbSFIDs != null)
            {
                count = dbSFIDs.Count;
                while (count > 0)
                {
                    string SFName = GDB.GetXclsName(XClsType.SFCls, dbSFIDs[count - 1]);
                    allnames.Add(dbSFIDs[count - 1].ToString() + " " + SFName);

                    //如果是简单要素类,则添加其几何类型
                    if (true)
                    {
                        SFeatureCls sfcls = new SFeatureCls(GDB);
                        sfcls.Open(SFName, 0);
                        sfcls.Close();
                    }
                    count--;
                }
            }
            return(allnames);
        }
예제 #10
0
        /// <summary>
        /// 创建简单要素类
        /// </summary>
        /// <param name="layerName">要素类名</param>
        /// <param name="geomType">几何类型,枚举</param>
        /// <param name="gdbName">打开的地理数据库名</param>
        public static bool CreateXClass(string layerName, GeomType geomType, string gdbName, string[] fields)
        {
            //方法:指定类型、数据集ID,空间参考系,创建类
            Server      svr   = new Server();
            SFeatureCls sfcls = null;
            //连接数据源,打开数据库
            bool rtn = svr.Connect("MapGISLocal", "", "");

            if (rtn == true)
            {
                DataBase gdb = svr.OpenGDB(gdbName);
                //打开简单要素类
                sfcls = gdb.GetXClass(XClsType.SFCls) as SFeatureCls;
                //创建区类型的简单要素类
                int id = sfcls.Create(layerName, geomType, 0, 0, null);
                if (id <= 0)
                {
                    //关闭类、数据库、断开数据源
                    sfcls.Close();
                    gdb.Close();
                    svr.DisConnect();
                    return(false);
                }

                sfcls.Open(layerName, 0);
                Fields temp = sfcls.Fields;
                if (temp == null)
                {
                    temp = new Fields();
                }
                //Field adding = null;

                #region 添加属性

                //1: successful  0: failed
                int result = temp.AppendField(new Field
                {
                    FieldName   = "DataID",
                    FieldLength = 255,
                    FieldType   = FieldType.FldString,
                    Editable    = 1,
                    MskLength   = 15
                });

                result = temp.AppendField(new Field
                {
                    FieldName   = "BikeID",
                    FieldLength = 255,
                    FieldType   = FieldType.FldString,
                    Editable    = 1,
                    MskLength   = 15
                });

                result = temp.AppendField(new Field
                {
                    FieldName   = "ParkTime",
                    FieldType   = FieldType.FldTime,
                    Editable    = 1,
                    FieldLength = 10,
                    MskLength   = 10
                });

                result = temp.AppendField(new Field
                {
                    FieldName   = "Date",
                    FieldType   = FieldType.FldTime,
                    Editable    = 1,
                    FieldLength = 10,
                    MskLength   = 10
                });

                result = temp.AppendField(new Field
                {
                    FieldName   = "xAsis",
                    FieldLength = 255,
                    FieldType   = FieldType.FldDouble,
                    Editable    = 1,
                    MskLength   = 15
                });

                result = temp.AppendField(new Field
                {
                    FieldName   = "yAsis",
                    FieldLength = 255,
                    FieldType   = FieldType.FldDouble,
                    Editable    = 1,
                    MskLength   = 15
                });

                #endregion

                //foreach (var item in fields)
                //{
                //    adding = new Field
                //    {
                //        FieldName = item,
                //        FieldLength = 255,
                //        FieldType = FieldType.FldString,
                //        Editable = 1,
                //        MskLength = 15
                //    };
                //    int result = temp.AppendField(adding);  //1: successful  0: failed
                //}
                sfcls.Fields = temp;

                //关闭类、数据库、断开数据源
                sfcls.Close();
                gdb.Close();
                svr.DisConnect();

                if (id > 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
예제 #11
0
        private void 闪烁ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.mapCtrl.EndFlash();
            IVectorCls VectorCls = new SFeatureCls();

            if (!VectorCls.Open("file:///c:\\users\\tangchao\\desktop\\ppp.wp"))
            {
                int i = 0;
            }
//             DataConvert dc = new DataConvert();
//             if (dc.OpenSource(VectorCls) > 0 && dc.OpenDestination("c:\\users\\tangchao\\desktop\\ppptrr.wp") > 0)
//             {
//                 dc.Convert();
//             }
            QueryDef def1 = new QueryDef();

            def1.Filter = "NAME='黑龙江省            'or ID > 3";
            SelectOption option = null;

            option = new SelectOption();
            //类型是点、线、区、注记的图层均属于查询范围
            option.DataType = SelectDataType.AnyVector;
            //当前地图中所有图层
            option.LayerCtrl = SelectLayerControl.Visible;
            //多选
            option.SelMode = SelectMode.Multiply;
            //结果数据累加
            option.UnMode = UnionMode.Add;
            //查询
            SelectSet set = this.mapCtrl.ActiveMap.Select(def1, true, null, option);

            this.mapCtrl.FlashSelectSet();
            return;

            RecordSet rst1 = VectorCls.Select(def1);

            Map      acMap    = this.mapCtrl.ActiveMap;
            MapLayer mapLayer = null;

            if (acMap.LayerCount > 0)
            {
                mapLayer = acMap.get_Layer(0);
            }
            SFeatureCls Sfcls    = mapLayer.GetData() as SFeatureCls;
            FileLayer6x file6x   = mapLayer as FileLayer6x;
            VectorLayer veclayer = file6x.get_Item(0) as VectorLayer;

            Sfcls = veclayer.GetData() as SFeatureCls;

            QueryDef def = new QueryDef();

            def.Filter = "ID>6";
            RecordSet rst = Sfcls.Select(def);

            if (rst == null || rst.Count == 0)
            {
                MessageBox.Show("未查询到数据");
                return;
            }
            this.attCtrl.SetXCls(Sfcls, rst);
            SelectSet sleset = this.mapCtrl.ActiveMap.GetSelectSet();

            sleset.Append(mapLayer, rst);
            this.mapCtrl.FlashSelectSet();
        }
        /// <summary>
        /// 矩形查询
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void PUButton_Click_19(object sender, RoutedEventArgs e)
        {
            if (!(Regex.IsMatch(XMaxTextBox.Text, "^[\\d.]+$") && Regex.IsMatch(XMinTextBox.Text, "^[\\d.]+$") && Regex.IsMatch(YMaxTextBox.Text, "^[\\d.]+$") && Regex.IsMatch(YMinTextBox.Text, "^[\\d.]+$")))
            {
                PUMessageBox.ShowDialog("输入的内容不符合规范");
                return;
            }
            string sql          = "xAsis < " + XMaxTextBox.Text + " AND xAsis > " + XMinTextBox.Text + " AND yAsis < " + YMaxTextBox.Text + " AND yAsis > " + YMinTextBox.Text;
            bool   searchResult = DataHelper.SearchData("BikePnts", sql, "RectangleSearchResult");

            if (searchResult == true)
            {
                Fields Flds = null;
                Field  Fld  = null;
                long   ID   = 0;
                Record Rcd  = null;

                //变量初始化
                Rcd  = new Record();
                Flds = new Fields();

                Server svr = new Server();
                //连接数据源
                svr.Connect("MapGISLocal", "", "");
                DataBase    GDB   = svr.OpenGDB("Templates");
                SFeatureCls SFCls = new SFeatureCls(GDB);
                SFCls.Open("RectangleSearchResult", 0);
                //获取属性结构
                Flds = SFCls.Fields;
                if (Flds == null)
                {
                    SFCls.Close();
                    SearchTabControl.Visibility = Visibility.Collapsed;
                    SearchResultGrid.Visibility = Visibility.Collapsed;
                    NoResultGrid.Visibility     = Visibility.Visible;
                    return;
                }
                int num = Flds.Count;

                //目的类对象的个数
                int objnum = SFCls.Count;

                //获取所有对象的ID,思想是根据对象的个数进行循环,若OID不存在,则OID自加继续循环直到循环objnum次
                int n = 0;
                ID = 1;

                string[] listItem = new string[8];
                SearchListView.Items.Clear();
                while (n < objnum)
                {
                    //取得ID=ID.Int的简单要素的属性
                    Rcd = SFCls.GetAtt(ID);

                    //取得属性结构对象中的字段数目
                    if (Rcd != null)
                    {
                        Flds = Rcd.Fields;

                        listItem[0] = ID.ToString();

                        //获取对应属性字段的值
                        for (int i = 0; i < num; i++)
                        {
                            object val = null;
                            Fld = Flds.GetItem(i);
                            string name = Fld.FieldName;
                            val             = Rcd.get_FldVal(name);
                            listItem[i + 1] = ((val != null) ? val.ToString() : "");
                        }
                        n++;
                        SearchListView.Items.Add(new { BikeID = listItem[3], Time = listItem[4].Substring(9), XAsis = listItem[6].Substring(0, 8), YAsis = listItem[7].Substring(0, 8) });
                    }
                    ID++;
                }
                SFCls.Close();
                SearchTabControl.Visibility = Visibility.Collapsed;
                SearchResultGrid.Visibility = Visibility.Visible;
                NoResultGrid.Visibility     = Visibility.Collapsed;
            }
            else
            {
                SearchTabControl.Visibility = Visibility.Collapsed;
                SearchResultGrid.Visibility = Visibility.Collapsed;
                NoResultGrid.Visibility     = Visibility.Visible;
            }
        }
예제 #13
0
        /// <summary>
        /// 获取单车的距离和时间统计
        /// </summary>
        /// <param name="bikes"></param>
        /// <returns></returns>
        public static List <BikeSearchViewModel> GetLengthNTimeData(string className, string bikeid)
        {
            List <BikeSearchViewModel> searchResult = new List <BikeSearchViewModel>();

            bool haveResult = DataHelper.SearchData("BikePnts", "BikeID = '" + bikeid + "'", bikeid + "Temp");

            if (haveResult == false)
            {
                return(null);
            }
            Fields Flds = null;
            Field  Fld  = null;
            long   ID   = 0;
            Record Rcd  = null;

            //变量初始化
            Rcd  = new Record();
            Flds = new Fields();

            Server svr = new Server();

            //连接数据源
            svr.Connect("MapGISLocal", "", "");
            DataBase    GDB      = svr.OpenGDB("Templates");
            SFeatureCls tmpSFCls = new SFeatureCls(GDB);

            tmpSFCls.Open(bikeid + "Temp", 0);
            //获取属性结构
            Flds = tmpSFCls.Fields;
            if (Flds == null)
            {
                tmpSFCls.Close();
                return(null);
            }
            int num = Flds.Count;

            //目的类对象的个数
            int objnum = tmpSFCls.Count;

            //获取所有对象的ID,思想是根据对象的个数进行循环,若OID不存在,则OID自加继续循环直到循环objnum次
            int n = 0;

            ID = 1;

            string[] listItem = new string[8];
            while (n < objnum)
            {
                //取得ID=ID.Int的简单要素的属性
                Rcd = tmpSFCls.GetAtt(ID);

                //取得属性结构对象中的字段数目
                if (Rcd != null)
                {
                    Flds = Rcd.Fields;

                    listItem[0] = ID.ToString();

                    //获取对应属性字段的值
                    for (int j = 0; j < num; j++)
                    {
                        object val = null;
                        Fld = Flds.GetItem(j);
                        string name = Fld.FieldName;
                        val             = Rcd.get_FldVal(name);
                        listItem[j + 1] = ((val != null) ? val.ToString() : "");
                    }
                    n++;
                    BikeSearchViewModel bike = new BikeSearchViewModel
                    {
                        BikeID = listItem[3],
                        Time   = Convert.ToDateTime(listItem[4].Substring(9)),
                        XAsis  = Convert.ToDouble(listItem[6].Substring(0, 8)),
                        YAsis  = Convert.ToDouble(listItem[7].Substring(0, 8))
                    };
                    searchResult.Add(bike);
                }
                ID++;
            }
            tmpSFCls.Close();
            return(searchResult);
        }
예제 #14
0
        /// <summary>
        /// 搜索
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            SearchListView.Visibility       = Visibility.Collapsed;
            RideChart.Visibility            = Visibility.Collapsed;
            OnedayChart.Visibility          = Visibility.Collapsed;
            BackgroundStackPanel.Visibility = Visibility.Collapsed;
            NoResultStackPanel.Visibility   = Visibility.Collapsed;
            SearchListView.Items.Clear();
            bool searchResult = DataHelper.SearchData("BikePnts", "BikeID = '" + SearchTextBox.Text + "'", "SearchTemp");

            if (searchResult == true)
            {
                Fields Flds = null;
                Field  Fld  = null;
                long   ID   = 0;
                Record Rcd  = null;

                //变量初始化
                Rcd  = new Record();
                Flds = new Fields();

                Server svr = new Server();
                //连接数据源
                svr.Connect("MapGISLocal", "", "");
                DataBase    GDB   = svr.OpenGDB("Templates");
                SFeatureCls SFCls = new SFeatureCls(GDB);
                SFCls.Open("SearchTemp", 0);
                //获取属性结构
                Flds = SFCls.Fields;
                if (Flds == null)
                {
                    SFCls.Close();
                    OnedayChart.Visibility          = Visibility.Collapsed;
                    RideChart.Visibility            = Visibility.Collapsed;
                    SearchListView.Visibility       = Visibility.Collapsed;
                    BackgroundStackPanel.Visibility = Visibility.Collapsed;
                    NoResultStackPanel.Visibility   = Visibility.Visible;
                    return;
                }
                int num = Flds.Count;

                //目的类对象的个数
                int objnum = SFCls.Count;

                //获取所有对象的ID,思想是根据对象的个数进行循环,若OID不存在,则OID自加继续循环直到循环objnum次
                int n = 0;
                ID = 1;

                string[] listItem = new string[8];
                while (n < objnum)
                {
                    //取得ID=ID.Int的简单要素的属性
                    Rcd = SFCls.GetAtt(ID);

                    //取得属性结构对象中的字段数目
                    if (Rcd != null)
                    {
                        Flds = Rcd.Fields;

                        listItem[0] = ID.ToString();

                        //获取对应属性字段的值
                        for (int i = 0; i < num; i++)
                        {
                            object val = null;
                            Fld = Flds.GetItem(i);
                            string name = Fld.FieldName;
                            val             = Rcd.get_FldVal(name);
                            listItem[i + 1] = ((val != null) ? val.ToString() : "");
                        }
                        n++;
                        SearchListView.Items.Add(new { OID = listItem[0], BikeID = listItem[3], Time = listItem[4].Substring(9), XAsis = listItem[6].Substring(0, 8), YAsis = listItem[7].Substring(0, 8) });
                    }
                    ID++;
                }
                SFCls.Close();
                SearchListView.Visibility = Visibility.Visible;
            }
            else
            {
                OnedayChart.Visibility          = Visibility.Collapsed;
                RideChart.Visibility            = Visibility.Collapsed;
                SearchListView.Visibility       = Visibility.Collapsed;
                BackgroundStackPanel.Visibility = Visibility.Collapsed;
                NoResultStackPanel.Visibility   = Visibility.Visible;
            }
        }
예제 #15
0
        /// <summary>
        /// 导入数据后显示地图
        /// </summary>
        private void ShowMaps()
        {
            MapGrid.Visibility        = Visibility.Visible;
            BackgroundGrid.Visibility = Visibility.Collapsed;
            MapGIS.UI.Controls.MapWorkSpaceTree _Tree = new MapGIS.UI.Controls.MapWorkSpaceTree();
            //地图文档
            Document doc = _Tree.Document;

            if (doc.Close(false))
            {
                OpenFileDialog mapxDialog = new OpenFileDialog();
                mapxDialog.Filter = ".mapx(地图文档)|*.mapx|.map(地图文档)|*.map|.mbag(地图包)|*.mbag";
                if (mapxDialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                string mapUrl = mapxDialog.FileName;
                //打开地图文档
                doc.Open(mapUrl);
            }

            Maps maps = doc.GetMaps();

            if (maps.Count > 0)
            {
                //获取当前第一个地图
                Map map = maps.GetMap(0);
                //设置地图的第一个图层为激活状态
                map.get_Layer(0).State         = LayerState.Active;
                this.WuhanMapControl.ActiveMap = map;
                this.WuhanMapControl.Restore();
            }
            else
            {
                return;
            }

            disp            = WuhanMapControl.Display;
            userDrawGeoInfo = disp.GetUserDrawGeoInfo();
            pntInfo         = userDrawGeoInfo.GetPntInfo();

            EditGeomInfoForm pntInfoForm = new EditGeomInfoForm((VectorLayer)null, pntInfo);

            if (pntInfoForm.ShowDialog() == DialogResult.OK)
            {
            }
            pntInfoForm.Dispose();
            //画点
            Fields Flds = null;
            Field  Fld  = null;
            long   ID   = 0;
            Record Rcd  = null;

            //变量初始化
            Rcd  = new Record();
            Flds = new Fields();

            Server svr = new Server();

            //连接数据源
            svr.Connect("MapGISLocal", "", "");
            DataBase    GDB   = svr.OpenGDB("Templates");
            SFeatureCls SFCls = new SFeatureCls(GDB);

            SFCls.Open("BikePnts", 0);
            //获取属性结构
            Flds = SFCls.Fields;
            if (Flds == null)
            {
                SFCls.Close();
                return;
            }
            int num = Flds.Count;

            //目的类对象的个数
            int objnum = SFCls.Count;

            //获取所有对象的ID,思想是根据对象的个数进行循环,若OID不存在,则OID自加继续循环直到循环objnum次
            int n = 0;

            ID = 1;

            string[] listItem = new string[8];
            while (n < objnum)
            {
                //取得ID=ID.Int的简单要素的属性
                Rcd = SFCls.GetAtt(ID);

                //取得属性结构对象中的字段数目
                if (Rcd != null)
                {
                    Flds = Rcd.Fields;

                    listItem[0] = ID.ToString();

                    //获取对应属性字段的值
                    for (int i = 0; i < num; i++)
                    {
                        object val = null;
                        Fld = Flds.GetItem(i);
                        string name = Fld.FieldName;
                        val             = Rcd.get_FldVal(name);
                        listItem[i + 1] = ((val != null) ? val.ToString() : "");
                    }
                    n++;
                    Dot dot = new Dot();
                    dot.X = Convert.ToDouble(listItem[6]);
                    dot.Y = Convert.ToDouble(listItem[7]);
                    DrawPoint(dot);
                }
                ID++;
            }
            SFCls.Close();
        }