在裁剪的等距矩形投影中从(Lat,Lon)计算(x,y)

时间:2015-09-25 07:38:08

标签: gis latitude-longitude projection

我在 equirectangular 投影中有一块地图。我知道(lat,lon)在左上角和右下角。现在我知道我可以像这样计算(x,y):

x = ((lon + 180) * (map_width  / 360))
y = (((lat * -1) + 90) * (map_height  / 180))

但是,这似乎会产生错误的坐标。我的猜测是我必须考虑到我的图像的左上角和右下角(lat,lon)。

所以我尝试了这种方式(left,top,right,bottom_lon表示我的图像边界):

x = ((lon + left_lon) * (map_width  / (right_lon - left_lon)))
y = (((lat * -1) + top_lat) * (map_height  / (top_lat - bottom_lat)))

但我仍然没有得到正确的结果。我做错了什么?

2 个答案:

答案 0 :(得分:0)

用这两个Python函数回答我自己的问题:

def lon2x(lon, w):
    return int(img_w * ((lon - start_lon) / (end_lon - start_lon)))

def lat2y(lat, h):
    return int(img_h * ((lat - start_lat) / (end_lat - start_lat)))

答案 1 :(得分:0)

在接受的答案中,忘记了减去高度。因此,必须像这样:

def lon2x(lon, w):
    return int(img_w * ((lon - start_lon) / (end_lon - start_lon)))

def lat2y(lat, h):
    return int(img_h) - int(img_h * ((lat - start_lat) / (end_lat - start_lat)))

编辑:它们是近似正确的结果,但是对于非常准确的结果,您应该使用投影方法来创建地图(例如墨卡托(Mercator)或等角矩形)。