შიგთავსზე გადასვლა

🧭 სივრცითი ალგორითმები

GIS-ის ყოველი პროგრამა, QGIS-იდან Google Earth-მდე, რამდენიმე ფუნდამენტურ ალგორითმზე დგას. ეს განყოფილება ხსნის, როგორ მუშაობს ისინი: იდეა, სქემა, სუფთა Python-ის რეალიზაცია, იგივე შედეგი ბიბლიოთეკით და პრაქტიკული დავალება.


🌍 რატომ გვჭირდება სივრცითი ალგორითმები

წარმოიდგინეთ 10 მილიონი წერტილი და კითხვა: „რომელი წერტილებია ამ მართკუთხედში?" გულუბრყვილო გადაწყვეტა ყველა წერტილს ამოწმებს (O(n)). სივრცითი ინდექსი კი ტერიტორიის უდიდეს ნაწილს ერთი შედარებით გამორიცხავს (O(log n) და მსგავსი). იგივე პრინციპი აძლევს Google Earth-ს უნარს, ერთი კადრისთვის დედამიწის მთელი ზედაპირიდან მხოლოდ საჭირო ნაწილი ჩატვირთოს.


🛰️ საინტერესო შემთხვევა: Terravision

1990-იანი წლების დასაწყისში ART+COM-ის გუნდმა შექმნა Terravision, ვირტუალური დედამიწა, რომელზეც მომხმარებელი კოსმოსიდან ქალაქის დონემდე უწყვეტად მიახლოვდებოდა. იმ დროის კომპიუტერებს არ შეეძლოთ დედამიწის მაღალი რეზოლუციის მონაცემები ერთდროულად მეხსიერებაში ჩაეტვირთათ, ამიტომ გადაწყვეტა დაყენებული იყო რამდენიმე იდეაზე, რომლებიც დღესაც ყველა 3D რუკის საფუძველია:

იდეა რას აკეთებს
Quadtree დედამიწას ყოფს იერარქიულ კვადრატებად (ტაილებად) და საშუალებას იძლევა, მხოლოდ საჭიროს მივწვდეთ
LOD (Level of Detail) შორს მყოფ ტერიტორიას დაბალი, ახლოს მყოფს მაღალი დეტალიზაციით აჩვენებს
Frustum culling გამორიცხავს იმას, რაც კამერის ხედვის არეში არ ხვდება
ასინქრონული streaming ტაილებს ფონში ტვირთავს, ამასობაში დაბალ ხარისხს აჩვენებს
რელიეფის მეში სიმაღლეების მონაცემიდან აგებს სამკუთხედების ბადეს და მასზე სატელიტურ სურათს ჭიმავს

წყაროების შესახებ

ზემოთ ჩამოთვლილი პრინციპები დღევანდელ ვებ-რუკებსა და 3D გლობუსებში საყოველთაოდ გამოყენებული ტექნიკებია. Terravision-ის კონკრეტული ტექნიკური დეტალები (მაგ. რომელ აპარატურაზე გაეშვა, რომელი ალგორითმის რომელი ვარიანტი გამოიყენეს) სხვადასხვა მეორეულ წყაროში განსხვავებულადაა აღწერილი, ამიტომ ამ გვერდებზე ისინი კონკრეტულ პროექტს კი არ მიეწერება, ზოგადად განიხილება.


🗺️ თემები

გვერდი აღწერა სტატუსი
Quadtree სივრცითი ინდექსი, ტაილების მისამართები ✅
LOD და Frustum culling დეტალიზაციის მართვა, ხედვის არე 🔜
ტაილების პირამიდა (XYZ) Web Mercator, quadkey 🔜
R-tree, k-d tree, Geohash სხვა ინდექსები 🔜
TIN და Delaunay რელიეფის მეში 🔜
გეომეტრიული ალგორითმები Point-in-polygon, Douglas–Peucker, Convex hull 🔜
გრაფები Dijkstra, A* 🔜

📐 გვერდების სტრუქტურა

  1. იდეა და პრობლემა, რომელსაც წყვეტს
  2. ინტერაქტიული ვიზუალიზაცია
  3. სუფთა Python რეალიზაცია
  4. იგივე PyQGIS-ით ან ბიბლიოთეკით
  5. სირთულე და გამოყენება პრაქტიკაში
  6. დავალებები დაკეცილი ამოხსნებით