გეომეტრიის ცვლილება(Geometry conversions)¶
ოფიციალური დოკუმენტაცია
წერტილოვანი შრის ხაზში გადაყვანა - Point to Line Conversion
Points to path:
ხაზოვანი შრის პოლიგონში გადაყვანა - Lines to polygon
Lines to polygons:
პოლიგონალური შრის ხაზში გადაყვანა - Polygon to Lines Conversion
Polygons to lines:
ხაზოვანი შრიდან წერტილების მიღება - Points along geometry
Points along geometry:
Geometry Conversions — ვექტორული შრეების გეომეტრიული ტიპის შეცვლა processing.run()-ის გამოყენებით.
ზოგიერთი განმარტება¶
- processing.run ნიშნავს QGIS - ის Processing Toolbox - ს. [მეთოდი/ფუნქცია]
- სიტყვა native ნიშნავს QGIS ის ხელსაწყოს და pointstopath მის დასახელებას.
- მასში კოდი მთლიანად არის Dictionary პრინციპი {} არგუმენტი key:value ობიექტის მნიშვნელობები.
Warning
ყურადღება მიაქციე ხელსაწყოში 'ORDER_EXPRESSION': '"ID"' , იმიტომ რომ ყველა შრეში ცხრილში ეს აიდის სვეტი არ არის და უნდა ჩაენაცვლოს შესაბამისით.წინააღმდეგ შემთხვევაში პროგრამა მთლიანად გამოდის მწყობრიდან.
🔑 ძირითადი იდეა¶
PyQGIS-ში შეგიძლია ვექტორული შრის გეომეტრია გარდაქმნა სხვა ტიპში — QGIS Processing Toolbox-ის ხელსაწყოების პირდაპირ გამოძახებით კოდიდან.
| კონვერტაცია | ხელსაწყო | Processing ID |
|---|---|---|
| წერტილი → ხაზი | Points to Path | native:pointstopath |
| ხაზი → პოლიგონი | Lines to Polygons | qgis:linestopolygons |
| პოლიგონი → ხაზი | Polygons to Lines | native:polygonstolines |
| ხაზი → წერტილები | Points along Geometry | native:pointsalonglines |
🧩 processing.run() — როგორ მუშაობს?¶
processing.run— QGIS Processing Toolbox-ის გამოძახება კოდიდანnative— QGIS-ის ჩაშენებული ხელსაწყოqgis— QGIS ალგორითმების ბიბლიოთეკა{ ... }— პარამეტრებიkey: valueDictionary სახით
🟢 წერტილი → ხაზი¶
Points to Path — წერტილოვანი შრის ხაზში გადაყვანა
📎 ოფიციალური დოკუმენტაცია: Points to Path
fn = r'C:\Users\Public\Documents\GIS\shapefile\points.shp'
output = r'C:\Users\Public\Documents\GIS\shapefile\points_to_line.shp'
processing.run("native:pointstopath", {
'INPUT' : fn,
'CLOSE_PATH' : True, # True = ხაზი ჩაიხურება (წრე)
'ORDER_EXPRESSION' : '"ID"', # ⚠️ სვეტის სახელი — იხ. გაფრთხილება
'NATURAL_SORT' : False,
'GROUP_EXPRESSION' : '',
'OUTPUT' : output
})
layer = iface.addVectorLayer(output, 'Points to Line', 'ogr')
⚠️
ORDER_EXPRESSION— ეს პარამეტრი განსაზღვრავს, რა თანმიმდევრობით შეუერთდება წერტილები ხაზში. სვეტი"ID"ყველა შრეში არ არის — შეამოწმე შენი შრის ატრიბუტები და შეცვალე შესაბამისი სვეტის სახელით. სვეტის გარეშე ან არასწორი სახელით პროგრამაERROR-ს გასცემს.
📌 შედეგად ვიღებთ ხაზს, სადაც წერტილები ORDER_EXPRESSION-ის მიხედვით თანმიმდევრულად შეუერთდა.
🔵 ხაზი → პოლიგონი¶
Lines to Polygons — ხაზოვანი შრის პოლიგონში გადაყვანა
📎 ოფიციალური დოკუმენტაცია: Lines to Polygons
fn = r'C:\Users\Public\Documents\GIS\shapefile\line_layer.shp'
output = r'C:\Users\Public\Documents\GIS\shapefile\polygon_from_line.shp'
processing.run("qgis:linestopolygons", {
'INPUT' : fn,
'OUTPUT': output
})
layer = iface.addVectorLayer(output, 'Line to Polygon', 'ogr')
📌 ხაზის პირველი და ბოლო წერტილი ავტომატურად შეუერთდება — ყალიბდება დახურული გეომეტრია (პოლიგონი).
💡 ხაზი დახურული უნდა იყოს ან მჭიდროდ მიახლოებული, წინააღმდეგ შემთხვევაში შედეგი შეიძლება მოულოდნელი გამოვიდეს.
🟠 პოლიგონი → ხაზი¶
Polygons to Lines — პოლიგონალური შრის ხაზებში გადაყვანა
📎 ოფიციალური დოკუმენტაცია: Polygons to Lines
fn = r'C:\Users\Public\Documents\GIS\shapefile\polygon_layer.shp'
output = r'C:\Users\Public\Documents\GIS\shapefile\line_from_polygon.shp'
processing.run("native:polygonstolines", {
'INPUT' : fn,
'OUTPUT': output
})
layer = iface.addVectorLayer(output, 'Polygon to Line', 'ogr')
📌 პოლიგონის კონტური გადადის ხაზად — სასარგებლოა ბუფერის, კიდის ანალიზისა და ვიზუალიზაციისთვის.
🟣 ხაზი → წერტილები (Points along geometry)¶
Points along Geometry — ხაზზე თანაბარი დაშორებით წერტილების განთავსება
📎 ოფიციალური დოკუმენტაცია: Points along Geometry
fn = r'C:\Users\Public\Documents\GIS\shapefile\line_layer.shp'
output = r'C:\Users\Public\Documents\GIS\shapefile\points_on_line.shp'
processing.run("native:pointsalonglines", {
'INPUT' : fn,
'DISTANCE' : 5, # ← წერტილებს შორის დაშორება (CRS ერთეულებში)
'START_OFFSET': 0, # ← ხაზის დასაწყისიდან გამოტოვება
'END_OFFSET' : 0, # ← ხაზის ბოლოდან გამოტოვება
'OUTPUT' : output
})
layer = iface.addVectorLayer(output, 'Points along Line', 'ogr')
📌 DISTANCE — CRS-ის ერთეულებში არის: თუ შრე მეტრულ კოორდინატებშია (მაგ. EPSG:32638), 5 ნიშნავს 5 მეტრს.
💡 გეოგრაფიულ კოორდინატებში (EPSG:4326)
DISTANCEგრადუსებში იქნება — ამ შემთხვევაში პროექცია შეცვალე მეტრულად (EPSG:32638) სწორი შედეგისთვის.
🗂️ შედეგების დროებით შენახვა (Memory Layer)¶
OUTPUT-ში 'TEMPORARY_OUTPUT' ან 'memory:' გამოიყენე, თუ ფაილი არ გინდა:
result = processing.run("native:polygonstolines", {
'INPUT' : fn,
'OUTPUT': 'TEMPORARY_OUTPUT' # ← მხოლოდ მეხსიერებაში
})
# დროებითი layer-ი
temp_layer = result['OUTPUT']
QgsProject.instance().addMapLayer(temp_layer)
💡
'TEMPORARY_OUTPUT'— სესიის დასრულებისას ავტომატურად წაიშლება. ფაილის შენახვა საჭიროების შემთხვევაში გამოიყენე სრული ბილიკი.
⚡ შეცდომების დამუშავება¶
import processing
from qgis.core import QgsVectorLayer
fn = r'C:\Users\Public\Documents\GIS\shapefile\points.shp'
output = r'C:\Users\Public\Documents\GIS\shapefile\points_to_line.shp'
try:
result = processing.run("native:pointstopath", {
'INPUT' : fn,
'CLOSE_PATH' : True,
'ORDER_EXPRESSION' : '"ID"',
'NATURAL_SORT' : False,
'GROUP_EXPRESSION' : '',
'OUTPUT' : output
})
layer = iface.addVectorLayer(output, 'Points to Line', 'ogr')
if not layer or not layer.isValid():
print("❌ შრე ვერ ჩაიტვირთა")
else:
print(f"✅ შრე ჩაიტვირთა — {layer.featureCount()} feature")
except Exception as e:
print(f"❌ Processing შეცდომა: {e}")
📌 შეჯამება¶
ამ თემაში განვიხილეთ:
| კონვერტაცია | Processing ID | შედეგი |
|---|---|---|
| 🟢 წერტილი → ხაზი | native:pointstopath |
წერტილები თანმიმდევრულად ერთდება |
| 🔵 ხაზი → პოლიგონი | qgis:linestopolygons |
ხაზი იხურება, ყალიბდება ფართობი |
| 🟠 პოლიგონი → ხაზი | native:polygonstolines |
კონტური ხდება ხაზი |
| 🟣 ხაზი → წერტილები | native:pointsalonglines |
თანაბარი წერტილები ხაზზე |
👉 ყველა კონვერტაცია processing.run() გამოიყენებს — QGIS Processing Toolbox-ის ძალა პირდაპირ კოდიდან.
🟢 წერტილოვანი შრის ხაზში გადაყვანა (Point to Line Conversion)¶
📌 შედეგად ვიღებთ ხაზს წერტილების თანმიმდევრობით.
🟢 ხაზოვანი შრის პოლიგონში გადაყვანა (Line to Polygon)¶
| Line_to_polygon.py | |
|---|---|
📌 ხაზები ერთდება და გეომეტრიულად პოლიგონი ყალიბდება.
🟢 პოლიგონალური შრის ხაზში გადაყვანა (Polygon to Lines Conversion)¶
| Polygon_to_Line_Conversion.py | |
|---|---|
📌 პოლიგონალური შრის ელემენტები გადადის ხაზობრივ სტილში, მათი კონტურიდან/ფორმიდან გამომდინარე.
🟢 ხაზოვანი შრიდან წერტილების მიღება (Points along geometry)¶
📌 ხაზოვანი შრის ნებისმიერ ელემენტზე განსაზღვრული დაშორებით წერტილების განთავსება.
📚 შეჯამება¶
ამ თემაში გავიარეთ:
- ახალი შრეების შექმნა PyQGIS-ით
- წერტილი → ხაზი → პოლიგონი კონვერტაციები
- დროებითი და მუდმივი შედეგების შენახვა
- შეცდომების აღმოჩენა და გასწორება