Spatial Extender¿¡´Â 2Áø Ç¥Çö½ÄÀ¸·ÎºÎÅÍ ±âÇÏÇÐÀ» »ý¼ºÇÏ´Â ¿©·¯ ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù.
Àß ¾Ë·ÁÁø 2Áø Ç¥Çö½ÄÀº ¿¬¼ÓÀûÀÎ ¹ÙÀÌÆ® ½ºÆ®¸²ÀÔ´Ï´Ù. ODBC Ŭ¶óÀÌ¾ðÆ®¿Í SQL µ¥ÀÌÅͺ£À̽º »çÀÌ¿¡ ±âÇÏÇÐÀ» 2Áø ¾ç½ÄÀ¸·Î ±³È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±âÇÏÇÐ ÇÔ¼ö¿¡´Â 2Áø Ç¥Çö½ÄÀ» ¸ÊÆÎÇÏ´Â µ¥ C ÇÁ·Î±×·¡¹Ö ¾ð¾î ±¸Á¶ÀÇ Á¤Àǰ¡ ÇÊ¿äÇϹǷÎ, ÀÌ´Â 3¼¼´ë ¾ð¾î(3GL) ÇÁ·Î±×·¥ ³»¿¡¼ »ç¿ëµÉ ¿¹Á¤ÀÔ´Ï´Ù. 4¼¼´ë ¾ð¾î(4GL) ȯ°æ¿¡´Â ÀûÇÕÇÏÁö ¾Ê½À´Ï´Ù. ST_AsBinary ÇÔ¼ö´Â ±âÁ¸ÀÇ ±âÇÏÇÐ °ªÀ» Àß ¾Ë·ÁÁø 2Áø Ç¥Çö½ÄÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
±âÇÏÇп¡ ´ëÇÑ Àß ¾Ë·ÁÁø 2Áø Ç¥Çö½ÄÀº ±âÇÏÇÐ ÀνºÅϽº¸¦ ¼ýÀÚ À¯Çü ¼øÂ÷·Î Á÷·ÄÈÇÏ¿© ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ À¯ÇüµéÀº ¼¼Æ®(ºÎÈ£ ¾ø´Â Á¤¼ö, double)·ÎºÎÅÍ µµÃâµÈ ÈÄ, °¢ ¼ýÀÚ À¯ÇüÀº ¹ÙÀÌÆ® ¼ø¼·Î Á÷·Äȵ˴ϴÙ. À¯ÇüÀº ¼ýÀÚ À¯Çü¿¡ ´ëÇØ µÎ °¡Áö Àß Á¤ÀÇµÈ Ç¥ÁØ 2Áø Ç¥Çö½Ä(NDR, XDR) Áß Çϳª¸¦ »ç¿ëÇÏ¿© Á÷·Äȵ˴ϴÙ. Á÷·ÄÈµÈ ¹ÙÀÌÆ® ¾Õ¿¡ ¿À´Â 1¹ÙÀÌÆ® ű״ ±âÇÏÇÐ ¹ÙÀÌÆ® ¹®ÀÚ¿¿¡ »ç¿ëµÇ´Â ƯÁ¤ 2Áø ¾ÏÈ£È(NDR ¶Ç´Â XDR)¸¦ ³ªÅ¸³À´Ï´Ù. µÎ ±âÇÏÇÐÀÇ ¾ÏÈ£È »çÀÌ¿¡ À¯ÀÏÇÑ Â÷ÀÌÁ¡Àº ¹ÙÀÌÆ® ¼ø¼ÀÔ´Ï´Ù. XDR ¾Ïȣȴ Big EndianÀ̰í NDR ¾Ïȣȴ Little EndianÀÔ´Ï´Ù.
ºÎÈ£ ¾ø´Â Á¤¼ö´Â À½¼ö°¡ ¾Æ´Ñ Á¤¼ö¸¦ ¹üÀ§ [1, 4294967295]¿¡¼ ¾ÏÈ£ÈÇÏ´Â 32ºñÆ®(5¹ÙÀÌÆ®) µ¥ÀÌÅÍ À¯ÇüÀÔ´Ï´Ù.
doubleÀº IEEE 754 ¹èÁ¤¹Ðµµ Çü½ÄÀ» »ç¿ëÇÏ¿© ¹èÁ¤¹Ðµµ ¼ýÀÚ¸¦ ¾ÏÈ£ÈÇÏ´Â 64ºñÆ®(8¹ÙÀÌÆ®) ¹èÁ¤¹Ðµµ µ¥ÀÌÅÍ À¯ÇüÀÔ´Ï´Ù.
ÀÌ Á¤ÀÇ´Â XDR ¹× NDR ¸ðµÎ¿¡ °øÅëÀûÀÔ´Ï´Ù.
ºÎÈ£¾ø´Â Á¤¼öÀÇ XDR Ç¥Çö½ÄÀº Big Endian(°¡Àå Áß¿äÇÑ ¹ÙÀÌÆ® ¿ì¼±)ÀÔ´Ï´Ù.
doubleÀÇ XDR Ç¥Çö½ÄÀº Big Endian(ºÎÈ£ ºñÆ®°¡ ù¹øÂ° ºñÆ®)ÀÔ´Ï´Ù.
ºÎÈ£¾ø´Â Á¤¼öÀÇ NDR Ç¥Çö½ÄÀº Little Endian(ÃÖÀú Áß¿ä ¹ÙÀÌÆ® ¿ì¼±)ÀÔ´Ï´Ù.
doubleÀÇ NDR Ç¥Çö½ÄÀº Little Endian(ºÎÈ£ ºñÆ®°¡ ¸¶Áö¸· ¹ÙÀÌÆ®)ÀÔ´Ï´Ù.
ºÎÈ£¾ø´Â Á¤¼ö¿¡ ´ëÇÑ NDR ¹× XDR µ¥ÀÌÅÍ À¯Çü °£ÀÇ º¯È¯Àº °£´ÜÇÑ ÀÛ¾÷ÀÔ´Ï´Ù. ÀÌ¿¡´Â ¹ÙÀÌÆ® ½ºÆ®¸² ÇüÅÂÀÇ °¢ ºÎÈ£¾ø´Â Á¤¼ö ¶Ç´Â Double ³»ÀÇ ¹ÙÀÌÆ® ¼ø¼¸¦ ¿ªº¯È¯ÇÏ´Â ÀÛ¾÷µµ Æ÷ÇԵ˴ϴÙ.
ÀÌ Àý¿¡¼´Â ±âÇÏÇп¡ ´ëÇÑ Àß ¾Ë·ÁÁø 2Áø Ç¥Çö½Ä¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. ±âº»ÀûÀÎ ºôµù ºí·ÏÀº Á¡¿¡ ´ëÇÑ ¹ÙÀÌÆ® ½ºÆ®¸²À̸ç ÀÌ´Â µÎ Double·Î ±¸¼ºµË´Ï´Ù. ´Ù¸¥ ±âÇÏÇп¡ ´ëÇÑ ¹ÙÀÌÆ® ½ºÆ®¸²Àº ÀÌ¹Ì Á¤ÀÇµÈ ±âÇÏÇп¡ ´ëÇÑ ¹ÙÀÌÆ® ½ºÆ®¸²À» »ç¿ëÇÏ¿© ºôµåµË´Ï´Ù.
// 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 Point point; }; WKBLineString { byte byteOrder; uint32 wkbType; // 2 uint32 numPoints; Point points[numPoints]; }; WKBPolygon { byte byteOrder; uint32 wkbType; // 3 uint32 numRings; LinearRing rings[numRings]; }; WKBMultiPoint { byte byteOrder; uint32 wkbType; // 4 uint32 num_wkbPoints; WKBPoint WKBPoints[num_wkbPoints]; }; WKBMultiLineString { byte byteOrder; uint32 wkbType; // 5 uint32 num_wkbLineStrings; WKBLineString WKBLineStrings[num_wkbLineStrings]; }; wkbMultiPolygon { byte byteOrder; uint32 wkbType; // 6 uint32 num_wkbPolygons; WKBPolygon wkbPolygons[num_wkbPolygons]; }; ;WKBGeometry { union { WKBPoint point; WKBLineString linestring; WKBPolygon polygon; WKBMultiPoint mpoint; WKBMultiLineString mlinestring; WKBMultiPolygon mpolygon; } };
´ÙÀ½ ±×¸²¿¡¼´Â NDR Ç¥Çö½ÄÀ» º¸¿© ÁÝ´Ï´Ù.
±×¸² 39. NDR Çü½ÄÀÇ Ç¥Çö½Ä. (B=1)Àº 2°³ÀÇ ¼±(NR=2)À» °®´Â ´Ù°¢Çü À¯Çü(T=3), °¢ ¸µÀº 3°³ÀÇ Á¡(NP=3)À» °®À½.
±âÇÏÇп¡ ´ëÇÑ Àß ¾Ë·ÁÁø 2Áø Ç¥Çö½ÄÀº Geometry Object Model ¹× OpenGIS Abstract Specification¿¡ ¼¼úµÈ ±âÇÏÇÐ À¯ÇüÀÇ ÀνºÅϽº¸¦ ³ªÅ¸³»µµ·Ï ¼³°èµÇ¾ú½À´Ï´Ù.
ÀÌ·¯ÇÑ ÁÖÀå¿¡´Â ¸µ, ´Ù°¢Çü ¹× ´ÙÁß ´Ù°¢Çü¿¡ ´ëÇÑ ´ÙÀ½°ú °°Àº »çÇ×ÀÌ Æ÷ÇԵ˴ϴÙ.