Möchten Sie Ratschläge zu einer allgemeinen Open-Source-Paket-Roadmap erhalten? [geschlossen]


17

Ich wollte nur die Open-Source-GIS-Gurus um Rat fragen, um einen empfohlenen Stack für mein geplantes Projekt zu finden, da ich die Grenzen des Möglichen bei den meisten Paketen nicht vollständig verstehe. Ich weiß, dass ich mit den verschiedenen Paketen von ESRI alles machen kann, was ich will, aber ich möchte billiger und offen für die Welt. Ich bin zuversichtlich, dass ich jede Herausforderung annehmen und die Dinge gut genug lernen kann, um ein Projekt in die Tat umzusetzen.

Meine Website-Vision: In Bezug auf die Benutzeroberfläche eine NON-GIS aussehende Website! Etwas mehr nach dem Vorbild von whereis.com, bei dem alles (oder fast alles) auf Feldern ausgeführt wird, die über einer Basiskarte schweben. Die Einzelheiten sind jetzt nicht mehr wichtig, da nur keine GIS-Ebenen mit Häkchen in einem separaten Bereich usw. hervorgehoben werden. Im Hinblick auf die Benutzerinteraktion können registrierte Benutzer Features (wie Trinkbrunnenstandorte, Gehwege usw.) auf der Basis erstellen Karte und bearbeiten Sie ihre eigenen Funktionen. Bearbeiten Sie nach Möglichkeit NUR die von ihnen erstellten Features. Eigentlich eine kollaborative Karte.

Ich bin immer noch größtenteils im Forschungsmodus und spiele mit verschiedenen Paketen herum, aber nur zum allgemeinen Kennenlernen und nicht zum Testen (was es erfordern würde, sie zuerst im Detail zu lernen!). PostGIS scheint definitiv der richtige Weg zu sein, um als zugrunde liegende Datenbank (en) mit Geoserver / Mapserver als wahrscheinlichster Middleware zu agieren. Openlayers wird mit ziemlicher Sicherheit die rutschige Karte sein, da ich mich bereits damit wohl fühle und ihre Macht kenne.

Das bringt mich zu zwei Hauptthemen, die einen Großteil der Beratung erfordern:

1) Was ist die beste Benutzeroberfläche auf oberster Ebene für eine Site wie diese?

Ist es eine angepasste Instanz von Django (oder sogar Django-CMS) oder einfach eine zusammengesetzte Instanz von GeoExt oder einer anderen Bibliothek (nicht sicher, ob Sie eine Anmeldung / Registrierung / vollständige Benutzeroberfläche damit vornehmen können), ein anderes CMS / Framework ( nein, nicht drupal oder irgendetwas das einschränkt!) oder was ganz anderes?

2) Ist es überhaupt möglich, dass registrierte Site-Benutzer nur ihre eigenen Funktionen bearbeiten?

Ich möchte die Massen von „Graffiti“ -Plätzen wie OSM und andere Erfahrungen in Verbundprojekten vermeiden. Ich habe gelesen und zuvor geraten, dass Geoserver keine Benutzerauthentifizierung auf Funktionsebene haben kann.

Kann Mapserver?

Ich weiß nicht einmal, ob die Benutzerpopulation einer Site (von einem CMS oder einem Framework) direkt auf einen Geoserver / Mapserver verlinken kann.

Wenn ein solches Konzept mit Open Source-Lösungen nicht möglich ist, gibt es einen anderen Weg, um dieses Ziel zu erreichen?

Haben authentifizierte Benutzer eine nicht veröffentlichte Version des Hauptfeature-Layers bearbeitet (um das Original nicht zu verfälschen) und diese automatisch alle 24 Stunden mit der veröffentlichten Version zusammengeführt, während eine tägliche Sicherung des Originals erstellt wird?

Irgendwie verloren, wie man diese Absicht erreicht.

Und ja, ich habe auch GeoNode angesehen, aber ich möchte nur eine Gesamtkarte (halten Sie es einfach) und die Benutzeroberfläche ist entweder nicht interaktiv genug (bevor Sie in GeoExplorer wechseln) oder zu GIS-ähnlich in GeoExplorer. Scheint eine Lösung für dieses Projekt zu sein.

Es tut mir leid, hier so offen und vage zu sein, aber ich hoffe, in der Lage zu sein, einen Weg zu beschreiten, in dem das oben Genannte möglich ist, und in einigen Monaten nicht mehr gegen die Mauer zu rennen, nur um wieder von vorne beginnen zu müssen, weil der Weg Die Nummer 1 hatte von Anfang an nie diese Funktionalität!

Eines der besten Beispiele, die ich finden kann, ist http://www.gpsies.com. Ich weiß, dass hier eine Broschüre verwendet wird, aber ich bin mir nicht sicher, welches Framework und welche Datenbank zugrunde liegen. Benutzer können ihre eigenen Features erstellen / hochladen, die anderer jedoch nicht bearbeiten.


5
Das bisschen über OpenStreetMap-Graffiti ist wahrscheinlich ein bisschen fehlgeleitet; OSM hat gelegentlichen Vandalismus, aber es ist die Ausnahme, nicht die Norm. Berechtigungen für einzelne Benutzer weisen den offensichtlichen Fehler auf, dass die meisten Benutzer nur vorübergehend sind und Sie daher unfertige oder Junk-Daten haben, ohne dass andere diese vervollständigen oder entfernen können.
tmcw

Das ist ein sehr zutreffender Punkt, an den ich mich erinnern werde. Mit geeigneten Backup-Prozessen könnte ein weit offenes Modell am lohnendsten sein. An diesem Punkt bin ich noch weit davon entfernt, mich überhaupt zu entwickeln. Ich habe viel Raum, um Ideen zu lernen und zu entwickeln. Vielen Dank!
Jeremy

Antworten:


8

Da ich gerade etwas Ähnliches baue, werde ich Ihnen sagen, wie ich es mache und Sie können wählen, was Sie wollen, um es durch ein anderes Stück zu ersetzen.

Django (mit GeoDjango ) ist dafür als Grundgerüst für Python ziemlich gut geeignet (wenn das dein Ding ist, kannst du das auch in einer anderen Sprache tun).

Mein Ansatz für Bearbeitungen auf Benutzerebene ähnelt dem in CaptDragon beschriebenen. Ich verwende das Django-Authentifizierungsframework . Für dieses Projekt werden meine APIs mit Djangos Tasty Pie erstellt, der bereits über ein Framework verfügt, mit dem Sie ordnungsgemäße RESTful-APIs erstellen können, bei denen die Authentifizierung relativ einfach berücksichtigt wird .

Mein Mapserver (oder Geoserver oder was auch immer Sie verwenden) werden nie direkt an die Außenwelt (nur der lokale Server hat Zugriff auf diese) ausgesetzt ... Sie alle Steine serviert bekommen heraus mit einem Kachel - Server ( GeoWebCache , TileCache , tilestache was auch immer ).

Ich muss Openlayers nicht erwähnen, da Sie das bereits ausgewählt haben. Gute Wahl.

PostgreSQL / PostGIS war ein weiteres Kinderspiel. :)

Als Javascript-Bibliothek können Sie mit jQuery nichts falsch machen. Wenn Sie mehrere Bearbeitungen zulassen möchten, können Sie von einer Strukturierung Ihrer Javascript-Objekte mit so etwas wie backbone.js profitieren . Nimm das mit einem Körnchen Salz. Einige Leute lieben es - andere hassen es.

Wenn Sie nicht Ihre Website wollen so hässlich aussehen, tun sich selbst einen Gefallen und verwenden Sie einen CSS - Framework wie Bootstrap oder Kompass oder alternativ, für $ 20, nur einen kaufen von Themeforest oder wrapstrap (wenn Sie zu Open - Source gehen werden kann es Ihnen Ich möchte mir die Lizenz ansehen, wenn Sie sie kaufen wollen. Das Einbinden einer dieser Funktionen dauert ungefähr einen Tag und macht einen großen Unterschied in der Darstellung Ihrer Website!

Persönlich habe ich mir Django-cms (und Pinax ) mehrmals angeschaut und kann mich nie davon überzeugen, dass sich die Mühe lohnt. Ich habe diese Entscheidung noch nie bereut.

Da Sie ein Projekt auswählen, für das verschiedene Versionen Ihres Schemas erforderlich sind (je mehr Sie entwickeln, desto mehr Änderungen werden vorgenommen), verwenden Sie einfach " Süden" . Zögern Sie nicht einmal darüber! Ernsthaft.

Das ist, was ich verwenden würde, aber das Schöne an Open Source ist, dass Sie Teile ändern können, um es Ihren eigenen Bedürfnissen anzupassen.


Danke für die tollen Infos, zusammen mit allen anderen. Dies hilft definitiv dabei, meinen Fokus einzugrenzen, wenn ich mich vorwärts bewege.
Jeremy

Bootstrap sieht hervorragend aus. Können Sie uns auf ein Beispiel für Mapping- Sites verweisen, die es verwenden?
Stephen Lead

6

Ich verwende einen Stapel, der Ragi ähnelt. Ich befinde mich in der Nähe der Alpha-Version meiner Anwendung, und an diesem Punkt scheinen die Auswahlmöglichkeiten richtig zu sein. Hier ist meine Lösung:

Am Server:

  • Ubuntu-Server + Apache-Webserver + Apache-Kater.
  • Postgresql + postgis als Datenbank.
  • Geoserver, (in meinem Fall verwende ich es nur für Raster).
  • Django Framework + Tastypie. Tastypie bedient alle Vektoren über die API und die Benutzer haben die Berechtigung "pro Objekt".
  • python-gsconfig zur Steuerung des Geoservers von Python aus.
  • Jasper-Berichte zum Generieren von PDFs.
  • pyjasper, um Jasper-Berichte von Python aus zu steuern.
  • Hochleistungsfähige geostatistische Bibliothek zur Interpolation.

Beim Kunden:

  • ExtJs 4 -> Das ist fantastisch, ExtJs funktionieren sehr gut mit Tastypie und Sie haben viele Dinge, die sofort funktionieren, wie Fenster und Tische. Ich habe angefangen, es in reinem Code zu verwenden, aber ich verwende nicht Sencha Architect 2, was sehr hilfreich ist.
  • OpenLayers -> Mit zwei Methoden, die in einen extjs-Speicher und in eine OpenLayer-Ebene eingefügt wurden, aktualisieren Sie sich gegenseitig bei Datenänderungen.

Ich werde auf jeden Fall die Tastypie-Option untersuchen, sieht vielversprechend aus. Sehr hilfreich!
Jeremy am

4

Ist es überhaupt möglich, dass registrierte Site-Benutzer nur ihre eigenen Funktionen bearbeiten?

Es scheint, dass dies mit Cartaro möglich ist. Es basiert auf Drupal (ich weiß, Sie sagten nichts einschränkendes wie Drupal, aber hören Sie mich an!) Und ermöglicht es Benutzern, unter anderem nur ihre eigenen Funktionen zu bearbeiten. Hier ist ein Screenshot von der Personenseite, wenn Sie als Administrator angemeldet sind, der die Arten von Berechtigungen zeigt, die für Benutzer festgelegt werden können:

Cartaro-Berechtigungen

Cartaro kann auch auf PostGIS, GeoServer und OpenLayers ausgeführt werden, sodass möglicherweise alles vorhanden ist, was Sie suchen.

Was ist die beste Benutzeroberfläche auf oberster Ebene für eine Site wie diese?

Ich weiß nicht, was die "beste" oberste Ebene ist, aber es sieht so aus, als ob Cartaro das liefern könnte, wonach Sie suchen, da Drupal viele UI-Optionen hat. Es sieht so aus, als ob Cartaro sich noch in einem frühen Entwicklungsstadium befindet (ich persönlich kenne niemanden, der es nutzt), aber es hat Potenzial.


1
Ich schätze die Info, ich wusste nicht, dass Cartaro diese Fähigkeit hat. Im Moment werde ich mich an das Grundmodell halten (zumindest aus Forschungs- / Lernperspektive), aber ich werde vielleicht etwas tiefer in dieses CMS schauen. Ich habe es vor ein paar Monaten ungefähr eine Stunde in Anspruch genommen und war anfangs weniger beeindruckt, aber um ehrlich zu sein, habe ich es zu dieser Zeit nicht viel riskiert.
Jeremy

3

Ich werde Frage 2 ansprechen. Auf diese Weise komme ich um das Problem herum, dass Benutzer ihre eigenen Datensätze bearbeiten können.

Ich erstelle meine eigenen Webservices RESTFUL oder SOAP (nach Ihrer Wahl), UpdateUserRecord(string WKTLocation, string otherArg)die in den Authentifizierungsmechanismus Ihrer Website eingebunden sind .

OpenLayers und PostGIS lesen und schreiben sowohl WKT (Well-Known-Text) als auch GML und andere Standardformate, aber ich persönlich benutze WKT, um Geometrieinformationen von meiner Anwendung über den Webservice in die PostGIS-DB zurückzugeben und zu formen.

Auch meine Webmethoden wie UpdateUserRecordkönnen nur von einem authentifizierten Sitzungsbenutzer aufgerufen werden. A 401 Unauthorizedwird zurückgegeben, wenn ein anderer Benutzer versucht, diesen Webdienst aufzurufen. In meinem Fall verwende ich .NET und FormsAuthentication mit der Option zur Authentifizierung mit OpenAuth2 (Google, Facebook, Twitter usw.). Dies kann auch in PHP, Java usw. erfolgen.

So können Sie Webmethoden erstellen, die die PostGIS-Datenbank direkt aufrufen und Datensätze nach Belieben aktualisieren oder einfügen. Und so habe ich es gemacht.

Dann verwendete ich GeoServer für das WFS, die WMS-Abfragefähigkeiten und die einfache Anzeige der Informationen auf der Karte, auf der ich eine Benutzer-ID angeben würde, wenn die Abfrage dies forderte.

Hoffe das hilft.


Dies hat sehr geholfen, neben mehreren Ansätzen auf den gleichen Grundprinzipien. Ich habe ein bisschen mehr Selbstvertrauen, dass ich dies mit dem richtigen Lernfokus erreichen kann. Danke auch!
Jeremy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.