<variablelist>
<varlistentry>
- <term><command>--prefix=<emphasis>PREFIX</emphasis></command></term>
+ <term><command>--prefix=PREFIX</command></term>
<listitem>
<para>
This is the location the PostGIS libraries and SQL scripts will be
</varlistentry>
<varlistentry>
- <term><command>--with-pgconfig=<emphasis>FILE</emphasis></command></term>
+ <term><command>--with-pgconfig=FILE</command></term>
<listitem>
<para>
PostgreSQL provides a utility called <command>pg_config</command>
</varlistentry>
<varlistentry>
- <term><command>--with-geosconfig=<emphasis>FILE</emphasis></command></term>
+ <term><command>--with-geosconfig=FILE</command></term>
<listitem>
<para>
GEOS, a required geometry library, provides a utility called
</varlistentry>
<varlistentry>
- <term><command>--with-projdir=<emphasis>DIR</emphasis></command></term>
+ <term><command>--with-projdir=DIR</command></term>
<listitem>
<para>
Proj4 is a reprojection library required by PostGIS. Use this
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook EBNF Module V1.1CR1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd" [
<!-- This value is automatically generated by the Makefile -->
<!ENTITY last_release_version "@@LAST_RELEASE_VERSION@@">
<refnamediv>
<refname>ST_CoordDim</refname>
- <refpurpose><para>Return the coordinate dimension of the ST_Geometry value.</para></refpurpose>
+ <refpurpose>Return the coordinate dimension of the ST_Geometry value.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<refsection>
<title>Description</title>
- <para>Returns the spatial reference identifier for the ST_Geometry as defined in <xref linkend="spatial_ref_sys">spatial_ref_sys</xref> table. </para>
+ <para>Returns the spatial reference identifier for the ST_Geometry as defined in spatial_ref_sys table. <xref linkend="spatial_ref_sys" /></para>
<para><note><para>spatial_ref_sys
table is a table that catalogs all spatial reference systems known to PostGIS and is used for transformations from one spatial
reference system to another. So verifying you have the right spatial reference system identifier is important if you plan to ever transform your geometries.</para></note></para>
<paramdef><type>float </type> <parameter>a</parameter></paramdef>
<paramdef><type>float </type> <parameter>b</parameter></paramdef>
<paramdef><type>float </type> <parameter>d</parameter></paramdef>
- <paramdef><type>float </type> <parameter>e</parameter></paramdef>>
+ <paramdef><type>float </type> <parameter>e</parameter></paramdef>
<paramdef><type>float </type> <parameter>xoff</parameter></paramdef>
<paramdef><type>float </type> <parameter>yoff</parameter></paramdef>
</funcprototype>
<refpurpose>Returns minimum distance in meters between two lon/lat
geometries. Uses a spherical earth and radius of 6370986 meters.
- Faster than <xref linkend="ST_Distance_Spheroid">ST_Distance_Spheroid</xref>, but less
+ Faster than ST_Distance_Spheroid <xref linkend="ST_Distance_Spheroid" />, but less
accurate. PostGIS versions prior to 1.5 only implemented for points.</refpurpose>
</refnamediv>
point_inside_circle(<geometry>,<circle_center_x>,<circle_center_y>,<radius>).
Returns the true if the geometry is a point and is inside the
circle. Returns false otherwise.</para>
- <para><note>This only works for points as the name suggests</note></para>
+ <note><para>This only works for points as the name suggests</para></note>
</refsection>
geometries.</para></note>
<para>Availability: 1.5.0 changed behavior</para>
- </refsection>
-
+
<warning>
<para>This operator has changed behavior in PostGIS 1.5
from testing for actual geometric equality to only
linkend="ST_Equals" /> and to check for bounding box equality <xref linkend="ST_Geometry_EQ" />;
operator is a safer option.</para>
</warning>
+ </refsection>
+
<refsection>
<title>Examples</title>
<programlisting>
<refsection>
<title>Examples</title>
-Default format.
+<para>Default format.</para>
<programlisting>
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)'));
st_aslatlontext
----------------------------
2°19'29.928"S 3°14'3.243"W
</programlisting>
-Providing a format (same as the default).
+<para>Providing a format (same as the default).</para>
<programlisting>
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D°M''S.SSS"C'));
st_aslatlontext
----------------------------
2°19'29.928"S 3°14'3.243"W
</programlisting>
-Characters other than D, M, S, C and . are just passed through.
+<para>Characters other than D, M, S, C and . are just passed through.</para>
<programlisting>
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D degrees, M minutes, S seconds to the C'));
st_aslatlontext
--------------------------------------------------------------------------------------
2 degrees, 19 minutes, 30 seconds to the S 3 degrees, 14 minutes, 3 seconds to the W
</programlisting>
-Signed degrees instead of cardinal directions.
+<para>Signed degrees instead of cardinal directions.</para>
<programlisting>
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D°M''S.SSS"'));
st_aslatlontext
----------------------------
-2°19'29.928" -3°14'3.243"
</programlisting>
-Decimal degrees.
+<para>Decimal degrees.</para>
<programlisting>
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D.DDDD degrees C'));
st_aslatlontext
-----------------------------------
2.3250 degrees S 3.2342 degrees W
</programlisting>
-Excessively large values are normalized.
+<para>Excessively large values are normalized.</para>
<programlisting>
SELECT (ST_AsLatLonText('POINT (-302.2342342 -792.32498)'));
st_aslatlontext
The optional third parameter (currently only applies to geometry) can either specify number of segments used to approximate a quarter circle (integer case, defaults to 8) or a list of blank-separated key=value pairs (string case) to tweak operations as follows:
<itemizedlist>
<listitem>
-'quad_segs=#' : number of segments used to approximate a quarter circle (defaults to 8).
+<para>'quad_segs=#' : number of segments used to approximate a quarter circle (defaults to 8).</para>
</listitem>
<listitem>
-'endcap=round|flat|square' : endcap style (defaults to "round", needs GEOS-3.2 or higher for a different value). 'butt' is also accepted as a synonym for 'flat'.
+<para>'endcap=round|flat|square' : endcap style (defaults to "round", needs GEOS-3.2 or higher for a different value). 'butt' is also accepted as a synonym for 'flat'.</para>
</listitem>
<listitem>
-'join=round|mitre|bevel' : join style (defaults to "round", needs GEOS-3.2 or higher for a different value). 'miter' is also accepted as a synonym for 'mitre'.
+<para>'join=round|mitre|bevel' : join style (defaults to "round", needs GEOS-3.2 or higher for a different value). 'miter' is also accepted as a synonym for 'mitre'.</para>
</listitem>
<listitem>
-'mitre_limit=#.#' : mitre ratio limit (only affects mitred join style). 'miter_limit' is also accepted as a synonym for 'mitre_limit'.
+<para>'mitre_limit=#.#' : mitre ratio limit (only affects mitred join style). 'miter_limit' is also accepted as a synonym for 'mitre_limit'.</para>
</listitem>
</itemizedlist>
</para>
<funcsynopsis>
<funcprototype>
<funcdef>text <function>DisableLongTransactions</function></funcdef>
+ <paramdef></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>text <function>EnableLongTransactions</function></funcdef>
+ <paramdef></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<?xml version="1.0" encoding="UTF-8"?>
<sect1 id="PostGIS_Types">
- <title>PostgreSQL PostGIS Types</title>
<sect1info>
<abstract>
<para>This section lists the PostgreSQL data types installed by PostGIS. Note we describe the casting behavior of these which is very
but no geometry. What happens is that both functions are equally good to use with geometry since geometry has an autocast for both
-- so you end up with an ambiguous function error. To force PostgreSQL to choose, you do a CAST(mygeom As box3d) or mygeom::box3d.</para>
- <para><note>At least as of PostgreSQL 8.3 - Everything can be CAST to text (presumably because of the magical unknown type), so no defined CASTS for that need to be present for you to CAST an object to text.</note></para>
+ <para><emphasis>At least as of PostgreSQL 8.3</emphasis> - Everything can be CAST to text (presumably because of the magical unknown type), so no defined CASTS for that need to be present for you to CAST an object to text.</para>
</abstract>
</sect1info>
+ <title>PostgreSQL PostGIS Types</title>
+
<refentry id="box2d">
<refnamediv>
<refname>box2d</refname>
<para>The new GEOGRAPHY type allows you to store data in longitude/latitude coordinates, but at a cost: there are fewer functions defined on GEOGRAPHY than there are on GEOMETRY; those functions that are defined take more CPU time to execute.</para>
<para>The type you choose should be conditioned on the expected working area of the application you are building. Will your data span the globe or a large continental area, or is it local to a state, county or municipality? </para>
<itemizedlist>
- <listitem>If your data is contained in a small area, you might find that choosing an appropriate projection and using GEOMETRY is the best solution, in terms of performance and functionality available.</listitem>
- <listitem>If your data is global or covers a continental region, you may find that GEOGRAPHY allows you to build a system without having to worry about projection details.
- You store your data in longitude/latitude, and use the functions that have been defined on GEOGRAPHY.</listitem>
- <listitem>If you don't understand projections, and you don't want to learn about them, and you're prepared to accept the limitations in functionality available in GEOGRAPHY, then it might be easier for you to use GEOGRAPHY than GEOMETRY.
- Simply load your data up as longitude/latitude and go from there.</listitem>
+ <listitem><para>If your data is contained in a small area, you might find that choosing an appropriate projection and using GEOMETRY is the best solution, in terms of performance and functionality available.</para></listitem>
+ <listitem><para>If your data is global or covers a continental region, you may find that GEOGRAPHY allows you to build a system without having to worry about projection details.
+ You store your data in longitude/latitude, and use the functions that have been defined on GEOGRAPHY.</para></listitem>
+ <listitem><para>If you don't understand projections, and you don't want to learn about them, and you're prepared to accept the limitations in functionality available in GEOGRAPHY, then it might be easier for you to use GEOGRAPHY than GEOMETRY.
+ Simply load your data up as longitude/latitude and go from there.</para></listitem>
</itemizedlist>
<para>Refer to <xref linkend="PostGIS_TypeFunctionMatrix" /> for compare between
what is supported for Geography vs. Geometry. For a brief listing and description of Geography functions, refer to
<xsl:for-each select="refsynopsisdiv/funcsynopsis/funcprototype">\r
<xsl:choose>\r
<xsl:when test="contains(paramdef/type,'geometry set')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /></listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<xsl:for-each select="para">\r
<xsl:choose>\r
<xsl:when test="contains(.,'implements the SQL/MM')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /> <xsl:value-of select="." /></listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /> <xsl:value-of select="." /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<!-- If at least one proto function accepts or returns a geography -->\r
<xsl:choose>\r
<xsl:when test="contains(refsynopsisdiv/funcsynopsis,'geography') or contains(refsynopsisdiv/funcsynopsis/funcprototype/funcdef,'geography')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="$comment" /></listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="$comment" /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<!-- If at least one proto function accepts or returns a geography -->\r
<xsl:choose>\r
<xsl:when test="contains(refsynopsisdiv/funcsynopsis,'geometry_dump') or contains(refsynopsisdiv/funcsynopsis/funcprototype/funcdef,'geometry_dump')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="$comment" /></listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="$comment" /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<!-- If at least one proto function accepts or returns a geography -->\r
<xsl:choose>\r
<xsl:when test="contains(refsynopsisdiv/funcsynopsis,'box') or contains(refsynopsisdiv/funcsynopsis/funcprototype/funcdef,'box')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="$comment" /></listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="$comment" /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<xsl:for-each select="para">\r
<xsl:choose>\r
<xsl:when test="contains(.,'This function supports 3d')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /></listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<xsl:for-each select="para">\r
<xsl:choose>\r
<xsl:when test="contains(.,'supports Circular Strings')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="$comment" /></listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="$comment" /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<para>Below is an alphabetical listing of spatial specific functions in PostGIS and the kinds of spatial\r
types they work with or OGC/SQL compliance they try to conform to.</para>\r
<para><itemizedlist>\r
- <listitem>A <xsl:value-of select="$matrix_checkmark" disable-output-escaping="yes"/> means the function works with the type or subtype natively.</listitem>\r
- <listitem>A <xsl:value-of select="$matrix_transform" disable-output-escaping="yes"/> means it works but with a transform cast built-in using cast to geometry, transform to a "best srid" spatial ref and then cast back. Results may not be as expected for large areas or areas at poles \r
- and may accumulate floating point junk.</listitem>\r
- <listitem>A <xsl:value-of select="$matrix_autocast" disable-output-escaping="yes"/> means the function works with the type because of a auto-cast to another such as to box3d rather than direct type support.</listitem>\r
+ <listitem><simpara>A <xsl:value-of select="$matrix_checkmark" disable-output-escaping="yes"/> means the function works with the type or subtype natively.</simpara></listitem>\r
+ <listitem><simpara>A <xsl:value-of select="$matrix_transform" disable-output-escaping="yes"/> means it works but with a transform cast built-in using cast to geometry, transform to a "best srid" spatial ref and then cast back. Results may not be as expected for large areas or areas at poles \r
+ and may accumulate floating point junk.</simpara></listitem>\r
+ <listitem><simpara>A <xsl:value-of select="$matrix_autocast" disable-output-escaping="yes"/> means the function works with the type because of a auto-cast to another such as to box3d rather than direct type support.</simpara></listitem>\r
</itemizedlist>\r
</para>\r
\r
<xsl:for-each select="para">\r
<xsl:choose>\r
<xsl:when test="contains(.,'Availability: 2.0')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="." /><xsl:text> </xsl:text> <xsl:value-of select="$comment" /> </listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="." /><xsl:text> </xsl:text> <xsl:value-of select="$comment" /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<xsl:for-each select="para">\r
<xsl:choose>\r
<xsl:when test="contains(.,'Availability: 1.5')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="." /><xsl:text> </xsl:text> <xsl:value-of select="$comment" /> </listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refname" /></link> - <xsl:value-of select="." /><xsl:text> </xsl:text> <xsl:value-of select="$comment" /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<xsl:for-each select="para|note">\r
<xsl:choose>\r
<xsl:when test="contains(.,'Availability: 1.4')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /> <xsl:text> </xsl:text><xsl:value-of select="." /></listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /> <xsl:text> </xsl:text><xsl:value-of select="." /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r
<xsl:for-each select="para">\r
<xsl:choose>\r
<xsl:when test="contains(.,'Availability: 1.3')">\r
- <listitem><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /> <xsl:text> </xsl:text><xsl:value-of select="." /></listitem>\r
+ <listitem><simpara><link linkend="{$refid}"><xsl:value-of select="$refid" /></link> - <xsl:value-of select="$comment" /> <xsl:text> </xsl:text><xsl:value-of select="." /></simpara></listitem>\r
</xsl:when>\r
</xsl:choose>\r
</xsl:for-each>\r