――Depuis que je viens de commencer à étudier les SIG (QGIS), il y a beaucoup de doutes sur ma compréhension.
--Sélectionnez "Python Console" dans "Plugins" dans la barre de menu QGIS.
test.py
import platform
print(platform.python_version())
2.7.5
――Il semble être Python de la série 2.xtest.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')
--Premier argument: chemin du fichier
.
providerKey`--Sélectionnez le calque à l'avance avec une souris ou autre.
test.py
layer=iface.activeLayer()
print('\n'.join(dir(layer)))
dir (xxx)
geometryType()
、getFeatures()
――Il semble que les points (points), les lignes (polylignes, lignes) et les polygones (faces) ne peuvent pas être mélangés dans la couche vectorielle de QGIS?.
--Les points, les lignes et les polygones sont appelés collectivement géométrie.
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')
En supposant que l'entité a une colonne d'attribut appelée «id».
Supposons qu'une fonction soit sélectionnée une ou plusieurs fois.
test.py
layer=iface.activeLayer()
features = layer.selectedFeatures()
for feature in features:
print(feature['id'])
--Utilisez layer.getFeatures ()
si vous voulez cibler toutes les entités sur la couche active, avec ou sans sélection.
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'Il n'y a pas de couche active.')
if layer.geometryType() != QGis.Polygon:
print(u'Le type de géométrie du calque actif n'est pas un polygone.')
print(u'Couche active{0}Exécute le processus pour.'.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('')
--Le sommet
ci-dessus est une instance de class'qgis._core.QgsPoint'
--Obtenir la boîte englobante pour toutes les entités de la couche
--La boîte englobante est la classe QgsRectangle
test.py
# -*- coding: utf-8 -*-
layer=iface.activeLayer()
if layer is None :
print(u'Il n'y a pas de couche active.')
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