微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从 Mapbox 获取珠穆朗玛峰 RGB 平铺数据未找到

如何解决无法从 Mapbox 获取珠穆朗玛峰 RGB 平铺数据未找到

我一直在寻找重新开发 JS Everest Flight Sim 的工作。最初,我曾尝试使用 DEM 高程数据创建自己的高程网格和切片,并将其映射到顶点 Z 轴。

我决定将 MapBox RGB 图块用于高程数据将是更好的方法。不幸的是,我似乎无法让它发挥作用。 Omaha Nebraska doc 示例有效,但现在 Mt.珠穆朗玛峰瓷砖。

我也在这里提出了这个问题:https://github.com/mapbox/sphericalmercator/issues/43 也许来自 MapBox 的人可以为我提供一些见解:)

import fs from "fs";
import dotenv from "dotenv";
import fetch from "node-fetch";
import SphericalMercator from "@mapBox/sphericalmercator";

dotenv.config();

const queryMapBox = async () => {
  const merc = new SphericalMercator({
    size: 256,});
  const xyFromLatLong = (lat,long,merc) => {
    return merc.forward([long,lat]);
  };

  const zoom = 14;
  const long = 86.922623;
  const lat = 27.986065;
  const xyPos = xyFromLatLong(lat,merc);

  console.log({ xyPos });

  try {
    // Example from Docs - Omaha,Nebraska
    // const response = await fetch(
    //   `https://api.mapBox.com/v4/mapBox.terrain-rgb/14/12558/6127.pngraw?access_token=${process.env.ACCESS_TOKEN}`
    // );
    // const filename = "omaha-rgb.png"

    const response = await fetch(
      `https://api.mapBox.com/v4/mapBox.terrain-rgb/${zoom}/${xyPos[0].toFixed(0)}/${xyPos[1].toFixed(0)}.pngraw?access_token=${process.env.ACCESS_TOKEN}`
    );
    const filename = "everest-rgb.png"

    await new Promise((resolve,reject) => {
      const fileStream = fs.createWriteStream(`./data/${filename}`);
      response.body.pipe(fileStream);
      response.body.on("error",(err) => {
        reject(err);
      });
      fileStream.on("finish",function () {
        resolve();
      });
    });


    console.log({ response });
    // console.log({ res });
  } catch (err) {
    console.error(err);
  }
};

queryMapBox(); // Test

解决方法

我认为您使用了错误的库来将 lon、lat 转换为平铺 x、y。 The documentation 提到了一些库,包括这个:

tilebelt:一组用于请求和处理磁贴的 JavaScript 实用程序。

示例:

const tilebelt = require("@mapbox/tilebelt");

console.log(tilebelt.pointToTile(86.922623,27.986065,14));

// Output:
// [ 12147,6864,14 ]

有了这些 x 和 y,URL 将是这样的:

https://api.mapbox.com/v4/mapbox.terrain-rgb/14/12147/6864.pngraw?access_token=YOUR_MAPBOX_ACCESS_TOKEN

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。