Meine Organisation sammelt viele Umgebungsüberwachungsdaten (Stromfluss, Wasserchemie usw.), von denen die meisten derzeit in Excel gespeichert sind. Ich möchte alles in eine Datenbank einbinden - wahrscheinlich PostGIS -, aber ich möchte, dass die Daten für Personen zugänglich sind, die keine Kenntnisse der Grundlagen der Datenbasis haben (kein SQL oder ähnliches).
Ich hätte gerne ein einfaches Front-End für meine Datenbank, in dem der Benutzer eine interessierende Überwachungsstation, einen variablen Typ (z. B. die Nitratkonzentration des Stroms) und ein Zeitintervall auswählt. Die Datenbank würde dann die angeforderten Daten im CSV-Format zurückgeben, die der Benutzer auf seinen Computer herunterladen könnte. In einer idealen Welt würde das Front-End eine anklickbare Karte aller Überwachungsstationen anzeigen. Wenn dies jedoch einfacher ist, ist zunächst eine Dropdown-Liste der verfügbaren Sites ausreichend. Ich denke, dieses Front-End wäre wahrscheinlich eine Website, muss es aber nicht sein.
Wie schwierig ist das bitte und welche Möglichkeiten habe ich? Ich bin in keiner Weise ein Experte für Datenbanken, aber ich verfüge über solide Kenntnisse in Desktop GIS und schreibe gerne einfache Python-Skripte und spiele mit PostGIS-, SpatiaLite- und ESRI Personal-Geodatabases. Ich habe noch nie eine Webentwicklung oder ein Web-GIS durchgeführt, bin aber sehr lernbegierig.
Ich habe gestern einen Teil der hervorragenden OpenGeo-Tutorials durchgesehen . Dieser Ansatz sieht vielversprechend aus, und zumindest kann ich jetzt sehen, wie meine Daten auf einer Website angezeigt werden. Was für mich weniger offensichtlich ist, ist, wie der Benutzer die Datenbank abfragen und die Ergebnisse zurückerhalten kann.
Meine Frage: Welche Art von Softwarestruktur sollte ich mir für ein solches Projekt überlegen? z.B
PostGIS + GeoServer + Something else?
Welche anderen Optionen stehen mir zur Verfügung, nach denen ich suchen sollte?
Eine einfache, aber funktionale Lösung wäre zunächst vorzuziehen: Wenn ich einen grundlegenden Prototypen zusammenstellen kann, kann ich damit rechtfertigen, dass ich mehr Zeit damit verbringe, zu lernen, wie man Dinge „richtig“ macht. Open Source ist auch eine Voraussetzung, da ich kein Budget dafür habe, bis ich einige Vorteile nachweisen kann.
Vielen Dank!
quelle
Antworten:
Wenn Sie sich bereits mit Python und SQL auskennen, ist es nicht allzu schwierig, eine Website mit einem Python-Webframework zu erstellen. Zwei einfache - cherry.py und web.py - kommen in den Sinn. Ich denke, es ist mehr Arbeit, sich in Djangos objektrelationalem Mapper zurechtzufinden, als es wert ist.
Python verfügt über eine Bibliothek mit dem Namen psycopg2 (http://initd.org/psycopg/) und ein Tutorial ( http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ), mit dem Sie problemlos Abfragen für PostGRESQL / PostGIS ausführen können. Es gibt auch ein CSV-Modul (http://docs.python.org/library/csv.html), mit dem Sie Ihre CSV-Datei ganz einfach aus dieser Abfrage erstellen können.
Wie andere Leute bereits sagten, fügt das Erstellen einer Karte im Front-End eine Menge Komplexität hinzu. Sie benötigen OpenLayers, um die Karten anzuzeigen, und MapServer oder GeoServer, um Kartenbilder aus Ihrer Datenbank (oder anderen Datenquellen) zu erstellen. Das wäre wahrscheinlich besser als zweiter Schritt.
Momentan scheint "alles", was Sie brauchen, eine Webseite zu sein: ein Formular, mit dem Sie auswählen können, welche Abfrageparameter Sie benötigen. Wenn Sie auf "Submit" klicken, werden die Abfrageparameter an den Server gesendet (Apache ist eine gute Wahl). Anschließend wird Ihr Skript ausgeführt, das die Datenbank abfragt, eine entsprechende CSV-Datei erstellt und an den Browser zurückgegeben. Einfach so;)
quelle
GeoDjango
Es ist ziemlich einfach einzurichten und bietet einige grundlegende Funktionen. Es ist Python, also sind Sie zumindest mit der Sprache vertraut. Es kann für Ihre Bedürfnisse übertrieben sein. Wenn Sie die Site jedoch erweitern möchten, steht Ihnen ein ausgereiftes Framework zur Verfügung, auf dem Sie aufbauen können.
quelle
Wenn Sie keine Karte erstellen möchten / müssen. Alles was Sie brauchen ist ein Webserver und eine Programmiersprache (ich bevorzuge Apache, weil es einfach zu benutzen und einzurichten ist, aber es gibt andere Möglichkeiten) und dann Postgres mit PostGIS oder einer anderen Datenbank.
Wenn Ihre Excel-Dateien gut formatiert sind, sollte der Import der Daten in die Datenbank einfach sein. Sie können ein Skript schreiben, das die INSERT-Anweisungen generiert. Die von Ihnen beschriebenen Abfragen klingen so, als wären sie auch überschaubar.
Wenn Sie den Mapping-Teil machen möchten, wären Apache, GeoServer und OpenLayers eine einfache und kostenlose Lösung. Wie Sie wissen, kann GeoServer PostGIS für WMS oder andere Ausgabeformate problemlos verwenden. Sie müssen lediglich einen Speicher hinzufügen, der eine Verbindung zu PostGIS herstellt, und anschließend Layer aus den Tabellen in PostGIS hinzufügen.
Andere kostenlose Mapping-Tools, die Sie sich ansehen können, sind Mapserver und MapGuide. MapGuide Open Source macht einige ziemlich coole Sachen, aber es ist komplizierter und die Dokumentation ist ein wenig im Rückstand.
MySQL hat auch eine räumliche Erweiterung, aber nicht so viele räumliche Merkmale und Funktionen wie PostGIS.
Wenn Sie mit Python vertraut sind, würde ich GeoDjango anschauen ... Ich weiß nicht viel darüber persönlich, aber ich habe gute Dinge gehört
quelle
Eine Übersicht über das Design und die Entwicklung von Web-Mapping-Anwendungen sowie einen vollständig dokumentierten Quellcode für eine auf Google Maps und einer räumlich-zeitlichen Datenbank PostgreSQL / PostGIS basierende Web-Mapping-Anwendung finden Sie in meiner kürzlich erschienenen Diplomarbeit in Informatik: Entwurf und Entwicklung eines Prototyps für die Verwaltung, Analyse und Bereitstellung von raum-zeitlichen Umweltvektordaten mithilfe der Open Source-Technologie. Allgemeiner Rahmen und Fallstudie zum Grundwassermanagement in Küstengebieten. "
Die Dissertation kann heruntergeladen werden unter http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf
quelle