ArcGIS Engine二次开发——计算shapefile面图层要素的面积

http://blog.csdn.net/giselite/article/details/44750349

全部都应该学会看AE的类图和帮助,尤其是类图,在安装目录下的Diagram目录里,看多了自然就会得心应手。废话不多说了,下面是我写的一段试验代码

,公布一下,希望能帮助那些有需求的童鞋,给他们节省点时间。

using System.Runtime;  
using System.Runtime.InteropServices;  
using ESRI.ArcGIS.Geodatabase;  
using ESRI.ArcGIS.DataSourcesFile;  
using ESRI.ArcGIS.Geometry;  
  
        private void Form1_Click(object sender, EventArgs e)  
        {  
            IWorkspaceFactory pWSF = null;  
            double dArea = 0;  
            try  
            {  
                pWSF = new ShapefileWorkspaceFactoryClass();  
                IFeatureWorkspace pWS = pWSF.OpenFromFile(@"H:\水体淹没面积", 0) as IFeatureWorkspace;  
                IFeatureClass pFC = pWS.OpenFeatureClass("水体淹没面积专题.shp");  
  
                IFeatureCursor pFeatureCur = pFC.Search(null, false);  
                IFeature pFeature = pFeatureCur.NextFeature();  
                while (pFeature != null)  
                {  
                    if (pFeature.Shape.GeometryType == esriGeometryType.esriGeometryPolygon)  
                    {  
                        IArea pArea = pFeature.Shape as IArea;  
                        dArea = dArea + pArea.Area;  
                    }  
  
                    pFeature = pFeatureCur.NextFeature();  
                }  
  
                Marshal.ReleaseComObject(pFeatureCur);  
            }  
            catch (System.Exception ex)  
            {  
                  
            }  
  
            Marshal.ReleaseComObject(pWSF);  
        }  
========

6.5 IProximityOperator接口

http://www.cnblogs.com/gisoracle/archive/2012/03/28/2420706.html

6.5.1 IProximityOperator接口简介

IProximityOperator接口用于获取两个几何图形的距离,以及给定一个 Point,求另一个几何图形上离离给定点最近的点。IProximityOperator接口的主

要方法有:QueryNearesPoint,ReturnDistance, ReturnNearestPoint

ReturnDistance方法用于返回两个几何对象间的最短距离,QueryNearesPoint方法用于查询获取几何对象上离给定输入点的最近距离的点的引用,

ReturnNearestPoint方法用于创建并返回几何对象上离给定输入点的最近距离的点。

6.5.2 最近点查询功能开发

以下代码片段演示如何使用IProximityOperator接口获取给定点与要查询的几何图形的最近点:

/// 在pGeometry上返回一个离pInputPoint最近的point
        /// </summary>
        /// <param name="pInputPoint">给定的点对象</param>
        /// <param name="pGeometry">要查询的几何图形</param>
        /// <returns>the nearest Point</returns>
         private IPoint NearestPoint(IPoint  pInputPoint, IGeometry pGeometry)
        {
            try
            {
                IProximityOperator pProximity = (IProximityOperator)pGeometry;
                IPoint pNearestPoint = pProximity.ReturnNearestPoint(pInputPoint, esriSegmentExtension.esriNoExtension);
                return pNearestPoint;
            }
            catch(Exception Err)
            {
                MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return null;
            }
}
复制代码

以下代码片段演示如何使用IProximityOperator接口查询给定的两个几何对象的距离:

/// <summary>
        /// 获取两个几何图形的距离
        /// </summary>
        /// <param name="pGeometryA">几何图形A</param>
        /// <param name="pGeometryB">几何图形B</param>
        /// <returns>两个几何图形的距离</returns>
        private double  GetTwoGeometryDistance(IGeometry pGeometryA, IGeometry pGeometryB)
        {           
            IProximityOperator  pProOperator = pGeometryA as IProximityOperator;
            if (pGeometryA!=null|| pGeometryB !=null)
            {
               double distance=  pProOperator.ReturnDistance(pGeometryB);
               return distance;
            }
            else
            {
                return 0;
            }
     }
========

空间关系(计算两点间距离、计算范围)

http://xitong.iteye.com/blog/1715755

计算两点间距离

1         /// <summary>计算两点间距离
2 /// </summary>
3 /// <param name="point1"></param>
4 /// <param name="point2"></param>
5 /// <returns></returns>
6         public static double getDistanceOfTwoPoints(ESRI.ArcGIS.Geometry.IPoint point1, ESRI.ArcGIS.Geometry.IPoint point2)
7         {
8             return Math.Sqrt((point1.X - point2.X) * (point1.X - point2.X) + (point1.Y - point2.Y) * (point1.Y - point2.Y));
9         }

feature平移
1 IGeometry geo=feature.Shape;
2 ((ITransform2D)geo).Move(20,20);

计算范围

得到点集合的n倍Envelope范围

1         /// <summary>得到点集合的n倍Envelope范围
 2 /// </summary>
 3 /// <param name="points"></param>
 4 /// <param name="zoomInNumber"></param>
 5 /// <returns></returns>
 6         public static IEnvelope getBigEnvelope(IPointCollection points, double zoomInNumber)
 7         {
 8             IEnvelope result = new EnvelopeClass();
 9 
10             double xmax = 0, xmin = 999999999999, ymax = 0, ymin = 999999999999;
11 
12             for (int i = 0; i < points.PointCount; i++)
13             {
14                 ESRI.ArcGIS.Geometry.IPoint p = points.get_Point(i);
15                 if (xmax < p.X) xmax = p.X;
16                 if (ymax < p.Y) ymax = p.Y;
17                 if (xmin > p.X) xmin = p.X;
18                 if (ymin > p.Y) ymin = p.Y;
19             }
20             result.XMax = xmax + xmax - xmin;
21             result.XMin = xmin - xmax + xmin;
22             result.YMax = ymax + ymax - ymin;
23             result.YMin = ymin - ymax + ymin;
24 
25             return result;
26         }
========

arcgis engine 计算距离面积体积相关推荐

  1. c++ 实现计算立方体面积体积 并 判断两个立方体是否相等 (类和对象学习)

    1.设计一个类 2.在私有权限内写立方体的属性 3.在公共权限内对立方体的属性进行可读可写操作 4.在类外定义一个bool类型的全局函数判断两个立方体是否相等 判断标准为:长宽高分别相等 code / ...

  2. Arcgis engine 10.2 面积分割 比例分割 等份分割

    arcgis engine10.2版本 按面积分割, 比例分割,等份分割工具 1.面积分割 2.等份分割 3.比例分割 有需要联系QQ:952955964

  3. ArcGIS Engine计算两条线夹角

    可以将形成夹角的两条线简化成三个点,Point1.Point2.Point3:第一条线Point1-Point2,第二条线Point2-Point3 以Point2为起始点 构建两条ILine(pLi ...

  4. 经纬度和高德地图计算两点距离面积

    关于经纬度,可以看huanhuan的博客根据两点经纬度计算距离 文章详细介绍了经纬度以及根据经纬度,计算两点直接的距离. 高德地图中,计算两点直线距离的公式如下: //根据经纬度获取两点距离publi ...

  5. 第二章练习题(2):计算圆柱面积和体积

    一.变量的应用 (1)计算面积和体积 描述 运用 Java 变量计算圆柱体积. 题目 编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱的体积: 面积 = 半径 × 半径 × P 体积 = 面积  ...

  6. 如何在arcgis中计算面数据的投影面积和椭球面积

    需求: 如何在arcgis中计算面数据的投影面积和椭球面积 参考资料: 什么是面积?这一个公开课介绍的非常好,链接:https://www.bilibili.com/video/BV1gJ411M7c ...

  7. 定义一个三角形类(TRI)及其派生类三角柱体类(COL)。其中三角形类可以计算三角形的面积和周长;三角柱体类可以计算柱体的体积和表面积。其具体要求如下: (1)TRI的成员如下:  私有数据成员 

    题目要求: 定义一个三角形类(TRI)及其派生类三角柱体类(COL).其中三角形类可以计算三角形的面积和周长:三角柱体类可以计算柱体的体积和表面积.其具体要求如下: (1)TRI的成员如下: 私有数据 ...

  8. arcmap中图斑面积代表_【干货】ArcGIS四种计算图斑面积的方法

    用精细的过程管理模式提供优质的服务 用先进的地理信息技术推动社会的发展 ArcGIS中有多种方法可计算出图斑面积 本文总结了四种方法 01 计算几何 本人认为这是最适合非专业人士的方法,直接利用Arc ...

  9. Python程序来计算球体的体积和面积

    球体(实体)通常被认为是二维图形,即使该图形从其中心在三个平面上可见.造成这种情况的主要原因是,球体仅使用其半径进行测量. 然而,空心球体被认为是三维图形,因为它在其球壁内包含空间,并且有两个不同的半 ...

最新文章

  1. Jupyter Notebook 中查看当前 运行哪个python
  2. Java知识系统回顾整理01基础04操作符07Scanner
  3. Java中sql_Java中sql都有哪些
  4. linux编程实现dns请求,linux – 使用BIND实现辅助DNS服务器的最佳方式
  5. 彩色笔记 android,彩色笔记V4.1.0-彩色笔记下载 - Iefans
  6. 贴一个CMemDC 代码,这东西真不错噢,短小精悍,可谓极品
  7. 暑期训练日志----2018.8.23
  8. tp框架使用心得(六)——分页查询
  9. MySQL查看数据库、表的占用空间大小
  10. 开氏温度与摄氏度换算_政策丨车厢温度变化2……冷藏保温车国标开始征求意见...
  11. Unity 射线检测
  12. 北京地铁各条线路介绍
  13. 80老翁谈人生(314):别了,亲爱的CSDN读者朋友们!
  14. [UVA 202]Repeating Decimals
  15. 了解5G技术与未来5G面临的问题
  16. kubernetes的基本概念及安装部署
  17. [半监督学习] Combining Labeled and Unlabeled Data with Co-Training
  18. Linux下线程池(ThreadPool)
  19. YOLO家族再度升级——阿里达摩院DAMO-YOLO重磅来袭
  20. 当程序崩溃的时候怎么办 part-1 Iven 本文由 大侠自来也

热门文章

  1. 单例模式存在的问题——破坏单例模式,序列化和反射
  2. jq选择器||基本选择器 层级选择器 属性选择器 过滤选择器 表单过滤选择器
  3. Jquery判断元素是否隐藏:display属性状态值
  4. Python 技术篇 - 通过paramiko库判断连接linux服务器的账号密码是否正确方法演示
  5. DM达梦数据库 - 设置忽略关键字方法,login关键字处理实例演示
  6. vue项目设置img标签的默认图片
  7. [YTU]_2907 (类重载实现矩阵加法)
  8. Intersection of Two Linked Lists
  9. (特征检测)检测角点opencv--python
  10. 用Hook的方式实现防抖