Я просто хотел спросить совета у ГИС с открытым исходным кодом о рекомендованном стеке для моего предполагаемого проекта, так как я не до конца понимаю границы возможного с большинством пакетов. Я знаю, что могу делать то, что хочу, используя различные пакеты ESRI, но я хочу дешевле и открыт для всего мира. Я уверен, что смогу справиться с любой задачей и изучить детали достаточно хорошо, чтобы реализовать проект, я просто хочу не идти по неверному пути.
Мое видение сайта: с точки зрения пользовательского интерфейса, сайт, не похожий на ГИС! Что-то более похожее на whereis.com, где все (или почти все) делается на полях, парящих над базовой картой. Специфика теперь не важна, просто подчеркивание отсутствия ГИС-слоев с флажками в отдельной панели и т. Д. В плане взаимодействия с пользователем зарегистрированные пользователи могут создавать функции (например, места для питьевого фонтана, пешеходные дорожки и т. Д.) Поверх базы. карта и редактировать свои функции. Если возможно, редактируйте ТОЛЬКО свои собственные функции, которые они создали. Совместная карта, правда.
Я все еще в основном в исследовательском режиме, играю с различными пакетами, но только для общего ознакомления, а не для реального тестирования (что потребовало бы сначала детального изучения их!). PostGIS определенно выглядит как правильный путь для использования в качестве базовой БД, с Geoserver / Mapserver в качестве наиболее вероятного промежуточного программного обеспечения. Openlayers почти наверняка станет скользкой картой, так как я уже знаком с ней и знаю ее силу.
Итак, это подводит меня к двум основным вопросам, требующим основной массы советов:
1) Каков лучший интерфейс верхнего уровня для такого сайта?
Является ли это настраиваемый экземпляр Django (или даже Django-CMS), или просто собранный вместе экземпляр GeoExt или другой библиотеки (не уверен, что вы можете сделать с ним вход в систему / регистрация / полный пользовательский интерфейс), другой CMS / framework ( нет, не друпал или что-то такое ограничивающее!) или что-то совсем другое?
2) Возможно ли даже, чтобы зарегистрированные пользователи сайта редактировали только свои функции?
Я хочу избежать массовых граффити-мест, таких как OSM и других совместных проектов. Из моего прочтения и совета ранее видно, что Geoserver не может иметь аутентификацию пользователя на уровне функций.
Может ли Mapserver?
Я даже не знаю, может ли пользовательская аудитория сайта (из CMS или фреймворка) даже напрямую ссылаться на геосервер / mapserver.
Если такая концепция невозможна с решениями с открытым исходным кодом, есть ли другой способ достичь этой цели?
Проверяли ли пользователи, прошедшие проверку, неопубликованную версию основного векторного слоя (чтобы не испортить оригинал) и автоматически объединяли ее с опубликованной версией каждые 24 часа, сохраняя ежедневную резервную копию оригинала?
Вроде потерялись на том, как этого добиться.
И да, я тоже смотрел на GeoNode, но мне нужна только одна общая карта (сделайте ее простой), и ее пользовательский интерфейс либо недостаточно интерактивен (до перехода в GeoExplorer), либо слишком похож на ГИС в GeoExplorer. Похоже, слишком консервированное решение для этого проекта.
Извините, что так открыто закончился здесь и расплывчато, но я надеюсь, что смогу начать путь, по которому вышеизложенное возможно, и не столкнуться со стеной через несколько месяцев, просто чтобы начать все сначала, потому что путь # 1 никогда не имел такой функциональности с самого начала!
Один из лучших примеров, которые я могу найти, - http://www.gpsies.com. Я знаю, что здесь используется буклет, но не уверен, что это базовая структура и база данных. Пользователи могут создавать / загружать свои собственные функции, но не редактировать чужие.
Ответы:
Поскольку сейчас я создаю что-то похожее, я расскажу вам, как я это делаю, и вы можете поменять все, что вы хотите от этого, на другой кусок.
Django (с GeoDjango ) довольно хорош для этого в качестве базового фреймворка для Python (опять же, если это ваша вещь, вы можете сделать это на другом языке).
Мой подход к редактированию на уровне пользователя аналогичен описанному CaptDragon. Я использую структуру аутентификации Django . Для этого проекта мои API создаются с использованием Django Tasty Pie, в котором уже есть инфраструктура, которая позволяет вам создавать надлежащие RESTful API с аутентификацией, принятой во внимание .
Мой Mapserver (или Geoserver или все , что вы хотите использовать) никогда не подвергаются непосредственно к внешнему миру (только локальный сервер имеет доступ к этим) ... все плитки получают отбыли с помощью сервера плитки ( geowebcache , tilecache , tilestache независимо ).
Мне не нужно упоминать Openlayers, так как вы уже выбрали это. Хороший выбор.
PostgreSQL / PostGIS был еще одним легким делом. :)
Как библиотека javascript, вы никогда не ошибетесь с jQuery. Если вы собираетесь разрешить несколько изменений, вам может быть полезно иметь некоторую структуру ваших объектов javascript, используя что-то вроде backbone.js . Возьми это с зерном соли. Некоторые люди любят это, другие ненавидят это.
Если вы не хотите , чтобы ваш сайт , чтобы выглядеть так некрасиво, сделайте себе одолжение и использовать структуру CSS , как Bootstrap или компас или альтернатива, за $ 20, просто купить один из ThemeForest или wrapstrap (если вы собираетесь с открытым исходным кодом , что вы , возможно , хотите посмотреть на лицензию, если вы собираетесь ее купить, хотя). Подключение одного из них займет около дня и внесет огромный вклад в то, как выглядит ваш сайт!
Лично я смотрел на Django-cms (и Pinax ) несколько раз, и я никогда не смогу убедить себя, что это стоит того. Я никогда не сожалел об этом решении.
Поскольку вы выбираете проект, для которого потребуются различные версии вашей схемы (чем больше вы разрабатываете, тем больше она будет меняться), просто используйте южную . Даже не стесняйтесь! Шутки в сторону.
Это то, что я бы использовал, но прелесть Open Source в том, что вы можете менять детали в соответствии со своими потребностями.
источник
Я использую стек, похожий на Ragi, я нахожусь рядом с альфа-версией моего приложения, и на данный момент кажется, что выбор правильный. Вот мое решение:
На сервере:
У клиента:
источник
Возможно ли даже, чтобы зарегистрированные пользователи сайта редактировали только свои функции?
Похоже, что это возможно с помощью Cartaro. Он основан на Drupal (я знаю, вы не сказали ничего ограничивающего, как Drupal, но выслушайте меня!), И он позволяет пользователям редактировать только свои собственные функции, среди других опций. Вот снимок экрана, сделанный со страницы «Люди» при входе в систему с правами администратора, который показывает типы разрешений, которые могут быть установлены для пользователей:
Кроме того, Cartaro работает на PostGIS, GeoServer и OpenLayers, поэтому он потенциально может иметь все, что вы ищете.
Каков лучший интерфейс верхнего уровня для такого сайта?
Я не знаю, каков «лучший» верхний слой, но похоже, что Cartaro может предоставить то, что вы ищете, поскольку у Drupal есть много вариантов пользовательского интерфейса. Похоже, что Cartaro находится на ранней стадии разработки (лично я не знаю никого, кто его использует), но у него есть потенциал.
источник
Я собираюсь ответить на вопрос №2. Так я обхожусь с вопросом о том, как разрешить пользователям редактировать свои собственные записи.
Я создаю свои собственные веб-сервисы RESTFUL или SOAP (на ваш выбор), например,
UpdateUserRecord(string WKTLocation, string otherArg)
которые связаны с механизмом аутентификации вашего сайта.OpenLayers и PostGIS читают и пишут Well-Known-Text (WKT), а также GML и другие стандартные форматы, но я лично использую WKT для передачи информации о геометрии и формы из моего приложения через веб-сервис и в базу данных PostGIS.
Также мои веб-методы вроде
UpdateUserRecord
могут быть вызваны только авторизованным пользователем сеанса.401 Unauthorized
Возвращается , если кто - либо другой пытается вызвать этот веб - сервис. В моем случае я использую .NET и FormsAuthentication с возможностью аутентификации с использованием OpenAuth2 (Google, Facebook, Twitter и т. Д.). Это также может быть сделано в PHP, Java и т. Д.Таким образом, вы можете создавать веб-методы, которые напрямую вызывают базу данных PostGIS и обновлять или вставлять записи по своему усмотрению. И вот как я это сделал.
Затем я использовал GeoServer для WFS, возможности запросов WMS и простоту отображения информации на карте, где я предоставлял бы UserID, если запрос вызывал его.
Надеюсь это поможет.
источник