Створення невеликого сервісу веб-картографування / накладання плитки


26

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

Дослідження цієї теми призвело до величезної кількості можливих підходів, і залишило мене досить розгублено. Я шукаю

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

Поки що спеціальні плитки для карт на базовій карті OSM виглядають як те, що я шукаю (чи є краще рішення)? Який найкращий спосіб створити ці плитки?


2
Чи повинно бути рішення на основі растра (веб-плитки)? Чи було б добре для векторного рішення?
Mapperz

Ні, зовсім ні. Я просто зрозумів, що це буде найпростіший спосіб (створити плитки, створити index.htm або код коду, щоб вставити їх на існуючу веб-сторінку, скопіювати в каталог сервера, виконано). Раніше я працював з GMapCreator над приватним проектом, і це було дуже швидким способом.
SAnderka

Скільки багатокутників у вашому форм-файлі є? Якщо його менше 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). Тому я дуже хотів би уникати будь-якого рішення, яке потрібно встановити як "програмне забезпечення" на веб-просторі муніципалітету.
SAnderka

Моє рішення мрії - це те, що я можу підготувати самостійно і просто скопіювати їх у веб-простір, вставити в html / JS-код і зробити це. Незалежно від того, чи це растрові, чи векторні дані, насправді не підраховують. Я єдиний, хто розуміє технічну різницю ... І все, що все інше, це приємне та просте представлення наших даних для наших громадян.
SAnderka

1
вам просто потрібно пояснити їм, що веб-картографування - це не те, що можна легко зробити без будь-якого програмного забезпечення. Впевнені, що ви можете кинути на веб-сервер кілька простих плиток, але це не буде добре виглядати в усіх масштабах, це важко підтримувати і важко додавати функції, коли мер хоче більше.
Ян Тертон

Отже, я заглянув у Geoserver (як частина пакету Open Geo Suite), і це виглядає досить непогано. Я імпортував свій форм-файл, стилізував його, навіть отримав попередній перегляд на localhost. Але як я можу отримати ці карти в Інтернеті на своєму веб-просторі? Я щось пропускаю? Закладки тощо, очевидно, не працюватимуть, оскільки вони стосуються мого локального жорсткого диска. Я пропрацював усі можливі підручники і як вирішити питання, але ця тема ніколи не обговорюється? Чи міг би хтось вказати на мене у правильному напрямку?
SAnderka

ви поміщаєте GeoServer на свій веб-сервер і копіюєте каталог даних з локальної машини на віддалену машину.
Ян Тертон

8

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

Я вважаю за краще зробити більшу роботу (стилізацію тощо) в QGIS

OSM в якості базової карти було б чудово

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

  1. Складіть свої дані в QGIS. Використовуйте стару символіку, як у мене виникли проблеми з New Symbologyвикористанням ogr2layersплагіна.

  2. Запустіть ogr2layersплагін і визначте параметри відкритих шарів (наприклад, розмір карти, елементи керування картою, основна карта тощо). Це створить каталог, що містить index.htmlі ваші шари даних, перетворені у вигляді geojsonфайлів.

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

Зауважте, що це лише для простої веб-карти. Для створення користувальницьких базових карт та інших функцій веб-карт, перегляньте відповіді iant та Peter.


1
Проста веб-карта означає, що вона все ще може масштабуватися та прокручуватися, так? Це звучить як щось, на що я повинен заглянути, коли повертаюся до свого офісу.
SAnderka

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 . З цього приводу, є ще деякі хитрощі з розгортанням відображених на карті результатів, але це дасть вам гарну платформу для генерації високоякісних плиток.


Подивіться їх демонстраційне відео на першій сторінці, це дуже вражає!
joshdoe

6

Я вирішив надати деяку інформацію, яким шляхом я нарешті поїхав для моєї послуги з плиткою карт. Чисті JavaScript та GeoJSON не були рішенням, тому що мені доводиться обробляти полігони 40k та 33k точок. Тому я пішов на плитку. О, і я все ще не маю доступу до кореневого сервера, тому я не можу створити 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-File до звичайної структури папок, що містить плиткові png моїх даних на вибраних рівнях збільшення.

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

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

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


Tilemill тепер доступний і для Windows. Існує також відносно недавня тема в списку розсилки користувачів Openlayers про використання mbtiles в якості джерела даних (не пробували).
matt wilkie

Ах, дякую, добре знати. Безумовно, потрібно спробувати це, це було трохи прикро перемикатися між win7 і ubuntu весь час.
SAnderka

3

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

Кахельні зображення є оптимальними для дуже щільної інформації, наприклад, показує супутникові знімки, дороги або 50 000 полігонів перепису.

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

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

Або якщо ви пішли шляхом плитки, ви можете зберігати плитки на Amazons або хмарі Google, щоб не виникало внутрішніх клопотів.

Цей тематичний мапінг блогу містить хороший підсумок переваг векторного підходу перед плитковим підходом, який ви розглядаєте.

Удачі!


Я виявив, що близько 500 точок, які трактуються як векторні на одному огляді, як правило, сповільнюють ситуацію до сканування. Ми викладаємо все, що перевищує 500 балів.
Міхаліс Авраам

1

Я відчуваю вас, товариш, як я повільно працював на тому самому висновку. Дізнавшись QGIS, я спробував квантамік та мапнік. Але в той час, як він портуватиме qgis styling, це одностороння поїздка, а системи стилізації arent 1 для 1, отже, вам доведеться навчитися стилю mapnik так чи інакше. Я здогадуюсь, що те саме стосується функції експорту сервера qgis mapserver. Здається, не існує "простого способу" підвищити майстерність на сервері картографування, просто відкопуйте його і дайте багато часу.

Mapnik, geoserver, mapserver, здається, що віддані кожного з них, але mapserver здається середньою дорогою.

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


2
QGIS MapServer відрізняється від MapServer.
Ян Тертон

2
Через цей потенціал плутанини його слід назвати QGIS Server.
андермаркет
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.