gis - 将 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 - 2046
但2921 - 2943
它完全对齐。我无法为我的生活找出原因。
排队是-100000
为了CoordSys Earth Projection
什么?MapTiler 将地理位置显示为400000 10 0 1300000 0 -10
。我想知道 -10 是偏移量还是我需要考虑的东西。
解决方案
推荐阅读
- python - 使用Python从列表中删除特定字符串,而不管大写/小写
- clearcase - ClearCase 视图在 lsview 中可见,对于 catcs 不存在
- c++ - 编译多个 C++ 文件。调用二进制文件来运行代码
- javascript - 如何在滚动到特定 div 后从 Position Sticky 切换到固定
- coq - 如何简化引理
- ajax - 如何在成功的图像 POST 上显示图像?
- angular - 使用 Angular 应用程序将文件上传到 Google Cloud Bucket
- javascript - 如何在 node.js 服务器中使用 Jest 解决 UnhandledPromiseRejectionWarning
- elasticsearch - 如何在 journalbeat 中排除日志/事件
- python - 状态和行动形式主义。不同类之间如何实现+,-,=运算符