在开发中,需要根据输入的地点坐标计算中心点,但是在百度,Google上搜索“根据输入的地点坐标计算中心点”或者“计算地图中心点”等等一系列关键字,折腾了很久,也没有找到任何解决方法。不过还好,最后在Google搜索“Latitude and longitude of the center”得到了解决方案,因为解决方案是在英文网站上找到的,所以将解决方案整理出来,供大家参考(呵呵,看来有些东西还是需要到国外去取取经)。

先给出地点坐标类的定义。

public class GeoCoordinate
{private readonly double latitude;private readonly double longitude;public double Latitude { get { return latitude; } }public double Longitude { get { return longitude;} }public GeoCoordinate(double latitude, double longitude){this.latitude = latitude;this.longitude = longitude;}public override string ToString(){return string.Format("{0},{1}", Latitude, Longitude);}
}

下面给出完整的计算方法。

///
/// 根据输入的地点坐标计算中心点
///
///
///

public GeoCoordinate GetCenterPointFromListOfCoordinates(List<GeoCoordinate> geoCoordinateList)
{int total = geoCoordinateList.Count;double X = 0, Y = 0, Z = 0;foreach (GeoCoordinate g in geoCoordinateList){double lat, lon, x, y, z;lat = g.Latitude * Math.PI / 180;lon = g.Longitude * Math.PI / 180;x = Math.Cos(lat) * Math.Cos(lon);y = Math.Cos(lat) * Math.Sin(lon);z = Math.Sin(lat);X += x;Y += y;Z += z;}X = X / total;Y = Y / total;Z = Z / total;double Lon = Math.Atan2(Y, X);double Hyp = Math.Sqrt(X * X + Y * Y);double Lat = Math.Atan2(Z, Hyp);return new GeoCoordinate(Lat * 180 / Math.PI, Lon * 180 / Math.PI);
}

对于400km以下时,可以采用下面的简化计算方法。

///
/// 根据输入的地点坐标计算中心点(适用于400km以下的场合)
///
///
///

public GeoCoordinate GetCenterPointFromListOfCoordinates(List<GeoCoordinate> geoCoordinateList)
{//以下为简化方法(400km以内)int total = geoCoordinateList.Count;double lat = 0, lon = 0;foreach (GeoCoordinate g in geoCoordinateList){lat += g.Latitude * Math.PI / 180;lon += g.Longitude * Math.PI / 180;}lat /= total;lon /= total;return new GeoCoordinate(lat * 180 / Math.PI, lon * 180 / Math.PI);
}

在以下页面包含有多种实现,大家可以参考。

http://stackoverflow.com/questions/6671183/calculate-the-center-point-of-multiple-latitude-longitude-coordinate-pairs

详细的算法说明,可以参考。

http://www.geomidpoint.com/calculation.html

扩展阅读。

根据两点经纬度计算距离
————————————————
版权声明:本文为CSDN博主「三五月儿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yl2isoft/article/details/16368397

计算多边形中心点坐标的方法相关推荐

  1. python 二维坐标多边形 计算多边形中心点,以及距该中心点最远的距离

    def center_geolocation(geolocations):'''输入多个经纬度坐标(格式:[[lon1, lat1],[lon2, lat2],....[lonn, latn]]),找 ...

  2. 【算法】推步聚顶 计算多边形的面积

    计算多边形的面积 "数性至朴,算学是天下最诚实的东西,一加一永远是二,五乘四永远是二十,而十二自实永远是一百四十四." 这世上,人心比算学更复杂.人际关系让人疲惫,还是数学比较单纯 ...

  3. 高德 android 多边形中心点,完美起航-android高德地图画多边形,已知中心点宽高画矩形,实际距离千米转地图坐标距离...

    项目中用到mapabc 绘制矩形区域.客户只能手动选择中心点,并填写区域的宽和高,切单位为km.要求实时显示规划区域. 记录笔记. 第一步找到地图绘制多边形api polygon = map.addP ...

  4. 仅仅三行JAVA代码计算多边形的几何中心点

    前言:因为工作设计到gis相关的内容,需要计算采煤机工作面的中心点.如果套用数学的计算公式,用java去实现,太多麻烦还费时比较久,于是我找到java几何计算的工具包,几行代码就能求出多变形的中心,简 ...

  5. 通过坐标点位,计算多边形面积

    多边形面积 本文使用三角形面积累计法计算多边形面积,就是将多边形按照一个顶点,分割成多个三角形,计算三角形的面积,累加,得到多边形的面积. 当然,这个算法也有一些缺点,当这个多边形比较奇怪的时候,不能 ...

  6. js判断多边形的坐标点是顺时针还是逆时针的两种方法

    js判断多边形的坐标点是顺时针还是逆时针的两种方法 关键算法 通过极值点与其相邻点的构成的矢量走向算出多边形走向 通过计算各左边点所在矢量夹角的角度总和来推算多边形走向 由于arcgis对顺时针生成的 ...

  7. mysql图形查询操作 点找面及面找点 Polygon获取中心点坐标 空间地理位置计算

    SET @x = 121; SET @y = 30; -- SET @point = CONCAT('POINT(',@x,' ',@y,')'); set @point= Point(@x,@y); ...

  8. Java 根据多边形坐标点 计算多边形面积

    请仔细阅读代码注释(有肯多坑,跟着注释走没问题) 亲测有效 /*** 计算多边形面积公式** @author Lion Li* @date 2020-05-19*/ public class Poly ...

  9. arcgis怎么转面的中心点并计算中心点坐标

    打开arcgis软件,加载数据: 打开ArcTool box工具,数据处理工具-要素-要素转点,或者打开搜索器直接搜索"要素转点"即可: 打开ArcTool box工具,数据处理工 ...

  10. python计算多边形的面积并保留两位小数_计算任意多边形面积的Python实现

    最近需要实现一个计算非凸多边形面积的功能,需要输入是顺次排序的多边形顶点坐标,假设输入的多边形顶点是V={v0, v1, v2, -, vn-1},则多边形的边为E={, , ,...,, }.要求输 ...

最新文章

  1. 外联css及js的使用
  2. mongodb query
  3. oracle row 00033,00033-ContentProvider实现数据共享[总结]
  4. Python 爬虫之 Beautiful Soup 模块使用指南
  5. Hadoop模式介绍-独立,伪分布式,分布式
  6. django——url(路由)配置
  7. bzoj2460 [BeiJing2011]元素 贪心+线性基
  8. 小宝机器人怎么开机_是我低估了网友的脑洞 扫地机器人充电“事故现场”
  9. ajax前台值传到后台
  10. .Net 并发写入文件的多种方式
  11. 计算机桌面字体咋调整,如何调整电脑桌面字体的大小
  12. 求一元二次方程的解法c语言,有什么方法求一元二次方程求解決一元二次方程的解法要详细...
  13. ABSOLUTE评估肿瘤纯度
  14. Android 指纹验证标准API学习
  15. Python之禅——个人翻译
  16. 常用二维码介绍与分析
  17. 19张插画让你秒懂Kubernetes
  18. vmware虚拟机检测不到vspd虚拟串口问题
  19. 一般企业应用上云架构实践
  20. ROS语音交互系统_(3)ROS中接入图灵机器人语音理解系统

热门文章

  1. cortex m3 寄存器
  2. 复杂 Excel 表格导入导出的最简方法
  3. Interpretable Machine Learning中GLM,GAM等
  4. vs下qt混合编译错误:MOC问题
  5. 20张图片梳理工业软件全貌
  6. [从头读历史] 第248节 先天八卦和后天八卦
  7. 如何判断一个文件是否是jpeg格式?
  8. package crypto/rand: unrecognized import path crypto/rand (import path does not begin with hostnam
  9. centos系统中perl进程病毒占用大量网络流量导致网络瘫痪的问题分析及解决方案
  10. 漏洞利用-SSH Banner信息获取