Язык: RU EN
На главную...

Библиотека исходного кода Mapsoft2

Исходный код Mapsoft2 организован в виде набора отдельных "модулей", каждый из которых может содержать код, документацию, тесты, программы и т.п. Некоторые из этих модулей стабильны и используются мной в разных проектах, другие могут быть экспериментальными, нестабильными или бесполезными. Модули могут зависеть друг от друга. Сборочная система (использующая make) позволяет собирать программы и библиотеки используя только необходимые модули, а также переносить модули между различными проектами.

Модули находятся в https://github.com/slazav/mapsoft2-libs. Их можно подключить в виде git submodule или cкопировать в проект.

Использование git submodules не поддержиивается сборочной системой Altlinux (а именно, программой gear). Она хочет, чтобы весь исходный код был доступен из определенного коммита в git-репозитории. Эта проблема решается запаковкой всех модулей в отдельный tar-файл (см. скрипт update_modules) и хранением этого файла в репозитории mapsoft2. Если вы не используете gear для сборки пакета, то этот файл можно игнорировать.

Сборочная система

Сборочая система сделана на основе GNU make. Модули расположены в одной директории (обычно modules). Программы, библиотеки и модули, которые не используются другими модулями, могут быть расположены в любом месте. Каждый модуль содержит Makefile где описаны его компоненты и включен файл Makefile.inc из директории modules. Для построения дерева зависимостей используется отдельный скрипт modules/get_deps. Для правильного поиска зависимостей подключение заголовочного файла file.h из модуля name надо записывать в виде #include "name/file.h", а локальных заголовочных файлов - в виде #include "file.h".

В Makefile модуля могут быть определены следующие переменные:

Пректы, использующие mapsoft2-libs

as git submodule:

copy of some modules:

Модули

stable cache Кэш объектов с автоматическим удалением (в зависимости от количества объектов или их суммарного размера).
unstable cairo Обертка для libcairo.
stable conv Преобразования координат геометрических объектов.
unstable downloader Многопоточный менеджер загрузок.
stable err Простой класс для генерации исключений с текстовыми сообщениями. Используется во многих моих проектах.
stable fig Чтение и запись FIG-файлов. Fig - это древний векторный графический формат, который я использую, в частности, для рисования карт.
stable fig_geo Расширение формата FIG для хранения геоданных и привязки.
stable fig_opt Расширение формата FIG для хранения данных в комментариях объектов.
stable filename Функции для работы с именами файлов.
stable geo_data Классы для работы с геоданными. Чтение и запись (форматы GPX, KML, KMZ, GeoJson, OziExplorer). Расстояния между точками на поверхности Земли (формула Гаверсинуса). Геодезические преобразования (обертка для библиотеки libproj).
https://github.com/slazav/mapsoft2-libs/blob/master/geo_data/Formats.md
stable geo_mkref Изготовление привязок карт.
stable geo_nom Функции для работы с именами советских номенклатурных карт.
unstable geo_render Рисование геоданных, сеток, растровых карт на растровых картинках.
stable geo_tiles Функции для работы с тайлами TMS/Google.
stable geohash Библиотека Geohash и простое хранилище данных с гео-индексацией.
stable geom Геометрические объекты: классы Point, Line, Multiline и Rect. Множество полезных функция для работы с ними.
stable getopt Обертка getopt для изготовления сложных интерфейсов командной строки.
stable iconv Преобразование кодировок, обертка libiconv.
unstable image Двухмерный массив данных для хранения растровых изображений. Чтение и запись растровых изображений (PNG, TIFF, JPEG, GIF), квантизация цветов и другие операции.
https://github.com/slazav/mapsoft2-libs/blob/master/image/Readme.md
stable iofilter Перенаправление std::stream через внешнюю программу.
stable jsonxx Простая C++ обертка для библиотеки libjansson.
stable log Простой способ вывода сообщений в консоль или в файл.
unstable mapview Окно вьюера геоданных и карт. Для использования в программе ms2view.
stable mp Чтение и запись MP-файлов. MP -- это формат векторных карт, используемый для компиляции карт для Garmin GPS.
stable opt Контейнер map<string,string> с функциями для записи и чтения различных типов данных. Широко используется в mapsoft.
stable osmxml Чтение файлов OSM XML.
stable rainbow Преобразовать вещественное число в цвет в соответствии с некоторым заданным градиентом. Полезная библиотека, которую я использую в разных местах.
stable read_words Прочитать строчку из std::istream и разбить ее на слова, разделенные пробелами. Понимает комментарии, кавычки, escape-символ \. Похоже на чтение строки параметров в shell.
stable shape Чтение и запись SHAPE-файлов, обертка для shapelib.
stable srtm Работа с картами высот (форматы hgt и tiff).
stable time_fmt Функции для чтения и записи времени в различных форматах.
stable tmpdir Класс для работы со временной директорией и zip-файлами. Можно создать временную директорию, положить туда файлы, и зазиповать их, можно раззиповать файлы во временную динекторию. Директория будет удалена при уничтожении объекта. Использует библиотеку libzip.
stable viewer Вьюер (GTK) для объектов, которые умеют рисовать растровые изображения. "Резиновые линии" и "действия" для изготовления интерактивных интерфейсов (например, рисование и редактирование геометрических объектов). Примеры использования находятся в директории viewer/examples.
stable vmap Чтение и запись VMAP, старого формата mapsoft для векторных карт.
stable vmap2 VMAP2, новый формат векторных карт (текстовый или база данных) и все операции с ним.