polygon.sql
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. -- *************testing built-in type polygon ****************
  2. --
  3. -- polygon logic
  4. --
  5. -- 3       o
  6. --       |
  7. -- 2     + |
  8. --    /  |
  9. -- 1   # o +
  10. --       /    |
  11. -- 0 #-----o-+
  12. --
  13. -- 0 1 2 3 4
  14. --
  15. CREATE TABLE POLYGON_TBL(f1 polygon);
  16. INSERT INTO POLYGON_TBL(f1) VALUES ('(2.0,0.0),(2.0,4.0),(0.0,0.0)');
  17. INSERT INTO POLYGON_TBL(f1) VALUES ('(3.0,1.0),(3.0,3.0),(1.0,0.0)');
  18. -- degenerate polygons 
  19. INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,0.0)');
  20. INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,1.0),(0.0,1.0)');
  21. -- bad polygon input strings 
  22. INSERT INTO POLYGON_TBL(f1) VALUES ('0.0');
  23. INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0 0.0');
  24. INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2)');
  25. INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3');
  26. INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
  27. SELECT '' AS four, POLYGON_TBL.*;
  28. -- overlap 
  29. SELECT '' AS three, p.*
  30.    FROM POLYGON_TBL p
  31.    WHERE p.f1 && '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
  32. -- left overlap 
  33. SELECT '' AS four, p.* 
  34.    FROM POLYGON_TBL p
  35.    WHERE p.f1 &< '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
  36. -- right overlap 
  37. SELECT '' AS two, p.* 
  38.    FROM POLYGON_TBL p
  39.    WHERE p.f1 &> '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
  40. -- left of 
  41. SELECT '' AS one, p.*
  42.    FROM POLYGON_TBL p
  43.    WHERE p.f1 << '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
  44. -- right of 
  45. SELECT '' AS zero, p.*
  46.    FROM POLYGON_TBL p
  47.    WHERE p.f1 >> '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
  48. -- contained 
  49. SELECT '' AS one, p.* 
  50.    FROM POLYGON_TBL p
  51.    WHERE p.f1 @ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon;
  52. -- same 
  53. SELECT '' AS one, p.*
  54.    FROM POLYGON_TBL p
  55.    WHERE p.f1 ~= '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon;
  56. -- contains 
  57. SELECT '' AS one, p.*
  58.    FROM POLYGON_TBL p
  59.    WHERE p.f1 ~ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon;
  60. --
  61. -- polygon logic
  62. --
  63. -- 3       o
  64. --       |
  65. -- 2     + |
  66. --    /  |
  67. -- 1   / o +
  68. --       /    |
  69. -- 0 +-----o-+
  70. --
  71. -- 0 1 2 3 4
  72. --
  73. -- left of 
  74. SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon << '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
  75. -- left overlap 
  76. SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon << '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS true;
  77. -- right overlap 
  78. SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon &> '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS true;
  79. -- right of 
  80. SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon >> '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
  81. -- contained in 
  82. SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon @ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
  83. -- contains 
  84. SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon ~ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
  85. -- same 
  86. SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon ~= '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
  87. -- overlap 
  88. SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon && '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS true;