Простой способ иметь автономную веб-карту? [закрыто]

15

Моя цель - встроить карту мира в веб-страницу, но без доступа к Интернету. Желательно только набор тайлов в сочетании с какой-то скользкой картой js-lib. Место для хранения на самом деле не проблема, и максимальный уровень масштабирования не требуется.

Какой самый простой способ сделать это?

Я нашел проект, который, кажется, отвечает всем требованиям - Карты на флешке, но он кажется мертвым?

Тек
источник
2
Что именно означает «максимальное увеличение не требуется»? Какой масштаб / точность / разрешение вам нужно?
Mr_Chimp
2
mapnik (Windows) github.com/mapnik/mapnik/wiki/WindowsInstallation и использовать localhost в качестве URL-
адреса
Точность и разрешение не важны, стран и городов-мэров достаточно, но, конечно, я хочу, чтобы это было как можно лучше. Простота важнее, я стараюсь избегать дополнительных сервисов и баз данных.
TEK
1
Если вы готовы потратить пару дней на настройку Windows, то опция mapnik + postgis + postgresql + proj.4 + python 2.7 + ... - вариант, но после того, как вы пройдете через это, я бы рекомендовал изучить ответ TileMill ниже. Звучит намного проще.
приблизительно0
Это действительно просто. Единственная проблема - получить данные карты и проблемы с лицензированием, связанные с созданием автономной системы карт. Т.е. большинство провайдеров карт, которые разрешают бесплатное использование (например, Google), делают это только тогда, когда карта доступна для общественности. Но это совсем другой вопрос ... Я делал это только для Великобритании, поэтому использовал ОС Open Data, которая бесплатна для использования.
Mr_Chimp

Ответы:

17

Я бы порекомендовал посмотреть на TileMill, созданный теми же людьми, которые работали на Maps on a Stick. TileMill был либо частью «Карты на палочке», либо стал «Картой на палочке» - что-то в этом роде. Я забыл связь. Тем не мение...

TileMill позволит вам загружать географические данные, стилизовать их так, как вам нравится, а затем создавать набор плиток карты PNG для различных уровней масштабирования.

Выходные данные TileMill - это файл .mbtiles. Это просто база данных sqlite, которая содержит PNG. Если вы работаете в автономном режиме, вероятно, проще извлечь pngs в папку (используя mbutil ), чем использовать sqlite для доступа к ним.

Если ваша карта довольно проста (т.е. минимальное взаимодействие), я бы рекомендовал использовать Leaflet для вашей библиотеки отображений.

В листовке вам нужно добавить слой листов (подсказка: используйте tms, а не xyz).

Надеюсь, это поможет.

Изменить: пару вещей, чтобы отметить.

1) Вам следует знать об лицензионных ограничениях для любых картографических данных, которые вы используете (см. Мой комментарий к вопросу выше).

2) Если вы подобрались достаточно близко, чтобы увидеть дороги и т. Д., Ожидайте, что у вас будет несколько ГБ плиток.

Mr_Chimp
источник
Получил подтверждение концепции и работает! Придется дополнительно изучить вопросы лицензирования, но это, скорее всего, самое простое решение.
Тек
2

Другим вариантом будет что-то вроде mapwingis . Не нужно для плиток, он будет читать шейп-файлы.

Ян
источник
MapWinGIS довольно хорош, но вопрос задан на веб-сайте.
Mr_Chimp
В нем говорилось, что веб-страница, а не веб-интерфейс, и не указывается доступ к Интернету, поэтому я предположил, что это означает сервер (или локальный), что будет хорошо для mapwingis. Я использовал его в форме в базе данных Access и не могу представить, что его будет сложнее реализовать на веб-странице.
Ян
2

Я нашел новый проект под названием OpenMapTiles , который значительно упрощает создание автономных карт.

Настроить сервер плиток на вашем компьютере очень просто. Установите Node.js (с npm) и выполните два шага в своих документах: https://openmaptiles.org/docs/

Вы можете скачать карты с их веб-сайта (включая карту всей планеты, которая сейчас составляет ~ 44 ГБ): https://openmaptiles.org/downloads/

Андрей М
источник
1

Если вы можете создать файл MBTiles (например, с Tilemill), то вы можете преобразовать этот файл в простой пакет плиток во вложенных папках, которые соответствуют ожидаемому макету z / x / y, используя tilestache-seed.pyскрипт, включенный в Tilestache. Вот что я сделал недавно:

http://mike.teczno.com/img/hachure/labels/

Михал Мигурски
источник