[DebianGIS-dev] r896 - packages/postgis/trunk/doc/html

frankie at alioth.debian.org frankie at alioth.debian.org
Sat Jun 16 10:59:52 UTC 2007


Author: frankie
Date: 2007-06-16 10:59:52 +0000 (Sat, 16 Jun 2007)
New Revision: 896

Modified:
   packages/postgis/trunk/doc/html/postgis.html
Log:
Uhm, changed doc file


Modified: packages/postgis/trunk/doc/html/postgis.html
===================================================================
--- packages/postgis/trunk/doc/html/postgis.html	2007-06-15 23:02:47 UTC (rev 895)
+++ packages/postgis/trunk/doc/html/postgis.html	2007-06-16 10:59:52 UTC (rev 896)
@@ -1,20 +1,16 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PostGIS Manual</title><link rel="stylesheet" href="style.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><meta name="description" content="PostGIS is an extension to the PostgreSQL object-relational
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PostGIS Manual</title><link rel="stylesheet" href="style.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"><meta name="description" content="PostGIS is an extension to the PostgreSQL object-relational database system which allows GIS (Geographic Information Systems) objects to be stored in the database. PostGIS includes support for GiST-based R-Tree spatial indexes, and functions for analysis and processing of GIS objects. This is the manual for version 1.2.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2486894"></a>PostGIS Manual</h1></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>PostGIS is an extension to the PostgreSQL object-relational
       database system which allows GIS (Geographic Information Systems)
       objects to be stored in the database. PostGIS includes support for
       GiST-based R-Tree spatial indexes, and functions for analysis and
-      processing of GIS objects. This is the manual for version 1.2.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2695011"></a>PostGIS Manual</h1></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>PostGIS is an extension to the PostgreSQL object-relational
-      database system which allows GIS (Geographic Information Systems)
-      objects to be stored in the database. PostGIS includes support for
-      GiST-based R-Tree spatial indexes, and functions for analysis and
-      processing of GIS objects.</p><p>This is the manual for version 1.2.1</p></div></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="#id2695940">1. Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="#credits">1.1. Credits</a></span></dt><dt><span class="sect1"><a href="#id2695778">1.2. More Information</a></span></dt></dl></dd><dt><span class="chapter"><a href="#id2723071">2. Installation</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2723077">2.1. Requirements</a></span></dt><dt><span class="sect1"><a href="#PGInstall">2.2. PostGIS</a></span></dt><dd><dl><dt><span class="sect2"><a href="#templatepostgis">2.2.1. Creating PostGIS spatially-enabled databases from an in-built
-        template</a></span></dt><dt><span class="sect2"><a href="#upgrading">2.2.2. Upgrading</a></span></dt><dt><span class="sect2"><a href="#id2763269">2.2.3. Common Problems</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2763415">2.3. JDBC</a></span></dt><dt><span class="sect1"><a href="#id2763491">2.4. Loader/Dumper</a></span></dt></dl></dd><dt><span class="chapter"><a href="#id2763531">3. Frequently Asked Questions</a></span></dt><dt><span class="chapter"><a href="#id2764010">4. Using PostGIS</a></span></dt><dd><dl><dt><span class="sect1"><a href="#RefObject">4.1. GIS Objects</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2764042">4.1.1. OpenGIS WKB and WKT</a></span></dt><dt><span class="sect2"><a href="#id2764151">4.1.2. PostGIS EWKB, EWKT and Canonical Forms</a></span></dt><dt><span class="sect2"><a href="#id2764316">4.1.3. SQL-MM Part 3</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2764400">4.2. Using OpenGIS Standards</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2764441">4.2.1. The SPATIAL_REF_SYS Table</a></span></dt><dt><span class="sect2"><a href="#id2764652">4.2.2. The GEOMETRY_COLUMNS Table</a></span></dt><dt><span class="sect2"><a href="#id2764797">4.2.3. Creating a Spatial Table</a></span></dt><dt><span class="sect2"><a href="#id2764911">4.2.4. Ensuring OpenGIS compliancy of geometries</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2765010">4.3. Loading GIS Data</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2765024">4.3.1. Using SQL</a></span></dt><dt><span class="sect2"><a href="#id2765088">4.3.2. Using the Loader</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2765328">4.4. Retrieving GIS Data</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2765341">4.4.1. Using SQL</a></span></dt><dt><span class="sect2"><a href="#id2765514">4.4.2. Using the Dumper</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2765691">4.5. Building Indexes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2765757">4.5.1. GiST Indexes</a></span></dt><dt><span class="sect2"><a href="#id2765837">4.5.2. Using Indexes</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2765955">4.6. Complex Queries</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2765973">4.6.1. Taking Advantage of Indexes</a></span></dt><dt><span class="sect2"><a href="#id2766061">4.6.2. Examples of Spatial SQL</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2766374">4.7. Using Mapserver</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2766416">4.7.1. Basic Usage</a></span></dt><dt><span class="sect2"><a href="#id2766674">4.7.2. Frequently Asked Questions</a></span></dt><dt><span class="sect2"><a href="#id2766856">4.7.3. Advanced Usage</a></span></dt><dt><span class="sect2"><a href="#id2767038">4.7.4. Examples</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2767148">4.8. Java Clients (JDBC)</a></span></dt><dt><span class="sect1"><a href="#id2767233">4.9. C Clients (libpq)</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2767242">4.9.1. Text Cursors</a></span></dt><dt><span class="sect2"><a href="#id2767252">4.9.2. Binary Cursors</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#id2767264">5. Performance tips</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2767270">5.1. Small tables of large geometries</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2767276">5.1.1. Problem description</a></span></dt><dt><span class="sect2"><a href="#id2767350">5.1.2. Workarounds</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2767434">5.2. CLUSTERing on geometry indices</a></span></dt><dt><span class="sect1"><a href="#id2767496">5.3. Avoiding dimension conversion</a></span></dt></dl></dd><dt><span class="chapter"><a href="#id2767560">6. PostGIS Reference</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2767572">6.1. OpenGIS Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2767578">6.1.1. Management Functions</a></span></dt><dt><span class="sect2"><a href="#id2767667">6.1.2. Geometry Relationship Functions</a></span></dt><dt><span class="sect2"><a href="#id2768066">6.1.3. Geometry Processing Functions</a></span></dt><dt><span class="sect2"><a href="#id2768393">6.1.4. Geometry Accessors</a></span></dt><dt><span class="sect2"><a href="#id2768904">6.1.5. Geometry Constructors</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2769510">6.2. Postgis Extensions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2769516">6.2.1. Management Functions</a></span></dt><dt><span class="sect2"><a href="#id2769855">6.2.2. Operators</a></span></dt><dt><span class="sect2"><a href="#id2770079">6.2.3. Measurement Functions</a></span></dt><dt><span class="sect2"><a href="#id2770368">6.2.4. Geometry Outputs</a></span></dt><dt><span class="sect2"><a href="#id2770508">6.2.5. Geometry Constructors</a></span></dt><dt><span class="sect2"><a href="#id2770859">6.2.6. Geometry Editors</a></span></dt><dt><span class="sect2"><a href="#id2771471">6.2.7. Linear Referencing</a></span></dt><dt><span class="sect2"><a href="#id2771698">6.2.8. Misc</a></span></dt><dt><span class="sect2"><a href="#id2772712">6.2.9. Long Transactions support</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2772297">6.3. SQL-MM Functions</a></span></dt><dt><span class="sect1"><a href="#id2773715">6.4. ArcSDE Functions</a></span></dt></dl></dd><dt><span class="chapter"><a href="#id2773833">7. Reporting Bugs</a></span></dt><dt><span class="appendix"><a href="#release_notes">A. Appendix</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2773913">A.1. Release Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2773918">A.1.1. Release 1.2.1</a></span></dt><dt><span class="sect2"><a href="#id2773964">A.1.2. Release 1.2.0</a></span></dt><dt><span class="sect2"><a href="#id2773998">A.1.3. Release 1.1.6</a></span></dt><dt><span class="sect2"><a href="#id2774117">A.1.4. Release 1.1.5</a></span></dt><dt><span class="sect2"><a href="#id2774231">A.1.5. Release 1.1.4</a></span></dt><dt><span class="sect2"><a href="#id2774358">A.1.6. Release 1.1.3</a></span></dt><dt><span class="sect2"><a href="#id2774525">A.1.7. Release 1.1.2</a></span></dt><dt><span class="sect2"><a href="#id2774658">A.1.8. Release 1.1.1</a></span></dt><dt><span class="sect2"><a href="#id2774789">A.1.9. Release 1.1.0</a></span></dt><dt><span class="sect2"><a href="#id2775120">A.1.10. Release 1.0.6</a></span></dt><dt><span class="sect2"><a href="#id2775228">A.1.11. Release 1.0.5</a></span></dt><dt><span class="sect2"><a href="#id2775363">A.1.12. Release 1.0.4</a></span></dt><dt><span class="sect2"><a href="#rel_1.0.3_upgrading">A.1.13. Release 1.0.3</a></span></dt><dt><span class="sect2"><a href="#id2775629">A.1.14. Release 1.0.2</a></span></dt><dt><span class="sect2"><a href="#id2775707">A.1.15. Release 1.0.1</a></span></dt><dt><span class="sect2"><a href="#id2775809">A.1.16. Release 1.0.0</a></span></dt><dt><span class="sect2"><a href="#id2775909">A.1.17. Release 1.0.0RC6</a></span></dt><dt><span class="sect2"><a href="#id2775982">A.1.18. Release 1.0.0RC5</a></span></dt><dt><span class="sect2"><a href="#id2776055">A.1.19. Release 1.0.0RC4</a></span></dt><dt><span class="sect2"><a href="#id2776181">A.1.20. Release 1.0.0RC3</a></span></dt><dt><span class="sect2"><a href="#id2776354">A.1.21. Release 1.0.0RC2</a></span></dt><dt><span class="sect2"><a href="#id2776453">A.1.22. Release 1.0.0RC1</a></span></dt></dl></dd></dl></dd></dl></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2695940"></a>Chapter 1. Introduction</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#credits">1.1. Credits</a></span></dt><dt><span class="sect1"><a href="#id2695778">1.2. More Information</a></span></dt></dl></div><p>PostGIS is developed by Refractions Research Inc, as a spatial
+      processing of GIS objects.</p><p>This is the manual for version 1.2.1</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="#id2510480">1. Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="#credits">1.1. Credits</a></span></dt><dt><span class="sect1"><a href="#id2486632">1.2. More Information</a></span></dt></dl></dd><dt><span class="chapter"><a href="#id2487178">2. Installation</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2487183">2.1. Requirements</a></span></dt><dt><span class="sect1"><a href="#PGInstall">2.2. PostGIS</a></span></dt><dd><dl><dt><span class="sect2"><a href="#templatepostgis">2.2.1. Creating PostGIS spatially-enabled databases from an in-built
+        template</a></span></dt><dt><span class="sect2"><a href="#upgrading">2.2.2. Upgrading</a></span></dt><dt><span class="sect2"><a href="#id2539675">2.2.3. Common Problems</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2539820">2.3. JDBC</a></span></dt><dt><span class="sect1"><a href="#id2539897">2.4. Loader/Dumper</a></span></dt></dl></dd><dt><span class="chapter"><a href="#id2539937">3. Frequently Asked Questions</a></span></dt><dt><span class="chapter"><a href="#id2540415">4. Using PostGIS</a></span></dt><dd><dl><dt><span class="sect1"><a href="#RefObject">4.1. GIS Objects</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2540447">4.1.1. OpenGIS WKB and WKT</a></span></dt><dt><span class="sect2"><a href="#id2540555">4.1.2. PostGIS EWKB, EWKT and Canonical Forms</a></span></dt><dt><span class="sect2"><a href="#id2540720">4.1.3. SQL-MM Part 3</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2540805">4.2. Using OpenGIS Standards</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2540846">4.2.1. The SPATIAL_REF_SYS Table</a></span></dt><dt><span class="sect2"><a href="#id2541056">4.2.2. The GEOMETRY_COLUMNS Table</a></span></dt><dt><span class="sect2"><a href="#id2541202">4.2.3. Creating a Spatial Table</a></span></dt><dt><span class="sect2"><a href="#id2541316">4.2.4. Ensuring OpenGIS compliancy of geometries</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2541415">4.3. Loading GIS Data</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2541428">4.3.1. Using SQL</a></span></dt><dt><span class="sect2"><a href="#id2541493">4.3.2. Using the Loader</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2541732">4.4. Retrieving GIS Data</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2541745">4.4.1. Using SQL</a></span></dt><dt><span class="sect2"><a href="#id2541918">4.4.2. Using the Dumper</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2542096">4.5. Building Indexes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2542162">4.5.1. GiST Indexes</a></span></dt><dt><span class="sect2"><a href="#id2542241">4.5.2. Using Indexes</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2542359">4.6. Complex Queries</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2542378">4.6.1. Taking Advantage of Indexes</a></span></dt><dt><span class="sect2"><a href="#id2542465">4.6.2. Examples of Spatial SQL</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2542778">4.7. Using Mapserver</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2542821">4.7.1. Basic Usage</a></span></dt><dt><span class="sect2"><a href="#id2543078">4.7.2. Frequently Asked Questions</a></span></dt><dt><span class="sect2"><a href="#id2543261">4.7.3. Advanced Usage</a></span></dt><dt><span class="sect2"><a href="#id2543442">4.7.4. Examples</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2543552">4.8. Java Clients (JDBC)</a></span></dt><dt><span class="sect1"><a href="#id2543637">4.9. C Clients (libpq)</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2543646">4.9.1. Text Cursors</a></span></dt><dt><span class="sect2"><a href="#id2543656">4.9.2. Binary Cursors</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#id2543668">5. Performance tips</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2543674">5.1. Small tables of large geometries</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2543680">5.1.1. Problem description</a></span></dt><dt><span class="sect2"><a href="#id2543754">5.1.2. Workarounds</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2543838">5.2. CLUSTERing on geometry indices</a></span></dt><dt><span class="sect1"><a href="#id2543901">5.3. Avoiding dimension conversion</a></span></dt></dl></dd><dt><span class="chapter"><a href="#id2543964">6. PostGIS Reference</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2543977">6.1. OpenGIS Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2543982">6.1.1. Management Functions</a></span></dt><dt><span class="sect2"><a href="#id2544071">6.1.2. Geometry Relationship Functions</a></span></dt><dt><span class="sect2"><a href="#id2544470">6.1.3. Geometry Processing Functions</a></span></dt><dt><span class="sect2"><a href="#id2544797">6.1.4. Geometry Accessors</a></span></dt><dt><span class="sect2"><a href="#id2545307">6.1.5. Geometry Constructors</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2545912">6.2. Postgis Extensions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2545918">6.2.1. Management Functions</a></span></dt><dt><span class="sect2"><a href="#id2546255">6.2.2. Operators</a></span></dt><dt><span class="sect2"><a href="#id2546480">6.2.3. Measurement Functions</a></span></dt><dt><span class="sect2"><a href="#id2546767">6.2.4. Geometry Outputs</a></span></dt><dt><span class="sect2"><a href="#id2546907">6.2.5. Geometry Constructors</a></span></dt><dt><span class="sect2"><a href="#id2547257">6.2.6. Geometry Editors</a></span></dt><dt><span class="sect2"><a href="#id2547868">6.2.7. Linear Referencing</a></span></dt><dt><span class="sect2"><a href="#id2548094">6.2.8. Misc</a></span></dt><dt><span class="sect2"><a href="#id2549109">6.2.9. Long Transactions support</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2548552">6.3. SQL-MM Functions</a></span></dt><dt><span class="sect1"><a href="#id2550109">6.4. ArcSDE Functions</a></span></dt></dl></dd><dt><span class="chapter"><a href="#id2550227">7. Reporting Bugs</a></span></dt><dt><span class="appendix"><a href="#release_notes">A. Appendix</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2550307">A.1. Release Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2550312">A.1.1. Release 1.2.1</a></span></dt><dt><span class="sect2"><a href="#id2550358">A.1.2. Release 1.2.0</a></span></dt><dt><span class="sect2"><a href="#id2550392">A.1.3. Release 1.1.6</a></span></dt><dt><span class="sect2"><a href="#id2550510">A.1.4. Release 1.1.5</a></span></dt><dt><span class="sect2"><a href="#id2550624">A.1.5. Release 1.1.4</a></span></dt><dt><span class="sect2"><a href="#id2550751">A.1.6. Release 1.1.3</a></span></dt><dt><span class="sect2"><a href="#id2550918">A.1.7. Release 1.1.2</a></span></dt><dt><span class="sect2"><a href="#id2551051">A.1.8. Release 1.1.1</a></span></dt><dt><span class="sect2"><a href="#id2551182">A.1.9. Release 1.1.0</a></span></dt><dt><span class="sect2"><a href="#id2551513">A.1.10. Release 1.0.6</a></span></dt><dt><span class="sect2"><a href="#id2551621">A.1.11. Release 1.0.5</a></span></dt><dt><span class="sect2"><a href="#id2551756">A.1.12. Release 1.0.4</a></span></dt><dt><span class="sect2"><a href="#rel_1.0.3_upgrading">A.1.13. Release 1.0.3</a></span></dt><dt><span class="sect2"><a href="#id2552021">A.1.14. Release 1.0.2</a></span></dt><dt><span class="sect2"><a href="#id2552100">A.1.15. Release 1.0.1</a></span></dt><dt><span class="sect2"><a href="#id2552201">A.1.16. Release 1.0.0</a></span></dt><dt><span class="sect2"><a href="#id2552301">A.1.17. Release 1.0.0RC6</a></span></dt><dt><span class="sect2"><a href="#id2552375">A.1.18. Release 1.0.0RC5</a></span></dt><dt><span class="sect2"><a href="#id2552447">A.1.19. Release 1.0.0RC4</a></span></dt><dt><span class="sect2"><a href="#id2552573">A.1.20. Release 1.0.0RC3</a></span></dt><dt><span class="sect2"><a href="#id2552747">A.1.21. Release 1.0.0RC2</a></span></dt><dt><span class="sect2"><a href="#id2552846">A.1.22. Release 1.0.0RC1</a></span></dt></dl></dd></dl></dd></dl></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2510480"></a>Chapter 1. Introduction</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#credits">1.1. Credits</a></span></dt><dt><span class="sect1"><a href="#id2486632">1.2. More Information</a></span></dt></dl></div><p>PostGIS is developed by Refractions Research Inc, as a spatial
     database technology research project. Refractions is a GIS and database
     consulting company in Victoria, British Columbia, Canada, specializing in
     data integration and custom software development. We plan on supporting
     and developing PostGIS to support a range of important GIS functionality,
     including full OpenGIS support, advanced topological constructs
     (coverages, surfaces, networks), desktop user interface tools for viewing
-    and editing GIS data, and web-based access tools.</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="credits"></a>1.1. Credits</h2></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">Sandro Santilli &lt;strk at refractions.net&gt;</span></dt><dd><p>Coordinates all bug fixing and maintenance effort,
+    and editing GIS data, and web-based access tools.</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="credits"></a>1.1. Credits</h2></div></div></div><div class="variablelist"><dl><dt><span class="term">Sandro Santilli &lt;strk at refractions.net&gt;</span></dt><dd><p>Coordinates all bug fixing and maintenance effort,
             integration of new GEOS functionality, and new function
             enhancements.</p></dd><dt><span class="term">Chris Hodgson &lt;chodgson at refractions.net&gt;</span></dt><dd><p>Maintains new functions and the 7.2 index bindings.</p></dd><dt><span class="term">Paul Ramsey &lt;pramsey at refractions.net&gt;</span></dt><dd><p>Keeps track of the documentation and packaging.</p></dd><dt><span class="term">Jeff Lounsbury &lt;jeffloun at refractions.net&gt;</span></dt><dd><p>Original development of the Shape file loader/dumper.</p></dd><dt><span class="term">Dave Blasby &lt;dblasby at gmail.com&gt;</span></dt><dd><p>The original developer of PostGIS. Dave wrote the server
             side objects, index bindings, and many of the server side
@@ -28,7 +24,7 @@
             Davis &lt;mbdavis at vividsolutions.com&gt; of Vivid Solutions in
             making it all work.</p><p>The <a href="http://proj4.maptools.org" target="_top">Proj4</a>
             cartographic projection library, and the work of Gerald Evenden
-            and Frank Warmerdam in creating and maintaining it.</p></dd></dl></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2695778"></a>1.2. More Information</h2></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>The latest software, documentation and news items are
+            and Frank Warmerdam in creating and maintaining it.</p></dd></dl></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2486632"></a>1.2. More Information</h2></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>The latest software, documentation and news items are
           available at the PostGIS web site, <a href="http://postgis.refractions.net" target="_top">http://postgis.refractions.net</a>.</p></li><li><p>More information about the GEOS geometry operations library is
           available at<a href="http://geos.refractions.net" target="_top">
           http://geos.refractions.net</a>.</p></li><li><p>More information about the Proj4 reprojection library is
@@ -37,21 +33,21 @@
           PostgreSQL GiST development site, <a href="http://www.sai.msu.su/~megera/postgres/gist" target="_top">http://www.sai.msu.su/~megera/postgres/gist</a>.</p></li><li><p>More information about Mapserver internet map server is
           available at <a href="http://mapserver.gis.umn.edu/" target="_top">http://mapserver.gis.umn.edu</a>.</p></li><li><p>The "<a href="http://www.opengis.org/docs/99-049.pdf" target="_top">Simple
           Features for Specification for SQL</a>" is available at the
-          OpenGIS Consortium web site: <a href="http://www.opengis.org" target="_top">http://www.opengis.org</a>.</p></li></ul></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2723071"></a>Chapter 2. Installation</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2723077">2.1. Requirements</a></span></dt><dt><span class="sect1"><a href="#PGInstall">2.2. PostGIS</a></span></dt><dd><dl><dt><span class="sect2"><a href="#templatepostgis">2.2.1. Creating PostGIS spatially-enabled databases from an in-built
-        template</a></span></dt><dt><span class="sect2"><a href="#upgrading">2.2.2. Upgrading</a></span></dt><dt><span class="sect2"><a href="#id2763269">2.2.3. Common Problems</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2763415">2.3. JDBC</a></span></dt><dt><span class="sect1"><a href="#id2763491">2.4. Loader/Dumper</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2723077"></a>2.1. Requirements</h2></div></div><div></div></div><p>PostGIS has the following requirements for building and usage:</p><div class="itemizedlist"><ul type="disc"><li><p>A complete installation of PostgreSQL (including server
+          OpenGIS Consortium web site: <a href="http://www.opengis.org" target="_top">http://www.opengis.org</a>.</p></li></ul></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2487178"></a>Chapter 2. Installation</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2487183">2.1. Requirements</a></span></dt><dt><span class="sect1"><a href="#PGInstall">2.2. PostGIS</a></span></dt><dd><dl><dt><span class="sect2"><a href="#templatepostgis">2.2.1. Creating PostGIS spatially-enabled databases from an in-built
+        template</a></span></dt><dt><span class="sect2"><a href="#upgrading">2.2.2. Upgrading</a></span></dt><dt><span class="sect2"><a href="#id2539675">2.2.3. Common Problems</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2539820">2.3. JDBC</a></span></dt><dt><span class="sect1"><a href="#id2539897">2.4. Loader/Dumper</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2487183"></a>2.1. Requirements</h2></div></div></div><p>PostGIS has the following requirements for building and usage:</p><div class="itemizedlist"><ul type="disc"><li><p>A complete installation of PostgreSQL (including server
           headers). PostgreSQL is available from <a href="http://www.postgresql.org" target="_top">http://www.postgresql.org</a>.
-          Version 7.2 or higher is required.</p></li><li><p>GNU C compiler (<tt class="filename">gcc</tt>). Some other ANSI C
+          Version 7.2 or higher is required.</p></li><li><p>GNU C compiler (<code class="filename">gcc</code>). Some other ANSI C
           compilers can be used to compile PostGIS, but we find far fewer
-          problems when compiling with <tt class="filename">gcc</tt>.</p></li><li><p>GNU Make (<tt class="filename">gmake</tt> or <tt class="filename">make</tt>).
-          For many systems, GNU <tt class="filename">make</tt> is the default
-          version of make. Check the version by invoking <tt class="filename">make -v</tt>.
-          Other versions of <tt class="filename">make</tt> may not process the
-          PostGIS <tt class="filename">Makefile</tt> properly.</p></li><li><p>(Recommended) Proj4 reprojection library. The Proj4 library is
+          problems when compiling with <code class="filename">gcc</code>.</p></li><li><p>GNU Make (<code class="filename">gmake</code> or <code class="filename">make</code>).
+          For many systems, GNU <code class="filename">make</code> is the default
+          version of make. Check the version by invoking <code class="filename">make -v</code>.
+          Other versions of <code class="filename">make</code> may not process the
+          PostGIS <code class="filename">Makefile</code> properly.</p></li><li><p>(Recommended) Proj4 reprojection library. The Proj4 library is
           used to provide coordinate reprojection support within PostGIS.
           Proj4 is available for download from <a href="http://www.remotesensing.org/proj" target="_top">http://www.remotesensing.org/proj</a>.</p></li><li><p>(Recommended) GEOS geometry library. The GEOS library is used
           to provide geometry tests (Touches(), Contains(), Intersects()) and
           operations (Buffer(), GeomUnion(), Difference()) within PostGIS.
-          GEOS is available for download from <a href="http://geos.refractions.net" target="_top">http://geos.refractions.net</a>.</p></li></ul></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="PGInstall"></a>2.2. PostGIS</h2></div></div><div></div></div><p>The PostGIS module is a extension to the PostgreSQL backend
+          GEOS is available for download from <a href="http://geos.refractions.net" target="_top">http://geos.refractions.net</a>.</p></li></ul></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="PGInstall"></a>2.2. PostGIS</h2></div></div></div><p>The PostGIS module is a extension to the PostgreSQL backend
       server. As such, PostGIS 1.2.1 <span class="emphasis"><em>requires</em></span>
       full PostgreSQL server headers access in order to compile. The
       PostgreSQL source code is available at <a href="http://www.postgresql.org" target="_top">http://www.postgresql.org</a>.</p><p>PostGIS 1.2.1 can be built against PostgreSQL
@@ -67,44 +63,44 @@
           | tar xvf -</pre></li><li><p>Enter the postgis-1.2.1 directory, and run:
           </p><pre class="programlisting"># ./configure</pre><div class="itemizedlist"><ul type="disc"><li><p>If you want support for coordinate reprojection, you must
               have the Proj4 library installed. If ./configure didn't find
-              it, try using <tt class="code">--with-proj=PATH</tt> switch specify a
+              it, try using <code class="code">--with-proj=PATH</code> switch specify a
               specific Proj4 installation directory.</p></li><li><p>If you want to use GEOS functionality, you must have the
               GEOS library installed. If ./configure didn't find it, try
-              using <tt class="code">--with-geos=PATH</tt> to specify the full path to
+              using <code class="code">--with-geos=PATH</code> to specify the full path to
               the geos-config program full path.</p></li></ul></div></li><li><p>Run the compile and install commands.</p><pre class="programlisting"># make # make install</pre><p>All files are installed using information provided by
-          <tt class="filename">pg_config</tt></p><div class="itemizedlist"><ul type="disc"><li><p>Libraries are installed <tt class="filename">[pkglibdir]/lib/contrib</tt>.</p></li><li><p>Important support files such as <tt class="filename">lwpostgis.sql</tt>
-              are installed in <tt class="filename">[prefix]/share/contrib</tt>.</p></li><li><p>Loader and dumper binaries are installed in
-              <tt class="filename">[bindir]/</tt>.</p></li></ul></div></li><li><p>PostGIS requires the PL/pgSQL procedural language extension.
-          Before loading the <tt class="filename">lwpostgis.sql</tt> file, you must
-          first enable PL/pgSQL. You should use the <tt class="filename">createlang</tt>
+          <code class="filename">pg_config</code></p><div class="itemizedlist"><ul type="disc"><li><p>Libraries are installed <code class="filename">[pkglibdir]/lib/contrib</code>.</p></li><li><p>Important support files such as <code class="filename">lwpostgis.sql</code>
+              are installed in <code class="filename">[prefix]/share/contrib</code>.</p></li><li><p>Loader and dumper binaries are installed in
+              <code class="filename">[bindir]/</code>.</p></li></ul></div></li><li><p>PostGIS requires the PL/pgSQL procedural language extension.
+          Before loading the <code class="filename">lwpostgis.sql</code> file, you must
+          first enable PL/pgSQL. You should use the <code class="filename">createlang</code>
           command. The PostgreSQL Programmer's Guide has the details if
           you want to this manually for some reason.</p><pre class="programlisting"># createlang plpgsql [yourdatabase]</pre></li><li><p>Now load the PostGIS object and function definitions into your
-          database by loading the <tt class="filename">lwpostgis.sql</tt>
+          database by loading the <code class="filename">lwpostgis.sql</code>
           definitions file.</p><pre class="programlisting"># psql -d [yourdatabase] -f lwpostgis.sql</pre><p>The PostGIS server extensions are now loaded and ready to use.</p></li><li><p>For a complete set of EPSG coordinate system definition
-          identifiers, you can also load the <tt class="filename">spatial_ref_sys.sql</tt>
-          definitions file and populate the <tt class="varname">SPATIAL_REF_SYS</tt>
+          identifiers, you can also load the <code class="filename">spatial_ref_sys.sql</code>
+          definitions file and populate the <code class="varname">SPATIAL_REF_SYS</code>
           table.</p><pre class="programlisting"># psql -d [yourdatabase] -f spatial_ref_sys.sql</pre></li></ol></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="templatepostgis"></a>2.2.1. Creating PostGIS spatially-enabled databases from an in-built
-        template</h3></div></div><div></div></div><p>Some packaged distributions of PostGIS (in particular the Win32
+        template</h3></div></div></div><p>Some packaged distributions of PostGIS (in particular the Win32
         installers for PostGIS &gt;= 1.1.5) load the PostGIS functions into a
-        template database called <tt class="varname">template_postgis</tt>. If the
-        <tt class="varname">template_postgis</tt> database exists in your PostgreSQL
+        template database called <code class="varname">template_postgis</code>. If the
+        <code class="varname">template_postgis</code> database exists in your PostgreSQL
         installation then it is possible for users and/or applications to
         create spatially-enabled databases using a single command. Note that
         in both cases, the database user must have been granted the privilege
         to create new databases.</p><p>From the shell:</p><pre class="programlisting"># createdb -T template_postgis my_spatial_db</pre><p>From SQL:</p><pre class="programlisting">postgres=# CREATE DATABASE my_spatial_db
-        TEMPLATE=template_postgis</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="upgrading"></a>2.2.2. Upgrading</h3></div></div><div></div></div><p>Upgrading existing spatial databases can be tricky as it
+        TEMPLATE=template_postgis</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="upgrading"></a>2.2.2. Upgrading</h3></div></div></div><p>Upgrading existing spatial databases can be tricky as it
         requires replacement or introduction of new PostGIS object
         definitions.</p><p>Unfortunately not all definitions can be easily replaced in a
         live database, so sometimes your best bet is a dump/reload process.</p><p>PostGIS provides a SOFT UPGRADE procedure for minor or bugfix
         releases, and an HARD UPGRADE procedure for major releases.</p><p>Before attempting to upgrade postgis, it is always worth to
         backup your data. If you use the -Fc flag to pg_dump you will always
-        be able to restore the dump with an HARD UPGRADE.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="soft_upgrade"></a>2.2.2.1. Soft upgrade</h4></div></div><div></div></div><p>Soft upgrade consists of sourcing the lwpostgis_upgrade.sql
+        be able to restore the dump with an HARD UPGRADE.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="soft_upgrade"></a>2.2.2.1. Soft upgrade</h4></div></div></div><p>Soft upgrade consists of sourcing the lwpostgis_upgrade.sql
           script in your spatial database:</p><pre class="programlisting">$ psql -f lwpostgis_upgrade.sql -d your_spatial_database</pre><p>If a soft upgrade is not possible the script will abort and
           you will be warned about HARD UPGRADE being required, so do not
-          hesitate to try a soft upgrade first.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>If you can't find the <tt class="filename">lwpostgis_upgrade.sql</tt>
+          hesitate to try a soft upgrade first.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>If you can't find the <code class="filename">lwpostgis_upgrade.sql</code>
             file you are probably using a version prior to 1.1 and must
             generate that file by yourself. This is done with the following
-            command:</p><pre class="programlisting">$ utils/postgis_proc_upgrade.pl lwpostgis.sql &gt; lwpostgis_upgrade.sql</pre></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="hard_upgrade"></a>2.2.2.2. Hard upgrade</h4></div></div><div></div></div><p>By HARD UPGRADE we intend full dump/reload of postgis-enabled
+            command:</p><pre class="programlisting">$ utils/postgis_proc_upgrade.pl lwpostgis.sql &gt; lwpostgis_upgrade.sql</pre></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="hard_upgrade"></a>2.2.2.2. Hard upgrade</h4></div></div></div><p>By HARD UPGRADE we intend full dump/reload of postgis-enabled
           databases. You need an HARD UPGRADE when postgis objects'
           internal storage changes or when SOFT UPGRADE is not possible. The
           <a href="#release_notes" title="Appendix A. Appendix">Release Notes</a> appendix reports
@@ -150,13 +146,13 @@
 newdb=&gt; delete from spatial_ref_sys;
 DROP
 newdb=&gt; \i spatial_ref_sys.sql
-	</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2763269"></a>2.2.3. Common Problems</h3></div></div><div></div></div><p>There are several things to check when your installation or
+	</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539675"></a>2.2.3. Common Problems</h3></div></div></div><p>There are several things to check when your installation or
         upgrade doesn't go as you expected.</p><div class="orderedlist"><ol type="1"><li><p>It is easiest if you untar the PostGIS distribution into the
             contrib directory under the PostgreSQL source tree. However, if
             this is not possible for some reason, you can set the
-            <tt class="varname">PGSQL_SRC</tt> environment variable to the path to
+            <code class="varname">PGSQL_SRC</code> environment variable to the path to
             the PostgreSQL source directory. This will allow you to compile
-            PostGIS, but the <span><b class="command">make install</b></span> may not work, so
+            PostGIS, but the <span><strong class="command">make install</strong></span> may not work, so
             be prepared to copy the PostGIS library and executable files to
             the appropriate locations yourself.</p></li><li><p>Check that you you have installed PostgreSQL 7.2 or newer,
             and that you are compiling against the same version of the
@@ -169,36 +165,36 @@
             PostgreSQL which is running, connect to the database using psql
             and run this query:</p><pre class="programlisting">SELECT version();</pre><p>If you are running an RPM based distribution, you can check
             for the existence of pre-installed packages using the
-            <span><b class="command">rpm</b></span> command as follows: <span><b class="command">rpm -qa | grep
-            postgresql</b></span></p></li></ol></div><p>Also check that you have made any necessary changes to the top
+            <span><strong class="command">rpm</strong></span> command as follows: <span><strong class="command">rpm -qa | grep
+            postgresql</strong></span></p></li></ol></div><p>Also check that you have made any necessary changes to the top
         of the Makefile.config. This includes:</p><div class="orderedlist"><ol type="1"><li><p>If you want to be able to do coordinate reprojections, you
             must install the Proj4 library on your system, set the
-            <tt class="varname">USE_PROJ</tt> variable to 1 and the
-            <tt class="varname">PROJ_DIR</tt> to your installation prefix in the
+            <code class="varname">USE_PROJ</code> variable to 1 and the
+            <code class="varname">PROJ_DIR</code> to your installation prefix in the
             Makefile.config.</p></li><li><p>If you want to be able to use GEOS functions you must
             install the GEOS library on your system, and set the
-            <tt class="varname">USE_GEOS</tt> to 1 and the <tt class="varname">GEOS_DIR</tt>
-            to your installation prefix in the Makefile.config</p></li></ol></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2763415"></a>2.3. JDBC</h2></div></div><div></div></div><p>The JDBC extensions provide Java objects corresponding to the
+            <code class="varname">USE_GEOS</code> to 1 and the <code class="varname">GEOS_DIR</code>
+            to your installation prefix in the Makefile.config</p></li></ol></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2539820"></a>2.3. JDBC</h2></div></div></div><p>The JDBC extensions provide Java objects corresponding to the
       internal PostGIS types. These objects can be used to write Java clients
       which query the PostGIS database and draw or do calculations on the GIS
-      data in PostGIS.</p><div class="orderedlist"><ol type="1"><li><p>Enter the <tt class="filename">jdbc</tt> sub-directory of the
-          PostGIS distribution.</p></li><li><p>Edit the <tt class="filename">Makefile</tt> to provide the correct
-          paths of your java compiler (<tt class="varname">JAVAC</tt>) and
-          interpreter (<tt class="varname">JAVA</tt>).</p></li><li><p>Run the <tt class="filename">make</tt> command. Copy the
-          <tt class="filename">postgis.jar</tt> file to wherever you keep your java
-          libraries.</p></li></ol></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2763491"></a>2.4. Loader/Dumper</h2></div></div><div></div></div><p>The data loader and dumper are built and installed automatically
+      data in PostGIS.</p><div class="orderedlist"><ol type="1"><li><p>Enter the <code class="filename">jdbc</code> sub-directory of the
+          PostGIS distribution.</p></li><li><p>Edit the <code class="filename">Makefile</code> to provide the correct
+          paths of your java compiler (<code class="varname">JAVAC</code>) and
+          interpreter (<code class="varname">JAVA</code>).</p></li><li><p>Run the <code class="filename">make</code> command. Copy the
+          <code class="filename">postgis.jar</code> file to wherever you keep your java
+          libraries.</p></li></ol></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2539897"></a>2.4. Loader/Dumper</h2></div></div></div><p>The data loader and dumper are built and installed automatically
       as part of the PostGIS build. To build and install them manually:</p><pre class="programlisting"># cd postgis-1.2.1/loader # make #
-      make install</pre><p>The loader is called <tt class="filename">shp2pgsql</tt> and converts
+      make install</pre><p>The loader is called <code class="filename">shp2pgsql</code> and converts
       ESRI Shape files into SQL suitable for loading in PostGIS/PostgreSQL.
-      The dumper is called <tt class="filename">pgsql2shp</tt> and converts PostGIS
+      The dumper is called <code class="filename">pgsql2shp</code> and converts PostGIS
       tables (or queries) into ESRI Shape files. For more verbose
-      documentation, see the online help, and the manual pages.</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2763531"></a>Chapter 3. Frequently Asked Questions</h2></div></div><div></div></div><div class="qandaset"><dl><dt>3.1. <a href="#id2763539">What kind of geometric objects can I store?</a></dt><dt>3.2. <a href="#id2763560">How do I insert a GIS object into the database?</a></dt><dt>3.3. <a href="#id2763666">How do I construct a spatial query?</a></dt><dt>3.4. <a href="#id2763736">How do I speed up spatial queries on large tables?</a></dt><dt>3.5. <a href="#id2763824">Why aren't PostgreSQL R-Tree indexes supported?</a></dt><dt>3.6. <a href="#id2763883">Why should I use the AddGeometryColumn()
-          function and all the other OpenGIS stuff?</a></dt><dt>3.7. <a href="#id2763930">What is the best way to find all objects within a radius of
-          another object?</a></dt><dt>3.8. <a href="#id2763979">How do I perform a coordinate reprojection as part of a query?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="id2763539"></a><a name="id2763542"></a><b>3.1.</b></td><td align="left" valign="top"><p>What kind of geometric objects can I store?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>You can store point, line, polygon, multipoint, multiline,
+      documentation, see the online help, and the manual pages.</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2539937"></a>Chapter 3. Frequently Asked Questions</h2></div></div></div><div class="qandaset"><dl><dt>3.1. <a href="#id2539945">What kind of geometric objects can I store?</a></dt><dt>3.2. <a href="#id2539965">How do I insert a GIS object into the database?</a></dt><dt>3.3. <a href="#id2540071">How do I construct a spatial query?</a></dt><dt>3.4. <a href="#id2540141">How do I speed up spatial queries on large tables?</a></dt><dt>3.5. <a href="#id2540229">Why aren't PostgreSQL R-Tree indexes supported?</a></dt><dt>3.6. <a href="#id2540288">Why should I use the AddGeometryColumn()
+          function and all the other OpenGIS stuff?</a></dt><dt>3.7. <a href="#id2540335">What is the best way to find all objects within a radius of
+          another object?</a></dt><dt>3.8. <a href="#id2540384">How do I perform a coordinate reprojection as part of a query?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="id2539945"></a><a name="id2539947"></a><b>3.1.</b></td><td align="left" valign="top"><p>What kind of geometric objects can I store?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>You can store point, line, polygon, multipoint, multiline,
           multipolygon, and geometrycollections. These are specified in the
-          Open GIS Well Known Text Format (with XYZ,XYM,XYZM extentions).</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2763560"></a><a name="id2763562"></a><b>3.2.</b></td><td align="left" valign="top"><p>How do I insert a GIS object into the database?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>First, you need to create a table with a column of type
+          Open GIS Well Known Text Format (with XYZ,XYM,XYZM extentions).</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2539965"></a><a name="id2539967"></a><b>3.2.</b></td><td align="left" valign="top"><p>How do I insert a GIS object into the database?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>First, you need to create a table with a column of type
           "geometry" to hold your GIS data. Connect to your database
-          with <tt class="filename">psql</tt> and try the following SQL:</p><pre class="programlisting">CREATE TABLE gtest ( ID int4, NAME varchar(20) );
+          with <code class="filename">psql</code> and try the following SQL:</p><pre class="programlisting">CREATE TABLE gtest ( ID int4, NAME varchar(20) );
           SELECT AddGeometryColumn('',
           'gtest','geom',-1,'LINESTRING',2);</pre><p>If the geometry column addition fails, you probably have not
           loaded the PostGIS functions and objects into this database. See the
@@ -208,7 +204,7 @@
           'First Geometry', GeomFromText('LINESTRING(2 3,4 5,6 5,7
           8)', -1));</pre><p>For more information about other GIS objects, see the <a href="#RefObject" title="4.1. GIS Objects">object reference</a>.</p><p>To view your GIS data in the table:</p><pre class="programlisting">SELECT id, name, AsText(geom) AS geom FROM gtest;</pre><p>The return value should look something like this:</p><pre class="programlisting">id | name | geom
           ----+----------------+----------------------------- 1 | First
-          Geometry | LINESTRING(2 3,4 5,6 5,7 8) (1 row)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2763666"></a><a name="id2763669"></a><b>3.3.</b></td><td align="left" valign="top"><p>How do I construct a spatial query?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The same way you construct any other database query, as an SQL
+          Geometry | LINESTRING(2 3,4 5,6 5,7 8) (1 row)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2540071"></a><a name="id2540074"></a><b>3.3.</b></td><td align="left" valign="top"><p>How do I construct a spatial query?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>The same way you construct any other database query, as an SQL
           combination of return values, functions, and boolean tests.</p><p>For spatial queries, there are two issues that are important
           to keep in mind while constructing your query: is there a spatial
           index you can make use of; and, are you doing expensive calculations
@@ -225,9 +221,9 @@
           <span class="emphasis"><em>might</em></span> meet the condition of interest. The
           spatial functions are then use to test the condition exactly.</p><pre class="programlisting">SELECT id, the_geom FROM thetable WHERE the_geom
           &amp;&amp; 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))' AND
-          Contains(the_geom,'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))';</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2763736"></a><a name="id2763738"></a><b>3.4.</b></td><td align="left" valign="top"><p>How do I speed up spatial queries on large tables?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Fast queries on large tables is the <span class="emphasis"><em>raison
+          Contains(the_geom,'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))';</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2540141"></a><a name="id2540143"></a><b>3.4.</b></td><td align="left" valign="top"><p>How do I speed up spatial queries on large tables?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>Fast queries on large tables is the <span class="emphasis"><em>raison
           d'etre</em></span> of spatial databases (along with transaction
-          support) so having a good index is important.</p><p>To build a spatial index on a table with a <tt class="varname">geometry</tt>
+          support) so having a good index is important.</p><p>To build a spatial index on a table with a <code class="varname">geometry</code>
           column, use the "CREATE INDEX" function as follows:</p><pre class="programlisting">CREATE INDEX [indexname] ON [tablename] USING GIST (
           [geometrycolumn] );</pre><p>The "USING GIST" option tells the server to use a GiST
           (Generalized Search Tree) index.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>GiST indexes are assumed to be lossy. Lossy indexes uses a
@@ -236,8 +232,8 @@
           enough information about your index to make rational decisions about
           when to use it. To do this, you have to "gather statistics"
           on your geometry tables.</p><p>For PostgreSQL 8.0.x and greater, just run the
-          <span><b class="command">VACUUM ANALYZE</b></span> command.</p><p>For PostgreSQL 7.4.x and below, run the <span><b class="command">SELECT
-          UPDATE_GEOMETRY_STATS()</b></span> command.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2763824"></a><a name="id2763826"></a><b>3.5.</b></td><td align="left" valign="top"><p>Why aren't PostgreSQL R-Tree indexes supported?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Early versions of PostGIS used the PostgreSQL R-Tree indexes.
+          <span><strong class="command">VACUUM ANALYZE</strong></span> command.</p><p>For PostgreSQL 7.4.x and below, run the <span><strong class="command">SELECT
+          UPDATE_GEOMETRY_STATS()</strong></span> command.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2540229"></a><a name="id2540231"></a><b>3.5.</b></td><td align="left" valign="top"><p>Why aren't PostgreSQL R-Tree indexes supported?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>Early versions of PostGIS used the PostgreSQL R-Tree indexes.
           However, PostgreSQL R-Trees have been completely discarded since
           version 0.6, and spatial indexing is provided with an
           R-Tree-over-GiST scheme.</p><p>Our tests have shown search speed for native R-Tree and GiST
@@ -249,22 +245,22 @@
               "lossy" trick of substituting the bounding box for the
               feature itself.</p></li><li><p>R-Tree indexes in PostgreSQL are not "null safe",
               so building an index on a geometry column which contains null
-              geometries will fail.</p></li></ul></div></td></tr><tr class="question"><td align="left" valign="top"><a name="id2763883"></a><a name="id2763885"></a><b>3.6.</b></td><td align="left" valign="top"><p>Why should I use the <tt class="varname">AddGeometryColumn()</tt>
-          function and all the other OpenGIS stuff?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>If you do not want to use the OpenGIS support functions, you
+              geometries will fail.</p></li></ul></div></td></tr><tr class="question"><td align="left" valign="top"><a name="id2540288"></a><a name="id2540290"></a><b>3.6.</b></td><td align="left" valign="top"><p>Why should I use the <code class="varname">AddGeometryColumn()</code>
+          function and all the other OpenGIS stuff?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>If you do not want to use the OpenGIS support functions, you
           do not have to. Simply create tables as in older versions, defining
           your geometry columns in the CREATE statement. All your geometries
           will have SRIDs of -1, and the OpenGIS meta-data tables will
           <span class="emphasis"><em>not</em></span> be filled in properly. However, this will
           cause most applications based on PostGIS to fail, and it is
-          generally suggested that you do use <tt class="varname">AddGeometryColumn()</tt>
+          generally suggested that you do use <code class="varname">AddGeometryColumn()</code>
           to create geometry tables.</p><p>Mapserver is one application which makes use of the
-          <tt class="varname">geometry_columns</tt> meta-data. Specifically,
+          <code class="varname">geometry_columns</code> meta-data. Specifically,
           Mapserver can use the SRID of the geometry column to do on-the-fly
-          reprojection of features into the correct map projection.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2763930"></a><a name="id2763933"></a><b>3.7.</b></td><td align="left" valign="top"><p>What is the best way to find all objects within a radius of
-          another object?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>To use the database most efficiently, it is best to do radius
+          reprojection of features into the correct map projection.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2540335"></a><a name="id2540338"></a><b>3.7.</b></td><td align="left" valign="top"><p>What is the best way to find all objects within a radius of
+          another object?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>To use the database most efficiently, it is best to do radius
           queries which combine the radius test with a bounding box test: the
           bounding box test uses the spatial index, giving fast access to a
-          subset of data which the radius test is then applied to.</p><p>The <tt class="varname">Expand()</tt> function is a handy way of
+          subset of data which the radius test is then applied to.</p><p>The <code class="varname">Expand()</code> function is a handy way of
           enlarging a bounding box to allow an index search of a region of
           interest. The combination of a fast access index clause and a slower
           accurate distance test provides the best combination of speed and
@@ -272,15 +268,15 @@
           1000) the following query would work well:</p><pre class="programlisting">SELECT * FROM GEOTABLE WHERE GEOCOLUMN &amp;&amp;
           Expand(GeomFromText('POINT(1000 1000)',-1),100) AND
           Distance(GeomFromText('POINT(1000 1000)',-1),GEOCOLUMN)
-          &lt; 100;</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2763979"></a><a name="id2763981"></a><b>3.8.</b></td><td align="left" valign="top"><p>How do I perform a coordinate reprojection as part of a query?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>To perform a reprojection, both the source and destination
+          &lt; 100;</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2540384"></a><a name="id2540386"></a><b>3.8.</b></td><td align="left" valign="top"><p>How do I perform a coordinate reprojection as part of a query?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>To perform a reprojection, both the source and destination
           coordinate systems must be defined in the SPATIAL_REF_SYS table, and
           the geometries being reprojected must already have an SRID set on
           them. Once that is done, a reprojection is as simple as referring to
-          the desired destination SRID.</p><pre class="programlisting">SELECT Transform(GEOM,4269) FROM GEOTABLE;</pre></td></tr></tbody></table></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2764010"></a>Chapter 4. Using PostGIS</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#RefObject">4.1. GIS Objects</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2764042">4.1.1. OpenGIS WKB and WKT</a></span></dt><dt><span class="sect2"><a href="#id2764151">4.1.2. PostGIS EWKB, EWKT and Canonical Forms</a></span></dt><dt><span class="sect2"><a href="#id2764316">4.1.3. SQL-MM Part 3</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2764400">4.2. Using OpenGIS Standards</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2764441">4.2.1. The SPATIAL_REF_SYS Table</a></span></dt><dt><span class="sect2"><a href="#id2764652">4.2.2. The GEOMETRY_COLUMNS Table</a></span></dt><dt><span class="sect2"><a href="#id2764797">4.2.3. Creating a Spatial Table</a></span></dt><dt><span class="sect2"><a href="#id2764911">4.2.4. Ensuring OpenGIS compliancy of geometries</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2765010">4.3. Loading GIS Data</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2765024">4.3.1. Using SQL</a></span></dt><dt><span class="sect2"><a href="#id2765088">4.3.2. Using the Loader</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2765328">4.4. Retrieving GIS Data</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2765341">4.4.1. Using SQL</a></span></dt><dt><span class="sect2"><a href="#id2765514">4.4.2. Using the Dumper</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2765691">4.5. Building Indexes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2765757">4.5.1. GiST Indexes</a></span></dt><dt><span class="sect2"><a href="#id2765837">4.5.2. Using Indexes</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2765955">4.6. Complex Queries</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2765973">4.6.1. Taking Advantage of Indexes</a></span></dt><dt><span class="sect2"><a href="#id2766061">4.6.2. Examples of Spatial SQL</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2766374">4.7. Using Mapserver</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2766416">4.7.1. Basic Usage</a></span></dt><dt><span class="sect2"><a href="#id2766674">4.7.2. Frequently Asked Questions</a></span></dt><dt><span class="sect2"><a href="#id2766856">4.7.3. Advanced Usage</a></span></dt><dt><span class="sect2"><a href="#id2767038">4.7.4. Examples</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2767148">4.8. Java Clients (JDBC)</a></span></dt><dt><span class="sect1"><a href="#id2767233">4.9. C Clients (libpq)</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2767242">4.9.1. Text Cursors</a></span></dt><dt><span class="sect2"><a href="#id2767252">4.9.2. Binary Cursors</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="RefObject"></a>4.1. GIS Objects</h2></div></div><div></div></div><p>The GIS objects supported by PostGIS are a superset of the
+          the desired destination SRID.</p><pre class="programlisting">SELECT Transform(GEOM,4269) FROM GEOTABLE;</pre></td></tr></tbody></table></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2540415"></a>Chapter 4. Using PostGIS</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#RefObject">4.1. GIS Objects</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2540447">4.1.1. OpenGIS WKB and WKT</a></span></dt><dt><span class="sect2"><a href="#id2540555">4.1.2. PostGIS EWKB, EWKT and Canonical Forms</a></span></dt><dt><span class="sect2"><a href="#id2540720">4.1.3. SQL-MM Part 3</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2540805">4.2. Using OpenGIS Standards</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2540846">4.2.1. The SPATIAL_REF_SYS Table</a></span></dt><dt><span class="sect2"><a href="#id2541056">4.2.2. The GEOMETRY_COLUMNS Table</a></span></dt><dt><span class="sect2"><a href="#id2541202">4.2.3. Creating a Spatial Table</a></span></dt><dt><span class="sect2"><a href="#id2541316">4.2.4. Ensuring OpenGIS compliancy of geometries</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2541415">4.3. Loading GIS Data</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2541428">4.3.1. Using SQL</a></span></dt><dt><span class="sect2"><a href="#id2541493">4.3.2. Using the Loader</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2541732">4.4. Retrieving GIS Data</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2541745">4.4.1. Using SQL</a></span></dt><dt><span class="sect2"><a href="#id2541918">4.4.2. Using the Dumper</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2542096">4.5. Building Indexes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2542162">4.5.1. GiST Indexes</a></span></dt><dt><span class="sect2"><a href="#id2542241">4.5.2. Using Indexes</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2542359">4.6. Complex Queries</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2542378">4.6.1. Taking Advantage of Indexes</a></span></dt><dt><span class="sect2"><a href="#id2542465">4.6.2. Examples of Spatial SQL</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2542778">4.7. Using Mapserver</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2542821">4.7.1. Basic Usage</a></span></dt><dt><span class="sect2"><a href="#id2543078">4.7.2. Frequently Asked Questions</a></span></dt><dt><span class="sect2"><a href="#id2543261">4.7.3. Advanced Usage</a></span></dt><dt><span class="sect2"><a href="#id2543442">4.7.4. Examples</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2543552">4.8. Java Clients (JDBC)</a></span></dt><dt><span class="sect1"><a href="#id2543637">4.9. C Clients (libpq)</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2543646">4.9.1. Text Cursors</a></span></dt><dt><span class="sect2"><a href="#id2543656">4.9.2. Binary Cursors</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="RefObject"></a>4.1. GIS Objects</h2></div></div></div><p>The GIS objects supported by PostGIS are a superset of the
       "Simple Features" defined by the OpenGIS Consortium (OGC). As of
       version 0.9, PostGIS supports all the objects and functions specified in
       the OGC "Simple Features for SQL" specification.</p><p>PostGIS extends the standard with support for 3DZ,3DM and 4D
-      coordinates.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2764042"></a>4.1.1. OpenGIS WKB and WKT</h3></div></div><div></div></div><p>The OpenGIS specification defines two standard ways of
+      coordinates.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540447"></a>4.1.1. OpenGIS WKB and WKT</h3></div></div></div><p>The OpenGIS specification defines two standard ways of
         expressing spatial objects: the Well-Known Text (WKT) form and the
         Well-Known Binary (WKB) form. Both WKT and WKB include information
         about the type of the object and the coordinates which form the
@@ -295,7 +291,7 @@
         GeometryFromText(text WKT, SRID);</pre><p>For example, a valid insert statement to create and insert an
         OGC spatial object would be:</p><pre class="programlisting">INSERT INTO SPATIALTABLE ( THE_GEOM, THE_NAME ) VALUES
         ( GeomFromText('POINT(-126.4 45.32)', 312), 'A Place'
-        )</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2764151"></a>4.1.2. PostGIS EWKB, EWKT and Canonical Forms</h3></div></div><div></div></div><p>OGC formats only support 2d geometries, and the associated SRID
+        )</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540555"></a>4.1.2. PostGIS EWKB, EWKT and Canonical Forms</h3></div></div></div><p>OGC formats only support 2d geometries, and the associated SRID
         is *never* embedded in the input/output representations.</p><p>Postgis extended formats are currently superset of OGC one
         (every valid WKB/WKT is a valid EWKB/EWKT) but this might vary in the
         future, specifically if OGC comes out with a new format conflicting
@@ -318,7 +314,7 @@
         hex form) - Input - binary: EWKB ascii: HEXEWKB|EWKT </pre><p>For example this statement reads EWKT and returns HEXEWKB in the
         process of canonical ascii input/output:</p><pre class="programlisting">=# SELECT 'SRID=4;POINT(0 0)'::geometry;
         geometry ----------------------------------------------------
-        01010000200400000000000000000000000000000000000000 (1 row)</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2764316"></a>4.1.3. SQL-MM Part 3</h3></div></div><div></div></div><p>The SQL Multimedia Applications Spatial specification extends
+        01010000200400000000000000000000000000000000000000 (1 row)</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540720"></a>4.1.3. SQL-MM Part 3</h3></div></div></div><p>The SQL Multimedia Applications Spatial specification extends
         the simple features for SQL spec by defining a number of circularly
         interpolated curves.</p><p>The SQL-MM definitions include 3dm, 3dz and 4d coordinates, but
         do not allow the embedding of SRID information.</p><p>The well-known text extensions are not yet fully supported.
@@ -328,21 +324,21 @@
             11.5 11, 11 11.5, 11 11)))</p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Currently, PostGIS cannot support the use of Compound Curves
           in a Curve Polygon.</p></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>All floating point comparisons within the SQL-MM
           implementation are performed to a specified tolerance, currently
-          1E-8.</p></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2764400"></a>4.2. Using OpenGIS Standards</h2></div></div><div></div></div><p>The OpenGIS "Simple Features Specification for SQL"
+          1E-8.</p></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2540805"></a>4.2. Using OpenGIS Standards</h2></div></div></div><p>The OpenGIS "Simple Features Specification for SQL"
       defines standard GIS object types, the functions required to manipulate
       them, and a set of meta-data tables. In order to ensure that meta-data
       remain consistent, operations such as creating and removing a spatial
-      column are carried out through special procedures defined by OpenGIS.</p><p>There are two OpenGIS meta-data tables: <tt class="varname">SPATIAL_REF_SYS</tt>
-      and <tt class="varname">GEOMETRY_COLUMNS</tt>. The <tt class="varname">SPATIAL_REF_SYS</tt>
+      column are carried out through special procedures defined by OpenGIS.</p><p>There are two OpenGIS meta-data tables: <code class="varname">SPATIAL_REF_SYS</code>
+      and <code class="varname">GEOMETRY_COLUMNS</code>. The <code class="varname">SPATIAL_REF_SYS</code>
       table holds the numeric IDs and textual descriptions of coordinate
-      systems used in the spatial database.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2764441"></a>4.2.1. The SPATIAL_REF_SYS Table</h3></div></div><div></div></div><p>The <tt class="varname">SPATIAL_REF_SYS</tt> table definition is as
+      systems used in the spatial database.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540846"></a>4.2.1. The SPATIAL_REF_SYS Table</h3></div></div></div><p>The <code class="varname">SPATIAL_REF_SYS</code> table definition is as
         follows:</p><pre class="programlisting">CREATE TABLE SPATIAL_REF_SYS ( SRID INTEGER NOT NULL
         PRIMARY KEY, AUTH_NAME VARCHAR(256), AUTH_SRID INTEGER, SRTEXT
-        VARCHAR(2048), PROJ4TEXT VARCHAR(2048) )</pre><p>The <tt class="varname">SPATIAL_REF_SYS</tt> columns are as follows:</p><div class="variablelist"><dl><dt><span class="term">SRID</span></dt><dd><p>An integer value that uniquely identifies the Spatial
+        VARCHAR(2048), PROJ4TEXT VARCHAR(2048) )</pre><p>The <code class="varname">SPATIAL_REF_SYS</code> columns are as follows:</p><div class="variablelist"><dl><dt><span class="term">SRID</span></dt><dd><p>An integer value that uniquely identifies the Spatial
               Referencing System (SRS) within the database.</p></dd><dt><span class="term">AUTH_NAME</span></dt><dd><p>The name of the standard or standards body that is being
               cited for this reference system. For example, "EPSG"
-              would be a valid <tt class="varname">AUTH_NAME</tt>.</p></dd><dt><span class="term">AUTH_SRID</span></dt><dd><p>The ID of the Spatial Reference System as defined by the
-              Authority cited in the <tt class="varname">AUTH_NAME</tt>. In the case
+              would be a valid <code class="varname">AUTH_NAME</code>.</p></dd><dt><span class="term">AUTH_SRID</span></dt><dd><p>The ID of the Spatial Reference System as defined by the
+              Authority cited in the <code class="varname">AUTH_NAME</code>. In the case
               of EPSG, this is where the EPSG projection code would go.</p></dd><dt><span class="term">SRTEXT</span></dt><dd><p>The Well-Known Text representation of the Spatial
               Reference System. An example of a WKT SRS representation is:</p><pre class="programlisting">PROJCS["NAD83 / UTM Zone 10N",
               GEOGCS["NAD83",
@@ -362,14 +358,14 @@
               Specification" at <a href="http://www.opengis.org/techno/specs.htm" target="_top">http://www.opengis.org/techno/specs.htm</a>.
               For information on the European Petroleum Survey Group (EPSG)
               and their database of spatial reference systems, see <a href="http://epsg.org" target="_top">http://epsg.org</a>.</p></dd><dt><span class="term">PROJ4TEXT</span></dt><dd><p>PostGIS uses the Proj4 library to provide coordinate
-              transformation capabilities. The <tt class="varname">PROJ4TEXT</tt>
+              transformation capabilities. The <code class="varname">PROJ4TEXT</code>
               column contains the Proj4 coordinate definition string for a
               particular SRID. For example:</p><pre class="programlisting">+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27
               +units=m</pre><p>For more information about, see the Proj4 web site at
               <a href="http://www.remotesensing.org/proj" target="_top">http://www.remotesensing.org/proj</a>.
-              The <tt class="filename">spatial_ref_sys.sql</tt> file contains both
-              <tt class="varname">SRTEXT</tt> and <tt class="varname">PROJ4TEXT</tt>
-              definitions for all EPSG projections.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2764652"></a>4.2.2. The GEOMETRY_COLUMNS Table</h3></div></div><div></div></div><p>The <tt class="varname">GEOMETRY_COLUMNS</tt> table definition is as
+              The <code class="filename">spatial_ref_sys.sql</code> file contains both
+              <code class="varname">SRTEXT</code> and <code class="varname">PROJ4TEXT</code>
+              definitions for all EPSG projections.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541056"></a>4.2.2. The GEOMETRY_COLUMNS Table</h3></div></div></div><p>The <code class="varname">GEOMETRY_COLUMNS</code> table definition is as
         follows:</p><pre class="programlisting">CREATE TABLE GEOMETRY_COLUMNS ( F_TABLE_CATALOG
         VARCHAR(256) NOT NULL, F_TABLE_SCHEMA VARCHAR(256) NOT NULL,
         F_TABLE_NAME VARCHAR(256) NOT NULL, F_GEOMETRY_COLUMN VARCHAR(256) NOT
@@ -378,36 +374,36 @@
               the geometry column. Note that the terms "catalog" and
               "schema" are Oracle-ish. There is not PostgreSQL
               analogue of "catalog" so that column is left blank --
-              for "schema" the PostgreSQL schema name is used (<tt class="varname">public</tt>
+              for "schema" the PostgreSQL schema name is used (<code class="varname">public</code>
               is the default).</p></dd><dt><span class="term">F_GEOMETRY_COLUMN</span></dt><dd><p>The name of the geometry column in the feature table.</p></dd><dt><span class="term">COORD_DIMENSION</span></dt><dd><p>The spatial dimension (2, 3 or 4 dimensional) of the
               column.</p></dd><dt><span class="term">SRID</span></dt><dd><p>The ID of the spatial reference system used for the
               coordinate geometry in this table. It is a foreign key reference
-              to the <tt class="varname">SPATIAL_REF_SYS</tt>.</p></dd><dt><span class="term">TYPE</span></dt><dd><p>The type of the spatial object. To restrict the spatial
+              to the <code class="varname">SPATIAL_REF_SYS</code>.</p></dd><dt><span class="term">TYPE</span></dt><dd><p>The type of the spatial object. To restrict the spatial
               column to a single type, use one of: POINT, LINESTRING, POLYGON,
               MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION or
               corresponding XYM versions POINTM, LINESTRINGM, POLYGONM,
               MULTIPOINTM, MULTILINESTRINGM, MULTIPOLYGONM,
               GEOMETRYCOLLECTIONM. For heterogeneous (mixed-type) collections,
               you can use "GEOMETRY" as the type.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This attribute is (probably) not part of the OpenGIS
-                specification, but is required for ensuring type homogeneity.</p></div></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2764797"></a>4.2.3. Creating a Spatial Table</h3></div></div><div></div></div><p>Creating a table with spatial data is done in two stages:</p><div class="itemizedlist"><ul type="disc"><li><p>Create a normal non-spatial table.</p><p>For example: <span><b class="command">CREATE TABLE ROADS_GEOM ( ID int4,
-            NAME varchar(25) )</b></span></p></li><li><p>Add a spatial column to the table using the OpenGIS
+                specification, but is required for ensuring type homogeneity.</p></div></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541202"></a>4.2.3. Creating a Spatial Table</h3></div></div></div><p>Creating a table with spatial data is done in two stages:</p><div class="itemizedlist"><ul type="disc"><li><p>Create a normal non-spatial table.</p><p>For example: <span><strong class="command">CREATE TABLE ROADS_GEOM ( ID int4,
+            NAME varchar(25) )</strong></span></p></li><li><p>Add a spatial column to the table using the OpenGIS
             "AddGeometryColumn" function.</p><p>The syntax is: </p><pre class="programlisting">AddGeometryColumn(&lt;schema_name&gt;,
             &lt;table_name&gt;, &lt;column_name&gt;, &lt;srid&gt;,
             &lt;type&gt;, &lt;dimension&gt;)</pre><p> Or, using
             current schema: </p><pre class="programlisting">AddGeometryColumn(&lt;table_name&gt;,
             &lt;column_name&gt;, &lt;srid&gt;, &lt;type&gt;,
-            &lt;dimension&gt;)</pre><p>Example1: <span><b class="command">SELECT
+            &lt;dimension&gt;)</pre><p>Example1: <span><strong class="command">SELECT
             AddGeometryColumn('public', 'roads_geom',
-            'geom', 423, 'LINESTRING', 2)</b></span></p><p>Example2: <span><b class="command">SELECT AddGeometryColumn(
+            'geom', 423, 'LINESTRING', 2)</strong></span></p><p>Example2: <span><strong class="command">SELECT AddGeometryColumn(
             'roads_geom', 'geom', 423, 'LINESTRING',
-            2)</b></span></p></li></ul></div><p>Here is an example of SQL used to create a table and add a
+            2)</strong></span></p></li></ul></div><p>Here is an example of SQL used to create a table and add a
         spatial column (assuming that an SRID of 128 exists already):</p><pre class="programlisting">CREATE TABLE parks ( PARK_ID int4, PARK_NAME
         varchar(128), PARK_DATE date, PARK_TYPE varchar(2) ); SELECT
         AddGeometryColumn('parks', 'park_geom', 128,
         'MULTIPOLYGON', 2 );</pre><p>Here is another example, using the generic "geometry"
         type and the undefined SRID value of -1:</p><pre class="programlisting">CREATE TABLE roads ( ROAD_ID int4, ROAD_NAME
         varchar(128) ); SELECT AddGeometryColumn( 'roads',
-        'roads_geom', -1, 'GEOMETRY', 3 );</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2764911"></a>4.2.4. Ensuring OpenGIS compliancy of geometries</h3></div></div><div></div></div><p>Most of the functions implemented by the GEOS library rely on
+        'roads_geom', -1, 'GEOMETRY', 3 );</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541316"></a>4.2.4. Ensuring OpenGIS compliancy of geometries</h3></div></div></div><p>Most of the functions implemented by the GEOS library rely on
         the assumption that your geometries are valid as specified by the
         OpenGIS Simple Feature Specification. To check validity of geometries
         you can use the <a href="#IsValid">IsValid()</a> function:</p><pre class="programlisting">gisdb=# select isvalid('LINESTRING(0 0, 1
@@ -427,14 +423,14 @@
           The <a href="#IsValid">IsValid()</a> function won't
           consider higher dimensioned geometries invalid! Invocations of <a href="#AddGeometryColumn">AddGeometryColumn()</a> will add a
           constraint checking geometry dimensions, so it is enough to specify
-          2 there.</p></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2765010"></a>4.3. Loading GIS Data</h2></div></div><div></div></div><p>Once you have created a spatial table, you are ready to upload GIS
+          2 there.</p></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2541415"></a>4.3. Loading GIS Data</h2></div></div></div><p>Once you have created a spatial table, you are ready to upload GIS
       data to the database. Currently, there are two ways to get data into a
       PostGIS/PostgreSQL database: using formatted SQL statements or using the
-      Shape file loader/dumper.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2765024"></a>4.3.1. Using SQL</h3></div></div><div></div></div><p>If you can convert your data to a text representation, then
+      Shape file loader/dumper.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541428"></a>4.3.1. Using SQL</h3></div></div></div><p>If you can convert your data to a text representation, then
         using formatted SQL might be the easiest way to get your data into
         PostGIS. As with Oracle and other SQL databases, data can be bulk
         loaded by piping a large text file full of SQL "INSERT"
-        statements into the SQL terminal monitor.</p><p>A data upload file (<tt class="filename">roads.sql</tt> for example)
+        statements into the SQL terminal monitor.</p><p>A data upload file (<code class="filename">roads.sql</code> for example)
         might look like this:</p><pre class="programlisting">BEGIN; INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES
         (1,GeomFromText('LINESTRING(191232 243118,191108
         243242)',-1),'Jeff Rd'); INSERT INTO ROADS_GEOM
@@ -450,7 +446,7 @@
         228134)',-1),'Phil Tce'); INSERT INTO ROADS_GEOM
         (ID,GEOM,NAME ) VALUES (6,GeomFromText('LINESTRING(198231
         263418,198213 268322)',-1),'Dave Cres'); COMMIT;</pre><p>The data file can be piped into PostgreSQL very easily using the
-        "psql" SQL terminal monitor:</p><pre class="programlisting">psql -d [database] -f roads.sql</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2765088"></a>4.3.2. Using the Loader</h3></div></div><div></div></div><p>The <tt class="filename">shp2pgsql</tt> data loader converts ESRI
+        "psql" SQL terminal monitor:</p><pre class="programlisting">psql -d [database] -f roads.sql</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541493"></a>4.3.2. Using the Loader</h3></div></div></div><p>The <code class="filename">shp2pgsql</code> data loader converts ESRI
         Shape files into SQL suitable for insertion into a PostGIS/PostgreSQL
         database. The loader has several operating modes distinguished by
         command line flags:</p><div class="variablelist"><dl><dt><span class="term">-d</span></dt><dd><p>Drops the database table before creating a new table with
@@ -472,15 +468,15 @@
               will drop M values from shapefiles.</p></dd><dt><span class="term">-W &lt;encoding&gt;</span></dt><dd><p>Specify encoding of the input data (dbf file). When used,
               all attributes of the dbf are converted from the specified
               encoding to UTF8. The resulting SQL output will contain a
-              <tt class="code">SET CLIENT_ENCODING to UTF8</tt> command, so that the
+              <code class="code">SET CLIENT_ENCODING to UTF8</code> command, so that the
               backend will be able to reconvert from UTF8 to whatever encoding
               the database is configured to use internally.</p></dd></dl></div><p>Note that -a, -c, -d and -p are mutually exclusive.</p><p>An example session using the loader to create an input file and
         uploading it might look like this:</p><pre class="programlisting"># shp2pgsql shaperoads myschema.roadstable &gt;
         roads.sql # psql -d roadsdb -f roads.sql</pre><p>A conversion and upload can be done all in one step using UNIX
         pipes:</p><pre class="programlisting"># shp2pgsql shaperoads myschema.roadstable | psql -d
-        roadsdb</pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2765328"></a>4.4. Retrieving GIS Data</h2></div></div><div></div></div><p>Data can be extracted from the database using either SQL or the
+        roadsdb</pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2541732"></a>4.4. Retrieving GIS Data</h2></div></div></div><p>Data can be extracted from the database using either SQL or the
       Shape file loader/dumper. In the section on SQL we will discuss some of
-      the operators available to do comparisons and queries on spatial tables.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2765341"></a>4.4.1. Using SQL</h3></div></div><div></div></div><p>The most straightforward means of pulling data out of the
+      the operators available to do comparisons and queries on spatial tables.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541745"></a>4.4.1. Using SQL</h3></div></div></div><p>The most straightforward means of pulling data out of the
         database is to use a SQL select query and dump the resulting columns
         into a parsable text file:</p><pre class="programlisting">db=# SELECT id, AsText(geom) AS geom, name FROM
         ROADS_GEOM; id | geom | name
@@ -519,18 +515,18 @@
         query looks like this:</p><pre class="programlisting">SELECT AsText(GEOM) AS GEOM FROM ROADS_GEOM WHERE GEOM
         &amp;&amp; SetSRID('BOX3D(191232 243117,191232
         243119)'::box3d,-1);</pre><p>Note the use of the SRID, to specify the projection of the
-        BOX3D. The value -1 is used to indicate no specified SRID.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2765514"></a>4.4.2. Using the Dumper</h3></div></div><div></div></div><p>The <tt class="filename">pgsql2shp</tt> table dumper connects
+        BOX3D. The value -1 is used to indicate no specified SRID.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541918"></a>4.4.2. Using the Dumper</h3></div></div></div><p>The <code class="filename">pgsql2shp</code> table dumper connects
         directly to the database and converts a table (possibly defined by a
         query) into a shape file. The basic syntax is:</p><pre class="programlisting">pgsql2shp [&lt;options&gt;] &lt;database&gt;
         [&lt;schema&gt;.]&lt;table&gt;</pre><pre class="programlisting">pgsql2shp [&lt;options&gt;] &lt;database&gt;
         &lt;query&gt;</pre><p>The commandline options are:</p><div class="variablelist"><dl><dt><span class="term">-f &lt;filename&gt;</span></dt><dd><p>Write the output to a particular filename.</p></dd><dt><span class="term">-h &lt;host&gt;</span></dt><dd><p>The database host to connect to.</p></dd><dt><span class="term">-p &lt;port&gt;</span></dt><dd><p>The port to connect to on the database host.</p></dd><dt><span class="term">-P &lt;password&gt;</span></dt><dd><p>The password to use when connecting to the database.</p></dd><dt><span class="term">-u &lt;user&gt;</span></dt><dd><p>The username to use when connecting to the database.</p></dd><dt><span class="term">-g &lt;geometry column&gt;</span></dt><dd><p>In the case of tables with multiple geometry columns, the
               geometry column to use when writing the shape file.</p></dd><dt><span class="term">-b</span></dt><dd><p>Use a binary cursor. This will make the operation faster,
               but will not work if any NON-geometry attribute in the table
-              lacks a cast to text.</p></dd><dt><span class="term">-r</span></dt><dd><p>Raw mode. Do not drop the <tt class="varname">gid</tt> field, or
+              lacks a cast to text.</p></dd><dt><span class="term">-r</span></dt><dd><p>Raw mode. Do not drop the <code class="varname">gid</code> field, or
               escape column names.</p></dd><dt><span class="term">-d</span></dt><dd><p>For backward compatibility: write a 3-dimensional shape
               file when dumping from old (pre-1.0.0) postgis databases (the
               default is to write a 2-dimensional shape file in that case).
-              Starting from postgis-1.0.0+, dimensions are fully encoded.</p></dd></dl></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2765691"></a>4.5. Building Indexes</h2></div></div><div></div></div><p>Indexes are what make using a spatial database for large data sets
+              Starting from postgis-1.0.0+, dimensions are fully encoded.</p></dd></dl></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2542096"></a>4.5. Building Indexes</h2></div></div></div><p>Indexes are what make using a spatial database for large data sets
       possible. Without indexing, any search for a feature would require a
       "sequential scan" of every record in the database. Indexing
       speeds up searching by organizing the data into a search tree which can
@@ -546,7 +542,7 @@
           "things to one side", "things which overlap",
           "things which are inside" and can be used on a wide range of
           data-types, including GIS data. PostGIS uses an R-Tree index
-          implemented on top of GiST to index GIS data.</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2765757"></a>4.5.1. GiST Indexes</h3></div></div><div></div></div><p>GiST stands for "Generalized Search Tree" and is a
+          implemented on top of GiST to index GIS data.</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542162"></a>4.5.1. GiST Indexes</h3></div></div></div><p>GiST stands for "Generalized Search Tree" and is a
         generic form of indexing. In addition to GIS indexing, GiST is used to
         speed up searches on all kinds of irregular data structures (integer
         arrays, spectral data, etc) which are not amenable to normal B-Tree
@@ -569,7 +565,7 @@
         Lossiness allows PostgreSQL to store only the "important" part
         of an object in an index -- in the case of GIS objects, just the
         bounding box. GIS objects larger than 8K will cause R-Tree indexes to
-        fail in the process of being built.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2765837"></a>4.5.2. Using Indexes</h3></div></div><div></div></div><p>Ordinarily, indexes invisibly speed up data access: once the
+        fail in the process of being built.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542241"></a>4.5.2. Using Indexes</h3></div></div></div><p>Ordinarily, indexes invisibly speed up data access: once the
         index is built, the query planner transparently decides when to use
         index information to speed up a query plan. Unfortunately, the
         PostgreSQL query planner does not optimize the use of GiST indexes
@@ -580,38 +576,38 @@
             and distributions of values in a table, to provide the query
             planner with better information to make decisions around index
             usage. For PostgreSQL 7.4 installations and below this is done by
-            running <span><b class="command">update_geometry_stats([table_name, column_name])</b></span>
-            (compute distribution) and <span><b class="command">VACUUM ANALYZE [table_name]
-            [column_name]</b></span> (compute number of values). Starting with
-            PostgreSQL 8.0 running <span><b class="command">VACUUM ANALYZE</b></span> will do
+            running <span><strong class="command">update_geometry_stats([table_name, column_name])</strong></span>
+            (compute distribution) and <span><strong class="command">VACUUM ANALYZE [table_name]
+            [column_name]</strong></span> (compute number of values). Starting with
+            PostgreSQL 8.0 running <span><strong class="command">VACUUM ANALYZE</strong></span> will do
             both operations. You should regularly vacuum your databases
-            anyways -- many PostgreSQL DBAs have <span><b class="command">VACUUM</b></span> run
+            anyways -- many PostgreSQL DBAs have <span><strong class="command">VACUUM</strong></span> run
             as an off-peak cron job on a regular basis.</p></li><li><p>If vacuuming does not work, you can force the planner to use
-            the index information by using the <span><b class="command">SET ENABLE_SEQSCAN=OFF</b></span>
+            the index information by using the <span><strong class="command">SET ENABLE_SEQSCAN=OFF</strong></span>
             command. You should only use this command sparingly, and only on
             spatially indexed queries: generally speaking, the planner knows
             better than you do about when to use normal B-Tree indexes. Once
             you have run your query, you should consider setting
-            <tt class="varname">ENABLE_SEQSCAN</tt> back on, so that other queries
+            <code class="varname">ENABLE_SEQSCAN</code> back on, so that other queries
             will utilize the planner as normal.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>As of version 0.6, it should not be necessary to force the
-              planner to use the index with <tt class="varname">ENABLE_SEQSCAN</tt>.</p></div></li><li><p>If you find the planner wrong about the cost of sequential
+              planner to use the index with <code class="varname">ENABLE_SEQSCAN</code>.</p></div></li><li><p>If you find the planner wrong about the cost of sequential
             vs index scans try reducing the value of random_page_cost in
             postgresql.conf or using SET random_page_cost=#. Default value for
             the parameter is 4, try setting it to 1 or 2. Decrementing the
-            value makes the planner more inclined of using Index scans.</p></li></ul></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2765955"></a>4.6. Complex Queries</h2></div></div><div></div></div><p>The <span class="emphasis"><em>raison d'etre</em></span> of spatial database
+            value makes the planner more inclined of using Index scans.</p></li></ul></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2542359"></a>4.6. Complex Queries</h2></div></div></div><p>The <span class="emphasis"><em>raison d'etre</em></span> of spatial database
       functionality is performing queries inside the database which would
       ordinarily require desktop GIS functionality. Using PostGIS effectively
       requires knowing what spatial functions are available, and ensuring that
-      appropriate indexes are in place to provide good performance.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2765973"></a>4.6.1. Taking Advantage of Indexes</h3></div></div><div></div></div><p>When constructing a query it is important to remember that only
+      appropriate indexes are in place to provide good performance.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542378"></a>4.6.1. Taking Advantage of Indexes</h3></div></div></div><p>When constructing a query it is important to remember that only
         the bounding-box-based operators such as &amp;&amp; can take advantage
-        of the GiST spatial index. Functions such as <tt class="varname">distance()</tt>
+        of the GiST spatial index. Functions such as <code class="varname">distance()</code>
         cannot use the index to optimize their operation. For example, the
         following query would be quite slow on a large table:</p><pre class="programlisting">SELECT the_geom FROM geom_table WHERE distance(
         the_geom, GeomFromText( 'POINT(100000 200000)', -1 ) ) &lt;
         100</pre><p>This query is selecting all the geometries in geom_table which
         are within 100 units of the point (100000, 200000). It will be slow
         because it is calculating the distance between each point in the table
-        and our specified point, ie. one <tt class="varname">distance()</tt>
+        and our specified point, ie. one <code class="varname">distance()</code>
         calculation for each row in the table. We can avoid this by using the
         &amp;&amp; operator to reduce the number of distance calculations
         required:</p><pre class="programlisting">SELECT the_geom FROM geom_table WHERE the_geom
@@ -620,37 +616,37 @@
         ) &lt; 100</pre><p>This query selects the same geometries, but it does it in a more
         efficient way. Assuming there is a GiST index on the_geom, the query
         planner will recognize that it can use the index to reduce the number
-        of rows before calculating the result of the <tt class="varname">distance()</tt>
-        function. Notice that the <tt class="varname">BOX3D</tt> geometry which is
+        of rows before calculating the result of the <code class="varname">distance()</code>
+        function. Notice that the <code class="varname">BOX3D</code> geometry which is
         used in the &amp;&amp; operation is a 200 unit square box centered on
         the original point - this is our "query box". The &amp;&amp;
         operator uses the index to quickly reduce the result set down to only
         those geometries which have bounding boxes that overlap the "query
         box". Assuming that our query box is much smaller than the extents
         of the entire geometry table, this will drastically reduce the number
-        of distance calculations that need to be done.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2766061"></a>4.6.2. Examples of Spatial SQL</h3></div></div><div></div></div><p>The examples in this section will make use of two tables, a
+        of distance calculations that need to be done.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542465"></a>4.6.2. Examples of Spatial SQL</h3></div></div></div><p>The examples in this section will make use of two tables, a
         table of linear roads, and a table of polygonal municipality
-        boundaries. The table definitions for the <tt class="varname">bc_roads</tt>
+        boundaries. The table definitions for the <code class="varname">bc_roads</code>
         table is:</p><pre class="programlisting">Column | Type | Description
         ------------+-------------------+------------------- gid | integer |
         Unique ID name | character varying | Road Name the_geom | geometry |
-        Location Geometry (Linestring)</pre><p>The table definition for the <tt class="varname">bc_municipality</tt>
+        Location Geometry (Linestring)</pre><p>The table definition for the <code class="varname">bc_municipality</code>
         table is:</p><pre class="programlisting">Column | Type | Description
         -----------+-------------------+------------------- gid | integer |
         Unique ID code | integer | Unique ID name | character varying | City /
-        Town Name the_geom | geometry | Location Geometry (Polygon)</pre><div class="qandaset"><dl><dt>4.6.2.1. <a href="#id2766106">What is the total length of all roads, expressed in
-              kilometers?</a></dt><dt>4.6.2.2. <a href="#id2766133">How large is the city of Prince George, in hectares?</a></dt><dt>4.6.2.3. <a href="#id2766161">What is the largest municipality in the province, by area?</a></dt><dt>4.6.2.4. <a href="#id2766207">What is the length of roads fully contained within each
-              municipality?</a></dt><dt>4.6.2.5. <a href="#id2766268">Create a new table with all the roads within the city of
-              Prince George.</a></dt><dt>4.6.2.6. <a href="#id2766306">What is the length in kilometers of "Douglas St"
-              in Victoria?</a></dt><dt>4.6.2.7. <a href="#id2766338">What is the largest municipality polygon that has a hole?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="id2766106"></a><a name="id2766108"></a><b>4.6.2.1.</b></td><td align="left" valign="top"><p>What is the total length of all roads, expressed in
-              kilometers?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>You can answer this question with a very simple piece of
+        Town Name the_geom | geometry | Location Geometry (Polygon)</pre><div class="qandaset"><dl><dt>4.6.2.1. <a href="#id2542510">What is the total length of all roads, expressed in
+              kilometers?</a></dt><dt>4.6.2.2. <a href="#id2542537">How large is the city of Prince George, in hectares?</a></dt><dt>4.6.2.3. <a href="#id2542566">What is the largest municipality in the province, by area?</a></dt><dt>4.6.2.4. <a href="#id2542611">What is the length of roads fully contained within each
+              municipality?</a></dt><dt>4.6.2.5. <a href="#id2542672">Create a new table with all the roads within the city of
+              Prince George.</a></dt><dt>4.6.2.6. <a href="#id2542711">What is the length in kilometers of "Douglas St"
+              in Victoria?</a></dt><dt>4.6.2.7. <a href="#id2542742">What is the largest municipality polygon that has a hole?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="id2542510"></a><a name="id2542512"></a><b>4.6.2.1.</b></td><td align="left" valign="top"><p>What is the total length of all roads, expressed in
+              kilometers?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>You can answer this question with a very simple piece of
               SQL:</p><pre class="programlisting">postgis=# SELECT sum(length(the_geom))/1000 AS
               km_roads FROM bc_roads; km_roads ------------------
-              70842.1243039643 (1 row)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2766133"></a><a name="id2766135"></a><b>4.6.2.2.</b></td><td align="left" valign="top"><p>How large is the city of Prince George, in hectares?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>This query combines an attribute condition (on the
+              70842.1243039643 (1 row)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542537"></a><a name="id2542540"></a><b>4.6.2.2.</b></td><td align="left" valign="top"><p>How large is the city of Prince George, in hectares?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>This query combines an attribute condition (on the
               municipality name) with a spatial calculation (of the area):</p><pre class="programlisting">postgis=# SELECT area(the_geom)/10000 AS
               hectares FROM bc_municipality WHERE name = 'PRINCE
               GEORGE'; hectares ------------------ 32657.9103824927 (1
-              row)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2766161"></a><a name="id2766164"></a><b>4.6.2.3.</b></td><td align="left" valign="top"><p>What is the largest municipality in the province, by area?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>This query brings a spatial measurement into the query
+              row)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542566"></a><a name="id2542568"></a><b>4.6.2.3.</b></td><td align="left" valign="top"><p>What is the largest municipality in the province, by area?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>This query brings a spatial measurement into the query
               condition. There are several ways of approaching this problem,
               but the most efficient is below:</p><pre class="programlisting">postgis=# SELECT name, area(the_geom)/10000 AS
               hectares FROM bc_municipality ORDER BY hectares DESC LIMIT 1;
@@ -661,8 +657,8 @@
               could separately index for performance. By ordering the results
               in a descending direction, and them using the PostgreSQL
               "LIMIT" command we can easily pick off the largest value
-              without using an aggregate function like max().</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2766207"></a><a name="id2766209"></a><b>4.6.2.4.</b></td><td align="left" valign="top"><p>What is the length of roads fully contained within each
-              municipality?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>This is an example of a "spatial join", because we
+              without using an aggregate function like max().</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542611"></a><a name="id2542614"></a><b>4.6.2.4.</b></td><td align="left" valign="top"><p>What is the length of roads fully contained within each
+              municipality?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>This is an example of a "spatial join", because we
               are bringing together data from two tables (doing a join) but
               using a spatial interaction condition ("contained") as
               the join condition rather than the usual relational approach of
@@ -678,8 +674,8 @@
               is summarized into the final result (about 250K roads for our
               particular example table). For smaller overlays (several
               thousand records on several hundred) the response can be very
-              fast.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2766268"></a><a name="id2766270"></a><b>4.6.2.5.</b></td><td align="left" valign="top"><p>Create a new table with all the roads within the city of
-              Prince George.</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>This is an example of an "overlay", which takes in
+              fast.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542672"></a><a name="id2542675"></a><b>4.6.2.5.</b></td><td align="left" valign="top"><p>Create a new table with all the roads within the city of
+              Prince George.</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>This is an example of an "overlay", which takes in
               two tables and outputs a new table that consists of spatially
               clipped or cut resultants. Unlike the "spatial join"
               demonstrated above, this query actually creates new geometries.
@@ -689,23 +685,23 @@
               length(r.the_geom) AS rd_orig_length, r.* FROM bc_roads AS r,
               bc_municipality AS m WHERE r.the_geom &amp;&amp; m.the_geom AND
               intersects(r.the_geom, m.the_geom) AND m.name = 'PRINCE
-              GEORGE';</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2766306"></a><a name="id2766308"></a><b>4.6.2.6.</b></td><td align="left" valign="top"><p>What is the length in kilometers of "Douglas St"
-              in Victoria?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><pre class="programlisting">postgis=# SELECT sum(length(r.the_geom))/1000 AS
+              GEORGE';</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542711"></a><a name="id2542713"></a><b>4.6.2.6.</b></td><td align="left" valign="top"><p>What is the length in kilometers of "Douglas St"
+              in Victoria?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><pre class="programlisting">postgis=# SELECT sum(length(r.the_geom))/1000 AS
               kilometers FROM bc_roads r, bc_municipality m WHERE r.the_geom
               &amp;&amp; m.the_geom AND r.name = 'Douglas St' AND
               m.name = 'VICTORIA'; kilometers ------------------
-              4.89151904172838 (1 row)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2766338"></a><a name="id2766340"></a><b>4.6.2.7.</b></td><td align="left" valign="top"><p>What is the largest municipality polygon that has a hole?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><pre class="programlisting">postgis=# SELECT gid, name, area(the_geom) AS
+              4.89151904172838 (1 row)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542742"></a><a name="id2542744"></a><b>4.6.2.7.</b></td><td align="left" valign="top"><p>What is the largest municipality polygon that has a hole?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><pre class="programlisting">postgis=# SELECT gid, name, area(the_geom) AS
               area FROM bc_municipality WHERE nrings(the_geom) &gt; 1 ORDER
               BY area DESC LIMIT 1; gid | name | area
               -----+--------------+------------------ 12 | SPALLUMCHEEN |
-              257374619.430216 (1 row)</pre></td></tr></tbody></table></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2766374"></a>4.7. Using Mapserver</h2></div></div><div></div></div><p>The Minnesota Mapserver is an internet web-mapping server which
-      conforms to the OpenGIS Web Mapping Server specification.</p><div class="itemizedlist"><ul type="disc"><li><p>The Mapserver homepage is at <a href="http://mapserver.gis.umn.edu" target="_top">http://mapserver.gis.umn.edu</a>.</p></li><li><p>The OpenGIS Web Map Specification is at <a href="http://www.opengis.org/techno/specs/01-047r2.pdf" target="_top">http://www.opengis.org/techno/specs/01-047r2.pdf</a>.</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2766416"></a>4.7.1. Basic Usage</h3></div></div><div></div></div><p>To use PostGIS with Mapserver, you will need to know about how
+              257374619.430216 (1 row)</pre></td></tr></tbody></table></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2542778"></a>4.7. Using Mapserver</h2></div></div></div><p>The Minnesota Mapserver is an internet web-mapping server which
+      conforms to the OpenGIS Web Mapping Server specification.</p><div class="itemizedlist"><ul type="disc"><li><p>The Mapserver homepage is at <a href="http://mapserver.gis.umn.edu" target="_top">http://mapserver.gis.umn.edu</a>.</p></li><li><p>The OpenGIS Web Map Specification is at <a href="http://www.opengis.org/techno/specs/01-047r2.pdf" target="_top">http://www.opengis.org/techno/specs/01-047r2.pdf</a>.</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542821"></a>4.7.1. Basic Usage</h3></div></div></div><p>To use PostGIS with Mapserver, you will need to know about how
         to configure Mapserver, which is beyond the scope of this
         documentation. This section will cover specific PostGIS issues and
         configuration details.</p><p>To use PostGIS with Mapserver, you will need:</p><div class="itemizedlist"><ul type="disc"><li><p>Version 0.6 or newer of PostGIS.</p></li><li><p>Version 3.5 or newer of Mapserver.</p></li></ul></div><p>Mapserver accesses PostGIS/PostgreSQL data like any other
-        PostgreSQL client -- using <tt class="filename">libpq</tt>. This means that
+        PostgreSQL client -- using <code class="filename">libpq</code>. This means that
         Mapserver can be installed on any machine with network access to the
-        PostGIS server, as long as the system has the <tt class="filename">libpq</tt>
+        PostGIS server, as long as the system has the <code class="filename">libpq</code>
         PostgreSQL client libraries.</p><div class="orderedlist"><ol type="1"><li><p>Compile and install Mapserver, with whatever options you
             desire, including the "--with-postgis" configuration
             option.</p></li><li><p>In your Mapserver map file, add a PostGIS layer. For
@@ -739,23 +735,23 @@
             ( [geometrycolumn] GIST_GEOMETRY_OPS );</pre></li><li><p>If you will be querying your layers using Mapserver you will
             also need an "oid index".</p><p>Mapserver requires unique identifiers for each spatial
             record when doing queries, and the PostGIS module of Mapserver
-            uses the PostgreSQL <tt class="varname">oid</tt> value to provide these
+            uses the PostgreSQL <code class="varname">oid</code> value to provide these
             unique identifiers. A side-effect of this is that in order to do
             fast random access of records during queries, an index on the
-            <tt class="varname">oid</tt> is needed.</p><p>To build an "oid index", use the following SQL:</p><pre class="programlisting">CREATE INDEX [indexname] ON [tablename] ( oid );</pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2766674"></a>4.7.2. Frequently Asked Questions</h3></div></div><div></div></div><div class="qandaset"><dl><dt>4.7.2.1. <a href="#id2766682">When I use an EXPRESSION in my map
+            <code class="varname">oid</code> is needed.</p><p>To build an "oid index", use the following SQL:</p><pre class="programlisting">CREATE INDEX [indexname] ON [tablename] ( oid );</pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543078"></a>4.7.2. Frequently Asked Questions</h3></div></div></div><div class="qandaset"><dl><dt>4.7.2.1. <a href="#id2543086">When I use an EXPRESSION in my map
               file, the condition never returns as true, even though I know
-              the values exist in my table.</a></dt><dt>4.7.2.2. <a href="#id2766716">The FILTER I use for my Shape files is not working for my
-              PostGIS table of the same data.</a></dt><dt>4.7.2.3. <a href="#id2766745">My PostGIS layer draws much slower than my Shape file
-              layer, is this normal?</a></dt><dt>4.7.2.4. <a href="#id2766784">My PostGIS layer draws fine, but queries are really slow.
-              What is wrong?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="id2766682"></a><a name="id2766684"></a><b>4.7.2.1.</b></td><td align="left" valign="top"><p>When I use an <tt class="varname">EXPRESSION</tt> in my map
+              the values exist in my table.</a></dt><dt>4.7.2.2. <a href="#id2543120">The FILTER I use for my Shape files is not working for my
+              PostGIS table of the same data.</a></dt><dt>4.7.2.3. <a href="#id2543150">My PostGIS layer draws much slower than my Shape file
+              layer, is this normal?</a></dt><dt>4.7.2.4. <a href="#id2543189">My PostGIS layer draws fine, but queries are really slow.
+              What is wrong?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="id2543086"></a><a name="id2543089"></a><b>4.7.2.1.</b></td><td align="left" valign="top"><p>When I use an <code class="varname">EXPRESSION</code> in my map
               file, the condition never returns as true, even though I know
-              the values exist in my table.</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Unlike shape files, PostGIS field names have to be
-              referenced in EXPRESSIONS using <span class="emphasis"><em>lower case</em></span>.</p><pre class="programlisting">EXPRESSION ([numlanes] &gt;= 6)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2766716"></a><a name="id2766718"></a><b>4.7.2.2.</b></td><td align="left" valign="top"><p>The FILTER I use for my Shape files is not working for my
-              PostGIS table of the same data.</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Unlike shape files, filters for PostGIS layers use SQL
+              the values exist in my table.</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>Unlike shape files, PostGIS field names have to be
+              referenced in EXPRESSIONS using <span class="emphasis"><em>lower case</em></span>.</p><pre class="programlisting">EXPRESSION ([numlanes] &gt;= 6)</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2543120"></a><a name="id2543122"></a><b>4.7.2.2.</b></td><td align="left" valign="top"><p>The FILTER I use for my Shape files is not working for my
+              PostGIS table of the same data.</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>Unlike shape files, filters for PostGIS layers use SQL
               syntax (they are appended to the SQL statement the PostGIS
               connector generates for drawing layers in Mapserver).</p><pre class="programlisting">FILTER "type = 'highway' and
-              numlanes &gt;= 4"</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2766745"></a><a name="id2766748"></a><b>4.7.2.3.</b></td><td align="left" valign="top"><p>My PostGIS layer draws much slower than my Shape file
-              layer, is this normal?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>In general, expect PostGIS layers to be 10% slower than
+              numlanes &gt;= 4"</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2543150"></a><a name="id2543152"></a><b>4.7.2.3.</b></td><td align="left" valign="top"><p>My PostGIS layer draws much slower than my Shape file
+              layer, is this normal?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>In general, expect PostGIS layers to be 10% slower than
               equivalent Shape files layers, due to the extra overhead
               involved in database connections, data transformations and data
               transit between the database and Mapserver.</p><p>If you are finding substantial draw performance problems,
@@ -763,25 +759,25 @@
               table.</p><pre class="programlisting">postgis# CREATE INDEX geotable_gix ON geotable
               USING GIST ( geocolumn ); postgis# SELECT
               update_geometry_stats(); -- For PGSQL &lt; 8.0 postgis# VACUUM
-              ANALYZE; -- For PGSQL &gt;= 8.0</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2766784"></a><a name="id2766786"></a><b>4.7.2.4.</b></td><td align="left" valign="top"><p>My PostGIS layer draws fine, but queries are really slow.
-              What is wrong?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>For queries to be fast, you must have a unique key for
+              ANALYZE; -- For PGSQL &gt;= 8.0</pre></td></tr><tr class="question"><td align="left" valign="top"><a name="id2543189"></a><a name="id2543191"></a><b>4.7.2.4.</b></td><td align="left" valign="top"><p>My PostGIS layer draws fine, but queries are really slow.
+              What is wrong?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>For queries to be fast, you must have a unique key for
               your spatial table and you must have an index on that unique
               key.</p><p>You can specify what unique key for mapserver to use with
-              the <tt class="varname">USING UNIQUE</tt> clause in your
-              <tt class="varname">DATA</tt> line:</p><pre class="programlisting">DATA "the_geom FROM geotable USING UNIQUE
+              the <code class="varname">USING UNIQUE</code> clause in your
+              <code class="varname">DATA</code> line:</p><pre class="programlisting">DATA "the_geom FROM geotable USING UNIQUE
               gid"</pre><p>If your table does not have an explicit unique column, you
               can "fake" a unique column by using the PostgreSQL row
               "oid" for your unique column. "oid" is the
               default unique column if you do not declare one, so enhancing
               your query speed is a matter of building an index on your
               spatial table oid value.</p><pre class="programlisting">postgis# CREATE INDEX geotable_oid_idx ON
-              geotable (oid);</pre></td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2766856"></a>4.7.3. Advanced Usage</h3></div></div><div></div></div><p>The <tt class="varname">USING</tt> pseudo-SQL clause is used to add
+              geotable (oid);</pre></td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543261"></a>4.7.3. Advanced Usage</h3></div></div></div><p>The <code class="varname">USING</code> pseudo-SQL clause is used to add
         some information to help mapserver understand the results of more
         complex queries. More specifically, when either a view or a subselect
         is used as the source table (the thing to the right of "FROM"
-        in a <tt class="varname">DATA</tt> definition) it is more difficult for
+        in a <code class="varname">DATA</code> definition) it is more difficult for
         mapserver to automatically determine a unique identifier for each row
-        and also the SRID for the table. The <tt class="varname">USING</tt> clause
+        and also the SRID for the table. The <code class="varname">USING</code> clause
         can provide mapserver with these two pieces of information as follows:</p><pre class="programlisting">DATA "the_geom FROM (SELECT table1.the_geom AS
         the_geom, table1.oid AS oid, table2.data AS data FROM table1 LEFT JOIN
         table2 ON table1.id = table2.id) AS new_table USING UNIQUE oid USING
@@ -791,32 +787,32 @@
               don't automatically have an oid column. If you want to use
               Mapserver's query functionality, you need to add a unique
               column to your view or subselect, and declare it with
-              <tt class="varname">USING UNIQUE</tt>. For example, you could
+              <code class="varname">USING UNIQUE</code>. For example, you could
               explicitly select one of the table's oid values for this
               purpose, or any other column which is guaranteed to be unique
-              for the result set.</p><p>The <tt class="varname">USING</tt> statement can also be useful
-              even for simple <tt class="varname">DATA</tt> statements, if you are
+              for the result set.</p><p>The <code class="varname">USING</code> statement can also be useful
+              even for simple <code class="varname">DATA</code> statements, if you are
               doing map queries. It was previously recommended to add an index
               on the oid column of tables used in query-able layers, in order
               to speed up the performance of map queries. However, with the
-              <tt class="varname">USING</tt> clause, it is possible to tell
+              <code class="varname">USING</code> clause, it is possible to tell
               mapserver to use your table's primary key as the identifier
               for map queries, and then it is no longer necessary to have an
               additional index.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>"Querying a Map" is the action of clicking on a
                 map to ask for information about the map features in that
                 location. Don't confuse "map queries" with the SQL
-                query in a <tt class="varname">DATA</tt> definition.</p></div></dd><dt><span class="term">USING SRID=&lt;srid&gt;</span></dt><dd><p>PostGIS needs to know which spatial referencing system is
+                query in a <code class="varname">DATA</code> definition.</p></div></dd><dt><span class="term">USING SRID=&lt;srid&gt;</span></dt><dd><p>PostGIS needs to know which spatial referencing system is
               being used by the geometries in order to return the correct data
               back to mapserver. Normally it is possible to find this
               information in the "geometry_columns" table in the
               PostGIS database, however, this is not possible for tables which
               are created on the fly such as subselects and views. So the
-              <tt class="varname">USING SRID=</tt> option allows the correct SRID to
-              be specified in the <tt class="varname">DATA</tt> definition.</p></dd></dl></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>The parser for Mapserver PostGIS layers is fairly primitive,
+              <code class="varname">USING SRID=</code> option allows the correct SRID to
+              be specified in the <code class="varname">DATA</code> definition.</p></dd></dl></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>The parser for Mapserver PostGIS layers is fairly primitive,
           and is case sensitive in a few areas. Be careful to ensure that all
-          SQL keywords and all your <tt class="varname">USING</tt> clauses are in
-          upper case, and that your <tt class="varname">USING UNIQUE</tt> clause
-          precedes your <tt class="varname">USING SRID</tt> clause.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2767038"></a>4.7.4. Examples</h3></div></div><div></div></div><p>Lets start with a simple example and work our way up. Consider
+          SQL keywords and all your <code class="varname">USING</code> clauses are in
+          upper case, and that your <code class="varname">USING UNIQUE</code> clause
+          precedes your <code class="varname">USING SRID</code> clause.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543442"></a>4.7.4. Examples</h3></div></div></div><p>Lets start with a simple example and work our way up. Consider
         the following Mapserver layer definition:</p><pre class="programlisting">LAYER CONNECTIONTYPE postgis NAME "roads"
         CONNECTION "user=theuser password=thepass dbname=thedb
         host=theserver" DATA "the_geom FROM roads" STATUS ON TYPE
@@ -832,11 +828,11 @@
         CLASSITEM road_type CLASS EXPRESSION "highway" SIZE 2 COLOR
         255 0 0 END CLASS COLOR 0 0 0 END END</pre><p>The first layer is used when the scale is greater than 1:100000,
         and displays only the roads of type "highway" as black lines.
-        The <tt class="varname">FILTER</tt> option causes only roads of type
+        The <code class="varname">FILTER</code> option causes only roads of type
         "highway" to be displayed.</p><p>The second layer is used when the scale is less than 1:100000,
         and will display highways as double-thick red lines, and other roads
         as regular black lines.</p><p>So, we have done a couple of interesting things using only
-        mapserver functionality, but our <tt class="varname">DATA</tt> SQL statement
+        mapserver functionality, but our <code class="varname">DATA</code> SQL statement
         has remained simple. Suppose that the name of the road is stored in
         another table (for whatever reason) and we need to do a join to get it
         and label our roads.</p><pre class="programlisting">LAYER CONNECTION "user=theuser password=thepass
@@ -848,7 +844,7 @@
         CLASS LABEL ANGLE auto SIZE 8 COLOR 0 192 0 TYPE truetype FONT arial
         END END END</pre><p>This annotation layer adds green labels to all the roads when
         the scale gets down to 1:20000 or less. It also demonstrates how to
-        use an SQL join in a <tt class="varname">DATA</tt> definition.</p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2767148"></a>4.8. Java Clients (JDBC)</h2></div></div><div></div></div><p>Java clients can access PostGIS "geometry" objects in the
+        use an SQL join in a <code class="varname">DATA</code> definition.</p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2543552"></a>4.8. Java Clients (JDBC)</h2></div></div></div><p>Java clients can access PostGIS "geometry" objects in the
       PostgreSQL database either directly as text representations or using the
       JDBC extension objects bundled with PostGIS. In order to use the
       extension objects, the "postgis.jar" file must be in your
@@ -881,7 +877,7 @@
       + r); for( int p = 0; p &lt; rng.numPoints(); p++ ) { Point pt =
       rng.getPoint(p); System.out.println("Point: " + p);
       System.out.println(pt.toString()); } } }</pre><p>The JavaDoc for the extension objects provides a reference for the
-      various data accessor functions in the geometric objects.</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2767233"></a>4.9. C Clients (libpq)</h2></div></div><div></div></div><p>...</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2767242"></a>4.9.1. Text Cursors</h3></div></div><div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2767252"></a>4.9.2. Binary Cursors</h3></div></div><div></div></div><p>...</p></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2767264"></a>Chapter 5. Performance tips</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2767270">5.1. Small tables of large geometries</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2767276">5.1.1. Problem description</a></span></dt><dt><span class="sect2"><a href="#id2767350">5.1.2. Workarounds</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2767434">5.2. CLUSTERing on geometry indices</a></span></dt><dt><span class="sect1"><a href="#id2767496">5.3. Avoiding dimension conversion</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2767270"></a>5.1. Small tables of large geometries</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2767276"></a>5.1.1. Problem description</h3></div></div><div></div></div><p>Current PostgreSQL versions (including 8.0) suffer from a query
+      various data accessor functions in the geometric objects.</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2543637"></a>4.9. C Clients (libpq)</h2></div></div></div><p>...</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543646"></a>4.9.1. Text Cursors</h3></div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543656"></a>4.9.2. Binary Cursors</h3></div></div></div><p>...</p></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2543668"></a>Chapter 5. Performance tips</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2543674">5.1. Small tables of large geometries</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2543680">5.1.1. Problem description</a></span></dt><dt><span class="sect2"><a href="#id2543754">5.1.2. Workarounds</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2543838">5.2. CLUSTERing on geometry indices</a></span></dt><dt><span class="sect1"><a href="#id2543901">5.3. Avoiding dimension conversion</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2543674"></a>5.1. Small tables of large geometries</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543680"></a>5.1.1. Problem description</h3></div></div></div><p>Current PostgreSQL versions (including 8.0) suffer from a query
         optimizer weakness regarding TOAST tables. TOAST tables are a kind of
         "extension room" used to store large (in the sense of data
         size) values that do not fit into normal data pages (like long texts,
@@ -903,7 +899,7 @@
         ANALYZE" postgresql command. For more information and the
         technical details, you can read the thread on the postgres performance
         mailing list:
-        http://archives.postgresql.org/pgsql-performance/2005-02/msg00030.php</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2767350"></a>5.1.2. Workarounds</h3></div></div><div></div></div><p>The PostgreSQL people are trying to solve this issue by making
+        http://archives.postgresql.org/pgsql-performance/2005-02/msg00030.php</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543754"></a>5.1.2. Workarounds</h3></div></div></div><p>The PostgreSQL people are trying to solve this issue by making
         the query estimation TOAST-aware. For now, here are two workarounds:</p><p>The first workaround is to force the query planner to use the
         index. Send "SET enable_seqscan TO off;" to the server before
         issuing the query. This basically forces the query planner to avoid
@@ -921,7 +917,7 @@
         keep the bbox "in sync". The most transparent way to do this
         would be triggers, but you also can modify your application to keep
         the bbox column current or run the UPDATE query above after every
-        modification.</p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2767434"></a>5.2. CLUSTERing on geometry indices</h2></div></div><div></div></div><p>For tables that are mostly read-only, and where a single index is
+        modification.</p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2543838"></a>5.2. CLUSTERing on geometry indices</h2></div></div></div><p>For tables that are mostly read-only, and where a single index is
       used for the majority of queries, PostgreSQL offers the CLUSTER command.
       This command physically reorders all the data rows in the same order as
       the index criteria, yielding two performance advantages: First, for
@@ -939,7 +935,7 @@
       not null; ALTER TABLE</pre><p>Of course, this will not work if you in fact need NULL values in
       your geometry column. Additionally, you must use the above method to add
       the constraint, using a CHECK constraint like "ALTER TABLE blubb ADD
-      CHECK (geometry is not null);" will not work.</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2767496"></a>5.3. Avoiding dimension conversion</h2></div></div><div></div></div><p>Sometimes, you happen to have 3D or 4D data in your table, but
+      CHECK (geometry is not null);" will not work.</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2543901"></a>5.3. Avoiding dimension conversion</h2></div></div></div><p>Sometimes, you happen to have 3D or 4D data in your table, but
       always access it using OpenGIS compliant asText() or asBinary()
       functions that only output 2D geometries. They do this by internally
       calling the force_2d() function, which introduces a significant overhead
@@ -956,24 +952,24 @@
       drastically reduces the need for temporary disk space. Additionally, if
       you have mixed dimension geometries, restricting the UPDATE by
       "WHERE dimension(the_geom)&gt;2" skips re-writing of geometries
-      that already are in 2D.</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2767560"></a>Chapter 6. PostGIS Reference</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2767572">6.1. OpenGIS Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2767578">6.1.1. Management Functions</a></span></dt><dt><span class="sect2"><a href="#id2767667">6.1.2. Geometry Relationship Functions</a></span></dt><dt><span class="sect2"><a href="#id2768066">6.1.3. Geometry Processing Functions</a></span></dt><dt><span class="sect2"><a href="#id2768393">6.1.4. Geometry Accessors</a></span></dt><dt><span class="sect2"><a href="#id2768904">6.1.5. Geometry Constructors</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2769510">6.2. Postgis Extensions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2769516">6.2.1. Management Functions</a></span></dt><dt><span class="sect2"><a href="#id2769855">6.2.2. Operators</a></span></dt><dt><span class="sect2"><a href="#id2770079">6.2.3. Measurement Functions</a></span></dt><dt><span class="sect2"><a href="#id2770368">6.2.4. Geometry Outputs</a></span></dt><dt><span class="sect2"><a href="#id2770508">6.2.5. Geometry Constructors</a></span></dt><dt><span class="sect2"><a href="#id2770859">6.2.6. Geometry Editors</a></span></dt><dt><span class="sect2"><a href="#id2771471">6.2.7. Linear Referencing</a></span></dt><dt><span class="sect2"><a href="#id2771698">6.2.8. Misc</a></span></dt><dt><span class="sect2"><a href="#id2772712">6.2.9. Long Transactions support</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2772297">6.3. SQL-MM Functions</a></span></dt><dt><span class="sect1"><a href="#id2773715">6.4. ArcSDE Functions</a></span></dt></dl></div><p>The functions given below are the ones which a user of PostGIS is
+      that already are in 2D.</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2543964"></a>Chapter 6. PostGIS Reference</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2543977">6.1. OpenGIS Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2543982">6.1.1. Management Functions</a></span></dt><dt><span class="sect2"><a href="#id2544071">6.1.2. Geometry Relationship Functions</a></span></dt><dt><span class="sect2"><a href="#id2544470">6.1.3. Geometry Processing Functions</a></span></dt><dt><span class="sect2"><a href="#id2544797">6.1.4. Geometry Accessors</a></span></dt><dt><span class="sect2"><a href="#id2545307">6.1.5. Geometry Constructors</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2545912">6.2. Postgis Extensions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2545918">6.2.1. Management Functions</a></span></dt><dt><span class="sect2"><a href="#id2546255">6.2.2. Operators</a></span></dt><dt><span class="sect2"><a href="#id2546480">6.2.3. Measurement Functions</a></span></dt><dt><span class="sect2"><a href="#id2546767">6.2.4. Geometry Outputs</a></span></dt><dt><span class="sect2"><a href="#id2546907">6.2.5. Geometry Constructors</a></span></dt><dt><span class="sect2"><a href="#id2547257">6.2.6. Geometry Editors</a></span></dt><dt><span class="sect2"><a href="#id2547868">6.2.7. Linear Referencing</a></span></dt><dt><span class="sect2"><a href="#id2548094">6.2.8. Misc</a></span></dt><dt><span class="sect2"><a href="#id2549109">6.2.9. Long Transactions support</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2548552">6.3. SQL-MM Functions</a></span></dt><dt><span class="sect1"><a href="#id2550109">6.4. ArcSDE Functions</a></span></dt></dl></div><p>The functions given below are the ones which a user of PostGIS is
     likely to need. There are other functions which are required support
-    functions to the PostGIS objects which are not of use to a general user.</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2767572"></a>6.1. OpenGIS Functions</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2767578"></a>6.1.1. Management Functions</h3></div></div><div></div></div><div class="variablelist"><dl><dt><a name="AddGeometryColumn"></a><span class="term">AddGeometryColumn(varchar, varchar, varchar, integer,
+    functions to the PostGIS objects which are not of use to a general user.</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2543977"></a>6.1. OpenGIS Functions</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543982"></a>6.1.1. Management Functions</h3></div></div></div><div class="variablelist"><dl><dt><a name="AddGeometryColumn"></a><span class="term">AddGeometryColumn(varchar, varchar, varchar, integer,
             varchar, integer)</span></dt><dd><p>Syntax: AddGeometryColumn(&lt;schema_name&gt;,
               &lt;table_name&gt;, &lt;column_name&gt;, &lt;srid&gt;,
               &lt;type&gt;, &lt;dimension&gt;). Adds a geometry column to
-              an existing table of attributes. The <tt class="varname">schema_name</tt>
+              an existing table of attributes. The <code class="varname">schema_name</code>
               is the name of the table schema (unused for pre-schema
-              PostgreSQL installations). The <tt class="varname">srid</tt> must be
+              PostgreSQL installations). The <code class="varname">srid</code> must be
               an integer value reference to an entry in the SPATIAL_REF_SYS
-              table. The <tt class="varname">type</tt> must be an uppercase string
+              table. The <code class="varname">type</code> must be an uppercase string
               corresponding to the geometry type, eg, 'POLYGON' or
               'MULTILINESTRING'.</p></dd><dt><span class="term">DropGeometryColumn(varchar, varchar, varchar)</span></dt><dd><p>Syntax: DropGeometryColumn(&lt;schema_name&gt;,
               &lt;table_name&gt;, &lt;column_name&gt;). Remove a geometry
               column from a spatial table. Note that schema_name will need to
               match the f_schema_name field of the table's row in the
               geometry_columns table.</p></dd><dt><span class="term">SetSRID(geometry, integer)</span></dt><dd><p>Set the SRID on a geometry to a particular integer value.
-              Useful in constructing bounding boxes for queries.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2767667"></a>6.1.2. Geometry Relationship Functions</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">Distance(geometry, geometry)</span></dt><dd><p>Return the cartesian distance between two geometries in
+              Useful in constructing bounding boxes for queries.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544071"></a>6.1.2. Geometry Relationship Functions</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">Distance(geometry, geometry)</span></dt><dd><p>Return the cartesian distance between two geometries in
               projected units.</p></dd><dt><span class="term">Equals(geometry, geometry)</span></dt><dd><p>Returns 1 (TRUE) if the given Geometries are
               "spatially equal". Use this for a 'better'
               answer than '='. equals('LINESTRING(0 0, 10
@@ -1006,7 +1002,7 @@
               Interior, Boundary and Exterior of the two geometries as
               specified by the values in the intersectionPatternMatrix.</p><p>Performed by the GEOS module</p><p>Do not call with a GeometryCollection as an argument</p><p>NOTE: this is the "allowable" version that returns
               a boolean, not an integer.</p><p>OGC SPEC s2.1.1.2 // s2.1.13.3</p></dd><dt><span class="term">Relate(geometry, geometry)</span></dt><dd><p>returns the DE-9IM (dimensionally extended
-              nine-intersection matrix)</p><p>Performed by the GEOS module</p><p>Do not call with a GeometryCollection as an argument</p><p>not in OGC spec, but implied. see s2.1.13.2</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2768066"></a>6.1.3. Geometry Processing Functions</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">Centroid(geometry)</span></dt><dd><p>Returns the centroid of the geometry as a point.</p><p>Computation will be more accurate if performed by the GEOS
+              nine-intersection matrix)</p><p>Performed by the GEOS module</p><p>Do not call with a GeometryCollection as an argument</p><p>not in OGC spec, but implied. see s2.1.13.2</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544470"></a>6.1.3. Geometry Processing Functions</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">Centroid(geometry)</span></dt><dd><p>Returns the centroid of the geometry as a point.</p><p>Computation will be more accurate if performed by the GEOS
               module (enabled at compile time).</p></dd><dt><span class="term">Area(geometry)</span></dt><dd><p>Returns the area of the geometry if it is a polygon or
               multi-polygon.</p></dd><dt><span class="term">Length(geometry)</span></dt><dd><p>The length of this Curve in its associated spatial
               reference.</p><p>synonym for length2d()</p><p>OGC SPEC 2.1.5.1</p></dd><dt><span class="term">PointOnSurface(geometry)</span></dt><dd><p>Return a Point guaranteed to lie on the surface</p><p>Implemented using GEOS</p><p>OGC SPEC 3.2.14.2 and 3.2.18.2 -</p></dd><dt><span class="term">Boundary(geometry)</span></dt><dd><p>Returns the closure of the combinatorial boundary of this
@@ -1027,7 +1023,7 @@
               the Geometries.</p><p>Performed by the GEOS module</p><p>Do not call with a GeometryCollection as an argument</p><p>NOTE: this is renamed from "union" because union
               is an SQL reserved word</p><p>OGC SPEC s2.1.1.3</p></dd><dt><span class="term">GeomUnion(geometry set)</span></dt><dd><p>Returns a geometry that represents the point set union of
               this all Geometries in given set.</p><p>Performed by the GEOS module</p><p>Do not call with a GeometryCollection in the argument set</p><p>Not explicitly defined in OGC SPEC</p></dd><dt><span class="term">MemGeomUnion(geometry set)</span></dt><dd><p>Same as the above, only memory-friendly (uses less memory
-              and more processor time).</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2768393"></a>6.1.4. Geometry Accessors</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">AsText(geometry)</span></dt><dd><p>Return the Well-Known Text representation of the geometry.
+              and more processor time).</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544797"></a>6.1.4. Geometry Accessors</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">AsText(geometry)</span></dt><dd><p>Return the Well-Known Text representation of the geometry.
               For example: POLYGON(0 0,0 1,1 1,1 0,0 0)</p><p>OGC SPEC s2.1.1.1</p></dd><dt><span class="term">AsBinary(geometry)</span></dt><dd><p>Returns the geometry in the OGC
               "well-known-binary" format, using the endian encoding of
               the server on which the database is running. This is useful in
@@ -1079,7 +1075,7 @@
               point.</p></dd><dt><span class="term">Z(geometry)</span></dt><dd><p>Return the Z coordinate of the point, or NULL if not
               available. Input must be a point.</p></dd><dt><span class="term">M(geometry)</span></dt><dd><p>Return the M coordinate of the point, or NULL if not
               available. Input must be a point.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This is not (yet) part of the OGC spec, but is listed
-                here to complete the point coordinate extractor function list.</p></div></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2768904"></a>6.1.5. Geometry Constructors</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">GeomFromText(text,[&lt;srid&gt;])</span></dt><dd><p>Makes a Geometry from WKT with the given SRID.</p><p>OGC SPEC 3.2.6.2 - option SRID is from the conformance
+                here to complete the point coordinate extractor function list.</p></div></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545307"></a>6.1.5. Geometry Constructors</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">GeomFromText(text,[&lt;srid&gt;])</span></dt><dd><p>Makes a Geometry from WKT with the given SRID.</p><p>OGC SPEC 3.2.6.2 - option SRID is from the conformance
               suite</p></dd><dt><span class="term">PointFromText(text,[&lt;srid&gt;])</span></dt><dd><p>Makes a Geometry from WKT with the given SRID. If SRID is
               not give, it defaults to -1.</p><p>OGC SPEC 3.2.6.2 - option SRID is from the conformance
               suite</p><p>Throws an error if the WKT is not a Point</p></dd><dt><span class="term">LineFromText(text,[&lt;srid&gt;])</span></dt><dd><p>Makes a Geometry from WKT with the given SRID. If SRID is
@@ -1126,7 +1122,7 @@
               a single POLYGON; use <a href="#BdPolyFromText">BdPolyFromText</a>
               if you're sure a single POLYGON will result from operation,
               or see <a href="#BuildArea">BuildArea()</a> for a
-              postgis-specific approach.</p><p>OGC SFSQL 1.1 - 3.2.6.2</p><p>Availability: 1.1.0 - requires GEOS &gt;= 2.1.0.</p></dd></dl></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2769510"></a>6.2. Postgis Extensions</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2769516"></a>6.2.1. Management Functions</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">DropGeometryTable([&lt;schema_name&gt;],
+              postgis-specific approach.</p><p>OGC SFSQL 1.1 - 3.2.6.2</p><p>Availability: 1.1.0 - requires GEOS &gt;= 2.1.0.</p></dd></dl></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2545912"></a>6.2. Postgis Extensions</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545918"></a>6.2.1. Management Functions</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">DropGeometryTable([&lt;schema_name&gt;],
             &lt;table_name&gt;)</span></dt><dd><p>Drops a table and all its references in geometry_columns.
               Note: uses current_schema() on schema-aware pgsql installations
               if schema is not provided.</p></dd><dt><span class="term">UpdateGeometrySRID([&lt;schema_name&gt;],
@@ -1154,7 +1150,7 @@
               JTS support is not enabled.</p><p>Availability: 1.1.0</p></dd><dt><span class="term">postgis_proj_version()</span></dt><dd><p>Returns the version number of the PROJ4 library, or NULL
               if PROJ4 support is not enabled.</p><p>Availability: 0.9.0</p></dd><dt><span class="term">postgis_uses_stats()</span></dt><dd><p>Returns true if STATS usage has been enabled, false
               otherwise.</p><p>Availability: 0.9.0</p></dd><dt><a name="postgis_full_version"></a><span class="term">postgis_full_version()</span></dt><dd><p>Reports full postgis version and build configuration
-              infos.</p><p>Availability: 0.9.0</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2769855"></a>6.2.2. Operators</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">A &amp;&lt; B</span></dt><dd><p>The "&amp;&lt;" operator returns true if A's
+              infos.</p><p>Availability: 0.9.0</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546255"></a>6.2.2. Operators</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">A &amp;&lt; B</span></dt><dd><p>The "&amp;&lt;" operator returns true if A's
               bounding box overlaps or is to the left of B's bounding box.</p></dd><dt><span class="term">A &amp;&gt; B</span></dt><dd><p>The "&amp;&gt;" operator returns true if A's
               bounding box overlaps or is to the right of B's bounding
               box.</p></dd><dt><span class="term">A &lt;&lt; B</span></dt><dd><p>The "&lt;&lt;" operator returns true if A's
@@ -1170,7 +1166,7 @@
               box is completely contained by B's bounding box.</p></dd><dt><span class="term">A ~ B</span></dt><dd><p>The "~" operator returns true if A's bounding
               box completely contains B's bounding box.</p></dd><dt><span class="term">A &amp;&amp; B</span></dt><dd><p>The "&amp;&amp;" operator is the
               "overlaps" operator. If A's bounding box overlaps
-              B's bounding box the operator returns true.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2770079"></a>6.2.3. Measurement Functions</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">area2d(geometry)</span></dt><dd><p>Returns the area of the geometry if it is a polygon or
+              B's bounding box the operator returns true.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546480"></a>6.2.3. Measurement Functions</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">area2d(geometry)</span></dt><dd><p>Returns the area of the geometry if it is a polygon or
               multi-polygon.</p></dd><dt><span class="term">distance_sphere(point, point)</span></dt><dd><p>Returns linear distance in meters between two lat/lon
               points. Uses a spherical earth and radius of 6370986 meters.
               Faster than <a href="#distance_spheroid">distance_spheroid()</a>,
@@ -1195,7 +1191,7 @@
               is a polygon or multi-polygon.</p></dd><dt><span class="term">perimeter3d(geometry)</span></dt><dd><p>Returns the 3-dimensional perimeter of the geometry, if it
               is a polygon or multi-polygon.</p></dd><dt><span class="term">azimuth(geometry, geometry)</span></dt><dd><p>Returns the azimuth of the segment defined by the given
               Point geometries, or NULL if the two points are coincident.
-              Return value is in radians.</p><p>Availability: 1.1.0</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2770368"></a>6.2.4. Geometry Outputs</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">AsBinary(geometry,{'NDR'|'XDR'})</span></dt><dd><p>Returns the geometry in the OGC
+              Return value is in radians.</p><p>Availability: 1.1.0</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546767"></a>6.2.4. Geometry Outputs</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">AsBinary(geometry,{'NDR'|'XDR'})</span></dt><dd><p>Returns the geometry in the OGC
               "well-known-binary" format as a bytea, using
               little-endian (NDR) or big-endian (XDR) encoding. This is useful
               in binary cursors to pull data out of the database without
@@ -1208,7 +1204,7 @@
               in output (defaults to 15). Point geometries will be rendered as
               cx/cy when 'rel' arg is 0, x/y when 'rel' is 1.</p></dd><dt><span class="term">AsGML(geometry, [precision])</span></dt><dd><p>Return the geometry as a GML element. Second argument may
               be used to reduce the maximum number of significant digits used
-              in output (defaults to 15).</p></dd><dt><span class="term">AsKML(geometry, [precision])</span></dt><dd><p>Return the geometry as a KML element.  Second argument may be used to reduce the maximum number of significant digits used in output (defaults to 15).</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2770508"></a>6.2.5. Geometry Constructors</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">GeomFromEWKT(text)</span></dt><dd><p>Makes a Geometry from EWKT.</p></dd><dt><span class="term">GeomFromEWKB(bytea)</span></dt><dd><p>Makes a Geometry from EWKB.</p></dd><dt><span class="term">MakePoint(&lt;x&gt;, &lt;y&gt;, [&lt;z&gt;],
+              in output (defaults to 15).</p></dd><dt><span class="term">AsKML(geometry, [precision])</span></dt><dd><p>Return the geometry as a KML element.  Second argument may be used to reduce the maximum number of significant digits used in output (defaults to 15).</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546907"></a>6.2.5. Geometry Constructors</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">GeomFromEWKT(text)</span></dt><dd><p>Makes a Geometry from EWKT.</p></dd><dt><span class="term">GeomFromEWKB(bytea)</span></dt><dd><p>Makes a Geometry from EWKB.</p></dd><dt><span class="term">MakePoint(&lt;x&gt;, &lt;y&gt;, [&lt;z&gt;],
             [&lt;m&gt;])</span></dt><dd><p>Creates a 2d,3dz or 4d point geometry.</p></dd><dt><span class="term">MakePointM(&lt;x&gt;, &lt;y&gt;, &lt;m&gt;)</span></dt><dd><p>Creates a 3dm point geometry.</p></dd><dt><span class="term">MakeBox2D(&lt;LL&gt;, &lt;UR&gt;)</span></dt><dd><p>Creates a BOX2D defined by the given point geometries.</p></dd><dt><span class="term">MakeBox3D(&lt;LLB&gt;, &lt;URT&gt;)</span></dt><dd><p>Creates a BOX3D defined by the given point geometries.</p></dd><dt><span class="term">MakeLine(geometry set)</span></dt><dd><p>Creates a Linestring from a set of point geometries. You
               might want to use a subselect to order points before feeding
               them to this aggregate.</p></dd><dt><span class="term">MakeLine(geometry, geometry)</span></dt><dd><p>Creates a Linestring from the two given point geometries.</p></dd><dt><span class="term">LineFromMultiPoint(multipoint)</span></dt><dd><p>Creates a LineString from a MultiPoint geometry.</p></dd><dt><span class="term">MakePolygon(linestring, [linestring[]])</span></dt><dd><p>Creates a Polygon formed by the given shell and array of
@@ -1244,7 +1240,7 @@
               ring index, contains a single element: 0 for the shell, hole
               number for holes. The 'geom' field contains the
               corresponding ring as a polygon.</p><p>Availability: PostGIS 1.1.3. Requires PostgreSQL 7.3 or
-              higher.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2770859"></a>6.2.6. Geometry Editors</h3></div></div><div></div></div><div class="variablelist"><dl><dt><a name="addbbox"></a><span class="term">AddBBOX(geometry)</span></dt><dd><p>Add bounding box to the geometry. This would make bounding
+              higher.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547257"></a>6.2.6. Geometry Editors</h3></div></div></div><div class="variablelist"><dl><dt><a name="addbbox"></a><span class="term">AddBBOX(geometry)</span></dt><dd><p>Add bounding box to the geometry. This would make bounding
               box based queries faster, but will increase the size of the
               geometry.</p></dd><dt><a name="dropbbox"></a><span class="term">DropBBOX(geometry)</span></dt><dd><p>Drop the bounding box cache from the geometry. This
               reduces geometry size, but makes bounding-box based queries
@@ -1255,10 +1251,10 @@
               useful for simplifying the WKB representation.</p></dd><dt><a name="force_2d"></a><span class="term">Force_2d(geometry)</span></dt><dd><p>Forces the geometries into a "2-dimensional mode"
               so that all output representations will only have the X and Y
               coordinates. This is useful for force OGC-compliant output
-              (since OGC only specifies 2-D geometries).</p></dd><dt><a name="force_3dz"></a><span class="term">Force_3dz(geometry), </span><span class="term">Force_3d(geometry), </span></dt><dd><p>Forces the geometries into XYZ mode.</p></dd><dt><a name="force_3dm"></a><span class="term">Force_3dm(geometry)</span></dt><dd><p>Forces the geometries into XYM mode.</p></dd><dt><a name="force_4d"></a><span class="term">Force_4d(geometry)</span></dt><dd><p>Forces the geometries into XYZM mode.</p></dd><dt><span class="term">Multi(geometry)</span></dt><dd><p>Returns the geometry as a MULTI* geometry. If the geometry
+              (since OGC only specifies 2-D geometries).</p></dd><dt><a name="force_3dz"></a><span class="term">Force_3dz(geometry), </span><span class="term">Force_3d(geometry)</span></dt><dd><p>Forces the geometries into XYZ mode.</p></dd><dt><a name="force_3dm"></a><span class="term">Force_3dm(geometry)</span></dt><dd><p>Forces the geometries into XYM mode.</p></dd><dt><a name="force_4d"></a><span class="term">Force_4d(geometry)</span></dt><dd><p>Forces the geometries into XYZM mode.</p></dd><dt><span class="term">Multi(geometry)</span></dt><dd><p>Returns the geometry as a MULTI* geometry. If the geometry
               is already a MULTI*, it is returned unchanged.</p></dd><dt><span class="term">Transform(geometry,integer)</span></dt><dd><p>Returns a new geometry with its coordinates transformed to
               the SRID referenced by the integer parameter. The destination
-              SRID must exist in the <tt class="varname">SPATIAL_REF_SYS</tt> table.</p></dd><dt><span class="term">Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)</span></dt><dd><p>Applies an 3d affine transformation to the geometry. The
+              SRID must exist in the <code class="varname">SPATIAL_REF_SYS</code> table.</p></dd><dt><span class="term">Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)</span></dt><dd><p>Applies an 3d affine transformation to the geometry. The
               call </p><pre class="programlisting"> Affine(geom, a, b, c, d, e, f, g, h, i,
               xoff, yoff, zoff) </pre><p> represents the
               transformation matrix </p><pre class="programlisting"> / a b c xoff \ | d e f
@@ -1278,19 +1274,19 @@
               the 3D method above.</p><p>Availability: 1.1.2.</p></dd><dt><span class="term">Translate(geometry,float8,float8,float8)</span></dt><dd><p>Translates the geometry to a new location using the
               numeric parameters as offsets. Ie: translate(geom, X, Y, Z).</p></dd><dt><span class="term">Scale(geometry,float8,float8,float8)</span></dt><dd><p>scales the geometry to a new size by multiplying the
               ordinates with the parameters. Ie: scale(geom, Xfactor, Yfactor,
-              Zfactor).</p><p>Availability: 1.1.0</p></dd><dt><a name="Rotate"></a><span class="term">RotateZ(geometry,float8), </span><span class="term">RotateX(geometry,float8), </span><span class="term">RotateY(geometry,float8), </span></dt><dd><p>Rotate the geometry around the Z, X or Y axis by the given
+              Zfactor).</p><p>Availability: 1.1.0</p></dd><dt><a name="Rotate"></a><span class="term">RotateZ(geometry,float8), </span><span class="term">RotateX(geometry,float8), </span><span class="term">RotateY(geometry,float8)</span></dt><dd><p>Rotate the geometry around the Z, X or Y axis by the given
               angle given in radians. Follows the right-hand rule. This is the
               same in PostScript but opposite of SVG.</p><p>Availability: 1.1.2.</p></dd><dt><span class="term">TransScale(geometry,float8,float8,float8,float8)</span></dt><dd><p>First, translates the geometry using the first two floats,
               then scales it using the second two floats, working in 2D only.
-              Using <tt class="code">transscale(geom, X, Y, XFactor, YFactor)</tt>
-              internally calls <tt class="code">affine(geom, XFactor, 0, 0, 0, YFactor,
-              0, 0, 0, 1, X*XFactor, Y*YFactor, 0)</tt>.</p><p>Availability: 1.1.0.</p></dd><dt><span class="term">Reverse(geometry)</span></dt><dd><p>Returns the geometry with vertex order reversed.</p></dd><dt><span class="term">ForceRHR(geometry)</span></dt><dd><p>Force polygons of the collection to obey Right-Hand-Rule.</p></dd><dt><span class="term">Simplify(geometry, tolerance)</span></dt><dd><p>Returns a "simplified" version of the given
+              Using <code class="code">transscale(geom, X, Y, XFactor, YFactor)</code>
+              internally calls <code class="code">affine(geom, XFactor, 0, 0, 0, YFactor,
+              0, 0, 0, 1, X*XFactor, Y*YFactor, 0)</code>.</p><p>Availability: 1.1.0.</p></dd><dt><span class="term">Reverse(geometry)</span></dt><dd><p>Returns the geometry with vertex order reversed.</p></dd><dt><span class="term">ForceRHR(geometry)</span></dt><dd><p>Force polygons of the collection to obey Right-Hand-Rule.</p></dd><dt><span class="term">Simplify(geometry, tolerance)</span></dt><dd><p>Returns a "simplified" version of the given
               geometry using the Douglas-Peuker algorithm. Will actually do
               something only with (multi)lines and (multi)polygons but you can
               safely call it with any kind of geometry. Since simplification
               occurs on a object-by-object basis you can also feed a
               GeometryCollection to this function. Note that returned geometry
-              might loose its simplicity (see <a href="#IsSimple">IsSimple</a>)</p></dd><dt><span class="term">SnapToGrid(geometry, originX, originY, sizeX, sizeY), </span><span class="term">SnapToGrid(geometry, sizeX, sizeY), </span><span class="term">SnapToGrid(geometry, size), </span></dt><dd><p>Snap all points of the input geometry to the grid defined
+              might loose its simplicity (see <a href="#IsSimple">IsSimple</a>)</p></dd><dt><span class="term">SnapToGrid(geometry, originX, originY, sizeX, sizeY), </span><span class="term">SnapToGrid(geometry, sizeX, sizeY), </span><span class="term">SnapToGrid(geometry, size)</span></dt><dd><p>Snap all points of the input geometry to the grid defined
               by its origin and cell size. Remove consecutive points falling
               on the same cell, eventually returning NULL if output points are
               not enough to define a geometry of the given type. Collapsed
@@ -1306,7 +1302,7 @@
               the given distance. Interpolated points will have Z and M values
               (if needed) set to 0. Distance computation is performed in 2d
               only.</p></dd><dt><span class="term">LineMerge(geometry)</span></dt><dd><p>Returns a (set of) LineString(s) formed by sewing together
-              constituent linework of input.</p><p>Availability: 1.1.0 - requires GEOS &gt;= 2.1.0</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2771471"></a>6.2.7. Linear Referencing</h3></div></div><div></div></div><div class="variablelist"><dl><dt><a name="line_interpolate_point"></a><span class="term">line_interpolate_point(linestring, location)</span></dt><dd><p>Returns a point interpolated along a line. First argument
+              constituent linework of input.</p><p>Availability: 1.1.0 - requires GEOS &gt;= 2.1.0</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547868"></a>6.2.7. Linear Referencing</h3></div></div></div><div class="variablelist"><dl><dt><a name="line_interpolate_point"></a><span class="term">line_interpolate_point(linestring, location)</span></dt><dd><p>Returns a point interpolated along a line. First argument
               must be a LINESTRING. Second argument is a float8 between 0 and
               1 representing fraction of total <a href="#length2d">2d
               length</a> the point has to be located.</p><p>See <a href="#line_locate_point">line_locate_point()</a>
@@ -1328,7 +1324,7 @@
               Text for Continuation CD Editing Meeting</p><p>Availability: 1.1.0</p></dd><dt><span class="term">locate_between_measures(geometry, float8, float8)</span></dt><dd><p>Return a derived geometry collection value with elements
               that match the specified range of measures inclusively.
               Polygonal elements are not supported.</p><p>Semantic is specified by: ISO/IEC CD 13249-3:200x(E) -
-              Text for Continuation CD Editing Meeting</p><p>Availability: 1.1.0</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2771698"></a>6.2.8. Misc</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">Summary(geometry)</span></dt><dd><p>Returns a text summary of the contents of the geometry.</p></dd><dt><span class="term">box2d(geometry)</span></dt><dd><p>Returns a BOX2D representing the maximum extents of the
+              Text for Continuation CD Editing Meeting</p><p>Availability: 1.1.0</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548094"></a>6.2.8. Misc</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">Summary(geometry)</span></dt><dd><p>Returns a text summary of the contents of the geometry.</p></dd><dt><span class="term">box2d(geometry)</span></dt><dd><p>Returns a BOX2D representing the maximum extents of the
               geometry.</p></dd><dt><span class="term">box3d(geometry)</span></dt><dd><p>Returns a BOX3D representing the maximum extents of the
               geometry.</p></dd><dt><span class="term">extent(geometry set)</span></dt><dd><p>The extent() function is an "aggregate" function
               in the terminology of PostgreSQL. That means that it operators
@@ -1359,7 +1355,7 @@
               is useful for MULTI-geometries and GEOMETRYCOLLECTIONs.</p></dd><dt><span class="term">point_inside_circle(geometry,float,float,float)</span></dt><dd><p>The syntax for this functions is
               point_inside_circle(&lt;geometry&gt;,&lt;circle_center_x&gt;,&lt;circle_center_y&gt;,&lt;radius&gt;).
               Returns the true if the geometry is a point and is inside the
-              circle. Returns false otherwise.</p></dd><dt><span class="term">xmin(box3d) ymin(box3d) zmin(box3d)</span></dt><dd><p>Returns the requested minima of a bounding box.</p></dd><dt><span class="term">xmax(box3d) ymax(box3d) zmax(box3d)</span></dt><dd><p>Returns the requested maxima of a bounding box.</p></dd><dt><a name="Accum"></a><span class="term">Accum(geometry set)</span></dt><dd><p>Aggregate. Constructs an array of geometries.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2772712"></a>6.2.9. Long Transactions support</h3></div></div><div></div></div><p>
+              circle. Returns false otherwise.</p></dd><dt><span class="term">xmin(box3d) ymin(box3d) zmin(box3d)</span></dt><dd><p>Returns the requested minima of a bounding box.</p></dd><dt><span class="term">xmax(box3d) ymax(box3d) zmax(box3d)</span></dt><dd><p>Returns the requested maxima of a bounding box.</p></dd><dt><a name="Accum"></a><span class="term">Accum(geometry set)</span></dt><dd><p>Aggregate. Constructs an array of geometries.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549109"></a>6.2.9. Long Transactions support</h3></div></div></div><p>
 This module and associated pl/pgsql functions have been implemented
 to provide long locking support required by
 <a href="https://portal.opengeospatial.org/files/?artifact_id=7176" target="_top">Web Feature Service</a> specification.
@@ -1402,7 +1398,7 @@
 	transaction. 
 	    </p><p>
 		    Availability: 1.1.3
-		</p></dd></dl></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2772297"></a>6.3. SQL-MM Functions</h2></div></div><div></div></div><p>This is a listing of the SQL-MM defined functions that PostGIS
+		</p></dd></dl></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2548552"></a>6.3. SQL-MM Functions</h2></div></div></div><p>This is a listing of the SQL-MM defined functions that PostGIS
       currently supports. The implementations of these functions follow the
       ArcSDE implementation, and thus deviate somewhat from the spec. These
       deviations will be noted.</p><p>As of version 1.2.0, these functions have been implemented by
@@ -1448,16 +1444,16 @@
             union of two sST_Geometry values.</p><p>SQL-MM 3: 5.1.19</p></dd><dt><span class="term">ST_Within</span></dt><dd><p>Test if an ST_Geometry value is spatially within another
             ST_Geometry value.</p><p>SQL-MM 3: 5.1.30</p></dd><dt><span class="term">ST_WKBToSQL</span></dt><dd><p>Return an ST_Geometry value for a given well-known binary
             representation.</p><p>SQL-MM 3: 5.1.36</p></dd><dt><span class="term">ST_WKTToSQL</span></dt><dd><p>Return an ST_Geometry value for a given well-known text
-            representation.</p><p>SQL-MM 3: 5.1.34</p></dd><dt><span class="term">ST_X</span></dt><dd><p>Returns the x coordinate value of an ST_Point value.</p><p>SQL-MM 3: 6.1.3</p></dd><dt><span class="term">ST_Y</span></dt><dd><p>Returns the y coordinate value of an ST_Point value.</p><p>SQL-MM 3: 6.1.4</p></dd></dl></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2773715"></a>6.4. ArcSDE Functions</h2></div></div><div></div></div><p>Additional functions have been added to improve support for an
+            representation.</p><p>SQL-MM 3: 5.1.34</p></dd><dt><span class="term">ST_X</span></dt><dd><p>Returns the x coordinate value of an ST_Point value.</p><p>SQL-MM 3: 6.1.3</p></dd><dt><span class="term">ST_Y</span></dt><dd><p>Returns the y coordinate value of an ST_Point value.</p><p>SQL-MM 3: 6.1.4</p></dd></dl></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2550109"></a>6.4. ArcSDE Functions</h2></div></div></div><p>Additional functions have been added to improve support for an
       ArcSDE style interface.</p><div class="variablelist"><dl><dt><span class="term">SE_EnvelopesIntersect</span></dt><dd><p>Returns t (TRUE) if the envelopes of two geometries
             intersect; otherwise, it returns f (FALSE).</p></dd><dt><span class="term">SE_Is3d</span></dt><dd><p>Test if a geometry value has z coordinate values.</p></dd><dt><span class="term">SE_IsMeasured</span></dt><dd><p>Test if a geometry value has m coordinate values.</p></dd><dt><span class="term">SE_LocateAlong</span></dt><dd><p>Return a derived geometry collection value with elements
             that match the specified measur.</p></dd><dt><span class="term">SE_LocateBetween</span></dt><dd><p>Return a derived geometry collection value with elements
-            that match the specified range of measures inclusively.</p></dd><dt><span class="term">SE_M</span></dt><dd><p>Returns the m coordinate value of an ST_Point value.</p></dd><dt><span class="term">SE_Z</span></dt><dd><p>Returns the z coordinate value of an ST_Point value</p></dd></dl></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2773833"></a>Chapter 7. Reporting Bugs</h2></div></div><div></div></div><p>Reporting bugs effectively is a fundamental way to help PostGIS
+            that match the specified range of measures inclusively.</p></dd><dt><span class="term">SE_M</span></dt><dd><p>Returns the m coordinate value of an ST_Point value.</p></dd><dt><span class="term">SE_Z</span></dt><dd><p>Returns the z coordinate value of an ST_Point value</p></dd></dl></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2550227"></a>Chapter 7. Reporting Bugs</h2></div></div></div><p>Reporting bugs effectively is a fundamental way to help PostGIS
     development. The most effective bug report is that enabling PostGIS
     developers to reproduce it, so it would ideally contain a script
     triggering it and every information regarding the environment in which it
-    was detected. Good enough info can be extracted running <tt class="code">SELECT
-    postgis_full_version()</tt> [for postgis] and <tt class="code">SELECT version()</tt>
+    was detected. Good enough info can be extracted running <code class="code">SELECT
+    postgis_full_version()</code> [for postgis] and <code class="code">SELECT version()</code>
     [for postgresql].</p><p>If you aren't using latest release, it's worth taking a look
     at its <a href="http://postgis.refractions.net/CHANGES.txt" target="_top">release
     changelog</a> first, to find out if your bug has already been fixed.</p><p>Using the <a href="http://postgis.refractions.net/bugs/" target="_top">PostGIS
@@ -1465,110 +1461,110 @@
     keep you informed on it's handling process. Before reporting a new bug
     please query the database to see if it is a known one, and if it is please
     add any new information you have about it.</p><p>You might want to read Simon Tatham's paper about <a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html" target="_top">How to Report
-    Bugs Effectively</a> before filing a new report.</p></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="release_notes"></a>Appendix A. Appendix</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2773913">A.1. Release Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2773918">A.1.1. Release 1.2.1</a></span></dt><dt><span class="sect2"><a href="#id2773964">A.1.2. Release 1.2.0</a></span></dt><dt><span class="sect2"><a href="#id2773998">A.1.3. Release 1.1.6</a></span></dt><dt><span class="sect2"><a href="#id2774117">A.1.4. Release 1.1.5</a></span></dt><dt><span class="sect2"><a href="#id2774231">A.1.5. Release 1.1.4</a></span></dt><dt><span class="sect2"><a href="#id2774358">A.1.6. Release 1.1.3</a></span></dt><dt><span class="sect2"><a href="#id2774525">A.1.7. Release 1.1.2</a></span></dt><dt><span class="sect2"><a href="#id2774658">A.1.8. Release 1.1.1</a></span></dt><dt><span class="sect2"><a href="#id2774789">A.1.9. Release 1.1.0</a></span></dt><dt><span class="sect2"><a href="#id2775120">A.1.10. Release 1.0.6</a></span></dt><dt><span class="sect2"><a href="#id2775228">A.1.11. Release 1.0.5</a></span></dt><dt><span class="sect2"><a href="#id2775363">A.1.12. Release 1.0.4</a></span></dt><dt><span class="sect2"><a href="#rel_1.0.3_upgrading">A.1.13. Release 1.0.3</a></span></dt><dt><span class="sect2"><a href="#id2775629">A.1.14. Release 1.0.2</a></span></dt><dt><span class="sect2"><a href="#id2775707">A.1.15. Release 1.0.1</a></span></dt><dt><span class="sect2"><a href="#id2775809">A.1.16. Release 1.0.0</a></span></dt><dt><span class="sect2"><a href="#id2775909">A.1.17. Release 1.0.0RC6</a></span></dt><dt><span class="sect2"><a href="#id2775982">A.1.18. Release 1.0.0RC5</a></span></dt><dt><span class="sect2"><a href="#id2776055">A.1.19. Release 1.0.0RC4</a></span></dt><dt><span class="sect2"><a href="#id2776181">A.1.20. Release 1.0.0RC3</a></span></dt><dt><span class="sect2"><a href="#id2776354">A.1.21. Release 1.0.0RC2</a></span></dt><dt><span class="sect2"><a href="#id2776453">A.1.22. Release 1.0.0RC1</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2773913"></a>A.1. Release Notes</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2773918"></a>A.1.1. Release 1.2.1</h3></div></div><div></div></div><p>Release date: 2007/01/11</p><p>This release provides bug fixes in PostgreSQL 8.2 
-        support and some small performance enhancements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2773933"></a>A.1.1.1. Changes</h4></div></div><div></div></div><p>Fixed point-in-polygon shortcut bug in Within().</p><p>Fixed PostgreSQL 8.2 NULL handling for indexes.</p><p>Updated RPM spec files.</p><p>Added short-circuit for Transform() in no-op case.</p><p>JDBC: Fixed JTS handling for multi-dimensional geometries (thanks to Thomas Marti for hint and partial patch).  Additionally, now JavaDoc is compiled and packaged. Fixed classpath problems with GCJ. Fixed pgjdbc 8.2 compatibility, losing support for jdk 1.3 and older.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2773964"></a>A.1.2. Release 1.2.0</h3></div></div><div></div></div><p>Release date: 2006/12/08</p><p>This release provides type definitions along with
+    Bugs Effectively</a> before filing a new report.</p></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="release_notes"></a>Appendix A. Appendix</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2550307">A.1. Release Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2550312">A.1.1. Release 1.2.1</a></span></dt><dt><span class="sect2"><a href="#id2550358">A.1.2. Release 1.2.0</a></span></dt><dt><span class="sect2"><a href="#id2550392">A.1.3. Release 1.1.6</a></span></dt><dt><span class="sect2"><a href="#id2550510">A.1.4. Release 1.1.5</a></span></dt><dt><span class="sect2"><a href="#id2550624">A.1.5. Release 1.1.4</a></span></dt><dt><span class="sect2"><a href="#id2550751">A.1.6. Release 1.1.3</a></span></dt><dt><span class="sect2"><a href="#id2550918">A.1.7. Release 1.1.2</a></span></dt><dt><span class="sect2"><a href="#id2551051">A.1.8. Release 1.1.1</a></span></dt><dt><span class="sect2"><a href="#id2551182">A.1.9. Release 1.1.0</a></span></dt><dt><span class="sect2"><a href="#id2551513">A.1.10. Release 1.0.6</a></span></dt><dt><span class="sect2"><a href="#id2551621">A.1.11. Release 1.0.5</a></span></dt><dt><span class="sect2"><a href="#id2551756">A.1.12. Release 1.0.4</a></span></dt><dt><span class="sect2"><a href="#rel_1.0.3_upgrading">A.1.13. Release 1.0.3</a></span></dt><dt><span class="sect2"><a href="#id2552021">A.1.14. Release 1.0.2</a></span></dt><dt><span class="sect2"><a href="#id2552100">A.1.15. Release 1.0.1</a></span></dt><dt><span class="sect2"><a href="#id2552201">A.1.16. Release 1.0.0</a></span></dt><dt><span class="sect2"><a href="#id2552301">A.1.17. Release 1.0.0RC6</a></span></dt><dt><span class="sect2"><a href="#id2552375">A.1.18. Release 1.0.0RC5</a></span></dt><dt><span class="sect2"><a href="#id2552447">A.1.19. Release 1.0.0RC4</a></span></dt><dt><span class="sect2"><a href="#id2552573">A.1.20. Release 1.0.0RC3</a></span></dt><dt><span class="sect2"><a href="#id2552747">A.1.21. Release 1.0.0RC2</a></span></dt><dt><span class="sect2"><a href="#id2552846">A.1.22. Release 1.0.0RC1</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2550307"></a>A.1. Release Notes</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550312"></a>A.1.1. Release 1.2.1</h3></div></div></div><p>Release date: 2007/01/11</p><p>This release provides bug fixes in PostgreSQL 8.2 
+        support and some small performance enhancements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550326"></a>A.1.1.1. Changes</h4></div></div></div><p>Fixed point-in-polygon shortcut bug in Within().</p><p>Fixed PostgreSQL 8.2 NULL handling for indexes.</p><p>Updated RPM spec files.</p><p>Added short-circuit for Transform() in no-op case.</p><p>JDBC: Fixed JTS handling for multi-dimensional geometries (thanks to Thomas Marti for hint and partial patch).  Additionally, now JavaDoc is compiled and packaged. Fixed classpath problems with GCJ. Fixed pgjdbc 8.2 compatibility, losing support for jdk 1.3 and older.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550358"></a>A.1.2. Release 1.2.0</h3></div></div></div><p>Release date: 2006/12/08</p><p>This release provides type definitions along with
         serialization/deserialization capabilities for SQL-MM defined curved
-        geometries, as well as performance enhancements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2773980"></a>A.1.2.1. Changes</h4></div></div><div></div></div><p>Added curved geometry type support for
+        geometries, as well as performance enhancements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550374"></a>A.1.2.1. Changes</h4></div></div></div><p>Added curved geometry type support for
           serialization/deserialization</p><p>Added point-in-polygon shortcircuit to the Contains and Within
-          functions to improve performance for these cases.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2773998"></a>A.1.3. Release 1.1.6</h3></div></div><div></div></div><p>Release date: 2006/11/02</p><p>This is a bugfix release, in particular fixing a critical error
+          functions to improve performance for these cases.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550392"></a>A.1.3. Release 1.1.6</h3></div></div></div><p>Release date: 2006/11/02</p><p>This is a bugfix release, in particular fixing a critical error
         with GEOS interface in 64bit systems. Includes an updated of the SRS
         parameters and an improvement in reprojections (take Z in
-        consideration). Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774018"></a>A.1.3.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
+        consideration). Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550412"></a>A.1.3.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
           <a href="#soft_upgrade" title="2.2.2.1. Soft upgrade">soft upgrade</a> procedure.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774068"></a>A.1.3.2. Bug fixes</h4></div></div><div></div></div><p>fixed CAPI change that broke 64-bit platforms</p><p>loader/dumper: fixed regression tests and usage output</p><p>Fixed setSRID() bug in JDBC, thanks to Thomas Marti</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774087"></a>A.1.3.3. Other changes</h4></div></div><div></div></div><p>use Z ordinate in reprojections</p><p>spatial_ref_sys.sql updated to EPSG 6.11.1</p><p>Simplified Version.config infrastructure to use a single pack
-          of version variables for everything.</p><p>Include the Version.config in loader/dumper USAGE messages</p><p>Replace hand-made, fragile JDBC version parser with Properties</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2774117"></a>A.1.4. Release 1.1.5</h3></div></div><div></div></div><p>Release date: 2006/10/13</p><p>This is an bugfix release, including a critical segfault on
-        win32. Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774135"></a>A.1.4.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550461"></a>A.1.3.2. Bug fixes</h4></div></div></div><p>fixed CAPI change that broke 64-bit platforms</p><p>loader/dumper: fixed regression tests and usage output</p><p>Fixed setSRID() bug in JDBC, thanks to Thomas Marti</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550480"></a>A.1.3.3. Other changes</h4></div></div></div><p>use Z ordinate in reprojections</p><p>spatial_ref_sys.sql updated to EPSG 6.11.1</p><p>Simplified Version.config infrastructure to use a single pack
+          of version variables for everything.</p><p>Include the Version.config in loader/dumper USAGE messages</p><p>Replace hand-made, fragile JDBC version parser with Properties</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550510"></a>A.1.4. Release 1.1.5</h3></div></div></div><p>Release date: 2006/10/13</p><p>This is an bugfix release, including a critical segfault on
+        win32. Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550528"></a>A.1.4.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
           <a href="#soft_upgrade" title="2.2.2.1. Soft upgrade">soft upgrade</a> procedure.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774182"></a>A.1.4.2. Bug fixes</h4></div></div><div></div></div><p>Fixed MingW link error that was causing pgsql2shp to segfault
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550575"></a>A.1.4.2. Bug fixes</h4></div></div></div><p>Fixed MingW link error that was causing pgsql2shp to segfault
           on Win32 when compiled for PostgreSQL 8.2</p><p>fixed nullpointer Exception in Geometry.equals() method in
           Java</p><p>Added EJB3Spatial.odt to fulfill the GPL requirement of
           distributing the "preferred form of modification"</p><p>Removed obsolete synchronization from JDBC Jts code.</p><p>Updated heavily outdated README files for shp2pgsql/pgsql2shp
           by merging them with the manpages.</p><p>Fixed version tag in jdbc code that still said "1.1.3"
-          in the "1.1.4" release.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774218"></a>A.1.4.3. New Features</h4></div></div><div></div></div><p>Added -S option for non-multi geometries to shp2pgsql</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2774231"></a>A.1.5. Release 1.1.4</h3></div></div><div></div></div><p>Release date: 2006/09/27</p><p>This is an bugfix release including some improvements in the
-        Java interface. Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774248"></a>A.1.5.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
+          in the "1.1.4" release.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550612"></a>A.1.4.3. New Features</h4></div></div></div><p>Added -S option for non-multi geometries to shp2pgsql</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550624"></a>A.1.5. Release 1.1.4</h3></div></div></div><p>Release date: 2006/09/27</p><p>This is an bugfix release including some improvements in the
+        Java interface. Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550642"></a>A.1.5.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
           <a href="#soft_upgrade" title="2.2.2.1. Soft upgrade">soft upgrade</a> procedure.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774296"></a>A.1.5.2. Bug fixes</h4></div></div><div></div></div><p>Fixed support for PostgreSQL 8.2</p><p>Fixed bug in collect() function discarding SRID of input</p><p>Added SRID match check in MakeBox2d and MakeBox3d</p><p>Fixed regress tests to pass with GEOS-3.0.0</p><p>Improved pgsql2shp run concurrency.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774322"></a>A.1.5.3. Java changes</h4></div></div><div></div></div><p>reworked JTS support to reflect new upstream JTS
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550689"></a>A.1.5.2. Bug fixes</h4></div></div></div><p>Fixed support for PostgreSQL 8.2</p><p>Fixed bug in collect() function discarding SRID of input</p><p>Added SRID match check in MakeBox2d and MakeBox3d</p><p>Fixed regress tests to pass with GEOS-3.0.0</p><p>Improved pgsql2shp run concurrency.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550715"></a>A.1.5.3. Java changes</h4></div></div></div><p>reworked JTS support to reflect new upstream JTS
           developers' attitude to SRID handling. Simplifies code and drops
           build depend on GNU trove.</p><p>Added EJB2 support generously donated by the "Geodetix
           s.r.l. Company" http://www.geodetix.it/</p><p>Added EJB3 tutorial / examples donated by Norman Barker
-          &lt;nbarker at ittvis.com&gt;</p><p>Reorganized java directory layout a little.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2774358"></a>A.1.6. Release 1.1.3</h3></div></div><div></div></div><p>Release date: 2006/06/30</p><p>This is an bugfix release including also some new
+          &lt;nbarker at ittvis.com&gt;</p><p>Reorganized java directory layout a little.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550751"></a>A.1.6. Release 1.1.3</h3></div></div></div><p>Release date: 2006/06/30</p><p>This is an bugfix release including also some new
         functionalities (most notably long transaction support) and
-        portability enhancements. Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774377"></a>A.1.6.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
+        portability enhancements. Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550770"></a>A.1.6.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
           <a href="#soft_upgrade" title="2.2.2.1. Soft upgrade">soft upgrade</a> procedure.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774424"></a>A.1.6.2. Bug fixes / correctness</h4></div></div><div></div></div><p>BUGFIX in distance(poly,poly) giving wrong results.</p><p>BUGFIX in pgsql2shp successful return code.</p><p>BUGFIX in shp2pgsql handling of MultiLine WKT.</p><p>BUGFIX in affine() failing to update bounding box.</p><p>WKT parser: forbidden construction of multigeometries with
-          EMPTY elements (still supported for GEOMETRYCOLLECTION).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774453"></a>A.1.6.3. New functionalities</h4></div></div><div></div></div><p>NEW Long Transactions support.</p><p>NEW DumpRings() function.</p><p>NEW AsHEXEWKB(geom, XDR|NDR) function.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774471"></a>A.1.6.4. JDBC changes</h4></div></div><div></div></div><p>Improved regression tests: MultiPoint and scientific ordinates</p><p>Fixed some minor bugs in jdbc code</p><p>Added proper accessor functions for all fields in preparation
-          of making those fields private later</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774492"></a>A.1.6.5. Other changes</h4></div></div><div></div></div><p>NEW regress test support for loader/dumper.</p><p>Added --with-proj-libdir and --with-geos-libdir configure
-          switches.</p><p>Support for build Tru64 build.</p><p>Use Jade for generating documentation.</p><p>Don't link pgsql2shp to more libs then required.</p><p>Initial support for PostgreSQL 8.2.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2774525"></a>A.1.7. Release 1.1.2</h3></div></div><div></div></div><p>Release date: 2006/03/30</p><p>This is an bugfix release including some new functions and
-        portability enhancements. Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774543"></a>A.1.7.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550817"></a>A.1.6.2. Bug fixes / correctness</h4></div></div></div><p>BUGFIX in distance(poly,poly) giving wrong results.</p><p>BUGFIX in pgsql2shp successful return code.</p><p>BUGFIX in shp2pgsql handling of MultiLine WKT.</p><p>BUGFIX in affine() failing to update bounding box.</p><p>WKT parser: forbidden construction of multigeometries with
+          EMPTY elements (still supported for GEOMETRYCOLLECTION).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550846"></a>A.1.6.3. New functionalities</h4></div></div></div><p>NEW Long Transactions support.</p><p>NEW DumpRings() function.</p><p>NEW AsHEXEWKB(geom, XDR|NDR) function.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550864"></a>A.1.6.4. JDBC changes</h4></div></div></div><p>Improved regression tests: MultiPoint and scientific ordinates</p><p>Fixed some minor bugs in jdbc code</p><p>Added proper accessor functions for all fields in preparation
+          of making those fields private later</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550885"></a>A.1.6.5. Other changes</h4></div></div></div><p>NEW regress test support for loader/dumper.</p><p>Added --with-proj-libdir and --with-geos-libdir configure
+          switches.</p><p>Support for build Tru64 build.</p><p>Use Jade for generating documentation.</p><p>Don't link pgsql2shp to more libs then required.</p><p>Initial support for PostgreSQL 8.2.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550918"></a>A.1.7. Release 1.1.2</h3></div></div></div><p>Release date: 2006/03/30</p><p>This is an bugfix release including some new functions and
+        portability enhancements. Upgrade is <span class="emphasis"><em>encouraged</em></span>.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550936"></a>A.1.7.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
           <a href="#soft_upgrade" title="2.2.2.1. Soft upgrade">soft upgrade</a> procedure.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774590"></a>A.1.7.2. Bug fixes</h4></div></div><div></div></div><p>BUGFIX in SnapToGrid() computation of output bounding box</p><p>BUGFIX in EnforceRHR()</p><p>jdbc2 SRID handling fixes in JTS code</p><p>Fixed support for 64bit archs</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774612"></a>A.1.7.3. New functionalities</h4></div></div><div></div></div><p>Regress tests can now be run *before* postgis installation</p><p>New affine() matrix transformation functions</p><p>New rotate{,X,Y,Z}() function</p><p>Old translating and scaling functions now use affine()
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550983"></a>A.1.7.2. Bug fixes</h4></div></div></div><p>BUGFIX in SnapToGrid() computation of output bounding box</p><p>BUGFIX in EnforceRHR()</p><p>jdbc2 SRID handling fixes in JTS code</p><p>Fixed support for 64bit archs</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551006"></a>A.1.7.3. New functionalities</h4></div></div></div><p>Regress tests can now be run *before* postgis installation</p><p>New affine() matrix transformation functions</p><p>New rotate{,X,Y,Z}() function</p><p>Old translating and scaling functions now use affine()
           internally</p><p>Embedded access control in estimated_extent() for builds
-          against pgsql &gt;= 8.0.0</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774642"></a>A.1.7.4. Other changes</h4></div></div><div></div></div><p>More portable ./configure script</p><p>Changed ./run_test script to have more sane default behaviour</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2774658"></a>A.1.8. Release 1.1.1</h3></div></div><div></div></div><p>Release date: 2006/01/23</p><p>This is an important Bugfix release, upgrade is
+          against pgsql &gt;= 8.0.0</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551035"></a>A.1.7.4. Other changes</h4></div></div></div><p>More portable ./configure script</p><p>Changed ./run_test script to have more sane default behaviour</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551051"></a>A.1.8. Release 1.1.1</h3></div></div></div><p>Release date: 2006/01/23</p><p>This is an important Bugfix release, upgrade is
         <span class="emphasis"><em>highly recommended</em></span>. Previous version contained a
         bug in postgis_restore.pl preventing <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard
         upgrade</a> procedure to complete and a bug in GEOS-2.2+ connector
         preventing GeometryCollection objects to be used in topological
-        operations.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774687"></a>A.1.8.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
+        operations.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551080"></a>A.1.8.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 or later follow the
           <a href="#soft_upgrade" title="2.2.2.1. Soft upgrade">soft upgrade</a> procedure.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774734"></a>A.1.8.2. Bug fixes</h4></div></div><div></div></div><p>Fixed a premature exit in postgis_restore.pl</p><p>BUGFIX in geometrycollection handling of GEOS-CAPI connector</p><p>Solaris 2.7 and MingW support improvements</p><p>BUGFIX in line_locate_point()</p><p>Fixed handling of postgresql paths</p><p>BUGFIX in line_substring()</p><p>Added support for localized cluster in regress tester</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774769"></a>A.1.8.3. New functionalities</h4></div></div><div></div></div><p>New Z and M interpolation in line_substring()</p><p>New Z and M interpolation in line_interpolate_point()</p><p>added NumInteriorRing() alias due to OpenGIS ambiguity</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2774789"></a>A.1.9. Release 1.1.0</h3></div></div><div></div></div><p>Release date: 2005/12/21</p><p>This is a Minor release, containing many improvements and new
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551127"></a>A.1.8.2. Bug fixes</h4></div></div></div><p>Fixed a premature exit in postgis_restore.pl</p><p>BUGFIX in geometrycollection handling of GEOS-CAPI connector</p><p>Solaris 2.7 and MingW support improvements</p><p>BUGFIX in line_locate_point()</p><p>Fixed handling of postgresql paths</p><p>BUGFIX in line_substring()</p><p>Added support for localized cluster in regress tester</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551162"></a>A.1.8.3. New functionalities</h4></div></div></div><p>New Z and M interpolation in line_substring()</p><p>New Z and M interpolation in line_interpolate_point()</p><p>added NumInteriorRing() alias due to OpenGIS ambiguity</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551182"></a>A.1.9. Release 1.1.0</h3></div></div></div><p>Release date: 2005/12/21</p><p>This is a Minor release, containing many improvements and new
         things. Most notably: build procedure greatly simplified; transform()
         performance drastically improved; more stable GEOS connectivity (CAPI
         support); lots of new functions; draft topology support.</p><p>It is <span class="emphasis"><em>highly recommended</em></span> that you upgrade
         to GEOS-2.2.x before installing PostGIS, this will ensure future GEOS
-        upgrades won't require a rebuild of the PostGIS library.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774818"></a>A.1.9.1. Credits</h4></div></div><div></div></div><p>This release includes code from Mark Cave Ayland for caching
+        upgrades won't require a rebuild of the PostGIS library.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551211"></a>A.1.9.1. Credits</h4></div></div></div><p>This release includes code from Mark Cave Ayland for caching
           of proj4 objects. Markus Schaber added many improvements in his
           JDBC2 code. Alex Bodnaru helped with PostgreSQL source dependency
           relief and provided Debian specfiles. Michael Fuhr tested new things
           on Solaris arch. David Techer and Gerald Fenoy helped testing GEOS
           C-API connector. Hartmut Tschauner provided code for the azimuth()
           function. Devrim GUNDUZ provided RPM specfiles. Carl Anderson helped
-          with the new area building functions. See the <a href="#credits" title="1.1. Credits">credits</a> section for more names.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774846"></a>A.1.9.2. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 or later you
+          with the new area building functions. See the <a href="#credits" title="1.1. Credits">credits</a> section for more names.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551238"></a>A.1.9.2. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 or later you
           <span class="emphasis"><em>DO NOT</em></span> need a dump/reload. Simply sourcing the
           new lwpostgis_upgrade.sql script in all your existing databases will
           work. See the <a href="#soft_upgrade" title="2.2.2.1. Soft upgrade">soft upgrade</a>
           chapter for more information.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774899"></a>A.1.9.3. New functions</h4></div></div><div></div></div><p>scale() and transscale() companion methods to translate()</p><p>line_substring()</p><p>line_locate_point()</p><p>M(point)</p><p>LineMerge(geometry)</p><p>shift_longitude(geometry)</p><p>azimuth(geometry)</p><p>locate_along_measure(geometry, float8)</p><p>locate_between_measures(geometry, float8, float8)</p><p>SnapToGrid by point offset (up to 4d support)</p><p>BuildArea(any_geometry)</p><p>OGC BdPolyFromText(linestring_wkt, srid)</p><p>OGC BdMPolyFromText(linestring_wkt, srid)</p><p>RemovePoint(linestring, offset)</p><p>ReplacePoint(linestring, offset, point)</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774964"></a>A.1.9.4. Bug fixes</h4></div></div><div></div></div><p>Fixed memory leak in polygonize()</p><p>Fixed bug in lwgeom_as_anytype cast functions</p><p>Fixed USE_GEOS, USE_PROJ and USE_STATS elements of
-          postgis_version() output to always reflect library state.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2774984"></a>A.1.9.5. Function semantic changes</h4></div></div><div></div></div><p>SnapToGrid doesn't discard higher dimensions</p><p>Changed Z() function to return NULL if requested dimension is
-          not available</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775001"></a>A.1.9.6. Performance improvements</h4></div></div><div></div></div><p>Much faster transform() function, caching proj4 objects</p><p>Removed automatic call to fix_geometry_columns() in
-          AddGeometryColumns() and update_geometry_stats()</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775017"></a>A.1.9.7. JDBC2 works</h4></div></div><div></div></div><p>Makefile improvements</p><p>JTS support improvements</p><p>Improved regression test system</p><p>Basic consistency check method for geometry collections</p><p>Support for (Hex)(E)wkb</p><p>Autoprobing DriverWrapper for HexWKB / EWKT switching</p><p>fix compile problems in ValueSetter for ancient jdk releases.</p><p>fix EWKT constructors to accept SRID=4711; representation</p><p>added preliminary read-only support for java2d geometries</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775060"></a>A.1.9.8. Other new things</h4></div></div><div></div></div><p>Full autoconf-based configuration, with PostgreSQL source
-          dependency relief</p><p>GEOS C-API support (2.2.0 and higher)</p><p>Initial support for topology modelling</p><p>Debian and RPM specfiles</p><p>New lwpostgis_upgrade.sql script</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775088"></a>A.1.9.9. Other changes</h4></div></div><div></div></div><p>JTS support improvements</p><p>Stricter mapping between DBF and SQL integer and string
-          attributes</p><p>Wider and cleaner regression test suite</p><p>old jdbc code removed from release</p><p>obsoleted direct use of postgis_proc_upgrade.pl</p><p>scripts version unified with release version</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2775120"></a>A.1.10. Release 1.0.6</h3></div></div><div></div></div><p>Release date: 2005/12/06</p><p>Contains a few bug fixes and improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775133"></a>A.1.10.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 or later you
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551292"></a>A.1.9.3. New functions</h4></div></div></div><p>scale() and transscale() companion methods to translate()</p><p>line_substring()</p><p>line_locate_point()</p><p>M(point)</p><p>LineMerge(geometry)</p><p>shift_longitude(geometry)</p><p>azimuth(geometry)</p><p>locate_along_measure(geometry, float8)</p><p>locate_between_measures(geometry, float8, float8)</p><p>SnapToGrid by point offset (up to 4d support)</p><p>BuildArea(any_geometry)</p><p>OGC BdPolyFromText(linestring_wkt, srid)</p><p>OGC BdMPolyFromText(linestring_wkt, srid)</p><p>RemovePoint(linestring, offset)</p><p>ReplacePoint(linestring, offset, point)</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551356"></a>A.1.9.4. Bug fixes</h4></div></div></div><p>Fixed memory leak in polygonize()</p><p>Fixed bug in lwgeom_as_anytype cast functions</p><p>Fixed USE_GEOS, USE_PROJ and USE_STATS elements of
+          postgis_version() output to always reflect library state.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551376"></a>A.1.9.5. Function semantic changes</h4></div></div></div><p>SnapToGrid doesn't discard higher dimensions</p><p>Changed Z() function to return NULL if requested dimension is
+          not available</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551394"></a>A.1.9.6. Performance improvements</h4></div></div></div><p>Much faster transform() function, caching proj4 objects</p><p>Removed automatic call to fix_geometry_columns() in
+          AddGeometryColumns() and update_geometry_stats()</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551410"></a>A.1.9.7. JDBC2 works</h4></div></div></div><p>Makefile improvements</p><p>JTS support improvements</p><p>Improved regression test system</p><p>Basic consistency check method for geometry collections</p><p>Support for (Hex)(E)wkb</p><p>Autoprobing DriverWrapper for HexWKB / EWKT switching</p><p>fix compile problems in ValueSetter for ancient jdk releases.</p><p>fix EWKT constructors to accept SRID=4711; representation</p><p>added preliminary read-only support for java2d geometries</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551453"></a>A.1.9.8. Other new things</h4></div></div></div><p>Full autoconf-based configuration, with PostgreSQL source
+          dependency relief</p><p>GEOS C-API support (2.2.0 and higher)</p><p>Initial support for topology modelling</p><p>Debian and RPM specfiles</p><p>New lwpostgis_upgrade.sql script</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551480"></a>A.1.9.9. Other changes</h4></div></div></div><p>JTS support improvements</p><p>Stricter mapping between DBF and SQL integer and string
+          attributes</p><p>Wider and cleaner regression test suite</p><p>old jdbc code removed from release</p><p>obsoleted direct use of postgis_proc_upgrade.pl</p><p>scripts version unified with release version</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551513"></a>A.1.10. Release 1.0.6</h3></div></div></div><p>Release date: 2005/12/06</p><p>Contains a few bug fixes and improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551526"></a>A.1.10.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 or later you
           <span class="emphasis"><em>DO NOT</em></span> need a dump/reload.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775177"></a>A.1.10.2. Bug fixes</h4></div></div><div></div></div><p>Fixed palloc(0) call in collection deserializer (only gives
-          problem with --enable-cassert)</p><p>Fixed bbox cache handling bugs</p><p>Fixed geom_accum(NULL, NULL) segfault</p><p>Fixed segfault in addPoint()</p><p>Fixed short-allocation in lwcollection_clone()</p><p>Fixed bug in segmentize()</p><p>Fixed bbox computation of SnapToGrid output</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775212"></a>A.1.10.3. Improvements</h4></div></div><div></div></div><p>Initial support for postgresql 8.2</p><p>Added missing SRID mismatch checks in GEOS ops</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2775228"></a>A.1.11. Release 1.0.5</h3></div></div><div></div></div><p>Release date: 2005/11/25</p><p>Contains memory-alignment fixes in the library, a segfault fix
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551570"></a>A.1.10.2. Bug fixes</h4></div></div></div><p>Fixed palloc(0) call in collection deserializer (only gives
+          problem with --enable-cassert)</p><p>Fixed bbox cache handling bugs</p><p>Fixed geom_accum(NULL, NULL) segfault</p><p>Fixed segfault in addPoint()</p><p>Fixed short-allocation in lwcollection_clone()</p><p>Fixed bug in segmentize()</p><p>Fixed bbox computation of SnapToGrid output</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551605"></a>A.1.10.3. Improvements</h4></div></div></div><p>Initial support for postgresql 8.2</p><p>Added missing SRID mismatch checks in GEOS ops</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551621"></a>A.1.11. Release 1.0.5</h3></div></div></div><p>Release date: 2005/11/25</p><p>Contains memory-alignment fixes in the library, a segfault fix
         in loader's handling of UTF8 attributes and a few improvements and
         cleanups.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Return code of shp2pgsql changed from previous releases to
-          conform to unix standards (return 0 on success).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775252"></a>A.1.11.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 or later you
+          conform to unix standards (return 0 on success).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551645"></a>A.1.11.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 or later you
           <span class="emphasis"><em>DO NOT</em></span> need a dump/reload.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775296"></a>A.1.11.2. Library changes</h4></div></div><div></div></div><p>Fixed memory alignment problems</p><p>Fixed computation of null values fraction in analyzer</p><p>Fixed a small bug in the getPoint4d_p() low-level function</p><p>Speedup of serializer functions</p><p>Fixed a bug in force_3dm(), force_3dz() and force_4d()</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775323"></a>A.1.11.3. Loader changes</h4></div></div><div></div></div><p>Fixed return code of shp2pgsql</p><p>Fixed back-compatibility issue in loader (load of null
-          shapefiles)</p><p>Fixed handling of trailing dots in dbf numerical attributes</p><p>Segfault fix in shp2pgsql (utf8 encoding)</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775347"></a>A.1.11.4. Other changes</h4></div></div><div></div></div><p>Schema aware postgis_proc_upgrade.pl, support for pgsql 7.2+</p><p>New "Reporting Bugs" chapter in manual</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2775363"></a>A.1.12. Release 1.0.4</h3></div></div><div></div></div><p>Release date: 2005/09/09</p><p>Contains important bug fixes and a few improvements. In
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551689"></a>A.1.11.2. Library changes</h4></div></div></div><p>Fixed memory alignment problems</p><p>Fixed computation of null values fraction in analyzer</p><p>Fixed a small bug in the getPoint4d_p() low-level function</p><p>Speedup of serializer functions</p><p>Fixed a bug in force_3dm(), force_3dz() and force_4d()</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551716"></a>A.1.11.3. Loader changes</h4></div></div></div><p>Fixed return code of shp2pgsql</p><p>Fixed back-compatibility issue in loader (load of null
+          shapefiles)</p><p>Fixed handling of trailing dots in dbf numerical attributes</p><p>Segfault fix in shp2pgsql (utf8 encoding)</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551740"></a>A.1.11.4. Other changes</h4></div></div></div><p>Schema aware postgis_proc_upgrade.pl, support for pgsql 7.2+</p><p>New "Reporting Bugs" chapter in manual</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551756"></a>A.1.12. Release 1.0.4</h3></div></div></div><p>Release date: 2005/09/09</p><p>Contains important bug fixes and a few improvements. In
         particular, it fixes a memory leak preventing successful build of GiST
-        indexes for large spatial tables.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775379"></a>A.1.12.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.3 you
+        indexes for large spatial tables.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551772"></a>A.1.12.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.3 you
           <span class="emphasis"><em>DO NOT</em></span> need a dump/reload.</p><p>If you are upgrading from a release <span class="emphasis"><em>between 1.0.0RC6
           and 1.0.2</em></span> (inclusive) and really want a live upgrade read
           the <a href="#rel_1.0.3_upgrading" title="A.1.13. Release 1.0.3">upgrade section</a> of
-          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775422"></a>A.1.12.2. Bug fixes</h4></div></div><div></div></div><p>Memory leak plugged in GiST indexing</p><p>Segfault fix in transform() handling of proj4 errors</p><p>Fixed some proj4 texts in spatial_ref_sys (missing +proj)</p><p>Loader: fixed string functions usage, reworked NULL objects
-          check, fixed segfault on MULTILINESTRING input.</p><p>Fixed bug in MakeLine dimension handling</p><p>Fixed bug in translate() corrupting output bounding box</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775455"></a>A.1.12.3. Improvements</h4></div></div><div></div></div><p>Documentation improvements</p><p>More robust selectivity estimator</p><p>Minor speedup in distance()</p><p>Minor cleanups</p><p>GiST indexing cleanup</p><p>Looser syntax acceptance in box3d parser</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rel_1.0.3_upgrading"></a>A.1.13. Release 1.0.3</h3></div></div><div></div></div><p>Release date: 2005/08/08</p><p>Contains some bug fixes - <span class="emphasis"><em>including a severe one
+          the 1.0.3 release notes chapter.</p><p>Upgrade from any release prior to 1.0.0RC6 requires an <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551815"></a>A.1.12.2. Bug fixes</h4></div></div></div><p>Memory leak plugged in GiST indexing</p><p>Segfault fix in transform() handling of proj4 errors</p><p>Fixed some proj4 texts in spatial_ref_sys (missing +proj)</p><p>Loader: fixed string functions usage, reworked NULL objects
+          check, fixed segfault on MULTILINESTRING input.</p><p>Fixed bug in MakeLine dimension handling</p><p>Fixed bug in translate() corrupting output bounding box</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551848"></a>A.1.12.3. Improvements</h4></div></div></div><p>Documentation improvements</p><p>More robust selectivity estimator</p><p>Minor speedup in distance()</p><p>Minor cleanups</p><p>GiST indexing cleanup</p><p>Looser syntax acceptance in box3d parser</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rel_1.0.3_upgrading"></a>A.1.13. Release 1.0.3</h3></div></div></div><p>Release date: 2005/08/08</p><p>Contains some bug fixes - <span class="emphasis"><em>including a severe one
         affecting correctness of stored geometries</em></span> - and a few
-        improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775508"></a>A.1.13.1. Upgrading</h4></div></div><div></div></div><p>Due to a bug in a bounding box computation routine, the
+        improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551900"></a>A.1.13.1. Upgrading</h4></div></div></div><p>Due to a bug in a bounding box computation routine, the
           upgrade procedure requires special attention, as bounding boxes
           cached in the database could be incorrect.</p><p>An <a href="#hard_upgrade" title="2.2.2.2. Hard upgrade">hard upgrade</a> procedure
           (dump/reload) will force recomputation of all bounding boxes (not
@@ -1580,54 +1576,54 @@
           statistics update, reindexing). Invoke the script after a make
           install (run with no args for syntax help). Optionally run
           utils/postgis_proc_upgrade.pl to refresh postgis procedures and
-          functions signatures (see <a href="#soft_upgrade" title="2.2.2.1. Soft upgrade">Soft upgrade</a>).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775572"></a>A.1.13.2. Bug fixes</h4></div></div><div></div></div><p>Severe bugfix in lwgeom's 2d bounding box computation</p><p>Bugfix in WKT (-w) POINT handling in loader</p><p>Bugfix in dumper on 64bit machines</p><p>Bugfix in dumper handling of user-defined queries</p><p>Bugfix in create_undef.pl script</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775601"></a>A.1.13.3. Improvements</h4></div></div><div></div></div><p>Small performance improvement in canonical input function</p><p>Minor cleanups in loader</p><p>Support for multibyte field names in loader</p><p>Improvement in the postgis_restore.pl script</p><p>New rebuild_bbox_caches.pl util script</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2775629"></a>A.1.14. Release 1.0.2</h3></div></div><div></div></div><p>Release date: 2005/07/04</p><p>Contains a few bug fixes and improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775642"></a>A.1.14.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.0RC6 or up you
+          functions signatures (see <a href="#soft_upgrade" title="2.2.2.1. Soft upgrade">Soft upgrade</a>).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551964"></a>A.1.13.2. Bug fixes</h4></div></div></div><p>Severe bugfix in lwgeom's 2d bounding box computation</p><p>Bugfix in WKT (-w) POINT handling in loader</p><p>Bugfix in dumper on 64bit machines</p><p>Bugfix in dumper handling of user-defined queries</p><p>Bugfix in create_undef.pl script</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551993"></a>A.1.13.3. Improvements</h4></div></div></div><p>Small performance improvement in canonical input function</p><p>Minor cleanups in loader</p><p>Support for multibyte field names in loader</p><p>Improvement in the postgis_restore.pl script</p><p>New rebuild_bbox_caches.pl util script</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552021"></a>A.1.14. Release 1.0.2</h3></div></div></div><p>Release date: 2005/07/04</p><p>Contains a few bug fixes and improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552034"></a>A.1.14.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.0RC6 or up you
           <span class="emphasis"><em>DO NOT</em></span> need a dump/reload.</p><p>Upgrading from older releases requires a dump/reload. See the
           <a href="#upgrading" title="2.2.2. Upgrading">upgrading</a> chapter for more
-          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775669"></a>A.1.14.2. Bug fixes</h4></div></div><div></div></div><p>Fault tolerant btree ops</p><p>Memory leak plugged in pg_error</p><p>Rtree index fix</p><p>Cleaner build scripts (avoided mix of CFLAGS and CXXFLAGS)</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775691"></a>A.1.14.3. Improvements</h4></div></div><div></div></div><p>New index creation capabilities in loader (-I switch)</p><p>Initial support for postgresql 8.1dev</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2775707"></a>A.1.15. Release 1.0.1</h3></div></div><div></div></div><p>Release date: 2005/05/24</p><p>Contains a few bug fixes and some improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775721"></a>A.1.15.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.0RC6 or up you
+          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552062"></a>A.1.14.2. Bug fixes</h4></div></div></div><p>Fault tolerant btree ops</p><p>Memory leak plugged in pg_error</p><p>Rtree index fix</p><p>Cleaner build scripts (avoided mix of CFLAGS and CXXFLAGS)</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552084"></a>A.1.14.3. Improvements</h4></div></div></div><p>New index creation capabilities in loader (-I switch)</p><p>Initial support for postgresql 8.1dev</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552100"></a>A.1.15. Release 1.0.1</h3></div></div></div><p>Release date: 2005/05/24</p><p>Contains a few bug fixes and some improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552113"></a>A.1.15.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.0RC6 or up you
           <span class="emphasis"><em>DO NOT</em></span> need a dump/reload.</p><p>Upgrading from older releases requires a dump/reload. See the
           <a href="#upgrading" title="2.2.2. Upgrading">upgrading</a> chapter for more
-          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775748"></a>A.1.15.2. Library changes</h4></div></div><div></div></div><p>BUGFIX in 3d computation of length_spheroid()</p><p>BUGFIX in join selectivity estimator</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775763"></a>A.1.15.3. Other changes/additions</h4></div></div><div></div></div><p>BUGFIX in shp2pgsql escape functions</p><p>better support for concurrent postgis in multiple schemas</p><p>documentation fixes</p><p>jdbc2: compile with "-target 1.2 -source 1.2" by
-          default</p><p>NEW -k switch for pgsql2shp</p><p>NEW support for custom createdb options in postgis_restore.pl</p><p>BUGFIX in pgsql2shp attribute names unicity enforcement</p><p>BUGFIX in Paris projections definitions</p><p>postgis_restore.pl cleanups</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2775809"></a>A.1.16. Release 1.0.0</h3></div></div><div></div></div><p>Release date: 2005/04/19</p><p>Final 1.0.0 release. Contains a few bug fixes, some improvements
+          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552140"></a>A.1.15.2. Library changes</h4></div></div></div><p>BUGFIX in 3d computation of length_spheroid()</p><p>BUGFIX in join selectivity estimator</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552155"></a>A.1.15.3. Other changes/additions</h4></div></div></div><p>BUGFIX in shp2pgsql escape functions</p><p>better support for concurrent postgis in multiple schemas</p><p>documentation fixes</p><p>jdbc2: compile with "-target 1.2 -source 1.2" by
+          default</p><p>NEW -k switch for pgsql2shp</p><p>NEW support for custom createdb options in postgis_restore.pl</p><p>BUGFIX in pgsql2shp attribute names unicity enforcement</p><p>BUGFIX in Paris projections definitions</p><p>postgis_restore.pl cleanups</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552201"></a>A.1.16. Release 1.0.0</h3></div></div></div><p>Release date: 2005/04/19</p><p>Final 1.0.0 release. Contains a few bug fixes, some improvements
         in the loader (most notably support for older postgis versions), and
-        more docs.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775824"></a>A.1.16.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.0RC6 you
+        more docs.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552216"></a>A.1.16.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.0RC6 you
           <span class="emphasis"><em>DO NOT</em></span> need a dump/reload.</p><p>Upgrading from any other precedent release requires a
           dump/reload. See the <a href="#upgrading" title="2.2.2. Upgrading">upgrading</a>
-          chapter for more informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775851"></a>A.1.16.2. Library changes</h4></div></div><div></div></div><p>BUGFIX in transform() releasing random memory address</p><p>BUGFIX in force_3dm() allocating less memory then required</p><p>BUGFIX in join selectivity estimator (defaults, leaks,
-          tuplecount, sd)</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775871"></a>A.1.16.3. Other changes/additions</h4></div></div><div></div></div><p>BUGFIX in shp2pgsql escape of values starting with tab or
+          chapter for more informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552244"></a>A.1.16.2. Library changes</h4></div></div></div><p>BUGFIX in transform() releasing random memory address</p><p>BUGFIX in force_3dm() allocating less memory then required</p><p>BUGFIX in join selectivity estimator (defaults, leaks,
+          tuplecount, sd)</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552264"></a>A.1.16.3. Other changes/additions</h4></div></div></div><p>BUGFIX in shp2pgsql escape of values starting with tab or
           single-quote</p><p>NEW manual pages for loader/dumper</p><p>NEW shp2pgsql support for old (HWGEOM) postgis versions</p><p>NEW -p (prepare) flag for shp2pgsql</p><p>NEW manual chapter about OGC compliancy enforcement</p><p>NEW autoconf support for JTS lib</p><p>BUGFIX in estimator testers (support for LWGEOM and schema
-          parsing)</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2775909"></a>A.1.17. Release 1.0.0RC6</h3></div></div><div></div></div><p>Release date: 2005/03/30</p><p>Sixth release candidate for 1.0.0. Contains a few bug fixes and
-        cleanups.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775923"></a>A.1.17.1. Upgrading</h4></div></div><div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
+          parsing)</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552301"></a>A.1.17. Release 1.0.0RC6</h3></div></div></div><p>Release date: 2005/03/30</p><p>Sixth release candidate for 1.0.0. Contains a few bug fixes and
+        cleanups.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552315"></a>A.1.17.1. Upgrading</h4></div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
           the <a href="#upgrading" title="2.2.2. Upgrading">upgrading</a> chapter for more
-          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775942"></a>A.1.17.2. Library changes</h4></div></div><div></div></div><p>BUGFIX in multi()</p><p>early return [when noop] from multi()</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775956"></a>A.1.17.3. Scripts changes</h4></div></div><div></div></div><p>dropped {x,y}{min,max}(box2d) functions</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775967"></a>A.1.17.4. Other changes</h4></div></div><div></div></div><p>BUGFIX in postgis_restore.pl scrip</p><p>BUGFIX in dumper's 64bit support</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2775982"></a>A.1.18. Release 1.0.0RC5</h3></div></div><div></div></div><p>Release date: 2005/03/25</p><p>Fifth release candidate for 1.0.0. Contains a few bug fixes and
-        a improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2775997"></a>A.1.18.1. Upgrading</h4></div></div><div></div></div><p>If you are upgrading from release 1.0.0RC4 you
+          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552334"></a>A.1.17.2. Library changes</h4></div></div></div><p>BUGFIX in multi()</p><p>early return [when noop] from multi()</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552348"></a>A.1.17.3. Scripts changes</h4></div></div></div><p>dropped {x,y}{min,max}(box2d) functions</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552359"></a>A.1.17.4. Other changes</h4></div></div></div><p>BUGFIX in postgis_restore.pl scrip</p><p>BUGFIX in dumper's 64bit support</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552375"></a>A.1.18. Release 1.0.0RC5</h3></div></div></div><p>Release date: 2005/03/25</p><p>Fifth release candidate for 1.0.0. Contains a few bug fixes and
+        a improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552389"></a>A.1.18.1. Upgrading</h4></div></div></div><p>If you are upgrading from release 1.0.0RC4 you
           <span class="emphasis"><em>DO NOT</em></span> need a dump/reload.</p><p>Upgrading from any other precedent release requires a
           dump/reload. See the <a href="#upgrading" title="2.2.2. Upgrading">upgrading</a>
-          chapter for more informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776024"></a>A.1.18.2. Library changes</h4></div></div><div></div></div><p>BUGFIX (segfaulting) in box3d computation (yes, another!).</p><p>BUGFIX (segfaulting) in estimated_extent().</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776039"></a>A.1.18.3. Other changes</h4></div></div><div></div></div><p>Small build scripts and utilities refinements.</p><p>Additional performance tips documented.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2776055"></a>A.1.19. Release 1.0.0RC4</h3></div></div><div></div></div><p>Release date: 2005/03/18</p><p>Fourth release candidate for 1.0.0. Contains bug fixes and a few
-        improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776069"></a>A.1.19.1. Upgrading</h4></div></div><div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
+          chapter for more informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552416"></a>A.1.18.2. Library changes</h4></div></div></div><p>BUGFIX (segfaulting) in box3d computation (yes, another!).</p><p>BUGFIX (segfaulting) in estimated_extent().</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552431"></a>A.1.18.3. Other changes</h4></div></div></div><p>Small build scripts and utilities refinements.</p><p>Additional performance tips documented.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552447"></a>A.1.19. Release 1.0.0RC4</h3></div></div></div><p>Release date: 2005/03/18</p><p>Fourth release candidate for 1.0.0. Contains bug fixes and a few
+        improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552462"></a>A.1.19.1. Upgrading</h4></div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
           the <a href="#upgrading" title="2.2.2. Upgrading">upgrading</a> chapter for more
-          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776088"></a>A.1.19.2. Library changes</h4></div></div><div></div></div><p>BUGFIX (segfaulting) in geom_accum().</p><p>BUGFIX in 64bit architectures support.</p><p>BUGFIX in box3d computation function with collections.</p><p>NEW subselects support in selectivity estimator.</p><p>Early return from force_collection.</p><p>Consistency check fix in SnapToGrid().</p><p>Box2d output changed back to 15 significant digits.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776123"></a>A.1.19.3. Scripts changes</h4></div></div><div></div></div><p>NEW distance_sphere() function.</p><p>Changed get_proj4_from_srid implementation to use PL/PGSQL
-          instead of SQL.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776139"></a>A.1.19.4. Other changes</h4></div></div><div></div></div><p>BUGFIX in loader and dumper handling of MultiLine shapes</p><p>BUGFIX in loader, skipping all but first hole of polygons.</p><p>jdbc2: code cleanups, Makefile improvements</p><p>FLEX and YACC variables set *after* pgsql Makefile.global is
+          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552480"></a>A.1.19.2. Library changes</h4></div></div></div><p>BUGFIX (segfaulting) in geom_accum().</p><p>BUGFIX in 64bit architectures support.</p><p>BUGFIX in box3d computation function with collections.</p><p>NEW subselects support in selectivity estimator.</p><p>Early return from force_collection.</p><p>Consistency check fix in SnapToGrid().</p><p>Box2d output changed back to 15 significant digits.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552516"></a>A.1.19.3. Scripts changes</h4></div></div></div><p>NEW distance_sphere() function.</p><p>Changed get_proj4_from_srid implementation to use PL/PGSQL
+          instead of SQL.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552531"></a>A.1.19.4. Other changes</h4></div></div></div><p>BUGFIX in loader and dumper handling of MultiLine shapes</p><p>BUGFIX in loader, skipping all but first hole of polygons.</p><p>jdbc2: code cleanups, Makefile improvements</p><p>FLEX and YACC variables set *after* pgsql Makefile.global is
           included and only if the pgsql *stripped* version evaluates to the
-          empty string</p><p>Added already generated parser in release</p><p>Build scripts refinements</p><p>improved version handling, central Version.config</p><p>improvements in postgis_restore.pl</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2776181"></a>A.1.20. Release 1.0.0RC3</h3></div></div><div></div></div><p>Release date: 2005/02/24</p><p>Third release candidate for 1.0.0. Contains many bug fixes and
-        improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776195"></a>A.1.20.1. Upgrading</h4></div></div><div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
+          empty string</p><p>Added already generated parser in release</p><p>Build scripts refinements</p><p>improved version handling, central Version.config</p><p>improvements in postgis_restore.pl</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552573"></a>A.1.20. Release 1.0.0RC3</h3></div></div></div><p>Release date: 2005/02/24</p><p>Third release candidate for 1.0.0. Contains many bug fixes and
+        improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552587"></a>A.1.20.1. Upgrading</h4></div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
           the <a href="#upgrading" title="2.2.2. Upgrading">upgrading</a> chapter for more
-          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776214"></a>A.1.20.2. Library changes</h4></div></div><div></div></div><p>BUGFIX in transform(): missing SRID, better error handling.</p><p>BUGFIX in memory alignment handling</p><p>BUGFIX in force_collection() causing mapserver connector
+          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552606"></a>A.1.20.2. Library changes</h4></div></div></div><p>BUGFIX in transform(): missing SRID, better error handling.</p><p>BUGFIX in memory alignment handling</p><p>BUGFIX in force_collection() causing mapserver connector
           failures on simple (single) geometry types.</p><p>BUGFIX in GeometryFromText() missing to add a bbox cache.</p><p>reduced precision of box2d output.</p><p>prefixed DEBUG macros with PGIS_ to avoid clash with pgsql one</p><p>plugged a leak in GEOS2POSTGIS converter</p><p>Reduced memory usage by early releasing query-context palloced
-          one.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776255"></a>A.1.20.3. Scripts changes</h4></div></div><div></div></div><p>BUGFIX in 72 index bindings.</p><p>BUGFIX in probe_geometry_columns() to work with PG72 and
+          one.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552648"></a>A.1.20.3. Scripts changes</h4></div></div></div><p>BUGFIX in 72 index bindings.</p><p>BUGFIX in probe_geometry_columns() to work with PG72 and
           support multiple geometry columns in a single table</p><p>NEW bool::text cast</p><p>Some functions made IMMUTABLE from STABLE, for performance
-          improvement.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776279"></a>A.1.20.4. JDBC changes</h4></div></div><div></div></div><p>jdbc2: small patches, box2d/3d tests, revised docs and
+          improvement.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552672"></a>A.1.20.4. JDBC changes</h4></div></div></div><p>jdbc2: small patches, box2d/3d tests, revised docs and
           license.</p><p>jdbc2: bug fix and testcase in for pgjdbc 8.0 type
           autoregistration</p><p>jdbc2: Removed use of jdk1.4 only features to enable build
-          with older jdk releases.</p><p>jdbc2: Added support for building against pg72jdbc2.jar</p><p>jdbc2: updated and cleaned makefile</p><p>jdbc2: added BETA support for jts geometry classes</p><p>jdbc2: Skip known-to-fail tests against older PostGIS servers.</p><p>jdbc2: Fixed handling of measured geometries in EWKT.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776321"></a>A.1.20.5. Other changes</h4></div></div><div></div></div><p>new performance tips chapter in manual</p><p>documentation updates: pgsql72 requirement, lwpostgis.sql</p><p>few changes in autoconf</p><p>BUILDDATE extraction made more portable</p><p>fixed spatial_ref_sys.sql to avoid vacuuming the whole
+          with older jdk releases.</p><p>jdbc2: Added support for building against pg72jdbc2.jar</p><p>jdbc2: updated and cleaned makefile</p><p>jdbc2: added BETA support for jts geometry classes</p><p>jdbc2: Skip known-to-fail tests against older PostGIS servers.</p><p>jdbc2: Fixed handling of measured geometries in EWKT.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552714"></a>A.1.20.5. Other changes</h4></div></div></div><p>new performance tips chapter in manual</p><p>documentation updates: pgsql72 requirement, lwpostgis.sql</p><p>few changes in autoconf</p><p>BUILDDATE extraction made more portable</p><p>fixed spatial_ref_sys.sql to avoid vacuuming the whole
           database.</p><p>spatial_ref_sys: changed Paris entries to match the ones
-          distributed with 0.x.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2776354"></a>A.1.21. Release 1.0.0RC2</h3></div></div><div></div></div><p>Release date: 2005/01/26</p><p>Second release candidate for 1.0.0 containing bug fixes and a
-        few improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776369"></a>A.1.21.1. Upgrading</h4></div></div><div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
+          distributed with 0.x.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552747"></a>A.1.21. Release 1.0.0RC2</h3></div></div></div><p>Release date: 2005/01/26</p><p>Second release candidate for 1.0.0 containing bug fixes and a
+        few improvements.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552761"></a>A.1.21.1. Upgrading</h4></div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
           the <a href="#upgrading" title="2.2.2. Upgrading">upgrading</a> chapter for more
-          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776388"></a>A.1.21.2. Library changes</h4></div></div><div></div></div><p>BUGFIX in pointarray box3d computation</p><p>BUGFIX in distance_spheroid definition</p><p>BUGFIX in transform() missing to update bbox cache</p><p>NEW jdbc driver (jdbc2)</p><p>GEOMETRYCOLLECTION(EMPTY) syntax support for backward
-          compatibility</p><p>Faster binary outputs</p><p>Stricter OGC WKB/WKT constructors</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776422"></a>A.1.21.3. Scripts changes</h4></div></div><div></div></div><p>More correct STABLE, IMMUTABLE, STRICT uses in lwpostgis.sql</p><p>stricter OGC WKB/WKT constructors</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776438"></a>A.1.21.4. Other changes</h4></div></div><div></div></div><p>Faster and more robust loader (both i18n and not)</p><p>Initial autoconf script</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2776453"></a>A.1.22. Release 1.0.0RC1</h3></div></div><div></div></div><p>Release date: 2005/01/13</p><p>This is the first candidate of a major postgis release, with
+          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552780"></a>A.1.21.2. Library changes</h4></div></div></div><p>BUGFIX in pointarray box3d computation</p><p>BUGFIX in distance_spheroid definition</p><p>BUGFIX in transform() missing to update bbox cache</p><p>NEW jdbc driver (jdbc2)</p><p>GEOMETRYCOLLECTION(EMPTY) syntax support for backward
+          compatibility</p><p>Faster binary outputs</p><p>Stricter OGC WKB/WKT constructors</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552815"></a>A.1.21.3. Scripts changes</h4></div></div></div><p>More correct STABLE, IMMUTABLE, STRICT uses in lwpostgis.sql</p><p>stricter OGC WKB/WKT constructors</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552830"></a>A.1.21.4. Other changes</h4></div></div></div><p>Faster and more robust loader (both i18n and not)</p><p>Initial autoconf script</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552846"></a>A.1.22. Release 1.0.0RC1</h3></div></div></div><p>Release date: 2005/01/13</p><p>This is the first candidate of a major postgis release, with
         internal storage of postgis types redesigned to be smaller and faster
-        on indexed queries.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776469"></a>A.1.22.1. Upgrading</h4></div></div><div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
+        on indexed queries.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552861"></a>A.1.22.1. Upgrading</h4></div></div></div><p>You need a dump/reload to upgrade from precedent releases. See
           the <a href="#upgrading" title="2.2.2. Upgrading">upgrading</a> chapter for more
-          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2776488"></a>A.1.22.2. Changes</h4></div></div><div></div></div><p>Faster canonical input parsing.</p><p>Lossless canonical output.</p><p>EWKB Canonical binary IO with PG&gt;73.</p><p>Support for up to 4d coordinates, providing lossless
+          informations.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552880"></a>A.1.22.2. Changes</h4></div></div></div><p>Faster canonical input parsing.</p><p>Lossless canonical output.</p><p>EWKB Canonical binary IO with PG&gt;73.</p><p>Support for up to 4d coordinates, providing lossless
           shapefile-&gt;postgis-&gt;shapefile conversion.</p><p>New function: UpdateGeometrySRID(), AsGML(), SnapToGrid(),
           ForceRHR(), estimated_extent(), accum().</p><p>Vertical positioning indexed operators.</p><p>JOIN selectivity function.</p><p>More geometry constructors / editors.</p><p>Postgis extension API.</p><p>UTF8 support in loader.</p></div></div></div></div></div></body></html>




More information about the Pkg-grass-devel mailing list