测量方式分为测地线、平面。
平面测算没有考虑椭球体和投影情况,跟真实情况误差较大
测地线是根据地理坐标系进行计算,不同的sdk可能使用球体或椭球体进行计算。椭球体的计算方式精度最好,球体面积忽略了地球的扁平率,会有一定误差。
平面测量
openlayers的Geometry对象提供了getLength、getArea接口获取平面的测算结果
测地线测量
不同API使用的地球半径也不一样,
常用的地球半径:
- 赤道半径(Equatorial Radius)
6,378,137 米 (WGS84标准)
地球在赤道处的半径,是最大的半径 - 极半径(Polar Radius)
6,356,752.314 米 (WGS84标准)
地球在两极处的半径,比赤道半径小约21公里 - 平均半径(Mean Radius)
6,371,000 米 (约6371公里)
最常用的简化值,适用于一般计算
公式:(2×赤道半径 + 极半径) / 3 - 体积等效半径(Volumetric Radius)
6,371,008.8 米
与地球体积相等的球体半径 - 自转半径(Authalic Radius)
6,371,007.2 米
与地球表面积相等的球体半径
API区别
-
Openlayers
openlayers的ol/sphere 模块提供了基于测地线的距离、面积测量函数,测算方式都是基于球体的;
使用的地球半径:6,371,008.8 -
ArcGIS JavaScript API
ArcGIS JavaScript API geodesicUtils,api提供了基于椭球体的面积、距离、坐标反算等函数
使用的地球半径:6,371,008.8 -
AMap
GeometryUtil,支持点线面的空间关系计算、长度、面积计算等等
使用的地球半径:6,378,137 -
GeographicLib
GeographicLib,geodesic模块提供了很多测量函数
Openlayers与ArcGIS JS API使用的半径虽然一样,但是结果还是有一定差别。
OL使用的计算方式基于球体(假设地球为球),用球面多边形面积公式(球面投影+球面三角法),优点快,缺点精度稍低
ArcGIS使用的是基于椭球体(WGS-84),先将多边形致密化(geodesicDensify),再用投影变换和叉积法计算面积,优点精度高
本文讨论了OpenLayers和ArcGIS在测量方法上的区别,包括平面测量(忽略椭球体和投影)与测地线测量(基于球体或椭球体),以及ArcGIS提供的更精确的椭球体面积计算功能。两种库使用的地球半径不同也影响了测量结果的准确性。
624





