Solo quería pedir consejo a los gurús de SIG de código abierto en una pila recomendada para usar en mi proyecto previsto, ya que no entiendo completamente los límites de lo posible con la mayoría de los paquetes. Sé que puedo hacer lo que quiera usando los diversos paquetes de ESRI, pero quiero más barato y abierto para que el mundo lo vea. Estoy seguro de que puedo asumir cualquier desafío y aprender las piezas lo suficientemente bien como para hacer que un proyecto suceda, solo quiero evitar tomar el camino equivocado en primer lugar.
Mi visión del sitio: en términos de IU, ¡un sitio que NO ES SIG! Algo más parecido a whereis.com con todo (o casi todo) en cajas que se ciernen sobre un mapa base. Los detalles no son importantes ahora, solo enfatizando que no hay capas SIG con casillas de verificación en un panel separado, etc. En términos de interacción del usuario, los usuarios registrados pueden crear características (como ubicaciones de bebederos, senderos para caminar, etc.) en la parte superior de la base mapear y editar sus propias características. Si es posible, edite SOLAMENTE sus propias características que crearon. Un mapa colaborativo, de verdad.
Todavía estoy principalmente en modo de investigación, jugando con varios paquetes, pero solo en aras de la familiarización general y no de pruebas reales (¡lo que requeriría aprenderlos en detalle primero!). PostGIS definitivamente parece ser la forma correcta de actuar como DB (s) subyacente, con Geoserver / Mapserver como middleware más probable. Openlayers casi definitivamente será el mapa resbaladizo, ya que ya me siento cómodo con él y conozco su poder.
Eso me lleva a dos cuestiones principales que requieren la mayor parte de los consejos:
1) ¿Cuál es la mejor interfaz de usuario de capa superior para un sitio como este?
¿Es una instancia personalizada de Django (o incluso Django-CMS), o simplemente una instancia reconstruida de GeoExt u otra biblioteca (no estoy seguro si puede hacer un inicio de sesión / registro / IU completa con ella), un CMS / marco diferente ( no, no drupal ni nada que lo limite!), o algo totalmente diferente?
2) ¿Es incluso posible que los usuarios registrados del sitio editen solo sus propias características?
Quiero evitar los lugares masivos de "graffiti" como OSM y otros proyectos de colaboración. Según mi lectura y consejos anteriores, Geoserver no puede tener autenticación de usuario a nivel de características.
¿Puede Mapserver?
Ni siquiera sé si la población de usuarios de un sitio (desde un CMS o marco) puede incluso vincularse directamente a geoserver / mapserver.
Si tal concepto no es posible con soluciones de código abierto, ¿hay otra forma de lograr ese objetivo?
¿Los usuarios autenticados editan una versión no publicada de la capa de características principal (para no estropear el original) y la combinan automáticamente con la versión publicada cada 24 horas mientras mantienen una copia de seguridad diaria del original?
Algo perdido en cómo lograr esta intención.
Y sí, también he visto GeoNode, pero solo quiero un mapa general (que sea simple) y su interfaz de usuario no es lo suficientemente interactiva (antes de entrar en GeoExplorer) o demasiado similar a GIS en GeoExplorer. Parece una solución demasiado enlatada para este proyecto.
Lamento ser tan abierto y vago, pero espero poder comenzar por un camino en el que lo anterior sea posible y no toparme con la pared dentro de varios meses, solo para tener que comenzar de nuevo porque el camino ¡El # 1 nunca tuvo esa funcionalidad desde el principio!
Uno de los mejores ejemplos que puedo encontrar es http://www.gpsies.com Sé que esto usa un folleto, pero no estoy seguro del marco y la base de datos subyacentes. Los usuarios pueden crear / cargar sus propias funciones, pero no editar las de otros.
Respuestas:
Como estoy construyendo algo similar en este momento, te diré cómo lo estoy haciendo y puedes elegir cambiar lo que quieras por otra pieza.
Django (con GeoDjango ) es bastante bueno para esto como un marco básico para python (de nuevo, si eso es lo tuyo, puedes hacerlo en otro idioma).
Mi enfoque para las ediciones a nivel de usuario es similar a lo que describió CaptDragon. Estoy usando el marco de autenticación de django . Para este proyecto, mis API se crean utilizando Tasty Pie de Django, que ya tiene un marco que le permite crear API RESTful adecuadas con la autenticación tomada en cuenta con bastante facilidad.
My Mapserver (o Geoserver o lo que elija usar) nunca se exponen directamente al mundo exterior (solo el servidor local tiene acceso a ellos) ... todos los mosaicos se sirven mediante un servidor de mosaico ( geowebcache , tilecache , tilestache lo que sea )
No necesito mencionar Openlayers, ya que ya elegiste eso. Buena elección.
PostgreSQL / PostGIS fue otra obviedad. :)
Como biblioteca javascript, nunca puedes equivocarte con jQuery. Si va a permitir varias ediciones, puede beneficiarse de tener alguna estructura de sus objetos javascript usando algo como backbone.js . Tomar esto con un grano de sal. Algunas personas lo aman, otras lo odian.
Si no desea que su sitio se vea tan feo, hágase un favor y use un marco css como Bootstrap o Compass o una alternativa, por $ 20, solo compre uno de themeforest o wrapstrap (si va a abrir el código puede aunque quiera ver la licencia si la va a comprar). ¡Conectar uno de estos toma alrededor de un día y marca una gran diferencia en el aspecto de su sitio!
Personalmente, he mirado Django-cms (y Pinax ) varias veces y nunca puedo convencerme de que vale la pena. Nunca me he arrepentido de esa decisión todavía.
Como está eligiendo un proyecto que requerirá varias versiones de su esquema (cuanto más desarrolle, más cambiará), simplemente use south . ¡Ni siquiera lo dudes! Seriamente.
Eso es lo que usaría, pero lo bueno de Open Source es que puede cambiar las piezas para satisfacer sus propias necesidades.
fuente
Estoy usando una pila similar a la de Ragi. Estoy cerca de la versión alfa de mi aplicación y en este punto parece que las opciones eran correctas. Aquí está mi solución:
En el servidor:
En el cliente:
fuente
¿Es incluso posible que los usuarios registrados del sitio editen solo sus propias características?
Parece que esto es posible usando Cartaro. Está basado en Drupal (lo sé, no dijiste nada limitante como Drupal, ¡pero escúchame!) Y permite a los usuarios editar sus propias características, entre otras opciones. Aquí hay una captura de pantalla tomada de la página Personas cuando inicia sesión como administrador, que muestra los tipos de permisos que se pueden configurar para los usuarios:
Además, Cartaro se ejecuta en PostGIS, GeoServer y OpenLayers, por lo que podría tener todo lo que está buscando.
¿Cuál es la mejor interfaz de usuario de capa superior para un sitio como este?
No sé cuál es la "mejor" capa superior, pero parece que Cartaro podría proporcionar lo que está buscando, ya que Drupal tiene muchas opciones de interfaz de usuario. Parece que Cartaro está en una etapa temprana de desarrollo (no conozco personalmente a nadie que lo esté usando), pero tiene potencial.
fuente
Voy a abordar la pregunta # 2. Así es como evito el problema de permitir a los usuarios editar sus propios registros.
Creo mis propios servicios web RESTFUL o SOAP (su elección) como los
UpdateUserRecord(string WKTLocation, string otherArg)
que se vinculan con el mecanismo de autenticación de su sitio web.OpenLayers y PostGIS leen y escriben texto conocido (WKT), así como GML y otros formatos estándar, pero yo personalmente uso WKT para pasar la información de geometría y el formulario desde mi aplicación, a través del servicio web y al PostGIS DB.
Además, mis métodos web como
UpdateUserRecord
solo pueden ser llamados por un usuario de sesión autenticado. Se401 Unauthorized
devuelve A si alguien más intenta llamar a este servicio web. En mi caso, uso .NET y FormsAuthentication con la opción de autenticar usando OpenAuth2 (Google, Facebook, Twitter, etc.). Esto también se puede hacer en PHP, Java, etc.Por lo tanto, puede crear métodos web que llamen a la base de datos de PostGIS directamente y actualizar o insertar registros como desee. Y así fue como lo hice.
Luego utilicé GeoServer para las capacidades de consulta WFS, WMS y la facilidad de mostrar la información en el mapa donde proporcionaría un ID de usuario si la consulta lo solicitara.
Espero que esto ayude.
fuente