QgsVectorLayer QGIS-ში¶
QgsVectorLayer არის PyQGIS-ის ერთ-ერთი ყველაზე მნიშვნელოვანი კლასი, რომელიც გამოიყენება ვექტორული მონაცემების ჩასატვირთად და სამართავად (მაგ. Shapefile, GeoPackage, PostGIS).
🔑 ძირითადი იდეა¶
QgsVectorLayer წარმოადგენს ვექტორულ შრეს (წერტილები, ხაზები, პოლიგონები), რომელსაც აქვს: - გეომეტრია (სპატიური მონაცემები) - ატრიბუტები (ცხრილური მონაცემები)
ეს ობიექტი გვაძლევს საშუალებას: - ჩავტვირთოთ არსებული ფაილი - შევქმნათ ახალი შრე - წავიკითხოთ/დავამატოთ/ჩავწეროთ ობიექტები - ვმართოთ სიმბოლიკა და შრის სტილი
▶️ QgsVectorLayer-ის შექმნა¶
# არსებულ ვექტორულ ფაილთან დაკავშირება
fn = r"C:/Users/Public/Documents/GIS/shapefile/lake.shp"
layer = QgsVectorLayer(fn, "Lake Layer", "ogr")
if not layer.isValid():
print("❌ შრის ჩატვირთვა ვერ მოხერხდა")
else:
print("✅ შრე წარმატებით ჩაიტვირთა")
📌 აქ:
- fn = ფაილის მისამართი
- "Lake Layer" = სახელი QGIS-ში
- "ogr" = data provider (Shapefile, GeoJSON, GeoPackage და სხვ.)
🛠 შრის ტიპები¶
QgsVectorLayer შეიძლება იყოს: - QgsWkbTypes.Point → წერტილები - QgsWkbTypes.LineString → ხაზები - QgsWkbTypes.Polygon → პოლიგონები
📋 ატრიბუტების წვდომა¶
for feature in layer.getFeatures():
geom = feature.geometry()
attrs = feature.attributes()
print("Geometry:", geom.asWkt())
print("Attributes:", attrs)
➕ ახალი ობიექტის დამატება¶
from qgis.PyQt.QtCore import QVariant
pr = layer.dataProvider()
# ახალი ატრიბუტების ველები
pr.addAttributes([QgsField("Name", QVariant.String),
QgsField("Value", QVariant.Double)])
layer.updateFields()
# ახალი ობიექტის შექმნა
feat = QgsFeature(layer.fields())
feat.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(357965.61, 4683353.56)))
feat.setAttributes(["Lake1", 123.45])
pr.addFeature(feat)
layer.updateExtents()
💾 ახალი ვექტორული ფაილის შექმნა¶
from qgis.core import QgsVectorFileWriter, QgsFields, QgsField, QgsWkbTypes, QgsCoordinateReferenceSystem
fn = r"C:/Users/Public/Documents/GIS/shapefile/new_layer.shp"
fields = QgsFields()
fields.append(QgsField("ID", QVariant.Int))
fields.append(QgsField("Name", QVariant.String))
writer = QgsVectorFileWriter(fn, "UTF-8", fields,
QgsWkbTypes.Point,
QgsCoordinateReferenceSystem("EPSG:32638"),
"ESRI Shapefile")
del writer
🔍 ფილტრაცია და Query¶
expr = QgsExpression("Value > 100")
it = layer.getFeatures(QgsFeatureRequest(expr))
for f in it:
print(f["Name"], f["Value"])
🎨 სიმბოლიკა და ვიზუალიზაცია¶
symbol = QgsSymbol.defaultSymbol(layer.geometryType())
symbol.setColor(QColor("blue"))
symbol.setSize(3)
layer.renderer().setSymbol(symbol)
layer.triggerRepaint()
📌 შეჯამება¶
- QgsVectorLayer არის ვექტორული მონაცემების ძირითადი ობიექტი PyQGIS-ში.
- შეგვიძლია:
- ჩავტვირთოთ შრე
- დავამატოთ ახალი ობიექტები
- ვმართოთ ატრიბუტები
- ჩავწეროთ ფაილად
- შევცვალოთ სიმბოლიკა
👉 ეს კლასი არის QGIS API-ის ერთ-ერთი ყველაზე გამოყენებადი ინსტრუმენტი GIS მონაცემების მართვისთვის.