# datatype.doc

Data Management

Nov 29, 2012 (5 years and 7 months ago)

276 views

8.7. Geometric Types

Geometric data types represent two
-
dimensional spatial objects.
Table 8
-
16

shows the geometric types available
in PostgreSQL. The most fundamental type, the point, forms th
e basis for all of the other types.

Table 8
-
16. Geometric Types

Name

Storage Size

Representation

Description

point

16 bytes

Point on the plane

(x,y)

line

32 bytes

Infinite line (not fully implemented)

((x1,y1),(x2,y2))

lseg

32 bytes

Finite line segment

((x1,y1),(x2,y2))

box

32 bytes

Rectangular box

((x1,y1),(x2,y2))

path

16+16n bytes

Closed path (similar to polygon)

((x1,y1),...)

path

16+16n bytes

Open path

[(x1,y1),...]

polygon

40+16n bytes

Polygon (similar to closed path)

((x1,y1),...)

circle

24
bytes

Circle

A rich set of functions and operators is available to perform various geometric operations such as scaling,
translation, rotation, and determining intersections. They are explained in
Section 9.9
.

8.7.1. Points

Points are the fundamental two
-
dimensional building block for geometric types. Values of type point are specified
using the following syntax:

( x , y )

x , y

where x and y are the respective coordinates as floating
-
point numbers.

8.7.2. Line Segments

Line segments (lseg) are represented by pairs of points. Values of type lseg are specified using the following
syntax:

( ( x1 , y1 ) , ( x2 , y2 ) )

( x1 , y1 ) , ( x2 , y2 )

x1 , y1 , x2 , y2

where (x1,y1
) and (x2,y2) are the end points of the line segment.

8.7.3. Boxes

Boxes are represented by pairs of points that are opposite corners of the box. Values of type box is specified
using the following syntax:

( ( x1 , y1 ) , ( x2 , y2 ) )

( x1 , y1 ) , (
x2 , y2 )

x1 , y1 , x2 , y2

where (x1,y1) and (x2,y2) are the opposite corners of the box.

Boxes are output using the first syntax. The corners are reordered on input to store the upper right corner, then
the lower left corner. Other corners of
the box can be entered, but the lower left and upper right corners are
determined from the input and stored corners.

8.7.4. Paths

Paths are represented by connected sets of points. Paths can be open, where the first and last points in the set
are not conn
ected, and closed, where the first and last point are connected. The functions popen(p) and
pclose(p) are supplied to force a path to be open or closed, and the functions isopen(p) and isclosed(p) are
supplied to test for either type in an expression.

Val
ues of type path are specified using the following syntax:

( ( x1 , y1 ) , ... , ( xn , yn ) )

[ ( x1 , y1 ) , ... , ( xn , yn ) ]

( x1 , y1 ) , ... , ( xn , yn )

( x1 , y1 , ... , xn , yn )

x1 , y1 , ... , xn , yn

where the points

are the end points of the line segments comprising the path. Square brackets ([]) indicate an
open path, while parentheses (()) indicate a closed path.

Paths are output using the first syntax.

8.7.5. Polygons

Polygons are represented by sets of points.
Polygons should probably be considered equivalent to closed paths,
but are stored differently and have their own set of support routines.

Values of type polygon are specified using the following syntax:

( ( x1 , y1 ) , ... , ( xn , yn ) )

( x1 , y1 ) ,

... , ( xn , yn )

( x1 , y1 , ... , xn , yn )

x1 , y1 , ... , xn , yn

where the points are the end points of the line segments comprising the boundary of the polygon.

Polygons are output using the first syntax.

8.7.6. Circles

Circl
es are represented by a center point and a radius. Values of type circle are specified using the following
syntax:

< ( x , y ) , r >

( ( x , y ) , r )

( x , y ) , r

x , y , r

where (x,y) is the center and r is the radius of the circle.

Circle
s are output using the first syntax.