把地球的按经纬度分成1°×1°的格点(格点就是格子的顶点),求距离地球上任意一点[例如该点经纬度是(114.01°,35.08°)]最近的4个格点,如何算??

解决方案 »

  1.   

    (114.01°,35.08°)]最近的4个格点
    ==》
    左上int(114.01-1),int(35.08-1)
    右上int(114.01+1),int(35.08-1)
    左下int(114.01-1),int(35.08+1)
    右下int(114.01+1),int(35.08+1)
      

  2.   

    或者:
    114.01°,35.08°)]最近的4个格点
    ==》
    左上int(114.01),int(35.08)
    右上int(114.01+1),int(35.08)
    左下int(114.01),int(35.08+1)
    右下int(114.01+1),int(35.08+1)区别在于前面的算法是在当前坐标所在的顶点的邻近4个顶点,这个算法是当前点的邻近4个顶点,楼主自己选
      

  3.   

    WallesCai你理解错了,我说是事先已经把地球分成1°×1°的格子了,那么最近的点只能是整数的经纬度了,像(114.00,35.00),不可能找到带小数的格点.
      

  4.   

    大概有3种情况:1) 点落在格子内部,那么 用 WallesCai 的解2
    2) 点落在网线交点(比如 a,b) 那么解是 (a+1,b),(a-1,b),(a,b-1),(a,b+1)
    3) 点落在网线边上,非交点 比较麻烦了,最近的有两个,就是这条边上的两个顶点,另外两个是这样找:看点离那个顶点近?然后取于较近的顶点垂直的边上的相邻的两个点