――Da ich gerade angefangen habe, GIS (QGIS) zu studieren, gibt es viele Zweifel an meinem Verständnis.
--Wählen Sie "Python Console" aus "Plugins" in der QGIS-Menüleiste. --Wählen Sie die Editoranzeige über das Python-Konsolensymbol
test.py
import platform
print(platform.python_version())
2.7.5
――Es scheint Python der 2.x-Serie zu seintest.py
import os
print(os.getcwd())
C: \ PROGRA ~ 1 \ QGIS2 ~ 1.18 \ bin
C:\Program Files\QGIS 2.18\bin
test.py
filePath='C:/Users/xxxx/Documents/GIS DataBase/PyTest/lay01.shp'
iface.addVectorLayer(filePath,'test','ogr')
providerKey
--Wählen Sie die Ebene im Voraus mit einer Maus oder ähnlichem.
test.py
layer=iface.activeLayer()
print('\n'.join(dir(layer)))
geometryType()
、getFeatures()
――Es scheint, dass Punkte (Punkte), Linien (Polylinien, Linien) und Polygone (Flächen) nicht in der Vektorebene von QGIS gemischt werden können.
--Punkte, Linien und Polygone werden gemeinsam als Geometrie bezeichnet.
test.py
layer=iface.activeLayer()
type = layer.geometryType()
if type == QGis.Point :
print('Point')
elif type == QGis.Line :
print('Line')
elif type == QGis.Polygon:
print('Polygon')
Angenommen, das Feature verfügt über eine Attributspalte mit dem Namen "id".
Angenommen, eine Funktion wird einzeln oder mehrmals ausgewählt.
test.py
layer=iface.activeLayer()
features = layer.selectedFeatures()
for feature in features:
print(feature['id'])
--Verwenden Sie "layer.getFeatures ()", wenn Sie alle Features auf dem aktiven Layer mit oder ohne Auswahl als Ziel festlegen möchten.
test.py
layer=iface.activeLayer()
features = layer.getFeatures()
for feature in features:
print(feature['id'])
test.py
# -*- coding: utf-8 -*-
layer=iface.activeLayer()
if layer is None :
print(u'Es gibt keine aktive Ebene.')
if layer.geometryType() != QGis.Polygon:
print(u'Der Geometrietyp der aktiven Ebene ist kein Polygon.')
print(u'Aktive Schicht{0}Führt den Prozess für aus.'.format(layer.name()))
print('')
for feature in layer.getFeatures():
print(u'ID={0}'.format(feature['id']))
if feature.geometry().isMultipart():
polygons = feature.geometry().asMultiPolygon()
else:
polygons = [ feature.geometry().asPolygon() ]
for polygon in polygons:
for vertices in polygon:
for vertex in vertices:
print('X={0:.9f} Y={1:.9f}'.format(vertex.x(),vertex.y()))
print('')
test.py
# -*- coding: utf-8 -*-
layer=iface.activeLayer()
if layer is None :
print(u'Es gibt keine aktive Ebene.')
box = layer.extent()
print('xMinimum={0:.9f}'.format(box.xMinimum()))
print('xMaximum={0:.9f}'.format(box.xMaximum()))
print('yMinimum={0:.9f}'.format(box.yMinimum()))
print('yMaximum={0:.9f}'.format(box.yMaximum()))
print('width={0:.9f}'.format(box.width()))
print('height={0:.9f}'.format(box.height()))
Recommended Posts