复现Vesselfinder的EPSG:4326转EPSG:3857坐标变换遇结果不符问题
关于Vesselfinder后端边界框(bbox)计算方式的疑问
我正在尝试搞清楚vesselfinder.com用于后端数据查询的边界框(bbox)计算逻辑,目前遇到了问题:
- 给定输入经纬度:
lat, lon = 59.8230, 22.9586 - 该网站实际使用的bbox为:13761899,35886447,13779795,35898097
我用常规的EPSG:4326转EPSG:3857转换得到的结果和上述值差距很大,转换后bbox为:2553560.4710,8358928.9331,2556565.4293,8360514.8411。
查看Vesselfinder的JS代码,发现它的转换逻辑如下:
var c = new s.geom.MultiLineString(t); return c.transform('EPSG:4326', 'EPSG:3857'),
代码中还提及了EPSG:102100、EPSG:102113、EPSG:900913,但我认为实际采用的是上面的EPSG:4326转EPSG:3857转换。
我用Python尝试了相同转换,代码如下:
from pyproj import Transformer TRAN_4326_TO_3857 = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True) lat = 59.823002 lon = 22.958583 expansion = 2000 res = TRAN_4326_TO_3857.transform(lon, lat) bbox = (round(res[0]-expansion), round(res[1]-expansion), round(res[0]+expansion), round(res[1]+expansion)) print(bbox) # 输出结果:(2455738, 8260436, 2655738, 8460436)
结果和常规转换接近,但和Vesselfinder的bbox完全不符。我试过切换到代码中提及的其他EPSG编码,也调换过转换顺序,都没能得到目标bbox。请问我哪里出错了?
内容的提问来源于stack exchange,提问作者user8563312
相关产品推荐
相关产品推荐

