Преобразование MapInfo TAB в координаты MBTiles - PullRequest
1 голос
/ 04 февраля 2020

У меня есть файл 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.

Затем я использую следующий код, чтобы преобразовать его в сетку MBTiles с использованием увеличения 12:

$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 * плиток X x 256px * плиток Y и экспортирую 256x256 плиток, сопоставленных с плитками / столбцами сетки.

Это создает файл mbtiles, который работает, но немного не совпадает с реальная карта.

Я попытался экспортировать те же файлы, используя MapTiler Desktop, и это создает файл mbtiles с той же сеткой 2025 - 2046 и 2921 - 2943, но он идеально выравнивается. Я не могу понять, почему.

Для чего нужна строка -100000 в строке CoordSys Earth Projection? MapTiler показывает географическое местоположение как 400000 10 0 1300000 0 -10. Мне интересно, является ли -10 смещением или что-то, что мне нужно учитывать.

...