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


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, вы обновляете друг друга при изменении данных.

Я определенно буду исследовать вкусный вариант, выглядит многообещающе. Очень полезно!
— Джереми

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, если запрос вызывал его.

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


Это очень помогло, наряду с множеством подходов к одним и тем же базовым принципам. У меня есть немного больше уверенности, что я могу сделать это с правильным обучением. Спасибо также!
— Джереми
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.