შრის შექმნა(ESRI Shapefile)¶
ოფიციალური დოკუმენტაცია
Class: QgsWkbTypes
GDAL OGR
საკოორდინატო სისტემის შესარჩევად: Coordinate Systems Worldwide
რა არის QgsField,QgsFields() , QVariant, QgsFeature() , iface და ა.შ დეტალებს
< < < განმარტებების განყოფილებაში ნახავ
წერტილოვანი შრე¶
ზოგიერთი განმარტება
- გეომეტრია დაკონკრეტებულია აქვე რადგან საჭიროა writer - ში მისი გათვალისწინება, QgsWkbTypes.Point ის ნაცვლად შესაძლებელია Line, Polygon, Unknown, Null - ის გამოყენება.
✅ ძირითადი გეომეტრიული ტიპები PyQGIS-ში:¶
| ტიპი | შრის ტიპი (string სახით) | მაგალითი კოდში |
|---|---|---|
| წერტილი | "Point" |
QgsGeometry.fromPointXY(QgsPointXY(x, y)) |
| მრავალწერტილი | "MultiPoint" |
QgsGeometry.fromMultiPointXY([QgsPointXY(x1, y1), QgsPointXY(x2, y2)]) |
| ხაზი | "LineString" |
QgsGeometry.fromPolylineXY([QgsPointXY(x1, y1), QgsPointXY(x2, y2)]) |
| მრავალხაზი | "MultiLineString" |
QgsGeometry.fromMultiPolylineXY([[QgsPointXY(x1, y1), QgsPointXY(x2, y2)], [QgsPointXY(x3, y3), QgsPointXY(x4, y4)]]) |
| პოლიგონი | "Polygon" |
QgsGeometry.fromPolygonXY([[QgsPointXY(x1, y1), QgsPointXY(x2, y2), QgsPointXY(x3, y3), QgsPointXY(x1, y1)]]) |
| მრავალპოლიგონი | "MultiPolygon" |
QgsGeometry.fromMultiPolygonXY([[[QgsPointXY(x1, y1), QgsPointXY(x2, y2), QgsPointXY(x3, y3), QgsPointXY(x1, y1)]]]) |
- shapefile_home ცვლადია და თემატური სახელწოდებით გადის სკრიპტში
- ატრიბუტული ცხრილის სვეტებს შექმნის QgsFields()
- File Handling - "r" - Read - Default value. Opens a file for reading, error if the file does not exist
- writer კრებს ინფორმაციას, უნიკოდირებას, სვეტებს, გეომეტრიას, საკოორდინატო სისტემას და აერიანებს მას კონტეინერად.
- ახალი შრე შეიქმნება და შეინახება 'ESRI Shapefile' დრაივერის დახმარებით.
- არგუმენტებში აუცილებელია გადავცეთ უნიკოდირება, პროექცია, დრაივერი და ა.შ
- ფუნქცია დააბრუნებს ობიექტს რომელიც განსაზღვრულია როგორც writer კოდში, რომელსაც შეუძლია დაამატოს და ჩაწეროს ახალი ობიექტები შრეში.
შესაძლებელია აქვე ჩავწეროთ მონაცემი შრეში
შრის დამატება QGIS პროექტის გარემოში¶
| shapefile_point.py | |
|---|---|
ახალი წერტილოვანი ვექტორული შრის შექმნა, წყვილი წერტილებით და დამატება QGIS პროექტის გარემოში.
ცხრილში ახალი სვეტის შექმნა და მონაცემის შეტანა¶
with edit არის ოპერატორი
იმისათვის რომ გაეშვას გამოხატვით გადაცემული ჩვენი კოდი საჭიროა შესაბამისი QgsExpressionContext-ის მიწოდება
Calculate Field¶
layers = QgsProject.instance().mapLayersByName('Rivers')
layer = layers[0]
pv = layer.dataProvider()
pv.addAttributes([QgsField('Type', QVariant.String)])
# QVariant.String-ის ნაცვლად თუ QVariant.Int-ს გამოვიყენებთ
layer.updateFields()
cntx = QgsExpressionContext()
cntx.appendScopes(QgsExpressionContextUtils.globalProjectLayerScopes(layer))
with edit(layer):
for i in layer.getFeatures():
cntx.setFeature(i)
i['Type'] = 'mdinare'
# აქ უკვე ეს ფრჩხილები აღარ გვჭირდება, რიცხვები წავა სვეტში ტექსტის ნაცვლად
layer.updateFeature(i)
ცხრილში ახალი სვეტების შექმნა და მონაცემების შეტანა¶
Calculate Fields¶
layers = QgsProject.instance().mapLayersByName('Rivers')
layer = layers[0]
pv = layer.dataProvider()
pv.addAttributes([
QgsField('Type', QVariant.String),
QgsField('Type_Eng', QVariant.String)
])
layer.updateFields()
cntx = QgsExpressionContext()
cntx.appendScopes(QgsExpressionContextUtils.globalProjectLayerScopes(layer))
with edit(layer):
for i in layer.getFeatures():
cntx.setFeature(i)
i['Type'] = 'mdinare'
i['Type_Eng'] = 'River'
layer.updateFeature(i)
ℹ️ განმარტებები – PyQGIS კომპონენტები¶
ამ განყოფილებაში იხილავ ხშირად გამოყენებული ობიექტებისა და კლასების მოკლე ახსნებს, რომლებიც საჭიროა PyQGIS სკრიპტების წერისას.
❗ ეს კომპონენტები ხშირად გვხვდება შრის შექმნის, ატრიბუტების ან გეომეტრიასთან მუშაობის დროს.
🔹 QgsField¶
გამოიყენება შრის ველის (ატრიბუტის სვეტის) განსაზღვრისთვის. მოიცავს ველის სახელსა და ტიპს.
მაგალითი:
🔹 QgsFields¶
წარმოადგენს ველების კოლექციას (ანუ რამდენიმე QgsField ერთად). საჭიროა, როცა უნდა გადმოაწოდო ყველა ველი ერთად, მაგალითად შრის შექმნისას.
მაგალითი:
🔹 QVariant¶
Qt-ის მონაცემთა ტიპების კლასი, რომელსაც QGIS იყენებს ატრიბუტის მნიშვნელობების ტიპების განსასაზღვრად. (მაგ. String, Int, Double და სხვ.)
მაგალითები:
QVariant.String– ტექსტური ველიQVariant.Int– მთელი რიცხვიQVariant.Double– ათწილადი რიცხვი
🔹 QgsFeature¶
წარმოადგენს ერთ ობიექტს (წერტილს, ხაზს ან პოლიგონს) თავისი გეომეტრიითა და ატრიბუტებით.
მაგალითი:
feature = QgsFeature()
feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(44.8, 41.7)))
feature.setAttributes(["Tbilisi"])
🔹 iface¶
iface (Interface) არის QGIS-ის მთავარი ობიექტი, რომელიც გამოიყენება QGIS-ის ინტერფეისთან (Layers Panel, Map Canvas და სხვ.) ურთიერთობისთვის.
მაგალითი:
iface.addVectorLayer("/path/to/file.shp", "My Layer", "ogr")
# ამატებს ფენას პირდაპირ QGIS-ის პროექტში
⚠️ iface ხელმისაწვდომია მხოლოდ QGIS-ის Python Console-ში. სტანდარტულ Python სკრიპტში ის არ მუშაობს.
🔹 დამატებითი სასარგებლო კლასები¶
| კლასი | აღწერა |
|---|---|
QgsGeometry |
გეომეტრიის ობიექტი (წერტილი, ხაზი, პოლიგონი და სხვ.) |
QgsPointXY |
2D წერტილის ობიექტი – x და y კოორდინატებით |
QgsVectorLayer |
ვექტორული შრის ობიექტი |
QgsProject |
QGIS პროექტი – იძლევა შრეების დამატებისა და მართვის საშუალებას |
QgsCoordinateReferenceSystem |
საკოორდინატო სისტემის განსაზღვრა EPSG კოდის მიხედვით |