8.8. ÐеомеÑÑиÑеÑкие ÑÐ¸Ð¿Ñ #
ÐеомеÑÑиÑеÑкие ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑедÑÑавлÑÑÑ Ð¾Ð±ÑекÑÑ Ð² двÑмеÑном пÑоÑÑÑанÑÑве. ÐÑе ÑÑÑеÑÑвÑÑÑие в Postgres Pro геомеÑÑиÑеÑкие ÑÐ¸Ð¿Ñ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ñ Ð² ТаблиÑе 8.20.
ТаблиÑа 8.20. ÐеомеÑÑиÑеÑкие ÑипÑ
| ÐÐ¼Ñ | Ð Ð°Ð·Ð¼ÐµÑ | ÐпиÑание | ÐÑедÑÑавление |
|---|---|---|---|
point | 16 Ð±Ð°Ð¹Ñ | ТоÑка на плоÑкоÑÑи | (x,y) |
line | 24 байÑа | ÐеÑконеÑÐ½Ð°Ñ Ð¿ÑÑÐ¼Ð°Ñ | {A,B,C} |
lseg | 32 байÑа | ÐÑÑезок | [(x1,y1),(x2,y2)] |
box | 32 байÑа | ÐÑÑмоÑголÑник | (x1,y1),(x2,y2) |
path | 16+16n Ð±Ð°Ð¹Ñ | ÐакÑÑÑÑй пÑÑÑ (подобнÑй многоÑголÑникÑ) | ((x1,y1),...) |
path | 16+16n Ð±Ð°Ð¹Ñ | ÐÑкÑÑÑÑй пÑÑÑ | [(x1,y1),...] |
polygon | 40+16n Ð±Ð°Ð¹Ñ | ÐногоÑголÑник (подобнÑй закÑÑÑÐ¾Ð¼Ñ Ð¿ÑÑи) | ((x1,y1),...) |
circle | 24 байÑа | ÐкÑÑжноÑÑÑ | <(x,y),r> (ÑенÑÑ Ð¾ÐºÑÑжноÑÑи и ÑадиÑÑ) |
Ðо вÑеÑ
ÑÑиÑ
ÑипаÑ
оÑделÑнÑе кооÑдинаÑÑ Ñ
ÑанÑÑÑÑ ÐºÐ°Ðº ÑиÑла Ñипа double precision (float8).
ÐÐ»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑазлиÑнÑÑ Ð³ÐµÐ¾Ð¼ÐµÑÑиÑеÑÐºÐ¸Ñ Ð¾Ð¿ÐµÑаÑий, в ÑаÑÑноÑÑи маÑÑÑабиÑованиÑ, вÑаÑÐµÐ½Ð¸Ñ Ð¸ опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿ÐµÑеÑеÑений, PostgreSQL пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ Ð±Ð¾Ð³Ð°ÑÑй Ð½Ð°Ð±Ð¾Ñ ÑÑнкÑий и опеÑаÑоÑов. Ðни ÑаÑÑмаÑÑиваÑÑÑÑ Ð² Разделе 9.11.
8.8.1. ТоÑки #
ТоÑки â ÑÑо оÑновной ÑлеменÑ, на базе коÑоÑого ÑÑÑоÑÑÑÑ Ð²Ñе оÑÑалÑнÑе геомеÑÑиÑеÑкие ÑипÑ. ÐнаÑÐµÐ½Ð¸Ñ Ñипа point запиÑÑваÑÑÑÑ Ð² одном из двÑÑ
ÑоÑмаÑов:
(x,y)x,y
где x и y â кооÑдинаÑÑ ÑоÑки на плоÑкоÑÑи, вÑÑаженнÑе ÑиÑлами Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой.
ÐÑводÑÑÑÑ ÑоÑки в пеÑвом ÑоÑмаÑе.
8.8.2. ÐÑÑмÑе #
ÐÑÑмÑе пÑедÑÑавлÑÑÑÑÑ Ð»Ð¸Ð½ÐµÐ¹Ð½Ñм ÑÑавнением Ax + By + C = 0, где A и B не могÑÑ Ð±ÑÑÑ ÑÐ°Ð²Ð½Ñ 0 одновÑеменно. ÐнаÑÐµÐ½Ð¸Ñ Ñипа line вводÑÑÑÑ Ð¸ вÑводÑÑÑÑ Ð² ÑледÑÑÑем виде:
{ A, B, C }
ÐÑоме Ñого, Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð° Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð»ÑÐ±Ð°Ñ Ð¸Ð· ÑÑÐ¸Ñ ÑоÑм:
[ (x1,y1) , (x2,y2) ] ( (x1,y1) , (x2,y2) ) (x1,y1) , (x2,y2)x1,y1,x2,y2
где ( и x1,y1)( â две ÑазлиÑнÑе ÑоÑки на данной пÑÑмой.x2,y2)
8.8.3. ÐÑÑезки #
ÐÑÑезок пÑедÑÑавлÑеÑÑÑ Ð¿Ð°Ñой ÑоÑек, опÑеделÑÑÑиÑ
конÑÑ Ð¾ÑÑезка. ÐнаÑÐµÐ½Ð¸Ñ Ñипа lseg запиÑÑваÑÑÑÑ Ð² одной из ÑледÑÑÑиÑ
ÑоÑм:
[ (x1,y1) , (x2,y2) ] ( (x1,y1) , (x2,y2) ) (x1,y1) , (x2,y2)x1,y1,x2,y2
где ( и x1,y1)( â конÑÑ Ð¾ÑÑезка.x2,y2)
ÐÑводÑÑÑÑ Ð¾ÑÑезки в пеÑвом ÑоÑмаÑе.
8.8.4. ÐÑÑмоÑголÑники #
ÐÑÑмоÑголÑник пÑедÑÑавлÑеÑÑÑ Ð´Ð²ÑÐ¼Ñ ÑоÑками, наÑ
одÑÑимиÑÑ Ð² пÑоÑивоположнÑÑ
его ÑглаÑ
. ÐнаÑÐµÐ½Ð¸Ñ Ñипа box запиÑÑваÑÑÑÑ Ð² одной из ÑледÑÑÑиÑ
ÑоÑм:
( (x1,y1) , (x2,y2) ) (x1,y1) , (x2,y2)x1,y1,x2,y2
где ( и x1,y1)( â пÑоÑивоположнÑе ÑÐ³Ð»Ñ Ð¿ÑÑмоÑголÑника.x2,y2)
ÐÑводÑÑÑÑ Ð¿ÑÑмоÑголÑники во вÑоÑой ÑоÑме.
Ðо вводимом знаÑении могÑÑ Ð±ÑÑÑ ÑÐºÐ°Ð·Ð°Ð½Ñ Ð»ÑбÑе два пÑоÑивоположнÑÑ Ñгла, но заÑем они бÑдÑÑ ÑпоÑÑдоÑенÑ, Ñак ÑÑо внÑÑÑи ÑÐ¾Ñ ÑанÑÑÑÑ Ð¿ÑавÑй веÑÑ Ð½Ð¸Ð¹ и левÑй нижний ÑглÑ, в Ñаком поÑÑдке.
8.8.5. ÐÑÑи #
ÐÑÑи пÑедÑÑавлÑÑÑ Ñобой ÑпиÑки ÑоединÑннÑÑ ÑоÑек. ÐÑÑи могÑÑ Ð±ÑÑÑ Ð·Ð°ÐºÑÑÑÑми, когда подÑазÑмеваеÑÑÑ, ÑÑо пеÑÐ²Ð°Ñ Ð¸ поÑледнÑÑ ÑоÑка в ÑпиÑке ÑоединенÑ, или оÑкÑÑÑÑми, в пÑоÑивном ÑлÑÑае.
ÐнаÑÐµÐ½Ð¸Ñ Ñипа path запиÑÑваÑÑÑÑ Ð² одной из ÑледÑÑÑиÑ
ÑоÑм:
[ (x1,y1) , ... , (xn,yn) ] ( (x1,y1) , ... , (xn,yn) ) (x1,y1) , ... , (xn,yn) (x1,y1, ... ,xn,yn)x1,y1, ... ,xn,yn
где ÑоÑки задаÑÑ ÑÐ·Ð»Ñ ÑегменÑов, ÑоÑÑавлÑÑÑиÑ
пÑÑÑ. ÐвадÑаÑнÑе Ñкобки ([]) ÑказÑваÑÑ, ÑÑо пÑÑÑ Ð¾ÑкÑÑÑÑй, а кÑÑглÑе (()) â закÑÑÑÑй. Ðогда внеÑние Ñкобки опÑÑкаÑÑÑÑ, как в показаннÑÑ
вÑÑе поÑледниÑ
ÑÑÑÑ
ÑоÑмаÑ
, ÑÑиÑаеÑÑÑ, ÑÑо пÑÑÑ Ð·Ð°ÐºÑÑÑÑй.
ÐÑÑи вÑводÑÑÑÑ Ð² пеÑвой или вÑоÑой ÑоÑме, в ÑооÑвеÑÑÑвии Ñ Ñипом.
8.8.6. ÐногоÑголÑники #
ÐногоÑголÑники пÑедÑÑавлÑÑÑÑÑ ÑпиÑками ÑоÑек (веÑÑин). ÐногоÑголÑники Ð¿Ð¾Ñ Ð¾Ð¶Ð¸ на закÑÑÑÑе пÑÑи, но важное ÑеманÑиÑеÑкое оÑлиÑие ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑо многоÑголÑник ÑÑиÑаеÑÑÑ ÑодеÑжаÑим облаÑÑÑ Ð²Ð½ÑÑÑи него, а пÑÑÑ â неÑ.
Ðажное ÑазлиÑие в ÑеализаÑии Ð¼ÐµÐ¶Ð´Ñ Ð¼Ð½Ð¾Ð³Ð¾ÑголÑниками и пÑÑÑми заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо ÑÐ¾Ñ ÑанÑнное пÑедÑÑавление многоÑголÑника вклÑÑÐ°ÐµÑ ÐµÐ³Ð¾ наименÑÑий окÑÑжаÑÑий пÑÑмоÑголÑник. ÐÑо ÑÑкоÑÑÐµÑ Ð¾Ð¿ÑеделÑннÑе опеÑаÑии поиÑка, Ñ Ð¾ÑÑ Ð²ÑÑиÑление окÑÑжаÑÑего пÑÑмоÑголÑника добавлÑÐµÑ Ð¸Ð·Ð´ÐµÑжки пÑи поÑÑÑоении новÑÑ Ð¼Ð½Ð¾Ð³Ð¾ÑголÑников.
ÐнаÑÐµÐ½Ð¸Ñ Ñипа polygon запиÑÑваÑÑÑÑ Ð² одной из ÑледÑÑÑиÑ
ÑоÑм:
( (x1,y1) , ... , (xn,yn) ) (x1,y1) , ... , (xn,yn) (x1,y1, ... ,xn,yn)x1,y1, ... ,xn,yn
где ÑоÑки задаÑÑ ÑÐ·Ð»Ñ ÑегменÑов, обÑазÑÑÑÐ¸Ñ Ð³ÑаниÑÑ Ð¼Ð½Ð¾Ð³Ð¾ÑголÑника.
ÐÑводÑÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ÑголÑники в пеÑвом ÑоÑмаÑе.
8.8.7. ÐкÑÑжноÑÑи #
ÐкÑÑжноÑÑи задаÑÑÑÑ ÐºÐ¾Ð¾ÑдинаÑами ÑенÑÑа и ÑадиÑÑом. ÐнаÑÐµÐ½Ð¸Ñ Ñипа circle запиÑÑваÑÑÑÑ Ð² одном из ÑледÑÑÑиÑ
ÑоÑмаÑов:
< (x,y) ,r> ( (x,y) ,r) (x,y) ,rx,y,r
где ( â ÑенÑÑ Ð¾ÐºÑÑжноÑÑи, а x,y)r â ÐµÑ ÑадиÑÑ.
ÐÑводÑÑÑÑ Ð¾ÐºÑÑжноÑÑи в пеÑвом ÑоÑмаÑе.