????

Your IP : 52.14.244.195


Current Path : C:/opt/pgsql/doc/postgresql/html/
Upload File :
Current File : C:/opt/pgsql/doc/postgresql/html/datatype-geometric.html

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8.8. Geometric Types</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="datatype-enum.html" title="8.7. Enumerated Types" /><link rel="next" href="datatype-net-types.html" title="8.9. Network Address Types" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">8.8. Geometric Types</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="datatype-enum.html" title="8.7. Enumerated Types">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="datatype.html" title="Chapter 8. Data Types">Up</a></td><th width="60%" align="center">Chapter 8. Data Types</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="datatype-net-types.html" title="8.9. Network Address Types">Next</a></td></tr></table><hr /></div><div class="sect1" id="DATATYPE-GEOMETRIC"><div class="titlepage"><div><div><h2 class="title" style="clear: both">8.8. Geometric Types <a href="#DATATYPE-GEOMETRIC" class="id_link">#</a></h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="datatype-geometric.html#DATATYPE-GEOMETRIC-POINTS">8.8.1. Points</a></span></dt><dt><span class="sect2"><a href="datatype-geometric.html#DATATYPE-LINE">8.8.2. Lines</a></span></dt><dt><span class="sect2"><a href="datatype-geometric.html#DATATYPE-LSEG">8.8.3. Line Segments</a></span></dt><dt><span class="sect2"><a href="datatype-geometric.html#DATATYPE-GEOMETRIC-BOXES">8.8.4. Boxes</a></span></dt><dt><span class="sect2"><a href="datatype-geometric.html#DATATYPE-GEOMETRIC-PATHS">8.8.5. Paths</a></span></dt><dt><span class="sect2"><a href="datatype-geometric.html#DATATYPE-POLYGON">8.8.6. Polygons</a></span></dt><dt><span class="sect2"><a href="datatype-geometric.html#DATATYPE-CIRCLE">8.8.7. Circles</a></span></dt></dl></div><p>
    Geometric data types represent two-dimensional spatial
    objects. <a class="xref" href="datatype-geometric.html#DATATYPE-GEO-TABLE" title="Table 8.20. Geometric Types">Table 8.20</a> shows the geometric
    types available in <span class="productname">PostgreSQL</span>.
   </p><div class="table" id="DATATYPE-GEO-TABLE"><p class="title"><strong>Table 8.20. Geometric Types</strong></p><div class="table-contents"><table class="table" summary="Geometric Types" border="1"><colgroup><col class="col1" /><col class="col2" /><col class="col3" /><col class="col4" /></colgroup><thead><tr><th>Name</th><th>Storage Size</th><th>Description</th><th>Representation</th></tr></thead><tbody><tr><td><code class="type">point</code></td><td>16 bytes</td><td>Point on a plane</td><td>(x,y)</td></tr><tr><td><code class="type">line</code></td><td>32 bytes</td><td>Infinite line</td><td>{A,B,C}</td></tr><tr><td><code class="type">lseg</code></td><td>32 bytes</td><td>Finite line segment</td><td>((x1,y1),(x2,y2))</td></tr><tr><td><code class="type">box</code></td><td>32 bytes</td><td>Rectangular box</td><td>((x1,y1),(x2,y2))</td></tr><tr><td><code class="type">path</code></td><td>16+16n bytes</td><td>Closed path (similar to polygon)</td><td>((x1,y1),...)</td></tr><tr><td><code class="type">path</code></td><td>16+16n bytes</td><td>Open path</td><td>[(x1,y1),...]</td></tr><tr><td><code class="type">polygon</code></td><td>40+16n bytes</td><td>Polygon (similar to closed path)</td><td>((x1,y1),...)</td></tr><tr><td><code class="type">circle</code></td><td>24 bytes</td><td>Circle</td><td>&lt;(x,y),r&gt; (center point and radius)</td></tr></tbody></table></div></div><br class="table-break" /><p>
    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 <a class="xref" href="functions-geometry.html" title="9.11. Geometric Functions and Operators">Section 9.11</a>.
   </p><div class="sect2" id="DATATYPE-GEOMETRIC-POINTS"><div class="titlepage"><div><div><h3 class="title">8.8.1. Points <a href="#DATATYPE-GEOMETRIC-POINTS" class="id_link">#</a></h3></div></div></div><a id="id-1.5.7.16.5.2" class="indexterm"></a><p>
     Points are the fundamental two-dimensional building block for geometric
     types.  Values of type <code class="type">point</code> are specified using either of
     the following syntaxes:

</p><pre class="synopsis">
( <em class="replaceable"><code>x</code></em> , <em class="replaceable"><code>y</code></em> )
  <em class="replaceable"><code>x</code></em> , <em class="replaceable"><code>y</code></em>
</pre><p>

     where <em class="replaceable"><code>x</code></em> and <em class="replaceable"><code>y</code></em> are the respective
     coordinates, as floating-point numbers.
    </p><p>
     Points are output using the first syntax.
    </p></div><div class="sect2" id="DATATYPE-LINE"><div class="titlepage"><div><div><h3 class="title">8.8.2. Lines <a href="#DATATYPE-LINE" class="id_link">#</a></h3></div></div></div><a id="id-1.5.7.16.6.2" class="indexterm"></a><p>
     Lines are represented by the linear
     equation <em class="replaceable"><code>A</code></em>x + <em class="replaceable"><code>B</code></em>y + <em class="replaceable"><code>C</code></em> = 0,
     where <em class="replaceable"><code>A</code></em> and <em class="replaceable"><code>B</code></em> are not both zero.  Values
     of type <code class="type">line</code> are input and output in the following form:
</p><pre class="synopsis">
{ <em class="replaceable"><code>A</code></em>, <em class="replaceable"><code>B</code></em>, <em class="replaceable"><code>C</code></em> }
</pre><p>

     Alternatively, any of the following forms can be used for input:

</p><pre class="synopsis">
[ ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ( <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em> ) ]
( ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ( <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em> ) )
  ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ( <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em> )
    <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em>   ,   <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em>
</pre><p>

     where
     <code class="literal">(<em class="replaceable"><code>x1</code></em>,<em class="replaceable"><code>y1</code></em>)</code>
     and
     <code class="literal">(<em class="replaceable"><code>x2</code></em>,<em class="replaceable"><code>y2</code></em>)</code>
     are two different points on the line.
    </p></div><div class="sect2" id="DATATYPE-LSEG"><div class="titlepage"><div><div><h3 class="title">8.8.3. Line Segments <a href="#DATATYPE-LSEG" class="id_link">#</a></h3></div></div></div><a id="id-1.5.7.16.7.2" class="indexterm"></a><a id="id-1.5.7.16.7.3" class="indexterm"></a><p>
     Line segments are represented by pairs of points that are the endpoints
     of the segment.  Values of type <code class="type">lseg</code> are specified using any
     of the following syntaxes:

</p><pre class="synopsis">
[ ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ( <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em> ) ]
( ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ( <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em> ) )
  ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ( <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em> )
    <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em>   ,   <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em>
</pre><p>

     where
     <code class="literal">(<em class="replaceable"><code>x1</code></em>,<em class="replaceable"><code>y1</code></em>)</code>
     and
     <code class="literal">(<em class="replaceable"><code>x2</code></em>,<em class="replaceable"><code>y2</code></em>)</code>
     are the end points of the line segment.
    </p><p>
     Line segments are output using the first syntax.
    </p></div><div class="sect2" id="DATATYPE-GEOMETRIC-BOXES"><div class="titlepage"><div><div><h3 class="title">8.8.4. Boxes <a href="#DATATYPE-GEOMETRIC-BOXES" class="id_link">#</a></h3></div></div></div><a id="id-1.5.7.16.8.2" class="indexterm"></a><a id="id-1.5.7.16.8.3" class="indexterm"></a><p>
     Boxes are represented by pairs of points that are opposite
     corners of the box.
     Values of type <code class="type">box</code> are specified using any of the following
     syntaxes:

</p><pre class="synopsis">
( ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ( <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em> ) )
  ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ( <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em> )
    <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em>   ,   <em class="replaceable"><code>x2</code></em> , <em class="replaceable"><code>y2</code></em>
</pre><p>

     where
     <code class="literal">(<em class="replaceable"><code>x1</code></em>,<em class="replaceable"><code>y1</code></em>)</code>
     and
     <code class="literal">(<em class="replaceable"><code>x2</code></em>,<em class="replaceable"><code>y2</code></em>)</code>
     are any two opposite corners of the box.
    </p><p>
     Boxes are output using the second syntax.
    </p><p>
     Any two opposite corners can be supplied on input, but the values
     will be reordered as needed to store the
     upper right and lower left corners, in that order.
    </p></div><div class="sect2" id="DATATYPE-GEOMETRIC-PATHS"><div class="titlepage"><div><div><h3 class="title">8.8.5. Paths <a href="#DATATYPE-GEOMETRIC-PATHS" class="id_link">#</a></h3></div></div></div><a id="id-1.5.7.16.9.2" class="indexterm"></a><p>
     Paths are represented by lists of connected points. Paths can be
     <em class="firstterm">open</em>, where
     the first and last points in the list are considered not connected, or
     <em class="firstterm">closed</em>,
     where the first and last points are considered connected.
    </p><p>
     Values of type <code class="type">path</code> are specified using any of the following
     syntaxes:

</p><pre class="synopsis">
[ ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ... , ( <em class="replaceable"><code>xn</code></em> , <em class="replaceable"><code>yn</code></em> ) ]
( ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ... , ( <em class="replaceable"><code>xn</code></em> , <em class="replaceable"><code>yn</code></em> ) )
  ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ... , ( <em class="replaceable"><code>xn</code></em> , <em class="replaceable"><code>yn</code></em> )
  ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em>   , ... ,   <em class="replaceable"><code>xn</code></em> , <em class="replaceable"><code>yn</code></em> )
    <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em>   , ... ,   <em class="replaceable"><code>xn</code></em> , <em class="replaceable"><code>yn</code></em>
</pre><p>

     where the points are the end points of the line segments
     comprising the path.  Square brackets (<code class="literal">[]</code>) indicate
     an open path, while parentheses (<code class="literal">()</code>) indicate a
     closed path.  When the outermost parentheses are omitted, as
     in the third through fifth syntaxes, a closed path is assumed.
    </p><p>
     Paths are output using the first or second syntax, as appropriate.
    </p></div><div class="sect2" id="DATATYPE-POLYGON"><div class="titlepage"><div><div><h3 class="title">8.8.6. Polygons <a href="#DATATYPE-POLYGON" class="id_link">#</a></h3></div></div></div><a id="id-1.5.7.16.10.2" class="indexterm"></a><p>
     Polygons are represented by lists of points (the vertexes of the
     polygon). Polygons are very similar to closed paths; the essential
     difference is that a polygon is considered to include the area
     within it, while a path is not.
    </p><p>
     Values of type <code class="type">polygon</code> are specified using any of the
     following syntaxes:

</p><pre class="synopsis">
( ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ... , ( <em class="replaceable"><code>xn</code></em> , <em class="replaceable"><code>yn</code></em> ) )
  ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em> ) , ... , ( <em class="replaceable"><code>xn</code></em> , <em class="replaceable"><code>yn</code></em> )
  ( <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em>   , ... ,   <em class="replaceable"><code>xn</code></em> , <em class="replaceable"><code>yn</code></em> )
    <em class="replaceable"><code>x1</code></em> , <em class="replaceable"><code>y1</code></em>   , ... ,   <em class="replaceable"><code>xn</code></em> , <em class="replaceable"><code>yn</code></em>
</pre><p>

     where the points are the end points of the line segments
     comprising the boundary of the polygon.
    </p><p>
     Polygons are output using the first syntax.
    </p></div><div class="sect2" id="DATATYPE-CIRCLE"><div class="titlepage"><div><div><h3 class="title">8.8.7. Circles <a href="#DATATYPE-CIRCLE" class="id_link">#</a></h3></div></div></div><a id="id-1.5.7.16.11.2" class="indexterm"></a><p>
     Circles are represented by a center point and radius.
     Values of type <code class="type">circle</code> are specified using any of the
     following syntaxes:

</p><pre class="synopsis">
&lt; ( <em class="replaceable"><code>x</code></em> , <em class="replaceable"><code>y</code></em> ) , <em class="replaceable"><code>r</code></em> &gt;
( ( <em class="replaceable"><code>x</code></em> , <em class="replaceable"><code>y</code></em> ) , <em class="replaceable"><code>r</code></em> )
  ( <em class="replaceable"><code>x</code></em> , <em class="replaceable"><code>y</code></em> ) , <em class="replaceable"><code>r</code></em>
    <em class="replaceable"><code>x</code></em> , <em class="replaceable"><code>y</code></em>   , <em class="replaceable"><code>r</code></em>
</pre><p>

     where
     <code class="literal">(<em class="replaceable"><code>x</code></em>,<em class="replaceable"><code>y</code></em>)</code>
     is the center point and <em class="replaceable"><code>r</code></em> is the radius of the
     circle.
    </p><p>
     Circles are output using the first syntax.
    </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="datatype-enum.html" title="8.7. Enumerated Types">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="datatype.html" title="Chapter 8. Data Types">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="datatype-net-types.html" title="8.9. Network Address Types">Next</a></td></tr><tr><td width="40%" align="left" valign="top">8.7. Enumerated Types </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 8.9. Network Address Types</td></tr></table></div></body></html>