¾¤Î¥Ð¡¼¥¸¥ç¥ó¤Îʸ½ñ ¡§ 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

9.10. ´ö²¿´Ø¿ô¤È±é»»»Ò

point¡¢box¡¢lseg¡¢line¡¢path¡¢polygon¡¢¤ª¤è¤Ócircle´ö²¿¥Ç¡¼¥¿·¿¤Ë¤Ï¡¢PostgreSQL¤¬¸µ¡¹¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë´Ø¿ô¤È±é»»»Ò¤¬Ë­É٤˷¤Ã¤Æ¤¤¤Þ¤¹¡£ (ɽ9-28¡¢É½9-29¡¢¤ª¤è¤Óɽ9-30¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£)

ɽ 9-28. ´ö²¿¥Ç¡¼¥¿±é»»»Ò

±é»»»ÒÀâÌÀÎã
+ Ê¿¹Ô°Üưbox '((0,0),(1,1))' + point '(2.0,0)'
- Ê¿¹Ô°Üưbox '((0,0),(1,1))' - point '(2.0,0)'
* ³ÈÂç½Ì¾®/²óžbox '((0,0),(1,1))' * point '(2.0,0)'
/ ³ÈÂç½Ì¾®/²óžbox '((0,0),(2,2))' / point '(2.0,0)'
# ¸òº¹ÅÀ¡¢¸òº¹¶ë·Á'((1,-1),(-1,1))' # '((1,1),(-1,-1))'
# ·ÐÏ©¤â¤·¤¯¤Ï¿³Ñ·Á¤ÎÅÀ¤Î¿ô# '((1,0),(0,1),(-1,0))'
@-@ Ťµ¤â¤·¤¯¤Ï±ß¼þ@-@ path '((0,0),(1,0))'
@@ Ãæ¿´@@ circle '((0,0),10)'
## Âè°ì±é»»¹àÌܤÈÂèÆó±é»»¹àÌܤȤζáÀÜÅÀpoint '(0,0)' ## lseg '((2,0),(0,2))'
<-> µ÷Î¥circle '((0,0),1)' <-> circle '((5,0),1)'
&& ½Å¤Ê¤ë¤«¤É¤¦¤«?box '((0,0),(1,1))' && box '((0,0),(2,2))'
&< ±¦Â¦¤Ë¤Ï¤ß¤À¤µ¤Ê¤¤¤«?box '((0,0),(1,1))' &< box '((0,0),(2,2))'
&> º¸Â¦¤Ë¤Ï¤ß¤À¤µ¤Ê¤¤¤«?box '((0,0),(3,3))' &> box '((0,0),(2,2))'
<< º¸Â¦¤Ë¤¢¤ë¤«?circle '((0,0),1)' << circle '((5,0),1)'
>> ±¦Â¦¤Ë¤¢¤ë¤«?circle '((5,0),1)' >> circle '((0,0),1)'
<^ ²¼¤Ë¤¢¤ë¤«?circle '((0,0),1)' <^ circle '((0,5),1)'
>^ ¾å¤Ë¤¢¤ë¤«?circle '((0,5),1)' >^ circle '((0,0),1)'
?# ¸ò¤ï¤ë¤«?lseg '((-1,0),(1,0))' ?# box '((-2,-2),(2,2))'
?- ¿åÊ¿¤«??- lseg '((-1,0),(1,0))'
?- ¿åÊ¿Êý¸þ¤Ë·¤Ã¤Æ¤¤¤ë¤«?point '(1,0)' ?- point '(0,0)'
?| ¿âľ¤«??| lseg '((-1,0),(1,0))'
?| ¿âľÊý¸þ¤Ë·¤Ã¤Æ¤¤¤ë¤«?point '(0,1)' ?| point '(0,0)'
?-| ľ³Ñ¤ò¤Ê¤¹¤«?lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))'
?|| Ê¿¹Ô¤«?lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))'
~ ´Þ¤à¤«?circle '((0,0),2)' ~ point '(1,1)'
@ ´Þ¤à¤«¡¢¶­³¦¾å¤«?point '(1,1)' @ circle '((0,0),2)'
~= Ʊ°ì¤«?polygon '((0,0),(1,1))' ~= polygon '((1,1),(0,0))'

ɽ 9-29. ´ö²¿¥Ç¡¼¥¿´Ø¿ô

´Ø¿ôÌá¤êÃÍÀâÌÀÎã
area(object)double precisionÌÌÀÑarea(box '((0,0),(1,1))')
box_intersect(box, box)box¶ë·Á¤Î¸òº¹box_intersect(box '((0,0),(1,1))',box '((0.5,0.5),(2,2))')
center(object)pointÃæ¿´center(box '((0,0),(1,2))')
diameter(circle)double precision±ß¤Îľ·Âdiameter(circle '((0,0),2.0)')
height(box)double precision¶ë·Á¤Î¹â¤µheight(box '((0,0),(1,1))')
isclosed(path)booleanÊÄ·ÐÏ©¤«?isclosed(path '((0,0),(1,1),(2,0))')
isopen(path)boolean³«·ÐÏ©¤«?isopen(path '[(0,0),(1,1),(2,0)]')
length(object)double precisionŤµlength(path '((-1,0),(1,0))')
npoints(path)integerÅÀ¤Î¿ônpoints(path '[(0,0),(1,1),(2,0)]')
npoints(polygon)integerÅÀ¤Î¿ônpoints(polygon '((1,1),(0,0))')
pclose(path)pathÊÄ·ÐÏ©¤ËÊÑ´¹pclose(path '[(0,0),(1,1),(2,0)]')
popen(path)path³«·ÐÏ©¤ËÊÑ´¹popen(path '((0,0),(1,1),(2,0))')
radius(circle)double precision±ß¤ÎȾ·Âradius(circle '((0,0),2.0)')
width(box)double precision¶ë·Á¤ÎÉýwidth(box '((0,0),(1,1))')

ɽ 9-30. ´ö²¿·¿ÊÑ´¹´Ø¿ô

´Ø¿ôÌá¤êÃÍÀâÌÀÎã
box(circle)box±ß¤«¤é¶ë·Ábox(circle '((0,0),2.0)')
box(point, point)boxºÂɸÅÀ¤ò¶ë·Á¤ËÊÑ´¹box(point '(0,0)', point '(1,1)')
box(polygon)box¿³Ñ·Á¤ò¶ë·Á¤ËÊÑ´¹box(polygon '((0,0),(1,1),(2,0))')
circle(box)circle¶ë·Á¤ò±ß¤ËÊÑ´¹circle(box '((0,0),(1,1))')
circle(point, double precision)circleÃæ¿´ÅÀ¤ÈȾ·Â¤«¤é±ß¤ËÊÑ´¹circle(point '(0,0)', 2.0)
lseg(box)lseg¶ë·Á¤ÎÂгÑÀþ¤òÀþʬ¤ËÊÑ´¹lseg(box '((-1,0),(1,0))')
lseg(point, point)lsegºÂɸÅÀ¤òÀþʬ¤ËÊÑ´¹lseg(point '(-1,0)', point '(1,0)')
path(polygon)point¿³Ñ·Á¤ò·ÐÏ©¤ËÊÑ´¹path(polygon '((0,0),(1,1),(2,0))')
point(double precision, double precision)pointºÂɸÅÀ¤òÀ¸À®point(23.4, -44.5)
point(box)point¶ë·Á¤ÎÃæ¿´point(box '((-1,0),(1,0))')
point(circle)point±ß¤ÎÃæ¿´point(circle '((0,0),2.0)')
point(lseg)pointÀþʬ¤ÎÃæ¿´point(lseg '((-1,0),(1,0))')
point(lseg, lseg)point¸òº¹point(lseg '((-1,0),(1,0))', lseg '((-2,-2),(2,2))')
point(polygon)point¿³Ñ·Á¤ÎÃæ¿´point(polygon '((0,0),(1,1),(2,0))')
polygon(box)polygon¶ë·Á¤«¤é4ÅÀ¤Î¿³Ñ·Ápolygon(box '((0,0),(1,1))')
polygon(circle)polygon±ß¤«¤é12³Ñ·Ápolygon(circle '((0,0),2.0)')
polygon(npts, circle)polygon±ß¤«¤énpts³Ñ·Ápolygon(12, circle '((0,0),2.0)')
polygon(path)polygon·ÐÏ©¤«¤é¿³Ñ·Ápolygon(path '((0,0),(1,1),(2,0))')

point¤Î2¤Ä¤Î¹½À®Í×ÁǤϡ¢Åº»ú0¡¢1¤òÍ­¤¹¤ëÇÛÎó¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤Î¤ÈƱ¤¸¤è¤¦¤Ë¡¢¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ Î㤨¤Ð¡¢t.p¤¬pointÎó¤Î¾ì¹ç¡¢SELECT p[0] FROM t ¤È¤¤¤¦¼°¤ÇXºÂɸÅÀ¤òÃê½Ð¤Ç¤­¤Þ¤¹¡£ ¤Þ¤¿¡¢UPDATE t SET p[1] = ...¤ÇYºÂɸÅÀ¤òÊѹ¹¤Ç¤­¤Þ¤¹¡£ ƱÍͤˡ¢box¤Þ¤¿¤Ïlseg¤Ç¤â¡¢2¤Ä¤Îpoint¤«¤é¤Ê¤ëÇÛÎó¤Î¤è¤¦¤Ë°·¤¦¤³¤È¤¬²Äǽ¤Ç¤¹¡£

area´Ø¿ô¤Ï¡¢box¡¢circle¡¢path·¿¤ËÂФ·¤ÆÆ°ºî¤·¤Þ¤¹¡£ path¥Ç¡¼¥¿·¿¤ËÂФ¹¤ëarea´Ø¿ô¤Ï¡¢¤½¤Îpath¤¬¸òºµ¤·¤Ê¤¤¾ì¹ç¤Ë¤Î¤ßưºî¤·¤Þ¤¹¡£ Î㤨¤Ð¡¢'((0,0),(0,1),(2,1),(2,2),(1,2),(1,0),(0,0))'::PATH¤È¤¤¤¦path¤Ïưºî¤·¤Þ¤»¤ó¡£ ¤·¤«¤·¡¢¸«¤¿ÌÜ¤ÏÆ±¤¸¤Ç¤¹¤¬¡¢'((0,0),(0,1),(1,1),(1,2),(2,2),(2,1),(1,1),(1,0),(0,0))'::PATH¤È¤¤¤¦path¤Ç¤Ïưºî¤·¤Þ¤¹¡£ path¤Î¸òºµ¤¹¤ë¡¢¤·¤Ê¤¤¤È¤¤¤¦³µÇ°¤¬¤è¤¯¤ï¤«¤é¤Ê¤±¤ì¤Ð¡¢¾å¤Î2¤Ä¤Îpath¤òʤ٤ƥ°¥é¥ÕÍÑ»æ¤Ë½ñ¤¤¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£