首页 > 解决方案 > 将 MapInfo TAB 转换为 MBTiles 坐标

问题描述

我有一个 MapInfo TAB 文件,如下所示:

!table
!version 300
!charset WindowsLatin1

Definition Table
  File "hp.tif"
  Type "RASTER"
  (400000,1300000) (0,0) Label "TL",
  (500000,1300000) (10000,0) Label "TR",
  (500000,1200000) (10000,10000) Label "BR",
  (400000,1200000) (0,10000) Label "BL"
  CoordSys Earth Projection 8, 79, "m", -2, 49, 0.9996012717, 400000, -100000
  Units "m"

我还有一个参考区域的图像文件。我正在尝试将其转换为几乎可以工作的 mbtiles 文件,但它有点不对齐。

我正在从此文件中获取边界框,400000, 1200000, 500000, 1300000然后将其转换为纬度/经度,即-2.0018997431234, 60.670742105011, -0.17172476489587, 61.580961113449.

然后,我使用以下代码使用 zoom 12 将其转换为 MBTiles 网格:

$x = (int)floor((($longitude + 180) / 360) * pow(2, $zoom))
$y = pow(2, $zoom) - (int)floor((1 - log(tan(deg2rad($latitude)) + 1 / cos(deg2rad($latitude))) / pi()) / 2 * pow(2, $zoom)) - 1;

这会产生一个2025 - 2046和的网格2921 - 2943

到目前为止,一切都很好。接下来,我将关联的图像缩放到 256px * tile X x 256px * tile Y 并导出映射到网格块/列的 256x256 块。

这会生成一个 mbtiles 文件,该文件可以工作,但与真实地图略有不同。

我尝试使用 MapTiler Desktop 导出相同的文件,这会生成一个具有相同网格的 mbtiles 文件,2025 - 20462921 - 2943它完全对齐。我无法为我的生活找出原因。

排队是-100000为了CoordSys Earth Projection什么?MapTiler 将地理位置显示为400000 10 0 1300000 0 -10。我想知道 -10 是偏移量还是我需要考虑的东西。

标签: gismbtilesmapinfo

解决方案


推荐阅读