]> granicus.if.org Git - postgis/commitdiff
Update README.postgis (#1670)
authorSandro Santilli <strk@keybit.net>
Tue, 13 Mar 2012 08:18:10 +0000 (08:18 +0000)
committerSandro Santilli <strk@keybit.net>
Tue, 13 Mar 2012 08:18:10 +0000 (08:18 +0000)
- Use consistent formatting in reStructuredText; see
  formatted result with rst2pdf or rst2html, or if you don't
  want to install docutils, you can copy/paste the text to
  http://www.tele3.cz/jbar/rest/rest.html
- Wrap lines to 80 columns, trim trailing whitespace, replace tabs
  with space chars
- Fix typos, and use consistent case and punctuation
- Alphabetize the directory structure
- Add ./libpgcommon to directory structure, and attempt to
  describe it
- Arrange style of REQUIREMENTS section a bit more consistent
  across components: removing repetition, stating what is required
  or optional, etc.
- When referencing PostGIS SQL functions, use the "ST_" prefix,
  where applicable
- Mention that both Raster and Topology extensions are built by
  default, add notes how build without them

Patch by Mike Toews

git-svn-id: http://svn.osgeo.org/postgis/trunk@9478 b70326c6-7e19-0410-871a-916f4a2858ee

README.postgis

index fc3fb0b6f7a3a375f9d2c39c599cb3e31e420d65..429917fff989c70f764def05910847c8404f2789 100644 (file)
@@ -1,35 +1,35 @@
 PostGIS - Geographic Information Systems Extensions to PostgreSQL
-~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+=================================================================
 
-VERSION: 2.0.0beta2 (YYYY/MM/DD)
+:Version: 2.0.0
+:Date: YYYY-MM-DD
+:Website: http://postgis.org
 
-MORE INFORMATION: http://postgis.org
+This distribution contains a module which implements GIS simple features, ties
+the features to R-tree indexing, and provides many spatial functions for
+accessing and analyzing geographic data.
 
-This distribution contains a module which implements GIS simple 
-features, ties the features to rtree indexing, and provides some 
-spatial functions for accessing and analyzing geographic data.
+Directory structure::
 
-Directory structure:
-
-  ./            Build scripts and install directions.
-  ./liblwgeom   LWGEOM geometry library.
-  ./postgis     PostGIS library source code.
-  ./raster      PostGIS rasters support source code.
-  ./topology    PostGIS topology source code.
+  ./            Build scripts and install directions
+  ./doc         PostGIS Documentation
+  ./extensions  Support for the PostgreSQL 9.1+ Extensions framework
+  ./extras      Various pieces that didn't belong to mainstream
+                (package management specfiles, WFS_locks, sample WKB parser)
   ./java/ejb    EJB Java support
   ./java/jdbc   Extensions to the PostgreSQL JDBC drivers to support
-                the GIS objects
+                the GIS objects
   ./java/pljava PostgreSQL PL/Java spatial object support
-  ./doc         PostGIS Documentation 
-  ./loader      A program to convert ESRI Shape files into SQL text
-                suitable for uploading into a PostGIS/PostgreSQL database
-                and a program for converting PostGIS spatial tables into
-                Shape files.
-  ./utils       Utility scripts for PostGIS (upgrade, profiling, ...)
-  ./extras      Various pieces that didn't belong to mainstream
-               (package management specfiles, WFS_locks, sample wkb parser)
+  ./liblwgeom   LWGEOM geometry library
+  ./libpgcommon PostGIS library to bridge LWGEOM to PostgreSQL
+  ./loader      A program to convert ESRI Shape files into SQL text suitable
+                for uploading into a PostGIS/PostgreSQL database and a program
+                for converting PostGIS spatial tables into shapefiles
+  ./postgis     PostGIS library source code
+  ./raster      PostGIS rasters extension source code
   ./regress     Online regression tests
-  ./extensions  Files to support the PostgreSQL 9.1+ "extensions" framework
+  ./topology    PostGIS topology extension source code
+  ./utils       Utility scripts for PostGIS (upgrade, profiling, ...)
 
 
 REQUIREMENTS
@@ -37,253 +37,247 @@ REQUIREMENTS
 
 PostGIS is compatible with PostgreSQL 8.4 and above.
 
-You *must* have the full PostgreSQL - including server headers - installed
-for this to work. 
+You *must* have the full PostgreSQL - including server headers - installed for
+this to work.
 
-* PROJ4 SUPPORT (Required, Version 4.6.0 or higher): 
+* PROJ4 (Required, Version 4.6.0 or higher):
 
-  The Proj4 reprojection library is required if you want to use the 
-  transform() function to reproject features within the database.
+  The PROJ4 catographic projection library is required if you want to use the
+  ST_Transform() function to reproject features within the database.
 
     http://trac.osgeo.org/proj/
 
-* SPATIAL PREDICATE / GEOS SUPPORT (Required, Version 3.2.2 or higher):
+* GEOS (Required, Version 3.2.2 or higher):
 
-  The GEOS library provides support for exact topological tests
-  such as Touches(), Contains(), Disjoint() and spatial operations
-  such as Intersection(), Union() and Buffer(). GEOS 3.3.2 or higher
-  is recomended. 
+  The GEOS library provides support for exact topological tests such as
+  ST_Touches(), ST_Contains(), ST_Disjoint() and spatial operations such as
+  ST_Intersection(), ST_Union() and ST_Buffer(). GEOS 3.3.2 or higher is
+  recommended.
 
     http://trac.osgeo.org/geos/
 
-* XML SUPPORT (Required, Version 2.5.0 or higher): 
+* XML SUPPORT (Required, Version 2.5.0 or higher):
 
-  The LibXML2 library is required to use the ST_GeomFromGML() and 
+  The LibXML2 library is required to use the ST_GeomFromGML() and
   ST_GeomFromKML() functionality.
 
     http://xmlsoft.org/
 
 * GNU gettext
 
-   The loader, and hence postgis, requires GNU gettext 0.14 or higher
+   The loader, and hence PostGIS, requires GNU gettext 0.14 or higher
    (typically in libc on GNU/Linux, in which case 0.17 is required).
 
-If you want to compile PostGIS with GeoJSON support, you additionally 
-must have installed:
+* JSON-C (Required, Version 0.9 or higher)
 
-* JSON-C (Version 0.9 or higher)
-
-  JSON-C is currently used to import GeoJSON via the function
-  ST_GeomFromGeoJson. JSON-C is available for download from
+  JSON-C is used to import GeoJSON via the function ST_GeomFromGeoJson().
 
     http://oss.metaparadigm.com/json-c/.
 
-  You can get it installed in apt-based systems using:
+  You can get it installed in apt-based systems using::
 
     apt-get install libjson0-dev
 
-If you want to compile PostGIS with raster support, you additionally 
-must have installed:
+* GDAL (Optional, Version 1.6.0 or higher)
 
-* GDAL (Version 1.6.0 or higher)
+  GDAL is required if you want to compile PostGIS with raster support.
 
-* Python GDAL bindings
+    http://www.gdal.org/
 
 See README.raster for further information on how to compile PostGIS with
 Raster support.
 
+
 CONFIGURATION
 -------------
 
-To configure PostGIS, run:
-       
+To configure PostGIS, run::
+
   ./configure
 
 The results of the configuration can be easily seen within the
-postgis_config.h file.
+``postgis_config.h`` file.
+
+If ``pg_config`` can't be found in your ``$PATH`` configure will complain
+and refuse to proceed. You can specify it using the
+``--with-pgconfig=/path/to/pg_config`` flag.
 
-If pg_config can't be found in your $PATH configure will complain
-and refuse to proceed. You can specify it using the 
---with-pgconfig=/path/to/pg_config flag.
+If PROJ4 has been installed but cannot be found, configure will complain and
+refuse to proceed. You can specify an alternative installation directory using
+the ``--with-projdir=DIR`` option.
 
-If PROJ4 has been installed (but cannot be found), configure will
-complain and refuse to proceed. You can specify an alternative 
-installation directory using the --with-projdir=DIR option.
+If GEOS has been installed but cannot be found, configure will complain and
+refuse to proceed. You can specify an alternative ``geos-config`` file using
+the ``--with-geosconfig=/path/to/geos-config`` option.
 
-If GEOS has been installed (but cannot be found), configure will 
-complain and refuse to proceed. You can specify an alternative 
-geos-config file using the --with-geosconfig=/path/to/geos-config 
-option.
+By default, both Topology and Raster extensions are enabled in ``./configure``.
 
-If you want to compile PostGIS with Raster support, you must provide
-the --with-raster option.
+If you want to compile PostGIS *without* Raster support, you must provide the
+``--without-raster`` option.
 
-If you want to compile PostGIS with Topology support, you must provide
-the --with-topology option.
+If you want to compile PostGIS *without* Topology support, you must provide the
+``--without-topology`` option.
+
+See ``./configure --help`` for more options.
 
-See ./configure --help for more options.
 
 BUILD
 -----
 
-PostGIS uses the GNU make (aka gmake) for building. 
-To build PostGIS library and utilities, as postgres run:
+PostGIS uses the GNU make (aka gmake) for building. To build PostGIS library
+and utilities, as postgres run::
 
   make
 
 See README.raster to know how to build PostGIS Raster extension.
 
+
 TESTING
 -------
 
-You want to run regress tests before installation.
-To do so, as postgres run:  
+You want to run regress tests before installation. To do so, as postgres run::
 
-       make check
+  make check
 
-The above will create a test database with postgis extensions,
-run tests and then drop the db.
+The above will create a test database with PostGIS extensions, run tests and
+then drop the test database.
 
-Final lines of output contain a summary of test results:
-run, succeeded, failed. If you have any failure please
-file a bug report using the online bug tracker:
-http://trac.osgeo.org/postgis/report/3.
+Final lines of output contain a summary of test results: run, succeeded,
+failed. If you have any failure please file a bug report using the online bug
+tracker: http://trac.osgeo.org/postgis/report/3
 
 See README.raster to know how to test PostGIS raster extension.
 
-  
+
 INSTALLATION
 ------------
 
-To install PostGIS library and utilities, as postgres run:
+To install PostGIS library and utilities, as postgres run::
 
   make install
 
+Installation paths will typically be derived by ``pg_config``:
 
-Installation paths will typically be derived by ``pg_config'':
+ - Lib in ``pg_config --pkglibdir``
+ - Binaries (loader/dumper) in ``pg_config --bindir``
+ - Important support files in ``[prefix]/share/contrib``
+ - Manual pages in ``[prefix]/man``
+ - Documentation in in ``[prefix]/share/doc``
 
-       - Lib in `pg_config --pkglibdir`
-       - Binaries (loader/dumper) in `pg_config --bindir`
-       - Important support files in [prefix]/share/contrib
-       - Manual pages in [prefix]/man
-       - Documentation in in [prefix]/share/doc
+Where `[prefix]` above is extracted from ``pg_config --configure``.
 
-Where [prefix] above is extracted by `pg_config --configure`.
-
-You can change them using ./configure switches.
-See CONFIGURATION section.
+You can change them using ``./configure`` switches. See CONFIGURATION section.
 
 See README.raster to know how to install PostGIS Raster extension.
 
+
 CREATING NEW SPATIAL DATABASES
 ------------------------------
 
-PostGIS support must be enabled for each database that requires
-its usage. This is done by feeding the postgis.sql (the enabler script)
-file to the target database. 
+PostGIS support must be enabled for each database that requires its usage.
+This is done by feeding the ``postgis.sql`` (the enabler script) file to the
+target database.
+
+The enabler script requires the PL/pgSQL procedural language in order to
+operate correctly, you can use the ``createlang`` program from the PostgreSQL
+installation.
 
-The enabler script requires the PL/pgSQL procedural language in order
-to operate correctly, you can use the 'createlang' program from the
-PostgreSQL installation.
 (The PostgreSQL Programmer's Guide has details if you want to do this
 manually for some reason.)
 
-So, as postgres run:
+So, as postgres run::
 
   createlang plpgsql <yourdatabase>
   psql -f postgis/postgis.sql -d <your_database>
 
 Your database should now be spatially enabled.
 
+
 UPGRADING EXISTING SPATIAL DATABASES
 ------------------------------------
 
-Upgrading existing spatial databases can be tricky as it requires
-replacement or introduction of new PostGIS object definitions.
+Upgrading existing spatial databases can be tricky as it requires replacement
+or introduction of new PostGIS object definitions.
 
-Unfortunately not all definitions can be easily replaced in 
-a live database, so sometimes your best bet is a dump/reload
-process. 
+Unfortunately not all definitions can be easily replaced in a live database, so
+sometimes your best bet is a dump/reload process.
 
-PostGIS provides a SOFT UPGRADE procedure for minor or bugfix
-releases, and an HARD UPGRADE procedure for major releases.
+PostGIS provides a SOFT UPGRADE procedure for minor or bugfix releases, and an
+HARD UPGRADE procedure for major releases.
 
---- SOFT UPGRADE ---
+SOFT UPGRADE
+~~~~~~~~~~~~
 
+Soft upgrade consists of sourcing the ``postgis_upgrade_*.sql`` script in your
+spatial database:
 
-Soft upgrade consists of sourcing the postgis_upgrade_*.sql
-script in your spatial database:
+ * ``postgis_upgrade_13_to_15.sql``, upgrade a 1.3.x database to 1.5
+ * ``postgis_upgrade_15_to_15.sql``, upgrade a 1.4.x database to 1.5
+ * ``postgis_upgrade_16_minor.sql``, upgrade a 1.5.x database to the latest
+   minor release
 
- * postgis_upgrade_13_to_15.sql, upgrade a 1.3.x database
-   to 1.5
- * postgis_upgrade_15_to_15.sql, upgrade a 1.4.x database 
-   to 1.5
- * postgis_upgrade_16_minor.sql, upgrade a 1.5.x database
-   to the latest minor release
+If a soft upgrade is not possible the script will abort and no harm will be
+done. You can then move on to the HARD UPGRADE process. Always try a soft
+upgrade first; they are much simpler.
 
-If a soft upgrade is not possible the script will abort and 
-no harm will be done. You can then move on to the 
-HARD UPGRADE process. Always try a soft upgrade first, they 
-are much simpler.
+HARD UPGRADE
+~~~~~~~~~~~~
 
---- HARD UPGRADE ---
+Hard upgrade is a PostgreSQL dump/restore procedure combined with a filter to
+selectively update PostGIS functions and objects to point to a new library
+version.
 
-Hard upgrade is a PostgreSQL dump/restore procedure combined 
-with a filter to selectively update PostGIS functions and 
-objects to point to a new library version.
+Hard upgrades are required when object definitions have changed, aggregates
+have changed or been added, and when the underlying PostgreSQL database itself
+has undergone a major update.
 
-Hard upgrades are required when object definitions have changed,
-aggregates have changed or been added, and when the underlying
-PostgreSQL database itself has undergone a major update.
+For this purpose, PostGIS provides a utility script to restore a dump in
+"custom" format. The hard upgrade procedure is as follows::
 
-For this purpose, PostGIS provides a utility script to restore a dump
-in "custom" format. The hard upgrade procedure is as follows:
+  # [1] Create a "custom-format" dump of the database you want
+  # to upgrade (let's call it "olddb")
+  $ pg_dump -Fc -f olddb.dump olddb
 
-       # [1] Create a "custom-format" dump of the database you want
-       # to upgrade (let's call it "olddb")
-       $ pg_dump -Fc -f olddb.dump olddb 
+  # [2] Do a fresh install of PostGIS in a new database
+  # (let's call it "newdb").
+  # Refer to CREATING NEW SPATIAL DATABASES for instructions
 
-       # [2] Do a fresh install of PostGIS in a new database
-       # (let's call it "newdb").
-       # Refer to CREATING NEW SPATIAL DATABASES for instructions
+  # [3] Restore the dump into your new database.
+  $ perl utils/postgis_restore.pl -v olddb.dump \
+      2> restore.log | psql newdb 2> errors.txt
 
-       # [3] Restore the dump into your new database. 
-       $ perl utils/postgis_restore.pl -v olddb.dump \
-               2> restore.log | psql newdb 2> errors.txt
+The ``spatial_ref_sys`` entries found in your dump will be restored, but they
+will not override existing ones in ``spatial_ref_sys``.  This is to ensure that
+fixes in the official set will be properly propagated to restored databases.
+If for any reason you really want your own overrides of standard entries just
+don't load the ``spatial_ref_sys.sql`` file when creating the new database.
 
-The spatial_ref_sys entries found in your dump will be restored, but
-they will not override existing ones in spatial_ref_sys.  This is to
-ensure that fixes in the official set will be properly propagated to
-restored databases. If for any reason you really want your own overrides
-of standard entries just don't load the spatial_ref_sys.sql file when
-creating the new db.
+If your database is really old or you know you've been using long deprecated
+functions in your views and functions, you might need to load ``legacy.sql``
+before restoring the dump for all your functions and views etc. to properly
+come back.  Only do this if *really* needed. Consider upgrading your views and
+functions before dumping instead, if possible.  The deprecated functions can be
+later removed by loading ``uninstall_legacy.sql``.
 
-If your database is really old or you know you've been using long
-deprecated functions in your views and functions, you might need
-to load <filename>legacy.sql</filename> before restoring the dump
-for all your functions and views etc. to properly come back.  Only do
-this if _really_ needed. Consider upgrading your views and functions
-before dumping instead, if possible.  The deprecated functions can be
-later removed by loading <filename>uninstall_legacy.sql</filename>.
 
 USAGE
 -----
 
-Try the following example SQL statements to create non-OpenGIS tables and 
-geometries:
+Try the following example SQL statements to create non-OpenGIS tables and
+geometries::
 
-  CREATE TABLE geom_test ( gid int4, geom geometry,name varchar(25) );
-  INSERT INTO geom_test ( gid, geom, name ) 
+  CREATE TABLE geom_test ( gid int4, geom geometry, name varchar(25) );
+  INSERT INTO geom_test ( gid, geom, name )
     VALUES ( 1, 'POLYGON((0 0 0,0 5 0,5 5 0,5 0 0,0 0 0))', '3D Square');
-  INSERT INTO geom_test ( gid, geom, name ) 
+  INSERT INTO geom_test ( gid, geom, name )
     VALUES ( 2, 'LINESTRING(1 1 1,5 5 5,7 7 5)', '3D Line' );
   INSERT INTO geom_test ( gid, geom, name )
     VALUES ( 3, 'MULTIPOINT(3 4,8 9)', '2D Aggregate Point' );
   SELECT * from geom_test WHERE geom && 'BOX3D(2 2 0,3 3 0)'::box3d;
 
-The following SQL creates proper OpenGIS entries in the SPATIAL_REF_SYS
-and GEOMETRY_COLUMNS tables, and ensures that all geometries are created
-with an SRID.
+The following SQL creates proper OpenGIS entries in the ``SPATIAL_REF_SYS``
+and ``GEOMETRY_COLUMNS`` tables, and ensures that all geometries are created
+with an SRID::
 
   INSERT INTO SPATIAL_REF_SYS
     ( SRID, AUTH_NAME, AUTH_SRID, SRTEXT ) VALUES
@@ -306,34 +300,37 @@ with an SRID.
     name VARCHAR(32)
     );
 
-  SELECT AddGeometryColumn('db','geotest','geopoint',1,'POINT',2);
+  SELECT AddGeometryColumn('db', 'geotest', 'geopoint', 1, 'POINT', 2);
 
   INSERT INTO geotest (id, name, geopoint)
-    VALUES (1, 'Olympia', GeometryFromText('POINT(-122.90 46.97)',1));
+    VALUES (1, 'Olympia', GeometryFromText('POINT(-122.90 46.97)', 1));
   INSERT INTO geotest (id, name, geopoint)
-    VALUES (2, 'Renton', GeometryFromText('POINT(-122.22 47.50)',1));
+    VALUES (2, 'Renton', GeometryFromText('POINT(-122.22 47.50)', 1));
 
-  SELECT name,AsText(geopoint) FROM geotest;
+  SELECT name, AsText(geopoint) FROM geotest;
 
 
---- Spatial Indexes ---
+Spatial Indexes
+~~~~~~~~~~~~~~~
 
-PostgreSQL provides support for GiST spatial indexing. The GiST scheme offers 
-indexing even on large objects, using a system of "lossy" indexing where 
-a large object is proxied by a smaller one in the index.  In the case 
-of the PostGIS indexing system, all objects are proxied in the index by 
-their bounding boxes.
+PostgreSQL provides support for GiST spatial indexing. The GiST scheme offers
+indexing even on large objects, using a system of "lossy" indexing where a
+large object is proxied by a smaller one in the index.  In the case of the
+PostGIS indexing system, all objects are proxied in the index by their
+bounding boxes.
 
-You can build a GiST index with:
+You can build a GiST index with::
 
-  CREATE INDEX <indexname> 
-    ON <tablename> 
+  CREATE INDEX <indexname>
+    ON <tablename>
     USING GIST ( <geometryfield> );
 
-Always run the "VACUUM ANALYZE <tablename>" on your tables after
-creating an index. This gathers statistics which the query planner
-uses to optimize index usage.
+Always run the ``VACUUM ANALYZE <tablename>`` on your tables after creating an
+index. This gathers statistics which the query planner uses to optimize index
+usage.
 
---- PostGIS Raster support ---
+PostGIS Raster support
+~~~~~~~~~~~~~~~~~~~~~~
 
-See README.raster to know how to enable raster support on a spatially enabled database.
+See README.raster to know how to enable raster support on a spatially enabled
+database.