Идеи для разработчиков геопространственного ПО с открытым исходным кодом: различия между версиями
Bishop (обсуждение | вклад) Нет описания правки |
|||
Строка 1: | Строка 1: | ||
== Введение == | |||
Данная страница предназначена для аккумулирования идей и запросов на разработку/доработку ПО с открытым исходным кодом в области ГИС. | |||
Идеи сведены в задачи, задачам даны краткое пояснение. Если нажать на название задачи, будет выполнен переход к более детальному описанию. | |||
Задачам выставлены уровни сложности: | |||
* 1 - начальный | |||
* 2 - средний | |||
* 3 - продвинутый | |||
Сложность устанавливалась экспертным путем. | |||
=== QGIS === | === QGIS === | ||
Строка 89: | Строка 96: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Кратко !! Подробнее !! Язык !! Обсуждение !! Взялся | ! Кратко !! Подробнее !! Язык !! Сложность !! Обсуждение !! Взялся | ||
|- | |- | ||
| [[#Коррелятор|Коррелятор]] | | [[#Коррелятор|Коррелятор]] | ||
| Поиск связующих точек | | Поиск связующих точек | ||
| С/С++ | | С/С++ | ||
| 2 | |||
| | | | ||
| Андрей Мигаль. Ментор: [[Участник:Bishop|Дмитрий Барышников]] | | Андрей Мигаль. Ментор: [[Участник:Bishop|Дмитрий Барышников]] | ||
Строка 100: | Строка 108: | ||
| В случае поиска связующих точек, образуется сеть триангуляции. При этом, встает задача уравнивание этой сети для случая тройного и более перекрытия. | | В случае поиска связующих точек, образуется сеть триангуляции. При этом, встает задача уравнивание этой сети для случая тройного и более перекрытия. | ||
| С/С++ | | С/С++ | ||
| 2 | |||
| | | | ||
| | | | ||
Строка 106: | Строка 115: | ||
| | | | ||
| С/С++ | | С/С++ | ||
|3 | |||
| | | | ||
| | | | ||
Строка 112: | Строка 122: | ||
| | | | ||
| С/С++ | | С/С++ | ||
|2 | |||
| | | | ||
| | | | ||
Строка 118: | Строка 129: | ||
| Как оказалось, при приличном количестве больших растров создание тайлов с определенными уровнями для картографических веб серверов довольно ресурсная задача. Предлагается сделать этот процесс многопоточным или вообще на видеокарте обсчет. | | Как оказалось, при приличном количестве больших растров создание тайлов с определенными уровнями для картографических веб серверов довольно ресурсная задача. Предлагается сделать этот процесс многопоточным или вообще на видеокарте обсчет. | ||
| С/С++/OpenCL | | С/С++/OpenCL | ||
|2 | |||
| | | | ||
| | | | ||
Строка 124: | Строка 136: | ||
| Собранные при помощи коррелятора связующие точки изображений позволяют вычислять высоту объектов. Когда на изображении зафиксирован высокий объект, то его основание будет иметь одинаковые координаты на местности, а вершина разные. Из этого можно получить высоту объекта. | | Собранные при помощи коррелятора связующие точки изображений позволяют вычислять высоту объектов. Когда на изображении зафиксирован высокий объект, то его основание будет иметь одинаковые координаты на местности, а вершина разные. Из этого можно получить высоту объекта. | ||
| С/С++ | | С/С++ | ||
|3 | |||
| | | | ||
| | | | ||
Строка 130: | Строка 143: | ||
| В настоящий момент имеется снимок с КА Kompsat-2 с метаданными в комплекте. Необходимо добавить поддержку метаданных с этого КА в GDAL с проверкой работы в wxGIS в диалоге свойств растра и инструменте геообработки "Ортокоррекция" | | В настоящий момент имеется снимок с КА Kompsat-2 с метаданными в комплекте. Необходимо добавить поддержку метаданных с этого КА в GDAL с проверкой работы в wxGIS в диалоге свойств растра и инструменте геообработки "Ортокоррекция" | ||
| С/С++ | | С/С++ | ||
|1 | |||
| | | | ||
| | | | ||
Строка 136: | Строка 150: | ||
| Существует серия КА типа DMC. Необходимо добавить поддержку метаданных с этих КА в GDAL с проверкой работы в wxGIS в диалоге свойств растра и инструменте геообработки "Ортокоррекция" | | Существует серия КА типа DMC. Необходимо добавить поддержку метаданных с этих КА в GDAL с проверкой работы в wxGIS в диалоге свойств растра и инструменте геообработки "Ортокоррекция" | ||
| С/С++ | | С/С++ | ||
|1 | |||
| | | | ||
| | | | ||
Строка 144: | Строка 159: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Кратко !! Подробнее !! Язык !! Обсуждение !! Взялся | ! Кратко !! Подробнее !! Язык !! Сложность !! Обсуждение !! Взялся | ||
|- | |- | ||
| Анализ производительности формата SpatialLite в GDAL и QGIS | | Анализ производительности формата SpatialLite в GDAL и QGIS | ||
| Существует мнение что формат SpatialLite очень медленный. Необходимо провести анализ производительности формата. | | Существует мнение что формат SpatialLite очень медленный. Необходимо провести анализ производительности формата. | ||
| Любой | | Любой | ||
|1 | |||
| | | | ||
| | | | ||
Строка 155: | Строка 171: | ||
| Для индексации и быстрого поиска файлов предлагается использовать существующие поисковые движки на основе открытого программного обеспечения. Например [http://sphinxsearch.com Sphinx] или [http://www.dataparksearch.org/ DataparkSearch]. Выбранный поисковый движок должен быть доработан или его функционал должен использоваться в программе службе/сервисе/демоне. | | Для индексации и быстрого поиска файлов предлагается использовать существующие поисковые движки на основе открытого программного обеспечения. Например [http://sphinxsearch.com Sphinx] или [http://www.dataparksearch.org/ DataparkSearch]. Выбранный поисковый движок должен быть доработан или его функционал должен использоваться в программе службе/сервисе/демоне. | ||
| С/С++ | | С/С++ | ||
|2 | |||
| | | | ||
| | | | ||
Строка 161: | Строка 178: | ||
| Существует ряд решений для организации версионности в PostGIS. Например, версионность [http://habrahabr.ru/post/137161/ средствами PostgreSQL], [http://www.kappasys.ch/cms/index.php?id=23&L=5 pgVersion], [http://docs.codehaus.org/display/GEOTOOLS/Versioning+Postgis Versioning Postgis datastore]. Необходимо провести анализ. | | Существует ряд решений для организации версионности в PostGIS. Например, версионность [http://habrahabr.ru/post/137161/ средствами PostgreSQL], [http://www.kappasys.ch/cms/index.php?id=23&L=5 pgVersion], [http://docs.codehaus.org/display/GEOTOOLS/Versioning+Postgis Versioning Postgis datastore]. Необходимо провести анализ. | ||
| Любой | | Любой | ||
|1 | |||
| | | | ||
| | | | ||
Строка 167: | Строка 185: | ||
| Реализация алгоритма построения α-полигонов как функции PostGIS или самостоятельной. | | Реализация алгоритма построения α-полигонов как функции PostGIS или самостоятельной. | ||
| С/C++ | | С/C++ | ||
|2 | |||
| | | | ||
| | | | ||
Строка 173: | Строка 192: | ||
| Текущая реализация обрезки по полигону в osmosis [http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage#--bounding-polygon_.28--bp.29] работает с одним полигоном, однако довольно часто требуется из одного дампа вырезать несколько областей. Добавление параллельной работы с несколькими полигонами обрезки поможет значительно ускорить этот процесс. | | Текущая реализация обрезки по полигону в osmosis [http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage#--bounding-polygon_.28--bp.29] работает с одним полигоном, однако довольно часто требуется из одного дампа вырезать несколько областей. Добавление параллельной работы с несколькими полигонами обрезки поможет значительно ускорить этот процесс. | ||
| Java | | Java | ||
|2 | |||
| | | | ||
| | | | ||
Строка 179: | Строка 199: | ||
| Поддержка SLD в MapServer в принципе присутствует, но [http://osgeo-org.1560.n6.nabble.com/will-Mapserver-ever-support-SLD-inside-Mapfile-td4983265.html необходимо] добавить поддержку в map-файл. | | Поддержка SLD в MapServer в принципе присутствует, но [http://osgeo-org.1560.n6.nabble.com/will-Mapserver-ever-support-SLD-inside-Mapfile-td4983265.html необходимо] добавить поддержку в map-файл. | ||
| C | | C | ||
|3 | |||
| | | | ||
| | | |
Версия от 13:29, 2 октября 2012
Введение
Данная страница предназначена для аккумулирования идей и запросов на разработку/доработку ПО с открытым исходным кодом в области ГИС. Идеи сведены в задачи, задачам даны краткое пояснение. Если нажать на название задачи, будет выполнен переход к более детальному описанию. Задачам выставлены уровни сложности:
- 1 - начальный
- 2 - средний
- 3 - продвинутый
Сложность устанавливалась экспертным путем.
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
Кратко | Подробнее | Язык | Сложность | Обсуждение | Взялся |
---|---|---|---|---|---|
Коррелятор | Поиск связующих точек | С/С++ | 2 | Андрей Мигаль. Ментор: Дмитрий Барышников | |
Уравнивание сети триангуляции | В случае поиска связующих точек, образуется сеть триангуляции. При этом, встает задача уравнивание этой сети для случая тройного и более перекрытия. | С/С++ | 2 | ||
Драйвер SXF для OGR | С/С++ | 3 | |||
Драйвер OSM XML для OGR | С/С++ | 2 | |||
Многопоточный тайлинг | Как оказалось, при приличном количестве больших растров создание тайлов с определенными уровнями для картографических веб серверов довольно ресурсная задача. Предлагается сделать этот процесс многопоточным или вообще на видеокарте обсчет. | С/С++/OpenCL | 2 | ||
Создание DEM по стерео изображениям | Собранные при помощи коррелятора связующие точки изображений позволяют вычислять высоту объектов. Когда на изображении зафиксирован высокий объект, то его основание будет иметь одинаковые координаты на местности, а вершина разные. Из этого можно получить высоту объекта. | С/С++ | 3 | ||
Добавление поддержки форматов метаданных КА Kompsat-2 | В настоящий момент имеется снимок с КА Kompsat-2 с метаданными в комплекте. Необходимо добавить поддержку метаданных с этого КА в GDAL с проверкой работы в wxGIS в диалоге свойств растра и инструменте геообработки "Ортокоррекция" | С/С++ | 1 | ||
Добавление поддержки форматов метаданных серии КА типа DMC | Существует серия КА типа DMC. Необходимо добавить поддержку метаданных с этих КА в GDAL с проверкой работы в wxGIS в диалоге свойств растра и инструменте геообработки "Ортокоррекция" | С/С++ | 1 |
Разное
Кратко | Подробнее | Язык | Сложность | Обсуждение | Взялся |
---|---|---|---|---|---|
Анализ производительности формата SpatialLite в GDAL и QGIS | Существует мнение что формат SpatialLite очень медленный. Необходимо провести анализ производительности формата. | Любой | 1 | ||
Создание десктопного индексатора геопространственных файлов | Для индексации и быстрого поиска файлов предлагается использовать существующие поисковые движки на основе открытого программного обеспечения. Например Sphinx или DataparkSearch. Выбранный поисковый движок должен быть доработан или его функционал должен использоваться в программе службе/сервисе/демоне. | С/С++ | 2 | ||
Анализ открытых решений для организации версионности в PostGIS | Существует ряд решений для организации версионности в PostGIS. Например, версионность средствами PostgreSQL, pgVersion, Versioning Postgis datastore. Необходимо провести анализ. | Любой | 1 | ||
Построение вогнутых оболочек в PostGIS при помощи α-полигонов | Реализация алгоритма построения α-полигонов как функции PostGIS или самостоятельной. | С/C++ | 2 | ||
Параллельная обрезка по нескольким полигонам в osmosis | Текущая реализация обрезки по полигону в osmosis [1] работает с одним полигоном, однако довольно часто требуется из одного дампа вырезать несколько областей. Добавление параллельной работы с несколькими полигонами обрезки поможет значительно ускорить этот процесс. | Java | 2 | ||
Реализация поддержки SLD в map-файлах MapServer | Поддержка SLD в MapServer в принципе присутствует, но необходимо добавить поддержку в map-файл. | C | 3 |
Подробнее
Генератор отчетов
Сейчас есть только «компоновки» (макеты карты), которые позволяют создавать печатные карты с некоторыми элементами оформления. Возможность создания более-менее сложных отчетов (карта, форматированный текст, данные из атрибутивных таблиц, графики, выполнение расчетов) отсутствует. В качестве образца можно взять 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 кусочки не согласованы между собой.
.