/// <summary> /// trackBarValueChanged事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void VersionTimeSld_ValueChanged(object sender, EventArgs e) { try { DateTime key = this._graphElements.EntityElements.Keys.ElementAt(this.VersionTimeSld.Value); List <ClsGraphElement> graphElements = this._graphElements.EntityElements[key]; this._mapControl.Map.ClearSelection();//清除地图的选择 IEnvelope env = new EnvelopeClass(); for (int i = 0; i < graphElements.Count; i++) { ClsGraphElement ge = graphElements[i]; this._mapControl.Map.SelectFeature(this.GetFeatureLayerByName(this._pFeatlayerList, ge.LayerName), ge.Feature);//将查询到的地物作为选择对象高亮显示在地图上 env.Union(ge.Feature.Shape.Envelope); } //env.Expand(2, 2, true); //this._mapControl.Extent = env; IPoint pt = new PointClass(); pt.X = (env.UpperLeft.X + env.LowerRight.X) / 2; pt.Y = (env.UpperLeft.Y + env.LowerRight.Y) / 2; this._mapControl.CenterAt(pt); this._mapControl.ActiveView.Refresh();//刷新地图,这样才能显示出地物 //显示查询的信息 this.ShowEntityData(this.EntityCode.Text); } catch (System.Exception ex) { //MessageBox.Show(ex.Message); MessageBox.Show("请先点击确定!"); } }
/// <summary> /// /// </summary> /// <param name="entityID">实体编码</param> /// <param name="pFeatlayerList">MapControl中的图层集</param> /// <param name="lyrName">图层名称</param> private void GetGraphElementsInLyr(string entityID, List <IFeatureLayer> pFeatlayerList, string lyrName) { string entityField = ClsConfig.LayerConfigs[lyrName].EntityID; IFeatureLayer featLyr = this.GetFeatureLayerByName(pFeatlayerList, lyrName); IFeatureCursor pCursor = null; IFeature pFeature = null; //查询一个字段(ENTIID) IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = entityField + " = '" + entityID + "'"; pCursor = featLyr.FeatureClass.Search(queryFilter, false); if (pCursor != null) { pFeature = pCursor.NextFeature(); } while (pFeature != null) { ClsGraphElement ge = this.GetGraphElement(pFeature, lyrName); this._graphElements.Add(ge); pFeature = pCursor.NextFeature(); } }
/// <summary> /// 获取图层元素 /// </summary> /// <param name="pFeature">要素</param> /// <param name="lyrName">图层名</param> /// <returns></returns> private ClsGraphElement GetGraphElement(IFeature pFeature, string lyrName) { string fromField = ClsConfig.LayerConfigs[lyrName].StartVersion; string endField = ClsConfig.LayerConfigs[lyrName].EndVersion; string sourceName = ClsConfig.LayerConfigs[lyrName].SourceName; string sourceType = ClsConfig.LayerConfigs[lyrName].SourceType; //声明一个类ClsGraphElement的实例ge ClsGraphElement ge = new ClsGraphElement(); string fromVersion = pFeature.get_Value(pFeature.Fields.FindField(fromField)).ToString(); DateTime collectTime = this.GetDateTime(fromVersion, sourceName, this._versionTable); string endVersion = pFeature.get_Value(pFeature.Fields.FindField(endField)).ToString(); DateTime endTime = this.GetDateTime(endVersion, sourceName, this._versionTable); //对类的各个字段进行赋值 ge.VersionTime = collectTime; ge.EndVersionTime = endTime; ge.Feature = pFeature; ge.Source = sourceType; ge.LayerName = lyrName; ge.Version = fromVersion; //返回类 return(ge); }