Ищете советы по общей схеме пакета с открытым исходным кодом? [закрыто]

17

Я просто хотел спросить совета у ГИС с открытым исходным кодом о рекомендованном стеке для моего предполагаемого проекта, так как я не до конца понимаю границы возможного с большинством пакетов. Я знаю, что могу делать то, что хочу, используя различные пакеты 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. Я знаю, что здесь используется буклет, но не уверен, что это базовая структура и база данных. Пользователи могут создавать / загружать свои собственные функции, но не редактировать чужие.

Джереми
источник
5
Немного о граффити OpenStreetMap, вероятно, немного ошибочно; У OSM есть случайный вандализм, но это исключение, а не норма. Разрешения для каждого пользователя имеют очевидный недостаток, заключающийся в том, что большинство пользователей являются временными, и, таким образом, у вас будут незаконченные или ненужные данные, и другие не смогут завершить или удалить их.
tmcw
Это очень важный момент, и я буду помнить об этом. При наличии надлежащих процессов резервного копирования широко открытая модель может быть наиболее полезной. Я настолько далек от развития, что у меня много возможностей для изучения и развития идей. Благодарность!
Джереми

Ответы:

8

Поскольку сейчас я создаю что-то похожее, я расскажу вам, как я это делаю, и вы можете поменять все, что вы хотите от этого, на другой кусок.

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 в том, что вы можете менять детали в соответствии со своими потребностями.

Раги Язер Бурхум
источник
Спасибо за отличную информацию вместе со всеми остальными. Это определенно помогает сузить мой фокус по мере продвижения вперед.
Джереми
Bootstrap выглядит отлично. Можете ли вы указать нам какие-либо примеры картографических сайтов, которые используют его?
Стивен Лид
6

Я использую стек, похожий на Ragi, я нахожусь рядом с альфа-версией моего приложения, и на данный момент кажется, что выбор правильный. Вот мое решение:

На сервере:

  • Сервер Ubuntu + веб-сервер Apache + Tomcat Apache.
  • Postgresql + postgis в качестве базы данных.
  • Geoserver, (в моем случае я использую его только для растров).
  • Django Framework + Tastypie. Tastypie обслуживает все векторы через API, и у пользователей есть разрешение «на объект».
  • python-gsconfig для управления геосервером из python.
  • Джаспер отчеты для создания PDF-файлов.
  • pyjasper для управления отчетами о яшме из python.
  • Высокопроизводительная геостатистическая библиотека для интерполяции.

У клиента:

  • ExtJs 4 -> Это потрясающе, extjs очень хорошо работает с вкусным пирогом, и у вас есть много вещей, которые работают из коробки, такие как окна и столы. Я начал использовать его в чистом коде, но теперь я использую Sencha Architect 2, который очень помогает.
  • OpenLayers -> С двумя методами, вставленными один в хранилище extjs и один в слой openlayers, вы обновляете друг друга при изменении данных.
Pablo
источник
Я определенно буду исследовать вкусный вариант, выглядит многообещающе. Очень полезно!
Джереми
4

Возможно ли даже, чтобы зарегистрированные пользователи сайта редактировали только свои функции?

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

Cartaro разрешения

Кроме того, Cartaro работает на PostGIS, GeoServer и OpenLayers, поэтому он потенциально может иметь все, что вы ищете.

Каков лучший интерфейс верхнего уровня для такого сайта?

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

дубильщик
источник
1
Я ценю информацию, я не знал, что у Картаро есть такая возможность. Пока я буду придерживаться базовой модели, упомянутой другими (по крайней мере, с точки зрения исследований / обучения), но я могу немного глубже изучить эту CMS. Несколько месяцев назад я потратил на это около часа, и поначалу меня это не впечатлило, но, если честно, я не дал ему много шансов в то время.
Джереми
3

Я собираюсь ответить на вопрос №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, если запрос вызывал его.

Надеюсь это поможет.

CaptDragon
источник
Это очень помогло, наряду с множеством подходов к одним и тем же базовым принципам. У меня есть немного больше уверенности, что я могу сделать это с правильным обучением. Спасибо также!
Джереми