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

ESRI Shapefile — ტექნიკური სპეციფიკაცია

წყარო: ESRI White Paper — 1998 წლის ივლისი
თარგმანი: ქართული · დოკუმენტაცია GIS პროგრამისტებისთვის


შინაარსი

  1. რატომ Shapefile?
  2. ტექნიკური აღწერა
  3. ფაილების სტრუქტურა
  4. სახელდების კონვენცია
  5. რიცხვითი ტიპები
  6. მთავარი ფაილის ორგანიზაცია (.shp)
  7. ბაიტების თანმიმდევრობა
  8. ფაილის სათაური
  9. ჩანაწერის სათაური
  10. ჩანაწერის შინაარსი — გეომეტრიული ტიპები
  11. Null Shape
  12. Point — წერტილი
  13. MultiPoint — მრავალწერტილი
  14. PolyLine — პოლიხაზი
  15. Polygon — პოლიგონი
  16. გაზომვადი ტიპები (M)
  17. სამგანზომილებიანი ტიპები (Z)
  18. MultiPatch
  19. ინდექს ფაილის ორგანიზაცია (.shx)
  20. dBASE ფაილის ორგანიზაცია (.dbf)
  21. გლოსარი

რატომ Shapefile?

Shapefile ინახავს არარელაციური (ნონ-ტოპოლოგიური) გეომეტრიას და ატრიბუტულ ინფორმაციას სივრცული ობიექტებისთვის. თითოეული ობიექტის გეომეტრია წარმოდგენილია ვექტორული კოორდინატების ნაკრებად.

უპირატესობები

  • სწრაფი გამოსახვა — ტოპოლოგიური სტრუქტურის დამუშავების ოვერჰედი არ არის
  • მარტივი რედაქტირება — მონაცემების შეცვლა მარტივია
  • მოქნილობა — მხარს უჭერს გადამფარავ და დაუკავშირებელ ობიექტებს
  • კომპაქტურობა — ჩვეულებრივ ნაკლებ დისკის სივრცეს იყენებს
  • ხელმისაწვდომობა — ადვილი წასაკითხი და ჩასაწერი

Shapefile-ი მხარს უჭერს წერტილს (Point), ხაზს (Line) და პოლიგონს (Area). ფართობური ობიექტები წარმოდგენილია დახურული, ორმხრივ-ციფრული პოლიგონებით. ატრიბუტები ინახება dBASE ფორმატის ფაილში, სადაც თითოეული ატრიბუტის ჩანაწერი ერთი-ერთზე შეესაბამება შესაბამის გეომეტრიულ ჩანაწერს.

Shapefile-ის შექმნის მეთოდები

მეთოდი აღწერა
ექსპორტი ნებისმიერი მონაცემთა წყაროს გარდაქმნა ARC/INFO, ArcView GIS, SDE ან BusinessMAP-ის გამოყენებით
ციფრიზაცია პირდაპირი ხატვა ArcView GIS-ის ინსტრუმენტებით
პროგრამირება Avenue, MapObjects, AML ან SML სკრიპტების გამოყენებით
პირდაპირი ჩაწერა სპეციფიკაციის მიხედვით პროგრამის დამოუკიდებლად დაწერა

ტექნიკური აღწერა

ფაილების სტრუქტურა

ESRI Shapefile შედგება სამი ფაილისგან:

counties.shp   ← მთავარი ფაილი (გეომეტრია)
counties.shx   ← ინდექს ფაილი (ოფსეტები)
counties.dbf   ← dBASE ცხრილი (ატრიბუტები)
ფაილი გაფართოება შინაარსი
მთავარი ფაილი .shp გეომეტრია — ვექტორული კოორდინატები
ინდექს ფაილი .shx ჩანაწერების ოფსეტები მთავარ ფაილში
dBASE ცხრილი .dbf ატრიბუტული მონაცემები

მთავარი ფაილი — პირდაპირი წვდომის ცვლადი სიგრძის ფაილი, სადაც თითოეული ჩანაწერი აღწერს ობიექტს მისი წვეროების სიით.
ინდექს ფაილი — თითოეული ჩანაწერი შეიცავს შესაბამისი მთავარი ჩანაწერის ოფსეტს ფაილის დასაწყისიდან.
dBASE ცხრილი — შეიცავს ატრიბუტებს, თითო ჩანაწერი — თითო ობიექტზე.

⚠️ ატრიბუტების ჩანაწერები dBASE ფაილში უნდა იყოს იმავე თანმიმდევრობით, როგორც გეომეტრიული ჩანაწერები მთავარ ფაილში.

სახელდების კონვენცია

ყველა ფაილის სახელი იცავს 8.3 ფორმატს:

  • პრეფიქსი იგივეა სამივე ფაილისთვის
  • პრეფიქსი იწყება ალფანუმერული სიმბოლოთი (a–Z, 0–9)
  • შემდეგ — 0-დან 7-მდე სიმბოლო (a–Z, 0–9, _, -)
  • ფაილის სახელები პატარა ასოებითაა case-sensitive სისტემებში

რიცხვითი ტიპები

Shapefile იყენებს ორ ძირითად რიცხვით ტიპს:

ტიპი განმარტება ზომა
Integer ხელმოწერილი 32-ბიტიანი მთელი 4 ბაიტი
Double ხელმოწერილი 64-ბიტიანი IEEE გასაორმაგებელი სიზუსტის მცოცავი 8 ბაიტი

"no data" მნიშვნელობა: ნებისმიერი მცოცავი რიცხვი, რომელიც –10³⁸-ზე პატარაა, განიხილება "მონაცემი არ არის"-ად. Shapefile არ ინახავს +∞, –∞ ან NaN მნიშვნელობებს.


მთავარი ფაილის ორგანიზაცია (.shp)

┌─────────────────────┐
│     ფაილის სათაური  │  (100 ბაიტი, ფიქსირებული)
├─────────────────────┤
│  ჩანაწერის სათაური  │  (8 ბაიტი)
│  ჩანაწერის შინაარსი │  (ცვლადი)
├─────────────────────┤
│  ჩანაწერის სათაური  │
│  ჩანაწერის შინაარსი │
├─────────────────────┤
│         ...         │
└─────────────────────┘

ბაიტების თანმიმდევრობა

Shapefile-ში ორი ბაიტ-ორდერი გამოიყენება:

ტიპი ორდერი გამოიყენება
Big Endian (Motorola / Sun) მარცხნიდან-მარჯვნივ ფაილის მართვის ველები (სიგრძე, ოფსეტები)
Little Endian (Intel / PC) მარჯვნიდან-მარცხნივ მონაცემთა ველები (კოორდინატები, ობიექტის ტიპი)

ფაილის სათაური

მთავარი ფაილის სათაური — 100 ბაიტი. პოზიცია — ფაილის დასაწყისიდან:

ბაიტი ველი მნიშვნელობა ტიპი ორდერი
0 File Code 9994 Integer Big
4–20 Unused 0 Integer Big
24 File Length ფაილის სიგრძე (16-ბიტიანი სიტყვებით) Integer Big
28 Version 1000 Integer Little
32 Shape Type ობიექტის ტიპი Integer Little
36 Bounding Box Xmin Double Little
44 Bounding Box Ymin Double Little
52 Bounding Box Xmax Double Little
60 Bounding Box Ymax Double Little
68* Bounding Box Zmin Double Little
76* Bounding Box Zmax Double Little
84* Bounding Box Mmin Double Little
92* Bounding Box Mmax Double Little

* — 0.0-ია, თუ ტიპი Measured ან Z არ არის

File Length = ფაილის მთლიანი სიგრძე 16-ბიტიანი სიტყვებით (სათაურის 50 სიტყვის ჩათვლით).

ობიექტის ტიპების სია

კოდი ტიპი
0 Null Shape
1 Point
3 PolyLine
5 Polygon
8 MultiPoint
11 PointZ
13 PolyLineZ
15 PolygonZ
18 MultiPointZ
21 PointM
23 PolyLineM
25 PolygonM
28 MultiPointM
31 MultiPatch

✏️ ამჟამად ყველა ობიექტი ფაილში ერთი ტიპის უნდა იყოს. სამომავლოდ შეიძლება შერეული ტიპები დაშვებულ იქნეს.

ჩანაწერის სათაური

თითოეული ჩანაწერის სათაური — 8 ბაიტი (ფიქსირებული):

ბაიტი ველი მნიშვნელობა ტიპი ორდერი
0 Record Number ჩანაწერის ნომერი (იწყება 1-დან) Integer Big
4 Content Length შინაარსის სიგრძე (16-ბიტ. სიტყვებით) Integer Big

ჩანაწერის შინაარსი — გეომეტრიული ტიპები

Null Shape

ნულოვანი ობიექტი — გეომეტრიული მონაცემი არ გააჩნია. გამოიყენება placeholder-ად ფაილის შექმნისას.

ბაიტი ველი მნიშვნელობა ტიპი
0 Shape Type 0 Integer

Point — წერტილი

წერტილი შედგება X, Y კოორდინატების წყვილისგან ორმაგი სიზუსტით.

Point {
    Double X  // X კოორდინატი
    Double Y  // Y კოორდინატი
}
ბაიტი ველი ტიპი
0 Shape Type (1) Integer
4 X Double
12 Y Double

MultiPoint — მრავალწერტილი

წარმოადგენს წერტილების ნაკრებს.

MultiPoint {
    Double[4] Box        // Bounding Box (Xmin, Ymin, Xmax, Ymax)
    Integer   NumPoints  // წერტილების რაოდენობა
    Point[NumPoints] Points  // წერტილები
}
ბაიტი ველი ტიპი რაოდენობა
0 Shape Type (8) Integer 1
4 Box Double 4
36 NumPoints Integer 1
40 Points Point NumPoints

PolyLine — პოლიხაზი

პოლიხაზი — წვეროების დალაგებული ნაკრები, რომელიც შედგება ერთი ან მეტი ნაწილისგან (Part). ნაწილი — ორი ან მეტი წვეროს თანმიმდევრული მიმდევრობა. ნაწილები შეიძლება დაკავშირებული ან დაუკავშირებელი იყოს ერთმანეთთან.

PolyLine {
    Double[4]        Box        // Bounding Box
    Integer          NumParts   // ნაწილების რაოდენობა
    Integer          NumPoints  // წვეროების საერთო რაოდენობა
    Integer[NumParts] Parts     // ყველა ნაწილის პირველი წვეროს ინდექსი
    Point[NumPoints] Points     // ყველა ნაწილის წვეროები
}
ბაიტი ველი ტიპი რაოდენობა
0 Shape Type (3) Integer 1
4 Box Double 4
36 NumParts Integer 1
40 NumPoints Integer 1
44 Parts Integer NumParts
X* Points Point NumPoints

* X = 44 + 4 × NumParts

ველების განმარტება: - Box — Bounding Box თანმიმდევრობით: Xmin, Ymin, Xmax, Ymax - Parts — მასივი (სიგრძე = NumParts); ინახავს თითოეული ნაწილის პირველი წვეროს ინდექსს Points მასივში (0-იდან) - Points — ყველა ნაწილის წვეროები თანმიმდევრობით; ნაწილებს შორის გამყოფი არ არის


Polygon — პოლიგონი

პოლიგონი შედგება ერთი ან მეტი რგოლისგან (Ring). რგოლი — ოთხი ან მეტი წვეროს დახურული, თვითგადაკვეთის გარეშე მარყუჟი. პოლიგონს შეიძლება ჰქონდეს მრავალი გარე რგოლი.

Polygon {
    Double[4]         Box        // Bounding Box
    Integer           NumParts   // რგოლების რაოდენობა
    Integer           NumPoints  // წვეროების საერთო რაოდენობა
    Integer[NumParts] Parts      // ყველა რგოლის პირველი წვეროს ინდექსი
    Point[NumPoints]  Points     // ყველა რგოლის წვეროები
}
ბაიტი ველი ტიპი რაოდენობა
0 Shape Type (5) Integer 1
4 Box Double 4
36 NumParts Integer 1
40 NumPoints Integer 1
44 Parts Integer NumParts
X* Points Point NumPoints

* X = 44 + 4 × NumParts

⚠️ მნიშვნელოვანი წესები პოლიგონებისთვის

  1. რგოლები დახურულია — პირველი და ბოლო წვერო ერთი და იგივე წერტილი უნდა იყოს.
  2. წვეროების მიმართულება:
  3. გარე (solid) რგოლები — წვეროები საათის ისრის მიმართულებით (clockwise)
  4. "ხვრელის" (hole) რგოლები — წვეროები საათის საწინააღმდეგო მიმართულებით (counterclockwise)
  5. "სუფთა" პოლიგონი:
  6. არ უნდა ჰქონდეს თვითგადაკვეთა
  7. სეგმენტები სხვადასხვა რგოლიდან არ უნდა გადაიკვეთოს (მხოლოდ წვეროებში შეხება დასაშვებია)
  8. Points მასივში ჩანაწერების თანმიმდევრობა მნიშვნელობა არ აქვს

მაგალითი (NumParts=2, NumPoints=10 — პოლიგონი ხვრელით):

Parts:  [0, 5]
Points: [v1, v2, v3, v4, v1,  v5, v8, v7, v6, v5]
         ← გარე რგოლი →      ← ხვრელი (CCW) →


გაზომვადი ტიპები (M)

M-ტიპის ობიექტებს დამატებითი გაზომვის კოორდინატი (M) გააჩნია. M-ისთვის "no data" მნიშვნელობის მითითება დასაშვებია.

PointM

PointM {
    Double X  // X კოორდინატი
    Double Y  // Y კოორდინატი
    Double M  // გაზომვა
}
ბაიტი ველი ტიპი
0 Shape Type (21) Integer
4 X Double
12 Y Double
20 M Double

MultiPointM

MultiPointM {
    Double[4]        Box       // Bounding Box
    Integer          NumPoints // წერტილების რაოდენობა
    Point[NumPoints] Points    // წერტილები
    Double[2]        M Range   // Mmin, Mmax
    Double[NumPoints] M Array  // M მნიშვნელობები
}
ბაიტი ველი ტიპი რაოდენობა
0 Shape Type (28) Integer 1
4 Box Double 4
36 NumPoints Integer 1
40 Points Point NumPoints
X* Mmin Double 1
X+8* Mmax Double 1
X+16* Marray Double NumPoints

* X = 40 + 16 × NumPoints · (* სურვილისამებრ)

PolyLineM

PolyLineM {
    Double[4]         Box
    Integer           NumParts
    Integer           NumPoints
    Integer[NumParts] Parts
    Point[NumPoints]  Points
    Double[2]         M Range   // Mmin, Mmax
    Double[NumPoints] M Array
}
ბაიტი ველი ტიპი რაოდენობა
0 Shape Type (23) Integer 1
4 Box Double 4
36 NumParts Integer 1
40 NumPoints Integer 1
44 Parts Integer NumParts
X Points Point NumPoints
Y* Mmin Double 1
Y+8* Mmax Double 1
Y+16* Marray Double NumPoints

X = 44 + 4×NumParts · Y = X + 16×NumPoints · (* სურვილისამებრ)

PolygonM

სტრუქტურა PolyLineM-ის იდენტურია (Shape Type = 25). წესები — Polygon-ის ანალოგიური: - რგოლები დახურულია - Points-ში ჩანაწერების თანმიმდევრობა მნიშვნელობა არ აქვს


სამგანზომილებიანი ტიპები (Z)

Z-ტიპის ობიექტებს Z კოორდინატი და სურვილისამებრ M გაზომვა გააჩნია.

PointZ

PointZ {
    Double X
    Double Y
    Double Z
    Double M  // გაზომვა
}
ბაიტი ველი ტიპი
0 Shape Type (11) Integer
4 X Double
12 Y Double
20 Z Double
28 M Double

MultiPointZ

MultiPointZ {
    Double[4]         Box
    Integer           NumPoints
    Point[NumPoints]  Points
    Double[2]         Z Range    // Zmin, Zmax
    Double[NumPoints] Z Array
    Double[2]         M Range    // Mmin, Mmax  (სურვილისამებრ)
    Double[NumPoints] M Array    // (სურვილისამებრ)
}
ბაიტი ველი ტიპი რაოდ.
0 Shape Type (18) Integer 1
4 Box Double 4
36 NumPoints Integer 1
40 Points Point NumPoints
X Zmin Double 1
X+8 Zmax Double 1
X+16 Zarray Double NumPoints
Y* Mmin Double 1
Y+8* Mmax Double 1
Y+16* Marray Double NumPoints

X = 40 + 16×NumPoints · Y = X + 16 + 8×NumPoints

PolyLineZ

PolyLineZ {
    Double[4]         Box
    Integer           NumParts
    Integer           NumPoints
    Integer[NumParts] Parts
    Point[NumPoints]  Points
    Double[2]         Z Range
    Double[NumPoints] Z Array
    Double[2]         M Range    // სურვილისამებრ
    Double[NumPoints] M Array    // სურვილისამებრ
}
ბაიტი ველი ტიპი რაოდ.
0 Shape Type (13) Integer 1
4 Box Double 4
36 NumParts Integer 1
40 NumPoints Integer 1
44 Parts Integer NumParts
X Points Point NumPoints
Y Zmin Double 1
Y+8 Zmax Double 1
Y+16 Zarray Double NumPoints
Z* Mmin Double 1
Z+8* Mmax Double 1
Z+16* Marray Double NumPoints

X = 44 + 4×NumParts · Y = X + 16×NumPoints · Z = Y + 16 + 8×NumPoints

PolygonZ

სტრუქტურა PolyLineZ-ის იდენტურია (Shape Type = 15). წესები — Polygon-ის ანალოგიური: - რგოლები დახურულია - Z მნიშვნელობები ინახება ბოლოდან ბოლო პრინციპით, ნაწილებს შორის გამყოფი არ არის


MultiPatch

MultiPatch შედგება ზედაპირული პაჩების რაოდენობისგან. თითოეული პაჩი ზედაპირს აღწერს. პაჩების ტიპი განსაზღვრავს, თუ როგორ ინტერპრეტირდება წვეროების თანმიმდევრობა.

ნაწილების ტიპები

კოდი ტიპი აღწერა
0 Triangle Strip სამკუთხედების ჯაჭვი — ყოველი ახალი წვერო ქმნის ახალ სამკუთხედს ორ წინა წვეროსთან
1 Triangle Fan სამკუთხედების გულშემატკივარი — ყოველი ახალი წვერო ქმნის სამკუთხედს წინა წვეროსა და პირველ წვეროსთან
2 Outer Ring პოლიგონის გარე რგოლი
3 Inner Ring პოლიგონის ხვრელის რგოლი
4 First Ring პოლიგონის პირველი რგოლი (ტიპი განუსაზღვრელი)
5 Ring პოლიგონის რგოლი (ტიპი განუსაზღვრელი)
MultiPatch {
    Double[4]         Box
    Integer           NumParts
    Integer           NumPoints
    Integer[NumParts] Parts
    Integer[NumParts] PartTypes   // ← ეს PolyLine-ში არ არის!
    Point[NumPoints]  Points
    Double[2]         Z Range
    Double[NumPoints] Z Array
    Double[2]         M Range     // სურვილისამებრ
    Double[NumPoints] M Array     // სურვილისამებრ
}
ბაიტი ველი ტიპი რაოდ.
0 Shape Type (31) Integer 1
4 Box Double 4
36 NumParts Integer 1
40 NumPoints Integer 1
44 Parts Integer NumParts
W PartTypes Integer NumParts
X Points Point NumPoints
Y Zmin Double 1
Y+8 Zmax Double 1
Y+16 Zarray Double NumPoints
Z* Mmin Double 1
Z+8* Mmax Double 1
Z+16* Marray Double NumPoints

W = 44 + 4×NumParts · X = W + 4×NumParts · Y = X + 16×NumPoints · Z = Y + 16 + 8×NumPoints

⚠️ მნიშვნელოვანი წესები MultiPatch-ისთვის

  • Ring-ტიპის ნაწილები დახურული უნდა იყოს (პირველი = ბოლო წვერო)
  • Ring-ების თანმიმდევრობა მნიშვნელოვანია: Inner Ring-ი Outer Ring-ს უნდა მოჰყვეს
  • First Ring-ების მიმდევრობა ერთი ზედაპირული პაჩისთვის First Ring-ით უნდა დაიწყოს
  • ნაწილებს შეიძლება საერთო საზღვრები ჰქონდეთ, მაგრამ ერთმანეთს ვერ გაჭრიან

ინდექს ფაილის ორგანიზაცია (.shx)

┌─────────────────────┐
│     ფაილის სათაური  │  (100 ბაიტი — მთავარი ფაილის იდენტური)
├─────────────────────┤
│       ჩანაწერი      │  (8 ბაიტი, ფიქსირებული)
├─────────────────────┤
│       ჩანაწერი      │
├─────────────────────┤
│         ...         │
└─────────────────────┘

სათაური — მთავარი ფაილის სათაურის სრული ასლი (100 ბაიტი). განსხვავება: File Length — ინდექს ფაილის მთლიანი სიგრძე 16-ბიტ. სიტყვებით (50 სიტყვე სათაური + 4 × ჩანაწერების რაოდენობა).

ინდექს ჩანაწერი

I-ური ჩანაწერი ინახავს I-ური მთავარი ფაილის ჩანაწერის ოფსეტსა და შინაარსის სიგრძეს:

ბაიტი ველი ტიპი ორდერი
0 Offset Integer Big
4 Content Length Integer Big
  • Offset — 16-ბიტ. სიტყვების რაოდენობა ფაილის დასაწყისიდან ჩანაწერის სათაურის პირველ ბაიტამდე
  • პირველი ჩანაწერის ოფსეტი = 50 (100-ბაიტიანი სათაური ÷ 2)
  • Content Length ინდექს ჩანაწერში — იდენტურია მთავარ ფაილის ჩანაწერის სათაურში ჩაწერილი მნიშვნელობის

dBASE ფაილის ორგანიზაცია (.dbf)

.dbf ფაილი შეიცავს ატრიბუტებს ან ატრიბუტების გასაღებებს, რომლებიც სხვა ცხრილებს შეიძლება დაუკავშირდეს. ეს სტანდარტული DBF ფორმატია, რომელსაც Windows-ისა და DOS-ის მრავალი აპლიკაცია იყენებს.

სავალდებულო მოთხოვნები

  1. ფაილის სახელი.shp და .shx ფაილების იგივე პრეფიქსი (გაფართოება: .dbf)
  2. ჩანაწერების რაოდენობაერთი ჩანაწერი თითო გეომეტრიულ ობიექტზე
  3. ჩანაწერების თანმიმდევრობამთავარი ფაილის ობიექტების იგივე თანმიმდევრობა
  4. dBASE სათაურის წლის მნიშვნელობა — 1900 წლის შემდეგ გასული წლების რაოდენობა

💡 ველების ნებისმიერი კომბინაცია შეიძლება იყოს ცხრილში — არავითარი შეზღუდვა ველების სახელებსა და ტიპებზე.


გლოსარი

ტერმინი განმარტება
big endian ბაიტ-ორდერი, სადაც "მნიშვნელოვანი" ბაიტი მარცხნივ (წინ) არის. UNIX სისტემები: Sun, HP, IBM
little endian ბაიტ-ორდერი, სადაც "ნაკლებად მნიშვნელოვანი" ბაიტი მარცხნივ (წინ) არის. PC/Windows სისტემები
Bounding Box სწორკუთხა ჩარჩო, რომელიც ობიექტს ზუსტად მოიცავს. განისაზღვრება: Xmin, Ymin, Xmax, Ymax
coverage ARC/INFO-ს ვექტორული მონაცემების ერთეული; ინახავს გეოგრაფიულ ობიექტებს ტოპოლოგიური სტრუქტურით
feature (ობიექტი) გეოგრაფიული ობიექტის გამოსახვა — გეომეტრია + ატრიბუტების ნაკრები
index file shapefile-ის ინდექს ფაილი — პირდაპირ წვდომას უზრუნველყოფს მთავარი ფაილის ჩანაწერებზე
MultiPoint ერთ ატრიბუტულ ჩანაწერთან შეერთებული წერტილების კლასტერი
NumPoints გეომეტრიაში X,Y წვეროების საერთო რაოდენობა
PolyLine დალაგებული X,Y წვეროების ნაკრები, რომელიც ხაზს ან საზღვარს წარმოადგენს
ring (რგოლი) X,Y წვეროების დახურული მიმდევრობა (პირველი = ბოლო წვერო); დახურული PolyLine ან Polygon
shapefile ArcView GIS-ის მონაცემთა ფორმატი, წარმოადგენს გეოგრაფიულ ობიექტებს (წერტილი, ხაზი, ფართობი)
theme მომხმარებლის მიერ განსაზღვრული გეოგრაფიული ობიექტების ნაკრები ArcView GIS-ში
topology (ტოპოლოგია) სივრცული ურთიერთობები მიმდებარე ან დაკავშირებულ ობიექტებს შორის. Shapefile-ი ტოპოლოგიას არ ინახავს
vector კარტეზიული (X,Y) კოორდინატებზე დაფუძნებული მონაცემთა სტრუქტურა გეოგრაფიული ობიექტებისთვის
vertex (წვერო) ხაზის შემადგენელი X,Y კოორდინატების ერთი წყვილი

შენიშვნა: ეს დოკუმენტი ESRI Shapefile ტექნიკური სპეციფიკაციის (1998) ქართულენოვანი ადაპტაცია/თარგმანია. ორიგინალური სპეციფიკაცია: ESRI Shapefile Technical Description