ArcInfo Shape file(SHP.rfh):
Class: GIS files, Status: Complete, Last change: 20.12.2022 14:53:48
/* Information source:
==================================================
ArcView(R) Version 2 Shapefile Technical Description
An ESRI White Paper
==================================================
*/
include shp.rfi
type
TXPointM struc
TDouble X
TDouble Y
TDouble M
ends
TXPointZ struc
TDouble X
TDouble Y
TDouble Z
TDouble M
ends
TXPointTbl(N) array[@:N] of TXPoint
TMTbl(N) struc
TDouble Vmin
TDouble Vmax
array[@:N] of TDouble Tbl
ends
TMultyPointData struc
TBBox BBox
long NumPoints
TXPointTbl(@.NumPoints) Points
ends
TMultyPointDataM struc
TMultyPointData A
TMTbl(@.A.NumPoints) M
ends
TMultyPointDataZ struc
TMultyPointData A
TMTbl(@.A.NumPoints) Z
TMTbl(@.A.NumPoints) M
ends
function calcArea(TXPoint& El, .V)=V + (El.X-(El:@ as TXPointTbl)[!El:#-1].X)*(El.Y+(El:@ as TXPointTbl)[!El:#-1].Y);
type
TArcData(Closed) struc
TBBox BBox
long NumParts
long NumPoints
array[@.NumParts] of long Parts
array[@.NumParts] of struc
TXPointTbl((@@@.Parts[@:#+1] exc @@@.NumPoints)-@@@.Parts[@:#]) T
ends:displ=(@.T,case @@@:Closed of
1: (' area=',FoldL(0,calcArea,@.T))
endc) Points
ends
TArcDataM(Closed) struc
TArcData(@:Closed) A
TMTbl(@.A.NumPoints) M
ends
TArcDataZ(Closed) struc
TArcData(@:Closed) A
TMTbl(@.A.NumPoints) Z
TMTbl(@.A.NumPoints) M
ends
TPartType enum long (
TriStrip = 0,
TriFan = 1,
OuterRing = 2,
InnerRing = 3,
FirstRing = 4,
Ring = 5
)
TMultiPatch struc
TBBox BBox
long NumParts
long NumPoints
array[@.NumParts] of long Parts
array[@.NumParts] of TPartType PartTypes
array[@.NumParts] of struc
TXPointTbl((@@@.Parts[@:#+1] exc @@@.NumPoints)-@@@.Parts[@:#]) T
ends Points
TMTbl(@.NumPoints) Z
TMTbl(@.NumPoints) M
ends
TShapeRecData(Len) struc
TShapeType ST
case @.ST of
Point: TXPoint
PointZ: TXPointZ
PointM: TXPointM
PolyLine,Polygon: TArcData(@@.ST=TShapeType.Polygon)
PolyLineM,PolygonM: TArcDataM(@@.ST=TShapeType.PolygonM)
PolyLineZ,PolygonZ: TArcDataZ(@@.ST=TShapeType.PolygonZ)
MultiPoint: TMultyPointData
MultiPointZ: TMultyPointDataZ
MultiPointM: TMultyPointDataM
MultiPatch: TMultiPatch
endc SD
(raw[]at &@;) rest
ends:[@:Size=@:Len*2]:assert[@.ST=Hdr.ShapeType]
TShapeRec struc
longrev RecNo
ulongrev Len
TShapeRecData(@.Len) Data
ends
data
Hdr:Size (array of TShapeRec:[@:Size=FileSize-&@]) Tbl
descr ('ESRI Shapefile',NL)
descr ('Info Source: ESRI Shapefile Technical Description, July 1998, An ESRI White Paper',NL)
descr (' ',URL('https://www.esri.com/Library/Whitepapers/Pdfs/Shapefile.pdf'),NL)
Other specifications.
FlexT home page,
Author`s home page.