You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Leaflet L.canvasLayer.scalarField如何获取栅格指定坐标值

如何获取Leaflet L.canvasLayer.scalarField指定坐标位置的栅格数值

你不需要依赖点击事件取值,L.ScalarField实例本身就提供了直接查询任意坐标对应栅格值的方法。
你现有代码里通过L.ScalarField.fromASCIIGrid(asc)生成的s就是ScalarField实例,它自带valueAt方法,传入Leaflet的LatLng经纬度对象,就能直接返回对应位置的栅格值,和点击事件返回的e.value完全一致。

使用示例

d3.text("https://ihcantabria.github.io/Leaflet.CanvasLayer.Field/data/Bay_Speed.asc", function (asc) {
    var s = L.ScalarField.fromASCIIGrid(asc);
    var layer = L.canvasLayer.scalarField(s).addTo(map);

    // 替换成你需要查询的目标坐标,格式为[纬度, 经度]
    const queryPoint = L.latLng(43.35, -2.17);
    const targetValue = s.valueAt(queryPoint);

    if (targetValue !== null) {
        console.log("指定坐标对应的栅格值:", targetValue);
    }

    // 原有点击取数逻辑可保留
    layer.on('click', function(e) {
        if (e.value !== null) {
            let vector = e.value;
            console.log(vector)
        }
    });
});

注意事项

  • 传入的坐标必须是WGS84经纬度格式,和Leaflet默认坐标系保持一致,其他投影坐标需要先做坐标转换再传入
  • 查询坐标超出栅格数据覆盖范围时,valueAt会返回null,业务代码里必须做空值判断
  • 方法返回的是邻域插值后的数值,和点击事件取到的值精度完全一致

内容的提问来源于stack exchange,提问作者gurrumo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:39:24