网上无意中看到,本来用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);
}
}
}
分享到:
相关推荐
在GIS(地理信息系统)领域,有时我们需要从一个特定的区域(Polygon)获取其中心点的位置信息,这对于数据分析、地图绘制以及空间查询等任务非常关键。例如,在进行城市规划时,我们可能需要知道某个行政区的中心...
在GIS领域,ArcGIS Flex是一种基于Adobe Flex技术的开发框架,用于构建交互式的Web GIS应用程序。本主题将深入探讨如何使用ArcGIS Flex来创建具有特色的专题地图,包括等级地图、柱状图和文字标注的实现。 一、等级...
"生成多边形的四至点坐标插件"是为了帮助用户方便地获取多边形边界四个顶点(东、南、西、北极点)的精确坐标。这个插件在10.0版本的ARcGIS中已经通过了测试,理论上可以兼容其他版本。 四至点坐标对于地理信息分析...
【ArcGIS Flex热图】是一种基于Esri的ArcGIS Flex API开发的地图可视化技术,用于展示地理数据的密度或强度分布。在地图上,热图通常表现为颜色渐变的区域,颜色越深,表示该区域的数据点越密集或者值越大。这种可视...
**ArcGIS Flex 示例详解——源码深度解析** ArcGIS Flex 是 Esri 公司提供的一款基于 Adobe Flex 技术的 GIS 开发框架,它允许开发者创建丰富的、交互式的地图应用程序,用于网页上展示地理信息。这个压缩包包含的...
《ArcGIS Flex:扩展Flex在GIS中的应用》 ArcGIS Flex是Esri公司推出的一款用于构建Web GIS应用程序的开发框架,它充分利用了Adobe Flex技术,为开发者提供了在ArcGIS平台上构建交互式、富媒体的地图应用的强大工具...
【ArcGIS Flex 学习资料概述】 ArcGIS Flex 是Esri公司推出的一种基于Adobe Flex技术的Web GIS开发框架,它允许开发者构建交互式的、富客户端的地理信息系统应用程序。本资料集合是针对ArcGIS Flex的学习资源,对于...
基于arcgis flex api 实现动态标绘功能,为2.0新版本
《ArcGIS Flex应用详解与NavigationSkin.mxml剖析》 ArcGIS Flex是Esri公司开发的一款基于Adobe Flex技术的地理信息系统(GIS)开发框架,它允许开发者构建富互联网应用程序(RIA),将复杂的地理信息数据和分析...
Arcgis flex api自定义风场点图标样式
ArcGIS API For JavaScript 4.x 获取地图经纬度坐标(附完整代码,即开即用)
首先,ArcGIS Flex API是由Esri公司提供的,用于构建富互联网应用程序(RIA)的开发接口,它允许开发者在网页上创建交互式地图。API提供了丰富的地图操作功能,如图层管理、查询、分析以及图形绘制。在军标箭头库的...
ArcGIS教程:如何定义shapefile坐标系 本资源摘要信息主要讲述了使用ArcGIS软件来定义shapefile坐标系的步骤和方法。通过本教程,读者可以学习到如何通过选择现有坐标系、导入坐标系定义、指定新地理坐标系、指定新...
《ArcGIS Flex Resource Center 离线版:深入探索与应用》 ArcGIS Flex Resource Center 离线版是一款专为GIS(地理信息系统)开发者设计的学习工具,它提供了丰富的资源和API,使得开发者无需互联网连接也能进行...
arcgis flex api 3.0 离线帮助文档chm格式 绝对好用!
本文将详细讲解如何使用ARCGIS软件进行北京54坐标系到西安80坐标的转换。 首先,我们需要理解这两个坐标系的背景。北京54坐标系是中华人民共和国成立初期建立的大地坐标系统,主要适用于北方地区。而西安80坐标系则...
《ArcGIS Flex 1.2:GIS开发的灵活性与强大工具》 ArcGIS Flex 1.2是一款由Esri公司推出的专门针对Flex平台的GIS(地理信息系统)开发工具,它结合了Adobe Flex的易用性和强大的GIS功能,为开发者提供了一个高效、...
### ARCGIS中坐标转换及地理坐标、投影坐标定义 #### 一、动态投影(ArcMap) 在ARCGIS中,动态投影是一个非常实用的功能,它允许用户在不同的坐标系统之间无缝切换,使得多源数据的集成变得更为简单。动态投影的...
arcgis flex api 2.5 最新
在 ArcGIS Flex 中,地图符号扩展和最短路径分析是两个关键的技术点,它们为用户提供了更深入的地图展示和空间分析能力。 首先,我们来看地图符号扩展。地图符号是GIS中不可或缺的一部分,它们用于表示地理实体的...