如何基于1/94长宽比正确缩放固定对角线端点的矩形经纬度坐标
结论:你的实现思路不正确,存在两个核心问题
问题1:缺少投影转换步骤
经纬度是球面坐标系,不同纬度下1经度对应的实际地面距离差异极大,你直接对经纬度数值做比例缩放,最终得到的矩形实际物理尺寸必然和你要求的94*8mm不符。
你需要先把四个点的经纬度转换为UTM之类的平面米级坐标,完成缩放计算后再转换回经纬度,才能保证实际尺寸符合要求。
问题2:缩放逻辑不符合对角线固定的约束
你当前的代码相当于独立对纬度、经度方向做不同比例的拉伸/压缩,最终得到的新矩形对角线已经不再是原来的P1-P2,不符合你要求的两个对角点位置保持不变的前提。
如果仅在矩形边与经纬度轴严格对齐、小范围区域球面形变可忽略的前提下做近似计算,你可以按以下逻辑修正:
- 先计算原始对角线的纬度差
d_lat = df['lat2'] - df['lat1']、经度差d_lon = df['lon2'] - df['lon1'] - 根据目标长宽比
r = 1/94,结合对角线长度不变的约束d_lat² + d_lon² = new_d_lat² + new_d_lon²,联立求解得到新的纬度偏移new_d_lat和经度偏移new_d_lon - 基于P1、P2和新的偏移量计算另外两个角点坐标:
# 假设边和经纬度对齐,P3和P1同纬度,和P2同经度;P4和P2同纬度,和P1同经度 df['new_lat3'] = df['lat1'] df['new_lon3'] = df['lon1'] + new_d_lon df['new_lat4'] = df['lat2'] df['new_lon4'] = df['lon2'] - new_d_lon
内容的提问来源于stack exchange,提问作者sdom
相关产品推荐
相关产品推荐

