Example #1
0
        private void iQueryByLayerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Stopwatch myWatch = Stopwatch.StartNew();

            //从MapControl中获取的点图层
            IFeatureLayer     pointFeatureLayer     = axMapControl1.get_Layer(0) as IFeatureLayer;
            IFeatureSelection pointFeatureSelection = pointFeatureLayer as IFeatureSelection;
            //从MapControl中获取的面图层
            IFeatureLayer polygonFeatureLayer = axMapControl1.get_Layer(1) as IFeatureLayer;
            //构建QueryByLayer
            IQueryByLayer queryByLayer = new QueryByLayerClass();

            queryByLayer.FromLayer            = pointFeatureLayer;
            queryByLayer.ByLayer              = polygonFeatureLayer;
            queryByLayer.LayerSelectionMethod = esriLayerSelectionMethod.esriLayerSelectCompletelyWithin;
            //该参数需要设置
            queryByLayer.UseSelectedFeatures = false;
            ISelectionSet selectionSet = queryByLayer.Select();

            pointFeatureSelection.SelectionSet = selectionSet;
            int count = pointFeatureSelection.SelectionSet.Count;

            axMapControl1.Refresh();

            myWatch.Stop();
            string time = myWatch.Elapsed.TotalSeconds.ToString();

            MessageBox.Show("The selected point count is " + count.ToString() + "! and " + time + " Seconds");
        }
Example #2
0
        private long SpatialSelect(string sSedCoreLayer, string sSounderLayer, double dblRange, esriUnits eEsriUnitsContant)
        {
            IMxDocument       pmxdoc = ArcMap.Document as IMxDocument;
            IMap              pmap   = pmxdoc.FocusMap;
            IFeatureSelection pFSel  = FindLayer(pmap, sSedCoreLayer) as IFeatureSelection;
            //pFSel.Clear();

            IQueryByLayer pQBLayer = new QueryByLayerClass();

            pQBLayer.ByLayer              = FindLayer(pmap, sSounderLayer) as IFeatureLayer;
            pQBLayer.FromLayer            = pFSel as IFeatureLayer;
            pQBLayer.BufferDistance       = dblRange;
            pQBLayer.BufferUnits          = eEsriUnitsContant;
            pQBLayer.ResultType           = esriSelectionResultEnum.esriSelectionResultAdd;
            pQBLayer.LayerSelectionMethod = esriLayerSelectionMethod.esriLayerSelectIntersect;
            pQBLayer.UseSelectedFeatures  = true;
            pFSel.SelectionSet            = pQBLayer.Select();
            return(pFSel.SelectionSet.Count);
        }
Example #3
0
        private void selectFeatures()
        {
            IQueryByLayer _qrBl = new QueryByLayerClass();
            int method=cbxMethod.SelectedIndex;
            switch (method)
            {
                case 0:
                    _method = esriLayerSelectionMethod.esriLayerSelectIntersect;
                    break;
                case 1:
                    _method = esriLayerSelectionMethod.esriLayerSelectContainedBy;
                    break;
                case 2:
                    _method = esriLayerSelectionMethod.esriLayerSelectContains;
                    break;
                default:
                    _method = esriLayerSelectionMethod.esriLayerSelectIntersect;
                    break;
            }

            int selectLayer = cbxSelectLayer.SelectedIndex;
            _byLayer = _mapControl.get_Layer(selectLayer);
            int resultType=cbxResultType.SelectedIndex;
            switch (resultType)
            {
                case 0:
                    _resultType = esriSelectionResultEnum.esriSelectionResultNew;
                    break;
                case 1:
                    _resultType = esriSelectionResultEnum.esriSelectionResultAdd;
                    break;
                case 2:
                    _resultType = esriSelectionResultEnum.esriSelectionResultSubtract;
                    break;
                case 3:
                    _resultType = esriSelectionResultEnum.esriSelectionResultAnd;
                    break;
                case 4:
                    _resultType = esriSelectionResultEnum.esriSelectionResultXOR;
                    break;
                default:
                    _resultType = esriSelectionResultEnum.esriSelectionResultNew;
                    break;
            }
            if (chkUseSelected.CheckState == CheckState.Unchecked)
            {
                _useSelected = false;
            }
            else
            {
                _useSelected = true;
            }
            bool re = false;
            try
            {
                re = double.TryParse(txtBuffer.Text, out _buffer);
            }
            catch { }
            if (!re)
            {
                _buffer = 0;
            }
            int unit = cbxUnit.SelectedIndex;
            switch (unit)
            {
                case 0:
                    _bufferUnit = esriUnits.esriCentimeters;
                    break;
                case 1:
                    _bufferUnit = esriUnits.esriDecimeters;
                    break;
                case 2:
                    _bufferUnit = esriUnits.esriMeters;
                    break;
                case 3:
                    _bufferUnit = esriUnits.esriKilometers;
                    break;
                default:
                    _bufferUnit = esriUnits.esriMeters;
                    break;
            }

            _qrBl.ByLayer = (IFeatureLayer)_byLayer;
            _qrBl.LayerSelectionMethod = _method;
            _qrBl.ResultType = _resultType;
            _qrBl.UseSelectedFeatures = _useSelected;
            _qrBl.BufferDistance = _buffer;
            _qrBl.BufferUnits = _bufferUnit;
            foreach (object o in lstInputLayer.SelectedItems)
            {
                int index = lstInputLayer.Items.IndexOf(o);
                _fromLayer = _mapControl.get_Layer(index);

                _qrBl.FromLayer = (IFeatureLayer)_fromLayer;
                ISelectionSet selectionSet;
                IFeatureSelection featureSelection;
                try
                {
                    selectionSet = _qrBl.Select();
                    featureSelection = (IFeatureSelection)_fromLayer;
                    featureSelection.SelectionSet = selectionSet;
                    //MessageBox.Show("line 255 count=" + selectionSet.Count);
                }
                catch(Exception ex)
                { //MessageBox.Show("line 257 SelectByLocation, ex=" + ex);
                    continue; }
            }
            _mapControl.ActiveView.Refresh();
        }
Example #4
0
        ISelectionSet ISpatialAlgrorithm.Execute()
        {
            SdeConnection conn = new SdeConnection();
            ISdeConnectionInfo sdeConn = conn as ISdeConnectionInfo;
            IFeatureWorkspace fw = (IFeatureWorkspace)sdeConn.Workspace;
            ITnFeatureClassName fcName = new TnFeatureClassName(sdeConn.Workspace);
            ITnTableName tblName = new TnTableName(sdeConn.Workspace);
            IFeatureClass xaFeatureClass = fw.OpenFeatureClass(fcName.FC_RANH_XA_POLY.NAME);
            IFeatureLayer xaFeatureLayer = new FeatureLayerClass();
            xaFeatureLayer.FeatureClass = xaFeatureClass;
            IFeatureClass duongFeatureClass = fw.OpenFeatureClass(fcName.FC_DUONG.NAME);
            IFeatureLayer duongFeatureLayer = new FeatureLayerClass();
            duongFeatureLayer.FeatureClass = duongFeatureClass;
            //IQueryFilter qrf = new QueryFilterClass();
            //qrf.WhereClause = string.Format("{0}='{1}'", fcName.FC_RANH_XA_POLY.MA_XA, 5);
            //ISelectionSet xaSelectionSet = xaFeatureClass.Select(qrf, esriSelectionType.esriSelectionTypeHybrid, esriSelectionOption.esriSelectionOptionOnlyOne, sdeConn.Workspace);
            //IFeatureSelection xaFeatureSelection = (IFeatureSelection)xaFeatureLayer;
            //xaFeatureSelection.SelectionSet = xaSelectionSet;
            //if (this._fromLayer == null || this._byLayer == null)
            //{
            //    return null;
            //}
            //this._resultSelectionSet=this._queryByLayer.Select();
            //IFeatureLayer f=new FeatureLayerClass();
            //f.FeatureClass=this._frmFc;
            //IFeatureLayer b=new FeatureLayerClass();
            //b.FeatureClass = this._byFc;
            //IFeatureSelection fs = (IFeatureSelection)this._byLayer;
            //MessageBox.Show(fs.SelectionSet.Count.ToString());
            IQueryByLayer qrbl = new QueryByLayerClass();
            qrbl.FromLayer = duongFeatureLayer;
            qrbl.ByLayer = xaFeatureLayer;
            qrbl.LayerSelectionMethod = esriLayerSelectionMethod.esriLayerSelectIntersect;
            qrbl.ResultType = esriSelectionResultEnum.esriSelectionResultNew;
            qrbl.UseSelectedFeatures = true;

            ISelectionSet sl = qrbl.Select();
            MessageBox.Show("Line 125 AlgTimDuong:"+sl.Count.ToString());
            //MessageBox.Show(xaFeatureLayer.FeatureClass.AliasName);
            try
            {
                //this._resultSelectionSet = this._queryByLayer.Select();
                //this._resultSelectionSet =qrbl.Select();
                //MessageBox.Show(string.Format("line 120 AlgrithmTimDuong, so luong duong:{0}", this._resultSelectionSet.Count));
            }
            catch(Exception e)
            {
                MessageBox.Show(e.ToString());
            }

            //this._resultSelectionSet = sls;
            //Dang bi loi cho nay
            this._resultFeatureSelection = (IFeatureSelection)this._resultLayer;
            this._resultFeatureSelection.SelectionSet = this._resultSelectionSet;
            return this._resultSelectionSet;
        }
Example #5
0
        public void EvaluateQuery()
        {
            if (this._expr == "")
            {
                return;
            }
            //SelectLayerByLocation SelectByLocation;
            Geoprocessor gp = new Geoprocessor();
            string[] exprArr = Regex.Split(_expr, ExpressionKeyWords.Then);
            //MessageBox.Show(_expr);
            if (exprArr.Length == 0 || exprArr == null)
            {
                MessageBox.Show("ko co expr");
                return;
            }
            try
            {
                //_selectFLayer.Name = _selectFLayer.FeatureClass.AliasName;
                //_byFLayer.Name = _byFLayer.FeatureClass.AliasName;
                //_selectLayer = (ILayer)_selectFLayer;
                //_byLayer = (ILayer)_byFLayer;
                //string selectLyrFile = string.Format("{0}/{1}", sysTempPath.TempPath, "selectLayer.lyr");
                //string byLyrFile = string.Format("{0}/{1}", sysTempPath.TempPath, "byLayer.lyr");
                //dataManager.SaveToLayerFile(_selectLayer, selectLyrFile);
                //dataManager.SaveToLayerFile(_byLayer, byLyrFile);
                foreach (string s in exprArr)
                {
                    //MessageBox.Show("close");
                    Expression e = new Expression(s.Trim());

                    e.Parameters[ExpressionParameters.Intersect] = ExpressionParameters.Intersect;
                    e.Parameters[ExpressionParameters.NewSelection] = ExpressionParameters.NewSelection;
                    e.Parameters[ExpressionParameters.AndSelection] = ExpressionParameters.AndSelection;
                    e.Parameters[ExpressionParameters.ContainedBy] = ExpressionParameters.ContainedBy;
                    e.Parameters[ExpressionParameters.SubtractSelection] = ExpressionParameters.SubtractSelection;
                    //MessageBox.Show(e.Parameters.Count.ToString());
                    //foreach (string k in e.Parameters.Keys)
                    //{
                    //    MessageBox.Show(k);
                    //    e.Parameters[k] = k;

                    //}

                    //e.EvaluateParameter += delegate(string name, ParameterArgs args)
                    //{
                    //    if (name == "INTERSECT")
                    //        args.Result = "INTERSECT";
                    //    if (name == "NEW_SELECTION")
                    //        args.Result = "NEW_SELECTION";
                    //    if (name == "SUBSET_SELECTION")
                    //        args.Result = "SUBSET_SELECTION";
                    //};
                    //e.EvaluateParameter += delegate(string name, ParameterArgs args)
                    //{
                    //    if (name == "NEW_SELECTION")
                    //        args.Result = "NEW_SELECTION";
                    //};
                    //e.EvaluateParameter += delegate(string name, ParameterArgs args)
                    //{
                    //    if (name == "SUBSET_SELECTION")
                    //        args.Result = "SUBSET_SELECTION";
                    //};

                    e.EvaluateFunction += delegate(string name, FunctionArgs args)
                    {

                        //ham chonglop co 3 tham so: selectMethod,resultType,distance
                        //ham chontheothuoctinh co 2 tham so: resultType,dieukien
                        if (name == ExpressionFunctions.ChonThuaTheoDuong)
                        {
                            IQueryByLayer _qrBl = new QueryByLayerClass();
                            _qrBl.FromLayer = _thuaFl;
                            _qrBl.ByLayer = _duongFl;
                            _qrBl.LayerSelectionMethod = (esriLayerSelectionMethod)GeoprocessorConstant.GetSelectionMethod(args.Parameters[0].Evaluate().ToString());
                            _qrBl.ResultType = (esriSelectionResultEnum)GeoprocessorConstant.GetSelectionResult(args.Parameters[1].Evaluate().ToString());
                            _qrBl.UseSelectedFeatures = true;
                            double buf;

                            bool re = double.TryParse(args.Parameters[2].Evaluate().ToString(), out buf);

                            if (!re)
                            {
                                buf = 0;
                            }
                            _qrBl.BufferDistance = buf; //can them config gia tri nay
                            //MessageBox.Show(string.Format("line 227 Evaluation thua={0},duong={1},buf={2}", _thuaFl.FeatureClass.AliasName,_duongFl.FeatureClass.AliasName,buf));
                            ISelectionSet thuaSelectionSet=null;
                            try
                            {
                                thuaSelectionSet = _qrBl.Select();
                                IFeatureSelection fs = (IFeatureSelection)_thuaFl;
                                fs.SelectionSet = thuaSelectionSet;
                                //MessageBox.Show(string.Format("line 225 Evaluation {0}, {1}", buf, thuaSelectionSet.Count));
                            }
                            catch (Exception ex) {
                                //MessageBox.Show(String.Format("line 244 Evaluation, ex={0}", ex));
                            }

                            //!ko xai duoc cha noi SelectLayerByLocation
                            //MessageBox.Show(thuaSelectionSet.Count.ToString());
                            /*
                            SelectByLocation = new SelectLayerByLocation();

                            SelectByLocation.in_layer = _selectFLayer;
                            SelectByLocation.select_features = _byFLayer;
                            //SelectByLocation.out_layer_or_view = selectLyrFile;

                            SelectByLocation.overlap_type = "INTERSECT";//args.Parameters[0].Evaluate().ToString();
                            SelectByLocation.selection_type = "NEW_SELECTION"; //args.Parameters[1].Evaluate().ToString();
                            SelectByLocation.search_distance = 1;// args.Parameters[2].Evaluate();
                            IFeatureSelection fls = (IFeatureSelection)_byFLayer;
                            MessageBox.Show(fls.SelectionSet.Count.ToString());
                            runTool(gp, SelectByLocation, null);

                            MessageBox.Show(fs.SelectionSet.Count.ToString());
                             * */
                            args.Result = 1;
                        }
                        else if (name == ExpressionFunctions.ChonThuaTheoHemChinh)
                        {
                            IQueryByLayer _qrBl = new QueryByLayerClass();
                            _qrBl.FromLayer = _thuaFl;
                            _qrBl.ByLayer = _hemchinhFl;
                            _qrBl.LayerSelectionMethod = (esriLayerSelectionMethod)GeoprocessorConstant.GetSelectionMethod(args.Parameters[0].Evaluate().ToString());
                            _qrBl.ResultType = (esriSelectionResultEnum)GeoprocessorConstant.GetSelectionResult(args.Parameters[1].Evaluate().ToString());
                            _qrBl.UseSelectedFeatures = true;
                            double buf;
                            bool re = double.TryParse(args.Parameters[2].Evaluate().ToString(), out buf);
                            if (!re)
                            {
                                buf = 0;
                            }
                            _qrBl.BufferDistance = buf; //can them config gia tri nay

                            ISelectionSet thuaSelectionSet=null;
                            try
                            {
                                thuaSelectionSet = _qrBl.Select();
                                IFeatureSelection fs = (IFeatureSelection)_thuaFl;
                                fs.SelectionSet = thuaSelectionSet;
                            }
                            catch { }
                            args.Result = 1;
                        }
                        else if (name == ExpressionFunctions.ChonThuaTheoTtXa)
                        {
                            IQueryByLayer _qrBl = new QueryByLayerClass();
                            _qrBl.FromLayer = _thuaFl;
                            _qrBl.ByLayer = _ttXaFl;
                            _qrBl.LayerSelectionMethod = (esriLayerSelectionMethod)GeoprocessorConstant.GetSelectionMethod(args.Parameters[0].Evaluate().ToString());
                            _qrBl.ResultType = (esriSelectionResultEnum)GeoprocessorConstant.GetSelectionResult(args.Parameters[1].Evaluate().ToString());
                            _qrBl.UseSelectedFeatures = true;
                            double buf;
                            bool re = double.TryParse(args.Parameters[2].Evaluate().ToString(), out buf);
                            if (!re)
                            {
                                buf = 0;
                            }
                            _qrBl.BufferDistance = buf; //can them config gia tri nay

                            ISelectionSet thuaSelectionSet = null;
                            try
                            {
                                thuaSelectionSet = _qrBl.Select();
                                IFeatureSelection fs = (IFeatureSelection)_thuaFl;
                                fs.SelectionSet = thuaSelectionSet;
                            }
                            catch { }
                            args.Result = 1;
                        }
                        else if (name == "ChonTheoThuocTinh")
                        {
                            SdeConnection conn = new SdeConnection();
                            ISdeConnectionInfo sdeConn = (ISdeConnectionInfo)conn;
                            IQueryFilter qrf = new QueryFilterClass();
                            qrf.WhereClause = args.Parameters[0].Evaluate().ToString();
                            ISelectionSet sls = _thuaFl.FeatureClass.Select(qrf, esriSelectionType.esriSelectionTypeHybrid, esriSelectionOption.esriSelectionOptionNormal, sdeConn.Workspace);
                            IFeatureSelection fs = (IFeatureSelection)_thuaFl;
                            fs.SelectionSet = sls;
                            //MessageBox.Show("chonthuoctinh: "+args.Parameters[0].Evaluate().ToString());
                            args.Result = 1;
                        }
                        else if (name == "Where")
                        {
                            args.Parameters[0].Parameters["dorong"] = "dorong";
                            //MessageBox.Show(args.Parameters[0].Evaluate().ToString());
                            args.Result = args.Parameters[0].Evaluate().ToString();
                        }
                    };
                    //Debug.Assert(1 == (int)e.Evaluate());
                    e.Evaluate();
                }
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.ToString());
            }
        }
Example #6
0
        public bool EvaluateCalculating()
        {
            bool result = false;
            if (this._expr == "")
            {
                return false;
            }
            Expression e = new Expression(_expr);

            _fw = (IFeatureWorkspace)_sdeConn.Workspace;
            e.Parameters["INTERSECT"] = "INTERSECT";
            e.Parameters["NEW_SELECTION"] = "NEW_SELECTION";
            e.Parameters["AND_SELECTION"] = "AND_SELECTION";
            e.Parameters["CONTAINED_BY"] = "CONTAINED_BY";
            e.Parameters["SUBTRACT_SELECTION"] = "SUBTRACT_SELECTION";
            e.Parameters[_fcName.FC_DUONG.DO_RONG] = _fcName.FC_DUONG.DO_RONG;
            e.Parameters[_fcName.FC_THUA.DIEN_TICH] = _fcName.FC_THUA.DIEN_TICH;
            e.EvaluateFunction += delegate(string name, FunctionArgs args)
            {
                if (name == "VongLap")
                {
                    IFeatureLayer fl=null;
                    try
                    {
                        fl = (IFeatureLayer)args.Parameters[0].Evaluate();
                    }
                    catch(Exception e1) { args.Result = null; }
                    //args.Parameters["doituonglap"]

                    IFeatureSelection fsl=(IFeatureSelection)fl;
                    IFeatureClass fc=fl.FeatureClass;
                    MessageBox.Show(string.Format("line 323 Evaluation selectionset={0}", fsl.SelectionSet.Count));
                    int len = args.Parameters.Length;
                    IDictionary<string,IFeature> dic=new Dictionary<string,IFeature>();
                    if(len==3)
                    {
                        dic=(IDictionary<string,IFeature>)args.Parameters[2].Evaluate();
                        MessageBox.Show(string.Format("line 346 Evaluation lenght={0}", dic.Count));
                    }
                    if (len >= 2)
                    {
                        IEnumIDs eIds = fsl.SelectionSet.IDs;
                        int id;
                        IFeature ft;
                        //MessageBox.Show(string.Format("line 353 Evaluation ids={0}",

                        int numid = fsl.SelectionSet.Count;
                        for (int i = 0; i < numid; i++)
                        {
                            id = eIds.Next();
                            if (id != -1)
                            {
                                //MessageBox.Show(string.Format("line 357 Evaluation name={0}, id={1}", fc.AliasName, id));
                                int id_img = 0;
                                ft = fc.GetFeature(id);
                                try
                                {
                                    dic.Remove(string.Format("{0}_{1}", fc.AliasName, id));
                                }
                                catch { }
                                finally
                                {
                                    dic.Add(string.Format("{0}_{1}", fc.AliasName, id), ft);
                                }
                                //args.Parameters["doituonglapcon"] = ft;
                                args.Parameters[1].Parameters["doituonglap"] = dic;
                                args.Parameters[1].Evaluate();
                                id_img = id;
                                //MessageBox.Show(string.Format("line 373 Evaluation id={0}", id));
                                //ft=fc.GetFeature(id);
                                //MessageBox.Show(string.Format("line 348 Evaluation maduong={0}", ft.get_Value(ft.Fields.FindField("maduong"))));

                            }
                            else
                            {
                                eIds.Reset();
                                i = 0;
                            }
                        }
                    }

                }
                else if (name == "test")
                {
                    IDictionary<string, IFeature> dic = (IDictionary<string, IFeature>)args.Parameters[0].Evaluate();
                    //MessageBox.Show(string.Format("line 371 Evaluation lenght={0}", dic.Count));
                    //IFeature ft = (IFeature)args.Parameters[0].Evaluate();//dic["sde.SDE.thixa_duong"];
                    //MessageBox.Show(string.Format("line 360 Evaluation maduong={0}", ft.get_Value(ft.Fields.FindField("maduong"))));
                    args.Result = 1;
                }
                else if (name == "ChonThuaTheoDuong")
                {
                    IQueryByLayer _qrBl = new QueryByLayerClass();
                    _qrBl.FromLayer = _thuaFl;
                    _qrBl.ByLayer = _duongFl;
                    _qrBl.LayerSelectionMethod = (esriLayerSelectionMethod)GeoprocessorConstant.GetSelectionMethod(args.Parameters[0].Evaluate().ToString());
                    _qrBl.ResultType = (esriSelectionResultEnum)GeoprocessorConstant.GetSelectionResult(args.Parameters[1].Evaluate().ToString());
                    _qrBl.UseSelectedFeatures = true;
                    double buf;
                    bool re = double.TryParse(args.Parameters[2].Evaluate().ToString(), out buf);
                    if (!re)
                    {
                        buf = 0;
                    }
                    _qrBl.BufferDistance = buf; //can them config gia tri nay

                    ISelectionSet thuaSelectionSet = null;
                    try
                    {
                        thuaSelectionSet = _qrBl.Select();
                        IFeatureSelection fs = (IFeatureSelection)_thuaFl;
                        fs.SelectionSet = thuaSelectionSet;
                    }
                    catch { }
                    args.Result = 1;
                }
                else if (name == "ChonThuaTheoHemChinh")
                {
                    IQueryByLayer _qrBl = new QueryByLayerClass();
                    _qrBl.FromLayer = _thuaFl;
                    _qrBl.ByLayer = _hemchinhFl;
                    _qrBl.LayerSelectionMethod = (esriLayerSelectionMethod)GeoprocessorConstant.GetSelectionMethod(args.Parameters[0].Evaluate().ToString());
                    _qrBl.ResultType = (esriSelectionResultEnum)GeoprocessorConstant.GetSelectionResult(args.Parameters[1].Evaluate().ToString());
                    _qrBl.UseSelectedFeatures = true;
                    double buf;
                    bool re = double.TryParse(args.Parameters[2].Evaluate().ToString(), out buf);
                    if (!re)
                    {
                        buf = 0;
                    }
                    _qrBl.BufferDistance = buf; //can them config gia tri nay

                    ISelectionSet thuaSelectionSet = null;
                    try
                    {
                        thuaSelectionSet = _qrBl.Select();
                        IFeatureSelection fs = (IFeatureSelection)_thuaFl;
                        fs.SelectionSet = thuaSelectionSet;
                    }
                    catch { }
                    args.Result = 1;
                }
                else if (name == "ChonDuong")
                {

                    IQueryFilter qrf = new QueryFilterClass();
                    qrf.WhereClause = args.Parameters[0].Evaluate().ToString();
                    ISelectionSet sls = _duongFl.FeatureClass.Select(qrf, esriSelectionType.esriSelectionTypeHybrid, esriSelectionOption.esriSelectionOptionNormal, _sdeConn.Workspace);
                    IFeatureSelection fs = (IFeatureSelection)_duongFl;
                    fs.SelectionSet = sls;
                    //MessageBox.Show("chonthuoctinh: "+args.Parameters[0].Evaluate().ToString());
                    args.Result = _duongFl;
                }
                else if (name == "ChonThua")
                {

                    IQueryFilter qrf = new QueryFilterClass();
                    qrf.WhereClause = args.Parameters[0].Evaluate().ToString();
                    ISelectionSet sls = _thuaFl.FeatureClass.Select(qrf, esriSelectionType.esriSelectionTypeHybrid, esriSelectionOption.esriSelectionOptionNormal, _sdeConn.Workspace);
                    IFeatureSelection fs = (IFeatureSelection)_thuaFl;
                    fs.SelectionSet = sls;
                    //MessageBox.Show("chonthuoctinh: "+args.Parameters[0].Evaluate().ToString());
                    args.Result = _thuaFl;
                }
            };
            try
            {
                result = (bool)e.Evaluate();
            }
            catch(Exception e1)
            {
                result = false;
            }
            return result;
        }
        private long SpatialSelect(string sSedCoreLayer, string sSounderLayer, double dblRange, esriUnits eEsriUnitsContant)
        {
            IMxDocument pmxdoc = ArcMap.Document as IMxDocument;
            IMap pmap = pmxdoc.FocusMap;
            IFeatureSelection pFSel = FindLayer(pmap, sSedCoreLayer) as IFeatureSelection;
            //pFSel.Clear();

            IQueryByLayer pQBLayer = new QueryByLayerClass();
            pQBLayer.ByLayer = FindLayer(pmap, sSounderLayer) as IFeatureLayer;
            pQBLayer.FromLayer = pFSel as IFeatureLayer;
            pQBLayer.BufferDistance = dblRange;
            pQBLayer.BufferUnits = eEsriUnitsContant;
            pQBLayer.ResultType = esriSelectionResultEnum.esriSelectionResultAdd;
            pQBLayer.LayerSelectionMethod = esriLayerSelectionMethod.esriLayerSelectIntersect;
            pQBLayer.UseSelectedFeatures = true;
            pFSel.SelectionSet = pQBLayer.Select();
            return pFSel.SelectionSet.Count;
        }