问题描述
我需要从客户端的Leaflet.js导出地理参考图像。从Leaflet导出图像不是问题,因为有很多现有的插件,但是我想在导出中包含一个world file,以便可以将生成的图像读入GIS软件。我有一个工作脚本要塞他,但我似乎无法为我的世界文件确定正确的参数,以使生成的地理参考图像定位正确。
这是我当前的脚本
// map is a Leaflet map object
let bounds = map.getBounds(); // Leaflet LatLngBounds
let topLeft = bounds.getNorthWest();
let bottomRight = bounds.getSouthEast();
let width_deg = bottomRight.lng - topLeft.lng;
let height_deg = topLeft.lat - bottomRight.lat;
let width_px = $(map._container).width() // Width of the map in px
let height_px = $(map._container).height() // Height of the map in px
let scaleX = width_deg / width_px;
let scaleY = height_deg / height_px;
let jgwText = `${scaleX}
0
0
-${scaleY}
${topLeft.lng}
${topLeft.lat}`
这似乎在大比例下效果很好(即放大到城市级别左右),但是在小比例下,y轴上会出现一些失真。我注意到的一件事是,我可以找到的所有世界文件示例(以及从QGIS或ArcMap生成的世界文件示例)都具有完全相同的x比例和y比例参数(带正负号)。在我的计算中,除非您正坐在赤道上,否则这些术语是不同的。
从QGIS生成的示例世界文件
0.08984380916303301 // x-scale (size of px in x direction) 0 // rotation parameter 1 0 // rotation parameter 2 -0.08984380916303301 // y-scale (size of px in y direction) -130.8723208723141056 // x-coord of top left px 51.73651369984968085 // y-coord of top left px
根据我的计算产生的示例世界文件
0.021972656250000017 0 0 -0.015362443783773333 -130.91308593750003 51.781435604431195
使用我的计算并覆盖正确的状态边界生成的图像示例:
有人知道我在做什么错吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)