Предаване на карти с Mapnik

Географски информационни системи и дистанционно наблюдение

Описание на започването с Mapnik и опитът от използването му в проекта Kosmosnimki

Въведение

Главна информация

  • лиценз: LGPL
  • платформи: UNIX, Windows
  • езици: C ++, Python
  • формати на входни данни: ESRI Shapefile, PostGIS, PNG, TIFF
  • изходни формати: JPEG, PNG
  • поддръжка за кодиране: Unicode и всякакви други
  • поддръжка на шрифтове: TrueType
  • поддържани графични елементи:
    • точка
    • линия запълнена, текстура
    • многоъгълник с пълнеж, текстура, екструзия (псевдо-3D)
    • надпис към точка, линия, многоъгълник
    • капак (снимка + надпис, например за маркиране на маршрути)
    • векторен указател (например стрелка по улица)

Инсталиране под Windows

  • Изтеглете и инсталирайте Python 2.5.
  • Изтеглете и инсталирайте PIL за Python 2.5.
  • Изтеглете и разархивирайте двоичните файлове на win32 от уебсайта на Mapnik в папка по ваш избор - след това [mapnik].
  • Редактирайте файла [mapnik] \ site-пакети \ mapnik \ paths.py: в първия ред вместо посочения път напишете mapniklibpath = [mapnik]/lib/mapnik
  • Добавете пътя към папката [mapnik] \ lib към системната променлива PATH.
  • Добавете пътя към папката [mapnik] \ site-пакети към системната променлива PYTHONPATH.

Проверете дали всичко е направено правилно. В командната конзола изпълнете:

Ако се появят съобщения за грешка, проверете горните пътища и проверете TroubleShooting.

Инсталиране на UNIX

Подробни инструкции на английски език можете да намерите на уебсайта на Mapnik.

Начало на работата

За да използвате Mapnik, трябва да напишете скрипт на Python, който извиква необходимите функции (пример за такъв скрипт от проекта OpenStreetMap). Стиловете могат да се задават директно в Python код или в отделен XML файл (пример).

Опит с Mapnik на уебсайта Kosmosnimki

Уебсайтът KosmosnimkiMapnik се използва за изчертаване на карта на Русия в мащаб 500 000, както и подробна карта на Москва.

Ето няколко наблюдения от опита на използването на Mapnik за този проект, потенциално полезни за тези, които решат да вземат тестовете на Mapnik сами.

  1. Най-простото: нарисувахме полилинии с външна граница (контур) с две линии с различни цветове и дебелини - една върху друга.
  2. За да се постави пунсонът, беше използвана картината в точката с надписа, изместването на текста по оста y. Операторът allow_overlap = "true" позволява картините да се припокриват - също е необходимо, когато има много пуансони.
  3. Най-трудната задача е поставянето на етикети на картата. Когато имаше много от тях, те започнаха да се припокриват помежду си или да изчезват: когато, да речем, една улица се натъкне на особено извита, името й се извиваше на завои и ставаше нечетливо. Както в тези примери:

gis-lab

В резултат се оказа, че има оператор "max_char_angle_delta", който ви позволява да зададете ограничение на огъването на надписа, а в противен случай той просто не се показва.
  • С min_distance, което на теория трябва да задава разстоянието между повтарящите се етикети, не можахме да го разберем напълно. Очевидно този оператор работи само за изключване на „ненужни“ дублиращи се етикети.
  • Шрифтовете по подразбиране и форматирането на текст на Mapnik не са много разнообразни. Непрозрачност, прозрачност, все още не работи за текст. Когато започнахме да работим с картата, се поддържаше само кодиране UTF-8, следователно таблици в някои кодировки на кирилица трябваше да бъдат прекодирани предварително. В последната версия стана възможно да се зададе кодирането в самата програма - encoding = "UTF-8". Допълнителни шрифтове бяха записани в папката ./mapnik/lib/fonts/ и регистрирани в програмата, както следва:

  • За съжаление не бе намерена възможността за задаване на подплънки (отстъп от вътрешната граница). Поради това възниква проблем, когато е необходимо да се комбинират границите на две карти - етикетите се отрязват.
  • И ето картата, с която се озовахме:

    предоставяне

    Mapnik и MapServer

    Mapnik се конкурира с UMN MapServer за изобразяване на качествени растерни карти от векторни данни. Следните два примера показват разликата между Mapnik и най-новите версии на MapServer:

    За изчертаване на линии, полигони и шрифтове възможностите на двете програми са много близки: и двете използват AGG и FreeType с изглаждане. Но има много разлики в поставянето на етикета и тренираното око ще намери достатъчно проблеми и в двата примера. Като цяло Mapnik е ясно разработен за новомодния стил на Google Maps и досега губи в приспособимостта и документацията си към по-стария на вид MapServer. Това добавя опции за разработчиците при избора на пакет за визуализация. Кристофър Шмид, създател на OpenLayers, първо мигрира своя проект за безплатна карта в Бостън от Mapserver към Mapnik и след това отново.

    Накрая

    Като цяло можем да кажем, че не страдахме прекалено много от липсата на графична обвивка за Mapnik, бяхме много по-измъчени от търсенето на функции на Mapnik, при липса на документация, както и редица нереализирани или " не са напълно изпълнени "функции, които напразно се опитахме да намерим и които не бяха достатъчни за по-добро, според нас, изобразяване.