Как создать простой интерфейс для базы данных PostGIS?

21

Моя организация собирает много данных мониторинга окружающей среды (поток, химический состав воды и т. Д.), Большинство из которых в настоящее время хранятся в Excel. Я хотел бы получить все в базе данных - возможно, PostGIS - но мне нужно, чтобы данные были доступны людям, не имеющим знаний о принципах работы с базами данных (без SQL или чего-либо подобного).

Я хотел бы иметь какой-то простой интерфейс для моей базы данных, где пользователь выбирает интересующую станцию ​​мониторинга, тип переменной (например, концентрацию нитрата в потоке) и временной интервал. База данных будет затем возвращать запрошенные данные в формате CSV, который пользователь может загрузить на свой компьютер. В идеальном мире клиентский интерфейс отображал бы карту всех станций мониторинга, на которую можно нажимать, но если это проще, то для начала неплохо было бы использовать раскрывающийся список доступных сайтов. Я думаю, что этот интерфейс, вероятно, будет веб-сайт, но это не обязательно.

Насколько это сложно, и какие у меня есть варианты? Я ни в коем случае не эксперт по базам данных, но у меня большой опыт работы с Desktop GIS, и я счастлив писать простые скрипты на Python и играть с базами геоданных PostGIS, SpatiaLite и ESRI Personal. Я никогда не занимался веб-разработкой или веб-ГИС, но я стремлюсь учиться.

Я потратил часть вчера, изучая некоторые отличные учебники OpenGeo . Этот подход выглядит многообещающим, и, по крайней мере, теперь я вижу, как мои данные отображаются на веб-сайте. Что менее очевидно для меня, так это то, как я позволяю пользователю запрашивать базу данных и получать результаты обратно.

Мой вопрос: о какой структуре программного обеспечения мне следует думать для такого проекта? например

PostGIS + GeoServer + Something else?

Какие еще варианты доступны для изучения?

Первоначально было бы предпочтительнее простое, но функциональное решение: если бы я мог собрать базовый прототип, я мог бы использовать его, чтобы оправдать тратить больше времени на изучение того, как делать вещи «правильно». Открытый исходный код также является требованием, так как у меня нет на это бюджета, пока я не смогу доказать некоторые преимущества.

Огромное спасибо!

Jamess
источник
2
Если вы пропустите карту, вы можете сделать все это только с помощью Apache & PHP. Вам просто нужно создать одну форму ввода для сценария PHP, который извлекает данные из PostGIS. (Вы можете заменить PHP на Python.) ... Но тогда это не будет вопросом для GIS.SE
underdark
Большое спасибо всем, кто откликнулся! Это все полезные ответы, и вы дали мне много материала для продолжения. Я хотел бы "принять" их все, но я дал очки @canisrufus, так как я нашел его последний абзац очень полезным, и я раньше не сталкивался с web.py. GeoDango тоже выглядит потрясающе. Ура!
Джеймс
@jamesS Я собирался расширить свой последний абзац, но он начал выглядеть неоправданно не по теме. Если у вас есть вопросы, или вы хотите более длинный монолог о том, как настроить, вы можете найти меня в чате здесь.
canisrufus
@JamesS Есть какой-то прогресс в этом? Работая над тем же топиком, я только начал разработку проекта Django
Luca Moiana,
Привет, Лука Мойана. В качестве прототипа я следовал совету в принятом ответе ниже, используя web.py, Apache и PostGIS (но мой сайт не включал карту в конце). Несколько лет спустя мы приняли Гидрологическую Информационную Систему CUAHSI , и это здорово. Это требует небольшой настройки, но предлагает широкий спектр инструментов для хранения, поиска, исследования, анализа и визуализации данных об окружающей среде.
Джеймс

Ответы:

13

Если вы уже знакомы с 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 и возвращает его в браузер. Легко как ру;)

canisrufus
источник
2
Вам НЕ НУЖЕН MapServer / GeoServer для создания изображений. Вы можете просто получить данные непосредственно из PostGIS и отобразить их в виде векторных данных на вашей карте. Однако, в зависимости от сложности ваших данных, вы можете передавать значительный объем данных. Это зависит от ситуации. Кроме того, отображение их в виде векторных данных дает возможность щелкнуть объект, чтобы показать / отредактировать его данные.
Mr_Chimp
@mr_chimp О, это хороший момент. Меня беспокоил фоновый слой, но можно было просто использовать Google Maps, OSM и т. Д. На самом деле, я склонен думать, что векторный слой, как правило, более приятное решение (для пользователя), но, как вы заметили, существуют ограничения. И, конечно же, самый простой способ передачи векторов состоит в том, чтобы что-то вроде MapServer или GeoServer обслуживало их;)
canisrufus
Как всегда, это случай использования правильного инструмента для работы. Поскольку у JamesS уже есть база данных PostGIS, он может просто получить данные прямо оттуда. Если я не забуду что-то, настройка MapServer / что угодно будет просто дополнительным шагом (хотя обычно, конечно, это будет самый быстрый способ).
Mr_Chimp
8

GeoDjango

Это довольно легко установить и получить некоторые основные функции. Это Python, так что, по крайней мере, вы знакомы с языком. Это может быть излишним для ваших нужд. Но если вы когда-нибудь захотите расширить сайт, у вас есть зрелая основа для построения.

Шон
источник
5

Если вы не хотите / нужно создать карту. Все, что вам нужно, это веб-сервер и язык программирования (я предпочитаю Apache, потому что он прост в использовании и настройке, но есть другие варианты), а затем Postgres с PostGIS или какой-либо другой базой данных.

Если ваши файлы Excel хорошо отформатированы, импортировать данные в базу данных должно быть просто. Вы можете написать скрипт, который может генерировать операторы INSERT. Запросы, которые вы описываете, звучат так, как будто они также управляемы.

Если / когда вы захотите сделать часть сопоставления, Apache, GeoServer и OpenLayers будут простым и бесплатным решением. GeoServer (как вы знаете) может легко использовать PostGIS для WMS или другой выходной формат. Все, что вам нужно сделать, это добавить хранилище, которое подключается к PostGIS, а затем добавить слои из таблиц в PostGIS.

Другими бесплатными инструментами картирования, которые вы можете посмотреть, будут Mapserver и MapGuide. MapGuide Open Source делает довольно крутые вещи, но он более сложный, а его документация немного отстает.

MySQL также имеет расширение Spatial, но у него не так много пространственных функций и функций, как у PostGIS.

Если вы знакомы с Python, я бы посмотрел GeoDjango ... Я не знаю много об этом лично, но я слышал хорошие вещи

Nate
источник
4

Вы можете найти обзор вопросов проектирования и разработки приложений веб-картографирования, в дополнение к полностью документированному исходному коду для экологического веб-картографического приложения, основанного на Google Maps и пространственно-временной базе данных PostgreSQL / PostGIS, в моей относительно недавней диссертации на соискание степени магистра компьютерных наук: " Проектирование и разработка прототипа, посвященного управлению, анализу и доставке пространственно-временных векторных данных об окружающей среде с использованием технологии Open Source. Общая структура и тематическое исследование, ориентированное на управление подземными водами в прибрежной зоне "

Диссертация может быть загружен с http://www.giscience.it/it/pdf/Dis ДиссертацияMscComputerScience_CrestazEzio_Supervisors.pdf

Эцио
источник