给定圆心经纬度,计算圆内点对径坐标并适配经纬度合法取值范围的方法
地理坐标对径点计算说明
基础规则
- 合法坐标取值边界:纬度lat满足
-90 < lat < 90,经度lon满足-180 < lon < 180 - 计算前提:给定圆的圆心为坐标点
C=(lat_center, lon_center),待计算点X=(lat, lon)完全落在该圆内部 - 计算目标:求解点X相对于圆心C的对径(diametrically opposite)坐标
参考计算示例
当圆心坐标为
C=(45.9, 180)时,点X=(45.9, -179)对应的正确对径点坐标为(45.9, 179)
现有近似实现的缺陷
目前使用的计算函数无法处理经纬度靠近合法取值边界时的计算偏差,存在逻辑漏洞,原始实现代码如下:
def f(lat, lon, center): lat_center = center[0] lon_center = center[1] dist_lon = np.abs(lon - lon_center) if np.abs(lon - lon_center)<180 else 360 - np.abs(lon - lon_center) dist_lat = np.abs(lat - lat_center) if np.abs(lat - lat_center)<180 else 360 - np.abs(lat - lat_center) lon_op = lon_center + dist_lon if lon_center + dist_lon != lon else lon_center - dist_lon lat_op = lat_center + dist_lat if lat_center + dist_lat != lat else lat_center - dist_lat return np.round(lat_op, 2), np.round(lon_op, 2)
内容的提问来源于stack exchange,提问作者Javier
相关产品推荐
相关产品推荐

