利用IFeatureIndex2 和 IIndexQuery2提高空间查询效率
2013-04-10 01:02
211 查看
http://www.cnblogs.com/cglNet/archive/2012/03/12/2391645.html
StringBuilder tSB = new StringBuilder(); IFeatureClass tFeatureClass = (IFeatureClass)this._InDataset; IGeoDataset tGeodataset=(IGeoDataset)this._InDataset; IFeatureIndex2 tFeatureIndex = new FeatureIndexClass(); ESRI.ArcGIS.esriSystem.ITrackCancel tTrackCancel=new CancelTracker(); IIndexQuery tIndexQuery = tFeatureIndex as IIndexQuery; IIndexQuery2 tIndexQuery2 = (IIndexQuery2)tIndexQuery; tFeatureIndex.FeatureClass = tFeatureClass; tFeatureIndex.set_OutputSpatialReference(tFeatureClass.OIDFieldName, tGeodataset.SpatialReference); tFeatureIndex.Index(tTrackCancel, tGeodataset.Extent);//tGeodataset.Extent int iDex = tFeatureClass.FindField(this._FieldName); for (int i = 0; i < _Rows; i++) { for (int j = 0; j < _Cols; j++) { double[] pX = null; double[] pY = null; getPolygon(i, j, ref pX, ref pY); IPoint tPoint = new PointClass(); tPoint.X = pX[0] + (pX[3] - pX[0]) / 2; tPoint.Y = pY[0] + (pY[0] - pY[3]) / 2; int oid= tIndexQuery2.WithinFeature(tPoint); if (oid>-1) { IFeature tFeature = tFeatureClass.GetFeature(oid); object o = tFeature.get_Value(iDex); if (o != null && o.ToString().Trim() != "") { tSB.Append(o.ToString() + " "); } else { tSB.Append("-9999" + " "); } } else { tSB.Append("-9999" + " "); } } } return tSB; }
相关文章推荐
- 利用IFeatureIndex2 和 IIndexQuery2提高空间查询效率
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍
- 数据结构与算法分析(c++版) #5 可利用空间表提高链表效率
- 利用索引优化查询,提高效率
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍
- 利用索引提高查询效率
- 在基于数据库的任务派发系统中利用SQL Server 2005 新的查询提示来提高系统的效率
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍
- 在一个千万级的数据库查寻中,如何提高查询效率?
- 【oracle】用物化视图实现分组合计以提高查询效率
- SQL语句优化之提高查询效率
- 用charindex代替like中的%提高查询效率
- oracle 提高sql查询效率
- [转]使用 Bulk Collect提高Oracle查询效率
- 如何利用数字化工具提高工作效率?
- 如何利用Object Browser图形化工具提高Oracle开发工作效率(二)对象创建管理篇