Mehr

So konfigurieren Sie verfügbare Feature-Typen in GeoServer mit Python gsconfig

So konfigurieren Sie verfügbare Feature-Typen in GeoServer mit Python gsconfig


Wie konfiguriere ich verfügbare Feature-Typen in GeoServer mit Python gsconfig? Ich habe mit gsconfig einen Arbeitsbereich und einen Datenspeicher erstellt. Wie kann ich nun verfügbare Layer in einem vorhandenen Datenspeicher konfigurieren (anderer Datenspeicher als Postgis-Tabelle, Datenspeicher wie Verzeichnis von Shape-Dateien)?

Ich habe es versucht: wie folgt

from geoserver.layer import Layer from geoserver.resource import FeatureType, Coverage from geoserver.store import coverstore_from_index, datastore_from_index,  wmsstore_from_index, UnsavedDataStore,  UnsavedCoverageStore, UnsavedWmsStore from geoserver.style import Style from geoserver.support import Prepare_upload_bundle,_decode_url_bundle, from geoserver.layergroup import LayerGroup, UnsavedLayerGroup from geoserver.workspace import workspace_from_index, Workspace def publish_featuretype(self, name, store, native_crs, srs=None):"Publish a featuretype from data in a existing store"# @todo native_srs tut es nicht scheinen erkannt zu werden, selbst wenn in der DB # Metadaten (zumindest für Postgis in Geometrie_Spalten) und dann # eine falsch konfigurierte Ebene vorhanden ist, wenn native_crs None ist: raise ValueError("muss native_crs angeben") srs = srs or native_crs feature_type = FeatureType(self, store.workspace, store, name) # da name die in FeatureType-Basisklasse ist, umgehen Sie das # und hacken Sie diese anderen ein, die keine XML-Eigenschaften haben feature_type.dirty['name'] = name feature_type.dirty['srs'] = srs feature_type.dirty['nativeCRS'] = native_crs feature_type.enabled = True feature_type.title = name headers = { "Content-type": "application/xml", "Accept": "application/xml" } headers, response = self.http.request(store.resource_url, "POST", feature_type.message() , Header) feature_type.fetch() return feature_type publish_featuretype("self" name="Layername", store="store_name", native_crs="4326", srs="EPSG:4326")

Ich habe den Fehler wie folgt bekommen

AttributeError: 'str'-Objekte haben kein Attribut 'workspace'

Code entnommen aus: http://pydoc.net/Python/GeobricksGeoserverManager/0.1.0/geobricks_geoserver_manager.core.geoserver_manager_core/


Sie sagen, dass Sie Code von dieser Site erhalten, aber Sie erstellen neuen Code mit Fehlern darin.

Die Fehlermeldung, die Sie hier erhalten, ist 'AttributeError: 'str' objetcs hat kein Attribut 'workspace'

Dies liegt daran, dass Sie ein Argument an die von Ihnen erstellte Methode übergeben:

publish_featuretype("self" name="Layername", store="store_name", native_crs="4326", srs="EPSG:4326")

Hier haben Sie 'store-"store_name"' übergeben, was die Store-Variable als String zuweist.

Dann machen Sie in der Methode Folgendes:

feature_type = FeatureType(self, store.workspace, store, name)

wo Sie versuchen, auf das Attribut 'workspace' des 'string'-Objekts zuzugreifen. Und wie die Fehlermeldung sagt, hat das String-Objekt kein Attribut namens 'Workspace'.


Tkinter — Python-Schnittstelle zu Tcl/Tk¶

Das tkinter-Paket („Tk-Schnittstelle“) ist die Standard-Python-Schnittstelle zum Tk-GUI-Toolkit. Sowohl Tk als auch tkinter sind auf den meisten Unix-Plattformen sowie auf Windows-Systemen verfügbar. (Tk selbst ist nicht Teil von Python, sondern wird in ActiveState verwaltet.)

Wenn Sie python -m tkinter über die Befehlszeile ausführen, sollte ein Fenster geöffnet werden, das eine einfache Tk-Schnittstelle demonstriert, Sie darüber informiert, dass tkinter ordnungsgemäß auf Ihrem System installiert ist und welche Version von Tcl/Tk installiert ist, damit Sie die Tcl/ lesen können. Tk-Dokumentation speziell für diese Version.

Das Python Tkinter Topic Guide bietet viele Informationen zur Verwendung von Tk von Python und Links zu anderen Informationsquellen über Tk.

Umfangreiches Tutorial plus freundlichere Widget-Seiten für einige der Widgets.

Online-Referenzmaterial.

Online-Referenz für tkinter, unterstützt von effbot.org.

Buch von Mark Lutz, hat eine ausgezeichnete Berichterstattung über Tkinter.

Buch von Mark Roseman über das Erstellen attraktiver und moderner grafischer Benutzeroberflächen mit Python und Tkinter.

Buch von John Grayson (ISBN 1-884777-81-3).

Die meisten Befehle sind als tkinter- oder tkinter.ttk-Klassen verfügbar. Ändern Sie ‚8.6‘ so, dass es der Version Ihrer Tcl/Tk-Installation entspricht.

Aktuelle Tcl/Tk-Handbücher auf www.tcl.tk.

Die Entwicklung von Tk/Tcl findet größtenteils bei ActiveState statt.

Buch von John Ousterhout, dem Erfinder von Tcl.

Das enzyklopädische Buch von Brent Welch.


7.5 Technisches Werkzeug: GeoNode

Es gibt ein sehr nützliches Schulungshandbuch für GIS-Datenmanager, das sich mit GeoNode, der Einrichtung und der Verknüpfung mit Q-GIS befasst. Dies sind Schulungsmaterialien für einen Fortbildungskurs zum Geodatenmanagement, der 2013 von OpDRI, GFDRR, dem AKP-EU-Programm zur Reduzierung des Naturkatastrophenrisikos und der University of the West Indies organisiert wurde. Ansprechpartner bei der Weltbank sind: Bradley Lyon ( Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. ) und Bishwa Pandey ( Diese E-Mail-Adresse ist vor Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. ) und bei UWI Earl Edwards ( Diese E-Mail-Adresse ist vor Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. ).

Unten finden Sie eine weitere nützliche Reihe von Hintergrunddokumenten zu GeoNode, die von Ramesh Da Silva vom AIT Geoinformatics Center entwickelt wurden. Klicken Sie hier, um das Handbuch herunterzuladen:

Um Daten zwischen dem CHARIM GeoNode und den National GeoNodes zu ändern, gibt es auch ein nützliches Trainingshandbuch:

Das WFP hat einen nützlichen und praktischen Leitfaden zur Verwendung von GeoNOde

Einführung

GeoNode ist ein Geospatial Content Management System, eine Plattform zur Verwaltung und Veröffentlichung von Geodaten. Es vereint ausgereifte und stabile Open-Source-Softwareprojekte unter einer einheitlichen und benutzerfreundlichen Oberfläche, die es nicht spezialisierten Benutzern ermöglicht, Daten auszutauschen und interaktive Karten zu erstellen.

In GeoNode integrierte Datenverwaltungstools ermöglichen die integrierte Erstellung von Daten, Metadaten und Kartenvisualisierungen. Jeder Datensatz im System kann öffentlich geteilt oder eingeschränkt werden, um nur bestimmten Benutzern den Zugriff zu ermöglichen. Funktionen wie Benutzerprofile, Kommentare, Bewertungen usw. fördern die Entwicklung von Communities rund um die Plattform, um die Nutzung, Verwaltung und Qualitätskontrolle der Daten zu erleichtern.

Es ist auch als flexible Plattform konzipiert, die Softwareentwickler erweitern, modifizieren oder integrieren können, um die Anforderungen in ihren eigenen Anwendungen zu erfüllen. Sobald die Daten hochgeladen sind, ermöglicht GeoNode dem Benutzer, sie geografisch oder anhand von Schlüsselwörtern zu suchen. Alle Layer werden zur Kartenanzeige automatisch in Web Mercator projiziert, sodass verschiedene gängige Basislayer wie Open Street Map-, Google Map- oder Bing Map-Layer verwendet werden können.

GeoNode enthält hilfreiche kartografische Werkzeuge zum grafischen Gestalten und Erstellen von Karten. Sobald die Datenschichten hochgeladen und gespeichert wurden, können sie zur Visualisierung überlagert oder eine PDF-Kopie zum Drucken erstellt werden. Kartografische Werkzeuge machen es jedem leicht, eine webbasierte Kartierung mit Funktionen zusammenzustellen, die traditionell in Desktop-GIS-Anwendungen zu finden sind.

Ziele

Geben Sie einen Überblick über GeoNode.

Beschreibung

GeoNode basiert auf den Standards des Open Geospatial Consortium (OGC), einer internationalen Organisation für freiwillige Konsensstandards, die 1994 gegründet wurde und raumbezogene Inhalte und Dienste, GIS-Datenverarbeitung und Datenaustausch abdeckt. Zu den wichtigsten Standards gehören:

Stellt georeferenzierte Kartenbilder über das Internet bereit.

Unterstützt die Änderung von Features über das Internet, einschließlich Raster- und Vektordaten.

Gibt einen Webdienst zum Bereitstellen mehrdimensionaler Abdeckungsdaten über das World Wide Web an.

Katalogdienste für das Web (CSW)

Ermöglicht Benutzern die Suche nach Geodaten basierend auf Metadaten.

Beschreibt, wie Sie eine Kartenansicht speichern, die aus vielen verschiedenen Layern von verschiedenen Webkartenservern besteht.

bietet Zugriff auf Ressourcen, insbesondere auf gerenderte kartografische Kacheln in festen Maßstäben.

Das Metadaten- und Katalogisierungssystem von GeoNode ermöglicht auch die Veröffentlichung von Metadaten in einer Vielzahl von Standards (ISO, FGDC, NASA DIF, Dublin Core). Die Katalogimplementierung "pycsw" ist OGC-kompatibel zertifiziert und eine Catalog Service for Web (CSW) Referenzimplementierung.

Systemarchitektur

Die Architektur basiert auf einer Reihe von Kernwerkzeugen und Bibliotheken, die die Bausteine ​​bereitstellen, auf denen die GeoNode-Anwendung aufbaut. In den folgenden Abschnitten wird jede dieser Komponenten erläutert.

Die Benutzeroberfläche einer GeoNode-Site basiert auf dem Django-Web-Framework, einem High-Level-Python-Webentwicklungs-Framework, das eine schnelle Entwicklung und ein sauberes Design ermöglicht. GeoNode enthält einige "Apps" (wiederverwendbare Django-Module), um die Entwicklung dieser Benutzeroberflächen zu unterstützen. Diese Apps verfügen zwar über angemessene Standardkonfigurationen, die an spezifische Anforderungen angepasst werden können. Die Apps bieten HTTP-Proxys für den Zugriff auf Daten von Remoteservern, um Einschränkungen zu überwinden, die durch die von Browsern verwendete Richtlinie zum gleichen Ursprung auferlegt werden. Dies hilft den GeoExt-Anwendungen in einer GeoNode-Site beim Zugriff auf verschiedene XML-Dokumente von OGC-kompatiblen Datendiensten.

GeoServer ist eine in Java geschriebene Open-Source-Software für Server, die OGC-konforme Dienste bereitstellt, die Daten aus vielen Geodatenquellen veröffentlichen. GeoServer wird als GIS-Kernkomponente in GeoNode verwendet, die die Layer rendert, Kartenkacheln aus den Layern erstellt, diese Layer in verschiedenen Formaten herunterlädt und die transaktionale Bearbeitung dieser Layer ermöglicht. GeoNode verwendet GeoServer auf folgende Weise:

    • GeoNode konfiguriert GeoServer über die REST-API
    • GeoNode ruft räumliche Informationen vom GeoServer ab und speichert sie im Cache. Dazu gehören relevante OGC-Service-Links, räumliche Metadaten und Attributinformationen
    • GeoNode kann vorhandene Layer erkennen, die in einem GeoServer über das WMS-Funktionsdokument veröffentlicht wurden
    • GeoServer delegiert Authentifizierung und Autorisierung an GeoNode
    • Auf GeoNode hochgeladene Daten werden zuerst in GeoNode verarbeitet und schließlich auf GeoServer veröffentlicht (oder in die Geodatenbank aufgenommen)

    GeoExplorer

    GeoExplorer ist eine auf dem GeoExt-Framework basierende Webanwendung zum Erstellen und Veröffentlichen von Webkarten mit OGC und anderen webbasierten GIS-Diensten. GeoExplorer wird innerhalb von GeoNode verwendet, um viele der GIS- und Kartografiefunktionen bereitzustellen, die ein Kernstück der Anwendung sind.

    PostgreSQL und PostGIS

    PostgreSQL ist ein SQL-unterstützender Nachfolger des Postgres DBMS, das bis 1993 an der University of Berkeley entwickelt wurde. Es ist ein kostenloses, quelloffenes, objektrelationales DBMS und bietet einige geometrische Datentypen sowie den R-Baum als räumlichen Index. Diese Implementierung erfüllt jedoch nicht die OGC-Spezifikation und die volle Funktionalität der räumlichen Datenbank wird durch die PostGIS-Erweiterung erreicht, die auf PostgreSQL aufbaut.

    GeoNode verwendet PostgreSQL und PostGIS zum Speichern und Verwalten von räumlichen Daten und Informationen. Alle Tabellen und Daten werden in einer GeoNode-Datenbank in PostgreSQL gespeichert, während GeoServer PostGIS verwendet, um räumliche Vektordaten für jeden Layer zu speichern und zu verwalten.

    pycsw ist ein in Python geschriebener OGC-Katalogservice für die Webserver-Implementierung (CSW). GeoNode verwendet pycsw, um eine OGC-konforme standardbasierte CSW-Metadaten- und Katalogkomponente von Geodateninfrastrukturen bereitzustellen, die gängige Geometadatenstandards wie Dublin Core, ISO 19115, FGDC und DIF unterstützt.

    Geospatiale Python-Bibliotheken

    GeoNode nutzt mehrere raumbezogene Python-Bibliotheken, einschließlich gsconfig und OWSLib. gsconfig wird verwendet, um mit der REST-Konfigurations-API von GeoServer zu kommunizieren, um GeoNode-Layer in GeoServer zu konfigurieren. OWSLib wird verwendet, um mit den OGC-Diensten von GeoServer zu kommunizieren und kann verwendet werden, um mit anderen OGC-Diensten zu kommunizieren.

    Django Pluggables

    GeoNode verwendet eine Reihe von Django-Plugins, die normalerweise als Pluggables bezeichnet werden. Jedes dieser Pluggables bietet einen bestimmten Satz von Funktionen innerhalb der Anwendung, von Dingen wie Registrierung und Profilen bis hin zu Interaktivität mit externen Sites. Da GeoNode auf Django basiert, kann GeoNode das große Ökosystem dieser Pluggables nutzen, und obwohl ein bestimmter Satz in GeoNode selbst enthalten ist, stehen viele weitere für Anwendungen zur Verfügung, die auf GeoNode basieren.

    jQuery ist eine funktionsreiche Javascript-Bibliothek, die in GeoNode verwendet wird, um eine interaktive und reaktionsschnelle Benutzeroberfläche als Teil der Anwendung bereitzustellen. GeoNode verwendet mehrere jQuery-Plugins, um bestimmte Funktionen bereitzustellen, und das GeoNode-Entwicklungsteam fügt der Benutzeroberfläche häufig neue Funktionen hinzu, indem es zusätzliche Plugins hinzufügt.

    Bootstrap ist ein Frontend-Framework für das Layout und das Styling der Seiten, aus denen die GeoNode-Anwendung besteht. Es wurde entwickelt, um sicherzustellen, dass die Seiten in allen Browsern gleich gerendert, aussehen und sich verhalten. GeoNode passt den Bootstrap-Standardstil an und es ist relativ einfach für Entwickler, ihre eigene GeoNode-basierte Site mit vorhandenen Bootstrap-Themes oder durch direktes Anpassen der Stile anzupassen.

    System Anforderungen

    Hardware und Software

    Im Folgenden sind die empfohlenen Mindestsystemanforderungen für die Bereitstellung eines GeoNode auf einem Server aufgeführt.

      • 6 GB RAM, inklusive Swap-Speicher.
      • 2,2 GHz-Prozessor. (Für mehrere gleichzeitige Styling-Renderings kann zusätzliche Rechenleistung erforderlich sein)
      • 1 GB Software-Festplattennutzung.
      • Zusätzlicher Speicherplatz für alle mit GeoNode gehosteten Daten und mit GeoWebCache zwischengespeicherte Kacheln (Für räumliche Daten, zwischengespeicherte Kacheln und für die Verwaltung nützlichen "Scratch Space" ist eine angemessene Basisgröße für GeoNode-Bereitstellungen 100 GB).
      • 64-Bit-Hardware empfohlen.

      Betriebssystem

      Der einfachste Weg, GeoNode zu installieren, ist die Verwendung von APT, dem Standard-Installationsverwaltungstool für Ubuntu und andere Debian-basierte Systeme.

      CentOS/RHEL und andere *nix-Distributionen

      Es wird empfohlen, die neueste Version herunterzuladen und die enthaltene install.sh und support/config.sh zu ändern. GeoNode wurde mit diesem Mechanismus in CentOS/RHEL installiert.

      Windows, OSX und andere

      Die empfohlene Installationsmethode auf diesen Plattformen ist die Verwendung einer Virtualisierungslösung wie Virtual Box. Installieren Sie Ubuntu Linux auf der virtuellen Maschine und installieren Sie dann GeoNode mit APT.

      Verwendungszweck

      Ein Beispielbild der GeoNode-Homepage (Abbildung 1) ist unten aufgeführt.

      Abbildung 1 - GeoNode-Startseite

      Um beliebige Datenlayer hochzuladen oder Karten zu erstellen, ist eine Anmeldung am GeoNode erforderlich. In diesem Fall muss der Systemadministrator eines bestimmten GeoNode ein Login für den Benutzer erstellen. Aber jeder kann alle öffentlich freigegebenen Datenschichten visualisieren, ohne sich beim GeoNode anzumelden.

      Laden Sie eine neue Datenschicht hoch

      Autorisierte Benutzer können sich beim GeoNode anmelden und Daten hochladen. Layer sind eine veröffentlichte Ressource, die eine räumliche Raster- oder Vektordatenquelle darstellt. Ebenen können auch mit Metadaten, Bewertungen und Kommentaren verknüpft werden.

      Wenn Sie auf den Link Ebenen klicken, gelangen Sie zum Menü Ebenen, in dem eine neue Untersymbolleiste angezeigt wird. Mit dieser Symbolleiste können Sie Ebenen durchsuchen und hochladen.

      Abbildung 3 – Layer auf GeoNode hochladen

      Es gibt zwei Möglichkeiten, Ihre Dateien hinzuzufügen. Sie können dies entweder per Drag & Drop tun oder sie durchsuchen. Beachten Sie, dass Sie einen vollständigen Satz von Dateien hochladen müssen, bestehend aus einer shp-, einer prj-, einer dbf- und einer shx-Datei. Wenn eine davon fehlt, warnt GeoNode Sie, bevor Sie sie hochladen.

      Ebenenberechtigungen

      Sobald eine Datenschicht auf GeoNode hochgeladen wurde, können Sie Berechtigungen festlegen, wie in der folgenden Abbildung gezeigt (Abbildung 4).

      Abbildung 4 – Ebenenberechtigung bearbeiten

      Layer-Metadaten

      Jeder Datenschicht können Metadaten hinzugefügt werden. Dies ist auch im Menü Ebene bearbeiten zu finden.

      Erstellen Sie eine neue Karte

      Die autorisierten Benutzer können Karten mit den vorhandenen Layern im GeoNode erstellen. Eine Karte kann aus einer oder mehreren Datenebenen und einer Basiskarte wie einer Google-Satellitenkarte bestehen.

      Eine Liste der verfügbaren Karten kann durch Klicken auf den Link Karten in der oberen Symbolleiste aufgerufen werden.

      Abbildung 7 – Liste der verfügbaren Karten

      Durch Klicken auf die Schaltfläche "Neue Karte erstellen" wird eine Kartenzusammenstellungsoberfläche angezeigt, wie in der folgenden Abbildung gezeigt (Abbildung 8).

      Abbildung 8 - GeoExplorer-Ansicht

      In dieser Benutzeroberfläche gibt es eine Symbolleiste, eine Layerliste und ein Kartenfenster. Das Kartenfenster enthält standardmäßig den MapQuest OpenStreetMap-Layer. Andere Ebenen können über das Symbol Datenebenen hinzufügen hinzugefügt werden, wie in Abbildung 9 gezeigt.

      Abbildung 9 – Hinzufügen von Ebenen zur Karte

      Jetzt ist es möglich, alle verfügbaren Layer zu sehen, die in der Karte verwendet werden sollen (Abbildung 10). Wählen Sie die Layer aus, die Sie auf der Karte anzeigen möchten. Klicken Sie auf Layer hinzufügen, um sie alle zur Karte hinzuzufügen. Sie können mehrere Ebenen auswählen, indem Sie während der Ebenenauswahl die STRG-Taste drücken. Nachdem Sie alle Ebenen hinzugefügt haben, klicken Sie auf "Fertig".

      Abbildung 10 – Verfügbare Ebenen

      Jetzt ist es möglich, alle ausgewählten Datenlayer auf der Karte zu visualisieren. Wählen Sie die am besten geeignete Basiskarte aus der Liste der Basiskarten und speichern Sie die Karte.


      So listen Sie die verfügbaren Seifenfabriktypen auf

      Die Kurzversion lautet: Ich versuche herauszufinden, ob es eine Möglichkeit gibt, alle verfügbaren Typen für Aufrufe von Client.factory.create() nach dem Laden einer WSDL aufzulisten.

      Ich habe einen Parameter von einem komplexen Typ, der ein Array eines anderen komplexen Typs enthält. Die Suds-Factory scheint nicht zu wissen, wie man den Typ erstellt, der in das Array gehört, daher weiß ich nicht, wie man das Array auffüllt. Wenn ich den Typnamen an factory.create() übergebe, erhalte ich suds.TypeNotFound. Ich hoffe, dass ich nur den Namen falsch verstehe und wenn ich die verfügbaren Typen auflisten kann, kann ich sie auswählen.


      So konfigurieren Sie verfügbare Feature-Typen in GeoServer mit Python gsconfig - Geographic Information Systems

      Die Entwicklungsumgebung ist Docker-Compose für Dienste innerhalb einer virtuellen Vagrant-Maschine.

      Wenn Sie DistrictBuilder schnell mit PA-Daten zum Laufen bringen möchten, können Sie es dann ausführen

      Andernfalls müssen Sie Ihre eigenen Shapefiles und die Datei config.xml bereitstellen. Legen Sie Ihr gezipptes Shapefile in ein Datenverzeichnis im Projektstammverzeichnis, legen Sie Ihre config.xml in django/publicmapping/config/ ab und führen Sie dann aus

      Eine detailliertere Anleitung zum Laden eigener Daten finden Sie weiter unten.

      Einrichtung der Entwicklungsumgebung

      Ihre Konfigurationsdatei enthält alles, was für Ihre Instanz von District Builder spezifisch ist. Als Teil des Setups werden einige der Werte in der Konfigurationsdatei in Umgebungsvariablen geparst, und andere werden verwendet, um den Setup-Skripten der Anwendung mitzuteilen, wo sie Daten finden und was damit zu tun ist.

      In groben Zügen die Konfigurationsdatei:

      • erzählt Django und anderen Diensten von Geheimnissen, die sie kennen müssen
      • teilt den Setup-Skripten mit, wo die Daten leben
      • teilt den Setup-Skripten mit, was die Daten enthalten, d. h. welche Felder in jedem geografischen Datensatz vorhanden sind
      • teilt den Setup-Skripten mit, wie Taschenrechnerfunktionen zum Bearbeiten dieser Felder erstellt werden

      Die einfache Interaktion mit der Konfigurationsdatei ist ein geplanter Bereich für die zukünftige Entwicklung.

      Bewerbung einrichten

      ./scripts/setup stellt die virtuelle Maschine bereit. Es öffnet eine virtuelle Ubuntu 14.04-Maschine mit installiertem Docker. vagrant ssh bringt Sie in die virtuelle Maschine, damit Sie Befehle ausführen können. Von dort aus erstellt das Ausführen von ./scripts/update Container. Der Rest der Einrichtung erfolgt entweder direkt oder indirekt über einen Einrichtungsverwaltungsbefehl. Um zu beginnen, führen Sie ./scripts/setup , gefolgt von vagrant ssh , gefolgt von ./scripts/update aus.

      Führen Sie dann ./scripts/configure_pa_data aus. Es ist nicht schnell. Derzeit dauert es mehrere Stunden, wobei die genaue Zeit von der Hardware abhängt. Wir arbeiten an Möglichkeiten, die Geschwindigkeit beim Laden von Daten zu verbessern.

      Das Skript wird mehrere Dinge tun

      • Gezippte Shapefile-Daten für Pennsylvania an einen bestimmten Ort holen
      • `district_builder** löschen und neu erstellen
      • Datenbankmigrationen ausführen: Erstellen Sie die Beziehungen, in die die Daten geladen werden
      • Laden von Shapes aus Shapefiles auf verschiedenen Ebenen: Erstellen Sie Datensätze für die Shapes und Merkmale in den konfigurierten Shapefiles
      • Verschachteln Sie die Formen auf verschiedenen Ebenen ineinander: Berechnen Sie die räumlichen Beziehungen zwischen Formen auf verschiedenen Zoomstufen
      • Laden Sie einige Vorlagenpläne: Initialisieren Sie die Datenbank mit mehreren Beispielplänen, mit denen Benutzer mit dem Zeichnen beginnen können
      • Datenbankansichten erstellen: Erstellen Sie die Datenbankobjekte, die GeoServer verwendet, um Kacheln bestimmter Themen zu erstellen
      • GeoServer konfigurieren: Erstellen Sie Layer und Stile, die als Kacheln für das Frontend bereitgestellt werden

      Wenn Sie wissen möchten, was in configure tatsächlich vor sich geht, sind dies die Setup-Flags, die das Skript ausführt:

      • -g0 -g1 -g2 : lädt die nullte bis zweite Geoebene. Diese Geolevel werden in der angegebenen Konfigurationsdatei konfiguriert. Dieser Schritt lädt Geografien und Attribute dieser Geografien in die Datenbank.
      • -n0 -n1 -n2 : Verschachtelung der nullten bis zweiten Geoebene. In diesem Schritt werden die räumlichen Beziehungen zwischen den Geografien in jeder Geoebene in der Datenbank festgelegt.
      • -t : Planvorlagen erstellen. Dadurch werden einige Beispielpläne in der Datenbank erstellt, die als Baselines für die Erstellung von Benutzerplänen verwendet werden. Wenn es keine Informationen finden kann, die es zum Erstellen einer Vorlage benötigt, überspringt es diese Vorlage nach dem Drucken einer Warnmeldung und schlägt nicht fehl.
      • --views : Datenbankansichten für Geografien und Attribute erstellen. In diesem Schritt wird für jedes Attribut für jede Geoebene eine Datenbankansicht erstellt. Diese Ansichten werden von GeoServer verwendet, um Kacheln zu erstellen.
      • -G : GeoServer konfigurieren. In diesem Schritt werden die Layer und Stile erstellt, die das Frontend schließlich von GeoServer in der Datenbank und im GeoServer-Container erhält. Dieser Schritt schlägt fehl, wenn Sie in config.xml keine gültige Datenbankverbindungskonfiguration für Ihre Umgebung haben. Die Beispiel-Datenbankverbindungsinformationen in config.xml sind:
      • -l : Sprachdateien generieren. Dieser Schritt stellt sicher, dass die für die Internationalisierung notwendigen Dateien im Django-Container vorhanden sind.

      DistrictBuilder übersetzt "auf die Django-Art" über Übersetzungsstrings. Die Übersetzungsstrings werden in Nachrichtendateien ( .po ) extrahiert, die in .mo-Dateien kompiliert werden, die Django dann verwenden kann. Sowohl die .po- als auch die .mo-Dateien können unter django/publicmapping/locale/<LC>/LC_MESSAGES/ gefunden werden, obwohl nur .po-Dateien der Quellcodeverwaltung übergeben werden.

      Es gibt zwei separate Prozesse zum Generieren von Übersetzungen, die beide erforderlich sind, damit übersetzter Text in der Web-App richtig angezeigt wird:

      1. Kompilieren Sie Übersetzungsstrings für Vorlagen und Javascript mit dem Setup-Befehl makelanguagefiles. Dies geschieht automatisch, wenn die Web-App über den Sprachencontainer ausgeführt wird.
      2. Kompilieren Sie Labels und Beschreibungen aus config.xml . Dies geschieht bei der Konfiguration, wenn ein Setup-Befehl ausgeführt wird (z. B. ./manage.py setup config/config.xml aus dem Django-Container).

      Übersetzungen hinzufügen und ändern

      DistrictBuilder verwendet eine Django-Anwendung namens Rosetta, um Übersetzungen durchzuführen.

      Um Übersetzungen in einer bestimmten Sprache durchzuführen, stellen Sie sicher, dass der Server läuft ( ./scripts/server ) und gehen Sie zu /admin, um sich als Admin anzumelden (der Admin-Benutzername und das Passwort sind in .env definiert). Gehen Sie nach der Anmeldung zu /rosetta . Sie sollten die verschiedenen verfügbaren Sprachen und die Pfade der Dateien sehen, die jeder Sprache entsprechen. Wenn Sie eine Übersetzung vornehmen und speichern, sollten Sie Ihre Änderungen in dieser Datei im Django-Container und auf der VM sehen. Wenn Sie den Server neu starten, werden Ihre Übersetzungen in DistrictBuilder sichtbar.

      Sobald Sie mit Ihren Änderungen zufrieden sind, besteht der nächste Schritt darin, sie aus der VM und auf den Host zu übertragen, damit sie in der Quellcodeverwaltung gespeichert werden können.

      Sie können den Befehl vagrant ssh-config verwenden, um die Host-, Port-, Benutzer- und Identitätsdatei zu finden – alle müssen Sie die Dateien kopieren – und dann ausführen:

      Sie können dann überprüfen, ob die Übersetzungen korrekt sind, und diese Dateien festschreiben.

      Weitere Informationen zu den Anwendungseinstellungen, Konfigurationsinformationen und Laufzeitinformationen finden Sie im PublicMapping/DistrictBuilder-Wiki.

      Fehlerberichte und Funktionsanfragen können an den PublicMapping/DistrictBuilder Issue Tracker gemeldet werden.

      Für die Entwicklung und den Beitrag zu diesem Repo wird empfohlen, pre-commit zu installieren und den yapf-Hook wie folgt einzurichten:

      Dies hilft beim Stil des Python-Codes, der zu District Builder beigetragen hat.

      • Docker v17+
      • Docker-Compose 1.21+
      • Git
      • PostgreSQL-Server 9.5
      • PostGIS 2.2

      Notiz: In dieser Anleitung wird davon ausgegangen, dass Sie bereits einen PostgreSQL-Server bereitgestellt und eine district_builder-Datenbank erstellt haben. Weitere Informationen zum Einrichten einer PostgreSQL-Instanz finden Sie in den Postgres-Dokumenten.

      Stellen Sie vor dem Start sicher, dass Sie alle oben genannten Anforderungen installiert haben. Sie müssen außerdem sicherstellen, dass die folgenden Dateien vorhanden sind:

      • /opt/district-builder/user-data/config.xml (siehe Abschnitt config.xml dieser README)
      • /opt/district-builder/user-data/config_settings.py (diese Datei kann leer sein, DistrictBuilder wird sie während der Einrichtung füllen)
      • /opt/district-builder/user-data/districtbuilder_data.zip
      • .env mit ausgefüllten Anwendungswerten (siehe .env.sample).

      Einrichtung der Produktionsumgebung

      Sobald diese Dateien vorhanden sind, klonen Sie dieses Repository und führen Sie Skripts/Updates aus, wie unter Einrichten Ihrer Anwendung beschrieben, verwenden Sie jedoch das Flag --production.


      Konfigurieren der RADIUS-Authentifizierung mit CLI

      Der Remote Authentication Dial-In User Service (RADIUS) ist ein verteiltes Client/Server-System, das Netzwerke vor unbefugtem Zugriff schützt. RADIUS-Clients laufen auf unterstützten Cisco-Geräten und senden Authentifizierungsanfragen an einen zentralen RADIUS-Server, der alle Benutzerauthentifizierungs- und Netzwerkdienstzugriffsinformationen enthält.

      Damit ein Cisco IOS XE SD-WAN-Gerät RADIUS-Server für die Benutzerauthentifizierung verwendet, konfigurieren Sie einen oder bis zu 8 Server:

      Für jeden RADIUS-Server müssen Sie mindestens seine IP-Adresse und ein Kennwort oder einen Schlüssel konfigurieren. Sie können den Schlüssel als Klartextzeichenfolge mit bis zu 31 Zeichen Länge oder als mit AES 128-Bit verschlüsselter Schlüssel angeben. Das lokale Gerät übergibt den Schlüssel an den RADIUS-Server. Das Kennwort muss mit dem auf dem Server verwendeten übereinstimmen. Um mehr als einen RADIUS-Server zu konfigurieren, fügen Sie die Server und geheimer Schlüssel Befehle für jeden Server.

      Die restlichen RADIUS-Konfigurationsparameter sind optional.

      Um die Priorität eines RADIUS-Servers festzulegen, um zwischen mehreren RADIUS-Servern auszuwählen oder einen Lastausgleich durchzuführen, legen Sie einen Prioritätswert für den Server fest. Die Priorität kann ein Wert von 0 bis 7 sein. Ein Server mit einer niedrigeren Prioritätsnummer erhält Priorität gegenüber einem Server mit einer höheren Nummer.

      Standardmäßig verwendet das Cisco IOS XE SD-WAN-Gerät Port 1812 für Authentifizierungsverbindungen zum RADIUS-Server und Port 1813 für Accounting-Verbindungen. Um diese Portnummern zu ändern, verwenden Sie die Auth-Port und Konto-Port Befehle.

      Wenn der RADIUS-Server über eine bestimmte Schnittstelle erreichbar ist, konfigurieren Sie diese Schnittstelle mit dem Quellschnittstelle Befehl.

      Sie können RADIUS-Server markieren, sodass ein oder mehrere bestimmte Server für die AAA-, IEEE 802.1X- und IEEE 802.11i-Authentifizierung und -Kontoführung verwendet werden können. Definieren Sie hier das Tag mit einer Zeichenfolge von 4 bis 16 Zeichen. Verknüpfen Sie dann das Tag mit dem Radius-Server -Befehl, wenn Sie AAA konfigurieren und wenn Sie Schnittstellen für 802.1X und 802.11i konfigurieren.

      Wenn sich der RADIUS-Server in einem anderen VPN als das Cisco IOS XE SD-WAN-Gerät befindet, konfigurieren Sie die VPN-Nummer des Servers, damit das Cisco IOS XE SD-WAN-Gerät ihn finden kann. Wenn Sie mehrere RADIUS-Server konfigurieren, müssen sich alle im selben VPN befinden.

      Beim Warten auf eine Antwort vom RADIUS-Server wartet ein Cisco IOS XE SD-WAN-Gerät 3 Sekunden, bevor es seine Anfrage erneut sendet. Um dieses Zeitintervall zu ändern, verwenden Sie die Auszeit Befehl, einen Wert von 1 bis 1000 Sekunden einstellen:


      Virtualenv installieren¶

      Wenn Sie Python 3.3 oder höher verwenden, ist das venv-Modul die bevorzugte Methode zum Erstellen und Verwalten virtueller Umgebungen. venv ist in der Python-Standardbibliothek enthalten und erfordert keine zusätzliche Installation. Wenn Sie venv verwenden, können Sie diesen Abschnitt überspringen.

      virtualenv wird verwendet, um Python-Pakete für verschiedene Projekte zu verwalten. Durch die Verwendung von virtualenv können Sie die globale Installation von Python-Paketen vermeiden, die Systemtools oder andere Projekte beschädigen könnten. Sie können virtualenv mit pip installieren.


      Überprüfen Sie, ob Sie die neue Vim-Binärdatei ausführen, indem Sie nachsehen

      Für Windows können Sie hier immer die neueste gepatchte Version von Vim 8.x herunterladen, die mit den neuesten externen Bibliotheken kompiliert wurde: Vim-Downloads

      Zum Zeitpunkt der Veröffentlichung der aktuellsten Versionen:

      Letztes zusammengestelltes Update: 2017-02-23

      Verwendete Bibliotheken: Perl 5.24.1, Python 2.7.12, Python 3.6.0, Racket 6.7, Ruby 2.4.0, Lua 5.3.3, Tcl 8.6.4 und libXpm

      Sie müssen auf Ihrem System eine Python-Version mit der gleichen Bitzahl (entweder 32-Bit oder 64-Bit) wie Ihr vim installieren. Python muss sich in Ihrem PATH befinden. Wenn Sie es ausführen können, indem Sie Python an einer Eingabeaufforderung eingeben, sollten Sie diesbezüglich gut sein. Schließlich muss vim kompiliert werden, um Python zu unterstützen, aber meiner Erfahrung nach sind es die meisten. Überprüfen Sie mit :version und suchen Sie nach python/dyn . Davor muss ein Plus stehen.

      Um den Python-Modus zu unterstützen, benötigen Sie +python UND +python3. Dies sollte Sie dorthin bringen (zumindest auf macOS):

      Da dies beim Aktivieren der Python3-Funktion fehlinterpretiert werden könnte, halte ich es für sinnvoll, diesen Link für eine Installation nach Ihren Bedürfnissen zu erwähnen

      Hier sind ausgezeichnete Anleitungen für: *nix & windows.

      Notiz: Achten Sie auf jedes Zeichen in der ./configure-Anweisung und lesen Sie es sorgfältig durch (als ob Sie es vermasseln würden), bevor Sie es tun. Und bis zum Ende lesen, es gibt keine Möglichkeit sich zu verirren

      Sie sollten dies wahrscheinlich zu ./configure hinzufügen:

      Vermeiden Sie es, sowohl Python 2 als auch 3 zu aktivieren

      Nimm dir Zeit Dies ist ein sehr, sehr gut erklärter Vorgang. Danke an Valloric


      Downloads

      Nachdem Sie eine Liste mit Asset-IDs erstellt haben, können Sie die Dateien auf Ihren lokalen Computer herunterladen. Die Funktion forest.download() erfordert einen Asset_id-String, sodass Sie die Suchergebnisse durchlaufen müssen, die oft als Listen zurückgegeben werden.

      So suchen und laden Sie alle Daten aus dem Landkreis Mendocino herunter.

      Dadurch wird beim Herunterladen jeder Datei die folgende Ausgabe generiert.

      Diese Funktion verwendet den Befehl fetch() unter der Haube, um eine URL abzurufen, wo die Datei im Google Cloud-Speicher gehostet wird. Anschließend führt es einen GET-Aufruf aus, um die Datei lokal herunterzuladen.

      Die Funktion lädt die Datei in Ihr aktuelles Arbeitsverzeichnis herunter, wenn Sie keinen Ausgabedateipfad angeben. Sie können mit forest.download(asset_id, path) einen benutzerdefinierten Ausgabepfad festlegen. Dies kann schwierig sein, wenn Sie mehrere Datensätze herunterladen, aber Sie können die Asset-ID analysieren, um nützliche Namen für Ausgabedateien zu generieren.

      Was die folgende Ausgabe erzeugt:


      Umgebungsvariablen

      Es gibt einige nützliche Umgebungsvariablen, um die von configure getroffenen Entscheidungen zu überschreiben oder um Bibliotheken und Programme mit nicht standardmäßigen Namen oder Speicherorten zu finden.

      CC Definieren Sie den C-Compilerbefehl, der für die Kompilierung verwendet werden soll. CFLAGS Setzen Sie C-Compiler-Flags, die Sie für die Kompilierung verwenden möchten. CPP Definieren Sie den zu verwendenden C-Präprozessorbefehl. CPPFLAGS C/C++-Präprozessor-Flags setzen, z.B. -I includeir, wenn Sie Header in einem nicht standardmäßigen Verzeichnis enthalten. LDFLAGS Linker-Flags setzen, z.B. -L libdir, wenn Sie Bibliotheken in einem nicht standardmäßigen Verzeichnis haben libdir .