2024-09-01
工具使用
00

参考了这个:https://blog.csdn.net/u014793102/article/details/103869480

面积计算:

高德网址:https://developer.amap.com/demo/javascript-api/example/calcutation/ring-area

在这里插入图片描述

也就是说 这些个坐标边界计算出来的结果面积就是左边那个数字。

代码:

python
from math import asin, sqrt, cos, pi def st_area(wkt_list): # 弧度 radian = pi / 180.0 # 地球半径 radius = 6378137 # 地球弧度 earth_radian = radius * radian # 面积 area = 0 length = len(wkt_list) if length < 3: return 0 for index in range(0, length - 1): front_point = wkt_list[index] rear_point = wkt_list[index + 1] front_sector = front_point[0] * earth_radian * cos(front_point[1] * radian) front_line = front_point[1] * earth_radian rear_sector = rear_point[0] * earth_radian * cos(rear_point[1] * radian) area += (front_sector * rear_point[1] * earth_radian - rear_sector * front_line) wkt_rear = wkt_list[length - 1] wkt_front = wkt_list[0] wkt_rear_sector = wkt_rear[0] * earth_radian * cos(wkt_rear[1] * radian) wkt_rear_line = wkt_rear[1] * earth_radian wkt_front_sector = wkt_front[0] * earth_radian * cos(wkt_front[1] * radian) area += wkt_rear_sector * wkt_front[1] * earth_radian - wkt_front_sector * wkt_rear_line return 0.5 * abs(area) / 1000000 a = [ [116.169465, 39.932670], [116.160260, 39.924492], [116.150625, 39.710019], [116.183198, 39.709920], [116.226950, 39.777616], [116.442621, 39.799892], [116.463478, 39.790066], [116.588276, 39.809551], [116.536091, 39.808859], [116.573856, 39.839643], [116.706380, 39.916740], [116.600293, 39.937770], [116.514805, 39.982375], [116.499935, 40.013710], [116.546520, 40.030443], [116.687668, 40.129961], [116.539697, 40.080659], [116.503390, 40.058474], [116.468800, 40.052578] ] print(st_area(a))

结果是:

952.8632989570312

单位是平方千米,和高德地图API一致。

两点之间的距离计算:

https://developer.amap.com/demo/javascript-api/example/calcutation/calculate-distance-between-two-markers

在这里插入图片描述

python
from math import asin, sqrt, cos, pi # point_a,point_b是经纬度,格式为[lng,lat] def st_distance(point_a, point_b): # 弧度 radian = pi / 180.0 # 地球半径 radius = 6378137 f = point_a[1] * radian h = point_b[1] * radian k = 2 * radius d = point_b[0] * radian - point_a[0] * radian e = (1 - cos(h - f) + (1 - cos(d)) * cos(f) * cos(h)) / 2 return k * asin(sqrt(e)) print(st_distance([116.368904, 39.923423],[116.387271, 39.922501]))

代码结果是1571.3795388458316

单位是米,和高德地图API一致。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!