9.11. ÐеомеÑÑиÑеÑкие ÑÑнкÑии и опеÑаÑоÑÑ
ÐÐ»Ñ Ð³ÐµÐ¾Ð¼ÐµÑÑиÑеÑкиÑ
Ñипов point, box, lseg, line, path, polygon и circle ÑазÑабоÑан болÑÑой Ð½Ð°Ð±Ð¾Ñ Ð²ÑÑÑоеннÑÑ
ÑÑнкÑий и опеÑаÑоÑов, пÑедÑÑавленнÑй в ТаблиÑе 9.35, ТаблиÑе 9.36 и ТаблиÑе 9.37.
ТаблиÑа 9.35. ÐеомеÑÑиÑеÑкие опеÑаÑоÑÑ
ÐпеÑаÑÐ¾Ñ ÐпиÑание ÐÑимеÑ(Ñ) |
|---|
ÐобавлÑÐµÑ ÐºÐ¾Ð¾ÑдинаÑÑ Ð²ÑоÑого аÑгÑменÑа Ñипа
|
СоединÑÐµÑ Ð´Ð²Ð° оÑкÑÑÑÑÑ Ð¿ÑÑи (еÑли один из пÑÑей замкнÑÑÑй, возвÑаÑÐ°ÐµÑ NULL).
|
ÐÑÑиÑÐ°ÐµÑ ÐºÐ¾Ð¾ÑдинаÑÑ Ð²ÑоÑого аÑгÑменÑа Ñипа
|
Ð£Ð¼Ð½Ð¾Ð¶Ð°ÐµÑ ÐºÐ¾Ð¾ÑдинаÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑоÑки пеÑвого аÑгÑменÑа на кооÑдинаÑÑ Ð²ÑоÑого аÑгÑменÑа Ñипа
|
ÐÐµÐ»Ð¸Ñ ÐºÐ¾Ð¾ÑдинаÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑоÑки пеÑвого аÑгÑменÑа на кооÑдинаÑÑ Ð²ÑоÑого аÑгÑменÑа Ñипа
|
ÐÑÑиÑлÑÐµÑ Ð¾Ð±ÑÑÑ Ð´Ð»Ð¸Ð½Ñ. ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐÑÑиÑлÑÐµÑ ÑенÑÑалÑнÑÑ ÑоÑкÑ. ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑоÑек. ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐÑÑиÑлÑÐµÑ ÑоÑÐºÑ Ð¿ÐµÑеÑеÑениÑ, а еÑли пеÑеÑеÑÐµÐ½Ð¸Ñ Ð½ÐµÑ, возвÑаÑÐ°ÐµÑ NULL. ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐÑÑиÑлÑÐµÑ Ð¿ÐµÑеÑеÑение двÑÑ Ð¿ÑÑмоÑголÑников, а еÑли пеÑеÑеÑÐµÐ½Ð¸Ñ Ð½ÐµÑ, возвÑаÑÐ°ÐµÑ NULL.
|
ÐÑÑиÑлÑÐµÑ Ð±Ð»Ð¸Ð¶Ð°Ð¹ÑÑÑ Ðº пеÑÐ²Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ ÑоÑкÑ, пÑинадлежаÑÑÑ Ð²ÑоÑÐ¾Ð¼Ñ Ð¾Ð±ÑекÑÑ. ÐмееÑÑÑ Ð´Ð»Ñ ÑледÑÑÑиÑ
Ð¿Ð°Ñ Ñипов: (
|
ÐÑÑиÑлÑÐµÑ ÑаÑÑÑоÑние Ð¼ÐµÐ¶Ð´Ñ Ð¾Ð±ÑекÑами. ÐмееÑÑÑ Ð´Ð»Ñ Ð²ÑеÑ
геомеÑÑиÑеÑкиÑ
Ñипов кÑоме
|
ÐеÑвÑй обÑÐµÐºÑ ÑодеÑÐ¶Ð¸Ñ Ð²ÑоÑой? ÐмееÑÑÑ Ð´Ð»Ñ ÑледÑÑÑиÑ
Ð¿Ð°Ñ Ñипов: (
|
ÐеÑвÑй обÑÐµÐºÑ ÑодеÑжиÑÑÑ Ð²Ð¾ вÑоÑом? ÐмееÑÑÑ Ð´Ð»Ñ ÑледÑÑÑиÑ
Ð¿Ð°Ñ Ñипов: (
|
ÐбÑекÑÑ Ð¿ÐµÑеÑекаÑÑÑÑ? (ÐÐ»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑого ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð´Ð¾ÑÑаÑоÑно одной обÑей ÑоÑки.) ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐеÑвÑй обÑÐµÐºÑ ÑÑÑого Ñлева Ð¾Ñ Ð²ÑоÑого? ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐеÑвÑй обÑÐµÐºÑ ÑÑÑого ÑпÑава Ð¾Ñ Ð²ÑоÑого? ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐеÑвÑй обÑÐµÐºÑ Ð½Ðµ пÑоÑÑиÑаеÑÑÑ Ð¿Ñавее вÑоÑого? ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐеÑвÑй обÑÐµÐºÑ Ð½Ðµ пÑоÑÑиÑаеÑÑÑ Ð»ÐµÐ²ÐµÐµ вÑоÑого? ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐеÑвÑй обÑÐµÐºÑ ÑÑÑого ниже вÑоÑого? ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐеÑвÑй обÑÐµÐºÑ ÑÑÑого вÑÑе вÑоÑого? ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐеÑвÑй обÑÐµÐºÑ Ð½Ðµ пÑоÑÑиÑаеÑÑÑ Ð²ÑÑе вÑоÑого? ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐеÑвÑй обÑÐµÐºÑ Ð½Ðµ пÑоÑÑиÑаеÑÑÑ Ð½Ð¸Ð¶Ðµ вÑоÑого? ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
ÐеÑвÑй обÑÐµÐºÑ Ð½Ð¸Ð¶Ðµ (или каÑаеÑÑÑ ÑнизÑ) вÑоÑого?
|
ÐеÑвÑй обÑÐµÐºÑ Ð²ÑÑе (или каÑаеÑÑÑ ÑвеÑÑ Ñ) вÑоÑого?
|
ÐбÑекÑÑ Ð¿ÐµÑеÑекаÑÑÑÑ? ÐмееÑÑÑ Ð´Ð»Ñ ÑледÑÑÑиÑ
Ð¿Ð°Ñ Ñипов: (
|
ÐÐ¸Ð½Ð¸Ñ ÑвлÑеÑÑÑ Ð³Ð¾ÑизонÑалÑной?
|
ТоÑки вÑÑÐ¾Ð²Ð½ÐµÐ½Ñ Ð¿Ð¾ гоÑизонÑали (имеÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²ÑÑ ÐºÐ¾Ð¾ÑдинаÑÑ y)?
|
ÐÐ¸Ð½Ð¸Ñ ÑвлÑеÑÑÑ Ð²ÐµÑÑикалÑной?
|
ТоÑки вÑÑÐ¾Ð²Ð½ÐµÐ½Ñ Ð¿Ð¾ веÑÑикали (имеÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²ÑÑ ÐºÐ¾Ð¾ÑдинаÑÑ x)?
|
Ðинии пеÑпендикÑлÑÑнÑ?
|
Ðинии паÑаллелÑнÑ?
|
ÐбÑекÑÑ ÑовпадаÑÑ? ÐмееÑÑÑ Ð´Ð»Ñ Ñипов
|
[a] ÐÑи «повоÑоÑе» пÑÑмоÑголÑника ÑÑи опеÑаÑоÑÑ ÑолÑко пеÑемеÑаÑÑ ÐµÐ³Ð¾ ÑгловÑе ÑоÑки: ÑÑоÑÐ¾Ð½Ñ Ð¿ÑÑмоÑголÑника ÑÑиÑаÑÑÑÑ Ð²Ñегда паÑаллелÑнÑми оÑÑм. Таким обÑазом, ÑÑа опеÑаÑиÑ, в оÑлиÑие Ð¾Ñ Ð½Ð°ÑÑоÑÑего повоÑоÑа, изменÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¿ÑÑмоÑголÑника. |
Ðнимание
ÐамеÑÑÑе, ÑÑо опеÑаÑÐ¾Ñ Â«Ð¸Ð´ÐµÐ½ÑиÑноÑÑи», ~=, пÑедÑÑавлÑÐµÑ Ñобой обÑÑнÑÑ Ð¿ÑовеÑÐºÑ ÑавенÑÑва знаÑений point, box, polygon и circle. ÐÐ»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
геомеÑÑиÑеÑкиÑ
Ñипов опÑеделÑн Ñакже опеÑаÑÐ¾Ñ =, но = пÑовеÑÑÐµÑ ÑолÑко ÑавенÑÑво плоÑадей. ÐÑÑгие ÑкалÑÑнÑе опеÑаÑоÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ (<= и Ñ. д.) Ð´Ð»Ñ ÑеÑ
Ñипов, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
они ÑеализованÑ, Ñоже ÑÑавниваÑÑ Ð¿Ð»Ð¾Ñади.
ÐÑимеÑание
Ðо Postgres Pro 14 пÑименÑвÑиеÑÑ Ðº ÑоÑкам опеÑаÑоÑÑ point <<| point (ÑÑÑого ниже) и point |>> point (ÑÑÑого вÑÑе) назÑвалиÑÑ <^ и >^ ÑооÑвеÑÑÑвенно. ÐÑи имена по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð´Ð¾ÑÑÑпнÑ, но ÑÑиÑаÑÑÑÑ ÑÑÑаÑевÑими и в конÑе конÑов бÑдÑÑ ÑдаленÑ.
ТаблиÑа 9.36. ÐеомеÑÑиÑеÑкие ÑÑнкÑии
ТаблиÑа 9.37. ФÑнкÑии пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³ÐµÐ¾Ð¼ÐµÑÑиÑеÑÐºÐ¸Ñ Ñипов
РдвÑм компоненÑам Ñипа point (ÑоÑка) можно обÑаÑиÑÑÑÑ, как к ÑлеменÑам маÑÑива Ñ Ð¸Ð½Ð´ÐµÐºÑами 0 и 1. ÐапÑимеÑ, еÑли t.p â ÑÑÐ¾Ð»Ð±ÐµÑ Ñипа point, SELECT p[0] FROM t веÑнÑÑ ÐºÐ¾Ð¾ÑдинаÑÑ X, а UPDATE t SET p[1] = ... Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¾ÑдинаÑÑ Y. Таким же обÑазом, знаÑение Ñипа box или lseg можно воÑпÑинимаÑÑ ÐºÐ°Ðº маÑÑив двÑÑ
знаÑений Ñипа point.