[FOSSGIS-Talk] QGIS : Wie Kreise zeichnen, Radius ändern und verschieben ?

bmarcus at giswana.de bmarcus at giswana.de
Di Aug 9 16:45:21 CEST 2022


Interessant wie viele Plug-Ins für das angefragte, recht einfache
Unterfangen auszuprobieren sind, obwohl QGIS von Haus aus die gewünschte
Funktionalität mitbringt. 

Man nehme einen beliebigen Polygon-Layer, wählt ein Objekt aus und ruft den
Feldrechner auf. "Nur das selektierte Objekt aktualisieren" sowie
"existierendes Feld aktualisieren" aktivieren, <geometry> als Feld auswählen
und folgendes, mit den entsprechenden Koordinaten sowie des gewünschten
Radius in den Ausdruckseditor eingeben:  

[ '--' kommentiert das Geschriebene ]

buffer(						-- erzeuge Puffer
	make_point(325500.0, 5890000.5)	-- setze einen Punkt am
Koordinatenpaar 325500.0, 5890000.5 (Punktnotation für Dezimal beachten!)
	, 250					-- Pufferweite
	, segments:= 50 			-- Kreis mit 50 Segmenten
pro Viertelkreis erzeugen (QGIS-Standart: 8)
)

Nach Bestätigung mit OK liegt gewähltes Polygon mit Zentrum 325500.0,
5890000.5 als Kreis mit 500'er Durchmesser im eingestellten
Koordinatensystem vor.

Um nicht immer erst ein Polygon erzeugen zu müssen, welches nachträglich in
einen Kreis überführt werden will, bietet sich ein reiner SQL-Ansatz im
DB-Manager an. Hierfür muss jedoch ein datenbankbasiertes Datenformat
vorliegen, was bei Nutzung von QGIS selbstverständlich sein sollte, da als
Standartformat Geopackage zum Einsatz kommt.

DB-Manager aufrufen, Datenbankverbindung herstellen und den SQL-Editor
aufrufen. Für das Erzeugen eines neuen Kreises folgendes eintippern: 

-- kreis erstellen
insert into polygon(geom)		-- füge in die Tabelle "polygon",
aka Layer, in die Spalte "geom" Nachfolgendes ein:	
select  buffer(				-- selektiere einen Puffer
		makepoint(		-- setze einen Punkt (man beachte
die unterschiedliche Syntax zum Feldrechner)
			325500.0	-- x_koord
			, 5890000.5	-- y_koord
			, 50		-- Anzahl Viertelkreis-Segmente
(SpatiaLite-Standart: 30)
		)
	, 500 				-- Radius Puffer
	) 
;

Auch OHNE Aktivierung des Editiermodus erhält man einen neuen Kreis mit
gesetztem Zentrum und Radius.

Zum nachträglichen Ändern von Position und/oder Radius wird UPDATE genutzt
(ebenfalls ohne aktiviertem Editiermodus ausführbar):

-- kreis aktualisieren
update polygon				-- aktualisiere "polygon"
set geom = buffer(			-- ändere "geom" = [...]
		makepoint(
			324567.25	-- neue x_koord
			, 5892345	-- neue y_koord
		)
	, 1234				-- neuer Radius 
	) 
-- Restriktion (falls nicht angegeben werden alle Objekte geändert)
where fid = 2				-- nur Kreis 2 aktualisieren
;

Nach Einfügen oder Ändern mittels SQL ist die Ansicht zu aktualisieren,
damit die Änderungen in der Kartenansicht sichtbar werden.

Abschließend kann ich jedem/r engagierten GIS-Nutzer/in nur an Herz legen: 
	
	Lern SQL !!! 
	Inkl. der S(patial)T(able) Befehle der SpatiaLite-Erweiterung für
SQLite, auf die auch QGIS aufbaut. 
	(URL: http://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html)  

Das macht das GIS-Leben in vielerlei Hinsicht einfacher und erspart das
lästige Ausprobieren von Plug-Ins, die dann doch nicht genau das erfüllen,
was erwartet wird.

Grüße

Bernd 







Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste