Vous cherchez des conseils sur la feuille de route d'un package générique open source? [fermé]


17

Je voulais juste demander conseil aux gourous des SIG open source sur une pile recommandée à utiliser pour mon projet envisagé, car je ne comprends pas complètement les limites du possible avec la plupart des packages. Je sais que je peux faire ce que je veux en utilisant les différents packages d'ESRI, mais je veux moins cher et ouvert au monde. Je suis convaincu que je peux relever n'importe quel défi et apprendre suffisamment de pièces pour réaliser un projet, je veux juste éviter de me tromper en premier lieu.

Ma vision du site: En termes d'interface utilisateur, un site non SIG! Quelque chose de plus dans le sens de whereis.com avec tout (ou presque tout) fait sur des boîtes planant au-dessus d'une carte de base. Les détails ne sont plus importants maintenant, soulignant simplement l'absence de couches SIG avec des cases à cocher dans un volet séparé, etc. En termes d'interaction avec l'utilisateur, les utilisateurs enregistrés peuvent créer des fonctionnalités (comme des emplacements de fontaines, des sentiers pédestres, etc.) au-dessus de la base carte et modifiez leurs propres fonctions. Si possible, modifiez UNIQUEMENT leurs propres fonctionnalités qu'ils ont créées. Une carte collaborative, vraiment.

Je suis toujours principalement en mode recherche, jouant avec divers packages mais uniquement dans un souci de familiarisation générale et non pas de vrais tests (ce qui nécessiterait de les apprendre en détail d'abord!). PostGIS semble définitivement la bonne voie à suivre en tant que base de données sous-jacente, avec Geoserver / Mapserver comme middleware le plus probable. Openlayers va presque certainement être la carte glissante, car je suis déjà à l'aise avec elle et je connais sa puissance.

Cela m'amène donc à deux questions principales nécessitant la majeure partie des conseils:

1) Quelle est la meilleure interface utilisateur de couche supérieure pour un site comme celui-ci?

Est-ce une instance personnalisée de Django (ou même Django-CMS), ou simplement une instance reconstituée de GeoExt ou d'une autre bibliothèque (je ne sais pas si vous pouvez faire une connexion / inscription / UI complète avec elle), un CMS / framework différent ( non, pas drupal ou quoi que ce soit qui limite!), ou quelque chose de totalement différent?

2) Est-il même possible que les utilisateurs du site enregistrés modifient uniquement leurs propres fonctionnalités?

Je veux éviter les lieux de «graffitis» de masse comme l'OSM et d'autres expériences de projets collaboratifs. Il semble d'après ma lecture et mes conseils précédents que Geoserver ne peut pas avoir d'authentification utilisateur au niveau des fonctionnalités.

Peut Mapserver?

Je ne sais même pas si la population d'utilisateurs d'un site (à partir d'un CMS ou d'un framework) peut même se lier directement à geoserver / mapserver.

Si un tel concept n'est pas possible avec des solutions open source, existe-t-il un autre moyen d'atteindre cet objectif?

Les utilisateurs authentifiés ont-ils modifié une version non publiée de la couche d'entités principale (afin de ne pas gâcher l'original) et la fusionner automatiquement à la version publiée toutes les 24 heures tout en conservant une sauvegarde quotidienne de l'original?

Sorte de perdu sur la façon d'atteindre cet objectif.

Et oui, j'ai également examiné GeoNode, mais je ne veux qu'une seule carte globale (restez simple) et son interface utilisateur n'est pas suffisamment interactive (avant d'entrer dans GeoExplorer) ou trop SIG dans GeoExplorer. On dirait une solution trop conservée pour ce projet.

Désolé d'être si ouvert ici et vague, mais j'espère pouvoir commencer un chemin dans lequel ce qui précède est possible et ne pas se heurter au mur dans plusieurs mois, juste pour recommencer parce que le chemin # 1 n'a jamais eu cette fonctionnalité depuis le début!

Un des meilleurs exemples que je peux trouver est http://www.gpsies.com Je sais que cela utilise la brochure, mais je ne suis pas sûr du cadre sous-jacent et de la base de données. Les utilisateurs peuvent créer / télécharger leurs propres fonctionnalités, mais pas en modifier d'autres.


5
Le bit sur les graffitis OpenStreetMap est probablement un peu erroné; L'OSM a occasionnellement du vandalisme, mais c'est l'exception, pas la norme. Les autorisations par utilisateur ont le défaut évident que la plupart des utilisateurs sont transitoires et vous aurez donc des données inachevées ou indésirables, sans aucun moyen pour les autres de les compléter ou de les supprimer.
tmcw

C'est un point très valable, et je m'en souviendrai. Avec des processus de sauvegarde appropriés en place, un modèle largement ouvert pourrait être le plus gratifiant. Je suis tellement loin de développer même à ce stade, j'ai beaucoup de place pour apprendre et développer des idées. Merci!
Jeremy

Réponses:


8

Puisque je construis quelque chose de similaire en ce moment, je vais vous dire comment je le fais et vous pouvez choisir de changer ce que vous voulez pour un autre morceau.

Django (avec GeoDjango ) est assez bon pour cela en tant que framework de base pour python (encore une fois, si c'est votre truc, vous pouvez le faire dans une autre langue).

Mon approche pour les modifications au niveau utilisateur est similaire à ce que CaptDragon a décrit. J'utilise le cadre d' authentification django . Pour ce projet, mes API sont en cours de création à l'aide de Django's Tasty Pie qui a déjà un cadre qui vous permet de créer des API RESTful appropriées avec une authentification prise en considération assez facilement.

Mon Mapserver (ou Geoserver ou tout ce que vous choisissez d'utiliser) n'est jamais exposé directement au monde extérieur (seul le serveur local y a accès) ... toutes les tuiles sont servies à l'aide d'un serveur de tuiles ( geowebcache , tilecache , tilestache que ce soit ).

Je n'ai pas besoin de mentionner Openlayers, puisque vous l'avez déjà choisi. Bon choix.

PostgreSQL / PostGIS était une autre évidence. :)

En tant que bibliothèque javascript, vous ne pouvez jamais vous tromper avec jQuery. Si vous comptez autoriser plusieurs modifications, vous pouvez bénéficier d'une structure de vos objets javascript en utilisant quelque chose comme backbone.js . Prenez ceci avec un grain de sel. Certains l'aiment - d'autres le détestent.

Si vous ne voulez pas que votre site soit si moche, faites-vous plaisir et utilisez un framework CSS comme Bootstrap ou Compass ou une alternative, pour 20 $, achetez-en un sur themeforest ou wrapstrap (si vous allez l'open source, vous pouvez voulez regarder la licence si vous allez l'acheter). Accrocher un de ces éléments prend environ une journée et fait une énorme différence sur l'apparence de votre site!

Personnellement, j'ai regardé plusieurs fois Django-cms (et Pinax ) et je ne peux jamais me convaincre que cela en vaut la peine. Je n'ai encore jamais regretté cette décision.

Puisque vous choisissez un projet qui nécessitera différentes versions de votre schéma (plus vous développez, plus il changera), utilisez simplement le sud . N'hésitez même pas! Sérieusement.

C'est ce que j'utiliserais, mais ce qu'il y a de bien avec l'Open Source, c'est que vous pouvez changer les parties en fonction de vos propres besoins.


Merci pour la grande info, ainsi que tout le monde. Cela aide certainement à réduire ma concentration à mesure que j'avance.
Jeremy

Bootstrap semble excellent. Pouvez-vous nous indiquer des exemples de sites de cartographie qui l'utilisent?
Stephen Lead

6

J'utilise une pile similaire à celle de Ragi, je suis près de la version alpha de mon application et à ce stade, il semble que les choix étaient bons. Voici ma solution:

Sur le serveur:

  • Serveur Ubuntu + serveur Web Apache + Tomcat Apache.
  • Postgresql + postgis comme base de données.
  • Geoserver, (dans mon cas, je ne l'utilise que pour les rasters).
  • Django Framework + Tastypie. Tastypie dessert tous les vecteurs via l'API et les utilisateurs ont l'autorisation «par objet».
  • python-gsconfig pour contrôler le géoserveur à partir de python.
  • rapports jasper pour générer des fichiers PDF.
  • pyjasper pour contrôler les rapports jasper depuis python.
  • Bibliothèque géostatistique haute performance pour l'interpolation.

Chez le client:

  • ExtJs 4 -> C'est fantastique, extjs fonctionne très bien avec tastypie et vous avez beaucoup de choses qui sortent de la boîte, comme les fenêtres et les tables. J'ai commencé à l'utiliser en code pur mais j'utilise Sencha Architect 2 qui aide beaucoup.
  • OpenLayers -> Avec deux méthodes insérées, l'une dans un magasin extjs et l'autre dans une couche openlayers, vous les mettez à jour mutuellement en cas de changement de données.

Je vais certainement rechercher l'option tastypie, semble prometteuse. Très utile!
Jeremy

4

Est-il même possible que les utilisateurs du site enregistrés modifient uniquement leurs propres fonctionnalités?

Il semble que cela soit possible en utilisant Cartaro. Il est basé sur Drupal (je sais, vous n'avez rien dit de limitant comme Drupal, mais écoutez-moi!) Et il permet aux utilisateurs de modifier uniquement leurs propres fonctionnalités, entre autres options. Voici une capture d'écran tirée de la page Personnes lorsque vous êtes connecté en tant qu'administrateur, qui montre les types d'autorisations qui peuvent être définies pour les utilisateurs:

Autorisations Cartaro

En outre, Cartaro fonctionne sur PostGIS, GeoServer et OpenLayers, il pourrait donc potentiellement avoir tout ce que vous recherchez.

Quelle est la meilleure interface utilisateur de couche supérieure pour un site comme celui-ci?

Je ne sais pas quelle est la "meilleure" couche supérieure, mais il semble que Cartaro pourrait fournir ce que vous recherchez car Drupal a de nombreuses options d'interface utilisateur. Il semble que Cartaro soit au début du développement (je ne connais personnellement personne qui l'utilise), mais il a du potentiel.


1
J'apprécie l'info, je ne savais pas que Cartaro avait cette capacité. Pour l'instant, je m'en tiendrai au modèle de base mentionné par les autres (au moins du point de vue de la recherche / de l'apprentissage), mais je vais peut-être approfondir un peu ce CMS. Je lui ai donné environ une heure de temps il y a quelques mois et j'étais moins impressionné au début, mais pour être honnête, je ne lui ai pas laissé beaucoup de chance à l'époque.
Jeremy

3

Je vais répondre à la question n ° 2. Voici comment je contourne la question de permettre aux utilisateurs de modifier leurs propres enregistrements.

Je crée mes propres services Web RESTFUL ou SOAP (votre choix) tels que ceux UpdateUserRecord(string WKTLocation, string otherArg)qui sont liés au mécanisme d'authentification de votre site Web.

OpenLayers et PostGIS lisent et écrivent du texte bien connu (WKT) ainsi que du GML et d'autres formats standard, mais j'utilise personnellement WKT pour retransmettre les informations de géométrie et les former depuis mon application, via le service Web et dans la base de données PostGIS.

De plus, mes méthodes Web comme UpdateUserRecordpeuvent uniquement être appelées par un utilisateur de session authentifié. Un 401 Unauthorizedest renvoyé si quelqu'un d'autre essaie d'appeler ce service Web. Dans mon cas, j'utilise .NET et FormsAuthentication avec l'option d'authentification à l'aide d'OpenAuth2 (Google, Facebook, Twitter, etc.). Cela peut également être fait en PHP, Java, etc.

Vous pouvez donc créer des méthodes Web qui appellent directement la base de données PostGIS et mettre à jour ou insérer des enregistrements comme vous le souhaitez. Et c'est comme ça que je l'ai fait.

Ensuite, j'ai utilisé GeoServer pour le WFS, les capacités de requête WMS et la facilité d'affichage des informations sur la carte où je fournirais un ID utilisateur si la requête le demandait.

J'espère que cela t'aides.


Cela a beaucoup aidé, aux côtés de plusieurs prises sur les mêmes principes de base. J'ai un peu plus de confiance que je peux y arriver avec la bonne concentration d'apprentissage. Merci aussi!
Jeremy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.