Если создать из вашей таблицы текстовый файл такого содержания
1 49.4567 34.2387
2 49.1777 34.8753
3 49.3458 34.9766
4 49.5622 34.3891
5 49.5441 34.2267
1 49.3481 34.0966
2 49.7812 34.8923
3 49.4573 34.1108
то запустив нижеприведенный скрипт, получите полигоны в активном виде.
theFileName = FileDialog.Show ("*", "", "Выбор файла данных")
if (theFileName = nil) then return 0 end
lf = LineFile.Make(theFileName, #FILE_PERM_READ)
Massiv = {}
lPnt = {}
NEXT = FALSE
while (lf.IsAtEnd.NOT)
buf = lf.ReadElt
buf = buf.Trim
if (buf.Trim="") then continue end
s1 = buf.Extract(0).AsNumber
s2 = buf.Extract(1).AsNumber
s3 = buf.Extract(2).AsNumber
pnt = Point.Make(s2, s3)
if ((s1=1) AND (NEXT)) then
Massiv.Add(lPnt.Clone)
lPnt.Empty
lPnt.Add(pnt)
else
lPnt.Add(pnt)
NEXT = TRUE
end
end
lf.Close
Massiv.Add(lPnt.Clone) ' последний полигон
' создание полигональной темы
theTab = FTab.MakeNew("pgn.shp".AsFileName, Polygon)
theFld = Field.Make("ID", #FIELD_DECIMAL, 5, 0)
theFld.SetVisible ( TRUE )
theTab.AddFields ({theFld})
id=1
for each l in Massiv
' MsgBox.ListAsString(l, "", "")
pgn = Polygon.Make ({l})
rec = theTab.AddRecord
theTab.SetValue (theTab.FindField("Shape"), rec, pgn)
theTab.SetValue (theTab.FindField("ID"), rec, id)
id=id+1
end
theTab.SetEditable(False)
theView = av.GetActiveDoc
theTheme = FTheme.Make(theTab)
theView.AddTheme(theTheme)
theTheme.SetActive (TRUE)
theTheme.SetVisible(TRUE)