Идеи для разработчиков геопространственного ПО с открытым исходным кодом
Введение
Данная страница предназначена для аккумулирования идей и запросов на разработку/доработку ПО с открытым исходным кодом в области ГИС. Идеи сведены в задачи, задачам даны краткое пояснение. Если нажать на название задачи, будет выполнен переход к более детальному описанию.
Задачам выставлены уровни сложности, в зависимости от расчетного количества времени на решение и необходимости специальных знаний (теории, практики существующих решений). В расчетное время не входит время на освоение языка программирования.
- 1 - начальный, задача может быть решена за 1-2 недели, специальных знаний не требуется и они приобретаются очень быстро.
- 2 - начальный+, задача может быть решена за месяц, требуется порядка недели на освоение базы
- 3 - средний, задача решается за 2-3 месяца, требуется минимум месяц на освоение базы
- 4 - продвинутый, задача решается за 4-6 месяцев, требуется минимум два месяца на освоение базы
- 5 - очень сложный, задача решается за 6-12 месяцев, требуется 3-4 на освоение базы
2-3 примерно соответствует уровню курсового проекта, 4-5 - дипломной работы.
Сложность устанавливалась экспертным путем.
QGIS
Задачи связанные с разработкой в рамках ПО ГИС Quantum GIS (QGIS)
Кратко | Подробнее | Язык | Обсуждение | Взялся |
---|---|---|---|---|
генератор отчетов | полноценный генератор отчетов, что-то похожее на Fast/FreeReport | C++/Python(?) | ||
Режим Wireframe | возможность переключать «на лету» стиль отрисовки слоя (сложный/простой) | C++ | ||
генерализация линейных (и полигональных?) слоёв «на лету» | упрощение сложных объектов перед отрисовкой | C++ | ||
пересмотр и доработка ветки threading_branch | адаптация и интеграция существующего кода | C++ | ||
поддержка Tile Cache | поддержка протоколов OGC WMS-C/TMS | C++ | ||
Визуальный привязчик растров | дальнейшее развитие инструмента привязки растров | C/C++ | ||
использование многопопоточности и OpenCL в fTools и других библиотеках QGIS | для повышения скорости обработки больших объемов данных | С/C++ | ||
генерализация векторных данных с сохранением топологии | сейчас возможна генерализация без учета топологии, что для смежных полигонов неприемлемо | C++ | ||
Экспорт в MBTiles | GDAL поддерживает чтение формата MBTiles, нужно сделать экспорт в него. | C++ | ||
Кусочно-линейное редактирование гистограммы | Расширенная настройка гистограммы изображения | C++ | ||
Привязка векторных файлов по точкам в QGIS | Необходимо разработать плагин для QGIS представляющий собой инструмент для привязки векторных файлов к местности. Инструмент должен работать аналогично привязке растровых файлов. | C++/Python(?) | ||
Шторка в QGIS | Необходимо разработать плагин для QGIS представляющий собой инструмент для отображения части растрового слоя. Слой делится горизонтально или вертикально относительно курсора мыши. При движении курсора часть растрового слоя показывается, а часть нет. | C++/Python(?) | ||
Исправление некорректных планарных геометрий | Портирование инструмента проверки и исправление ошибок планарных геометрий для избавления от наложений и сливеров. | C++/Python(?) |
GDAL
GDAL - Geospatial Data Abstraction Library
Кратко | Подробнее | Язык | Сложность | Обсуждение | Взялся |
---|---|---|---|---|---|
Коррелятор | Поиск связующих точек | С/С++ | 3 | Андрей Мигаль. Ментор: Дмитрий Барышников | |
Уравнивание сети триангуляции | В случае поиска связующих точек, образуется сеть триангуляции. При этом, встает задача уравнивание этой сети для случая тройного и более перекрытия. | С/С++ | 3 | ||
Драйвер SXF для OGR | С/С++ | 4 | |||
Драйвер OSM XML для OGR | С/С++ | 4 | |||
Многопоточный тайлинг | Как оказалось, при приличном количестве больших растров создание тайлов с определенными уровнями для картографических веб серверов довольно ресурсная задача. Предлагается сделать этот процесс многопоточным или вообще на видеокарте обсчет. | С/С++/OpenCL | 3 | ||
Создание DEM по стерео изображениям | Собранные при помощи коррелятора связующие точки изображений позволяют вычислять высоту объектов. Когда на изображении зафиксирован высокий объект, то его основание будет иметь одинаковые координаты на местности, а вершина разные. Из этого можно получить высоту объекта. | С/С++ | 5 | ||
Добавление поддержки форматов метаданных КА Kompsat-2 | В настоящий момент имеется снимок с КА Kompsat-2 с метаданными в комплекте. Необходимо добавить поддержку метаданных с этого КА в GDAL с проверкой работы в wxGIS в диалоге свойств растра и инструменте геообработки "Ортокоррекция" | С/С++ | 2 | ||
Добавление поддержки форматов метаданных серии КА типа DMC | Существует серия КА типа DMC. Необходимо добавить поддержку метаданных с этих КА в GDAL с проверкой работы в wxGIS в диалоге свойств растра и инструменте геообработки "Ортокоррекция" | С/С++ | 2 |
Разное
Кратко | Подробнее | Язык | Сложность | Обсуждение | Взялся |
---|---|---|---|---|---|
Анализ производительности формата SpatialLite | Существует мнение что формат SpatialLite очень медленный. Необходимо провести анализ производительности формата. | Любой | 2 | ||
Создание десктопного индексатора геопространственных файлов | Для индексации и быстрого поиска файлов предлагается использовать существующие поисковые движки на основе открытого программного обеспечения. Например Sphinx или DataparkSearch. Выбранный поисковый движок должен быть доработан или его функционал должен использоваться в программе службе/сервисе/демоне. | С/С++ | 3 | ||
Анализ открытых решений для организации версионности в PostGIS | Существует ряд решений для организации версионности в PostGIS. Например, версионность средствами PostgreSQL, pgVersion, Versioning Postgis datastore, Distributed Versioning for Geospatial Data: A New Approach, Implementation and Development. Необходимо провести анализ. | Любой | 2 | ||
Построение вогнутых оболочек в PostGIS при помощи α-полигонов | Реализация алгоритма построения α-полигонов как функции PostGIS или самостоятельной. | С/C++ | 3 | ||
Параллельная обрезка по нескольким полигонам в osmosis | Текущая реализация обрезки по полигону в osmosis [1] работает с одним полигоном, однако довольно часто требуется из одного дампа вырезать несколько областей. Добавление параллельной работы с несколькими полигонами обрезки поможет значительно ускорить этот процесс. | Java | 3 | ||
Реализация поддержки SLD в map-файлах MapServer | Поддержка SLD в MapServer в принципе присутствует, но необходимо добавить поддержку в map-файл. | C | 4 | ||
Создание сетевой модели геоданных (интеллектуальной модели) | Существует понятие сетевой модели (network model) когда геометрии не только имеют пространственную привязку но и связаны друг с другом. Например, система трубопроводов и кранов. При перекрытии крана, часть труб меняет свое состояние (без воды). | C/C++ | 5 |
Подробнее
Генератор отчетов
Сейчас есть только «компоновки» (макеты карты), которые позволяют создавать печатные карты с некоторыми элементами оформления. Возможность создания более-менее сложных отчетов (карта, форматированный текст, данные из атрибутивных таблиц, графики, выполнение расчетов) отсутствует. В качестве образца можно взять Fast/FreeReport, NCReport, CrystalReport
Визуальный привязчик растров
Цель: ускорение и облегчение процесса привязки
Географическая привязка изображений на лету. Текущий инструмент - статический, работает так, загружаем растр в спец. модуль, расставляем точки, выбираем настройки, запускаем процесс трансформации, ждем, получаем результат - оцениваем точность.
Визуальный процесс привязки работает так: загружаем растр в канвас, ставим первую точку - растр делает shift, ставим вторую точку, растр делает scale, ставим третью - растр делает transform и все на лету, при двигании точек соответственно перетягивается растр.
С точки зрения алгоритмов все в QGIS для этого уже есть.
Режим Wireframe
Цель: ускорение работы с векторными слоями
Скорость отрисовки векторных слоёв при прочих равных условиях зависит от сложности и количества используемых условных знаков. В некоторых ситуациях (например, при редактировании) нет необходимости во всех красивостях, но важна скорость отрисовки. Необходимо реализовать переключение на простые стили (тонкая линия, полигон без заливки, окружность малого радиуса без заливки) и обратно по запросу пользователя.
Генерализация на лету
Цель: ускорение работы с векторными слоями
Еще один способ повысить скорость отрисовки - генерализация (упрощение) объектов. Пока только для линейных слоёв. Т.е. перед тем как выполнить отрисовку уменьшаем количество узлов в линии, и за счет некоторого огрубления получаем выигрыш в скорости. При этом необходимо учитывать, что при переходе в режим редактирования должны показываться все узлы, а не только оставшиеся после генерализации
threading_branch
Цель: ускорение работы
Многопоточная отрисовка и оптимизация. Изначально работа была сделана в рамках GSoC 2010, но по ряду причин так и не была влита в основное дерево. Код давно не синхронизировался с текущим деревом
Топологически корректное упрощение
При упрощении смежных полигонов не учитывается топология, что делает инструмент бесполезным при решении ряда задач. Ссылка в тему http://gis.stackexchange.com/questions/178/simplifying-adjacent-polygons
Экспорт в MBTiles
Начиная с версии 2.0 GDAL поддерживает чтение формата MBTiles - тайлового растрового формата для пространственных данных хранящего набор тайлов соответствующих отрисовке карты на разных масштабах в едином файле базы данных SQLite. На сегодняшний день такие тайлы могут создаваться только в TileMill, логичным представляется экспорт настроенного проекта QGIS в этот формат для дальнейшей публикации в Web и использования там, где этот формат можно читать.
Коррелятор
В настоящее время осуществляется сбор большого количества данных ДЗЗ с БПЛА и самолетов. В большинстве случае - это кадровая съемка. Для формирования единого бесшовного изображения встает задача поиска связующих точек изображений на маршруте и межмаршрутных изображений или просто создание панорам. Необходимо расширить библиотеку GDAL таким алгоритмом.
Задача разрабатывалась на Google Summer of Code 2012.
Уравнивание сети триангуляции
Собранные с использованием Коррелятора точки образуют сеть триангуляции. Причем, соответствующие точки с разных изображений будут иметь отличающиеся географические координаты. Для однозначного позиционирования изображений на местности, сеть точек нужно уровнять. Тогда изображения "лягут" на свои места и стыки межу ними будут мало заметны.
Кусочно-линейное редактирование гистограммы
Текущие средства работы с гистограммой достаточно простые, есть только обрезка и растяжение по стандартному отклонению, эквализация. Предлагается добавить возможность работы с гистограммой с помощью кусочно-линейных преобразований позволяющих настраивать отдельные области гистограммы за счет ручного указания изменяемых областей.
Исправление некорректных планарных геометрий
Существует новое решение (pprepair) для решения проблемы исправления топологической структуры планарных геометрий. К сожалению, это решение использует CGAL. Задача минимум, перевести его на GEOS/OGR например в виде плагина для QGIS или отдельного приложения. Подробнее о pprepair.
Построение вогнутых оболочек в PostGIS при помощи α-полигонов
Существующие реализации: CGAL - лицензионные противоречия, CRAN R - Lattice - производительность и CRAN R плохо подходит для массовой работы с геоданными, ST_ConcaveHull - использует алгоритм со страным параметром в процентах и невозможно однозначно сказать какими свойствами будет обладать полигон при том или ином параметре. Код - эвристический алгоритм на PL/SQL. При обработке больших геометрий приходится резать на кусочки. В случае с ST_ConcaveHull кусочки не согласованы между собой.
.