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.
Antworten:
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.
quelle
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:
Beim Kunden:
quelle
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 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.
quelle
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
UpdateUserRecord
können nur von einem authentifizierten Sitzungsbenutzer aufgerufen werden. A401 Unauthorized
wird 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.
quelle