Создание небольшого веб-картографического / картографического сервиса

26

Я ищу мелкомасштабный и простой способ представления одного или нескольких многоугольных шейп-файлов в Интернете (если быть точным, на муниципальном веб-сайте без какой-либо существующей инфраструктуры картографического сервера). Прямо сейчас я делаю всю работу с QGIS, и я бы предпочел оставить все с открытым исходным кодом (не осталось никакого бюджета для каких-либо крупных инвестиций в программное обеспечение).

Исследование этой темы привело к огромному количеству возможных подходов и оставило меня в замешательстве. Что я ищу это

  • возможность отображать категорированные полигоны на тематической карте (- если это возможно, было бы неплохо получать всплывающие окна или иметь возможность получать информацию об атрибутах - но это крайне необязательно)
  • Я предпочел бы выполнять большую часть работы (стайлинг и т. Д.) В QGIS
  • OSM в качестве базовой карты будет в порядке

Пока что пользовательские листы карты на базовой карте OSM выглядят как то, что я ищу (или есть лучшее решение)? Каков был бы лучший способ создать эти плитки?

SAnderka
источник
2
Это должно быть решение на основе растра (веб-тайлы)? Было бы хорошо для векторного решения?
Mapperz
Нет, совсем нет. Я просто подумал, что это будет самый простой способ (создать плитки, создать index.htm или блок кода для вставки в существующую веб-страницу, скопировать в каталог сервера, готово). Однажды я работал с GMapCreator над частным проектом, и это был очень быстрый способ добиться цели.
Сандерка
Сколько полигонов в вашем шейп-файле у вас есть? Если его меньше 1000, возможно, @ Mapperz прокомментирует векторное решение. Самое простое решение - использовать API Карт Google для рисования многоугольников и создания всплывающих окон с информацией - не нужно создавать и хранить неинтерактивные мозаичные изображения. Плиточные изображения карты лучше всего подходят для информации с высокой плотностью, например, для отображения спутниковых изображений, дорог или границ переписных участков.
b_dev

Ответы:

13

Для простого способа сделать это, начиная с QGIS, вы можете использовать QGIS Mapserver, который может обслуживать карты, которые вы проектируете, используя обычный интерфейс QGIS. В качестве альтернативы вы можете использовать GeoServer, который основан на Java и, возможно, проще в установке. Так как обе программы обслуживают карты, используя открытые стандарты, если вы начинаете с одной и должны переключаться позже, нет необходимости менять клиента.

Как только вы настроите систему для обслуживания карт WMS, вам понадобится клиентский интерфейс. Я бы порекомендовал OpenLayers, так как с ним довольно просто начать и легко расширять. Он обрабатывает плитки WMS, WMST и OSM без проблем.

В конечном счете вам может потребоваться перейти на листы для ваших слоев WMS (скажем, вы начнете получать более 50-100 запросов в минуту на разумном оборудовании), а затем вы захотите разместить кэш листов перед картографическим сервером. Если вы использовали GeoServer, то вы можете использовать встроенный GeoWebCache или использовать TileCache .

Ян Тертон
источник
Моя проблема в том, что я сейчас работаю внештатным советником в муниципальной администрации. Местный ИТ-персонал довольно хладнокровен и пытается скрыть всякие «подозрительные» материалы с открытым исходным кодом от своих машин (я долго сражался за QGIS). Поэтому я действительно хотел бы избежать любого решения, которое должно быть установлено как «программное обеспечение» в веб-пространстве муниципалитета.
Сандерка
Решение моей мечты было бы тем, что я мог бы подготовить самостоятельно и просто скопировать в их веб-пространство, вставить в html / JS-код и все готово. Будь то растровые или векторные данные на самом деле не имеют значения. В любом случае, я единственный, кто понимает технические различия ... И все, что волнует всех остальных, - это удобное и простое представление наших данных нашим гражданам.
Сандерка
1
вам просто нужно объяснить им, что веб-картография - это не то, что вы легко можете сделать без программного обеспечения. Конечно, вы можете бросить несколько простых плиток на веб-сервер, но он не будет хорошо выглядеть во всех масштабах, его сложно поддерживать и сложно добавлять функции, когда мэр хочет большего.
Ян Тертон
Итак, я посмотрел Geoserver (как часть пакета Open Geo Suite), и он выглядит довольно хорошо. Я импортировал свой шейп-файл, стилизовал его, даже запустил предварительный просмотр на localhost. Но как мне получить эти карты онлайн на моем веб-пространстве? Я что-то пропустил? Закладки и т. Д., Очевидно, не будут работать, поскольку они ссылаются на мой локальный жесткий диск. Я проработал все возможные уроки и инструкции, но эта тема, кажется, никогда не обсуждалась? Может ли кто-нибудь указать мне правильное направление?
Сандерка
вы помещаете GeoServer на свой веб-сервер и копируете каталог данных с локального компьютера на удаленный компьютер.
Ян Тертон
8

возможность отображать категорированные полигоны на тематической карте (- если это возможно, было бы неплохо получать всплывающие окна или иметь возможность получать информацию об атрибутах - но это крайне необязательно)

Я предпочел бы выполнять большую часть работы (стайлинг и т. Д.) В QGIS

OSM в качестве базовой карты будет в порядке

Все это можно сделать в рамках QGIS и ogr2layersплагина. Рабочий процесс прост:

  1. Стиль ваших данных в QGIS. Используйте старую символику, так как у меня были проблемы с New Symbologyпри использовании ogr2layersплагина.

  2. Запустите ogr2layersплагин и определите параметры openlayers (такие как размер карты, элементы управления картой, базовая карта и т. Д.). Это создаст каталог, содержащий index.htmlи ваши слои данных, преобразованные в geojsonфайлы.

  3. Загрузите каталог на веб-сервер.

Обратите внимание, что это только для простой веб-карты. Для создания пользовательских базовых карт и других функций веб-карт проверьте ответы Ианта и Питера.

Манинг
источник
1
Простая веб-карта означает, что она все еще масштабируема и прокручиваема, да? Это звучит как то, на что я должен обратить внимание, когда вернусь в свой офис.
Сандерка
1
Да, смотрите этот пример , как к download.essc.org.ph/wcsp2011_geo_workshop/... и результаты download.essc.org.ph/wcsp2011_geo_workshop/webmap/eagle_webmap
Манинг
6

Другой вариант - TileMill - он поддерживает мозаику , взаимодействие и картографию в простом в использовании веб-интерфейсе, включая определения стилей на языке прото-CSS, который называется cascadenik . Используя TileMill, вы можете проверять файлы mbtiles, которые можно использовать с чем-то вроде TileStream . Тем не менее, есть еще некоторые хитрости с развертыванием отображаемых выходов, но это даст вам хорошую платформу для генерации высококачественных плиток.

SCW
источник
Посмотрите их демо-видео на первой странице, это очень впечатляет!
Джошдо
6

Я решил предоставить некоторую информацию о том, каким образом я наконец-то выбрал свой картографический сервис. Чистый JavaScript и GeoJSON не были решением, потому что мне приходилось обрабатывать примерно 40 000 полигонов и 33 000 точек. Итак, я пошел за плиткой. О, и у меня до сих пор нет доступа к корневому серверу, поэтому я не могу настроить GeoServer или что-то подобное (в настоящий момент это не представляется возможным с финансовой точки зрения для одного клиента)

После некоторого исследования и чтения я наконец-то остановился на OpenLayers (после некоторой демонстрации с GMaps). Великая книга Эрика Хаззарда «OpenLayers 2.10» (Packt Publishing, 2011) действительно очень мне помогла, потому что она также охватывает некоторые основы JavaScript и советы по отладке.

Конечно, я делал всю свою работу с векторными данными в QGIS, и это определенно способ пойти на такого маленького фрилансера, как я (я также знаю кое-что из ArcGIS из университета, но QGIS предлагает все, что мне когда-либо было нужно).

Разработка карты и создание плиток было более сложной задачей. Во-первых, я согласился с « GMapCreator » от CASA, но наложение нескольких шейп-файлов оказалось утомительным (я должен предоставить точечные данные по полигонам, а затем по городской границе, охватывающей все). Это абсолютно возможно сделать в GMapsCreator (и я сделал это на этапе демонстрации), но это занимает 3 полных цикла рендеринга (сначала вы создаете плитки, затем существующие плитки «перезаписываются» с более поздними функциями - рендеринг выполняется в правильном порядке). важно!), а меню стиля немного громоздкие и запутанные. Сохранение карты и ее последующее редактирование также является сложной задачей.

TileMill выглядел очень многообещающе, особенно их CSS-подобный стиль, поэтому я изучил его. К сожалению, это только Mac или Linux, так что это может отпугнуть некоторых людей. Мне очень понравилось то, что я увидел, поэтому я установил раздел Ubuntu на свой жесткий диск, загрузил его и стилизовал свои карты. Документация по синтаксису стиля иногда немного скудна, но просмотр их демо-видео (ссылка на главном сайте) дает ответы практически на все вопросы. Можно сделать некоторые интересные вещи с вложенными и / или условными стилями, и некоторое базовое понимание CSS должно действительно привести вас туда, куда вы хотите.

В конце концов, TileMill отображает хороший одиночный файл * .mbtiles. Я не думаю, что есть способ напрямую отобразить их в OpenLayers (по крайней мере, я не смог найти один?), Поэтому пришло время использовать другой инструмент: mbutil . Этот инструмент "распаковывает" файл mbtiles в обычную структуру папок, содержащую png-файлы моих данных на выбранных уровнях масштабирования.

Наконец, я загрузил все эти файлы на свой FTP-сервер, немного поработал над OL, чтобы запустить мою веб-карту (вы добавляете созданные плитки в качестве слоя TMS, но угадывание правильного исходного URL-адреса и имени слоя заняло некоторое время и googling), а затем прожег несколько часов, возясь с основными проблемами HTML / CSS. Я хотел карту 100% ширины / высоты с плавающей легендой, следуя моим корпоративным (как уже упоминалось, муниципалитету) правилам идентификации.

О, и до сих пор я использую Карты Google в качестве базовых слоев, но это может вскоре заменить некоторые пользовательские аэрофотоснимки, предоставляемые через WMS (не предоставлено мной, но администрация штата проводит опрос и управление геоданными).

Я надеюсь, что не забыл ничего важного, но если я это сделал, пожалуйста, не стесняйтесь спрашивать! Я проверю эту ветку время от времени.

SAnderka
источник
Tilemill теперь доступна и для Windows. В списке рассылки Openlayers Users также есть относительно недавняя ветка об использовании mbtiles в качестве источника данных (еще не пробовал).
Мэтт Уилки
Ах, спасибо, приятно знать. Определенно придется попробовать это, было немного раздражающим переключаться между win7 и ubuntu все время.
Сандерка
3

Если у вас менее 1000 полигонов, рассмотрите комментарий @ Mapperz к векторному решению - не нужно создавать и хранить неинтерактивные мозаичные изображения, если у вас всего несколько полигонов.

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

Самое простое решение для небольшого числа полигонов - преобразовать шейп-файл в KML и загрузить его в Google My Maps.

Если вы кодируете в Javascript, наиболее интерактивным решением является API Карт Google (или OpenLayers) для рисования полигонов и создания всплывающих окон с информацией. Вы можете начать с преобразования полигонов шейп-файлов с помощью библиотеки GDAL в файл geoJSON (способ хранения географической информации с помощью Javascript).

Или, если вы пошли по маршруту с плитками, вы можете хранить плитки на Амазонках или в облаке Google без каких-либо внутренних проблем.

В этой записи блога Thematic Mapping есть краткое изложение преимуществ векторного подхода по сравнению с подходом листов, который вы рассматриваете.

Удачи!

b_dev
источник
Я обнаружил, что около 500 точек, которые рассматриваются как векторные в одном представлении, имеют тенденцию замедлять процесс сканирования. Мы выкладываем все более 500 баллов.
Михалис Авраам
1

Я чувствую к тебе приятель, так как я медленно продвигался к тому же выводу. Изучив QGIS, я попробовал квантамник и мапник. Но хотя он будет переносить стилевое оформление qgis в одну сторону, а системы стилей не будут 1 к 1, следовательно, вам все равно придется изучать стилевое оформление mapnik. Я предполагаю, что то же самое относится и к функции экспорта qgis mapserver. Похоже, что на mapserver не существует «легкого способа» повышения квалификации, просто включите его и оставьте достаточно времени.

Mapnik, геосервер, mapserver, кажется, есть преданные каждого, но mapserver, кажется, средняя дорога.

Сказав, что есть один ярлык, который я нашел, и это qgis имеет опцию командной строки для растеризации карты qgis до разрешения и границ по вашему выбору, и создает файл мира. При этом вы можете использовать maptiler или gdal2tiles, чтобы накладывать по одному слою за раз. Очевидно, что не подходит для 20 уровней масштабирования, и я не знаю, каков максимальный предел размера PNG.

Питер
источник
2
QGIS MapServer отличается от MapServer.
Ян Тертон
2
Из-за этой потенциальной путаницы его следует называть QGIS Server.
Подземье