Mehr

QGIS-Plugin: Verbinden Sie sich mit Polygonselect Maptool-Signalen


Ich arbeite an einem neuen Plugin Ich versuche, eine benutzerdefinierte Funktion mit dem Maus-Rechtsklick-Signal zu verbinden, während ich das Polygonauswahl-Kartentool verwende.

Ich habe das Maptool aktiviert durch:

def run(self): self.iface.actionSelectPolygon().trigger()

Und möchte nun meine selectSite-Funktion mit einem canvasReleaseEvent oder ähnlichen Signal verbinden. Aus einem interessanten Tutorial hier habe ich den Code angepasst und die folgende Zeile ausprobiert, die fehlgeschlagen ist:

def run(self): self.iface.actionSelectPolygon().trigger() result = QObject.connect(self.canvas.mapTool(), SIGNAL("canvasReleaseEvent()"), self.selectSite) def selectSite(self): QMessageBox.information( self.iface.mainWindow(),"Info", "in selectSite-Funktion" )

Gibt es einen anderen Weg, um ein allgemeineres Qt-Mausklicksignal anzuschließen?

Irgendwelche Ideen oder Hinweise, wie ich mein Ziel erreichen kann?


ArcGIS

Ich hatte im letzten Beitrag den Wechsel zu Spatialite für die Intro to QGIS-Klasse erwähnt. Ich hatte vor ein paar Nächten viel zu fahren, also habe ich angefangen, mehr davon zu skizzieren. Der zweite Gedanke war, dass ich dieselben Daten verwenden würde, die ich für die QGIS-Klasse verwende. Was mich tatsächlich mit einem Haufen Daten hinterlässt, mit denen ich in letzter Zeit gespielt habe, was zufälligerweise meine erste war: ICH HABE BEREITS EINIGE DATEN HERUNTERGELADEN, DIE ICH NICHT IN DER KLASSE VERWENDEN WERDE.

– Ich werde also eine Reihe von Blog-Posts zu Spatialite, QGIS und allgemeinen Dingen schreiben, während ich mich durch diese Idee eines Kurses / Tutorials wühle.

Um das Spielfeld so eben wie möglich zu beginnen:

  • Shapefiles: Sie werden mindestens drei Dateien haben, die .shp .shx und .dbf sind. Da dieses Format bis in die frühen 90er Jahre zurückreicht (soweit ich das beurteilen konnte, hat mich die schnelle Wikipedia-Suche auf diesen Weg geführt), verwendet es dbf zum Speichern von Daten. Sie sind also auf 10 Zeichen für Felder beschränkt und haben auch ein Limit von 2 GB. Sie finden sie überall und fast alles liest sie. Wenn Sie sagen würden “Ich brauche ein Dateiformat, das alles lesen/schreiben kann” – nun – Sie haben es.
  • Spatialite: SQLite ist eine Dateidatenbank. Spatialite erweitert den Kern von SQLite, um Geometrie zu speichern. Sie haben eine Datei. Normalerweise hat diese eine Datei eine .sqlite- oder manchmal eine .db-Erweiterung. Es ist neu (ish) mit einem Aussehen von 2008. Es ist eines der Dinge, die seit langem gesagt wurden, “ dies wird das Shapefile töten, und das ist nicht der Fall. Vor allem, weil ESRI sie lesen und bearbeiten wird, ist eine ganz andere Geschichte. Das Wichtigste, was Sie beachten müssen, ist das neueste neue Kind auf dem Block heißt Geopackage und basiert auf Spatialite. Mit Geopackage soll alles in einem gemeinsamen Format lesen und schreiben können. Mit Spatialite gibt es kein großes Dateilimit, – also Sie können die 2 GB-Marke weit überschreiten und sich keine Sorgen machen.

Chattanooga hat eine Open-Data-Site. Auf der Open-Data-Site haben wir einige veröffentlichte Kriminalitätsdaten, die zeigen, dass die Leute wirklich netter zueinander sein müssen. Ich habe es gepackt. Exportierte es im CSV-Format und brachte es von dort zu QGIS.

Ich habe es in QGIS geöffnet (mit dem Werkzeug zum Hinzufügen von getrennten Textebenen), um es später und 155240 Funktionen anzusehen:

Schöne lange Spaltennamen und es enthält viele Informationen. Ich werde es in Shapefile ablegen:

….und Spaltenkürzung, aber die Dateigröße ist auf etwa 4,5 MB gesunken und die Anzeigezeit ist gut. Die Aktualisierung dauert etwa 2 bis 3 Sekunden. Ich möchte wirklich, dass meine Daten intakt bleiben, obwohl – Ich mag es nicht, dass sich meine CodeDescription-Spalte in CodeDescri umbenannt hat.

Mit QGIS werde ich meine CSV-Datei als Spatialite speichern. Um Daten in QGIS zu konvertieren/projizieren, klicken Sie mit der rechten Maustaste darauf und gehen Sie zu “Speichern unter…”:

Die Konvertierung selbst ist also nicht rasend schnell. Ich habe es nicht gemessen, aber es waren fast 40 Sekunden und das ist gerade lang genug, um Sie zu beunruhigen. Die Spatialite-Datenbank checkt mit 53 MB ein. Etwas mehr als das Doppelte der ursprünglichen CSV-Datei, aber nicht schrecklich. Ich habe die Spaltennamen beibehalten.

OK Randy ’ Sie haben eine CSV-Datei genommen und in QGIS geworfen und dann in etwas geworfen und ich kann sie in ArcGIS nicht lesen.

Der einzige Screenshot der Daten, den Sie erhalten, stammt von ArcMap (Arcview 10.3.1). Hinweis – Sie können es nicht bearbeiten, aber Sie können es lesen (viel besser als meine letzte Prüfung mit 10.2.2)

Was kommt als nächstes? Was ist so toll daran, Ihre Daten aus Shapefiles in Spatialite zu übertragen? WARUM?

Diese und weitere Antworten folgen in Teil II.