Well-known binary 格式

  
The OpenGIS Consortium "Simple Features for SQL" specification defines the well-known binary representation. This representation is also defined by the International Organization for Standardization (ISO) "SQL/MM Part: 3 Spatial" standard. See the related reference section at the end of this topic for information on functions that accept and produce the WKB.
 
// Basic Type definitions
// byte : 1 byte
// uint32 : 32 bit unsigned integer (4 bytes)
// double : double precision number (8 bytes)
 
// Building Blocks : Point, LinearRing 
Point
 {
     double x;
     double y;
};
 
LinearRing
{
uint32 numPoints;
Point points[numPoints];
};
 
enum wkbGeometryType
{
     wkbPoint = 1,
     wkbLineString = 2,
     wkbPolygon = 3,
     wkbMultiPoint = 4,
     wkbMultiLineString = 5,
     wkbMultiPolygon = 6
};
 
enum wkbByteOrder
{
     wkbXDR = 0, // Big Endian
     wkbNDR = 1 // Little Endian
};
 
WKBPoint
{
byte byteOrder;
uint32 wkbType; // 1=wkbPoint
Point point;
};
 
WKBLineString
{
     byte byteOrder;
     uint32 wkbType; // 2=wkbLineString
     uint32 numPoints;
     Point points[numPoints];
};
 
WKBPolygon
 {
     byte byteOrder;
     uint32 wkbType; // 3=wkbPolygon
     uint32 numRings;
     LinearRing rings[numRings];
};
 
WKBMultiPoint
{
     byte byteOrder;
     uint32 wkbType; // 4=wkbMultipoint
     uint32 num_wkbPoints;
     WKBPoint WKBPoints[num_wkbPoints];
};
 
WKBMultiLineString
{
     byte byteOrder;
     uint32 wkbType; // 5=wkbMultiLineString
     uint32 num_wkbLineStrings;
     WKBLineString WKBLineStrings[num_wkbLineStrings];
};
 
wkbMultiPolygon
{
     byte byteOrder;
     uint32 wkbType; // 6=wkbMultiPolygon
     uint32 num_wkbPolygons;
     WKBPolygon wkbPolygons[num_wkbPolygons];
};
 
WKBGeometry
{
     union
     {
          WKBPoint point;
          WKBLineString linestring;
          WKBPolygon polygon;
          WKBMultiPoint mpoint;
          WKBMultiLineString mlinestring;
          WKBMultiPolygon mpolygon;
     }
};
 

posted on 2009-03-26 17:20  Dormouse  阅读(758)  评论(0)    收藏  举报

导航