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

数据库系统

开发平台:

Unix_Linux

  1. --
  2. -- Points
  3. --
  4. SELECT '' AS four, center(f1) AS center
  5.    FROM BOX_TBL;
  6. SELECT '' AS four, (@@ f1) AS center
  7.    FROM BOX_TBL;
  8. SELECT '' AS six, point(f1) AS center
  9.    FROM CIRCLE_TBL;
  10. SELECT '' AS six, (@@ f1) AS center
  11.    FROM CIRCLE_TBL;
  12. SELECT '' AS two, (@@ f1) AS center
  13.    FROM POLYGON_TBL
  14.    WHERE (# f1) > 2;
  15. -- "is horizontal" function
  16. SELECT '' AS two, p1.f1
  17.    FROM POINT_TBL p1
  18.    WHERE ishorizontal(p1.f1, '(0,0)'::point);
  19. -- "is horizontal" operator
  20. SELECT '' AS two, p1.f1
  21.    FROM POINT_TBL p1
  22.    WHERE p1.f1 ?- '(0,0)'::point;
  23. -- "is vertical" function
  24. SELECT '' AS one, p1.f1
  25.    FROM POINT_TBL p1
  26.    WHERE isvertical(p1.f1, '(5.1,34.5)'::point);
  27. -- "is vertical" operator
  28. SELECT '' AS one, p1.f1
  29.    FROM POINT_TBL p1
  30.    WHERE p1.f1 ?| '(5.1,34.5)'::point;
  31. --
  32. -- Line segments
  33. --
  34. -- intersection
  35. SELECT '' AS count, p.f1, l.s, l.s # p.f1 AS intersection
  36.    FROM LSEG_TBL l, POINT_TBL p;
  37. -- closest point
  38. SELECT '' AS thirty, p.f1, l.s, p.f1 ## l.s AS closest
  39.    FROM LSEG_TBL l, POINT_TBL p;
  40. --
  41. -- Lines
  42. --
  43. --
  44. -- Boxes
  45. --
  46. SELECT '' as six, box(f1) AS box FROM CIRCLE_TBL;
  47. -- translation
  48. SELECT '' AS twentyfour, b.f1 + p.f1 AS translation
  49.    FROM BOX_TBL b, POINT_TBL p;
  50. SELECT '' AS twentyfour, b.f1 - p.f1 AS translation
  51.    FROM BOX_TBL b, POINT_TBL p;
  52. -- scaling and rotation
  53. SELECT '' AS twentyfour, b.f1 * p.f1 AS rotation
  54.    FROM BOX_TBL b, POINT_TBL p;
  55. SELECT '' AS twenty, b.f1 / p.f1 AS rotation
  56.    FROM BOX_TBL b, POINT_TBL p
  57.    WHERE (p.f1 <-> '(0,0)'::point) >= 1;
  58. --
  59. -- Paths
  60. --
  61. SET geqo TO 'off';
  62. SELECT '' AS eight, points(f1) AS npoints, f1 AS path FROM PATH_TBL;
  63. SELECT '' AS four, path(f1) FROM POLYGON_TBL;
  64. -- translation
  65. SELECT '' AS eight, p1.f1 + '(10,10)'::point AS dist_add
  66.    FROM PATH_TBL p1;
  67. -- scaling and rotation
  68. SELECT '' AS eight, p1.f1 * '(2,-1)'::point AS dist_mul
  69.    FROM PATH_TBL p1;
  70. RESET geqo;
  71. --
  72. -- Polygons
  73. --
  74. -- containment
  75. SELECT '' AS twentyfour, p.f1, poly.f1, poly.f1 ~ p.f1 AS contains
  76.    FROM POLYGON_TBL poly, POINT_TBL p;
  77. SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 @ poly.f1 AS contained
  78.    FROM POLYGON_TBL poly, POINT_TBL p;
  79. SELECT '' AS four, points(f1) AS npoints, f1 AS polygon
  80.    FROM POLYGON_TBL;
  81. SELECT '' AS four, polygon(f1)
  82.    FROM BOX_TBL;
  83. SELECT '' AS four, polygon(f1)
  84.    FROM PATH_TBL WHERE isclosed(f1);
  85. SELECT '' AS four, f1 AS open_path, polygon( pclose(f1)) AS polygon
  86.    FROM PATH_TBL
  87.    WHERE isopen(f1);
  88. -- convert circles to polygons using the default number of points
  89. SELECT '' AS six, polygon(f1)
  90.    FROM CIRCLE_TBL;
  91. -- convert the circle to an 8-point polygon
  92. SELECT '' AS six, polygon(8, f1)
  93.    FROM CIRCLE_TBL;
  94. --
  95. -- Circles
  96. --
  97. SELECT '' AS six, circle(f1, 50.0)
  98.    FROM POINT_TBL;
  99. SELECT '' AS four, circle(f1)
  100.    FROM BOX_TBL;
  101. SELECT '' AS two, circle(f1)
  102.    FROM POLYGON_TBL
  103.    WHERE (# f1) >= 3;
  104. SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance
  105.    FROM CIRCLE_TBL c1, POINT_TBL p1
  106.    WHERE (p1.f1 <-> c1.f1) > 0
  107.    ORDER BY distance, circle, point using <<;