Cerchi consigli sulla roadmap generica dei pacchetti open source? [chiuso]


17

Volevo solo chiedere consigli ai guru del GIS open source su uno stack consigliato da utilizzare per il mio progetto previsto, poiché non capisco completamente i limiti del possibile con la maggior parte dei pacchetti. So di poter fare quello che voglio usando i vari pacchetti di ESRI, ma voglio più economico e aperto per essere visto dal mondo. Sono fiducioso di poter affrontare qualsiasi sfida e imparare i pezzi abbastanza bene per realizzare un progetto, voglio solo evitare di seguire la strada sbagliata in primo luogo.

La mia visione del sito: in termini di interfaccia utente, un sito dall'aspetto NON GIS! Qualcosa di più lungo le linee di whereis.com con tutto (o quasi tutto) fatto su scatole sospese sopra una mappa di base. Le specifiche non sono importanti ora, semplicemente enfatizzando nessun livello GIS con caselle di spunta in un riquadro separato, ecc. In termini di interazione con gli utenti, gli utenti registrati possono creare funzionalità (come posizioni delle fontanelle, percorsi pedonali, ecc.) In cima alla base mappare e modificare le proprie funzionalità. Se possibile, modifica SOLO le loro funzionalità che hanno creato. Una mappa collaborativa, davvero.

Sono ancora per lo più in modalità di ricerca, sto giocando con vari pacchetti, ma solo per motivi di familiarizzazione generale e non di test reali (che richiederebbe prima di impararli in dettaglio!). PostGIS sembra sicuramente la strada giusta da percorrere come i DB sottostanti, con Geoserver / Mapserver come middleware più probabile. Openlayers sarà quasi sicuramente la mappa scivolosa, poiché sono già a mio agio con esso e conosco il suo potere.

Questo mi porta a due problemi principali che richiedono la maggior parte dei consigli:

1) Qual è la migliore interfaccia utente di livello superiore per un sito come questo?

È un'istanza personalizzata di Django (o anche Django-CMS) o semplicemente un'istanza messa insieme di GeoExt o altra libreria (non sono sicuro di poter effettuare un login / registrazione / UI completa con esso), un CMS / framework diverso ( no, non drupal o qualcosa di così limitante!) o qualcosa di totalmente diverso?

2) È anche possibile che gli utenti del sito registrati modifichino solo le proprie funzionalità?

Voglio evitare i luoghi di massa dei "graffiti" come OSM e altri progetti di collaborazione. Dalla mia lettura e dai miei consigli sembra che Geoserver non possa avere un'autenticazione utente a livello di funzionalità.

Mapserver può?

Non so nemmeno se la popolazione di utenti di un sito (da un CMS o framework) possa persino collegarsi direttamente a geoserver / mapserver.

Se un simile concetto non è possibile con soluzioni open source, esiste un altro modo per raggiungere tale obiettivo?

Gli utenti autenticati hanno modificato una versione non pubblicata del feature layer principale (in modo da non confondere l'originale) e la fondono automaticamente con la versione pubblicata ogni 24 ore mantenendo un backup giornaliero dell'originale?

Un po 'perso su come raggiungere questo intento.

E sì, ho anche guardato GeoNode, ma voglio solo una mappa generale (per semplicità) e la sua interfaccia utente non è abbastanza interattiva (prima di entrare in GeoExplorer) o troppo simile a GIS in GeoExplorer. Sembra una soluzione troppo in scatola per questo progetto.

Mi dispiace essere così aperto qui finito e vago, ma spero di essere in grado di iniziare un percorso in cui quanto sopra è possibile e di non incorrere nel muro tra qualche mese, solo per ricominciare tutto da capo perché percorso # 1 non ha mai avuto questa funzionalità fin dall'inizio!

Uno dei migliori esempi che riesco a trovare è http://www.gpsies.com So che questo usa un opuscolo, ma non sono sicuro del framework e del database sottostanti. Gli utenti possono creare / caricare le proprie funzionalità, ma non modificarne altre.


5
La parte relativa ai graffiti di OpenStreetMap è probabilmente un po 'fuorviante; L'OSM ha occasionalmente atti di vandalismo ma è l'eccezione, non la norma. Le autorizzazioni per utente hanno l'ovvio difetto che la maggior parte degli utenti è temporanea e quindi avrai dati incompleti o inutili, senza che altri possano completarli o rimuoverli.
tmcw,

Questo è un punto molto valido e che terrò a mente. Con adeguati processi di backup in atto, un modello completamente aperto potrebbe essere il più gratificante. Sono così lontano dallo sviluppo a questo punto, ho molto spazio per imparare e far crescere le idee. Grazie!
Jeremy,

Risposte:


8

Dal momento che sto costruendo qualcosa di simile in questo momento, ti dirò come lo sto facendo e puoi scegliere di cambiare quello che vuoi da un altro pezzo.

Django (con GeoDjango ) è abbastanza buono per questo come framework di base per Python (di nuovo, se è la tua cosa, potresti farlo in un'altra lingua).

Il mio approccio per le modifiche a livello di utente è simile a quello descritto da CaptDragon. Sto usando il framework di autenticazione Django . Per questo progetto, le mie API vengono create utilizzando Tasty Pie di Django che ha già un framework che consente di creare API RESTful appropriate con l'autenticazione presa in considerazione abbastanza facilmente.

Il mio Mapserver (o Geoserver o qualunque cosa tu scelga di usare) non viene mai esposto direttamente al mondo esterno (solo il server locale ha accesso a quelli) ... tutte le tessere vengono servite usando un server di tessere ( geowebcache , tilecache , tilestache qualunque cosa ).

Non ho bisogno di menzionare Openlayers, dal momento che l'hai già scelto. Bella scelta.

PostgreSQL / PostGIS è stato un altro gioco da ragazzi. :)

Come libreria javascript, non puoi mai sbagliare con jQuery. Se hai intenzione di consentire diverse modifiche, potresti trarre vantaggio dall'avere una struttura dei tuoi oggetti javascript usando qualcosa come backbone.js . Prendi questo con un granello di sale. Alcune persone lo adorano, altri lo odiano.

Se non vuoi che il tuo sito appaia così brutto, fatti un favore e usa un framework css come Bootstrap o Compass o alternativa, per $ 20, basta acquistarne uno da Themeforest o Wrapstrap (se hai intenzione di open source, potresti se vuoi comprare la licenza, però). Il collegamento di uno di questi richiede circa un giorno e fa una grande differenza sull'aspetto del tuo sito!

Personalmente, ho guardato più volte Django-cms (e Pinax ) e non riesco mai a convincermi che valga la pena. Non mi sono mai pentito di quella decisione.

Dato che stai scegliendo un progetto che richiederà varie versioni del tuo schema (più sviluppi, più cambierà), usa solo sud . Non esitare nemmeno! Sul serio.

Questo è quello che vorrei usare, ma la cosa bella di Open Source è che puoi cambiare le parti in base alle tue esigenze.


Grazie per le ottime informazioni, insieme a tutti gli altri. Questo sicuramente aiuta a restringere la mia attenzione mentre vado avanti.
Jeremy,

Bootstrap sembra eccellente. Puoi indicarci eventuali siti di mappatura di esempio che lo utilizzano?
Stephen Lead,

6

Sto usando uno stack simile a quello di Ragi Sono vicino alla versione alfa della mia applicazione e a questo punto sembra che le scelte siano giuste. Ecco la mia soluzione:

Al server:

  • Server Ubuntu + apache web server + apache tomcat.
  • Postgresql + postgis come database.
  • Geoserver, (nel mio caso lo uso solo per i raster).
  • Django Framework + Tastypie. Tastypie serve tutti i vettori tramite l'API e gli utenti hanno l'autorizzazione "per oggetto".
  • python-gsconfig per controllare geoserver da python.
  • jasper riferisce di generare pdf.
  • pyjasper per controllare i report jasper da Python.
  • Libreria geostatistica ad alte prestazioni per l'interpolazione.

Al cliente:

  • ExtJs 4 -> Fantastico, extjs funziona molto bene con tastypie e hai molte cose che funzionano immediatamente, come finestre e tavoli. Ho iniziato ad usarlo in puro codice ma non uso Sencha Architect 2 che aiuta molto.
  • OpenLayers -> Con due metodi inseriti uno in un archivio extjs e uno in un livello openlayers, li si aggiornano reciprocamente sulla modifica dei dati.

Sicuramente cercherò l'opzione tastypie, sembra promettente. Molto utile!
Jeremy,

4

È anche possibile che gli utenti del sito registrati modifichino solo le proprie funzionalità?

Sembra che ciò sia possibile utilizzando Cartaro. Si basa su Drupal (lo so, non hai detto nulla di limitante come Drupal, ma ascoltami!) E consente agli utenti di modificare solo le proprie funzionalità, tra le altre opzioni. Ecco uno screenshot tratto dalla pagina Persone quando si accede come amministratore, che mostra i tipi di autorizzazioni che possono essere impostati per gli utenti:

Autorizzazioni Cartaro

Inoltre, Cartaro funziona su PostGIS, GeoServer e OpenLayers, quindi potenzialmente potrebbe avere tutto ciò che stai cercando.

Qual è la migliore interfaccia utente di livello superiore per un sito come questo?

Non so quale sia il livello migliore "migliore", ma sembra che Cartaro possa fornire ciò che stai cercando poiché Drupal ha molte opzioni di interfaccia utente. Sembra che Cartaro sia in fase di sviluppo (non conosco personalmente nessuno che lo sta usando), ma ha delle potenzialità.


1
Apprezzo le informazioni, non sapevo che Cartaro avesse questa capacità. Per ora mi atterrò al modello base menzionato dagli altri (almeno dal punto di vista della ricerca / apprendimento), ma potrei guardare un po 'più a fondo in questo CMS. Gli ho dato circa un'ora di tempo qualche mese fa e inizialmente non ero molto colpito, ma per essere onesti, non gli ho dato molte possibilità in quel momento.
Jeremy,

3

Affronterò la domanda n. 2 Ecco come aggirare il problema di consentire agli utenti di modificare i propri record.

Creo i miei servizi Web RESTFUL o SOAP (a tua scelta) come quelli UpdateUserRecord(string WKTLocation, string otherArg)che si collegano al meccanismo di autenticazione del tuo sito web.

OpenLayers e PostGIS leggono e scrivono sia Well-Known-Text (WKT) che GML e altri formati standard, ma personalmente utilizzo WKT per trasferire informazioni e geometria dalla mia applicazione, attraverso il servizio Web e nel DB PostGIS.

Anche i miei metodi web come UpdateUserRecordpossono essere chiamati solo da un utente di sessione autenticato. Viene 401 Unauthorizedrestituito A se qualcun altro tenta di chiamare questo servizio Web. Nel mio caso utilizzo .NET e FormsAuthentication con l'opzione di autenticazione tramite OpenAuth2 (Google, Facebook, Twitter, ecc.). Questo può essere fatto anche in PHP, Java, ecc.

Quindi è possibile creare metodi Web che chiamano direttamente il database PostGIS e aggiornare o inserire i record nel modo desiderato. Ed è così che l'ho fatto.

Quindi ho usato GeoServer per WFS, capacità di query WMS e facilità di visualizzazione delle informazioni sulla mappa dove avrei fornito un UserID se la query lo avesse richiesto.

Spero che sia di aiuto.


Questo ha aiutato molto, insieme a molteplici interpretazioni sugli stessi principi di base. Ho un po 'più di fiducia nel fatto che ciò possa avvenire con la giusta attenzione all'apprendimento. Grazie anche a!
Jeremy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.