AE读取shape文件范围坐标

/// <summary>

        /// 元素坐标范围
        /// </summary>
        /// <param name="layername">选择的图层名</param>
        /// <param name="map">IMap</param>
        /// <returns>范围坐标数组(xmin,xmax,ymin,ymax)</returns>
        public double [,] GetExtent(string layername,IMap map)
        {
            LayerInfo layerinfo = new LayerInfo();
            ILayer layer = map.get_Layer(layerinfo.GetLayerID (map,layername));
 
            IGeoFeatureLayer featurelayer =layer as IGeoFeatureLayer;
            IFeatureClass featureclass = featurelayer.FeatureClass as IFeatureClass;
 
            IQueryFilter queryfilter = new QueryFilterClass();
            queryfilter.SubFields = featureclass.AreaField.Name;
            queryfilter.WhereClause = "all";
            int fieldPosition = featureclass.FindField(featureclass.AreaField.Name);
            IFeatureCursor featureCursor = featureclass.Search(queryfilter, true);
            IFeature feature = null;
 
            int featurecount = featureclass.FeatureCount(queryfilter);   //元素总数
            int featureindex = 0;                                        //元素索引
            double[,] extent = new double[featurecount,4];
           while ((feature = featureCursor.NextFeature()) != null)
           {
              try
              {
                extent[featureindex, 0] = feature.Extent.XMin;
                extent[featureindex, 1] = feature.Extent.XMax;
                extent[featureindex, 2] = feature.Extent.YMin;
                extent[featureindex, 3] = feature.Extent.YMax;
                featureindex++;  
              }
             catch (Exception )
             {
                break ; 
             }
          }
            return extent;
        }

posted on 2012-12-24 23:45  maphey  阅读(636)  评论(0)    收藏  举报