Szelekció és vetületváltás

Folytassuk az előző fejezetben megkezdett munkát. Hozzunk létre egy szelekciót a református templomokról. Csupán a szemléletesség kedvéért először adjuk hozzá a réteget a palettához:

path="d:/geodata/"    
filename = "place_of_worship"    
layer = QgsVectorLayer(path + filename + ".shp", filename, "ogr")   
QgsProject.instance().addMapLayer(layer)

Adjuk meg a szelektáló kifejezést (attribútum szelekció):

expr = QgsExpression( "denominati='reformed'" )

Karakterlánc a karakterláncban esetben használjunk eltérő jelöléseket: “, ‘

Futassuk a lekérdezést, az eredmény a már korábban megismert qgis iterator objektum:

iter = layer.getFeatures(QgsFeatureRequest(expr))

Mentsük a szelektált elemek azonosítóit egy listába, nézzük meg hány elem van benne:

ids = [feature.id() for feature in iter]    
print(len(ids))

Jelöljük a szelektált elemeket a térképen:

layer.selectByIds(ids)

QGIS 2.x:

layer.setSelectedFeatures( ids )

1. ábra: A szelektált református templomok.
1. ábra: A szelektált református templomok.

Az új réteget már mentsük a hazai vetületbe, az EOV-be (kódja 23700). A 2-es az EPSG listára vonatkozik:

new_crs = QgsCoordinateReferenceSystem(23700, 2)`

Mentsük a szelekciót egy új rétegbe:

filename2 = 'reformed'    
QgsVectorFileWriter.writeAsVectorFormat( layer, 'D:/geodata/' + filename2 + ".shp", "system", new_crs, "ESRI Shapefile", 1)

A paraméterek közt az elérési út, a kódolás, a vonatkozási rendszer, a formátum és a végül a mentés módja található. Ez útóbbinál az 1-es a szelektált elemek mentését jelenti.

Adjuk hozzá az újonnan készített rétegünket a projekthez:

layer2 = QgsVectorLayer(path + filename2 + ".shp", filename2, "ogr")  
QgsProject.instance().addMapLayer(layer2)

© Dr. Wirth Ervin