`
tzraeq
  • 浏览: 82372 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

[转帖]ArcGIS Flex 获取Polygon的中心点坐标

阅读更多
网上无意中看到,本来用extent.center可以获取,但是这样的中心点经常是重心点,现在觉得这个算法比较好,但自己也没试验,先放这,有用的人拿走.
/**
* Author:Wu Yongfeng
* MSN/Email:warrenwyf@gmail.com
*/
package wuyf
{
    import com.esri.ags.geometry.Extent;
    import com.esri.ags.geometry.MapPoint;
    import com.esri.ags.geometry.Polygon;
    
    public class GeometryUtil
    {
        /**
         * 获取多边形的重心
         * @param polygon 多边形
         * @return 重心点
         * 
         */
        static public function getGravityCenter(polygon polygon):MapPoint
        {
            var ext:Extent = polygon.extent;            
            var p0:MapPoint = new MapPoint(ext.xmin, ext.ymin);
            
            var momentX:Number = 0;
            var momentY:Number = 0;
            var weight:Number = 0;
            for (var i:int=0; i<polygon.rings.length; i++ )
            {
                var pts:Array = polygon.rings as Array;
                for ( var j:int=0; j<pts.length; j++ )
                {
                    var p1:MapPoint = polygon.getPoint(i, j);
                    var p2:MapPoint;
                    if( j==pts.length-1 )
                    {
                        p2 = polygon.getPoint(i, 0);
                    }
                    else
                    {
                        p2 = polygon.getPoint(i, j+1);
                    }
                    
                    var dWeight:Number = (p1.x-p0.x)*(p2.y-p1.y) 
                    - (p1.x-p0.x)*(p0.y-p1.y)/2 
                    - (p2.x-p0.x)*(p2.y-p0.y)/2
                    - (p1.x-p2.x)*(p2.y-p1.y)/2;
                    weight += dWeight;
                    
                    var pTmp:MapPoint = new MapPoint((p1.x+p2.x)/2, (p1.y+p2.y)/2);
                    var gravityX:Number = p0.x + (pTmp.x-p0.x)*2/3;
                    var gravityY:Number = p0.y + (pTmp.y-p0.y)*2/3;
                    momentX += gravityX*dWeight;
                    momentY += gravityY*dWeight;                    
                }
            }    
            
            return new MapPoint(momentX/weight, momentY/weight);
        }

    }
}

分享到:
评论
1 楼 Allen_Oscar 2013-08-12  
不对,算法有问题

相关推荐

    如何获得Polygon的中点

    在GIS(地理信息系统)领域,有时我们需要从一个特定的区域(Polygon)获取其中心点的位置信息,这对于数据分析、地图绘制以及空间查询等任务非常关键。例如,在进行城市规划时,我们可能需要知道某个行政区的中心...

    ARcGIS 生成多边形的四至点坐标插件

    "生成多边形的四至点坐标插件"是为了帮助用户方便地获取多边形边界四个顶点(东、南、西、北极点)的精确坐标。这个插件在10.0版本的ARcGIS中已经通过了测试,理论上可以兼容其他版本。 四至点坐标对于地理信息分析...

    ArcGIS Flex 专题地图制作的代码与说明

    在GIS领域,ArcGIS Flex是一种基于Adobe Flex技术的开发框架,用于构建交互式的Web GIS应用程序。本主题将深入探讨如何使用ArcGIS Flex来创建具有特色的专题地图,包括等级地图、柱状图和文字标注的实现。 一、等级...

    ArcGIS Flex热图

    【ArcGIS Flex热图】是一种基于Esri的ArcGIS Flex API开发的地图可视化技术,用于展示地理数据的密度或强度分布。在地图上,热图通常表现为颜色渐变的区域,颜色越深,表示该区域的数据点越密集或者值越大。这种可视...

    ArcGIS Flex 例子——源码(强烈推荐)

    **ArcGIS Flex 示例详解——源码深度解析** ArcGIS Flex 是 Esri 公司提供的一款基于 Adobe Flex 技术的 GIS 开发框架,它允许开发者创建丰富的、交互式的地图应用程序,用于网页上展示地理信息。这个压缩包包含的...

    ArcGIS-Flex.rar_FLEX ARCGIS_arcgis flex_flex

    《ArcGIS Flex:扩展Flex在GIS中的应用》 ArcGIS Flex是Esri公司推出的一款用于构建Web GIS应用程序的开发框架,它充分利用了Adobe Flex技术,为开发者提供了在ArcGIS平台上构建交互式、富媒体的地图应用的强大工具...

    arcgis_flex.rar_FLEX ARCGIS_arcgis_arcgis flex_flex

    【ArcGIS Flex 学习资料概述】 ArcGIS Flex 是Esri公司推出的一种基于Adobe Flex技术的Web GIS开发框架,它允许开发者构建交互式的、富客户端的地理信息系统应用程序。本资料集合是针对ArcGIS Flex的学习资源,对于...

    arcgis flex 动态标绘

    基于arcgis flex api 实现动态标绘功能,为2.0新版本

    ArcGIS_Flex.rar_ArcGIS flex_ArcGIS_Flex_NavigationSkin.mxml_arc

    《ArcGIS Flex应用详解与NavigationSkin.mxml剖析》 ArcGIS Flex是Esri公司开发的一款基于Adobe Flex技术的地理信息系统(GIS)开发框架,它允许开发者构建富互联网应用程序(RIA),将复杂的地理信息数据和分析...

    Arcgis flex api自定义风场点图标样式

    Arcgis flex api自定义风场点图标样式

    ArcGIS API For JavaScript 4.x 获取地图经纬度坐标(附完整代码)

    ArcGIS API For JavaScript 4.x 获取地图经纬度坐标(附完整代码,即开即用)

    ArcGIS Flex API和SuperMap Flex API实现的军标箭头库

    首先,ArcGIS Flex API是由Esri公司提供的,用于构建富互联网应用程序(RIA)的开发接口,它允许开发者在网页上创建交互式地图。API提供了丰富的地图操作功能,如图层管理、查询、分析以及图形绘制。在军标箭头库的...

    Arcgis Flex Resource Center 离线版

    《ArcGIS Flex Resource Center 离线版:深入探索与应用》 ArcGIS Flex Resource Center 离线版是一款专为GIS(地理信息系统)开发者设计的学习工具,它提供了丰富的资源和API,使得开发者无需互联网连接也能进行...

    arcgis flex api 3.0 离线帮助文档chm格式

    arcgis flex api 3.0 离线帮助文档chm格式 绝对好用!

    arcgis_flex 1.2

    《ArcGIS Flex 1.2:GIS开发的灵活性与强大工具》 ArcGIS Flex 1.2是一款由Esri公司推出的专门针对Flex平台的GIS(地理信息系统)开发工具,它结合了Adobe Flex的易用性和强大的GIS功能,为开发者提供了一个高效、...

    ARCGIS54至80坐标转换

    本文将详细讲解如何使用ARCGIS软件进行北京54坐标系到西安80坐标的转换。 首先,我们需要理解这两个坐标系的背景。北京54坐标系是中华人民共和国成立初期建立的大地坐标系统,主要适用于北方地区。而西安80坐标系则...

    ARCGIS中坐标转换及地理坐标、投影坐标定义

    ### ARCGIS中坐标转换及地理坐标、投影坐标定义 #### 一、动态投影(ArcMap) 在ARCGIS中,动态投影是一个非常实用的功能,它允许用户在不同的坐标系统之间无缝切换,使得多源数据的集成变得更为简单。动态投影的...

    arcgis for flex api 2.5

    arcgis flex api 2.5 最新

    arcgis flex相关资料

    在 ArcGIS Flex 中,地图符号扩展和最短路径分析是两个关键的技术点,它们为用户提供了更深入的地图展示和空间分析能力。 首先,我们来看地图符号扩展。地图符号是GIS中不可或缺的一部分,它们用于表示地理实体的...

    arcgis中经纬度到平面坐标之间的转换

    ### ArcGIS中经纬度到平面坐标之间的转换 #### 一、引言 在地理信息系统(GIS)领域,尤其是使用ArcGIS软件进行空间数据分析时,坐标转换是一项非常基础且重要的技能。坐标转换涉及到从一种坐标系统到另一种坐标...

Global site tag (gtag.js) - Google Analytics