Моя организация собирает много данных мониторинга окружающей среды (поток, химический состав воды и т. Д.), Большинство из которых в настоящее время хранятся в Excel. Я хотел бы получить все в базе данных - возможно, PostGIS - но мне нужно, чтобы данные были доступны людям, не имеющим знаний о принципах работы с базами данных (без SQL или чего-либо подобного).
Я хотел бы иметь какой-то простой интерфейс для моей базы данных, где пользователь выбирает интересующую станцию мониторинга, тип переменной (например, концентрацию нитрата в потоке) и временной интервал. База данных будет затем возвращать запрошенные данные в формате CSV, который пользователь может загрузить на свой компьютер. В идеальном мире клиентский интерфейс отображал бы карту всех станций мониторинга, на которую можно нажимать, но если это проще, то для начала неплохо было бы использовать раскрывающийся список доступных сайтов. Я думаю, что этот интерфейс, вероятно, будет веб-сайт, но это не обязательно.
Насколько это сложно, и какие у меня есть варианты? Я ни в коем случае не эксперт по базам данных, но у меня большой опыт работы с Desktop GIS, и я счастлив писать простые скрипты на Python и играть с базами геоданных PostGIS, SpatiaLite и ESRI Personal. Я никогда не занимался веб-разработкой или веб-ГИС, но я стремлюсь учиться.
Я потратил часть вчера, изучая некоторые отличные учебники OpenGeo . Этот подход выглядит многообещающим, и, по крайней мере, теперь я вижу, как мои данные отображаются на веб-сайте. Что менее очевидно для меня, так это то, как я позволяю пользователю запрашивать базу данных и получать результаты обратно.
Мой вопрос: о какой структуре программного обеспечения мне следует думать для такого проекта? например
PostGIS + GeoServer + Something else?
Какие еще варианты доступны для изучения?
Первоначально было бы предпочтительнее простое, но функциональное решение: если бы я мог собрать базовый прототип, я мог бы использовать его, чтобы оправдать тратить больше времени на изучение того, как делать вещи «правильно». Открытый исходный код также является требованием, так как у меня нет на это бюджета, пока я не смогу доказать некоторые преимущества.
Огромное спасибо!
Ответы:
Если вы уже знакомы с Python и SQL, не составит труда создать веб-сайт с использованием веб-фреймворка Python. На ум приходят два простых - cherry.py и web.py. Я думаю, что изучение вашего подхода к объектно-реляционному картографированию в Django может потребовать больше усилий, чем оно того стоит
В Python есть библиотека psycopg2 (http://initd.org/psycopg/ и учебник: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ), которая позволяет легко выполнять запросы к PostGRESQL / PostGIS. Он также имеет модуль CSV (http://docs.python.org/library/csv.html), который сделает создание вашего CSV из указанного запроса на одном дыхании.
Как говорили другие люди, создание карты на переднем конце добавляет множество сложностей. Вам понадобится что-то вроде OpenLayers для отображения карт и что-то вроде MapServer или GeoServer для создания изображений карт из вашей базы данных (или других источников данных). Это, вероятно, будет лучше в качестве второго шага.
На данный момент, «все», кажется, что вам нужно, это одна веб-страница: форма, которая позволяет вам выбрать, какие параметры запроса вы хотите. Они нажимают «отправить», параметры запроса отправляются на сервер (Apache был бы хорошим выбором), который затем запускает ваш скрипт, который запрашивает базу данных, создает соответствующий файл CSV и возвращает его в браузер. Легко как ру;)
источник
GeoDjango
Это довольно легко установить и получить некоторые основные функции. Это Python, так что, по крайней мере, вы знакомы с языком. Это может быть излишним для ваших нужд. Но если вы когда-нибудь захотите расширить сайт, у вас есть зрелая основа для построения.
источник
Если вы не хотите / нужно создать карту. Все, что вам нужно, это веб-сервер и язык программирования (я предпочитаю Apache, потому что он прост в использовании и настройке, но есть другие варианты), а затем Postgres с PostGIS или какой-либо другой базой данных.
Если ваши файлы Excel хорошо отформатированы, импортировать данные в базу данных должно быть просто. Вы можете написать скрипт, который может генерировать операторы INSERT. Запросы, которые вы описываете, звучат так, как будто они также управляемы.
Если / когда вы захотите сделать часть сопоставления, Apache, GeoServer и OpenLayers будут простым и бесплатным решением. GeoServer (как вы знаете) может легко использовать PostGIS для WMS или другой выходной формат. Все, что вам нужно сделать, это добавить хранилище, которое подключается к PostGIS, а затем добавить слои из таблиц в PostGIS.
Другими бесплатными инструментами картирования, которые вы можете посмотреть, будут Mapserver и MapGuide. MapGuide Open Source делает довольно крутые вещи, но он более сложный, а его документация немного отстает.
MySQL также имеет расширение Spatial, но у него не так много пространственных функций и функций, как у PostGIS.
Если вы знакомы с Python, я бы посмотрел GeoDjango ... Я не знаю много об этом лично, но я слышал хорошие вещи
источник
Вы можете найти обзор вопросов проектирования и разработки приложений веб-картографирования, в дополнение к полностью документированному исходному коду для экологического веб-картографического приложения, основанного на Google Maps и пространственно-временной базе данных PostgreSQL / PostGIS, в моей относительно недавней диссертации на соискание степени магистра компьютерных наук: " Проектирование и разработка прототипа, посвященного управлению, анализу и доставке пространственно-временных векторных данных об окружающей среде с использованием технологии Open Source. Общая структура и тематическое исследование, ориентированное на управление подземными водами в прибрежной зоне "
Диссертация может быть загружен с http://www.giscience.it/it/pdf/Dis ДиссертацияMscComputerScience_CrestazEzio_Supervisors.pdf
источник