"Integral file" - russian GIS file format(INF.rfi):
Class: GIS files, Status: Complete, Last change: 16.11.2001 13:22:10
type
TSign array[3] of char
data
0x0000 TSign Sign
0x0003 Byte SignZ
assert (Sign='INF')and(SignZ=0);
descr ('The Integral file - format of Russian GIS.')
descr (NL,
'Info Src: VS AGP doc. INT_RAS2.DOC',NL)
type
TInfHead struc pas
BaseName: array[41] of Char,0;
KlsName: array[13] of Char,0;
FileCreationDate: array[11] of Char,0;
FileCreationTime: array[9] of Char,0;
Xmin: Int
Ymin: Int
Xmax: Int
Ymax: Int
NumbKVX: Int
NumbKVY: Int
SizeKVX: Word
SizeKVY: Word
NumbKVAll: Word
ends
type
TRecTag enum int (
Obj=777
)
TObjCode array[9] of int,0;:displ=(ShowArray(@,(@,'.')))
TObjectRec(N) forward
PObjectRec(N,Base) ^TObjectRec(@:N) near=ulong REF=@*2+@:Base;
TLogSObj set 32 of (//Tþóø¢õ¸úð °úðûð þñ·õúªð
Lin=0, //Tøýõùývù
Area=1, //¦ûþ•ðôývù
Discr=2, //-ø¸úpõªývù
Compos=3, //Tþ¸ªðòýþù
Compl=4, //Tûþöývù
Closed=5, //¦ðüúýºªvù
Strait=6, //¦º¸þ¢ýþ-ÿ¨ üð
Arc=7, //Tøýø þúpºöýþ
Part=9, //+𸪹 ôpºóþóþ
Hole=10, //Týºªpõýýøù úþ
Link=11, //Tò ÷ø òvýõ¸õý
MultyLink=12, //¦ýþóþ¸ò ÷ývù
Cut=13, //¦ð÷¨õ÷ðýývù
Bit15=15, //+ð¸ªþ ò¸ª¨õ¢ðûþ¸¹
URRMtr=18 //¦õªpøúð ò L¦¦
)
TLogSIntr set 32 of (//Tþóø¢õ¸úð °úðûð ÿpõpvòðýø
Lin=0, //Tøýõùývù
Area=1, //¦ûþ•ðôývù
Discr=2, //-ø¸úpõªývù
NotAllowed=3, //=õ ôþÿº¸úðõª
FullDesc=4, //¦þûýþõ þÿø¸ðý
Straight=6, //¦º¸þ¢ýþ-ÿ¨ üð
Arc=7, //Tøýø þúpºöýþ
Dir=8, //=ðÿpðòûõýøõ ¡
Sem=9, //Tõüðýªø¢õ¸úþõ
FixP=10, //=õÿþôòøöýð ª
SignChg=11, //Tüõýð ªþÿþ÷ýð
MtrImp=12, //¦õª¨øúð ÷ðøü¸
StrucEl=13, //¦ûõüõýª ¸ª¨ºú
MtrOn=14, //¦õª¨øúð òúû¦¢
MtrImp1=15, //¦õªpøúð ÷ðøü¸
PrecCoord=16, //Tþ¢ývõ úþþ¨ôø
PointChg=17, //¦ðüõýð ýð ªþ¢
MtrImp2=18, //¦õªpøúð ÷ðøü¸
Rel=29 //+ªýþ°õýøõ põð
)
TFeatureType enum byte (
ftInt=1, // int
ftDouble=2, // double
ftFixed=3, //ôõù¸ªòøªõû¹ýþõ ¢ø¸ûþ ò òøôõ ôòº¿ ¡õûv¿ ¢ø¸õû
ftText=4, //ªõú¸ª (1-ù ñðùª - úþûø¢õ¸ªòþ ¸øüòþûþò,
//þ¸ªðû¹ývõ - ¸øüòþûv ò úþôõ ASCII. Tõú¸ª
//÷ðýøüðõª ÿþûýþõ úþûø¢õ¸ªòþ ¸ûþò)
ftStrucNum=5,//¸ª¨ºúªº¨ýþõ ¢ø¸ûþ - üð¸¸øò (1-õ ¸ûþòþ -
//úþûø¢õ¸ªòþ ¸ûþò ò ¢ø¸ûõ, þ¸ªðû¹ývõ -
//¸ûþò𠸪¨ºúªº¨ýþóþ ¢ø¸ûð)
ftFloat= 6, // float
ftNull=7, // ñõ÷ ÷ýð¢õýø
ftCoord=8, //óõþó¨ð¯ø¢õ¸úð úþþ¨ôøýðªð - 8 ñðùª (1-õ
//¸ûþòþ - ó¨ðôº¸v (int), 2-õ ¸ûþòþ - üøýºªv
//(int), 3 ø 4-õ ¸ûþòð - ¸õúºýôv (float))
ftComplex=10 //¨ð÷þñ¨ðýð ¸ûþöýð ¿ð¨ðúªõ¨ø¸ªøúð
)
/*
TFeatCode struc
byte X //??? =õÿþý ªýþóþ ýð÷ýð¢õýø
byte CodeCnt
array[((@.CodeCnt-1)when(@.CodeCnt>0))exc 0]of byte:displ=(ShowArray(@,(INT(@),'.'))) Code
align 2 AlCode
ends
*/
//-¨ºóþõ þÿ¨õôõûõýøõ, ¢ªþñv ÿ¨ðòøû¹ýþ þªþñ¨ðö𪹠÷ýð¢õýø
// ¸ ÿõ¨õÿºªðýývü ÿþ¨ ôúþü ñðùª
TFeatCode struc
word CntAnd1
array[@.CntAnd1 shr 9]of Word Code
ends:displ=(Int(@.CntAnd1 shr 8),':',Int(@.CntAnd1 and 0xFF),'.',
ShowArray(@.Code,(INT(@ shr 8),'.',INT(@ and 0xFF),'.')))
type bit
TBit1 num+(1)
TBit8 num+(8)
TBit11 num+(11)
TBit20 num+(20)
TBit23 num+(23)
TDoubleHi struc
TBit20 M
TBit11 P
TBit1 S //Sign 1->Neg
ends
TFloat struc
TBit23 M
TBit8 P
TBit1 S //Sign 1->Neg
ends: displ=(@.S,' 1.',HEX(@.M*2,6),'*2^',INT(@.P-0x7F));
type
TDouble struc
ulong Lo
TDoubleHi Hi
ends: displ=(@.Hi.S,' 1.',HEX(@.Hi.M,5),HEX(@.Lo,8),'*2^',INT(@.Hi.P-0x3FF));
TFixed struc
int Hi
word Lo
ends: displ=(INT(@.Hi),'.',HEX(@.Lo))
TText struc
str V
align 2 Al
ends
TStrucNum struc
int Cnt
array[@.Cnt/*??? - øûø -1*/] of int:displ=(ShowArray(@,(@,'.'))) V
ends
TGeoCoord struc
int Deg //1-õ ¸ûþòþ - ó¨ðôº¸v (int)
int Min //2-õ ¸ûþòþ - üøýºªv (int)
TFloat Sec //3 ø 4-õ ¸ûþòð - ¸õúºýôv (float))
ends
TMCoord struc
// int X
// int Y
word X
word Y
ends
/*
TComplexFeatVal struc
word Sz
raw[] VRest
ends:[@:Size=(@.Sz+1)*2]
*/
type
TFeatures forward
TFeature struc
word LX //¨ð÷üõ¨ ¿ð¨ðúªõ¨ø¸ªøúø ò ¸ûþòð¿
byte T //úþûø¢õ¸ªòþ ªþ¢õú ÿ¨øò ÷úø (0,1,2,3)
TFeatureType ITP //ªøÿ ¿ð¨ðúªõ¨ø¸ªøúø :
TFeatCode Code
case @.ITP of
ftInt: int
ftDouble: TDouble
ftFixed: TFixed
ftText: TText
ftStrucNum: TStrucNum
ftFloat: TFloat
ftNull: void
ftCoord: TGeoCoord
ftComplex: TFeatures//TComplexFeatVal
endc V //(i+1) - l - ÷ýð¢õýøõ ¿ð¨ðúªõ¨ø¸ªøúø (õ¸ûø þýþ õ¸ª¹)
array[@.T]of TMCoord LP //(l+1) - n - úþþ¨ôøýðªv ªþ¢õú ÿ¨øò ÷úø (õ¸ûø þýø õ¸ª¹)
raw[] rest
ends:[@:Size=@.LX*2] //:assert[@.LX>0]
/*
TFeatureX try
F: TFeature
Z: word
endt
*/
PFeatures(Base) ^TFeatures near=word REF=@*2+@:Base;
TFeatures struc
word LX //¨ð÷üõ¨ ÿþû ¿ð¨ðúªõ¨ø¸ªøú ò ¤ûõüõýªð¿ üð¸¸øòð
// (¸ðü ýºûõòþù ¤ûõüõýª ýõ ò¿þôøª ò ¤ªþª ¨ð÷üõ¨)
array of TFeature:[@:Size=@@.LX*2] Tbl
ends
PLinks(Base) ^TLinks near=word REF=@*2+@:Base;
TLink struc
word LS //O - ¨ð÷üõ¨ ¸ò ÷ø ò ¤ûõüõýªð¿ üð¸¸øòð (¸ðü LS º¢øªvòðõª¸ )
int KLS //1 - úû¦¢ ¸ò ÷ø, ÿþô úþªþ¨vü þýð ÷ðÿø¸vòðõª¸ ò
// ñð÷º ôðýýv¿ ø ÿþ úþªþ¨þüº ò ôðû¹ýõù°õü ôþ
// ýõõ üþöýþ ñv¸ª¨þ ôþñ¨ðª¹¸ (1 - 32767). +¸ûø
// KLS=0, ªþ ¸ò ÷¹ ýõ º¢ð¸ªòºõª ò þÿõpð¡ø ¿ ÷ðÿø¸ø ø ºôðûõýø
TObjCode Code //2 - 10 - úþô ¸ò ÷ðýýþóþ þñ¹õúªð
int Num //11 - ýþüõ¨ ¸ò ÷ðýýþóþ þñ¹õúªð
int Rsrv//12 - ò¸õóôð 0
ulong LogS //13,14 - ûþóø¢õ¸úð °úðûð ¸ò ÷ø
TFeatures LSF //15 - ÿþûõ ¿ð¨ðúªõ¨ø¸ªøú, õ¸ûø þýþ õ¸ª¹, øûø 0 ò ¤ûõü.15
ends:[@:Size=@.LS*2]
TLinks struc
word KS // O - úþûø¢õ¸ªòþ ¸ò ÷õù
array[@.KS] of TLink Tbl // 1-¸þòþúºÿýþ¸ª¹ ¸ò ÷õù þñ¹õúªð
ends
PIntrs(Base) ^TIntrs near=word REF=@*2+@:Base;
TIntr struc
word LP //O - ¨ð÷üõ¨ ÿ¨õ¨vòðýø ò ¤ûõüõýªð¿ üð¸¸øòð (¸ðü LP º¢øªvòðõª¸ )
int KLP //1 - úû¦¢ ÿ¨õ¨vòðýø , ÿþô úþªþ¨vü þýþ ÷ðÿø¸vòðõª¸ ò ñð÷º ôðýýv¿
// (1 - 32767) . õ¸ûø 0, ªþ ÿpõpvòðýøõ ýõ º¢ð¸ªòºõª ò þÿõpð¡ø ¿
// ÷ðÿø¸ø ø ºôðûõýø ø ÿþ úþªþ¨þüº ò ôðû¹ýõù°õü
// ôþ ýõóþ üþöýþ ñv¸ª¨þ ôþñ¨ðª¹¸
TObjCode Code //2 - 10 - úþô ÿ¨õ¨vòð¦•õóþ þñ¹õúªð
int Num //11 - ýþüõ¨ ÿ¨õ¨vòð¦•õóþ þñ¹õúªð
int hRefP //12 - ýþüõ¨ ªþ¢úø ò üõª¨øúõ þñ¹õúªð, ú úþªþ¨þù
// ÿ¨øò ÷ðýþ ÿ¨õ¨vòðýøõ, øûø 0
TLogSIntr LogS //13,14 - ûþóø¢õ¸úð °úðûð ÿ¨õ¨vòðýø
TFeatures LP //15 - ÿþûõ ¿ð¨ðúªõ¨ø¸ªøú, õ¸ûø þýþ õ¸ª¹, øûø 0 ò ¤ûõü.15
ends:[@:Size=@.LP*2]
TIntrs struc
word KP // O - úþûø¢õ¸ªòþ ÿ¨õ¨vòðýøù
array[@.KP] of TIntr Tbl // 1-¸þòþúºÿýþ¸ª¹ ÿ¨õ¨vòðýøù þñ¹õúªð
ends
PMetrics(Base) ^TMetrics near=word REF=@*2+@:Base;
TMetrics struc
word KM // úþûø¢õ¸ªòþ ¤ûõüõýªþò ÿþ 4 ñðùªð ò ÿþûõ ñõ÷
// º¢õªð ¸ðüþóþ KM
array[@.KM] of TMCoord Tbl
// ªþ¢úø üõªpøúø, úþªþ¨võ ÷ðô𦪸 ÿð¨þù
// úþþ¨ôøý𪠿 ø º, ÷ðýøüð¦•ø¿ ÿþ þôýþüº ¸ûþòº
// ø òv¨ðöõýýv¿ ¡õûvüø ¢ø¸ûðüø ò ôõ¸ ªv¿ ôþû ¿ üøûûøüõª¨ð.
ends
PSquares(Base) ^TSquares near=word REF=@*2+@:Base;
TSquares struc //T úðúøõ úòðô¨ðªv ÿþÿðôðõª þñ·õúª
word KK // úþûø¢õ¸ªòþ úòðô¨ðªþò (¤ûõüõýªþò ÿþ 4 ñðùªð)
array[@.KK] of TMCoord Tbl //¸þòþúºÿýþ¸ª¹ ¤ûõüõýªþò ÿþ 4 ñðùªð
//(ýþüõ¨ð úòðô¨ðªþò)
ends
TObjectHdr(N) struc
TRecTag Tag //0 - üõªúð øýªõó¨ðû¹ýþóþ ¯ðùûð (¢ø¸ûþ 777)
PFeatures(&@) AX //1 - ýþüõ¨ ¤ûõüõýªð ò üð¸¸øòõ, ¸ úþªþ¨þóþ
//ýð¢øýðõª¸ ÿþûõ ¿ð¨ðúªõ¨ø¸ªøú
PLinks(&@) AS //2 - ýþüõ¨ ¤ûõüõýªð ò üð¸¸øòõ, ¸ úþªþ¨þóþ
//ýð¢øýðõª¸ ÿþûõ ¸ò ÷õù
PIntrs(&@) AP //3 - ýþüõ¨ ¤ûõüõýªð ò üð¸¸øòõ, ¸ úþªþ¨þóþ
//ýð¢øýðõª¸ ÿþûõ ÿ¨õ¨vòðýøù
PSquares(&@) AK //4 - ýþüõ¨ ¤ûõüõýªð ò üð¸¸øòõ, ¸ úþªþ¨þóþ
//ýð¢øýðõª¸ ÿþûõ úòðô¨ðªþò
PMetrics(&@) AM //5 - ýþüõ¨ ¤ûõüõýªð ò üð¸¸øòõ, ¸ úþªþ¨þóþ
//ýð¢øýðõª¸ ÿþûõ üõª¨øúø
int AccLvl //6 - º¨þòõý¹ ôþ¸ªºÿð ú þñ¹õúªº (û¦ñþõ ¢ø¸ûþ þª
// -32768 ôþ +32767). ¦þû¹÷þòðªõû¹, ºúð÷ðò°øù
// ÿ¨ø ¢ªõýøø º¨þòõý¹ ôþ¸ªºÿð ýøöõ ÷ðÿø¸ðýýþóþ
//ò þñ¹õúªõ, ýõ ¸üþöõª õóþ ÿ¨þ¢øªðª¹
TObjCode Code //7-15 - úþô þñ¹õúªð
int Num //16 - ýþüõ¨ þñ¹õúªð (> 0 ø <=32767)
TLogSObj LogS //17,18 - ûþóø¢õ¸úð °úðûð þñ¹õúªð
PObjectRec(@:N+1,&@) Size //19,20 - ¨õ÷õ¨ò
// ulong Size //19,20 - ¨õ÷õ¨ò
// raw[] at &@; rest
ends:assert[@.Tag=TRecTag.Obj] //:[@:Size=@.Size*2]
TObjectRec(N) try
H: TObjectHdr(@:N)
Els: void
endt:autoname=('obj_',INT(@:N))
//TObjectTbl array of TObjectHdr ?@.Tag<>TrecTag.Obj!void;
data
0x04 TInfHead Hdr
//0x60 TObjectTbl ObjTbl
0x60 TObjectRec(0) Obj0
Other specifications.
FlexT home page,
Author`s home page.