postgis-0.8.1/0040775000077300001440000000000010000571227012623 5ustar postgisuserspostgis-0.8.1/doc/0040775000077300001440000000000010000571265013372 5ustar postgisuserspostgis-0.8.1/doc/html/0040775000077300001440000000000010000571201014324 5ustar postgisuserspostgis-0.8.1/doc/html/.cvsignore0100664000077300001440000000000707754517234016352 0ustar postgisusers*.html postgis-0.8.1/doc/html/style.css0100664000077300001440000000070507363410207016215 0ustar postgisusersH1,H2,H3,H4,TH,DT,B{color:#656599;font-family:verdana,arial,helvetica} A.ulink,A.vlink,P,LI,TD{font-family:verdana,arial,helvetica} B,TH,DT{color:#656599;font-weight:bold} PRE{font-family:courier} TT{font-family:courier} CODE{font-family:courier} .LITERALLAYOUT{font-weight:bold;font-family:courier} .QUESTION{color:#656599;font-weight:bold} P,FORM,TD,TH,DT,LI{font-size:10pt} H1{font-size:15pt} H2{font-size:13pt} H3{font-size:12pt} H4{font-size:11pt} postgis-0.8.1/doc/html/c18.html0100664000077300001440000000617510000571201015613 0ustar postgisusersIntroduction

Chapter 1. Introduction

Table of Contents
Credits
More Information

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.

Credits

Dave Blasby <dblasby@refractions.net>

The principal developer of PostGIS. Dave maintains the server side objects and index support, the server side analytical functions, and the Mapserver connectivity.

Chris Hodgson <chodgson@refractions.net>

Maintains new functions and the 7.2 index bindings.

Paul Ramsey <pramsey@refractions.net>

Maintains the JDBC objects and keeps track of the documentation and packaging.

Jeff Lounsbury <jeffloun@refractions.net>

Maintains the Shape loader/dumper.

postgis-0.8.1/doc/html/c206.html0100664000077300001440000002741410000571201015671 0ustar postgisusersFrequently Asked Questions

Chapter 3. Frequently Asked Questions

1. What kind of geometric objects can I store?
2. How do I insert a GIS object into the database?
3. How do I construct a spatial query?
4. How do I speed up spatial queries on large tables?
5. Why aren't PostgreSQL R-Tree indexes supported?
6. Why should I use the AddGeometryColumn() function and all the other OpenGIS stuff?
7. What is the best way to find all objects within a radius of another object?
8. How do I perform a coordinate reprojection as part of a query?

1. What kind of geometric objects can I store?

You can store point, line, polygon, multipoint, multiline, multipolygon, and geometrycollections. These are specified in the Open GIS Well Known Text Format (with 3d extentions).

2. How do I insert a GIS object into the database?

First, you need to create a table with a column of type "geometry" to hold your GIS data. Connect to your database with psql and try the following SQL:

  CREATE TABLE gtest ( ID int4, NAME varchar(20) );
  SELECT AddGeometryColumn('dbname','gtest','geom',-1,'LINESTRING',2);

If the geometry column addition fails, you probably have not loaded the PostGIS functions and objects into this database. See the installation instructions.

Then, you can insert a geometry into the table using a SQL insert statement. The GIS object itself is formatted using the OpenGIS Consortium "well-known text" format:

  INSERT INTO gtest (ID, NAME, GEOM) VALUES (1, 'First Geometry', GeometryFromText('LINESTRING(2 3,4 5,6 5,7 8)', -1));

For more information about other GIS objects, see the object reference.

To view your GIS data in the table:

  SELECT id, name, AsText(geom) AS geom FROM gtest;

The return value should look something like this:

   id | name           | geom
  ----+----------------+-----------------------------
    1 | First Geometry |	LINESTRING(2 3,4 5,6 5,7 8) 
  (1 row)

3. How do I construct a spatial query?

There are a number of spatial operators available to PostgreSQL, and several of them have been implemented by PostGIS in order to provide indexing support.

In order to do a spatial query with index support, you must use the "overlap operator" (&&) which uses the following important simplifying assumption: all features shall be represented by their bounding boxes.

We recognize that using bounding boxes to proxy for features is a limiting assumption, but it is an important one in providing spatial indexing capabilities. Commercial spatial databases use the same assumption -- bounding boxes are important to most spatial indexing schemes.

The most important spatial operator from a user's perspective is the "&&" overlap operator, which tests whether one feature's bounding box overlaps that of another. An example of a spatial query using && is:

  SELECT id,name FROM GTEST WHERE GEOM && 'BOX3D(3 4,4 5)'::box3d

Note that the bounding box used for querying must be explicitly declared as a box3d using the "::box3d" casting operation.

4. How do I speed up spatial queries on large tables?

Fast queries on large tables is the raison d'etre of spatial databases (along with transaction support) so having a good index in important.

To build a spatial index on a table with a geometry column, use the "CREATE INDEX" function as follows:

  CREATE INDEX [indexname] ON [tablename]  
    USING GIST ( [geometrycolumn] gist_geometry_ops);

The "USING GIST" option tells the server to use a GiST (Generalized Search Tree) index. The reference to "gist_geometry_ops" tells the server to use a particular set of comparison operators for building the index: the "gist_geometry_ops" are part of the PostGIS extension.

Note: For PostgreSQL version 7.1.x, you can specifically request a "lossy" index by appending WITH (ISLOSSY) to the index creation command. For PostgreSQL 7.2.x and above all GiST indexes are assumed to be lossy. Lossy indexes uses a proxy object (in the spatial case, a bounding box) for building the index.

5. Why aren't PostgreSQL R-Tree indexes supported?

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.

Our tests have shown search speed for native R-Tree and GiST to be comparable. Native PostgreSQL R-Trees have two limitations which make them undesirable for use with GIS features (note that these limitations are due to the current PostgreSQL native R-Tree implementation, not the R-Tree concept in general):

  • R-Tree indexes in PostgreSQL cannot handle features which are larger than 8K in size. GiST indexes can, using the "lossy" trick of substituting the bounding box for the feature itself.

  • R-Tree indexes in PostgreSQL are not "null safe", so building an index on a geometry column which contains null geometries will fail.

6. Why should I use the AddGeometryColumn() function and all the other OpenGIS stuff?

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 not be filled in properly. However, this will cause most applications based on PostGIS to fail, and it is generally suggested that you do use AddGeometryColumn() to create geometry tables.

Mapserver is one application which makes use of the geometry_columns 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.

7. What is the best way to find all objects within a radius of another object?

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.

For example, to find all objects with 100 meters of POINT(1000 1000) the following query would work well:

  SELECT * 
  FROM GEOTABLE 
  WHERE 
    GEOM && GeometryFromText('BOX3D(900 900,1100 1100)',-1)
  AND
  Distance(GeometryFromText('POINT(1000 1000)',-1),GEOM) < 100;

8. How do I perform a coordinate reprojection as part of a query?

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.

  SELECT Transform(GEOM,4269) FROM GEOTABLE;
postgis-0.8.1/doc/html/c289.html0100664000077300001440000001361710000571201015704 0ustar postgisusersUsing PostGIS

Chapter 4. Using PostGIS

Table of Contents
GIS Objects
Using OpenGIS Standards
Loading GIS Data
Retrieving GIS Data
Building Indexes
Complex Queries
Using Mapserver
Java Clients (JDBC)
C Clients (libpq)

GIS Objects

The GIS objects supported by PostGIS are the "Simple Features" defined by the OpenGIS Consortium (OGC). Note that PostGIS currently supports the features and the representation APIs, but not the various comparison and convolution operators given in the OGC "Simple Features for SQL" specification.

Examples of the text representations of the features are as follows:

Note that in the examples above there are features with both 2-dimensional and 3-dimensional coordinates. PostGIS supports both 2d and 3d coordinates -- if you describe a feature with 2D coordinates when you insert it, the database will return that feature to you with 2D coordinates when you extract it. See the sections on the force_2d() and force_3d() functions for information on converting features to a particular coordinate dimension representation.

Standard versus Canonical Forms

The OpenGIS specification defines two standard ways of expressing spatial objects: the Well-Known Text (WKT) form (shown in the previous section) 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 object.

However, the OpenGIS specification also requires that the internal storage format of spatial objects include a spatial referencing system identifier (SRID). The SRID is required when creating spatial objects for insertion into the database. For example, a valid insert statement to create and insert a spatial object would be:

  INSERT INTO SPATIALTABLE ( THE_GEOM, THE_NAME ) 
  VALUES ( 
      GeometryFromText('POINT(-126.4 45.32)', 312), 
      'A Place' 
    )

Note that the "GeometryFromText" function requires an SRID number.

The "canonical form" of the spatial objects in PostgreSQL is a text representation which includes all the information necessary to construct the object. Unlike the OpenGIS standard forms, it includes the type, coordinate, and SRID information. The canonical form is the default form returned from a SELECT query. The example below shows the difference between the OGC standard and PostGIS canonical forms:

  db=> SELECT AsText(geom) AS OGCGeom FROM thetable;
  OGCGeom
  -------------------------------------------------
  LINESTRING(-123.741378393049 48.9124018962261,-123.741587115639 48.9123981907507)
  (1 row)
  db=> SELECT geom AS PostGISGeom FROM thetable;
  PostGISGeom
  -------------------------------------------------
  SRID=123;LINESTRING(-123.741378393049 48.9124018962261,-123.741587115639 48.9123981907507)
  (1 row)
postgis-0.8.1/doc/html/c59.html0100664000077300001440000000644410000571201015617 0ustar postgisusersInstallation

Chapter 2. Installation

Table of Contents
Requirements
PostGIS
JDBC
Loader/Dumper

Requirements

PostGIS has the following requirements for building and usage:

postgis-0.8.1/doc/html/c671.html0100664000077300001440000003745010000571201015700 0ustar postgisusersPostGIS Reference

Chapter 5. PostGIS Reference

Table of Contents
OpenGIS Functions
Other Functions

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.

OpenGIS Functions

AddGeometryColumn(varchar, varchar, varchar, integer, varchar, integer)

Syntax: AddGeometryColumn(<db_name>, <table_name>, <column_name>, <srid>, <type>, <dimension>). Adds a geometry column to an existing table of attributes. The dbname is the name of the database instance. The srid must be an integer value reference to an entry in the SPATIAL_REF_SYS table. The type must be an uppercase string corresponding to the geometry type, eg, 'POLYGON' or 'MULTILINESTRING'.

DropGeometryColumn(varchar, varchar, varchar)

Syntax: DropGeometryColumn(<db_name>, <table_name>, <column_name>). Remove a geometry column from a spatial table.

AsBinary(geometry)

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 binary cursors to pull data out of the database without converting it to a string representation.

OGC SPEC s2.1.1.1 - also see asBinary(<geometry>,'XDR') and asBinary(<geometry>,'NDR')

Dimension(geometry)

The inherent dimension of this Geometry object, which must be less than or equal to the coordinate dimension. OGC SPEC s2.1.1.1 - returns 0 for points, 1 for lines, 2 for polygons, and the largest dimension of the components of a GEOMETRYCOLLECTION.

  select dimension('GEOMETRYCOLLECTION(LINESTRING(1 1,0 0),POINT(0 0)'); 
  dimension 
  -----------
  1
isEmpty(geometry)

Returns 1 (TRUE) if this Geometry is the empty geometry . If true, then this Geometry represents the empty point set - i.e. GEOMETRYCOLLECTION(EMPTY).

OGC SPEC s2.1.1.1

isSimple(geometry)

Returns 1 (TRUE) if this Geometry has no anomalous geometric points, such as self intersection or self tangency.

Performed by the GEOS module

OGC SPEC s2.1.1.1

boundary(geometry)

Returns the closure of the combinatorial boundary of this Geometry. The combinatorial boundary is defined as described in section 3.12.3.2 of the OGC SPEC. Because the result of this function is a closure, and hence topologically closed, the resulting boundary can be represented using representational geometry primitives as discussed in the OGC SPEC, section 3.12.2.

Performed by the GEOS module

OGC SPEC s2.1.1.1

equals(geometry)

Returns 1 (TRUE) if this Geometry is "spatially equal" to anotherGeometry. Use this for a 'better' answer than '='. equals ('LINESTRING(0 0, 10 10)','LINESTRING(0 0, 5 5, 10 10)') is true.

Performed by the GEOS module

OGC SPEC s2.1.1.1

disjoint(geometry,geometry)

Returns 1 (TRUE) if this Geometry is "spatially disjoint" from anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is the "allowable" version that returns a boolean, not an integer.

OGC SPEC s2.1.1.1 //s2.1.13.3 - a.Relate(b, 'FF*FF****')

intersects(geometry,geometry)

Returns 1 (TRUE) if this Geometry "spatially intersects" anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is the "allowable" version that returns a boolean, not an integer.

OGC SPEC s2.1.1.1 //s2.1.13.3 - Intersects(g1, g2 ) --> Not (Disjoint(g1, g2 ))

touches(geometry,geometry)

Returns 1 (TRUE) if this Geometry "spatially touches" anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is the "allowable" version that returns a boolean, not an integer.

OGC SPEC s2.1.1.1 // s2.1.13.3- a.Touches(b) -> (I(a) intersection I(b) = {empty set} ) and (a intersection b) not empty

crosses(geometry,geometry)

Returns 1 (TRUE) if this Geometry "spatially crosses" anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is the "allowable" version that returns a boolean, not an integer.

OGC SPEC s2.1.1.1 // s2.1.13.3 - a.Relate(b, 'T*T******')

within(geometry,geometry)

Returns 1 (TRUE) if this Geometry is "spatially within" anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is the "allowable" version that returns a boolean, not an integer.

OGC SPEC s2.1.1.1 // s2.1.13.3 - a.Relate(b, 'T*F**F***')

overlaps(geometry,geometry)

Returns 1 (TRUE) if this Geometry is "spatially overlapping" anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is the "allowable" version that returns a boolean, not an integer.

OGC SPEC s2.1.1.1 // s2.1.13.3

contains(geometry,geometry)

Returns 1 (TRUE) if this Geometry is "spatially contains" anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is the "allowable" version that returns a boolean, not an integer.

OGC SPEC s2.1.1.1 // s2.1.13.3 - same as within(geometry,geometry)

intersects(geometry,geometry)

Returns 1 (TRUE) if this Geometry is "spatially intersects" anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is the "allowable" version that returns a boolean, not an integer.

OGC SPEC s2.1.1.1 // s2.1.13.3 - NOT disjoint(geometry,geometry)

relate(geometry,geometry, intersectionPatternMatrix)

Returns 1 (TRUE) if this Geometry is spatially related to anotherGeometry, by testing for intersections between the Interior, Boundary and Exterior of the two geometries as specified by the values in the intersectionPatternMatrix.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is the "allowable" version that returns a boolean, not an integer.

OGC SPEC s2.1.1.1 // s2.1.13.3

relate(geometry,geometry)

returns the DE-9IM (dimensionally extended nine-intersection matrix)

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

not in OGC spec, but implied. see s2.1.13.2

buffer(geometry,double)

Returns a geometry that represents all points whose distance from this Geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this Geometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

OGC SPEC s2.1.1.1

convexhull(geometry)

Returns a geometry that represents the convex hull of this Geometry.

Performed by the GEOS module

OGC SPEC s2.1.1.1

intersection(geometry,geometry)

Returns a geometry that represents the point set intersection of this Geometry with anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

OGC SPEC s2.1.1.1

GeomUnion(geometry,geometry)

Returns a geometry that represents the point set union of this Geometry with anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

NOTE: this is renamed from "union" because union is an SQL reserved word

OGC SPEC s2.1.1.1

GeomUnion(geometry set)

Returns a geometry that represents the point set union of this all Geometries in given set.

Performed by the GEOS module

Do not call with a GeometryCollection in the argument set

Not explicitly defined in OGC SPEC

memGeomUnion(geometry set)

Same as the above, only memory-friendly (uses less memory and more processor time).

difference(geometry,geometry)

Returns a geometry that represents the point set difference of this Geometry with anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

OGC SPEC s2.1.1.1

difference(geometry,geometry)

Returns a geometry that represents the point set symmetric difference of this Geometry with anotherGeometry.

Performed by the GEOS module

Do not call with a GeometryCollection as an argument

OGC SPEC s2.1.1.1

Envelope(geometry)

Returns a POLYGON representing the bounding box of the geometry.

OGC SPEC s2.1.1.1 - The minimum bounding box for this Geometry, returned as a Geometry. The polygon is defined by the corner points of the bounding box ((MINX, MINY), (MAXX, MINY), (MAXX, MAXY), (MINX, MAXY), (MINX, MINY)).

NOTE:PostGIS will add a Zmin/Zmax coordinate as well.

GeometryType(geometry)

Returns the type of the geometry as a string. Eg: 'LINESTRING', 'POLYGON', 'MULTIPOINT', etc.

OGC SPEC s2.1.1.1 - Returns the name of the instantiable subtype of Geometry of which this Geometry instance is a member. The name of the instantiable subtype of Geometry is returned as a string.

X(geometry)

Find and return the X coordinate of the first point in the geometry. Return NULL if there is no point in the geometry.

Y(geometry)

Find and return the Y coordinate of the first point in the geometry. Return NULL if there is no point in the geometry.

Z(geometry)

Find and return the Z coordinate of the first point in the geometry. Return NULL if there is no point in the geometry.

NumPoints(geometry)

Find and return the number of points in the first linestring in the geometry. Return NULL if there is no linestring in the geometry.

PointN(geometry,integer)

Return the N'th point in the first linestring in the geometry. Return NULL if there is no linestring in the geometry.

ExteriorRing(geometry)

Return the exterior ring of the first polygon in the geometry. Return NULL if there is no polygon in the geometry.

NumInteriorRings(geometry)

Return the number of interior rings of the first polygon in the geometry. Return NULL if there is no polygon in the geometry.

InteriorRingN(geometry,integer)

Return the N'th interior ring of the first polygon in the geometry. Return NULL if there is no polygon in the geometry.

IsClosed(geometry)

Returns true of the geometry start and end points are coincident.

IsRing(geometry)

Returns 1 (TRUE) if this Curve is closed (StartPoint ( ) = EndPoint ( )) and this Curve is simple (does not pass through the same point more than once).

performed by GEOS

OGC spec 2.1.5.1

NumGeometries(geometry)

If geometry is a GEOMETRYCOLLECTION (or MULTI*) return the number of geometries, otherwise return NULL.

GeometryN(geometry,int)

Return the N'th geometry if the geometry is a GEOMETRYCOLLECTION, MULTIPOINT, MULTILINESTRING or MULTIPOLYGON. Otherwise, return NULL.

0 is 1st geometry

Distance(geometry,geometry)

Return the cartesian distance between two geometries in projected units.

AsText(geometry)

Return the Well-Known Text representation of the geometry. For example: POLYGON(0 0,0 1,1 1,1 0,0 0)

OGC SPEC s2.1.1.1

SRID(geometry)

Returns the integer SRID number of the spatial reference system of the geometry.

OGC SPEC s2.1.1.1

GeometryFromText(varchar, integer)

Syntax: GeometryFromText(<geometry>,<SRID>) Convert a Well-Known Text representation of a geometry into a geometry object.

GeomFromText(varchar, integer)

As above. A synonym for GeometryFromText.

SetSRID(geometry)

Set the SRID on a geometry to a particular integer value. Useful in constructing bounding boxes for queries.

EndPoint(geometry)

Returns the last point of the geometry as a point.

StartPoint(geometry)

Returns the first point of the geometry as a point.

Centroid(geometry)

Returns the centroid of the geometry as a point.

Computation will be more accurate if performed by the GEOS module (enabled at compile time).

postgis-0.8.1/doc/html/index.html0100664000077300001440000001007410000571201016320 0ustar postgisusersPostGIS Manual

PostGIS Manual

Edited by

Paul Ramsey

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 basic analysis of GIS objects.


Table of Contents
1. Introduction
Credits
More Information
2. Installation
Requirements
PostGIS
Upgrading
Common Problems
JDBC
Loader/Dumper
3. Frequently Asked Questions
4. Using PostGIS
GIS Objects
Standard versus Canonical Forms
Using OpenGIS Standards
The SPATIAL_REF_SYS Table
The GEOMETRY_COLUMNS Table
Creating a Spatial Table
Loading GIS Data
Using SQL
Using the Loader
Retrieving GIS Data
Using SQL
Using the Dumper
Building Indexes
GiST Indexes
Using Indexes
Complex Queries
Taking Advantage of Indexes
Using Mapserver
Basic Usage
Advanced Usage
Examples
Java Clients (JDBC)
C Clients (libpq)
Text Cursors
Binary Cursors
5. PostGIS Reference
OpenGIS Functions
Other Functions
postgis-0.8.1/doc/html/x183.html0100664000077300001440000000470410000571201015717 0ustar postgisusersJDBC

JDBC

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.

  1. Enter the jdbc sub-directory of the PostGIS distribution.

  2. Edit the Makefile to provide the correct paths of your java compiler (JAVAC) and interpreter (JAVA).

  3. Run the make command. Copy the postgis.jar file to wherever you keep your java libraries.

postgis-0.8.1/doc/html/x199.html0100664000077300001440000000443710000571201015731 0ustar postgisusersLoader/Dumper

Loader/Dumper

The data loader and dumper are built and installed automatically as part of the PostGIS build. To build and install them manually:

  # cd postgis-0.8.0/loader 
  # make
  # make install

The loader is called shp2pgsql and converts ESRI Shape files into SQL suitable for loading in PostGIS/PostgreSQL. The dumper is called pgsql2shp and converts PostGIS tables into ESRI shape files.

postgis-0.8.1/doc/html/x321.html0100664000077300001440000002222410000571201015706 0ustar postgisusersUsing OpenGIS Standards

Using OpenGIS Standards

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.

There are two OpenGIS meta-data tables: SPATIAL_REF_SYS and GEOMETRY_COLUMNS. The SPATIAL_REF_SYS table holds the numeric IDs and textual descriptions of coordinate systems used in the spatial database.

The SPATIAL_REF_SYS Table

The SPATIAL_REF_SYS table definition is as follows:

  CREATE TABLE SPATIAL_REF_SYS ( 
    SRID INTEGER NOT NULL PRIMARY KEY, 
    AUTH_NAME VARCHAR(256), 
    AUTH_SRID INTEGER, 
    SRTEXT VARCHAR(2048), 
    PROJ4TEXT VARCHAR(2048)
  )

The SPATIAL_REF_SYS columns are as follows:

SRID

An integer value that uniquely identifies the Spatial Referencing System within the database.

AUTH_NAME

The name of the standard or standards body that is being cited for this reference system. For example, "EPSG" would be a valid AUTH_NAME.

AUTH_SRID

The ID of the Spatial Reference System as defined by the Authority cited in the AUTH_NAME. In the case of EPSG, this is where the EPSG projection code would go.

SRTEXT

The Well-Known Text representation of the Spatial Reference System. An example of a WKT SRS representation is:

  PROJCS["NAD83 / UTM Zone 10N", 
    GEOGCS["NAD83",
  			 DATUM["North_American_Datum_1983", 
        SPHEROID["GRS 1980",6378137,298.257222101]
  				], 
      PRIMEM["Greenwich",0], 
      UNIT["degree",0.0174532925199433] 
    ],
  		PROJECTION["Transverse_Mercator"], 
    PARAMETER["latitude_of_origin",0],
  	 PARAMETER["central_meridian",-123], 
    PARAMETER["scale_factor",0.9996],
  	 PARAMETER["false_easting",500000], 
    PARAMETER["false_northing",0],
  		UNIT["metre",1] 
  ]

For a listing of EPSG projection codes and their corresponding WKT representations, see http://www.opengis.org/techno/interop/EPSG2WKT.TXT. For a discussion of WKT in general, see the OpenGIS "Coordinate Transformation Services Implementation Specification" at http://www.opengis.org/techno/specs.htm.

PROJ4TEXT

PostGIS uses the Proj4 library to provide coordinate transformation capabilities. The PROJ4TEXT column contains the Proj4 coordinate definition string for a particular SRID. For example:

  +proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m

For more information about, see the Proj4 web site at http://www.remotesensing.org/proj. The spatial_ref_sys.sql file contains both SRTEXT and PROJ4TEXT definitions for all EPSG projections.

The GEOMETRY_COLUMNS Table

The GEOMETRY_COLUMNS table definition is as follows:

  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 NULL,
  		COORD_DIMENSION INTEGER NOT NULL, 
    SRID INTEGER NOT NULL, 
    TYPE VARCHAR(30) NOT NULL 
  )

The columns are as follows:

F_TABLE_CATALOG, F_TABLE_SCHEMA, F_TABLE_NAME

The fully qualified name of the feature table containing 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 database name is used.

F_GEOMETRY_COLUMN

The name of the geometry column in the feature table.

COORD_DIMENSION

The spatial dimension (2 or 3 dimensional) of the column.

SRID

The ID of the spatial reference system used for the coordinate geometry in this table. It is a foreign key reference to the SPATIAL_REF_SYS.

TYPE

The type of the spatial object. To restrict the spatial column to a single type, use one of: POINT, LINESTRING, POLYGON, MULTPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION. For heterogeneous (mixed-type) collections, you can use "GEOMETRY" as the type.

Note: This attribute is (probably) not part of the OpenGIS specification, but is required for ensuring type homogeneity.

Creating a Spatial Table

Creating a table with spatial data is done in two stages:

Here is an example of SQL used to create a table and add a spatial column (assuming the db is 'parks_db' and that an SRID of 128 exists already):

  CREATE TABLE PARKS ( PARK_ID int4, PARK_NAME varchar(128), PARK_DATE date, PARK_TYPE varchar(2) );
  SELECT AddGeometryColumn('parks_db', 'parks', 'park_geom', 128, 'MULTIPOLYGON', 2 );

Here is another example, using the generic "geometry" type and the undefined SRID value of -1:

  CREATE TABLE ROADS ( ROAD_ID int4, ROAD_NAME varchar(128) ); 
  SELECT AddGeometryColumn( 'roads_db', 'roads', 'roads_geom',	-1, 'GEOMETRY', 3 );
postgis-0.8.1/doc/html/x405.html0100664000077300001440000001302710000571201015712 0ustar postgisusersLoading GIS Data

Loading GIS Data

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.

Using SQL

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.

A data upload file (roads.sql for example) might look like this:

  BEGIN;
  INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (1,GeometryFromText('LINESTRING(191232 243118,191108 243242)',-1),'Jeff Rd'); 
  INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (2,GeometryFromText('LINESTRING(189141 244158,189265 244817)',-1),'Geordie Rd'); 
  INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (3,GeometryFromText('LINESTRING(192783 228138,192612 229814)',-1),'Paul St'); 
  INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (4,GeometryFromText('LINESTRING(189412 252431,189631 259122)',-1),'Graeme Ave'); 
  INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (5,GeometryFromText('LINESTRING(190131 224148,190871 228134)',-1),'Phil Tce'); 
  INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (6,GeometryFromText('LINESTRING(198231 263418,198213 268322)',-1),'Dave Cres');
  COMMIT;

The data file can be piped into PostgreSQL very easily using the "psql" SQL terminal monitor:

  psql -d [database] -f roads.sql

Using the Loader

The shp2pgsql 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:

-d

Drops the database table before creating a new table with the data in the Shape file.

-a

Appends data from the Shape file into the database table. Note that to use this option to load multiple files, the files must have the same attributes and same data types.

-c

Creates a new table and populates it from the Shape file. This is the default mode.

-D

Creates a new table and populates it from the Shape file. This uses the PostgreSQL "dump" format for the output data and is much faster to load than the default "insert" SQL format. Use this for very large data sets.

-s <SRID>

Creates and populates the geometry tables with the specified SRID.

An example session using the loader to create an input file and uploading it might look like this:

  # shp2pgsql shaperoads roadstable roadsdb > roads.sql 
  # psql -d roadsdb -f roads.sql

A conversion and upload can be done all in one step using UNIX pipes:

  # shp2pgsql shaperoads roadstable roadsdb | psql -d roadsdb
postgis-0.8.1/doc/html/x40.html0100664000077300001440000000550210000571201015624 0ustar postgisusersMore Information

More Information

postgis-0.8.1/doc/html/x446.html0100664000077300001440000001576610000571201015733 0ustar postgisusersRetrieving GIS Data

Retrieving GIS Data

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.

Using SQL

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:

  db=# SELECT id, AsText(geom) AS geom, name FROM ROADS_GEOM; 
  id | geom                                    | name 
  ---+-----------------------------------------+-----------
   1 | LINESTRING(191232 243118,191108 243242) | Jeff Rd  
   2 | LINESTRING(189141 244158,189265 244817) | Geordie Rd 
   3 | LINESTRING(192783 228138,192612 229814) | Paul St 
   4 | LINESTRING(189412 252431,189631 259122) | Graeme Ave 
   5 | LINESTRING(190131 224148,190871 228134) | Phil Tce 
   6 | LINESTRING(198231 263418,198213 268322) | Dave Cres 
   7 | LINESTRING(218421 284121,224123 241231) | Chris Way 
  (6 rows)

However, there will be times when some kind of restriction is necessary to cut down the number of fields returned. In the case of attribute-based restrictions, just use the same SQL syntax as normal with a non-spatial table. In the case of spatial restrictions, the following operators are available/useful:

&&

This operator tells whether the bounding box of one geometry overlaps the bounding box of another.

~=

This operators tests whether two geometries are geometrically identical. For example, if 'POLYGON((0 0,1 1,1 0,0 0))' is the same as 'POLYGON((0 0,1 1,1 0,0 0))' (it is).

=

This operator is a little more naive, it only tests whether the bounding boxes of to geometries are the same.

Next, you can use these operators in queries. Note that when specifying geometries and boxes on the SQL command line, you must explicitly turn the string representations into geometries by using the "GeometryFromText()" function. So, for example:

  SELECT 
    ID, NAME 
  FROM ROADS_GEOM 
  WHERE 
    GEOM ~= GeometryFromText('LINESTRING(191232 243118,191108 243242)',-1);

The above query would return the single record from the "ROADS_GEOM" table in which the geometry was equal to that value.

When using the "&&" operator, you can specify either a BOX3D as the comparison feature or a GEOMETRY. When you specify a GEOMETRY, however, its bounding box will be used for the comparison.

  SELECT 
    ID, NAME 
  FROM ROADS_GEOM 
  WHERE 
    GEOM && GeometryFromText('POLYGON((191232 243117,191232 243119,191234 243117,191232 243117))',-1);

The above query will use the bounding box of the polygon for comparison purposes.

The most common spatial query will probably be a "frame-based" query, used by client software, like data browsers and web mappers, to grab a "map frame" worth of data for display. Using a "BOX3D" object for the frame, such a query looks like this:

  SELECT 
    AsText(GEOM) AS GEOM 
  FROM ROADS_GEOM 
  WHERE 
    GEOM && GeometryFromText('BOX3D(191232 243117,191232 243119)'::box3d,-1);

Note the use of the SRID, to specify the projection of the BOX3D. The value -1 is used to indicate no specified SRID.

Using the Dumper

The pgsql2shp table dumper connects directly to the database and converts a table into a shape file. The basic syntax is:

  pgsql2shp [<options>] <database> <table>

The commandline options are:

-d

Write a 3-dimensional shape file. The default is to write a 2-dimensional shape file.

-f <filename>

Write the output to a particular filename.

-h <host>

The database host to connect to.

-p <port>

The port to connect to on the database host.

-P <password>

The password to use when connecting to the database.

-u <user>

The username to use when connecting to the database.

-g <geometry column>

In the case of tables with multiple geometry columns, the geometry column to use when writing the shape file.

postgis-0.8.1/doc/html/x511.html0100664000077300001440000001570710000571201015717 0ustar postgisusersBuilding Indexes

Building Indexes

Indexes are what make using a spatial database for large databases 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 be quickly traversed to find a particular record. PostgreSQL supports three kinds of indexes by default: B-Tree indexes, R-Tree indexes, and GiST indexes.

GiST Indexes

GiST stands for "Generalized Search Tree" and is a generalized 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 indexing.

Once a GIS data table exceeds a few thousand rows, you will want to build an index to speed up spatial searches of the data (unless all your searches are based on attributes, in which case you'll want to build a normal index on the attribute fields).

The syntax for building a GiST index on a "geometry" column is as follows:

  CREATE INDEX [indexname] ON [tablename] 
    USING GIST ( [geometryfield] GIST_GEOMETRY_OPS ); 

Building a spatial index is a computationally intensive exercise: on tables of around 1 million rows, on a 300MHz Solaris machine, we have found building a GiST index takes about 1 hour. After building an index, it is important to force PostgreSQL to collect table statistics, which are used to optimize query plans:

  VACUUM ANALYZE;

GiST indexes have two advantages over R-Tree indexes in PostgreSQL. Firstly, GiST indexes are "null safe", meaning they can index columns which include null values. Secondly, GiST indexes support the concept of "lossiness" which is important when dealing with GIS objects larger than the PostgreSQL 8K page size. 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.

Using Indexes

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 well, so sometimes searches which should use a spatial index instead default to a sequence scan of the whole table.

If you find your spatial indexes are not being used (or your attribute indexes, for that matter) there are a couple things you can do:

postgis-0.8.1/doc/html/x541.html0100664000077300001440000001064210000571201015713 0ustar postgisusersComplex Queries

Complex Queries

The raison d'etre 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.

Taking Advantage of Indexes

When constructing a query it is important to remember that only the bounding-box-based operators such as && can take advatage of the GiST spatial index. Functions such as distance() cannot use the index to optimize their operation. For example, the following query would be quite slow on a large table:

  SELECT the_geom FROM geom_table
  WHERE distance( the_geom, GeometryFromText( 'POINT(100000 200000)', -1 ) ) < 100

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 distance() calculation for each row in the table. We can avoid this by using the && operator to reduce the number of distance calculations required:

  SELECT the_geom FROM geom_table
  WHERE the_geom && 'BOX3D(90900 190900, 100100 200100)'::box3d
    AND distance( the_geom, GeometryFromText( 'POINT(100000 200000)', -1 ) ) < 100

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 distance() function. Notice that the BOX3D geometry which is used in the && operation is a 200 unit square box centered on the original point - this is our "query box". The && 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.

postgis-0.8.1/doc/html/x556.html0100664000077300001440000003151710000571201015725 0ustar postgisusersUsing Mapserver

Using Mapserver

The Minnesota Mapserver is an internet web-mapping server which conforms to the OpenGIS Web Mapping Server specification.

Basic Usage

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.

To use PostGIS with Mapserver, you will need:

Mapserver accesses PostGIS/PostgreSQL data like any other PostgreSQL client -- using libpq. This means that Mapserver can be installed on any machine with network access to the PostGIS server, as long as the system has the libpq PostgreSQL client libraries.

  1. Compile and install Mapserver, with whatever options you desire, including the "--with-postgis" configuration option.

  2. In your Mapserver map file, add a PostGIS layer. For example:

      LAYER
        CONNECTIONTYPE postgis
        NAME "widehighways"
        # Connect to a remote spatial database
        CONNECTION "user=dbuser dbname=gisdatabase host=bigserver"
        # Get the lines from the 'geom' column of the 'roads' table
        DATA "geom from roads"
        STATUS ON
        TYPE LINE
        # Of the lines in the extents, only render the wide highways
        FILTER "type = 'highway' and numlanes >= 4"
        CLASS
          # Make the superhighways brighter and 2 pixels wide
          EXPRESSION ([numlanes] >= 6)
          COLOR 255 22 22      
          SYMBOL "solid"
          SIZE 2
        END
        CLASS
          # All the rest are darker and only 1 pixel wide
          EXPRESSION ([numlanes] < 6)
          COLOR 205 92 82      
        END
      END

    In the example above, the PostGIS-specific directives are as follows:

    CONNECTIONTYPE

    For PostGIS layers, this is always "postgis".

    CONNECTION

    The database connection is governed by the a 'connection string' which is a standard set of keys and values like this (with the default values in <>):

    user=<username> password=<password> dbname=<username> hostname=<server> port=<5432>

    An empty connection string is still valid, and any of the key/value pairs can be omitted. At a minimum you will generally supply the database name and username to connect with.

    DATA

    The form of this parameter is "<column> from <tablename>" where the column is the spatial column to be rendered to the map.

    FILTER

    The filter must be a valid SQL string corresponding to the logic normally following the "WHERE" keyword in a SQL query. So, for example, to render only roads with 6 or more lanes, use a filter of "num_lanes >= 6".

  3. In your spatial database, ensure you have spatial (GiST) indexes built for any the layers you will be drawing.

      CREATE INDEX [indexname]
        ON [tablename] 
        USING GIST ( [geometrycolumn] GIST_GEOMETRY_OPS );
  4. If you will be querying your layers using Mapserver you will also need an "oid index".

    Mapserver requires unique identifiers for each spatial record when doing queries, and the PostGIS module of Mapserver uses the PostgreSQL oid 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 oid is needed.

    To build an "oid index", use the following SQL:

      CREATE INDEX [indexname] ON [tablename] ( oid );

Advanced Usage

The USING 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 DATA definition) it is more difficult for mapserver to automatically determine a unique identifier for each row and also the SRID for the table. The USING clause can provide mapserver with these two pieces of information as follows:

  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 SRID=-1"

USING UNIQUE <uniqueid>

Mapserver requires a unique id for each row in order to identify the row when doing map queries. Normally, it would use the oid as the unique identifier, but views and subselects 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 USING UNIQUE. 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.

The USING statement can also be useful even for simple DATA 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 USING 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.

Note: "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 DATA definition.

USING SRID=<srid>

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 USING SRID= option allows the correct SRID to be specified in the DATA definition.

Examples

Lets start with a simple example and work our way up. Consider the following Mapserver layer definition:

  LAYER
  	CONNECTIONTYPE postgis
  	NAME "roads"
  	CONNECTION "user=theuser password=thepass dbname=thedb host=theserver"
  	DATA "the_geom FROM roads"
  	STATUS ON
  	TYPE LINE
  	CLASS
  		COLOR 0 0 0
  	END
  END

This layer will display all the road geometries in the roads table as black lines.

Now lets say we want to show only the highways until we get zoomed in to at least a 1:100000 scale - the next two layers will acheive this effect:

  LAYER
  	CONNECTION "user=theuser password=thepass dbname=thedb host=theserver"
  	DATA "the_geom FROM roads"
  	MINSCALE 100000
  	STATUS ON
  	TYPE LINE
  	FILTER "road_type = 'highway'"
  	CLASS
  		COLOR 0 0 0
  	END
  END
  LAYER
  	CONNECTION "user=theuser password=thepass dbname=thedb host=theserver"
  	DATA "the_geom FROM roads"
  	MAXSCALE 100000
  	STATUS ON
  	TYPE LINE
  	CLASSITEM road_type
  	CLASS
  		EXPRESSION "highway"
  		SIZE 2
  		COLOR 255 0 0
  	END
  	CLASS
  		COLOR 0 0 0
  	END
  END

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 FILTER option causes only roads of type "highway" to be displayed.

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.

So, we have done a couple of interesting things using only mapserver functionality, but our DATA 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.

  LAYER
  	CONNECTION "user=theuser password=thepass dbname=thedb host=theserver"
  	DATA "the_geom FROM (SELECT roads.oid AS oid, roads.the_geom AS the_geom, road_names.name as name
  			FROM roads LEFT JOIN road_names ON roads.road_name_id = road_names.road_name_id) AS named_roads
  			USING UNIQUE oid USING SRID=-1"
  	MAXSCALE 20000
  	STATUS ON
  	TYPE ANNOTATION
  	LABELITEM name
  	CLASS
  		LABEL
  			ANGLE auto
  			SIZE 8
  			COLOR 0 192 0
  			TYPE truetype
  			FONT arial
  		END
  	END
  END

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 DATA definition.

postgis-0.8.1/doc/html/x655.html0100664000077300001440000001136410000571201015723 0ustar postgisusersJava Clients (JDBC)

Java Clients (JDBC)

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 CLASSPATH along with the "postgresql.jar" JDBC driver package.

  import java.sql.*; 
  import java.util.*; 
  import java.lang.*; 
  import org.postgis.*; 
  public class JavaGIS { 
    public static void main(String[] args) 
    { 
      java.sql.Connection conn; 
      try 
      { 
        /* 
        * Load the JDBC driver and establish a connection. 
        */  
        Class.forName("org.postgresql.Driver"); 
        String url = "jdbc:postgresql://localhost:5432/database"; 
        conn = DriverManager.getConnection(url, "postgres", ""); 
        /* 
        * Add the geometry types to the connection. Note that you 
        * must cast the connection to the pgsql-specific connection * implementation before calling the addDataType() method. 
        */
  		    ((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry");
  		    ((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d");
    		  /* 
        * Create a statement and execute a select query. 
        */ 
        Statement s = conn.createStatement(); 
        ResultSet r = s.executeQuery("select AsText(geom) as geom,id from geomtable"); 
        while( r.next() ) 
        { 
          /* 
          * Retrieve the geometry as an object then cast it to the geometry type. 
          * Print things out. 
          */ 
          PGgeometry geom = (PGgeometry)r.getObject(1); 
          int id = r.getInt(2);
  		      System.out.println("Row " + id + ":"); 
          System.out.println(geom.toString()); 
        }
    		  s.close(); 
        conn.close(); 
      } 
      catch( Exception e ) 
      { 
        e.printStackTrace(); 
      }  
    }
  }

The "PGgeometry" object is a wrapper object which contains a specific topological geometry object (subclasses of the abstract class "Geometry") depending on the type: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon.

  PGgeometry geom = (PGgeometry)r.getObject(1); 
  if( geom.getType() = Geometry.POLYGON ) 
  { 
    Polygon pl = (Polygon)geom.getGeometry();
    for( int r = 0; r < pl.numRings(); r++ ) 
    { 
      LinearRing rng = pl.getRing(r);
  		  System.out.println("Ring: " + r); 
      for( int p = 0; p < rng.numPoints(); p++ ) 
      { 
        Point pt = rng.getPoint(p); 
        System.out.println("Point: " + p);
    		  System.out.println(pt.toString()); 
      } 
    } 
  }

The JavaDoc for the extension objects provides a reference for the various data accessor functions in the geometric objects.

postgis-0.8.1/doc/html/x662.html0100664000077300001440000000366510000571201015726 0ustar postgisusers C Clients (libpq)

C Clients (libpq)

...

Text Cursors

...

Binary Cursors

...

postgis-0.8.1/doc/html/x83.html0100664000077300001440000002534410000571201015641 0ustar postgisusersPostGIS

PostGIS

The PostGIS module is a extension to the PostgreSQL backend server. As such, PostGIS 0.8.0 requires a full copy of the PostgreSQL source tree in order to compile. The PostgreSQL source code is available at http://www.postgresql.org.

PostGIS 0.8.0 can be built against PostgreSQL versions 7.1.0 to 7.4.x. Earlier versions of PostgreSQL are not supported.

  1. Before you can compile the postgis server modules, you must compile and install the PostgreSQL package.

    NOTE: if you plan to use GEOS functionality you might need to link PostgreSQL against the standard C++ library:

      LDFLAGS=-lstdc++ ./configure YOUR_OPTIONS_HERE

    This is a workaround for bogus C++ exceptions interaction with older development tools. If you experience weird problems (backend unexpectedly closed or similar things) try that.

  2. Retrieve the PostGIS source archive from http://postgis.refractions.net/postgis-0.8.0.tar.gz. Uncompress and untar the archive in the "contrib" directory of the PostgreSQL source tree.

      # cd [postgresql source tree]/contrib 
      # gzip -d -c	postgis-0.8.0.tar.gz | tar xvf -
  3. Once your PostgreSQL installation is up-to-date, enter the "postgis" directory, and edit the Makefile.

    • If you are compiling PostGIS 0.7.2 or earlier against PostgreSQL 7.2.x, you must set the USE_PG72 variable to 1. This is done automatically by newer version of postgis.

    • If want support for coordinate reprojection you must have the Proj4 library installed, set the USE_PROJ variable to 1, and eventually adjust PROJ_DIR to point to your Proj4 installation directory.

    • If want to use GEOS functionalities you must have the GEOS library installed, set the USE_GEOS variable to 1, and eventually adjust GEOS_DIR to point to your GEOS installation directory.

  4. Run the compile and install commands.

      # make 
      # make install

    All files are installed relative to the PostgreSQL install directory, [prefix].

    • Libraries are installed [prefix]/lib/contrib.

    • Important support files such as postgis.sql are installed in [prefix]/share/contrib.

    • Loader and dumber binaries are installed in [prefix]/bin.

  5. PostGIS requires the PL/pgSQL procedural language extension. Before loading the postgis.sql file, you must first enable PL/pgSQL. You should use the createlang command. The PostgreSQL 7.1 Programmer's Guide has the details if you want to this manually for some reason.

      # createlang plpgsql [yourdatabase]
  6. Now load the PostGIS object and function definitions into your database by loading the postgis.sql definitions file.

      # psql -d [yourdatabase] -f	postgis.sql

    The PostGIS server extensions are now loaded and ready to use.

  7. For a complete set of EPSG coordinate system definition identifiers, you can also load the spatial_ref_sys.sql definitions file and populate the SPATIAL_REF_SYS table.

      # psql -d [yourdatabase] -f	spatial_ref_sys.sql

Upgrading

Upgrading PostGIS can be tricky, because the underlying C libraries which support the object types and geometries may have changed between versions. To avoid problems when upgrading, you will have to dump all the tables in your database, destroy the database, create a new one, execute the new postgis.sql file, then upload your database dump:

  # pg_dump -t "*" -f dumpfile.sql yourdatabase
  # dropdb yourdatabase
  # createdb yourdatabase
  # createlang plpgsql yourdatabse
  # psql -f postgis.sql -d yourdatabase
  # psql -f dumpfile.sql -d yourdatabase
  # vacuumdb -z yourdatabase

Note: When upgrading from version 0.5 to 0.6+, all your geometries will be created with an SRID of -1. To create valid OpenGIS geometries, you will have to create a valid SRID in the SPATIAL_REF_SYS table, and then update your geometries to reference the SRID with the following SQL (with the appropriate substitutions:

  UPDATE TABLE <table> SET <geocolumn> = SetSRID(<geocolumn>,<SRID>);

Common Problems

There are several things to check when your installation or upgrade doesn't go as you expected.

  1. 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 PGSQL_SRCenvironment variable to the path to the PostgreSQL source directory. This will allow you to compile PostGIS, but the make install may not work, so be prepared to copy the PostGIS library and executable files to the appropriate locations yourself.

  2. Check that you you have installed PostgreSQL 7.1 or newer, and that you are compiling against the same version of the PostgreSQL source as the version of PostgreSQL that is running. Mix-ups can occur when your (Linux) distrubution has already installed PostgreSQL, or you have otherwise installed PostgreSQL before and forgotten about it. PostGIS will only work with PostgreSQL 7.1 or newer, and strange, unexpected error messages will result if you use an older version. To check the version of PostgreSQL which is running, connect to the database using psql and run this query:

      SELECT version();

Also check that you have made any necessary changes to the top of the Makefile. This includes:

  1. Changing the USE_PG72=0 line to USE_PG72=1 if you are using PostgreSQL 7.2 or newer. If this line is incorrect, it will result in a large number of errors being generated either when compiling, or when executing the sql statements in the postgis.sql file.

  2. If you want to be able to do coordinate reprojections, you must install the Proj.4 library on your system, set the USE_PROJ variable to 1 and the PROJ_DIR to your installation prefix in the Makefile.

  3. If you want to be able to use GEOS functions you must install the GEOS library on your system, and set the USE_GEOS to 1 and the GEOS_DIR to your installation prefix in the Makefile.

postgis-0.8.1/doc/html/x954.html0100664000077300001440000004103210000571201015720 0ustar postgisusersOther Functions

Other Functions

A &< B

The "&<" operator returns true if A's bounding box overlaps or is to the left of B's bounding box.

A &> B

The "&>" operator returns true if A's bounding box overlaps or is to the right of B's bounding box.

A << B

The "<<" operator returns true if A's bounding box is strictly to the left of B's bounding box.

A >> B

The ">>" operator returns true if A's bounding box is strictly to the right of B's bounding box.

A ~= B

The "~=" operator is the "same as" operator. It tests actual geometric equality of two features. So if A and B are the same feature, vertex-by-vertex, the operator returns true.

A @ B

The "@" operator returns true if A's bounding box is completely contained by B's bounding box.

A ~ B

The "~" operator returns true if A's bounding box completely contains B's bounding box.

A && B

The "&&" operator is the "overlaps" operator. If A's bounding boux overlaps B's bounding box the operator returns true.

area2d(geometry)

Returns the area of the geometry if it is a polygon or multi-polygon.

area(geometry)

Returns the area of the geometry if it is a polygon or multi-polygon. (same as area2(<polygon|multipolygon>)

asbinary(geometry,'NDR')

Returns the geometry in the OGC "well-known-binary" format, using little-endian encoding. This is useful in binary cursors to pull data out of the database without converting it to a string representation.

isvalid(geometry)

returns true if this geometry is valid.

asbinary(geometry,'XDR')

Returns the geometry in the OGC "well-known-binary" format, using big-endian encoding. This is useful in binary cursors to pull data out of the database without converting it to a string representation.

GeomFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

GeometryFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

PointFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

Throws an error if the WKT is not a Point

LineFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

Throws an error if the WKT is not a Line

LinestringFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

from the conformance suite

Throws an error if the WKT is not a Line

PolyFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

Throws an error if the WKT is not a Polygon

PolygonFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

from the conformance suite

Throws an error if the WKT is not a Polygon

MPointFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

Throws an error if the WKT is not a MULTIPOINT

MLineFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

Throws an error if the WKT is not a MULTILINESTRING

MPolyFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

Throws an error if the WKT is not a MULTIPOLYGON

GeomCollFromText(text,[<srid>])

Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

Throws an error if the WKT is not a GEOMETRYCOLLECTION

GeomFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

GeometryFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

PointFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

throws an error if WKB is not a POINT

LineFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

throws an error if WKB is not a LINESTRING

LinestringFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

from the conformance suite

throws an error if WKB is not a LINESTRING

PolyFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

throws an error if WKB is not a POLYGON

PolygonFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

from the conformance suite

throws an error if WKB is not a POLYGON

MPointFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

throws an error if WKB is not a MULTIPOINT

MLineFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

throws an error if WKB is not a MULTILINESTRING

MPolyFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

throws an error if WKB is not a MULTIPOLYGON

GeomCollFromWKB(text,[<srid>])

Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1.

OGC SPEC 3.2.6.2 - option SRID is from the conformance suite

throws an error if WKB is not a GEOMETRYCOLLECTION

PointOnSurface(geometry)

Return a Point guaranteed to lie on the surface

Implemented using GEOS

OGC SPEC 3.2.14.2 and 3.2.18.2 -

box3d(geometry)

Returns a BOX3D representing the maximum extents of the geometry.

collect(geometry set)

This function returns a GEOMETRYCOLLECTION object from a set of geometries. The collect() function is an "aggregate" function in the terminology of PostgreSQL. That means that it operators on lists of data, in the same way the sum() and mean() functions do. For example, "SELECT COLLECT(GEOM) FROM GEOMTABLE GROUP BY ATTRCOLUMN" will return a separate GEOMETRYCOLLECTION for each distinct value of ATTRCOLUMN.

mem_collect(geometry set)

This does the the same of collect(geometry), only more memory-friendly (uses less memory and more processor time).

distance_spheroid(point, point, spheroid)

Returns linear distance between two lat/lon points given a particular spheroid. See the explanation of spheroids given for length_spheroid(). Currently only implemented for points.

extent(geometry set)

The extent() function is an "aggregate" function in the terminology of PostgreSQL. That means that it operators on lists of data, in the same way the sum() and mean() functions do. For example, "SELECT EXTENT(GEOM) FROM GEOMTABLE" will return a BOX3D giving the maximum extend of all features in the table. Similarly, "SELECT EXTENT(GEOM) FROM GEOMTABLE GROUP BY CATEGORY" will return one extent result for each category.

find_srid(varchar,varchar,varchar)

The syntax is find_srid(<db/schema>, <table>, <column>) and the function returns the integer SRID of the specified column by searching through the GEOMETRY_COLUMNS table. If the geometry column has not been properly added with the AddGeometryColumns() function, this function will not work either.

force_collection(geometry)

Converts the geometry into a GEOMETRYCOLLECTION. This is useful for simplifying the WKB representation.

force_2d(geometry)

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).

force_3d(geometry)

Forces the geometries into a "3-dimensional mode" so that all output representations will have the X, Y and Z coordinates.

length2d(geometry)

Returns the 2-dimensional length of the geometry if it is a linestring or multi-linestring.

length(geometry)

The length of this Curve in its associated spatial reference.

synonym for length2d()

OGC SPEC 2.1.5.1

length3d(geometry)

Returns the 3-dimensional length of the geometry if it is a linestring or multi-linestring.

length_spheroid(geometry,spheroid)

Calculates the length of of a geometry on an elipsoid. This is useful if the coordinates of the geometry are in latitude/longitude and a length is desired without reprojection. The elipsoid is a separate database type and can be constructed as follows:

SPHEROID[<NAME>,<SEMI-MAJOR AXIS>,<INVERSE FLATTENING>]

Eg:

SPHEROID["GRS_1980",6378137,298.257222101]

An example calculation might look like this:

SELECT
length_spheroid(
geometry_column,
'SPHEROID["GRS_1980",6378137,298.257222101]'
)
FROM geometry_table;

length3d_spheroid(geometry,spheroid)

Calculates the length of of a geometry on an elipsoid, taking the elevation into account. This is just like length_spheroid except vertical coordinates (expressed in the same units as the spheroid axes) are used to calculate the extra distance vertical displacement adds.

max_distance(linestring,linestring)

Returns the largest distance between two line strings.

mem_size(geometry)

Returns the amount of space (in bytes) the geometry takes.

npoints(geometry)

Returns the number of points in the geometry.

nrings(geometry)

If the geometry is a polygon or multi-polygon returns the number of rings.

numb_sub_objects(geometry)

Returns the number of objects stored in the geometry. This is useful for MULTI-geometries and GEOMETRYCOLLECTIONs.

perimeter2d(geometry)

Returns the 2-dimensional perimeter of the geometry, if it is a polygon or multi-polygon.

perimeter3d(geometry)

Returns the 3-dimensional perimeter of the geometry, if it is a polygon or multi-polygon.

point_inside_circle(geometry,float,float,float)

The syntax for this functions is point_inside_circle(<geometry>,<circle_center_x>,<circle_center_y>,<radius>). Returns the true if the geometry is a point and is inside the circle. Returns false otherwise.

postgis_version()

Returns the version number of the PostGIS functions installed in this database.

summary(geometry)

Returns a text summary of the contents of the geometry.

transform(geometry,integer)

Returns a new geometry with its coordinates transformed to the SRID referenced by the integer parameter. The destination SRID must exist in the SPATIAL_REF_SYS table.

translate(geometry,float8,float8,float8)

Translates the geometry to a new location using the numeric parameters as offsets. Ie: translate(geom,X,Y,Z).

xmin(box3d) ymin(box3d) zmin(box3d)

Returns the requested minima of a bounding box.

xmax(box3d) ymax(box3d) zmax(box3d)

Returns the requested maxima of a bounding box.

simplify(geometry, tolerance)

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 isSimple)

postgis-0.8.1/doc/.cvsignore0100664000077300001440000000002007754517234015401 0ustar postgisuserspostgis-out.xml postgis-0.8.1/doc/Makefile0100664000077300001440000000046207752154102015040 0ustar postgisusersCOMMONOPTS = -f docbook -b html -e no-valid LAST_RELEASE_VERSION = 0.8 html: html/index.html postgis-out.xml: postgis.xml cat $< | sed "s/@@LAST_RELEASE_VERSION@@/$(LAST_RELEASE_VERSION)/g" > $@ html/index.html: postgis-out.xml jw $(COMMONOPTS) -o html/ $< clean: #rm -f html/*.html postgis-out.xml postgis-0.8.1/doc/postgis.xml0100664000077300001440000032715607767563327015651 0ustar postgisusers PostGIS Manual Paul Ramsey Refractions Research Inc
209 - 560 Johnson Street Victoria British Columbia Canada pramsey@refractions.net
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 basic analysis of GIS objects.
Introduction 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. Credits Dave Blasby <dblasby@refractions.net> The principal developer of PostGIS. Dave maintains the server side objects and index support, the server side analytical functions, and the Mapserver connectivity. Chris Hodgson <chodgson@refractions.net> Maintains new functions and the 7.2 index bindings. Paul Ramsey <pramsey@refractions.net> Maintains the JDBC objects and keeps track of the documentation and packaging. Jeff Lounsbury <jeffloun@refractions.net> Maintains the Shape loader/dumper. More Information The latest software, documentation and news items are available at the PostGIS web site, http://postgis.refractions.net. More information about the PostgreSQL database server is available at the PostgreSQL main site http://www.postgresql.org. More information about GiST indexing is available at the GiST development site, http://www.sai.msu.su/~megera/postgres/gist. More information about Mapserver internet map server is available at http://mapserver.gis.umn.edu.The "Simple Features for Specification for SQL" is available at the OpenGIS Consortium web site: http://www.opengis.org. Installation Requirements PostGIS has the following requirements for building and usage: A complete configured and built PostgreSQL source code tree. PostGIS uses definitions from the PostgreSQL configure/build process to conform to the particular platform you are building on. PostgreSQL is available from http://www.postgresql.org. GNU C compiler (gcc). Some other ANSI C compilers can be used to compile PostGIS, but we find far fewer problems when compiling with gcc. GNU Make (gmake or make). For many systems, GNU make is the default version of make. Check the version by invoking make -v. Other versions of make may not process the PostGIS Makefile properly. (Optional) Proj4 reprojection library. The Proj4 library is used to provide coordinate reprojection support within PostGIS. Proj4 is available for download from http://www.remotesensing.org/proj. PostGIS The PostGIS module is a extension to the PostgreSQL backend server. As such, PostGIS @@LAST_RELEASE_VERSION@@ requires a full copy of the PostgreSQL source tree in order to compile. The PostgreSQL source code is available at http://www.postgresql.org. PostGIS @@LAST_RELEASE_VERSION@@ can be built against PostgreSQL versions 7.1.0 to 7.4.x. Earlier versions of PostgreSQL are not supported. Before you can compile the postgis server modules, you must compile and install the PostgreSQL package. NOTE: if you plan to use GEOS functionality you might need to link PostgreSQL against the standard C++ library: LDFLAGS=-lstdc++ ./configure YOUR_OPTIONS_HERE This is a workaround for bogus C++ exceptions interaction with older development tools. If you experience weird problems (backend unexpectedly closed or similar things) try that. Retrieve the PostGIS source archive from http://postgis.refractions.net/postgis-@@LAST_RELEASE_VERSION@@.tar.gz. Uncompress and untar the archive in the "contrib" directory of the PostgreSQL source tree. # cd [postgresql source tree]/contrib # gzip -d -c postgis-@@LAST_RELEASE_VERSION@@.tar.gz | tar xvf - Once your PostgreSQL installation is up-to-date, enter the "postgis" directory, and edit the Makefile. If you are compiling PostGIS 0.7.2 or earlier against PostgreSQL 7.2.x, you must set the USE_PG72 variable to 1. This is done automatically by newer version of postgis. If want support for coordinate reprojection you must have the Proj4 library installed, set the USE_PROJ variable to 1, and eventually adjust PROJ_DIR to point to your Proj4 installation directory. If want to use GEOS functionalities you must have the GEOS library installed, set the USE_GEOS variable to 1, and eventually adjust GEOS_DIR to point to your GEOS installation directory. Run the compile and install commands. # make # make install All files are installed relative to the PostgreSQL install directory, [prefix]. Libraries are installed [prefix]/lib/contrib. Important support files such as postgis.sql are installed in [prefix]/share/contrib. Loader and dumber binaries are installed in [prefix]/bin. PostGIS requires the PL/pgSQL procedural language extension. Before loading the postgis.sql file, you must first enable PL/pgSQL. You should use the createlang command. The PostgreSQL 7.1 Programmer's Guide has the details if you want to this manually for some reason. # createlang plpgsql [yourdatabase] Now load the PostGIS object and function definitions into your database by loading the postgis.sql definitions file. # psql -d [yourdatabase] -f postgis.sql The PostGIS server extensions are now loaded and ready to use. For a complete set of EPSG coordinate system definition identifiers, you can also load the spatial_ref_sys.sql definitions file and populate the SPATIAL_REF_SYS table. # psql -d [yourdatabase] -f spatial_ref_sys.sql Upgrading Upgrading PostGIS can be tricky, because the underlying C libraries which support the object types and geometries may have changed between versions. To avoid problems when upgrading, you will have to dump all the tables in your database, destroy the database, create a new one, execute the new postgis.sql file, then upload your database dump: # pg_dump -t "*" -f dumpfile.sql yourdatabase # dropdb yourdatabase # createdb yourdatabase # createlang plpgsql yourdatabse # psql -f postgis.sql -d yourdatabase # psql -f dumpfile.sql -d yourdatabase # vacuumdb -z yourdatabase When upgrading from version 0.5 to 0.6+, all your geometries will be created with an SRID of -1. To create valid OpenGIS geometries, you will have to create a valid SRID in the SPATIAL_REF_SYS table, and then update your geometries to reference the SRID with the following SQL (with the appropriate substitutions: UPDATE TABLE <table> SET <geocolumn> = SetSRID(<geocolumn>,<SRID>); Common Problems There are several things to check when your installation or upgrade doesn't go as you expected. 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 PGSQL_SRCenvironment variable to the path to the PostgreSQL source directory. This will allow you to compile PostGIS, but the make install may not work, so be prepared to copy the PostGIS library and executable files to the appropriate locations yourself. Check that you you have installed PostgreSQL 7.1 or newer, and that you are compiling against the same version of the PostgreSQL source as the version of PostgreSQL that is running. Mix-ups can occur when your (Linux) distrubution has already installed PostgreSQL, or you have otherwise installed PostgreSQL before and forgotten about it. PostGIS will only work with PostgreSQL 7.1 or newer, and strange, unexpected error messages will result if you use an older version. To check the version of PostgreSQL which is running, connect to the database using psql and run this query: SELECT version(); Also check that you have made any necessary changes to the top of the Makefile. This includes: Changing the USE_PG72=0 line to USE_PG72=1 if you are using PostgreSQL 7.2 or newer. If this line is incorrect, it will result in a large number of errors being generated either when compiling, or when executing the sql statements in the postgis.sql file. If you want to be able to do coordinate reprojections, you must install the Proj.4 library on your system, set the USE_PROJ variable to 1 and the PROJ_DIR to your installation prefix in the Makefile. If you want to be able to use GEOS functions you must install the GEOS library on your system, and set the USE_GEOS to 1 and the GEOS_DIR to your installation prefix in the Makefile. JDBC 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. Enter the jdbc sub-directory of the PostGIS distribution. Edit the Makefile to provide the correct paths of your java compiler (JAVAC) and interpreter (JAVA). Run the make command. Copy the postgis.jar file to wherever you keep your java libraries. Loader/Dumper The data loader and dumper are built and installed automatically as part of the PostGIS build. To build and install them manually: # cd postgis-@@LAST_RELEASE_VERSION@@/loader # make # make install The loader is called shp2pgsql and converts ESRI Shape files into SQL suitable for loading in PostGIS/PostgreSQL. The dumper is called pgsql2shp and converts PostGIS tables into ESRI shape files. Frequently Asked Questions What kind of geometric objects can I store? You can store point, line, polygon, multipoint, multiline, multipolygon, and geometrycollections. These are specified in the Open GIS Well Known Text Format (with 3d extentions). How do I insert a GIS object into the database? First, you need to create a table with a column of type "geometry" to hold your GIS data. Connect to your database with psql and try the following SQL: CREATE TABLE gtest ( ID int4, NAME varchar(20) ); SELECT AddGeometryColumn('dbname','gtest','geom',-1,'LINESTRING',2); If the geometry column addition fails, you probably have not loaded the PostGIS functions and objects into this database. See the installation instructions. Then, you can insert a geometry into the table using a SQL insert statement. The GIS object itself is formatted using the OpenGIS Consortium "well-known text" format: INSERT INTO gtest (ID, NAME, GEOM) VALUES (1, 'First Geometry', GeometryFromText('LINESTRING(2 3,4 5,6 5,7 8)', -1)); For more information about other GIS objects, see the object reference. To view your GIS data in the table: SELECT id, name, AsText(geom) AS geom FROM gtest; The return value should look something like this: id | name | geom ----+----------------+----------------------------- 1 | First Geometry | LINESTRING(2 3,4 5,6 5,7 8) (1 row) How do I construct a spatial query? There are a number of spatial operators available to PostgreSQL, and several of them have been implemented by PostGIS in order to provide indexing support. In order to do a spatial query with index support, you must use the "overlap operator" (&&) which uses the following important simplifying assumption: all features shall be represented by their bounding boxes. We recognize that using bounding boxes to proxy for features is a limiting assumption, but it is an important one in providing spatial indexing capabilities. Commercial spatial databases use the same assumption -- bounding boxes are important to most spatial indexing schemes. The most important spatial operator from a user's perspective is the "&&" overlap operator, which tests whether one feature's bounding box overlaps that of another. An example of a spatial query using && is: SELECT id,name FROM GTEST WHERE GEOM && 'BOX3D(3 4,4 5)'::box3d Note that the bounding box used for querying must be explicitly declared as a box3d using the "::box3d" casting operation. How do I speed up spatial queries on large tables? Fast queries on large tables is the raison d'etre of spatial databases (along with transaction support) so having a good index in important. To build a spatial index on a table with a geometry column, use the "CREATE INDEX" function as follows: CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometrycolumn] gist_geometry_ops); The "USING GIST" option tells the server to use a GiST (Generalized Search Tree) index. The reference to "gist_geometry_ops" tells the server to use a particular set of comparison operators for building the index: the "gist_geometry_ops" are part of the PostGIS extension. For PostgreSQL version 7.1.x, you can specifically request a "lossy" index by appending WITH (ISLOSSY) to the index creation command. For PostgreSQL 7.2.x and above all GiST indexes are assumed to be lossy. Lossy indexes uses a proxy object (in the spatial case, a bounding box) for building the index. Why aren't PostgreSQL R-Tree indexes supported? 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. Our tests have shown search speed for native R-Tree and GiST to be comparable. Native PostgreSQL R-Trees have two limitations which make them undesirable for use with GIS features (note that these limitations are due to the current PostgreSQL native R-Tree implementation, not the R-Tree concept in general): R-Tree indexes in PostgreSQL cannot handle features which are larger than 8K in size. GiST indexes can, using the "lossy" trick of substituting the bounding box for the feature itself. R-Tree indexes in PostgreSQL are not "null safe", so building an index on a geometry column which contains null geometries will fail. Why should I use the AddGeometryColumn() function and all the other OpenGIS stuff? 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 not be filled in properly. However, this will cause most applications based on PostGIS to fail, and it is generally suggested that you do use AddGeometryColumn() to create geometry tables. Mapserver is one application which makes use of the geometry_columns 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. What is the best way to find all objects within a radius of another object? 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. For example, to find all objects with 100 meters of POINT(1000 1000) the following query would work well: SELECT * FROM GEOTABLE WHERE GEOM && GeometryFromText('BOX3D(900 900,1100 1100)',-1) AND Distance(GeometryFromText('POINT(1000 1000)',-1),GEOM) < 100; How do I perform a coordinate reprojection as part of a query? 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. SELECT Transform(GEOM,4269) FROM GEOTABLE; Using PostGIS GIS Objects The GIS objects supported by PostGIS are the "Simple Features" defined by the OpenGIS Consortium (OGC). Note that PostGIS currently supports the features and the representation APIs, but not the various comparison and convolution operators given in the OGC "Simple Features for SQL" specification. Examples of the text representations of the features are as follows: POINT(0 0 0) LINESTRING(0 0,1 1,1 2) POLYGON((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)) MULTIPOINT(0 0 0,1 2 1) MULTILINESTRING((0 0 0,1 1 0,1 2 1),(2 3 1,3 2 1,5 4 1)) MULTIPOLYGON(((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)),((-1 -1 0,-1 -2 0,-2 -2 0,-2 -1 0,-1 -1 0))) GEOMETRYCOLLECTION(POINT(2 3 9),LINESTRING((2 3 4,3 4 5))) Note that in the examples above there are features with both 2-dimensional and 3-dimensional coordinates. PostGIS supports both 2d and 3d coordinates -- if you describe a feature with 2D coordinates when you insert it, the database will return that feature to you with 2D coordinates when you extract it. See the sections on the force_2d() and force_3d() functions for information on converting features to a particular coordinate dimension representation. Standard versus Canonical Forms The OpenGIS specification defines two standard ways of expressing spatial objects: the Well-Known Text (WKT) form (shown in the previous section) 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 object. However, the OpenGIS specification also requires that the internal storage format of spatial objects include a spatial referencing system identifier (SRID). The SRID is required when creating spatial objects for insertion into the database. For example, a valid insert statement to create and insert a spatial object would be: INSERT INTO SPATIALTABLE ( THE_GEOM, THE_NAME ) VALUES ( GeometryFromText('POINT(-126.4 45.32)', 312), 'A Place' ) Note that the "GeometryFromText" function requires an SRID number. The "canonical form" of the spatial objects in PostgreSQL is a text representation which includes all the information necessary to construct the object. Unlike the OpenGIS standard forms, it includes the type, coordinate, and SRID information. The canonical form is the default form returned from a SELECT query. The example below shows the difference between the OGC standard and PostGIS canonical forms: db=> SELECT AsText(geom) AS OGCGeom FROM thetable; OGCGeom ------------------------------------------------- LINESTRING(-123.741378393049 48.9124018962261,-123.741587115639 48.9123981907507) (1 row) db=> SELECT geom AS PostGISGeom FROM thetable; PostGISGeom ------------------------------------------------- SRID=123;LINESTRING(-123.741378393049 48.9124018962261,-123.741587115639 48.9123981907507) (1 row) Using OpenGIS Standards 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. There are two OpenGIS meta-data tables: SPATIAL_REF_SYS and GEOMETRY_COLUMNS. The SPATIAL_REF_SYS table holds the numeric IDs and textual descriptions of coordinate systems used in the spatial database. The SPATIAL_REF_SYS Table The SPATIAL_REF_SYS table definition is as follows: CREATE TABLE SPATIAL_REF_SYS ( SRID INTEGER NOT NULL PRIMARY KEY, AUTH_NAME VARCHAR(256), AUTH_SRID INTEGER, SRTEXT VARCHAR(2048), PROJ4TEXT VARCHAR(2048) ) The SPATIAL_REF_SYS columns are as follows: SRID An integer value that uniquely identifies the Spatial Referencing System within the database. AUTH_NAME The name of the standard or standards body that is being cited for this reference system. For example, "EPSG" would be a valid AUTH_NAME. AUTH_SRID The ID of the Spatial Reference System as defined by the Authority cited in the AUTH_NAME. In the case of EPSG, this is where the EPSG projection code would go. SRTEXT The Well-Known Text representation of the Spatial Reference System. An example of a WKT SRS representation is: PROJCS["NAD83 / UTM Zone 10N", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.257222101] ], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433] ], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",-123], PARAMETER["scale_factor",0.9996], PARAMETER["false_easting",500000], PARAMETER["false_northing",0], UNIT["metre",1] ] For a listing of EPSG projection codes and their corresponding WKT representations, see http://www.opengis.org/techno/interop/EPSG2WKT.TXT. For a discussion of WKT in general, see the OpenGIS "Coordinate Transformation Services Implementation Specification" at http://www.opengis.org/techno/specs.htm. PROJ4TEXT PostGIS uses the Proj4 library to provide coordinate transformation capabilities. The PROJ4TEXT column contains the Proj4 coordinate definition string for a particular SRID. For example: +proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m For more information about, see the Proj4 web site at http://www.remotesensing.org/proj. The spatial_ref_sys.sql file contains both SRTEXT and PROJ4TEXT definitions for all EPSG projections. The GEOMETRY_COLUMNS Table The GEOMETRY_COLUMNS table definition is as follows: 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 NULL, COORD_DIMENSION INTEGER NOT NULL, SRID INTEGER NOT NULL, TYPE VARCHAR(30) NOT NULL ) The columns are as follows: F_TABLE_CATALOG, F_TABLE_SCHEMA, F_TABLE_NAME The fully qualified name of the feature table containing 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 database name is used. F_GEOMETRY_COLUMN The name of the geometry column in the feature table. COORD_DIMENSION The spatial dimension (2 or 3 dimensional) of the column. SRID The ID of the spatial reference system used for the coordinate geometry in this table. It is a foreign key reference to the SPATIAL_REF_SYS. TYPE The type of the spatial object. To restrict the spatial column to a single type, use one of: POINT, LINESTRING, POLYGON, MULTPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION. For heterogeneous (mixed-type) collections, you can use "GEOMETRY" as the type. This attribute is (probably) not part of the OpenGIS specification, but is required for ensuring type homogeneity. Creating a Spatial Table Creating a table with spatial data is done in two stages: Create a normal non-spatial table. For example: CREATE TABLE ROADS_GEOM ( ID int4, NAME varchar(25) ) Add a spatial column to the table using the OpenGIS "AddGeometryColumn" function. The syntax is: AddGeometryColumn(<db_name>, <table_name>, <column_name>, <srid>, <type>, <dimension>). For example: SELECT AddGeometryColumn('roads_db', 'roads_geom', 'geom', 423, 'LINESTRING', 2) Here is an example of SQL used to create a table and add a spatial column (assuming the db is 'parks_db' and that an SRID of 128 exists already): CREATE TABLE PARKS ( PARK_ID int4, PARK_NAME varchar(128), PARK_DATE date, PARK_TYPE varchar(2) ); SELECT AddGeometryColumn('parks_db', 'parks', 'park_geom', 128, 'MULTIPOLYGON', 2 ); Here is another example, using the generic "geometry" type and the undefined SRID value of -1: CREATE TABLE ROADS ( ROAD_ID int4, ROAD_NAME varchar(128) ); SELECT AddGeometryColumn( 'roads_db', 'roads', 'roads_geom', -1, 'GEOMETRY', 3 ); Loading GIS Data 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. Using SQL 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. A data upload file (roads.sql for example) might look like this: BEGIN; INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (1,GeometryFromText('LINESTRING(191232 243118,191108 243242)',-1),'Jeff Rd'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (2,GeometryFromText('LINESTRING(189141 244158,189265 244817)',-1),'Geordie Rd'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (3,GeometryFromText('LINESTRING(192783 228138,192612 229814)',-1),'Paul St'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (4,GeometryFromText('LINESTRING(189412 252431,189631 259122)',-1),'Graeme Ave'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (5,GeometryFromText('LINESTRING(190131 224148,190871 228134)',-1),'Phil Tce'); INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (6,GeometryFromText('LINESTRING(198231 263418,198213 268322)',-1),'Dave Cres'); COMMIT; The data file can be piped into PostgreSQL very easily using the "psql" SQL terminal monitor: psql -d [database] -f roads.sql Using the Loader The shp2pgsql 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: -d Drops the database table before creating a new table with the data in the Shape file. -a Appends data from the Shape file into the database table. Note that to use this option to load multiple files, the files must have the same attributes and same data types. -c Creates a new table and populates it from the Shape file. This is the default mode. -D Creates a new table and populates it from the Shape file. This uses the PostgreSQL "dump" format for the output data and is much faster to load than the default "insert" SQL format. Use this for very large data sets. -s <SRID> Creates and populates the geometry tables with the specified SRID. An example session using the loader to create an input file and uploading it might look like this: # shp2pgsql shaperoads roadstable roadsdb > roads.sql # psql -d roadsdb -f roads.sql A conversion and upload can be done all in one step using UNIX pipes: # shp2pgsql shaperoads roadstable roadsdb | psql -d roadsdb Retrieving GIS Data 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. Using SQL 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: db=# SELECT id, AsText(geom) AS geom, name FROM ROADS_GEOM; id | geom | name ---+-----------------------------------------+----------- 1 | LINESTRING(191232 243118,191108 243242) | Jeff Rd 2 | LINESTRING(189141 244158,189265 244817) | Geordie Rd 3 | LINESTRING(192783 228138,192612 229814) | Paul St 4 | LINESTRING(189412 252431,189631 259122) | Graeme Ave 5 | LINESTRING(190131 224148,190871 228134) | Phil Tce 6 | LINESTRING(198231 263418,198213 268322) | Dave Cres 7 | LINESTRING(218421 284121,224123 241231) | Chris Way (6 rows) However, there will be times when some kind of restriction is necessary to cut down the number of fields returned. In the case of attribute-based restrictions, just use the same SQL syntax as normal with a non-spatial table. In the case of spatial restrictions, the following operators are available/useful: && This operator tells whether the bounding box of one geometry overlaps the bounding box of another. ~= This operators tests whether two geometries are geometrically identical. For example, if 'POLYGON((0 0,1 1,1 0,0 0))' is the same as 'POLYGON((0 0,1 1,1 0,0 0))' (it is). = This operator is a little more naive, it only tests whether the bounding boxes of to geometries are the same. Next, you can use these operators in queries. Note that when specifying geometries and boxes on the SQL command line, you must explicitly turn the string representations into geometries by using the "GeometryFromText()" function. So, for example: SELECT ID, NAME FROM ROADS_GEOM WHERE GEOM ~= GeometryFromText('LINESTRING(191232 243118,191108 243242)',-1); The above query would return the single record from the "ROADS_GEOM" table in which the geometry was equal to that value. When using the "&&" operator, you can specify either a BOX3D as the comparison feature or a GEOMETRY. When you specify a GEOMETRY, however, its bounding box will be used for the comparison. SELECT ID, NAME FROM ROADS_GEOM WHERE GEOM && GeometryFromText('POLYGON((191232 243117,191232 243119,191234 243117,191232 243117))',-1); The above query will use the bounding box of the polygon for comparison purposes. The most common spatial query will probably be a "frame-based" query, used by client software, like data browsers and web mappers, to grab a "map frame" worth of data for display. Using a "BOX3D" object for the frame, such a query looks like this: SELECT AsText(GEOM) AS GEOM FROM ROADS_GEOM WHERE GEOM && GeometryFromText('BOX3D(191232 243117,191232 243119)'::box3d,-1); Note the use of the SRID, to specify the projection of the BOX3D. The value -1 is used to indicate no specified SRID. Using the Dumper The pgsql2shp table dumper connects directly to the database and converts a table into a shape file. The basic syntax is: pgsql2shp [<options>] <database> <table> The commandline options are: -d Write a 3-dimensional shape file. The default is to write a 2-dimensional shape file. -f <filename> Write the output to a particular filename. -h <host> The database host to connect to. -p <port> The port to connect to on the database host. -P <password> The password to use when connecting to the database. -u <user> The username to use when connecting to the database. -g <geometry column> In the case of tables with multiple geometry columns, the geometry column to use when writing the shape file. Building Indexes Indexes are what make using a spatial database for large databases 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 be quickly traversed to find a particular record. PostgreSQL supports three kinds of indexes by default: B-Tree indexes, R-Tree indexes, and GiST indexes. B-Trees are used for data which can be sorted along one axis; for example, numbers, letters, dates. GIS data cannot be rationally sorted along one axis (which is greater, (0,0) or (0,1) or (1,0)?) so B-Tree indexing is of no use for us. R-Trees break up data into rectangles, and sub-rectangles, and sub-sub rectangles, etc. R-Trees are used by some spatial databases to index GIS data, but the PostgreSQL R-Tree implementation is not as robust as the GiST implementation. GiST (Generalized Search Trees) indexes break up data into "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. GiST Indexes GiST stands for "Generalized Search Tree" and is a generalized 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 indexing. Once a GIS data table exceeds a few thousand rows, you will want to build an index to speed up spatial searches of the data (unless all your searches are based on attributes, in which case you'll want to build a normal index on the attribute fields). The syntax for building a GiST index on a "geometry" column is as follows: CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometryfield] GIST_GEOMETRY_OPS ); Building a spatial index is a computationally intensive exercise: on tables of around 1 million rows, on a 300MHz Solaris machine, we have found building a GiST index takes about 1 hour. After building an index, it is important to force PostgreSQL to collect table statistics, which are used to optimize query plans: VACUUM ANALYZE; GiST indexes have two advantages over R-Tree indexes in PostgreSQL. Firstly, GiST indexes are "null safe", meaning they can index columns which include null values. Secondly, GiST indexes support the concept of "lossiness" which is important when dealing with GIS objects larger than the PostgreSQL 8K page size. 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. Using Indexes 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 well, so sometimes searches which should use a spatial index instead default to a sequence scan of the whole table. If you find your spatial indexes are not being used (or your attribute indexes, for that matter) there are a couple things you can do: Firstly, make sure you run the "VACUUM ANALYZE [tablename]" command on the tables you are having problems with. "VACUUM ANALYZE" gathers statistics about the number and distributions of values in a table, to provide the query planner with better information to make decisions around index usage. You should regularly vacuum your databases anyways -- many PostgreSQL DBAs have "VACUUM" run as an off-peak cron job on a regular basis. If vacuuming does not work, you can force the planner to use the index information by using the "SET ENABLE_SEQSCAN=OFF" 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 "ENABLE_SEQSCAN" back on, so that other queries will utilize the planner as normal. As of version 0.6, it should not be necessary to force the planner to use the index with "ENABLE_SEQSCAN". Complex Queries The raison d'etre 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. Taking Advantage of Indexes When constructing a query it is important to remember that only the bounding-box-based operators such as && can take advatage of the GiST spatial index. Functions such as distance() cannot use the index to optimize their operation. For example, the following query would be quite slow on a large table: SELECT the_geom FROM geom_table WHERE distance( the_geom, GeometryFromText( 'POINT(100000 200000)', -1 ) ) < 100 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 distance() calculation for each row in the table. We can avoid this by using the && operator to reduce the number of distance calculations required: SELECT the_geom FROM geom_table WHERE the_geom && 'BOX3D(90900 190900, 100100 200100)'::box3d AND distance( the_geom, GeometryFromText( 'POINT(100000 200000)', -1 ) ) < 100 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 distance() function. Notice that the BOX3D geometry which is used in the && operation is a 200 unit square box centered on the original point - this is our "query box". The && 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. Using Mapserver The Minnesota Mapserver is an internet web-mapping server which conforms to the OpenGIS Web Mapping Server specification. The Mapserver homepage is at http://mapserver.gis.umn.edu. The OpenGIS Web Map Specification is at http://www.opengis.org/techno/specs/01-047r2.pdf. Basic Usage 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. To use PostGIS with Mapserver, you will need: Version 0.6 or newer of PostGIS. Version 3.5 or newer of Mapserver. Mapserver accesses PostGIS/PostgreSQL data like any other PostgreSQL client -- using libpq. This means that Mapserver can be installed on any machine with network access to the PostGIS server, as long as the system has the libpq PostgreSQL client libraries. Compile and install Mapserver, with whatever options you desire, including the "--with-postgis" configuration option. In your Mapserver map file, add a PostGIS layer. For example: LAYER CONNECTIONTYPE postgis NAME "widehighways" # Connect to a remote spatial database CONNECTION "user=dbuser dbname=gisdatabase host=bigserver" # Get the lines from the 'geom' column of the 'roads' table DATA "geom from roads" STATUS ON TYPE LINE # Of the lines in the extents, only render the wide highways FILTER "type = 'highway' and numlanes >= 4" CLASS # Make the superhighways brighter and 2 pixels wide EXPRESSION ([numlanes] >= 6) COLOR 255 22 22 SYMBOL "solid" SIZE 2 END CLASS # All the rest are darker and only 1 pixel wide EXPRESSION ([numlanes] < 6) COLOR 205 92 82 END END In the example above, the PostGIS-specific directives are as follows: CONNECTIONTYPE For PostGIS layers, this is always "postgis". CONNECTION The database connection is governed by the a 'connection string' which is a standard set of keys and values like this (with the default values in <>): user=<username> password=<password> dbname=<username> hostname=<server> port=<5432> An empty connection string is still valid, and any of the key/value pairs can be omitted. At a minimum you will generally supply the database name and username to connect with. DATA The form of this parameter is "<column> from <tablename>" where the column is the spatial column to be rendered to the map. FILTER The filter must be a valid SQL string corresponding to the logic normally following the "WHERE" keyword in a SQL query. So, for example, to render only roads with 6 or more lanes, use a filter of "num_lanes >= 6". In your spatial database, ensure you have spatial (GiST) indexes built for any the layers you will be drawing. CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometrycolumn] GIST_GEOMETRY_OPS ); If you will be querying your layers using Mapserver you will also need an "oid index". Mapserver requires unique identifiers for each spatial record when doing queries, and the PostGIS module of Mapserver uses the PostgreSQL oid 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 oid is needed. To build an "oid index", use the following SQL: CREATE INDEX [indexname] ON [tablename] ( oid ); Advanced Usage The USING 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 DATA definition) it is more difficult for mapserver to automatically determine a unique identifier for each row and also the SRID for the table. The USING clause can provide mapserver with these two pieces of information as follows: 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 SRID=-1" USING UNIQUE <uniqueid> Mapserver requires a unique id for each row in order to identify the row when doing map queries. Normally, it would use the oid as the unique identifier, but views and subselects 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 USING UNIQUE. 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. The USING statement can also be useful even for simple DATA 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 USING 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. "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 DATA definition. USING SRID=<srid> 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 USING SRID= option allows the correct SRID to be specified in the DATA definition. Examples Lets start with a simple example and work our way up. Consider the following Mapserver layer definition: LAYER CONNECTIONTYPE postgis NAME "roads" CONNECTION "user=theuser password=thepass dbname=thedb host=theserver" DATA "the_geom FROM roads" STATUS ON TYPE LINE CLASS COLOR 0 0 0 END END This layer will display all the road geometries in the roads table as black lines. Now lets say we want to show only the highways until we get zoomed in to at least a 1:100000 scale - the next two layers will acheive this effect: LAYER CONNECTION "user=theuser password=thepass dbname=thedb host=theserver" DATA "the_geom FROM roads" MINSCALE 100000 STATUS ON TYPE LINE FILTER "road_type = 'highway'" CLASS COLOR 0 0 0 END END LAYER CONNECTION "user=theuser password=thepass dbname=thedb host=theserver" DATA "the_geom FROM roads" MAXSCALE 100000 STATUS ON TYPE LINE CLASSITEM road_type CLASS EXPRESSION "highway" SIZE 2 COLOR 255 0 0 END CLASS COLOR 0 0 0 END END 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 FILTER option causes only roads of type "highway" to be displayed. 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. So, we have done a couple of interesting things using only mapserver functionality, but our DATA 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. LAYER CONNECTION "user=theuser password=thepass dbname=thedb host=theserver" DATA "the_geom FROM (SELECT roads.oid AS oid, roads.the_geom AS the_geom, road_names.name as name FROM roads LEFT JOIN road_names ON roads.road_name_id = road_names.road_name_id) AS named_roads USING UNIQUE oid USING SRID=-1" MAXSCALE 20000 STATUS ON TYPE ANNOTATION LABELITEM name CLASS LABEL ANGLE auto SIZE 8 COLOR 0 192 0 TYPE truetype FONT arial END END END 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 DATA definition. Java Clients (JDBC) 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 CLASSPATH along with the "postgresql.jar" JDBC driver package. import java.sql.*; import java.util.*; import java.lang.*; import org.postgis.*; public class JavaGIS { public static void main(String[] args) { java.sql.Connection conn; try { /* * Load the JDBC driver and establish a connection. */ Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://localhost:5432/database"; conn = DriverManager.getConnection(url, "postgres", ""); /* * Add the geometry types to the connection. Note that you * must cast the connection to the pgsql-specific connection * implementation before calling the addDataType() method. */ ((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry"); ((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d"); /* * Create a statement and execute a select query. */ Statement s = conn.createStatement(); ResultSet r = s.executeQuery("select AsText(geom) as geom,id from geomtable"); while( r.next() ) { /* * Retrieve the geometry as an object then cast it to the geometry type. * Print things out. */ PGgeometry geom = (PGgeometry)r.getObject(1); int id = r.getInt(2); System.out.println("Row " + id + ":"); System.out.println(geom.toString()); } s.close(); conn.close(); } catch( Exception e ) { e.printStackTrace(); } } } The "PGgeometry" object is a wrapper object which contains a specific topological geometry object (subclasses of the abstract class "Geometry") depending on the type: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon. PGgeometry geom = (PGgeometry)r.getObject(1); if( geom.getType() = Geometry.POLYGON ) { Polygon pl = (Polygon)geom.getGeometry(); for( int r = 0; r < pl.numRings(); r++ ) { LinearRing rng = pl.getRing(r); System.out.println("Ring: " + r); for( int p = 0; p < rng.numPoints(); p++ ) { Point pt = rng.getPoint(p); System.out.println("Point: " + p); System.out.println(pt.toString()); } } } The JavaDoc for the extension objects provides a reference for the various data accessor functions in the geometric objects. C Clients (libpq) ... Text Cursors ... Binary Cursors ... PostGIS Reference 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. OpenGIS Functions AddGeometryColumn(varchar, varchar, varchar, integer, varchar, integer) Syntax: AddGeometryColumn(<db_name>, <table_name>, <column_name>, <srid>, <type>, <dimension>). Adds a geometry column to an existing table of attributes. The dbname is the name of the database instance. The srid must be an integer value reference to an entry in the SPATIAL_REF_SYS table. The type must be an uppercase string corresponding to the geometry type, eg, 'POLYGON' or 'MULTILINESTRING'. DropGeometryColumn(varchar, varchar, varchar) Syntax: DropGeometryColumn(<db_name>, <table_name>, <column_name>). Remove a geometry column from a spatial table. AsBinary(geometry) 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 binary cursors to pull data out of the database without converting it to a string representation. OGC SPEC s2.1.1.1 - also see asBinary(<geometry>,'XDR') and asBinary(<geometry>,'NDR') Dimension(geometry) The inherent dimension of this Geometry object, which must be less than or equal to the coordinate dimension. OGC SPEC s2.1.1.1 - returns 0 for points, 1 for lines, 2 for polygons, and the largest dimension of the components of a GEOMETRYCOLLECTION. select dimension('GEOMETRYCOLLECTION(LINESTRING(1 1,0 0),POINT(0 0)'); dimension ----------- 1 isEmpty(geometry) Returns 1 (TRUE) if this Geometry is the empty geometry . If true, then this Geometry represents the empty point set - i.e. GEOMETRYCOLLECTION(EMPTY). OGC SPEC s2.1.1.1 isSimple(geometry) Returns 1 (TRUE) if this Geometry has no anomalous geometric points, such as self intersection or self tangency. Performed by the GEOS module OGC SPEC s2.1.1.1 boundary(geometry) Returns the closure of the combinatorial boundary of this Geometry. The combinatorial boundary is defined as described in section 3.12.3.2 of the OGC SPEC. Because the result of this function is a closure, and hence topologically closed, the resulting boundary can be represented using representational geometry primitives as discussed in the OGC SPEC, section 3.12.2. Performed by the GEOS module OGC SPEC s2.1.1.1 equals(geometry) Returns 1 (TRUE) if this Geometry is "spatially equal" to anotherGeometry. Use this for a 'better' answer than '='. equals ('LINESTRING(0 0, 10 10)','LINESTRING(0 0, 5 5, 10 10)') is true. Performed by the GEOS module OGC SPEC s2.1.1.1 disjoint(geometry,geometry) Returns 1 (TRUE) if this Geometry is "spatially disjoint" from anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is the "allowable" version that returns a boolean, not an integer. OGC SPEC s2.1.1.1 //s2.1.13.3 - a.Relate(b, 'FF*FF****') intersects(geometry,geometry) Returns 1 (TRUE) if this Geometry "spatially intersects" anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is the "allowable" version that returns a boolean, not an integer. OGC SPEC s2.1.1.1 //s2.1.13.3 - Intersects(g1, g2 ) --> Not (Disjoint(g1, g2 )) touches(geometry,geometry) Returns 1 (TRUE) if this Geometry "spatially touches" anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is the "allowable" version that returns a boolean, not an integer. OGC SPEC s2.1.1.1 // s2.1.13.3- a.Touches(b) -> (I(a) intersection I(b) = {empty set} ) and (a intersection b) not empty crosses(geometry,geometry) Returns 1 (TRUE) if this Geometry "spatially crosses" anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is the "allowable" version that returns a boolean, not an integer. OGC SPEC s2.1.1.1 // s2.1.13.3 - a.Relate(b, 'T*T******') within(geometry,geometry) Returns 1 (TRUE) if this Geometry is "spatially within" anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is the "allowable" version that returns a boolean, not an integer. OGC SPEC s2.1.1.1 // s2.1.13.3 - a.Relate(b, 'T*F**F***') overlaps(geometry,geometry) Returns 1 (TRUE) if this Geometry is "spatially overlapping" anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is the "allowable" version that returns a boolean, not an integer. OGC SPEC s2.1.1.1 // s2.1.13.3 contains(geometry,geometry) Returns 1 (TRUE) if this Geometry is "spatially contains" anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is the "allowable" version that returns a boolean, not an integer. OGC SPEC s2.1.1.1 // s2.1.13.3 - same as within(geometry,geometry) intersects(geometry,geometry) Returns 1 (TRUE) if this Geometry is "spatially intersects" anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is the "allowable" version that returns a boolean, not an integer. OGC SPEC s2.1.1.1 // s2.1.13.3 - NOT disjoint(geometry,geometry) relate(geometry,geometry, intersectionPatternMatrix) Returns 1 (TRUE) if this Geometry is spatially related to anotherGeometry, by testing for intersections between the Interior, Boundary and Exterior of the two geometries as specified by the values in the intersectionPatternMatrix. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is the "allowable" version that returns a boolean, not an integer. OGC SPEC s2.1.1.1 // s2.1.13.3 relate(geometry,geometry) returns the DE-9IM (dimensionally extended nine-intersection matrix) Performed by the GEOS module Do not call with a GeometryCollection as an argument not in OGC spec, but implied. see s2.1.13.2 buffer(geometry,double) Returns a geometry that represents all points whose distance from this Geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this Geometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument OGC SPEC s2.1.1.1 convexhull(geometry) Returns a geometry that represents the convex hull of this Geometry. Performed by the GEOS module OGC SPEC s2.1.1.1 intersection(geometry,geometry) Returns a geometry that represents the point set intersection of this Geometry with anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument OGC SPEC s2.1.1.1 GeomUnion(geometry,geometry) Returns a geometry that represents the point set union of this Geometry with anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument NOTE: this is renamed from "union" because union is an SQL reserved word OGC SPEC s2.1.1.1 GeomUnion(geometry set) Returns a geometry that represents the point set union of this all Geometries in given set. Performed by the GEOS module Do not call with a GeometryCollection in the argument set Not explicitly defined in OGC SPEC memGeomUnion(geometry set) Same as the above, only memory-friendly (uses less memory and more processor time). difference(geometry,geometry) Returns a geometry that represents the point set difference of this Geometry with anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument OGC SPEC s2.1.1.1 difference(geometry,geometry) Returns a geometry that represents the point set symmetric difference of this Geometry with anotherGeometry. Performed by the GEOS module Do not call with a GeometryCollection as an argument OGC SPEC s2.1.1.1 Envelope(geometry) Returns a POLYGON representing the bounding box of the geometry. OGC SPEC s2.1.1.1 - The minimum bounding box for this Geometry, returned as a Geometry. The polygon is defined by the corner points of the bounding box ((MINX, MINY), (MAXX, MINY), (MAXX, MAXY), (MINX, MAXY), (MINX, MINY)). NOTE:PostGIS will add a Zmin/Zmax coordinate as well. GeometryType(geometry) Returns the type of the geometry as a string. Eg: 'LINESTRING', 'POLYGON', 'MULTIPOINT', etc. OGC SPEC s2.1.1.1 - Returns the name of the instantiable subtype of Geometry of which this Geometry instance is a member. The name of the instantiable subtype of Geometry is returned as a string. X(geometry) Find and return the X coordinate of the first point in the geometry. Return NULL if there is no point in the geometry. Y(geometry) Find and return the Y coordinate of the first point in the geometry. Return NULL if there is no point in the geometry. Z(geometry) Find and return the Z coordinate of the first point in the geometry. Return NULL if there is no point in the geometry. NumPoints(geometry) Find and return the number of points in the first linestring in the geometry. Return NULL if there is no linestring in the geometry. PointN(geometry,integer) Return the N'th point in the first linestring in the geometry. Return NULL if there is no linestring in the geometry. ExteriorRing(geometry) Return the exterior ring of the first polygon in the geometry. Return NULL if there is no polygon in the geometry. NumInteriorRings(geometry) Return the number of interior rings of the first polygon in the geometry. Return NULL if there is no polygon in the geometry. InteriorRingN(geometry,integer) Return the N'th interior ring of the first polygon in the geometry. Return NULL if there is no polygon in the geometry. IsClosed(geometry) Returns true of the geometry start and end points are coincident. IsRing(geometry) Returns 1 (TRUE) if this Curve is closed (StartPoint ( ) = EndPoint ( )) and this Curve is simple (does not pass through the same point more than once). performed by GEOS OGC spec 2.1.5.1 NumGeometries(geometry) If geometry is a GEOMETRYCOLLECTION (or MULTI*) return the number of geometries, otherwise return NULL. GeometryN(geometry,int) Return the N'th geometry if the geometry is a GEOMETRYCOLLECTION, MULTIPOINT, MULTILINESTRING or MULTIPOLYGON. Otherwise, return NULL. 0 is 1st geometry Distance(geometry,geometry) Return the cartesian distance between two geometries in projected units. AsText(geometry) Return the Well-Known Text representation of the geometry. For example: POLYGON(0 0,0 1,1 1,1 0,0 0) OGC SPEC s2.1.1.1 SRID(geometry) Returns the integer SRID number of the spatial reference system of the geometry. OGC SPEC s2.1.1.1 GeometryFromText(varchar, integer) Syntax: GeometryFromText(<geometry>,<SRID>) Convert a Well-Known Text representation of a geometry into a geometry object. GeomFromText(varchar, integer) As above. A synonym for GeometryFromText. SetSRID(geometry) Set the SRID on a geometry to a particular integer value. Useful in constructing bounding boxes for queries. EndPoint(geometry) Returns the last point of the geometry as a point. StartPoint(geometry) Returns the first point of the geometry as a point. Centroid(geometry) Returns the centroid of the geometry as a point. Computation will be more accurate if performed by the GEOS module (enabled at compile time). Other Functions A &< B The "&<" operator returns true if A's bounding box overlaps or is to the left of B's bounding box. A &> B The "&>" operator returns true if A's bounding box overlaps or is to the right of B's bounding box. A << B The "<<" operator returns true if A's bounding box is strictly to the left of B's bounding box. A >> B The ">>" operator returns true if A's bounding box is strictly to the right of B's bounding box. A ~= B The "~=" operator is the "same as" operator. It tests actual geometric equality of two features. So if A and B are the same feature, vertex-by-vertex, the operator returns true. A @ B The "@" operator returns true if A's bounding box is completely contained by B's bounding box. A ~ B The "~" operator returns true if A's bounding box completely contains B's bounding box. A && B The "&&" operator is the "overlaps" operator. If A's bounding boux overlaps B's bounding box the operator returns true. area2d(geometry) Returns the area of the geometry if it is a polygon or multi-polygon. area(geometry) Returns the area of the geometry if it is a polygon or multi-polygon. (same as area2(<polygon|multipolygon>) asbinary(geometry,'NDR') Returns the geometry in the OGC "well-known-binary" format, using little-endian encoding. This is useful in binary cursors to pull data out of the database without converting it to a string representation. isvalid(geometry) returns true if this geometry is valid. asbinary(geometry,'XDR') Returns the geometry in the OGC "well-known-binary" format, using big-endian encoding. This is useful in binary cursors to pull data out of the database without converting it to a string representation. GeomFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite GeometryFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite PointFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite Throws an error if the WKT is not a Point LineFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite Throws an error if the WKT is not a Line LinestringFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. from the conformance suite Throws an error if the WKT is not a Line PolyFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite Throws an error if the WKT is not a Polygon PolygonFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. from the conformance suite Throws an error if the WKT is not a Polygon MPointFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite Throws an error if the WKT is not a MULTIPOINT MLineFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite Throws an error if the WKT is not a MULTILINESTRING MPolyFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite Throws an error if the WKT is not a MULTIPOLYGON GeomCollFromText(text,[<srid>]) Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite Throws an error if the WKT is not a GEOMETRYCOLLECTION GeomFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite GeometryFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite PointFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite throws an error if WKB is not a POINT LineFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite throws an error if WKB is not a LINESTRING LinestringFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. from the conformance suite throws an error if WKB is not a LINESTRING PolyFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite throws an error if WKB is not a POLYGON PolygonFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. from the conformance suite throws an error if WKB is not a POLYGON MPointFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite throws an error if WKB is not a MULTIPOINT MLineFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite throws an error if WKB is not a MULTILINESTRING MPolyFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite throws an error if WKB is not a MULTIPOLYGON GeomCollFromWKB(text,[<srid>]) Makes a Geometry from WKB with the given SRID. If SRID is not give, it defaults to -1. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite throws an error if WKB is not a GEOMETRYCOLLECTION PointOnSurface(geometry) Return a Point guaranteed to lie on the surface Implemented using GEOS OGC SPEC 3.2.14.2 and 3.2.18.2 - box3d(geometry) Returns a BOX3D representing the maximum extents of the geometry. collect(geometry set) This function returns a GEOMETRYCOLLECTION object from a set of geometries. The collect() function is an "aggregate" function in the terminology of PostgreSQL. That means that it operators on lists of data, in the same way the sum() and mean() functions do. For example, "SELECT COLLECT(GEOM) FROM GEOMTABLE GROUP BY ATTRCOLUMN" will return a separate GEOMETRYCOLLECTION for each distinct value of ATTRCOLUMN. mem_collect(geometry set) This does the the same of collect(geometry), only more memory-friendly (uses less memory and more processor time). distance_spheroid(point, point, spheroid) Returns linear distance between two lat/lon points given a particular spheroid. See the explanation of spheroids given for length_spheroid(). Currently only implemented for points. extent(geometry set) The extent() function is an "aggregate" function in the terminology of PostgreSQL. That means that it operators on lists of data, in the same way the sum() and mean() functions do. For example, "SELECT EXTENT(GEOM) FROM GEOMTABLE" will return a BOX3D giving the maximum extend of all features in the table. Similarly, "SELECT EXTENT(GEOM) FROM GEOMTABLE GROUP BY CATEGORY" will return one extent result for each category. find_srid(varchar,varchar,varchar)The syntax is find_srid(<db/schema>, <table>, <column>) and the function returns the integer SRID of the specified column by searching through the GEOMETRY_COLUMNS table. If the geometry column has not been properly added with the AddGeometryColumns() function, this function will not work either. force_collection(geometry) Converts the geometry into a GEOMETRYCOLLECTION. This is useful for simplifying the WKB representation. force_2d(geometry) 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). force_3d(geometry) Forces the geometries into a "3-dimensional mode" so that all output representations will have the X, Y and Z coordinates. length2d(geometry) Returns the 2-dimensional length of the geometry if it is a linestring or multi-linestring. length(geometry) The length of this Curve in its associated spatial reference. synonym for length2d() OGC SPEC 2.1.5.1 length3d(geometry) Returns the 3-dimensional length of the geometry if it is a linestring or multi-linestring. length_spheroid(geometry,spheroid) Calculates the length of of a geometry on an elipsoid. This is useful if the coordinates of the geometry are in latitude/longitude and a length is desired without reprojection. The elipsoid is a separate database type and can be constructed as follows: SPHEROID[<NAME>,<SEMI-MAJOR AXIS>,<INVERSE FLATTENING>] Eg: SPHEROID["GRS_1980",6378137,298.257222101] An example calculation might look like this: SELECT length_spheroid( geometry_column, 'SPHEROID["GRS_1980",6378137,298.257222101]' ) FROM geometry_table; length3d_spheroid(geometry,spheroid) Calculates the length of of a geometry on an elipsoid, taking the elevation into account. This is just like length_spheroid except vertical coordinates (expressed in the same units as the spheroid axes) are used to calculate the extra distance vertical displacement adds. max_distance(linestring,linestring) Returns the largest distance between two line strings. mem_size(geometry) Returns the amount of space (in bytes) the geometry takes. npoints(geometry) Returns the number of points in the geometry. nrings(geometry) If the geometry is a polygon or multi-polygon returns the number of rings. numb_sub_objects(geometry) Returns the number of objects stored in the geometry. This is useful for MULTI-geometries and GEOMETRYCOLLECTIONs. perimeter2d(geometry) Returns the 2-dimensional perimeter of the geometry, if it is a polygon or multi-polygon. perimeter3d(geometry) Returns the 3-dimensional perimeter of the geometry, if it is a polygon or multi-polygon. point_inside_circle(geometry,float,float,float) The syntax for this functions is point_inside_circle(<geometry>,<circle_center_x>,<circle_center_y>,<radius>). Returns the true if the geometry is a point and is inside the circle. Returns false otherwise. postgis_version() Returns the version number of the PostGIS functions installed in this database. summary(geometry) Returns a text summary of the contents of the geometry. transform(geometry,integer) Returns a new geometry with its coordinates transformed to the SRID referenced by the integer parameter. The destination SRID must exist in the SPATIAL_REF_SYS table. translate(geometry,float8,float8,float8) Translates the geometry to a new location using the numeric parameters as offsets. Ie: translate(geom,X,Y,Z). xmin(box3d) ymin(box3d) zmin(box3d) Returns the requested minima of a bounding box. xmax(box3d) ymax(box3d) zmax(box3d) Returns the requested maxima of a bounding box. simplify(geometry, tolerance) 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 isSimple)
postgis-0.8.1/doc/postgis.pdf0100664000077300001440000031021010000571265015547 0ustar postgisusers%PDF-1.2 %Çì¢ 4 0 obj <> stream xœMÍn1 „ïy éaMœ_+¡ª‡Jò »HTÝV8ôíkg¡,}ÏL,X}·¹ŸÌÉœ€»ý¯Õ,7 \ÀÌ–  A×$àˆÐHÌèÔiñùR¿ EL²®Ãâ÷|y{ß*+ sdžñGÿ£,È•›ÉµÿV¢9bÉ1:ÍéŠd’\uEJ&®†ãeTë‹¿;î”d´™ùý÷ðËè(†æ—=úæçœF‹l.,¿óYmEcz˜oúé<* òSÀªÂÚ¬Í?ÕJéendstream endobj 5 0 obj 209 endobj 3 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R6 6 0 R >> >> /Contents 4 0 R >> endobj 8 0 obj <> stream xœmTÁn£0½ó>¦ÒâÚ ¾®TE•v¥M±œ†*@Šíæï×p•*ÄËÌ›yof ˜"â~áÙôÉgò‰(`ó£éÑÏ:yÞs$°àÏQ}J(J!•—q‘ã…PZDÖLêQоZÏýÒ¤9sÂã»ë†Ö§”˜ò°È~µÅºÚJÿg(ø| Ðå݆ÆMWÏŠo¤’õ²¥ö«’1Læc¶Ë}×þö쇥X|Oajë·fÝÂõÓ6†öR£]²Kþ1fGÔendstream endobj 9 0 obj 553 endobj 7 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R10 10 0 R /R6 6 0 R >> >> /Contents 8 0 R >> endobj 12 0 obj <> stream xœí]SÛ8†Ïù9ì ,[þ:,)íÐiß–ìÌÎt 1Ýì&ä£Óý÷¯-ËX¶Ep>ºûˆÞÓƒ‚"®ÐÊÑ}Y’%‡ñSüQßÎON\–UÝÎç㓳Q0pø‘?ßðÁ©¬29 ƒAøÌqãù«ñoã¿N¸Ãb7ysÃ8œæ7*ªsVTÌëøq,JÂe¶^Êß&Ôßi²¹]OYñ‚2ñø‚üy—‰-ßùnóÛü— ;%Q£$ÇÇA â8¼'èp¢Ý™ÐH^ÇïQòkpö¸î~B+Q¿‚Zÿ‹ù œmË›û`HûSµÏÿ«-Îñ9â×ÎKbNõʯyñu®|NSù¢8ÿ`pÊ}æ²+¥/÷;¯ÖÆe:™–Öè9Ìó[zgè5 l¶ƒ9¶p[…c$/µþ¦öó 05p`jv˜š2³0737÷5YÎ\Y­afËràïqxîn±œ'Õ`œˆ™¶zî÷ЪáðB©s²cysCGÀ!Ä¡¢TÇÕ‘Î\¡àžÒŸåî‘×+å¤5W¸Z'³™n#Âku;fëž=†£öƒ¼}ƒþ$†£áØÓÎð?p¨s¨xÆÑüÏ-¾î1qèš&GéÃfºLçÕš3?d!7„1Ð{¦ãñäØÓÎ0p¨s¨˜ÆqÇ0çš&à>/Vëw—×òÇ}­üÉ<†™ˆI5¤Ë¶žØŽåÍ ÷‡‡ŠóPaÛ½Ÿ^Û½Êñ%W°È«,ëËý·e2™fߊW„k›oÓ]ìt´ðƒl@6Àl@6ÀlØ(žA6^é†ÛÕáb>W»Ä̯ǀ–‹›Y:_©Üö§>aM§ó"Ô±bº)Œ‡‡JúQa-…E™Â†éOVkL·¼s>”4Ÿy¼ýúÞÿ,ÞÒ±sɯÁÁPŠm]º Ë›!y¢Âø)4$NÈj ‰û°H&éòìÍf~ŸÊÍ$Ÿ…~£¯à,6¾õs!L_¨q -á¶ t‚¯ÀWÀ¯P`ÍWüâë­Oµ—O5•CP§Úß–û_;L¨‚ôa“fëÙ?¯çõêoY+Ð6ÃN'²(ÿU/sµIWųñrâHxÝ-ÃeŸ€OPë¥àð plàPÉq*Œ£ùDP|Ýò‡r)‰èÄ—•Z±êÚ Ÿ‹_¨y$íÑ"ÎüήËWûBþSC¢Æ±ÁØ`lGƒÀØÀ±‘7¶¸øzë¾6n1r3. ΰ³31ñhpŸnþJoÕ1œ…±AØöÈt:}á‹°XÓ¿ ¡Ô•ÚÀ±¼¹!OàâP‘*ŒãÊ“ñÉ©B– j_¯“l’,å ˜ÊÅ=å ß‹ñx²mº\m¤@¹®Vi˜d‹lz›Ìde·àªžæmQâëÌb9¯NøÌn<;_bÔ.pD"Dˆ½"ï·#mŨ0í²¦Ï˜¸õýö}š©ûpáh½}6åº ÞݤÏýîøìÿðÚÀ±¼¹×àâP‰I*ŒíÔꈧÌâÀa~ܾ3î»5þSž:ÈÕ§ÿZ®]ày«‚×Å÷ãõ»/_ø:ºxûõúwØ!×ù%¾Lvµ!¹™¥ 8èZ¡v¥"S)àØÀ¡Ò—Saìž)íû;ÃÖJ­DywñéãÅxT‰Õ~ÿ:üôáËÇÿÉ šïx†^šF…5¤¸AB‚c+‡J2QaôKÈê ÁD6n` ûÒ[šTáèk÷+õ2Q•xo’µ L—wššÒêFj̽Á/àð pr¨ä:F?¿¨vŸ×'Ý*¿0uc\s}õA–9Ýûç—üAŽ=í ‡:‡JpSa.†V³@¬Õ¼«(–ã4ög•oå”OÁnO[Ãe€ŒFFÿ×{Ú u•l¤ÂØ)£ “†}ÑGéz9MUpkgËâïUn;Ú“,õÄB}]5·Àã>kžÌ©}”tÄ>¥`€EÀ"`àPàPIo*Œ~¡NW1Üé L@ ”9ö´3ê*ÁM…q¸@4UPŸáæyß‚û½Èñ„0&ÿ µcys#“Á!Ä¡’…Tý2Ù/3Ù05àËz©óÍtöø€AXœ¦ú€ËlR=AW§ò¢DèG¨¦r/,î°nëÚv{NCÁpÔjA% Âè§&åifúpA$*51Ì7¼›^Ua½ja'1‰%­Ù¼û Àˆwø°Øì *©L…±¯Ô[ùý§ @,èd ÐplàP‰a*Œ~:–:`˜Ç˜Ê÷zc¸˜ß—[þ5Ž4—±/§5ª†¼Ú¤ËiZ¥)¼V_ñlïA-ø©q "ˆD‚*@…ÑOD¢RD ‹ã&EI¹qµ“ñßÕ8…`!¯ê½ž|WS?7‘dëä[ù¤f$­¥,^ÜÉšŽvö·>Êh²cã(Þ´uµ ·[È-p¬àPÉ *ŒrKÞ@7OJ ™ŠŽúÚ<–þ1¹_¥K™SžÐþ/—æÇrŸæ?HÛ„_ûeýÎeAéž•÷Ðp¸\‚*@…qè=thº‡>OVÓ[UZß1YU7ÇvÂ/§ÐÛú 8–77,B*éL…ÑÏâ-–`Xÿ§ +Z’ݦYÏgAhò†z§Ã§[É{8ö´3"ê*QI…Ñ+²]ý8övdNû½ø‘ õä¼´àÚüÓ)Jíî›N§€SÀ)À!È¡’åTýœ‚—NaXùÉz… ïåÑ‘\D§`rT@ÈÅrªe@zˆª3œMÓl]>àhs ¼zÿæ|øÇoò¹Y@³K)æž½V  »+ˆÄ8T £ŸX¸OŠEÜ‹aQˇÜçœa6½¹(¥ÁÍU$ljôYI_¨q (¶õZ6p,onx 8„8Tü€ £Ÿ§<}¬B¼å‰Cíã/W;ù¡z·k)8ãµàl–«ÅRÛ ¡;C[  ºË›"!•§Â8\$ *ϧY²üGÇÚMQ¨÷ x²‰û¬©Ü³BÀ#à‰p,on<8„8T‚• c‡€?q1ˆóhw1ßœ 'R3>ódà—G?åuüÇŸ‹ŸEõÜÄbµ~wy­b¾Þìa”Þ•û=¸ž¶£ršÝ–ÏT8ÝUœÚÞGO¦4~ŒÚp5ìɶ¾ÔŽåÍ {‡‡ŠµPaô³'yTfnONÞÊõ!´'WžOUNÕXòé>Í”. G[óñv“Ý®§‹l¥^áÏ—˜í‹J—À¢RH$ *áM…±ƒD•VGV5¥aý§Kñ51xVö[@J_¨q 'Ðè ô‚*Z@…ÑKO<ùÌËÙˆûúGÈ\Çã¹­xâ˜Õ.ƃ«“«“ÿ°í³òendstream endobj 13 0 obj 2760 endobj 11 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R15 15 0 R /R14 14 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 12 0 R >> endobj 17 0 obj <> stream xœÅY˒ܶÍc7_Áòʪr£ $H¯[.«i¦’ÍlÐ$»›_âCeá¿ðÿæ¸ ÐMöLª’”Ë–Œû:çž‹ñ õ|ùþ™Õ7Ÿn>yT­™?²Ú{}³}{Oâ(‰¼ûý õ6j‹Ç)á±Çý€„Ì»¯¿½=Šn,úW÷n’ð(MaÛ}þ-%r)HJÍÒ›fTû€$‰^jó)˶‘ËÛ÷`@JÒ8ˆ™¼r“ÂUišx› •wÂö¿·Ãøã›;uHä\Vr)%îŠôR^è¥ LS¦—>˦ âz¥¨Ú®È•¡‰cèî‹\¢àâ|Ãûbß eªºŠ%„ñ41? ÑgGeÖìkö:„“84‡õ-õ ~(äÿÆ$f‡NŒ¥¨Ð"6™‹QìÄ | c’Ì?‹ìØ´U{P&³XF Ô»fEÒ ¼¶ëÛE6ªmBîƒçdp7ŸsÕ 4?qBš„+˜!šh6F4*Ì4vÂ|æŸÁÕS5–ÍAÀˆ?Ûžµu'T¹„”ÄÜ|¡¼çN0ù/Œ5mø‡¶TeÜÉÆ¶/…ÊTè;~¾î˱Tè ølènÛjªwøÌ_ÜŠFäz}2_æÁ‰éÐäµü7úùŽO+¦ÊÐ` S[åͨbEIfϽ0Ön"7 c[cäìMC»ªþ|ªèÍM‘M—ƒ(þ¢ê¢ÑÅŨcè?E¨óÌ^,ÿØ÷)Vf¥sKSÍnkçNÐ8L]×ösD‹ ^HxÒ&L"Sj3w‰rÆv‘4´ ).´©°0Ç+{Ñ”isRÖîñH‹á²–'ŠfÄpÒù~ ²X/ì§Fªlü‚5f W¬Š*3Õ”USnBèú±Ÿª ÎÙÿ[W4x'löçºG§5„˜ƒn‘Æ Ý5™&[3•`sÂ<¶d±2ÓäǸŒßŒùf{hšÉ5ø£ø!V‡¥•÷âP æAh3Öë˜GÒcx†[ꀯ)4L 4mPÚþãððJoŽ\º.†à‘º/tŽžÝ)á‹5 km\è8+Ð4»6¶m5,LÛ·=FÚŸ-ø\ꯘg¹µñÙðIxRôE^péx%çEg}’TõÝÒú¾,vÉ÷ù h3·ö‰;>)O‰–±]4 ‘V¯öy‘€i©¡ÅÆI¨o{éİ&,TIål€#åïšl¡(/Vír¸çu%-¶]çUµ‘¡ÔA_‹¤Lúݪ!FTQÈ`7ôâDnÏwêô?õ¶¨À‹·AÛ£Êÿô]!l…½4$j÷ýQWÊ,€ÊNÃ0än»vÈ4zRQõ˜N ´jCbÕ™KfûšdÔPÿÈ“¶/GÓɬ~Æê´m‘ Üf˜­Ì‹…ŽiwR: ˆ ~Ž%ÛnË¿æŽkÿÒ2EB0x†>ÑnÐgz¦ Χ­wÚ‘µß!7è_Æ™fU¤fÚ× D“ .y-¦oEg ;ñcV`óBX"bÚÆ¾E±¸´> ¸ÚCøj%¶½¢Ð>éüýOm~p”XEdÃcð_~ "S’0Aôƒ@nÏŽúøë!™F$Õ\ J¥8V½=)h¥}Óˆ, ±êY¥áY.U”Ógˆy-Ÿ`öBk>WÓ˜¸ìƒî¡é{CaŒƒc1 ùJ(d”ÁT- x/j=ÜÑø¸–ÉÌB5§×d–ÊÍ@ÌL%¦ë狇ž^À½0÷úÀë-A<赬üüÃë[ejì¤åyN²©þ¸$Ó¢ÓXò¤ŽàùÇ…`Xañ5#ó6›ä 0&1ògVÙS:¸M fp&õéžS2?ûÓ¦°×5Ä­žý¥ša§lNàLýu“„óéulä¤U7ÿP˜H„H“„Û_P1}{ÚU#û@üsw]±(™ªyÑoó©Æn)Q•8Ì»Ô]@#·±B©'%¼‚¥ðzÛêÙ䙕soš=Ö˜ Ú¾'o?`÷© ×& ¤œæ Ñ|ûùm-J©ûxr¦d*1ƒJB:cìÅ×¼×X¬rÌ—…láµFÎúÑ'tƃr,jì_óí˜8ŽÓœÐ8u4Pq‡5ËJì*C]Îä5j#¸ùZe\šlA¦/f”LÆ· ­ =rÇîûí¶ƒãå@Î@@VÓ«ó&Oáò-ðªôšÂ:iúe³w눩‡Ÿ];øEô$cÉPúâîÝ/ Ôy.>R¹2,¾(ÂV^&Ô&‹ÔFËÔ¦ÎXgRûÕîH¡ŒÅoëQfŦœ£“erd˜«H§¯>UDO sxà°žy 4¤¹¡ÿÛ¬ÿXÞݯ³¦g̨ì;q¿ôî “äI _€ÌèrþV}ÑóÊ>çÅÌØO´»*ǃ(I=Ld˜¶¿Özîb²rÐÑCÑ‹­©ƒ-ÀÿÞÁ ù ô€ûÓsÉÉê!ûv¼tH†vÖºvû/b·bæjë#ôq(®Äµ‰›%’ž§º!E>éR€\ÓÈ…ûÃÊ‘ÐôìsŸ9Rz.Ý>¼Z/žhzIœõóoîʺÓq ™#ÿZˆq‚òC†¶ö]Ì¢ûN>Äÿ!›+脲ÖÒDê€éá2‰Ã°¤íŠF†DÆÜ'ôÃVý¾Sk5B»•¿ ¶©ò;7Ýø(ŒÒd©-\j˜X'…Ù‘|ÿð ³å•o´h–ðÝÝ0߇Rv áZv[+ÐgØmñ’l^ì@1ÈGý©^@û’$ù~±ºÆe×$ÆTmt¢ÁA8¦1(q.e'¯Üõ—{ïÝÍ»›ÿ‚ê_endstream endobj 18 0 obj 2154 endobj 16 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /ImageB /Text] /Font << /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 17 0 R >> endobj 25 0 obj <> stream xœ¥Z]oܶòè_±h_4¢E}«@ÒÔM 䯉½y¸¸) ­–»«X+môaÇÁý÷ÿÞ!9)‰koZäÁ1WKgΜ93²KèÂåÿðg¾?ûröeAÅšú‘ï¿.Ïί£…ç’(LÂÅrsFŽxdSG‹Øõˆ,–ûç¯wÙ¡cÍ‹åç³Ä'q˜¦ðØrýÜ#|ÉóHJÕÒeÕvYYf]QWüC~‰GÀáP7"Q²pB¸‰ÜƒŠ]|Ÿ±Úåš}鋆íYÕµr°;%iäEb/qÁ^’ˆá}Ývo.oÄF¡aá.ß§°6˜Øí˜X H䫵M]–µXMŒ'ï‹j‹7ô‡Åfb[põOƒ{ÓÁ†_ \N=Õå·ö]㼬Z‹oGâa|¶Í¶ìçÁ 1Ic—RáKÏK¥)x!&IÀþŸÍYð_°%Û½âO¤âÌP®äõþP²NøÄOÕZõlÛ7L˜„ü”™‰:æÖ v3¿ómvóá­p%Þàþ¶î›\XW †å¼^ËEJüÁ]Ø@ M 7@ß²Žx­Ù³ªà #7M½Ç#‚Ç}~í…CòÑwR><_¡5¼yü…Q±ÁCSç¬ù€·áfÄ%¤sjl @vú?2™<ê? öCÖtEÞ—™ÀjàrÏàÈ\cëdØú¡îÑbRÖÌ76€>Žôº"Ò£‘ö'§y´h%x©o&Oôäowò·Äu]ŠŸe¶*%ˆRâú†y×u‡ŸÏÏïïïÉàrfµ_J"S|”ö[r$AS†/ÉiÙùæÝGaU`dÜëÙ¥yÆ¥äc?æˆD3>=—'x±y‚/’'FKóÜJ¨j‡â&‰ /4ê¦ÞK†kV3cÿWïn.ñQšÆâñdúQ#]ó¬BzÑ^I QÕ" xéïjô{£c„›ˆ1W¼ˆ«&#ü*ëf‰w¯0¯Ùý™$DÇO ° Hüq”‰‚}6³=7bÏXØ©cL6ýM ò^òÀJÛ´c•ykLºÀðRå¬ÛÙ^Ô÷y v ÓÔ'nÌ•è`ý_Ù-aõÂ=‚ŠÔ7ƒ¹ºÅ>»e6€Z½F2“§At4xí£¼=$ ßIçwÁ"v¡yu´G¤Ç†ï$|êíCÛAÐ_"ë ¢÷f¡ ž0;âf%c>õ´kmåbÍŽ×1&VÖcy g"ù¦:Í!ÁQ±:Oë :#lyBVøT„“âõŽå·X†øÀ,6³O¶gõ€× ”_*‡@»JU¼Á-¦×Ìý!Oƒ t hærî¬ÙåÙ%mF\ 5îdñ©PÝfݱ–U-ðêOèѵpÙž& ^@¸ûï2‚ËVð'¸{É[poÞ‚¿“´™ª“Š ¼éÒP÷âSˆéÌöõºGqfÖdKQÊf @bL@ÁüµãÞ‘ø’=ÑñöIsQ<Ò„£¶ƒɹÊr¥Jt¸˜¥UoYs‡‹ZlJöŽÉ˜á^ùU‹ b¡kû|' ¾ç~»Q“(Dˆ¸—pDßž‘²WáÅcÅC¥?žÌìÖ"NÀ³–N”n_–3áž×ôs0Ò7ä â'+Å‘èŒFáhJ0ÓÐ’GFXÒÂúêŒei¤±™‰eÞ÷ï3Õ˜rØ{]Ïð¾$¬Ð¦Jfd¥Ö;6ê[,Ã&§Eÿ´ßuR!Ð"ÕßËô¢#H>Þê;²§FKÙ6+ª¶CõÓôé`œ.¡@—ZÌ·@M¾¬=š*.²¦,dé õ˜ˆÓy8¾H ˆìHápfJ £œBõ6ËöpÐÁX’ÙZF®/P¯ÇUzªUú¯ j£ N(=>Òk6ÌZv5Ù²±¸Švt“†±©þËPç¢ü´j Ñj3ußKp*ö±ñ‚mDZȱ8 %.ø¯¢µÝ¿¯>^ÿuõ~yyõîæ¯?.®­È€{åF_´ÜÉlÍ‹Ž)ëÈì—îeáçÙ©º{›5u/S%0qjÓÖ«zÛ·˜<ÚeÚZ&Y”aÎzÖoŽ`ŠªcM6´%ò=G¢Û}W%‚˵eè)«wjŽù,Ô^ÖþÊH`!5bÑÕuÙª¢¡z¹™ÕĽãG±”ðÐÔ¥ñÁ¯Ðþ¬’R# F°îY!á8š&LF‹Ú¶Oƒö… ëçµöU5¹R, äP7d.L‘fY«¶Ólçô€L‘x±/ðd›!ç¡ܶ²ë†t‡×ɦ—ëhƒ]³ß3ÀiâU“ß;Îj×5ëÀo ½³ÌÐYd¾D;ÖRØû˜5ù®@mHjhô“:ÿQÜa‘„rƒPoIÅ:µî¸òUZ8¼CA©ÆÇaºípn=ZÜʤ6Ôü7t6ìŽú±âŲÁÁP(À¤hÕR-û å™ÍÇßiC/ðø»²€E«P'h‰¼.y-aŸøs¹öM~‘7}ªTzõ9+¾x¿hˆeé×FkŒ¡®¾ÿÑ2mТSÛà»úø?ÏÑ!"ÒÔv€üû¡Ûoű©¡ãÌ-qr\Rɨ ˆä$Ûo"cјÿji¢|œ©·&šð¾ÞmfkŽ½Ú¥âÍ¿Áþœ!®TGÍ"ðòÐHŸ2O(&"ˆÂd&o”Óþàtµ³Î:öË”ÎrVuCE2zÑ¡SM¦’ç ŽRïS-ÙÊÖ…z0›÷NçºT(^£ÙýcÓ]Õ‰XÅ.ß*ôÄÜI¢ÏãO],Î>œý%jÈuendstream endobj 26 0 obj 2552 endobj 24 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 25 0 R >> endobj 29 0 obj <> stream xœÍZÛnÜ8òè¯hÌ>ììÀ­Hu۷̬'ÈÂØq잇Á`a¨[êneÔ’¢KÈþïÉ¢H‰T·`±‹< Ø¼TSuª×ñV.û‡w§«ÏWŸW“v§Õ›«·÷^°Jœ$$!]möWÞjÍç¬( 8^Å^à„dµ9}ÿÓ1mú¼ýÛæÓ•8^$0o“}O6KÀH(†>T]Ÿ–eÚuÅ>Â&î*r’Èõ<¶ÉÚ¨CãÕÚsc‡Pö“ÿŒó´ÃLÝ‹}5EYTö…¾ªørWwýûx)õ ׉ÂF qè8ZóÛ{ðqÜ.OÛ²V!‘¶pzH °_Øu‚DßðÐæoÙ§ÀsˆŸÄâìè|½æ+Q'7U— <9vÄÒÄÓ&v9ó|'ÑsaXé†]ûÔe³À`Íüõáæñî}Dl~\‡Dò˜_¸Xš»H·%ß„$Ú ûš¢ 9šÂ³nå¸p¡HÌpÄV ü†ˆ‘ͱèø^üD¸ÈÀyY]å†Ò¡¯OÊ`ó™›?t¢@ÞkˇÀt\X¬‘0É¡'ákð†Úÿ‹:&3o;„>á[Hüì?¸eÃÀPtŽ#.eÆEŒˆßÊ‘'69n4NJ«Þ`H74MÝ ¸M{„<ån‘lªÛ¬¨Òž[‡òeðBmÞ´õ§|'‰ÀQéSÃæ_ ðCþ+:úäRwpŠ|òFd–ŶMÛgD¬ºV!‚Vžq ú±W1+FyñœY÷¿üóÿ‰Y׆IÓ*ãw ù ffŽÂÙu¨Wý ùäS-X¦Ù'ôïÜFÀ Ef™Ç|¸_°Ž:²¸7Ü“HòÈÄ×¼8Ÿ k1`(jÀ˜ø~LXk‚¶7ñbV´€ëZg’+ìô¥ˆúß@_ƒ¸þœ¸s4L¼?t‚ –vÞßü“‰5퇊35-‹¾Èy fqƒ°$þfÆFƲùˌՎé[ kè4«B"¬ºía'û3ªÊ3Ì=9“8‘§çÌÿ a£o!¬ œ[åá_ÆVfœ3lU±lÄ¥ò£",ÑŽl™hå¬ÁsÞ‚fUÒÌÂØXcìÚCŽÃ7ÁPjJÙû/ì%œˆËÈ3G»ª4aóžåAikœ`¾Ôà†t¶çE~ÀÎð£Œ0ÿ/l^Ì‘†Áø”þÁ°–£kàsèºÞùé@g%z´Ó™pµxöNL‚8CF3¼)EaöiaZk¤.·W¨-ÐæÌ›†Ä³äP"5bA’U,+ð©cö–cÿµ1°› Ú¿7m¾/¾þÛfOªãÑ"cŒWkVX„/Ë ·kyß»dy? QÔ¼Ðì·ušaÅïr¦Ícšl‡Ó§"ð·P"ŒHôÙ²¯ —,äÏM´-*Û"¢}FL„ð …"0fØ_ê ´ùç‚AgÄyi4™yû¶9`œ¡ºƒ"i—gC›–ø hƒ×-Óê0¤‡Üà/¦v_ €¯}^±2Ó1ê•s¨Û¤Q‡/ÁØ®y>³(#u— Áì3I¨‰#`à5ÊGu„73Þ´bЋ¥pµ•.¤‰E§ Öpó›Èž²n QÜë¡ÌÐLª„Pú9¦— ¤ €6‡Š˜¹Ï"ˆ¦0Ï‹3SíÃFìÆ 1D2c iKU´ ÄÇêæÐ¦§SÞþ•OåjK†KnTTC‘å†9Šx·Î¦Ñ,ïÓ¢ìÐ#ŠÅ^É ²ìôsÕMhVsJ*÷Øš(*0§’µ‰Æ4[ÿ¢«OâÚ¾vð^‡T2”—Þ‹£ø¬òšºŸêí¡¦lHŸjâäw¦s³´O·i—[õÁÚs]¦£”B ÍPõ/a#¢Ù5Ñë,ÆzÌ„ÂÕBÌ«·¬£cŦleEi(î,SìK‡ 45Œ^VU§©þ¥™0=¨8aéÚ½2ÌÛt¯ ]¯É÷ÆÍB] /Kùópjpë‰2_gxWu}C¡ÞƒYï_\ äØÀ¤Ô%éž%”tyûñ 2sÙ.W Lf12MaÂv|¢!ªZ€[kû!Üi4{nuZ²™h+P-dÌ;HP:P¾‘ÆÆÈdãÏ<äò¼®´<¤"7i÷`åc™‹Žª¦Ÿ?vÕb7wï r=Ú@¥€ç®ÏO(êTqŒ®P@–¨úâMÞv׸˜R¶˜]Z¡©U¬KËI®YZ‹Láe–‚L¢#KENì¨Óòà#\k ÓÅ¥Ë(銙œ…MS7C‰–õC3MžÕQwï6ÞÝ>Þßüüøð›µÑ”^O=“= i 6÷ƒó ÿ^Y´}¸‚óø”=²ps²¬ƒˆÉ® {.„ë9˜¨Õr¿6 YdØ6$¼“<¸f±)4¦Oô4>)ÃÛP¹÷Ø …µÛb÷âTàY-ª ŽÝ8­Ìßæ»…#$ù󽢡‚ªª|V§WúIí%«œTôÒžŽ–³:ó— bÛA2{ÿ܈í& ©Ud°DŒùÛí!EÕË3Ò©5Ù0NŸ †¿¦_¬‡È#ˆ+,õijÍû§<¯Œñyç“?ɉÞÔ**ðmDÄ–-îZÓ@…ôT,d6Uå/ŠÌˆPáoOâ\qïé(Ž:y’$š¯þ[[€}*°ó¿Ä ËOf5ú3mPõÔ1œ~Æ@ÓÝØ›(-¦xÀêðçZ© %Vè]£å”I³¼ëÛm§Hø‹ž \^Vw䀋˜¢µÌ®?GKb»®°èMFc)ÜM´ï†^Ö$ç)«ŸB×@f¾ ½Ù;äeU ׯ\(‹÷H/d3\)’¡‘i|Òkx¡Š—å îïZ’£‹ç<$û °ºJr’f‡G V.âÇ|e>ÿ|÷Ãwx!mÚޘƖÛrÑJA<{˜Ðï™—ÿŸÖfÈüpY[7ïÕùž¶ƒ±ˆ-þÃÑ{õ„Š•èüdºR¾ÆöãÌ*ÔD™Ñ*T݌㠛é–/Pc“}6åf³úxõñêO'Êendstream endobj 30 0 obj 2439 endobj 28 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 29 0 R >> endobj 32 0 obj <> stream xœ¥ZmoÛÈÒoþú¡ j1Z¾óŠûà󹩋´qlŠJZÙ¼H¤Â—8î¯ïìî,g¨¥d¹Å—dMîÎÎ<óÌ3CÏ<1™©ÿðÏåöìÛÙ·‰ÐköåvòËüìý­ˆ&™—Å~Næë31™êg&a{i:IEäÅþd¾}{ù˜ïZY¿›ÿ~Džˆ² ž›¯ÞúžZ‚-`%6K×eÓæ›MÞU©~øþÖO&‰&"KÕ!Ó ñ½0LÅ,õüP½òG½‰y}×|Û¨úðP`™®Õ’ØÒ®jÚ‡¢ñðñ(ð’0¯œÇŸ«®^åm¾È©~8Â÷f`EæaYò¿š±ê¶»u±‘½©׎ð ±¾WVø³™¿oÅ÷|ÙuÛÕB-…3µ³µä?/Þðým"a†° õ^- ¼c–O;Y~¸¾Ó—ËÞNt¤ððøssŽrkz8RÖ)‘ã|ÄÆcNØ8 3syµóaHðGî8÷÷ïD½•}ð‘¢4gª½4ãѰCXR®¢¨ÞÝèMg,/̹ùg~}ññËíÕ_¿Üý[G"N'AXHâÊFs_a"rC^šë$,‡Zd‘ ˜aeý•±[Ú(úûÉF.}9Ù(¥GUË5úÆ"kY.]Sлƒ<ÌhFÚ·1kÃ|~ÒãµÚl*ÜÐV† ¡ø)gñD½ûüÑ¡Äûþl_0”ïïvuµ3¬8U[z»›nÑ´EÛ©²ÜüÄ ³8LU1 UÕŸB0ôw²U½{ðÄ Ìàÿ'Þ(ˆ Ù³läJ\!cøÃw ²ŸøÂ³lïÄ󃇀ËèÔ«„@w<î·ä>dH“ìã‡ͧ§Þ"ŒAÞ±ÃîßýÅŠ/EÞalR+ˆ…bÓÉ´¯Ñ¼ð§gÔó P^VÛ­‘>q Ú囚'~µ@.-ƒos*È{¦ç§ÙL94°‹Ðšoþ¬ˆrŽ´K^[JŒ{KŒŠL5‰ K+5²Î7h‹Ï(Ø®qä›álèÏ]>ÊåWÇš'«8™jFŠL"*›Ã6:ÆÁ5E›‚b­ó•DA¶¬ZTYÄ$Ð77ÙA+¿Æ¤ ÙZŠ Ñ@pAÜTå9ƃº “•ÎØ½Ä lQÌEñ 2šc9wùi¦Ü Ã‘†&-n>@°¾ÜÝ^ޱ]„ÇÊ’²}ø½¨«r+K}vÐNúŸ³~#¯ +B ƒT=}âX^ìr#z÷d8FBE2µqâ0tâ ž£9bFU·m²w'íš`xžLn¤>ÊV›N´Çè½ÚîŠå\"IäŽsL\²gáD£k]fàËmþÕþX2ưêF+µ/?cÉä±Tz2Ù;£Æ­ª¿žcǰ$B*  ¹°ì@Æíj¹ƒ2læšöqç[§î0D¶<3ª }ÿ%¦²è¨a àíM±¨sƒ$S8,$JÛÇfÇ šËmË®ópÑÇ› ös™öÜ«’ ;Ûà„‰r mc«¥ ¢ŠˆWé‡FnÖ¦Üú±®óà”Ôè0§Ò^öª$aôÖ>æ­S/,+ªváURZói%èàŠˆa 8z-=¬…JI%¶^ÕŽ·ÝYÌ^ðK0"2IņÀæØL(íQ¹r€Sõ{l§J¡pFjr,V\`Œ]6\$Kªµã¦SIºÏóQ’îEâñ_oè0 xRÝ•%ÄÀt#˜ÿ(~L»]Cس3E}$‰Cn©–KTêº|œ¿û±(»÷ïôÓ’ÝS‘väZ2aiÖ E§vhµ­²2ÕQp©tBfiðG«©}"¥ûÝ3 åȤxd¥ÖR%©Ö!ï–ŠL ÇzE§ULØ3; ™³¯ Ø{¶¤ç†DSN, Ç=ô2ûPHÍ¢ÏÚ§å¦[IóñêTb&šzj¥~>2³ºTw´êN0š>ÜÃQ¬~»»úró!ñža%öÕv1PÒ‰¿q¤sÄŒeB„8pÜ>Òd@Tïð$)\ºËˉJ­­Pûšƒu¢¬2…û• <*KˆÃkmþ^n_Æ{"zÔ“#Ô`¨j5}8ÇâC kƒJ6;ݯúƒRÄ„Dép`nr‘aj“[ŸÚx°ý´…zÙmøë*>¯P.ÏëÊÚ8e!‰NÉÀYÊÚ~½7€ÆÉB©8ÜFŒh_–©}Óc|§á`o—t GöE4kÁ1"ã-8Þä/gK—Qlà-Av¶RMÍŒÀÙ0¬Ô ðá/é„\zYâ™úBc.› óýVÑš èH?w“›‰ßÀ¦‘QÃÈ8ÆŽ.Ƨà•ûU`YUõª(팂»­–»ºú²FÍ)L‡qd¿ípÏ©™ ±f,¨7p˜â£DIΨÇfGéÜÅöjÓÈ0¶ÛÏ  ãsŒ7ê'¼'Ð=½§¹øöÓßǘ8ÒuÈÙÚáû#['ÔAz2Ù×BÙ>’Z«,ýòëõí‹Öî—sÞýƃŽÊÚÕò͇žF˜’†~©§N§H±ºoÙƒ’Yæ3ï0L¥ÝH,Dæ¤!¶O»”OÞÜW©#¡FæÃÕ'Ýoú)KíuW.i*¨[k§}Í8Ö ígÜ‘oU£6¼˜o$o:XF 2-btu Šÿ?9h¯pªé–ÇrËéÔF¬ ( ^—["qà‰ßŠy‚ʼn“`ǾØÔû¿\›€2ŸÁÒ4MÔ¯^Á£š™¯æ“ÏgŸÏþ L’Ò¤endstream endobj 33 0 obj 3009 endobj 31 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /ImageB /Text] /Font << /R34 34 0 R /R27 27 0 R /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 32 0 R >> endobj 38 0 obj <> stream xœ¥XKo¤F–rœ_”‹÷@ý€†Üv½VäÕFŠÇ£=å ؃w08þ÷©î.èfÀ¯D>ŒÔÕU_}õUá€P/Pø»?­WÕgÃÏþä}Ù®Öz I" o{·¢ž¯mÕî!ßwú^Œw쫦ÉÛº*³¢¼WOÄ€gL«3ANP&.H4ÆT”P¥2=jïÌAàϪí~¿¾Åʱ€Ýs· F?j›ã)8¡û\JpCG'êzÓȉqgB¤N$}›gÚsà†1¦ÇÌÁSSt&pO— OfÇ3ÈhE^š¸YìTðéPì3²<öyó¬OéÉkhOAµçYÚ¥»ÔÈÁõø -3„Èæ”5:`€ÑráÉt•êŽÐ7&™Uø’í˜}zÜ÷¦ïtªa pB{Ó‹{ÌÈç‰ a8TZ žaV4&E•6햢ĸ,Rˆ Aç*}p΀.B=¦sɸ*Q[˜˜„¶Þ0yÖûä‡l·_¨¥eGÛïü¬h€µ•©iu’#(w¼ü@™-i³¢íšb‡T±¤ïU Lú ”Oû OËry•Ý Õ÷äÿGú3¿+ŽùPz&_‘ŽwkÜZ¨ö µNÓî`zŒ“p<1Æhž«¾™µÿƒÓ³S)ö´ê$9Dqª!{3’¤ê'4ýëb :ÈÔbþíóϋÅèã“æŠNZ¼ÜºZmë&GöúØÎCW_ &±Á,òX ±`'IS,ŸJ#VðŒÏù´éËÿD§ÐéÍvÐO„¾Ug2\V5¢bºÛ¤¦Òšº†V»/Zò6KÁD±ºð‹á>ì(Ìòuàú0Fycƈp¬[ ™ê%.û€¥Ú‘$!ýÄwì ‘çCÎìÔŽÞØb Ö±Ø5iSàlžíPPÞˆÑT££²ˆùõ½J³¼YíOu¾ˆç[ËÔ¢äµW¨ÔD~e¶7O–‘´TÅâ´›ÒÇ l'ãrêÓ¬0oÙ8õÒ¾«N0a4üGŠlÃÓv*MuÚtnöÿs<ì& Ù˜¾v؆ÚQ4\jú&´t™ûÁÉÊ`7bc&ë+ØÌ–Hä„ë•ÐÛ½Bê·±O¡¥RVEº(Rb/áB Ÿ&ݯºoP2œ(â¼™}˜kE½½¹k ' €¿JB$ vî{Ð&?LäK&à ÉŸ3ßçÔújÁd ÜæEkÄBͽp\¼|çÚ6ÙžÛCÍêûöq1žPˬ<'¹t¤·DæÑ©Œ¸ŠÔ˜%^ŒÆk¯n7×înu ŸrùŒ ¦íÂr‡zŠÜÞ|×/R¶/`Ù5R<Ÿ;\Y…óY¡0ůÛf‹„ƒNºó{k­~ï›Ð='ªÏäø­‚ZmÓq„‡ÏëÆ>T7]3Õ{¡nv"-5 S·³Ùüˆo©Š»Å3z±T¶êΆÖ¥÷y¬¾ƒ\¤pÖLÿ)  §aú@‰´Î„ÊìjëݬnVÿˆÚuendstream endobj 39 0 obj 1320 endobj 37 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 38 0 R >> endobj 41 0 obj <> stream xœ½Z[oÛÊúè_!øÁ²Q‘áý’>Ž£äljZ@/”´²xÌ‹BR±]œßÑßÛ½ÌÓàMâ,—»sý曡Û8ì/ü».O¾|›¸|Mþ³.'ï'oçØQ˜„“ÅöÄX|Ë$ví8šÄŽgûÁdQž_í²}Gš‹Åo'‰oÇašÒm‹Í¹o³%ϳSW.}hÈ·©º‚=Iéf7MÄ“¶âÆv þ{Ù>’ [Šb;Šåë_¤íòºjÙ“7wn0Ií4ò¢€Égy~lÇÞÄ ÛIØv׆}ÞG¤"Â=_wYÇ¥ lWIù˜Wünª¼«´©·\BǦÒÀÒ©KÒ5ùš= ¨9B©M½ú¬;.¦ï -×YÅO‰l_ÝvÍVBn7ªíê†ü•-[nDe ;-—kô/n.j7øž¼r?käÚ‰/W÷u^u3¾ÚZ.òŠðU7EžÛ×ÅËC]ñ>öIy(º\Dì¨=Sç®íôáCÄ O3᪄aí—u]Ô¸, ¸“m‚;ÒrM-?Iì0d–£ñC… ÜÀŽ”²íž¬ó?‰P£ji}ó Ü­­ØíÌ÷o÷¤ñ#þÿñúžï¡w+Á¿r)í‹RÒkÊŽ¿V5¤€£NªŒ "Zà:.PÀe„£Ÿ;ÛQ'¯Ð#TÐ4%„}ˆ ¼<Ê»_ö™´`RsaC—ÒœfY^È”;J͈ç×Äbhà±W¼çæ/ Ø‚C7«/V6µaDÈ¥DD^µ¤‘)®}’‰DbÉ`x.Â9Ìߌø‰òÀN:J/êÐÐð·Éºl•µ2‘ÔÉIѾÇsùCÞ´~¾í©£^ £cî0±V¡4}}u>ˆÁñ–Ö É:"ë#AYfZÐJV˜€ ÜqÏ|™&à¡ä‘é{HÈ€ì^ö$TžÊD>åq”Øž¥’NßÕ…‰ÄÔB ,jk%ó€ Z깪« ë‡èq¹å§ þpÃqGo”þåEf|sçÅ8¸{JìÛoÅPPÇi“jÔÀD Ç×|dÒ!dÚR˜¬Á$±«e« *k`»ÿróV LK0¯W,mÝ”ãµEjGÎo?‰úÖ[þÇåÍßç÷ „Žðå¹;îŸršil“uNà;µ¯¯O>úÐÔå‚*/-2.9CÐ4’õ Ù’†TkõOŠÀa/ñDÿ&»ž…êD= èµÈµPÃè÷\ˆ0ÚÃý€ËkÍY-â‹iŒÁ%¯7éG.U(î%÷7Ì73†êúŠò>3_/[‘5¬„/MPz]Þq¼Òàw·Ÿ†Ñd˜¹´o¡U…ðQhHwh*WC°™X'`VˆaêvW “¿uýþÓ½MËdèOÑSãF‘?‚Ç6* ###îŠaŽÀÝ%š³|côwXx PEplÿŽKúÀršW0ø|ƒA‰eýÙÒèÏZb­'„XJ_ÛðSk–K3žùƒƒG2tRrO¿÷Ší°(²Ïi[pÍÀÚƒàÕ¼b›U ˜è,ÄåP!‘8€Ze(ÛÔOâ c†$·YAh'ü}ÿÿ4CZ×ÀTã#níž‚~Æ»z/AÝù·i^` äÐP#> 5â†F•æ…Õ¡\‰Âáƒ:3˜¾Tz6[ïI“uu#»‰#6LÙQdË En{}Œ9ŒbmÌCC(ó]ë2аˆIJÂ=ê´Ðä´ªôš7¥µnh0!÷rÁè †™WDÌx-?b}h¯*÷§à‚ÿ†˜ž¯^ ´ôÈn¬³SuÌ“Tc£nhôtLOå9Ðkßó„oT¾*XŒmðáYÒsù±=ì÷”wCÕgówW}|¸®Œàú Þh’¡Žk,Nqö@‚èàB£J/RRÙöY_2‰ 6º‹Ï—@P—K*­¤Zñ«¬ã´F°Šâ,”‘\d{Q­—ÌÊSÈÊDåëòüì ÚÌŸvùzgp*£lØ‚£†íÎ iÄSÛe·K¯ßkY2äÛY÷ô=,kÛC¹g”êºbÈ&ŒÜ G|Ä>¶$ëf  %{‰ßîàý^ï½:»ª‡¨ÉÒìˆRµÒªÄî   ±Ýþü?oàVÙµSª_mÀ5Ë2ä‡UýLäwÌþØC! ‰Kºl |Sqîè²ÕuýPåÿ&à*Í‹Å矊Ï'°½A•_¤Á¨+jÅ«g™ÌzãZ«‰(<.N¥¼G§Ÿ˜Dô@UÆXòÌ2ï@jšâZjˆ¢(9̰{•îÐÒç®PA_4ãÌ X$¬¥9*#©SWæ8MÕ„žõ$ÚËâœKßx1ÊÜ1&2 Cu`í³U^P#ñ•µg©«º,I³†+B}áƒq9Kl!"4'’xšƒ"ô¡¼åÇŒcÔw]åS~6'£pöDR„šþtß°R¯7SIS$»PfÓKØú.‡k’ã¶5ÕyÄ-Ö%'güJ¡>;;… Š~Ýà †CdôµÈ¥¡TŒÚ8îùfñF"i/«·Oˆ1äiG䰈⚎–!åVöÄL;ÿ0+%Bv _µKk˜t°ê t,Y¥b)ªöbÌÍ7‚ý.Íßøå„Œ‘tnSWyq2¢?ÇH‡ËçÙhŒ&ì#³Àaó®äEÉqF/%ÐÄ z´B,|ýe~g~ªeCfxW_Â÷¾j¾»ý§ÿ~yîC¤è‹ ôfË‹éÛ·4†ÄïÓ>7¦, q'#u|¢ÁÇ óÅäËÉ—“ÿ©C¦endstream endobj 42 0 obj 2858 endobj 40 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R14 14 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 41 0 R >> endobj 44 0 obj <> stream xœÕZÛnÜFü¨¯è%6 áï¤÷!ð:Ž#İckÙE´¨™‰É 9æÅ’òû¿[Ý]ÝUT÷Hc¿-ò`„ÓjVW:uªš‹ œ-äøïjwòùäó,TÏÌ?«ÝìË“¿} ÓY”Y”%³åæ$œÍÕšY\„A6+Â4È¢Ùr÷üõMµD÷bùÇIœ‹¸,aÙrý<ä£p, ýàGùÿiF‹E¤Ÿè? ’¼,qø<ŠfØÞ«² ŠÍ¯ú?ÕvI™¥kõ ŠÜ¼òã(ú¡n›^þXðÌã¼ÃçᢢD.ßB®Œ`köpS jãÖÛ5ÚAÐrÏp(VGÃq÷ ÎW³È>pñ£Äz-ÚàôÞËTC¸j·ã®9S0HXá€Ò£lNUR=£jtúúÓ›WÊÀ’®å§ð¿ÿáÍ¿N±@‘ÿ6cc:Á¡.&€C™Eœâ7ív« ´`¶Ýö/­Sr€„äÉßfÑÒ5S‘kû€‡’©}ê Âo2¾wMµÿQÈŠÙÑ?¼GŠ£M~SA´Ëça˜r™ÍKäXòÏ‹ó÷o÷¼=¿X:)rù\enmBª#¦öÏyJ_×ýð»Yô{»ï/_üÝ«hÂ$VFER‘É`aXqŸSka¬ U…§"Ûvo‚7á£Al·=’$¥®Oõ¢û¢f¶RÃþD¯C‹¢‡è¤La…uømNMŒ?ߊªý¶þK—Ö¸U·ºqQ¬É$Ï‹‹„š2³|éhž”–áþÆÃœb:±hV¨d  F æ”dräØÚsê„X¤È¢dîyæ¿'ò…ö—¶ _‘SÉ ¦òÑ wƒhz¿Ð¡Qd±æÎh‘ÉMgs Ê4ƒXêî™6NøjÐ`Ä\?RF0´ç_ô¢sl¾FaˆTßUÍ:@£É‡_%U†¦è1,åAܡ좦`®xVWšS‚)K®œ# °¢þdƃ‚±(}bÊîX/†\Œ%0–ªú~Üao^ðfÉ "Ž& D'VSŽÂšóά‚œ?îWèbø¦êt5˜L¾¸»«ê ©â)ç‡J7R÷I ÇgaxœÏ2okþ¨ÏqfVû`ðeF6ÉÔ/†Ô:J˜iRÉö"þVô˜ª”æ|pq8D¨ú H7Þm^ Ñ ~)¥.Ý Ú÷X,©!Z×ýªêÖ:XZó<Õ(ö£˜)ÓC`A£¸ÂVgSè±FMUŠŸÃü!¥ñ ÄÇgˆ7bŒÝ—OÀ'Gûg ¢€jÑÈÍ[‡|ÞѨaóœ¹)«¾Ї¯_݈P8]`êÊÇF­!ŒÂñÖ;–sÜ$Ž=¼êO}ýñV†Ûß6NŠõÔqæŒùÐ7ôt4d\qvrÿ¬µKç[]äR€[ÛiêP£‰ à¡ÖœŠ˜À‰mß›#ð——n@¾Žñ) #°s/ÆÅ-»‹yËÚ›±´K!ÝcŽóuÈëÑ•/ž‰«”¡ÕØ œšüHÅy4ç¢Cx9ºêÊš²“Ôé×g Sæíí€ûD@û—૪Ñ^?fÖ2yž, åŸæZÎ._¼´’/Ê|†Rò¹Ê Zùß'5á·>\? Ý2~„Iø *ôúèYhÈ© Þâ8ž?vñoòǛԄXzæ¿ÝÒÏì}VÍ’é‡âg “¨ÿÒT ‰LGÔÍtêWIc¨­r~Æ/„ÀsgHTÁØ]-{•§l‡|~ÖÕ«?ñä5ßõÙxÕõ0škÝÉ|ðˆ»w‚ݽ›ÎËÚ¾H"̵C/¶jŽX¦Ìc/scõÿ•-> öÓi3êáT m_mÄéêö¸EÝ`úfmuNCƒé´–ÈÓ$z Ðz,cö6ÎLS4g¸>›|¥¡/_”|Ðg³Zs9NçÄ L;T5v¼¥3.2*_Š—ä“ëÚÛzºT%CÌ•iUoýM{(/ÿÓ’>`Ⱦ­gY;ê›Ò !²²ÃêÂ^ÀO¯,'0zµ^¿E·¿V^¾|®g"M•—j “¨ÓëCúHÅ'`Í<ŽßÃúZèvŽ”ù° J¢ $úaÜ8[l¾G4Ȱ0¹~¾ÑÒ1$0Þãø™öc¿!3}9v«‘½ ×WZÏ0•säå+œÓN?p2À¢×=¼s:ZéùúÅwº¯Qç\ ·noÔÏ…V÷XfÈ j-°b³&øG%Tk~ÚdeRb¿’ÐÙÞn׈cº|í-`ìûñ¬1T—2WvX3¦&<ÅN§2HsNƼêa{_]³—úüRÇ^êŒô U•bÕ#â˜mú S-e'c' D9‚ô Kˆõ=”õò7‚ãâÓù½Cai1µ²‰™²"Fyüòmš9ä8f5—Ÿö¨_BÆU>d2çw>[š6=¦,³<-ù³íV˜ÏqøôÞHIL›}'¯X1qx‡€÷²ÙÅ[ñãÆ~î çÑÉßp£'Q?äy…ùlê@‹Ó\.{³œ}<ùxò?Æ®zendstream endobj 45 0 obj 2980 endobj 43 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R34 34 0 R /R27 27 0 R /R15 15 0 R /R14 14 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 44 0 R >> endobj 48 0 obj <> stream xœ­XmoÔ8–zßöWì'(§‰óî¤S*ZÚHw'­„¼‰· l’ÅÉ–î¿Ç/“ØiL ºS?Të8ã™gž™yá¹+þà^;ξα\ëÿåÕüe6{~‰ÃyŠÒÈ‹‚y¶™á¹#÷Ìý£hžàEÞ<«Ž_Ý]GÙ³ìóÌ‘ë§)ß–Ç>KØEn¢Þˆß! =×õÔŠz qšÂúuOën{"äùýƒ“ö‹4 ¯ßZÈŒ’¸?òãž¶]ÙÔ­xÂpÍ?N¸ãväb{Nö-[½…io¤jÚN.b”†ý"Ùí¶eNã¡‹¢Á·5i•3p¦©¥ž O-]pÓoO¯ªx°Þ5à²Q¸ðèÓÎ/· ˆ_‡KjA„Rܯ•Ò÷DæÞ-¥Ç)ÂxXº¦5ed 8§Fôíþúšƒ¨â °éä ‘¶qŒüaû¡ÙÃZ¾ „íoÊÏ/½xœ£0LyJ<¾*³\oiSÑŽ^5Û}U¯ŽWÏlÉÄ™"`“~_A&]÷ŒZxªwÅmÃá‡9¿tŒŒîXó™æ=kF=Èâó†×Àž)šø¾ÑÌÊ\IFÁ9¾`~hf!oãJ ® uÒ³q' ¤ù´sÈŒª=H…oñœ'ɲБ•TÒQ(í¿¡çðñ5fKÏšª>ŽE×W•%~Æ’9}[=Lfˆ%KGÐg!xÎãiÖÖ"ö€ÒœûVv7¥Ì–›ãD¬Df¤Œå¾…²×M×’VR7<\6¡—rá/™I/Æ"3<“éLM^OÏÙFA!ê0úµŠ%.Lèdx`ÌM½H7“ƒŽòRxOt³2R:Ì‚iò½I¢ƒiuO°L¦êš\„°  –Ö¬s”7Õº¬§€ØÐûÁ]‚ÙÃwäN׉@¿äŠ›•ºnöuQÖדf´nî&S[÷ Ø‚¶"zÜlð@œTí¤QØÎiw|YW^bŒ‡².h?÷†Å»…â@¬Àu©y»nÁí|†²¿ ¸í§’<§m;©Úû2ͨâ¨WOë–vð¢ÿP‹2RM7áMw4úì࿲ÉÞ5ëIv¤4Qòsߘ€ È£ V yº^Ыï.l/UÅík zGªÝ–.`ÂkGÿ§Ü—¬­ˆ°ëŽÉËç8e ÈÔ¸ÂXòvq~ú![ ÒD(2˜u•\årªà¸M³ÝÂÍ ¬g„.ZÑa¢PŒI­²Ùo ˆSë]Ë6öF½(Ÿëèvûb…‰!È.ßÄ "S}µ<[¾Ê€Á€ÓïÊ&,9ª2cÉËó÷“Þþvyž¼<[ªQåé·äÍPŒýwËKùt¼Ìß›{òÊ×°Âì kªŒÞu«ã§/å a Yçÿø“_¯ŽÕ©òW ,IŒë_[` O`±¸zötá`ÅÇîºFœ|bÓAôºl;Rçt¥ý–κ‚ˆ½ôkª‰³5|ANv<½8Ÿ¬qöNÖ8 S®%lÅlÝB¤AG‚“à㟆 ¾ÿ«ôxÁˆ2txIä%NâóLm^{5}&¨k`ÛCÛѪ…´`©öŹVš’¾ Gµe¢)]>’ˆÃM(I`Èõíñê6÷_³Nž=+³Ó“³O—Ë7Ÿ®þ•ßwbóæ&?/HˆùEFËD\4A‘ŽP[Ó~h˜Ÿ°†ÌÂgœØ˜ VÐÈ–QR"íÍ QÅfè¥[5ÈS=È©B"ÖŠ.äf¬mÐJ#í¥¨Á3ÀöÍÅ‘©„ª5Ùy Üóa-Ÿª,¨hj[Z&²îÁ›·åF2tM¶¶jg¢0î÷ F7”1È©w‹,²^Ïh[²ìþO•žÈ ²~ǹ„”âô1R·¢ï¬ä”^^”NF®£Öý >èGÈè;´ñ ÍùWŸ˜ bÛ2›œ}œ}&’¸+endstream endobj 49 0 obj 1792 endobj 47 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R14 14 0 R /R10 10 0 R >> >> /Contents 48 0 R >> endobj 51 0 obj <> stream xœµZÛnÛHòè¯ò¸ìæ}ÞlâƱK™Á4EÇœ•H…¤bûCf¿wûRÍ.ª›²ƒÙE7›Ýu=uª(×!#—ÿƒÿ³íÉ·“o#"ÖÔÙvt¾<ù×]8¢®q0Z>œÑTlEĉÂQäRÇóGËíøâ1ݵy}ºüë$öœ(H¶m¹û_¢ÔIˆZúÒåW¾zõÔê-_!l_(ÿ®šör¾à‹\9”>aJbêÄñhPÇåDÜâyŽ©óàeÏwüû¿ò¬mä¡LÍ„ÝFCy*S’ ;–'ä›—¹)îGbG ¨ó\'" llö»]U·ùš?ñ ²Åý 訥¼Õjzv’¦µ¼ÜGkí£¹ö~Qlw›4eÇÂúÇ BLÕ‚níL‘”tnKKa.:¡Å6ú€:ß±×™$i[T%ÄÜ ÌÙí¼™M}'î„¿¦t`Ï^jí:nwSYɵàñ¿÷Jë¢Ú7Ò ËØ/²j»c)¤s]ãC]u¾fr»„½»xôÀ{Õf¯”fÉ c¨ÚåuÚVµ´jâ]Ä|-øRälÉïËoŽäJ.oÆIT”`"|Úz‹6ak™èµd0јôPÕp°Û­->_‰¤¢–f—gÅ»L8Þ‘VgÈð„Y=rbn¶köœòû Êz StT'™(‘ðÄskX£†â²¾õ2U½tðQ@Ú )màÌXn³©.uV?5?uÐ9Iä"¡7 ÜÀ z#ˆÐ¿mˆœ„X¹½™_/Wc×@"WÚˆû¶º«SëµAÄÃ1’.ŠßvíÕüz¶XÞͯ/áî0áÑj»"sUþIàO_F€X£Â7q<Êdy£ ·7Wúì?.o®WceÊQ&6Œ)Q},ªÅjý ¾Þ@Õw`ƒß߀ÕwuÒ‡w&«1 ‘ƒ˜;'Ô8Xn¥X,jÑœ lðí^4OXx‘Æ!—ø‡BêÓ—+P^ÏrÞ‹ï„jºÒ.¯©Š9–°L 7Çœ]Rœ 0#h$y³À6ZLj""‡‚Hº²x†ÃÈÄ;vžŠ¥I`ì2£š ;Ÿ×7ò¿q¾\/ì§¶Šˆòÿ#¹ä®oÉÈn×°³{ù¬},¿ãÃȈ“þžžÝ飒{5žŠ‡Œ+]–KÍ–w"#Dþ¸¸¹ºš],çmrp¢ýÅf#Jþ]çLY)Mˆô²&ÞeÚÊHH­’ÿªõz‚󾶺nb˜í±¸À.@9ûÜÖi& a‹Öt"/òÜU›¡›<ë:;Ö™i¯@ŸþÚ ‡uµYþ']3ˆ°è÷:¹._b¼Ûû‘{ö%’E´÷ú5¸˜ Ö­n»é£µ~סXdGs‡î LÖ-Œ§^Ä ŽHľƒ¸‰µÄ¤e¢IÀ.eggûM*TñE55CÛD Ø Â·Ó±ß™;²À†#¦ ç‡TrH*jýhÊŒéwÃMo&¨L-Zæ))Xà!)hÓé÷]Ne9Åô¨ ƒÐÁ÷EZVe‘IèŽ(ÊÿÌgö‘)‰™IF|rê kLLû³Bm{<,ò‹á0O¢¡ªò×_J0hV07Ò&k£X<É­hn’¾È‰E€LjŒ¨|˜æþSÓkb³cêHã1³¢””C⟠k@¶%æï²®(¸7›é¯eæÐUí©”'¼à Z ƒŠ*rsf´ÿþëRæwo*ÌóÕ`H«qóXÔ*:÷¤RÕ™¼£h¶ú‚Cî»^v+!$´gƒæÚ¶÷ò9ËôZŒ—i‚4äV;™(ªüÜjT }î¹b,Ø–ÌìÒ“‰ÇVq)±)Æ®ƒJ¢y}Qf›ý:×%ÈüÃ`ËØç^úè¨ÙÚ—\LpP«D1b9:|(òÑ»ËÊe”ƒ‹ìÑ8ÙªH²ÞW˜ÑF, DÏ%öÔëOòM‚üj+>„`i"7…k¬ãé·c£þ‚n5T и÷Û¾Ð%NŠŸòŽv-EÙæ5vÏSPZÕéWU¤ÚòX– î1è|¥B†¿Žú~4GGŠóÐùuþÀº¤2S(!«7/M›o!ãuy(Ö¬&ï¤3½™k5^ÜÍVŸ­|ôí Öñm&ÉkdÑ":`À[²DáFÇJ4³šñP¤Çôò̈"Úë1¾LjçY8'ýêÓM„4daQaq~ÅO4Ú}”…HÕêâCãÖP¯<Ѧ6}ßo–Ñ÷§tS¬!ØiÔ×ÍÀ9FX0—kV7Ì … r@}´A“î2{½žëâøàÓ\6õ€Ê$0Õ~#$èuí÷9|`¡Ñˆ’ø&-¾tˆ â÷$N(°n~½˜Ý-!Ít 2¿^ÞˆSñ€aq{¶œŸ]-Ïίf«q9ˆ‡¤øeö'Ÿ M€újø“ë³O30¹v®šÌ¸Âº£)kj©+g¿]}™- åSâÉ5üÆe^mó¶~ùXWÛeþÜ®ÆÄÏ b1¯›ùµp‡Î\®ÆSc‘ÐÐXs|#ƒ|F·èêôÃÄÐÍ#l}"¥­öáÌ8ûv“fùiŠ”Óf28ÿfÆBGlyû4ËúC‚žíD¸ô%ÝÆ"߃ˆ.B;è!P(R©úÀ«CÅ ¥å~{øŒÇ²ŽSÖ‡$¤ë@óû ·6¾ÀÔÇ\ÍG†é êÁ_¯nLP4D1É0y}­óÅg1ëˆLÑ^á šV˜@‚¿ǃÌÞú£Ýna.rJËØ&9–ÃÔwýLp÷mRPíø2ÏX+¬Ú'xdáªlÚz/Ñ;ňÝÑÕñ/妸7ÛA :œ°ðEƒ¨©Ÿ– õš\eøGÜø Ó»•Ñwþ".¡ÄKˆñ{E–'@yôÌÁF¸ídE; &³èg!)ÕÏ(\A­,ó ÃЈLä\¨~î7&‰µ^"§Š˜Y©I4ØÚF#3þÍP6À(Ë,Q¢ïz ß6[Ž>Ÿ|>ù/ø¹>endstream endobj 52 0 obj 2740 endobj 50 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 51 0 R >> endobj 54 0 obj <> stream xœÍY[oÛÆÒ7ÿ !O±Üå’\¶èƒê*®Îñ-sЊ¢m)“Tüû3»;Ë]ziÅÀ9š<Ø.gçòÍÌ7´ï‘‰/þãÏ|wòxò8!R¦ä»É¯éÉKN/‰hÄ&éÝ ™Lå™ ˜ç³ '¡ÑIº;={Èö]ѼKÿ< B„IçÒÍ)ó„T€$R¢OmYÝ )<ëƒ7BJW’ºíÎ+!3|ÛŒiN¦Äçeâìã¡h¾IÔ ˆÖ)ïf^:%I !#xE¡ˆ7b%ùšíö[)ˆu±­å‹±p[Šž”cà—VÞ>¨3¡þ§,К:´Ìêe›òNÊ|/ém¿+š¢Êµ%Ql,鞊¢Â@Çá1½×çg2&özÛ.«6Y³‘ ýaK‘eÄÉ\ŠÑ¯<«êªÌ³­x2 Bæñ€C>(äH_7»ö'•:ObÅÞ…Ôùp*ñn¯‘Gf(ññ8¿ŒžD1ób¯Ætõh$,ðâHfâøj~1?K1v³6-¾v·§÷E½»}'ÇÅcôj¶ÒÙb}üÎá(ºÏû|X^_"؉í²õ¶øYÆ„p¯É4ñb‰®¡:_> ¾OŃ©óOœá¾ç÷GÙJJ”;ðJ™2™QøÉ‹«ù*].®ÎoO!½fæ˜F‚ØÑÈË´$ð,A´Z­‚ò(ó ‡B§y?%ò.×wŽª˜Gr×&BBG ì4Ím“ÀS’øqèÇ 4SÊe‘ˆHI¸ßžº4õžÖb|Æ^ |(ÃðõÀ§ÿa7¬{ð¬Þ5JÃÀj0¯}; ¦Ò<üç_—äj¹øíHýÏ}8–‰’pAF-Ó |.ðIà"˜»²ÄF¦åÂ%8ÿ×r±“?ëy1!Ï$a4b*‘Hz´T{A8„ÄÑrùqM`ÊRªQŸ§ЊÈ'ŠTPé” ë›rO+Bê…¡ŽÀõ¾¨p‚ÅÜ:½RcPÈ£@²Åí(á ù%ªâŸñëéoy»*{:Á,:ñ¡ÈºCS´f£¢Õ¾ÈË7yÖ•µñ0YMÆaªbÓôû¸­>^¼•UZÁÜo*Tî˰gô£éÄP½þ³È;¤ifôußöEûžÝöqw¨ráG«€G"‘IhŠÇCÙ—ÊÔȆHïú.«Êýa›uбEž¡‰põN$XÈ16“ÉlÛT´-:‰µæb&];hrÓMÖIŒˆpèËEók%)·ì]TŽ’ºÙ(~< c½¯XFEÕ0PŸÝg³ù§y÷¹Y&‚M±ËÊJÅ=â'MÎTý䔲튪“cÌò¨ÞMÖ§ æKÒó£ö?HË|몬u<Í€7#ÀÞãXRÀÔ•ÏþÒ‚oa Ó'rŒ©ÝÃ=Š„B´Ì=y½=ìE†u ·+k\æYÓ”ˆA\oA}Pñ­2éšúpÿàtžV­æÂ1°ÿØæÂû¦Î‹®v&«€[uºÁim-r“æ l0hÓÄOb¸#ö8Çv„  -=cþv¸¶XQ”á%ØØà6lgäÅ:ˆÃaüäàvuƒèð5ÇVI$fãJ³‹/Ëù‡/«ÏªMÛzÇs>¿¾œ§KiCl¹öùËÙõŧË+¥ÈÞW°]O.WN+;/H_aôZúL¬ÖóPoÕ†d5Ö!«Ã®hÊ a‹ßZôÚJæH$T7ŒåÀA“¾v,:mÞ”û¾¬Cß NßðúêVUVº×2Q—º|ƒ®±k±ÌÔ<´ ƃ΀ ˆù"IvEŒ…Â)em9 mµ…×sX×™øæp' !ɘ‰DšÅ +%˜šX=3[Ï,fô<ñÄOtNUÔÃÈ÷ &g¹1†+`Œ ¹Ì“€Â£ E›)5£€‚6ÊVu«û~Î5éØâ§nQ‰§ñí¼Š…2kÉ?[Îgé{œAd:ûõbî°‹ÕÍ쨷§R܃ðH¾._²î`~q•ÎÏçK,.sÇÕuЉç¨õêÓÅ…óúÍrq9[~v^ÿ÷üó{e„mT/ ’ØÎ>¥¿¹š]ÎÍTÅ·þ3[žý>[ÞžÒ0º}§è½òuíËàuôå…÷VËtþGê„ØÜé3®/Õ'+Úòú_L«xÁl©Bj€¥[Û’\h5u‚v=)ÿƒ\Mw‹;w#ìä( ¡>#µ¯ÀÞ‚ˆN¨5sgÞfw¼N›`bx¯X0 3 þ’‘–FéA·=`„¬¶j±>ÃbUùx(¶’#±•ïr„®|ƒÄÿÈØY™^;à<ËB}tÔ{±ÙùªòTvªÏ‹xý9èäÓ¶4Õ©«€XwBõ†¬&‡Åay‰ã Ö )AX•í gPûÑYôÒž„û—ý¾>Ûbo5»ßºÞè/Ò£<Þx4Ò…×…fÀÌi^v8gíö>¶BV4…°©¶ýQ9±6K5×=Œµ¡$,_• *2V¼Ö>Ü:÷ 6s²ßH‚‘·øÓ¡{¨›²“§a?0Œv¹¥Þ’úr5b”£×$‰"ü¸ûòÂ;N=Õ94%lð†¾´ Ý÷H#™Sfñh9#.žúýlð-eÄ[q‰sVHñ1F38;µy½Ñ„ÏäÆ*'ÍñM9™¤Ü×ȪŸý‘8åd">\ûºD~¿Ÿ§“'Oþ Þendstream endobj 55 0 obj 2199 endobj 53 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 54 0 R >> endobj 57 0 obj <> stream xœ­Y[s£Æ®ÚGÿ •ž6ekÌ00@ªü È:^%¶äH87ï– #l“ƒ@ (>›_Ÿž Þ8©S~py˜ééë×_-„Gû‘¿ãýÉç“Ï#Ì×Ô¯x?ú.<9_cw €ÚÔ…'x4á{FqåŒ|ì"jÂýûÙst¨“ò›ð÷â"ìì wïÄ–@¬P±tW¥ù[µ)²=µñ–­¸|Á+EU_-6lÔ°t5&$ÀÈM°å#Ûa{7k¶cäÚâp8ÿ%dK>r,Ëb{=ä³ËØ·ç„ï–÷ü,ö¹8\±’dÙ䇼àÆXˆ4Ƽäüœƒ(QK¡PÛ‘Ù_" Ê+ÿ«ùðu Ž”É¡Lª$¯£:-¸D×GnÌ~”'äßµÔV¿us€³Q&ÄX­¯“ǤLòXèa#Ÿ(©›/Uìy0ˆPP¬O•I}Õ„hÈø2Áˆ6kôôË"¶B!N–…¥oà²]ÍþÍšuB< g}ÍŽà7ø&­¾ù`{#ìv‰ÍóAmš€!¶ÏÓi½ú~¶¹/§—>árä5<!g•‘» o¸9²/ÿVäÜlk9€­åøŒëø,[½Ñ$@6 Dj]ÍWW͵rŸÃRUÛs9 ïn`KQÖÏÛéž_AUn¤m2J÷Ç‘±”o/¹²`©~T›Ž{ci‹ƒÞ9á›Î&©58Bq¨ Qd·æëÕâò~|%BØñ)øßŸQâù˜xg6·ÊÑòÜÕ»ÜvË=ÛîoÂÆ&Ë\úÄu¶-ˆí8ûÓ™ +î®ß®7sˆÂU™$ùKjh?8Æêé&„O|Ê’ÆïÈ¿[.Âûñ.yùò`G>² ùØszò]3:v`.¹¸w.079¦("œ†¨êŸM|¦°Nx9ËššÏÂÅjy?Ë(¯Ø6hhòGbÜRVÆR²½é),Çߥ}]”½sãOÆ&™½„ «‘Ûézz3çëûqèR íw¦ö[‰rí•ÛÂ4Ñ,Ú§4Wç8…ÕÍäWõw\äwŠOS?|,uÔ «¸Yý‰ÐS³eg*åy?éÃö+É4h‰–^}Kª8Ê’­ˆG3öq]ô”(ÇæfQ¡ 0P?TÚx¬¼â÷Ç(«:h½5&2Ó½nsAªþ4 º‰…À[zç,Ó¾OoÉw®¸éæ| •ëçÞ©™Cê‹Lî¸ùUÍ6hÄü Õ !Ò[0oíÿ”‹m–|MâÂiig–Vµ"žkè}¾Õžßn®$AõÄ>”ÅïI¬hI‡\ÅÅ.© žå;.™2n4d.åÊÚ–Ö:ã¢Ös(òT+ixð‡êò¤Š»šrö,UI"H–C˜a’õ\ׇoÏÏ_^^¸%3RCÅ!ÉŸÒ —Â7·Ñýé¼Nâç¼8)áHçë¥ ,¸uÖ9ó!‡ ()«YW¶`¤Â‚Â_ÔR›:¨%¡òt§p¿m¿ås»´ŠU¥¢åh´n àC.–Uk!9Q<%yRFwu‡B7®ömÖ๫}GF›Ëp´X¯ÀÁr¬q,Í3ãYQ”ÿ¨æg\ž~gÈ`BTü¡û>å^§ÉNKö“ò4)I(¯+ñaÁ˜ü^§×4nC¯7‡$NßÅüãXJuÍÇœ1qü_3ª:ðoTóGWè¹æ] .ôp'5 ¨P|,•“îjÜ 2«ïvÄÀaˆÅxЗÄÕ¢s¬„×p qµ¡ ìЀÓ5ÛQðòPFå¾h°ì[úxÓaN©`p±CZ\ÐSB¸NM…FPÌ®Pˆ¢‡4Kë4©Ì§äÌÇ(}º—ŸÏk|gÎÞ·EÆ_¨™÷\bsXVÚCž¥‚% 'e¢5üiØN›ôÞ%ïò´bK‹TU— âõR~”x¡£€Ö 䇨¬Óø˜E¥!w³^\"Ù9Ú"ü:&½6HO°ÄödU© ö”5œ‹£(h7m œþ ƒéæd€øšÇO“,;TqVþ—RÙGÚÜ>ÝEõq£©íñ®VܧGpiu± 9(r­|ÞÔ‚÷E)Æg[k€iÞIZ'`:((Žõ™t3îã+ô—Èþ&…´Ó/Ƀ¬«[ªTd´æ¶¼ÜÏò¿ke²/jÖ‚Ùk–7³Â÷¸$%ò¤8ÐIKÚ÷„Wjq;X¶jeV‰GŸm™gCÑÂ`h!¤¿Ë”ïZ˜u)?<‚ýõu®ÒâÙfý2ˆTT±äÇ€ŠÞ2.e¢¼^¹W v–I¿·tDº ¡°„î›SKìTž¯é$‡ŠÒ¤¢p‚Ú²0¡@á‡{/Ð8‹ $€Ûà®æ+ àk™-—üu;[]ßÝ,y C!½ÕÈ´OhуLUWÙd°Hmöú “‹}ÊKÝ:ªô…>‹¼¼·Ž2õÖšý:§•((ܲ81µùXd™è…¾†o/W>Çcáz¬^!x‹윭çÓpÎCµ¾N¿»ž~È`jMóã{Á- wˆ—ÏfOÇ ï¶\äv6 §×«+϶£ý4]Ï>L×ßÛ.ýødNmÿY®Ba¤üóîúZ Ç+n~•~Ïföa~3åÊÓä ^CšjøÊ5¤±H¿f ¢!å_Û¤¸{IÏᜉYZÿ׿iU^“OS³Õj}¹½\ÜÌ—›Åjih± çW󵄼6'Ôž¾Ö^ÄªŽ›D ­Íµ7H6 PY×ø*üõvnHnÜC,é¢õ€w„ÎAZÄÉYšue[ƒ %H9stˆJ³ãþÃrîþ/‰À9ö0à*E0Æœ‡£O~<ù ˜Ë„?endstream endobj 58 0 obj 2168 endobj 56 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 57 0 R >> endobj 60 0 obj <> stream xœ­YÍnã8ÞcžÂÈ% V‹"õ×{J§=c;m»²­$ž±¥´$Ïtdçy§X,Š´%;ÞE ²X?_U}E¹ë¸ò‡~/6gßϾw®é_‹Mçóôìã˜ù؉/éÓëtqOGpḢ1ß ¼Îtóáæ%y­Òârúë÷æÇ1ì›.?G.X ÔÒ·r•=ËU/p¼Po¼—+>.Dj%/«ÛþD.ƒ®­F—ÇÌñ:]æFŽ'äÞŸgS¹Ô =uúúó 7»¹–«‚; •{XຌvF·W¨¸çøLï; qróKïî·‡¡ÜÝ>D¹¡×r¯ïzr­ëyBº ŒHzAêö’¢’ù´]¯ßÐQÌáµG¿o“õê§tI’y-9K6x\ ®ó'”èZ¨èá\¯=¥Iµ-p»Öñ*™¯SR!ªw/ò¬JV…QËmFxXküœæ›´*Ðá:n¨¶È×ÛM†< óªyiõ’T(l>j ÀpS¢y€ã"ð±àxÃÏI•¬óçs¼5vD­M’¡OYàÐÂy¹xI7É9éí×%EóÖQ‘,ÖiwU¾ ="p×’!®ê„éR#~UªÔðŒ9Y^ŠLî!ž‹tòu€Èer­±´d«ÂYQ¨£hSZ]渕Y©¨=ÝÐFµÿLÄ(YŒÞÚ©µ¯–Öé“¶ÅÄp¾N²ß£~}úOÌ&é¯8$8æ9ØT’½hï¶a` æÎ“Ry&°4hM’õ·eºtT¢ŠH î@Æ:±§rý¶7ºëMÇÈaµ%³›ÑàÛÝPy/R>Å Zòûï$l3§êÜlPFbY‹X“ªGëù"êîøãf4™}éßõ†“þg±ü_—µ™]¾&Õ*Y£å‘•UËÕ&ÍÊUžQÍŽëâúøÁk8…b/qƒ#±'2Y?^b´wÑåj«Jñ˜;d¼ª(“qÿ‹móhÓ&nÅʤix,(»µbEúu%[¤”Ô&£Ê·²J7(JP£×yK®µ»!/–«,Q¥Yýè0Ö¨ãVƒPÙeÖr{ /ÈÓêúXA0ýtDíT¥b‘È•ã¢6)]=gÔdg±k ÕnH‚²•¤•·”öm*h•k#½ÃÞ›ÜÓ&—N]+­-;¦ýëÁlÜûy6y˜(´1Àð“iÓ‡ûÞ{éU½½¦´'h"í8Ô¥f>ÿ5]T*@±Õ)¦†´¹Ëã<í¸²*V‹ŠÐèñÓüªV»ÞÛ‚E6%×$c³Mé$$qàZS·ªaHgêq–\µAùÓ'Êdã ûQ8%­×¯Ãxƒþ°7™ŽûCÅ;.ï‹´¤±œ¨–óp;*†Ê­$¿û6 ’d|:­Beb}Õ€¼uXhøí©zÒ‘Ñ‘Ëú¤¬ZI[+Ûå,’ÐðiºÕ7Eh…ýÚæ w3…î šZ+ɨûkÿK ´/N³4ßb‰\Ý;6«*?,.»ª)ÀÀb¨ m X‡žQ*¯E2GI•·|KÁ!§-’ŒÐÁÙŠºB„±÷s›70 dç„(ƒ¤$°iúëã8耯ƒ€G8…®Œu•#pô¼¤ÔŸÔV.ì½@IMšMuqޭŤª R2`5oäÙ¶jªGµZÇáµÈç žäÌêë7  æ¨&ÂBöR\yM´F³ÊÀºÎMÕ¤flßq&¡F¯iF³%-”—¯ébõpeÿñC·ç,ÚVë”Ñ^Æuü¾]4±ùVùBe½™·PÐr%ƒQü€Æl *XÖ¡&0°Íª‰¦þO½äLŽU…Íw-gÔ’b„çA r­Ai—;À wÈ[&‰n `‹¤BàIú ç¼ŸB21%ÝgVÛ±|jŒÍ)LIUU»1ú3Ã0@˜M°¯†âú¶;(mgÿXU/D‹ØÒe±T˜,Ƚnc”³ˆ%5Ž›ÚXøê¨E_rãÝŪä9-?Õ 8t£H1GJëBVUö?mŽS VäÒ†m“òtåhݦ^eyÖµ$ËE–5ñd¶h¢bò¸ïò&û‘l^תxAE5ÚÞŒ{H¢v+X¯Q†Z^|>z ãÇÊxÏÄaÔ –×_&8û¡Ä@’èzBQ—„ÆÇÄ÷±‰Öá¯Ä!ÍtœaóõF´3$ÿ®ü¢¡],^’æ"_O5.éR{Ù 溲A RÊû@¹^.\²…dý¬íø,Úž¬ÛúõP>jÕ÷yäì¹¥aå•ÃÆÇÛúía›aûWõ.²JÂþû–UÉŽV*O»<–)lÓ¾Æå 5¯; ýÛ•xwxGÎÚ|^ýG[¤ê×XOòêvË“°{9Ÿe3×´qõØÐ~[:¡9ÿÏã·IvfÝvuX,0ßðd#¢éR-ã?ËŽéÍŸ¬7î6ïDŹÏñ%·–«`\sÌîDÍ…œøIš À ;UsÁ19ŒÜ²X-‹RŸ¬²ïIŠq’Ê>¤ÏÉ*>>À”Ýi¥>YåßxOQ™ã ;]ï•evBq˜Àô´ºÚåCâЉ÷õf8ÐøüÇKÕ~}Ë"ëIêÿÜ'=9´)^X÷‹ýwÖ—h qEž,iŒ²¹fKÅí1íâÊP!*÷Š3G†pHqåL¾A©í>]sa–8·È ¤ͧÀ˜Bfhf¦«ñéŠ.òTcíF®¤ì‘ÕHÑïû;d¯I iZôŽ;šF¤£¯7ô9@~ÒXÛã^K«]îg¿ˆœJ–_I’¥^0 äoS„G˜ËíFaâï=÷ωk‰=JÞåüÀbwá ˜$“hC$ ßz{1¶ÙÏdõg'CÙ(ŽÌš¢ô+0°Qãë–À1/"q¢BÉUY•Jcc²†À-aX¦1À Ý TÇ€Q †Æ²;?VtÀd1äšý–ú÷×ãO«Š X[fÊHî[› «Ý8“69û]“WpÅã¥zó,.'¿êÂÛaöJܤ_Fwö×7QæŠØz¦y¼ü•ÕOÜ]@{ìG!82p„P!“{ÓÎ׳¯g>¥‘„endstream endobj 61 0 obj 2404 endobj 59 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R34 34 0 R /R27 27 0 R /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 60 0 R >> endobj 63 0 obj <> stream xœÍZ[oâJ–ξåW ¼Hàq_|;ûÄ$l+’̳ÒѲŠpÀ°ÛÌœüû­¾¹ºIfŸÍJ¹íî®ú¾¯«ªÇ÷PÇgÿäïb{öýì{q›úYl;ŸggŸ&(è$^âvfOg¨Óçc:”Pϧ^ˆ;³íÅÕ:Ý5Yu9ûï <$ Œ›-/¨ÇLð °„Âô­Î‹³âÐÑø…Ynˆ…¥¬››Ñ”™?MpÔ‰<!xËè“y¸ÓG~ìaÊÆN‡ãáՌώò­ˆ?º=þœ[퇞kñ€úAV°ñ0ˆ=Ôîá˜16¦êÞ~ÏF_îÇÞÜ߉—"äEz +™_þ]ø"g„ªOÂÈ £¤Ó‡/'˜ü#«2>òâvª¼B°¤@˜Ò¢lÖ2–؃‘r(™z‹?ÿJ·»MÆhÐÛÝ·ñ¥Â“ΊZg­²"«ò…ŒXÔÎq¾’ñ:ç“A|‰Útó²ßI¼ ýNZ,¹-ô’vz¾°Ýæ¾Xf¿Laÿ-Ñ5_làù­ñ‡Ø©œ8ÝìÕÄzHùÄM¾±ö>úÝÖˆÀŠcÀkâ…1y5fC ®³ÁçñP2C¯pr?¸žZÖù…6äAìاåEC{Î>Ü nùTԌʴZ¬ÓjÎP9¿”X%HE@B­Cßó @+ñ"ìûøÿc '``P [•é²~X>JzcE♋Tâ%ͪé#ÁO5ÃÍðþv8›üiÎ Ÿ—Š<ŒA%ê#E¹²C!k„ !LHäÛcX‘„þ[¥ŠI´_®Ó&uÒ” mÁ,÷ÅBÐPÔnÿ¥Üó ΄a _z€bFŒÈ`pÈÙ/Ç,ª,m- n:Ô©5²Þ¥MžnøJbƒMú(UƒW{Z@ÒÊ&&Ì¿|‘oíȦ”ìB­i¿Û€ùÈÄx_:ÅÆÛKéܶŸÄ§U‚½ø˜Ö™ˆmblçj_UYÑløRId°^@“ImBÚ/‹Â9EÀ…Œù Áá)4?Eè góµFÜËòÔü),l?Ò’¾pé†#8BÖ&5QVYãܧå ‹Ò$„€qrGò'ö»ª²é×1çrÄøÐƒ¿K-Ë­cᩬ¶iÓ´šŒÛY~@äÌu(ÝBj©YA;cYYBÜNÀ0Ô €+ìSH^2K&ÛdÒ¿¸É ˜UŸ–ûíNAÄ$—âµâL ,1B#& rŸÁ©Õ¤¦â6-¢ÄØŠt…}ºs™‡ÏbàHè#6vô¤r|ÌB-‹´G¦É¢,¬|FɇüTV anðyîX„–ì×Ù§ mã«É4È%—þj¬÷ªlWe5`ô¨,„öó#Gå 묰ò}Ü?'!˜CP›¯ÖÌt„J̜…±,­ó¬n¤~ù­ý§µå”k :pØB÷×ÈýëA9f¼ä·Àfl@aPËlX;ôgÞ¬å,zÜ}•.köèJÒÚ“¥§Èv»b¾”º'¹^—yº!zàfa”Yï~óì¦ûÒÚÏ£ˆáe„¡]¾S0ãºpé›T©–N Vj•:j&!“„p ÕÓ~³±üàÈY ‡·³žî¦Ã 6(1;—ü×í+²|Œ-§îZцr›"ˉ [RoË"o„ÔCž¢÷î‰H@¡@x†y1OšB #-…N´œH*\‰+Oî !&Üo2½â)©W߸$;QâVx,½Uå•N×D…%qð†ÿ†mÊòÙ¢ä&¶–i<¶%Z^»‹øÌ_Fñòyx3ºãy²Ï+¾^vü0ÔØÀènv/y®¼¦y`Y9ßtb€t~1ºî±'=U¢döÂ1§²Í¿ãoé51T1=U{ü£*·³Lpç øŸ_tÇRÛÌ%-Û”ïL-t§HÞÀlÖ; –`x¹zL È|%ù±µ]xŠ)ž_v{}q*€Æ‘,½Ø4¿ìuÿ™=qjS3Ê“eWlÊþ±Ã…ß9\qbÛ(²ÂEQ኎pÑE'Â%+e1ØiµÌ9"R¹ã )»|÷ƒ¼7Çpd’ Lj0ŽáPPò0h8‰}‹c_ÒýÆâØ´qr ÌXÑw'µlÈÒÀ)"#XH«Dõ”¬J!3ÑÞ”ï~d:bòÁÇVÅའæÛ6b©"¦ˆ2‚ùqä£ßÛ[ç6Áf‹ÌÍ0ß§3^á{Ç+v$V¼BByÒcDìx…19I²6^×é̊הæ§%ñêþöv4sÞWøÆEÅLÖ FOÉÊÜ])ú뵟ºîÉw²¤3Ž®RX·¸dÜC8ÚªÕ‹\‹n-°z_t !GuÁáìC¸Š£ó¼ä‚ZRïÑU°½U5¸–€¨ú‘y-±“¥ËkúK NÿVEù,"õŸ¬ÑGUÑQwŒ†íp)æ¡gÍ1ü«Í1é6p°îKŒy‡Î…°¾èE¼g&ÔCí¸¨S ¨×;¼[®çtÇÒ ÑM»ˆ Ž–Ñk O#J”Ôeát2² cö.uãØQ«õœ(È]@ª÷9oçsÿ›W®z5/jXf.vC"ãuv’û$Œa…f»äd?åˆã޼&‘Hœpö:UMòXÝcdBËýW/J*Á&v ¤¯üv`n}ãk[.…¿ql^ç5½ÏëµPœ€+|G4‘Àª÷±(·[Ù)7”jgy¡nBÃKW¢lgêI£$lÂÄT7D®«rWKœ¼Þ©T.ç ¶Ð8¸@~Ì™t¼îyñ‹%é+BÍ[~ܘ—b{WWòF$Ðí9sòäõ.ä©MYÍýöJû­Ë‚Énÿáÿˆ°ú àsÇ‹óu8ë|=ûzö?½-endstream endobj 64 0 obj 2260 endobj 62 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 63 0 R >> endobj 66 0 obj <> stream xœåYKsÜ6ÞõÞô+¦œ‹SÑPă$˜­=h%EQÊñC×îÁU)j†£aÌǘäXVU~|@ƒŒFÞ­ÚËÚ'= ÐèþºûëFY(ÿâ¿ËêèóÑçQ2óϲšýsqtrM¢Y¤1ùl±>"³¹Z3ãŒ!Ÿ 1-ªWg›lÛçí÷‹ßX(MaÝbõŠR[€$Ö¢]QßI)š˜…ï¤$R¡%M×_^ÝH1¨ÚjÌYJ:›“P”˵óL®#°FŠ“@È}A~ºÝæõªSj%AJÌi«¬7_„ƒ ë¶©”^$ÌûM®ò .u—Íñ£ôE©WÂ%†¯‹ºo”P<Þ-f¶.·Y§~`±}tv[æÊ~”l8çMÓç5³^íœ 3B}v°áâ»Î(™ñÛBYˆÄ–…šm_4µ:'QÞ{´%N)›l%…sÆÓ@sN(ø*$òÇjWöÅV[€Öƒµºc¼F¼ß8r™ã¨j×õŽ6™Fš4>×¢/RÂÕ¥-Qhóý‡vY¥-Ì‚pf}ß·Jj|iƒö¨ ø Ìê4IŸÜÔ‹Ãþa›wÊïs*Ф”JhK¤/m¤ ):kó µ`Ôr¦/k…^;6º×X“2 vŽyÇ+¡·ÍvWšsyăþ…rŽP×äÏ ­ø@`˜¦Ù(±- ˆS[“Nߎ蘯3À©2`¨#ΚU>…¨ÑãQ:âDjb{éüQ>ú¿r”×15cY€4äzËçšwPîÚüæýkUˆ´ÞëåjWm_*c2+=®›¶Ò¹pÎb™q&$üuñÛìúí®w²Ÿ7\GƒÙÓ¼j·Ü`.ϯ•úÊ͘¡²Ë(%Vñdr“vA—ȺKV?Ë®y%£A‚ú™˜T—EÝåmÿ!k•@퉒Úò ŒXJ}Àš3ÔÀ±ÜÐáKÔpL&yÓ0ÄUyû Ý*ˆÄvk™µh>|§%V®öº¯Ë{L¶1‘æv+EONñ@œÂ4—ÿAX8‹‘d?ñ¥…, @–"°;,¿¹¾:ß¿q¦åÊ¿Ø8 8lL|'IؾüâAèþ¬àƒË]ÞTy¯í‹­Z%sŽïÈ*v÷E¿q‚Þ[j·ù²x‘¯†&m„50frSíNkg“\C…uþkVÒAìœw²F&¬ÈPRn¥Ÿ¾2ê0>+éxhÑR9ÃṟD–¤ˆ&ÓØÄÀG&}¬b·•¡öœZ*y’{UÜmzÇWeÓ|r|UŸœˆò‘§¢ûQC”&³ŒUcÉåeŒB&R~ûNeDôÃfK·wÝçRiÍ­ídaiáJ—©å$%jžûÓêvoL1h¢Oá62NþæSyˆ*TNÚA-WÍÚ>@uáF*}Ìæ@ÍTrzt¹-.„,2Ún®]Ç,‘¥40ãÑóµ©QÀ¡)—°‹UÞÒ!¢‹O2Ÿec¢†ÄÒ«É­&0­y*shÈ©¥©KDvlùåÖ“ƒ›ÚÃYÊ«ÑÈ¡‹ˆâwU Vnui±>ôó‡7WÿÃÖP£˜¶Àª—^6¥ôaÝ'¡üÿY'×ñ *:%‘Æ ¡´ßl.ãS…ºG5Úð’}¡•²‰ Z–¥)Â&qKƒs¬´VeË.8@¬+ì• s×3±äÉû}›-{,'Üâ xí3ºq Vx:Ô8,‘•÷GfÄ0ÔCNÆœë;ùàTÛ%èD²_}|¤(*º(Ð6‰Æ^âÊ’3ƒOéò¥i÷^A¿Âlz…ÉÃŽN÷–÷f×±ˆÝ×xòªè–»®sÊo× ­ñ˜zšõ³¬Ö€²¾i;Äe4íªTjà«%øYQ ”°’Їk¯4€ѦÚfmÑ5µ:9¢Ö¾Býy—CD¹w÷ضÛf}‘•¨͵‚!¬ù\Nß ¬8@5”å,ÀbÖ$@£Œ(†oœYÊ¡7ÝÆVÕ%ɈCY8²››pùªñLb:BÉ4€Õßc Ã%²VÛ& òLpÒgy|lµ4Ù'´†W^NßhF5aOÞÿÉ(Îî碽”Ï®Q ƒ“ÎÞ +úJˆ?Ì$ã-$dœü‚à‚0…®7µÃTfg¹ïšmÞɱZ3± ¶lÊ]¥÷ß?ÇÌ*ÁЙpš0Íu¯ØdiÇtæüu˜¤Dv2‘\Ýþã;§ Þ\¼¾8[`tâb¥fŒf"¬d§Ý"ÿÚT=ÍÇïUð + Ooœz*Wcf÷©Í@ÏÖã§ë·¿:Âë·§ç7¿]^¼ýõïÊu”¨A·fZMçL»îËóõ5RY´ß&°q(w´™é|þÃ|úG®NGÙäx-JŸZà‘ýðÌu“Í•æ²ëm“¥¦2·çƯ¯Þ\Ü,®¯Þ\~|¡Œâ­Æ3åŒq ¿çPp¥Ó_)§Úý{ùÖ/ùzí:S‡¥ºK¦ÏWX¤„œD °Hiyæ‚$¾Ì›vU˜¡jt†Ü>ê̾ÁÈÐÍ1Wg*“FºL]i*? ó»lç’Ú›Þ5r¨_ø·Ø™0" iç˜Wçàt—m–Wf¼0j}úÃrêÑ7Ø9$̃ Ê —vEâÑYzá 7…kçÅ2lhUJâoPXPŸÂ1ã*ú%ÌU8접ϳ/n~=k5‡rã/y¶Ê”N=* @ 9–¦¦•¥”PùlÓâ°Û.ÿÊ\X š?jS?jßî;}Û>áºqDù3RÓ 'ÖðÏóÖêŠÌÇ©ó±^5Zö6®ù3zOSÖíöû~“ëé‚ò*4·¶9Ì<\0íéб@Vù¥‡©Õù2ïº §—ÄÚ{àpfL‚¼q ½¡ÅuîÍ0%r•ÌI½«nñ9œZÆñ\æE^êIpwèw'ÏmÞïÚ:_i/ä|¯94u¾î(±i¤¤ö#G‰ý›sɇ•WôX8.Ðϸ<•lýh§s#ïÓó3__­÷ƒ ‡ºÏ¾*¡°.—uÎåjù.¡`;é¼3êL{BĠ퉺©çV_ÆUkg÷eî;ý“.²çfƒ‹â§pât…n0 ž`ÃÄÆwâº)KdósàxƒZ´ü‰îºu7ÆŽ›NÏ´Û>¬w%rýé{®€ÅPæÕÕ'ªØ_,fïÞý <Šþendstream endobj 67 0 obj 2456 endobj 65 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 66 0 R >> endobj 69 0 obj <> stream xœµY]oÛÆúè_!ø!±‰åò›¹èCR;i€ÔNl]´ \Pm±¥H™¤j륿ýÎîÎî¹”â¶(ô `¸œ93gfé:lâòþ/7''&dêo¹™¼›Ÿ|ÃÂIꤑ“ùý ›ÌÄšIàŽL:‘7™oÎ~\gÛ.oÎç¿ø¡ÃÂ4…uóÕYàp¨I$Eÿm‹êK½Èñbµð3—„BHIÝv>Þr1˜áR3f~Êo2cnâx_ûê_Ç` ÇNÂõ‚|¾.Z±•Klª·y“uµ26dêA——¥XÎa°”>­ónG œÀ׫׹X ‹zW­ðx븱yð,ÇäÈõ½¹N¤N\I‘kpÑC^oò®Ù‹íSbV-öpRØÛ“’?Œ$–’¼)³­t@(äCË#ÌòÞ>Ç-×¢¬ª•—¼”xDÄÀ™X˜LfžÇCò? KÁ"[a°Z4,ˆM´ÚÎ^ßV¨Ñ=I &¾ö—ð`,"ôœ]äBo6k4fòYbS,³² ÁI¾z£XåUÇŸ9hºyô^‚6NC´¥AâŠ\ÆÒ7±|Î6Û2ŸâÁ|íàBÄbæ‡8ø<ñ¯?_îa|g\ýõÃõÕÝÙÝ™+ô{ܸ£;exÀD;“¡,TK\k‰{w~wþbÂ.#™:Œé#Ž¡®Í6BÈa¡ßÍÚ¾/þþA’zŒ»³¢BF V´wç:ñ X÷Ps ^X…ŒOF\—qI$°‹H-‹®+sTj¹©ÛŸUV«ì2ê%ª@Úä±cºª®$È{§ IÈ”L’„ß(<£%S©PaÔY´«QÀ†õóxJGâ>ó“Èáˆ2éÄ¡*£> ïUŽ1¸yî¦ÒåN¬eûz‡øòµuˬŠoz×J}¡“Ú¨Öë°2†ZkQYnxÜåܲùĪ«ºË1¹â…¬³r‚*ôzhU»Í—Åý^…‚cN×<±Â§ì/DºBw’ò¯#•]ÒHÝ~QåÂ× –õfƒ[CΚ„)‹J¢Ÿõh¨6»¶Cµ†I™F㟷e±,:™*2¯8wM…Í…uŠ~QÏa‡Ï5ù¶T]Öu%|y¼„)¾©þßÂbî4Úé®,•gèäªuòélLÞ7õf.Š…¨‘‡ù«ƒr}~еÂÀê~W-ù$4REnë)&‚ñ×=e@ÖâÊ7²wôâ < >½#‹^è&<#‘¿·—Ÿ.Gi*r#æòSD"’«·?_ @ë 2¾Øs]Qøßß\ÿŒ)jZě뷷ÿûp)ÍÔ3|OlòËO—7—fo¥N½ÓS‡=“OD½(äÜǯø!^ÆÇ«KëÅ[<°´óã•­ùîŒ)!f|Ê©Žðpujdrá“`ÆWMx‹zÒó†õ=eIkæ"·”A«©*i‰Æ(V÷@òbŽ×40qÆèÖ=³Šë^ʳñßâÙ1’=Ȱxô †ýl1ìõ§¯ö‹×„aŬj-ŠP¬‡|šv^ðiÌùŸù2P> ÌÓ—¿‹Ñw:ÃF/ämw/>‡hÚ•üÌÔUÛ¿ÆÐ “é(a¾ ULªgÉ8=¦s[—ûY{÷œ&iÜ£T©Ù5ÛºÅylæ¥|„I{7=gnj={$Tý-u$QEædÕ„`ú–ýÀ·Û¦^@£°GµdFÓÕ£_D ùœÞ70#ÏTÁ•aJ°fö‡±Ãë•<WUHÕ¨bf€eYÀ„¬mÒ¤­ïå%l`b C¾ª.ŒL}¿c´°À¥üUÖ‰£B#jjL\âÊ6oÔ]+Ù_Ï»‰â†…¥n“m¡“håå^BÒW·B¦Gxh²zÉÈf´SÐ)–ù´´óÉ6&%⑸éÖVI‘QçŒåªh·e¶GTšÓ8¦‡Ã0þy`mØëÐ$†^çT7>£a¬¿åËõ&Gm5y?ðÜÍ71owØ*Sµƒ1ž{e]ÿÞZÍçAlö4vë¢=0߯ Å1Þå·­$3Nƒwç"[Ò"½½“&×Ä•Iý†ß”ßÙ¤ü«o½x!YØæ_½Â0pôrú}óhÅ_ÁT+ qÉuØ¡1×(F½1÷ÀmœGÃñ_¥°Ûl¸` í¡Ë;Þ;’bSóä*è> >> /Contents 69 0 R >> endobj 72 0 obj <> stream xœµZێܸMœ<ÍW~ò#Z¼ˆ’6A†}ð¥û°ÞM·fF±ZjKêÏþÇþoŠdQ¤nÝZ$a‡C‹§ªN²'"4ˆÔüº?Þ|½ùP=f¿ìÁ›ÝÍë42’I&E°»¿¡A¨ç‚ ‰ ¥1‘,Ø_ýó1?õEûÝîß7<&4Î2˜·;¼D ‘fèÇ®¬Ô(“„%vâ{5ëÔŒ4]ÿöÝ'5üú#K‚„ˆ„ÂÏÀg”° ¤QJ˜PsOÝ׊u'5]’vÖþ>ÃB{äPý‡ÊŒÄAau‚K; ¦IL¢TÏæ©šÞœú²©»Uë,’$sÖÿrÑ:£ ¦9㿬›eŒð­N3–Ôwú÷ù]Þëæ¥€×½²Aéoæ«uë<âDÎ0Œ[J1J!<,© Bªé»Gm™bzì›ã1¯UYëáX’$RLJS¹€É·Å÷j2G’X¡H'PxжÁ•W©ú©-{mšAB;jDê|f„‡‡òXÔì˜WÚpœZW:( k%²òEUè ‰ò'<÷ú[F†{Ÿ«W¹Â);Sa€W›¡¾Ñ³"ÂqáÓpF2ºp,Mö_%ä\g*S(*Pï׋e’©:†Øþér*€e³mõUQçÇõ<£ ÝMÿóã™2g Ú—å¸÷A$·c͹?uD ²!Žþ)Ô),MÌÈ)oûr®rÍ™ê(±8ãñ ªTÄ$£ú¸~pÈvÄP•b ª)¡,ˆD³p×-ÇÀônî6Hã„Dl¡t}âóëÔ¡K°NŒ}S×Å^OåxÉMEÐx¢¸ÃÃìt 3pYnÇŒ+š„Ù§¦½Œus·aF¥™=ÌnDSg3dØ5Xf65r‹7k!Ã/F ±†œ˜”ýû‹`'ÈRS™×Áê'Tw—SÞuOºÜa® ÛÃ&ªÔØæhõ|)—v®qà,à}6*JHá鱨Ñ¥“ÔF‰$¤OA“p»€¹b†±É2µÞÍùJ!(Úls!ˆ˜a燶WØCMÛÃucLOâ v²ôoxs ì.:öuÄÓ•Fz©FäÉò‡kÓÅ §åÐCÑ‹¾}F¢¡}ì›ê|¬/ÓLïIAün‡Šu,ÞÕˆHr±3î‘3€È¥Õd÷¸Òb«¤b‡}Öñ©ìuc‘§qŽ |Ê“Q–p½€}ÐÈ¿C(º[½"õ dÉÛ9”ÙJy¾Zˆ[²LI0L1ºSèOÈAçf€qœ rl"·ÜÁ¬ÜzýQJÒXG,̘¹ô„Ü5—¯˜ÌšÁ›sYГ„{²ã]}°;ä¿q©–£F41›f (j`1¥¨!?SßÜHâjsBkÐÄ7XÆÃ$Pé³==æFhQãcþw Ö9§³„½mŠ5ÕÛò¾4z—¥ž“æ— Bø¾iÑAwÑE!^^é!hyrl±›i¾SÓuåÆV©—ÁðO:¨õûÇgìU`é ¶@|ƒSߢâ÷­M8¹Œ"j†ž1ûRðÛfŸÉž®ÈÛýãLݺÃGÃAóì÷EÞŸMyäµ7Ý@]bÒŠèê€ïÐl‹¯çrXîŸoô²ƒ©Emô¹ Ë>¯_Î;¶%"G:¦—Ørþ“¿- 1@u»c´Å¿ºArˆYºÚ1€ao~Ñx‘D*uW·îTCž™‡³–¹¡ˆ šÉˆKt,m‹óïîy&M€Sÿ-æ!¯Ëß,}I_‚®o¦âËYsI¿ ý|óÄT[XHbO:•8Uzì²7ù Úñë­A÷$©µÿR=Ïi½Ím»–Û\ð«í y¾Ô¬RxQŽë%îør •û139F°\xÞƒô~h‹O~P?Š©—–Ýù¤. †‰{]QTÏGÃô/@ÝLõq™`¶0ùBry¯îv íý{ä—ÌoÂÝL2Û\ðÓÍwîb£Ñ|H¹—”ÿ?[è"á_9QÅä¢û¶ü´›A¿y2ô` æ$¢Zæ…V»ºg­ß—zuæ¿^­ lbé_6—ºòÙ–BäUáRƒX¤¿ˆ]un,âò7÷WçUcÛ½ç{cÞ©ô_¿¾•ÝßPR8^jíØ¸ À·üjÔˆKá‘}}>Þ?Ü"¯»ú«Š¾·?Æfý0M`€2Êóü a`Àꦟõ‚ÌÚ¼×/{•Uºò ':ëŠý³‹ñHØ7K…;ò%0ZŽ °Ä3qkÀWžrk4º>‡¡ó¼²,uóè¦yTÙû;Nõ£Ó5&2ê=q¤Í½ªaÛhcÒÍGL·ð„»@Âu3#Ó¥‹ÇRùWC]ïô¥Á¼x_g‹œ³Å„óË,qŒ>#ð‘ÈÆ”¦^¿Á~šøÙ —ô¼~¨eE¬€°í»­ôðêÎwáddÞs¶[ãé*XuÂú—¦ùÞîE¿'hÈu¾Í@!­BŽ©Pø9¶H®CGuûwy é‘ñF̤§½Äñì­ƒ^mû‰žƒ™êHÊkò°Ë-ž½3¥¬"dŸrúÙžK‚rIñ¤3œg…èäb©èú·M€:„wOðë/±ÅÖ£]ÇZ¹žêZù;RjÍJ‹áA ŸÕ`nåQº~ÐeQ0r~¹S-ƒáúMõ'~kµ¬È#½°ÕçWo‹ºhóªüÍä^ÌUâ’ON gžÓÚL¬sÔKôxÓ?®¢¬Ž”›¸DxŸ*ÌšãôÚñ²W· ;RÊç/}N]Îã”òP¼4™í6¶êîÊC÷ y¬^ü¤iðà“K§Ѩòn–z>\Ýlt'r²Í•µ>ZpL²Ä¢—å˜{’SÕÂG óKßSirb”(-Pm1W“Dï°>9NÎ2+ë}u>¸û®{]£+Ô`£wË=¸†ÇÞéÎÈ¡ê…Ó¯ži®Kµå‚‘hÜã `u ¯:¸‡”>áÎKo—h`ú¾yÍ»d ­ ÚíìWI"-‚Â]EàïpP©æýk|¸ùpó álùendstream endobj 73 0 obj 2341 endobj 71 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 72 0 R >> endobj 76 0 obj <> stream xœµ[ÛrÛF­Ê£¾‚¥—µ«Dw€ÞÚÙQ×Ú’mÑ©u¢-‚"l 1€eå?v¿wçÒƒnp†g+®Àà\ºOŸ>Ý »Ž7qÅðg¾=ù|òyâÉgú|;y:?ùñ­MfÎ,öãp2_x“©|g¡ã†“Ô‹œØŸÌ·ž­³][4çO‚Èñ¢ÙŒ¿7_> ñˆ/ÁŸÄêÑ;VV·â©;~¢_|-žDòAªžÔ¬}þâZ<þñm<ñB'Å^«“i¤üL“©ç¦Nâ«mø¦r«`æ¤^ôyy=—'쾨–…Ü~æxp¤¯âÿ‡ï­7/˜Ú˜›ƒÜÇN˜ðw¦>·^ìzt?t‹Yÿ¬dÊ#⬼&žÄÒn¡zr;ÞŠ8&:䘕¶ÐÀf*8Âs¦öÒdFÛìXу„Tì‘R¶¨»–GØšÞ\CÖ¤ßCÆAú† ÏWÐÖ…ñÞÁëWJ÷ÌDàáZîLù‡X«lº\òÈ Ôr»«›ø  ±Ôr9jmli9D‡Gþö»ÊÌ1æ±(iºƒ:î÷sÙ°V¥5Îuèã3ÜKwiF«µ‡ŽhƒúiÕmtÅÄáÔ‹iÕœcÙª8=ƒC¢5·EViŠIK‹eŸîÞ Ö ØdÕQ…¡ºR "[`'Ä!ù¦S«òØÀl¢/¬E÷¤Ø¾vë æ®¹.òºZ*Ÿ1ø,Æç/=ÖíëB0øûʼn$ýdPìò“æÅNý‚6†ö5Éé¦fŒ'uÆ”^…—ò%Í ¾='xÄ3EeØaYd꘻²]ëâ ØŸÁ[/>òŒ@jnxm9~;tZßOëóx»üÑJ˼$>¥¼žàÓ*AåÜoÀÙqÒ‚¤„mkƳ„7Cò|©-™TÇ©®vh}|§`A ["ÝOV¤±ÚÖ™0ë HÈ% ´½§½—Rf¤BØe œ‰ci«X:BÊ—&ÊL6…kÌ= ã ˜þÛ˱t°2wž@ Û¥I×#>v±#(=ƒDüìX ˆ¢È¶ûB¨aˆ”šbQuàX¸‚­“ù'#…œª¼¿‚ÿà¤û]Å<ë”áÚøÿ–„µÔ¨û¸ô ‘¥¡Ô¡Ò2iNJ0˜l hÿÛ [ONÆý`μšî …b?!‹åMm ÍõÂPXö™ô€(¨R*ƒ^8"JæXå/^”Ÿ¦ã´Eº@¬î±Ðœ8º0#Ÿ@Ámëæ“.úñ5›ˆ°©#œ«½eéW º‘•¼SGjLzÄnñâÞPC~¼rz}1Õï}Îpq ëöaòôåŇë‹7×ÏÎ/ÿqõóÏê o7v†RGÍâC’î53êIogø@mií¦Û m®™‘¤I/ÑÅáö5yÂäO>DÁSá늈¯i–B Ö‹qEØø$!Í—²€n›È_}t«¯äa#šò˜ ýµyHë_sNs¨ýõ©Ò3”T£Ì ÊänÙ$ì²Þ§5"ÞÈ—j}3m/úˆcšÿ}2…U|ò—}8}¤rvÀ6¨’¬PÅÛ·|èCäf¦ä¸@çk™¸·Qçõ’s•ÅdƒøÖïs4M78¡yø%¡EaÉ.©O>¤Zd¹J™tXWg—¤å1Pš5|-Š #B€ÉëxÄHûC®õ7Ðü«šoÉûêAS'ãÁ¿vâåDâs \~IfññÞÅ|òæäÍÉÿâñY­endstream endobj 77 0 obj 3453 endobj 75 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 76 0 R >> endobj 79 0 obj <> stream xœÅZÛn9æÑ_!äa’V§Ù÷öÅÉ8™gk1û  $ÚêÔ-÷%vö?ö·H›Õ"¥x‹ÙäÁ0M‘¬ªS§N‘ 6 åü¹ÚÝÝ͘3?V»Ù«ÅÙ‹O,•A™EY2[Üœ±Ù\Í™%q„ɬ`iE³ÅîÙë ß÷¢}¾øçYœ,-K˜·X?K9KÀH¦‡þÞUõ­² ÊÍÄßåHª =ÒtýÛw×røÅ§lVÀ)²¸§˜Ç âh6gaD‰œ{Õô⥞'tn”Ilö¸èäæ(Í=]¢‡¾É‘$`åxÑvUS«çz$ ²sµRÀÚ¸xÕË¡L­ÅôP·i†íZ}ŽÄÌ̺QSÁµê×¥ÀS%£3j±]ǵ;³ ?ú]ïQÄãyûf4¡ÀIʨhâÊv¥7)É1ú ÇØoy]c#bÙÀ¸mèô'3ÏjIPŒfTõÚøà˜p_õ98pSZ@`Y©¸>¹¼ºxõÛå—ëËׯ/®žàúˆ¥ ”ó<—³ LbR.Sã˜øôu³ÛoÕq²8`̸æOŽ(ù8ˆ¶Þ ÒàžEÒ¼|6à„ròB›í$ ®®Ý©ˆØáU‡`Jä)pÏõSÑ·¡ÐàÎwí¸œÂ—…A>F«Ûó¾â[Äœ…þš÷|ÉuÜbµîr3Ô«ðÍ·U¯Ð•Æ2øø×ªÓÁ—'58íMÓî0‡“\â gßYÏÅ¡Ìâ «4&)o!“ýøœ÷›jµÁ%ò‘^îåH„°fŒ>ÁŒ›'a¤ L2ßC¦ó`]Õ¼­¶ÊÒ„É•L¤ÄÝPµzßdÜZt_ûfïÀ ©‰A::ßõe(MÃÍ,©åš#Lh‰¨ÔÚ*n´±)ÙPÀ~ÈDéxd¤°Ò‚NhƒÁÓÉÄZ*}&ý‡¯ucÒØ8Þœ1"½ßpÅaEìÁÞ<ÎK‰Jå}5ƒ¸GïZÇñÖEwˆíÊí¯¶|¹çˆ8k¯×H<&™ênhÑ«„Ú’ —óý¾mömÅ{ /F¤–“2÷ຼÃÜ$‡òXYÕ8-YXSu“ˆj†Y±™Öê‘xù†b³þ¶iÖ;;ˆ Ìë•°tšq"+ùLœ<ž˜Cˆ’Âð) 0jÖu ü«¡FN±ÆL)hÒÎÇŠÂë^Å;*I"¨• UO(%¢,q"Rø¿ÃÁZ,#áÉrR‡ßY®<üb-ùc#j'EWâ¾ÍÚÜ”IÆ(p3Z/%/ª5ÂC¡*OîÒ-ƵÚí›¶ÿ [-ÛŽ °K¶b'vK]Ä“ˆ°'A¹uTSkZ[-’}¤¼l†ˆóv¾læ’U@ ÀÌHŸ  Š÷Mëæv7¬°º—€+fYyÊä.òóÏ(èd^c[ÞéùWÂ|ý mˆLLz~kÒʦùX?‹ã¶¿­®N¹>VeýÜ€˜î7” 'eÈx bb™Ÿ#XAR1ž{]u½LçÏÏ>?÷Š%óÑ­(@!A¬ê1š.³½1 ¨ñ1Ûq ÌU¬Ò#¬ÕìûjWýKY5Õ:¾j³5¦ÀMâÙ‚êÊ:ÊQâ:ZHs·:ÚþÀ¥<ǪgóÆ>Ç”½i¶ÛiËŠR í‡ýÙ}\™LÒ Å?#ª*³.;Öîð8Ì”ð{ªÜR…Ö•“F‚ÛÜÀ‘-7Ž"eÂÂú¾—uõå»Ö”ÑRÝW)Û4‰‡2ÈT}¸¾üíòõ‹pBJ«ør+š CH²øÍ§ïåÌ/j[…ºRÅ”6˜…a¤¸ø×ËO—HÆÖ_ýj#Ú€˜œ;y £ ¹¿¿i›ÝB<ôúÃÕkOÿðîjñù å?åȈdj¤†??ê.>gXœ­u:1'¿èʆàøù3Ó»9Å)NÀñª8A"*‡,6ºb¤¢Ü‡ÇÐöbXZ"K“ØŠ±„Å9ɾÝ:Pò‘ã­ö"jþ$“!eÒAòOã«:=«&­¶·BË'—d«Xa/N@M4ÜPW}çhTOËä3lßTºâB½°i°p޼(Y€ò¢„–JIówXëå‘1\e‚S9?^¬8R7´'Ö#T\DSq±âÛÕ°å“z»3L5µ]:¡±þ^h¡4íYøXÎ~äÜC%ìÛ„Ä´<.ö›¡+W™Òu{±ª~Òú%–rÄX«ÎtŽYC º–Èðù(1$+¼Å8#ˆú“õc é{ƒ¬j q5q©õ³n4â² VlÍ|´ƒÔ;ñ¸üzõ”´7ŽÈõÉ5ìáL‹¢3AªÖ(8"R14H'FËï ¦q†$ u—ï3l*-ZuðêÕÔëaeŠ0>Åõ`Äwlj¾K79Žõ†A9!U:az=±ö—ä(UÁ_Y’×ãƒ=’Ã@YÄ\zúêÃ?â_>?+ÃRxZÇ35|Ž~²ë#ßOL‹Ô0Ôã—/¡M‰õ%+sí¢".®~ÁbQ8úù¯QöÄÿOÁô­ÌŸÐZ0t˜ §{Ǝµ©lõÂ9ŠÛ6/5;Û¡Ÿ­iˆ u#ÌásoíK¸Ï‹´é8²kZ÷ÈôÖ ™î§U%°€å„$‰â7 æ»Òô°´5ø¢ë†ñ6uÚ³‹ÖíhÏ'–Ø4­@üô¿èÝ<½Äa*œ¾ÈõwEÇÅP+VÍm­"4Èkžû:qsEã)GG{܃+9ë¡Ìñ)ž¦PDÿ³*U66ÚErXÖìfXŠƒ\*Š]qæ§Ä]+ºaÛcíOÝKG1;È'Oh ° ln†]á|Õô•ׯ<æXªâøÎGôæ¹K˜õÛØ©@°Ÿd–«¯¼*›ÒÓØyÏN+£COcGžhÜÈèHƒD·èîl¹¢‚ÜZC1Å"W@~ÀLZCgD½ù9Ã1¬i«ÛªÖ·g“'ÛPž+a@9”¨D‹IO‹m¤»½Áy2òÒ<ÎónSŸ øÕ³ñuÏx褈´e¢®Ï§ÄØ£xæQ·h£ W_õÝí¶?$!Ò0ø“½=Ò‹À€É%Ò} zž(,Ù“ûeZ+šÎ}à˜^$ÌãTVšƒ+ü؆۠#•Ç/sÕï”GsŸíä’Áúä‘@¾ád'h§±;ºg0íR»å{„öé´·¼…XhÆÄþíPž®’6 o™vý²çøåÁÎ\UO´ãÛ­0í·¼l§Q„cÕ&3Nr„çê¶ÚéÖ/¼ÏÏâãîDޏÙRz1R ¬XŒ¶å‡ùž»ªuS“çDòí MðÎlž…øe°ÒýzÆøžF’{ðŒïù¾Ón€O[”}ÓcNS*­©¯gè§Ë_üìýؘ(þšì¤27N¨þ7×åþŠk$xí8¤’U²Ö|j„Þ½XÎw|¿7¦Ê‡•ñåwlYîõìîgÂUSËGÝÎEòPu¡öa/jü¾ÁDëx.}–˜×éÁCÞ{kS\§^› ‚&MúZne{TdAÌæ!cú‹7ŠÀåorÜóß>L¾ÊuûÇGx´°ÇÃDIíã߇ÑI¤/Ú0Ì›¾ß¿|ñbg7„HÛNWo±å„ n«.vuü`0ùBQA’0ðy‚Ó¬ó.³gÏþý4endstream endobj 80 0 obj 2843 endobj 78 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R34 34 0 R /R27 27 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 79 0 R >> endobj 82 0 obj <> stream xœÝYßsÛ¸žIßüWp܇äfŽ‚¿2“Çç»ñŒc'–Ò6íõ¢‰5E*$uŠÿÞß[  @ÅNçúÒ¹] ØýöÛowáa/ÿ©Ïb{öå싇åšþ(¶ÞÛÅÙìG^†²˜ÄÔ[|>Þ/÷x4¤( ^Š#o±}u¹Éw=kXüë,Œ޲Œï[¬^Q$–ø|%†¥]Y¯Å*‰IôÆ÷b%’ )¬4]ÿËõ\,s3/AY`,Ìðà #âù8H¡bᅦm–µp+…Ó&ö`uøÝŽÕêt `0ã¯b%EβVØRþŽÀ¿Þå;iz€’ÁÇùŽå‹"ï˦–^P ^”€ù‰,å=,ñMYK›¾ß½žÍ‡ƒ´ˆ¢t°5ÜÔuÙ¡¦Uß ãà»õ¬gŦnf´ŠÆ–'¬èfö¥µ)âËj= ND’¼à+ƒÚÛˆ*GVŸMP=LQHxlh¢8É<$ÆÀa¹—/¥¡6ämÞ•…4› 2¬~ìrÅ@En ÷¦†l*Ú~œ‰cRÏçÁÁòâ…Ë)±’ Èø¾ï€JXßêq2›@Ê~£¢oÎѱö7¹™¢l8’!A4¨ô£ôV £olöòv¾M_QU6OkÆVòJŒÂáÊ^º¹CTjX³™s€@Ss]¾lö’|DRTíÛ4°15– C®TyP4õ‹õ¾e*Œ!σ:p(B6e±Qá7°C ɤ_NÊLÆwÉÀÌ0²­/‚Âáî^å>¿kàYWð¼’;#Ëúæ³rÓäK¿ûqly³jŠý–Õ½ÌyI혊cR-6ð›Q:Vh…‹mÇ!/ǫߩÌR¥Vj¾’ç‹§Ø\vÝžuŽç FXÄ_ÂR+æFç";-¬Ï˪“XøúŸûôÿ“‡¯'kŽ%1¸ì$ §§‹Ñ_$cdMâÙ)Ty0Lì;iÝ´Gk•Ä$×A1$Aá·Ø­ FÓ®² è0þ~…(úßúõDʧVó1MÅ"÷•‡1}úˆQêåEÁº’)Œ­j¦à‰ÏuËænd1KD:qò^V<œYV僺„g17‹ƒëTuõÜ M·Ñpõ““#ÃŒA<ÕAEUresªÄï&e±NYÕÈÍîIbs‚PíÅr÷eŠ4a`A?Ò5­œ~˜Ê`©ý–å5ÈU"9§åÚ©!¾#t€ÈÕÝÔ ¨+ "€TÖ]ŸW”b°²ú¨M²c’ŠÉ6/6%{tš%lFkÖAŒ‰MûàÈ%°ÐEÈí¦ â)±Õ@r„¢ø;jy®«6á‡ÙU»jTûo; » ïDÕ~ìz¶U%žoÔÏ#¡Àö™9:ì4=‰Å¥ïÏ~n›·%SÅpwŠ`w(ºl¶»²ÒŒH†+T55ŠŽ¨þw0t¨gjê'SÚap{V7ÒìD›Šˆ­¨:•vź²eÒ ÑœRÖEµ_)…¡O±÷üwဿÁ*»s ÏüTEc‹!fqS–ª|Ä Øuí–»Ö*“g¶%£ê¹…Ù’[0¾¨Ž—q6_¹¤ÈUu0Ž:D¦ÊU¼øl@!V þÏгѣÚlO`Tê‘¢À×|»«Øë!éx‰‹0NdAp*HÅѤˆH@o.>]ÝËRˆ">Èó Oƒ@†èòîööêrq}w»øôþJ:E­"¨ AR_øºòïo/ÞÉñy‰ žÊÛ”ëÍ!TÜÐßÛWÿ Šª]6uÍ»vꬖu¾eo8Zö )M~]ÿfY®CY Èà” ¡WÀài`~aºèâè8-íµŠW9¨H¶eŸÛfëiêç/׬پ´A,šj¿Õ3”)ª$Çú?>­mòU÷Òf¾åõ‰*ËWqýÃÇ¢/¦-˜¸P©fhÐ\µ/fYÝ4UΤö³o÷d-Êà‘mݘwê±V͹š~åqÏœþ_×uÑÿwîÀ5ùÐ=õç+™<‰œõôðhVô_õDn<>×Ó™~mým‘ˆ?)r®ù)c‰HÝLì»ZxÎ>œýd|endstream endobj 83 0 obj 2176 endobj 81 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 82 0 R >> endobj 85 0 obj <> stream xœ¥ZmoÛºÞú1¿ÂÈ—›1+Rïw¸²ÖÍ2´I›¸Ø†f(KI´É’+ÉIóïwHŠ”I¹¾w(ÐEž×ç<çÈ¡3ÿÁWë£ïGßgT¬©VëÙ_—Go®i8KI±(˜-ïèl.öÌ? ^0KhH"6[®OÞ>f›¾h_/ÿs䇄†i û–ùI@ø+‘\úÒ•õ_ea±Úø‰¯„b!‘+Mן_ÜðeÃ3Řû±OØlN½„°€ï}{uy¹x»¼¸ºäû)ìåc’ðóáùò±ðè<ë³»¬k~Dbª¤X5u]¬ú²©ù£ "t§ì¤&–B¹ôÐhå¹ô$Þ#)lŠåJÑÖE.Ô H0¨{÷"äaÄLÕ£Œ‰‡µŒ¯D$ñSPH¬ü²#bJÂP‰Øõ-˜öqYB_òüX®ÑâÉ ‚©P<ºÎpV×gužµ9ZŠùÃ]E/¤õùýxbsÏ—æ~À¡ 8€Ï<Êý×¶‹\ñõÊ‹ˆR#*àr±>JÕš˜/¨]Õ¶ï2&n«U).¥ža‰Â²gÿ(íWèWoOžË^Z ô£¶‡¢áļ¸GOÆxb¶­¤ib⻄Nö ] ¯¾9ƒƒ@W):çÿñ#ŸÄ³(ùö'¾-NfaÈßú³+K†dõã„GÞ,Š#üíÛ׿ O1F‰ç§à©„³íŠö·Éûiâ‘hEÁpÿä4‰I{Ã/ä'×Ùº˜<œñД/ðýûb1‰qú&ëºgL16x¦ióie ÄHz˜2,‰8œpÝ´ëXH‚Cµó[!b ó;n»ieü˜ñÈ8DôŽâô÷¸&  I>`1rãüGÀñýâ þpñG¶éŸ05ÉBä¼,ô‚Æ1 ÀqAHÂD¸¾iûýBál ”#^bœ>›ŽWÜ.4÷ß}V[ U¬7½(@°G =ÅOVñFÈ—%$T;˪BøÓÈé‚¿2?Åb­±]㽆Ĭ–—øº* ÙcQ;˜Yzë“i¨>¨½yB84LKê Ê¢\Üde+±›ŠZ‚ö“’‚ðþ ü]5M×Ýf]ö}‘äJºFœõxµ¦ ™,¨ð„TT¾¾.ër½] ñ)§[¨öK³µlÿ¬‚{Šºh³ªFôSã¶n»ÙÈe–ÎYö¦”‚ˆ¨˜v«‰;g$oß +}6ŠKq•oˆËk4‘#p3Îðè®óʸrÅ ;KÉ8¹žæp•çy¡ª‰;Ìñ¾i×–ã‡àÓlÐ ½¸ÉZPir ¸ß4¹<žÆ‚(Ò,Œ(9¨z%¼HQI*ö¯šj»ÞC3 !™Ü~@­ž /§ß·Ízúì*·( gœ W{+8„¤‡Šx" Žeˆð’+â\´…Eœ]ù ê3#¥Ûõv·Éú2«=ûü#Ù'Îò„MBM[Ô9h Ù{lÀ’α½ävmd‚QÈqN本2þèýÅÜîaë³\\ËŒJÙ{¹òçU…á ¤¹ÓzÛõVV¡>ŠU댷Z<½B]S,æ}óùƒußD9[5m[t›¦Îñi˜rMvlFSÛfºe«š‡r…¼^[·Ü071Ðù¾©ª Ll`6ŠÇlÍ9Aä‘«#äø[\/DüGHX9¨â=cÕQ–F" ­}¼Ó–Œt·{E—¥¿o‹öÅÒ„H) ¢RßmNñÒhZ_ãîm$ül½© ñª¸â[Ë+sI.åMÏ3*^ÛdygU±¡'4·F’Š:àPp³¬›V¹*shVò*«‹îCQ7ª[YZGN°-îÎ&G9:®·ëoâª=U l`/t`©È± N*Xq"œ…ù#vÄ¡Ä?DLðí¡ÐEmÉ \¦Esëì2r4âP|äI¶FQw[ñÄ`š)iÏ=fR.fÌn€hJ¦Û“óòfyûZˆäqGªj‘ˆ—ë@úaßÔ¡MB4Ò…xÛg fœèÔѧï'ÑViŠqO•½ÈtÍaËx»4ó#>ÑFÜ5o3Dœ1Þq,žq³P‹QŸÚ6©˜ˆž·×‹³åBƒçòÝ⟘B:~¾r3ÿà„áßB’ –ÌÁÁ'ÇR8/dFÙù:ð ùšz8Wƃ=_n..Ï­ Ï/n–˜Œš¤ÞžÈÄu¯òõ¡h€¶/²°‹k Ö˜Äúv¾¸ú¸X^ÿëÛÕ'1Í`¹}ýW~By€\éLsŒ_/î5%a»î öùrD-°c•PÓ¼Þ™¶q´FÁ&Î~Ì6ª«—•nÔÕÆ­‡bVuªÀjª_8”5û7SÍã)EjT3Ѫ?ì|èPÒÐ$@¿C›¶ø¾-[™ö°WƒÕ¶.¿Ë6”¥=+ó¢îËWhÙQCá€"[©ú夞#|l‹Q¹F\K‡!î6."ѣIJ1J˜£tÏOzø?çóMº³nòm%[O“u/Š %Øê±ˆx›ïOÉöÐÈv`)Ž*± žÝ48'ÃuŒ¬®xÓÊXy*1,S£’JŒÆÌ? (ÉЯň:Cg$„Žº“^šË!8Ã:rÝ:\?´Iv´Âýc¦Î ÷QRX¤C£©½Íóa?Pé""DxNEjgßh!|ew q§1"[­Š®³™åÎHJf”Lnj(œo‡fÄLÀ=9d¡Ô4¡Õw9Ø ˜0Àw£Ê6Çi³lËßq Åaלa;et‡|}üÕOóéÀb=ÉÀzòÂÿÜÖf:>EG«ÓêÓ(ðÓ¾šè¯nn¥€þnšŒãçœ&œ"(ᶨ“qD3Öøg_N8"_~AŠªž"L7SC„3ôØ`Ô'éh޵jÔZ¯dQ†VË÷¥Ë7¨AÃ8ÑoN2ÄaŠ÷j"|—î@W!40ºÝSd…Á]PL¶y3Gè™á‘U•aàhéÍŒ`C|åAr€T–Ûµ²kpºêO%3ã“pà[C EµÁÔÐh³6 ¥o¸ÍU(y-¾ ‹Û"{è!(†Àj¶UßY(ç¨ ªY¬UÃ},Xpã¨.ž›ÄÒä£:vèÚŠUùj¥†2Pë4zœJÈIµÓvyOQ‚®­E|ìý©±že8„Zàa\ŒŽ0ûËí]WTjî¬Ø,•Re^í#JÂQcÖs_Ù²À±jNçnT¾¸hìK÷_×Ь-Õpÿ ãýõ8_}<Æ[#£ÚÙäÊþ‘§Þ-Ïœ.2./^Õ%Ï4ÙÖ>×Uµõ½&câðÒÞ¾1ÙÊK¥ª ¸W+ü3QÆEë÷§î¨÷“Þ˜óÑ7¹>Ûö G!ÂÈ ~9ÿf±.k93Û ;XÆ,…˜‰1Vuút§bÄH#ÍKµ>F6©¢0s_óçªç7×ï¬tv™Ûõ²H"ñÁø úGkŽø}“7b_£òb|²u|r4ýýU·‡bþ¨3uŽ>uka†rNIôg›ÓmÊbUt–:Ž„·‹›þ½Ó€nC(99Yg²¯@ŒáuId_¨‰‰rº:5¿ñ‰U%Þ__}ÄíÚÒ·'7‹‹·‚Øò1L<ŠJÌÓbjöW7èµQï&öžZWãaHÔ“ä:ÎiðSûH/q#|p*Þ7RÍq†ÚàËo­)‰ŽÑ Kì\@…¨±üañ~iYíïW—Z ¿õ­«ZÃ,,b,=ָ̻bµºxþ6Ô¾‘õõøÏü,øåòâó—Š«OVdz7éGïrôùmnÛ—?£Çˆ£Ÿb^»×9?cß³XÎ>}>úñÒ4½endstream endobj 86 0 obj 2948 endobj 84 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 85 0 R >> endobj 88 0 obj <> stream xœåZKsܸNœ›~Å”.ÞTy¾®Úƒbk7ª’凯‡=mQ3 c9&9–•_ŸÐ`7 Œ,WŽYW­-úùõ×Mù^°ðåü{½?ûzöu¨5ó×z¿øçê쟂dQxE¦ñbµ= KµgG±çÇ‹ª;b/ÌŸ/Õi œbô_ÊEä‹,áÿ Î_\׎ڇ¾ïåù"ó3/ÊåöcS}=Šjsòø0J=ýB,÷ÿõÉヨðâx‘æ…—ÈÝïÊC/ºoJ½Ø+£Ž6wà{þhÅN|=Vèqo’c–r%ånÐ2+Á=ã¡Z 84—¶­¾\>šR”ëz×÷²ÑÙ]+—rå~¼åA»Š/hð8ßk»Ö%Œ˜$Ckm¬6¢ªí£ö´:÷|¾,;Ñè(Ñ?oZš »u_Ôá…—Ž†Óu•èUt/£$ó² ‡€„ðIý@n¸i»}Y×ZTx<žöJ®ÄjÁXdТJëÆLÔL9…oõ NÙuìµÚ \o›"3¯¢O!»Fÿ•=—T²_<"Ò /Æl§`ºaÜÝéüé8XÁõ­Ò·†¨¸–+òbµÑâ§,ôûã]/j±Ôö8”Iž6/ÕþÜ‹PA !_ÇkÊãÐîË¡Z-#8„|(÷ìJ/!¹å”aè¼ÊiO©ã;ðòѲ.¬Ûú¸oÈ•†Ñ4Ž0 KÕ©!•˜Ã½žÝ™ÂÝGr|q ç¨>(/kú%‹fë[“ú/1®(ÉÂÉ´Ð$<™²jP–¢z[.ßÌG¨µç즼k†&£Læé”"çÐÛ¶„¢Žf4Ç«j…Œ\*0·”ÔÕíZ‰é!RR¸¾m›—:]·Í’™ä?G‰'Äþ+†88`Á9Ê@;MQ‘ÕS6¹ýxJâ°è½G+¹)"4ª^±Œ™”>¢¡³´Š•؈M5ЮlÀ lSR¨Ëᤠš‰òí§«·¿ª—ó㿈Ý$?žy.£$Q¨ùqß=5;öcOnŽž=9–Óy}ð¢Our²bˆ›£ÿ¢¥/×±gÒå\dæªÎ°?@Àj òFYÙ‰­èD³FЀ†€½óØC³ ¤õY‘7U„Mâî„ixçdžwÏâÁ÷¢Ý‹A–@%ïK’o.£`(ãŵûa-:&G® en×á´bb„M9”–Äiîʵ‚Æ0`™ëàNOÓ¤L)†þõ,&ÉGٓΕü™«~Šã‘Y_ ×Yø8í °.2 ì3Çè©pb``®‰'ÛNé‘\áó9úûñOÝìh°Ë3FùаydÅ#¥ŽHš&k[Áƒw¥™ÓŒWì°æålÀkº›Ï„Sß±úoUÝt±²É0ÅÑIÇ9G-î^pÄpA$ÏfIájí×”IÄ“AçH'ì²³ü›ÉuªxýqüRE×8¸µõI!sLd3ÖòϾ[xh?ºùÖ0]Š Ÿê¿&ežÊ=e"@i#—É8S¬kã4ŽO-®hfxeÒgÝ»n¥`§+‰k’g&b±†¾Eû:›$¸… ϱ۳ÆQs.àŒ(–±%i‡R«b4–%w%?_CKæa¾’=/õ»w]š„¾ñTœ_ S“f©Ên°VYÓN©e»¥Ý„²žš¶c6ñ¡’Ðö¥¶û‚1Íh½î'M³cföh|MC¡ƒÇIâ›¶é«£iu…à¶5ñ›ók àMùO|+WÓ%„&Yh§a=Êë1ðj&H‚{Áoj<|}ñÇå'¹ aMi÷þææòÍêêýÍêêƒJªZ{3B„qró^ÕÄóæâÝ%ªÅºÂ®-7ºD-Íõ†ï‡Ó ±$Òeç@Šº_Á¬òo%JÈ>ùʾ2#7È+W*îcˆó]Sî…|¼QßráRNï@ùHš\t(^¬¾@B&/§ Á[ʬäY üöéý;ÜN1õóBFFFçß®.VŸo1ÆémŠ¥Y·LĹ¾º¹´«,{}q{;z×Þ_¿ÿd^_Õÿ^jsã5c—7oÙÉÓÅ9¬À&ùqH«€E}2ÚÃyb¸‡ ‡fÆU¨K3©æêg±dé  \ÔyNÈž¦LÊ¿êÜø)6ŸÅßÕ†ÿÆŒ)×Uc~3#,ù€}̹™ÎZ5bßjkÖ¼èÐ&¨'°|. ™Ãå ŠzMá°4·3Hp0¼ÿd½ÞU÷»´ q‘ò±G È¿Çf¨j‹=˜#éš{akñŸ|®kwä¢È.`>ØZ7Öä×¢ì”$›×=6^¾ü 2#yëÃ…ÿR–:1˜lûòkïÐô·àɬèû`ë‚~a2µÚél ¡?[ >°ï¤³T,×;Q¡Ò„"s’¯mQ;ådôb«¥Hhh¶Òæ¬]Ë ®N w ËþÏJÊü·#9ȧ ¶†Üv¹Z|<ûxö_Lp>Ôendstream endobj 89 0 obj 2933 endobj 87 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R34 34 0 R /R27 27 0 R /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 88 0 R >> endobj 91 0 obj <> stream xœÍY[oÓJ–x쯈úB‘jãõÝH<„’¢¥)mR Žªmì6æ8v°ªþû3;»ë]gBÅy8ðÐ2^ÏÎ|óÍÍ869ì¯ø¹Úý8ú1"(“?V›Ñ‡åÑÛkŒ; ÝÐ-ïÈÈÂ3#ßómÇÅ$°Cw´Üœœ­é¶Íê7ËïG^`“ IàÜ2=ñm& ¹è¦ÉË&uCÛäÁÏL  æ’ªi?MLüöÚF‘íGž–—ÛYĉm×gg/¦óÅÙx6a§}Çö=©–8ì[Rn%6(J"öx±/oðho]Îñ )co¸Žã²G˯Ÿñ×ÕÎϦsZRªßq>-'ׯÇuEÓÛöi›¡Ñ‰íùè=“Ävu˜½^çëGúôú¯‰;ô@»~ÍÙl¼@Oœž½g—³ËkvÜ¡ˆúÝò}v4fzB&Ì?šŠ•$¶Q˜¿rG÷M˜Ï'gË)G•{*b|¼k²ú}»ÎØOö4tí(O·´i«:eØïì@Ú¤£HzWÒMƧwÈŸXCq b@óϬæÀ¹~h{ñù8^ŽˆË·YµA“} ºóëË q\ÝÅbÙŽÍÅøË‹è Ƚžò¦—Óy3]N. O{µä£^d‡97ùòùzJ‡.ˆÌ±’ô—Ó¿MÜÃæòÛ &#ñ!Š;`ôá´zþÚßN«á;÷„P}½úÂ!@ Æ0¯3Ý¿WuÓêÿ.èO§ˆyÃk1'.‚´KñœÃÒNœ{\g% }þïV\ækgš-2# nx¨3*ƒc»1íšâ%P<‚N+yÇâyã"Üü -ÑNh‹ÔÏ›-¸Ù§*‹'á’¹€9«ûYÝãG^ÑQß‹˜)8âB4ñåÄv:§¯¡+ÆJÖ­À!º+èêýæ"/³;¥ëitQÆö§waaŸj,ûLñbÖHeݶyÅaæâ…àsÿc-ƒðiPal÷ð ;‹%dU%|Xm%TWH4\Dì³Ôæá Ð/ÏPn4Ùªâäþ)ãÿ«ÑT*’…ÞPž _ {2ÞßÌ9F†(,÷3$HÌ I:‹ó¢Ð±À‰†¢0Vò5†ˆìb3ÞA*§Õî®È¬vsF[^ÁèåJÍñ5*û‘ð§‚ð Ö!*€U*!Ï3rÀÀÑBO”¤]A¥ÆÁ¤ÔiÒe¦EB˜.f‘#ÓÕ©ðÌïô(9@hkÊcÍœ‘ý‰ÁCoDôñ¥Á—À–œ7D¯%ƱUµÛ ‚é¹Õ¥¦ò//¡ gM+†oY*+ݤhg*»nRï¥ýP…ØÐ-›³Yžf1∫îwåŠÕ#Zä-ª ÍNk,G¾;.a~È„l…JWس««¤^W䌷_(Á]¯Chq5ãNXnH ;ó¸….¶ÉÊVŒpaW^×Tf‰êVu¶¡@^uM¾pÙÆD·Øm·UƒqôÂ^I¡­¨ ÊΡ:ÃæàÁ^Ƈ_bI$"銉²¿5v•§†ž1nÄÓ.…c§†%\ƒntIÁ€yöÔ¸·2Ycˤˆ¸(Gº2yrè#¡ÛbÏZ‘íêÞÙä|iýër:|Ÿ[¨¸ÒÛ\{Æqlºwn9Ìq ác~Ñ@à¿" ã…„»Ü»JèîÉx™H´Aj ì¦ô¶Ã‚õ(…ãÍb:ÿd@v3Ÿ^ÝLŒb/˜ÄǧÿºÈöÅõôã{‹pÂÇc_»~ç{‚{ès_­_òµëðç„ñ|~ šD-èmå.¯&³Á/ ŠˆúǬ/½5;ìÔì•¡ñü÷º‡3ÝñºjIé/¿'ÄÖÿz«'‰«×sýcB¬ô ÂÖÖ»¬[)«Ï/çfzÑ:§…yÞá3IÿÛÁ³’áO 7vÍ[>Lª Ó:9•‹#„+èêýðæDÓTjQ,ÿÝž¤ Û?軣Ù©X_ô&{h1·?\Ò 1óRk·ó®Ÿ`»•×”Ba@ WTå#ïºÜ„æ¢Mêr@–èˆڱêôÓVL¦ìf}Ö¡ES #Ài¶©Ê¦­aŽB¸PÍ«šbºyä_­HÊW®™1TˆõTßÌÅ óˆ×‘`»ÉDãhoú­>Í^•9㬘töþó"˜ûddD€çb.O–£«£«£òŒ3˜endstream endobj 92 0 obj 1838 endobj 90 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R10 10 0 R >> >> /Contents 91 0 R >> endobj 94 0 obj <> stream xœåYKs7®ÊQ¿‚Å“ìˆÐ¼JåàÈ)¯]NV–˜S˜8„¨Q†3ÔÌP–*µÿ}h`¦1 äTjo[>ÈÕýüúÆcþÌ“ÿôßbwòpò0ó•Ìü)v³Ÿ–'ç×~<ËYžI4[Þžø³…Z3‹ÂˆyÑ,óc–³åîôòŽï{ѾYÞŸ„1óã<‡uËÍiĤT€$AÑo]Yo¥4HXš…WR+A†’¦ë?|¼‘âóëdæ§,ðceÅ" 3°i¶ð}¥ “©ƒÂEƒÊO\ŠüLŽ¢G´&ó^ƒT¤ƒ|¾ÍNôíó\Ù‘É(˜P¯ïE§†Òá„…J ìXÒ·­¸ùòY%ÑWñÅŸ6¼çkÞ©=aBT‹4©z b¢~S¶`IõŒÉÔ~vÚ mm¯´¥Ìkå©—¢E˜'Ì÷s¨Œ@üЊ}+:)ï˦6IÍÒÁóÖÖ}Š3zÙ_Yº€³¡lfW¦'5F‰ºƒSµïcP^ ÷z,X›So*±Qgå,~…à)¡G;óŽ}‘ÂýXÛ>6íFG>$:ûF¯ L$Ðñ˜eákÉÝïE˜,Ž3Ï'þŸéŽëð˜þù^VWÙ±{ÞÎu}eÃŽï*cåÞÝ¡SåøÄô5® ^,ìçæÐ꘎=sùùÝÍÍ•n¥1Vï°o¡ÔL¢–ÿr‚ūƔœ¤nDÉÑoÒ®{ìªî¡\O@ÓÖ£U¸iKíYX¨“ùÁä/"0<ÌH³ìyñ'ß †¤³ÐÔ‡óá=#þŽò¿”úL¡]jŒ ^QßIÐ2âö›! kw¼¬W§7} ðõûæÒ¡Vx»ípr-ü(UÃ3Ç9¥¬Ê-s†<^6u ª[9ËeWj…ü„ñ2bª†ŒüͳÒ÷ÄL¡6]}þÖ]üÍRg}n¸ë°i™”eÓ~ Ë 5-¡¡åõÆìâ yèT{Fù…SË÷12 ƒšF²ómÎG·Œ«—²bØmÓþÊwbu:Çñ“Æ ´j(He0™h BF28ÀàȺ´Š½w@,&ª⊵jõë' T­6ÂsÂyh«I2~$¦Ìï7ëâb„³ ˜Ì“ÜH/?¯š‰e¯ËîšÎ‘õä¤8 ÁùÆ‘)qdkî*s¢£Äž\`eUVƒSy4ïUþÂk@×–mE©ÜÍ"ÉVuP…9¸pS®ÛÐÎÕ)-KXéaâ»Ãd®~‹C:hæ&ã cØcAmNã/mÎw ïd‚ÓÆ2¼Sõ•G¬Þ ?{S ±3©ÖI Z.ýÚ Gœ ï!L}t= Ðõ0hàtsÁ_·UÅ §1hœü :¤û-ôÌ¢Û‹¢¼Åq¤r†8Päè¦À¬ÄÎaGËZ( wÂñªZh¶ bU„‚#¹7cg³y½¶„<¯NqþXc Êâ®Ù „¦¾ü!=¡‹cCôÓYÒѦrabåÈš­³6$~õ±ŒØ¢a üuóÉ—ŽìyO»&ÁDôŒ³¢åBú³ àgµ FÕ²‰"è¢MG”°«ÿCû Ü„P „ãÅÿi]7OΞps,…nx1‘ùßHbdRÈ%˜Èܱ&zÙ–!]€ påVÓ!$Ä-Rkó'Äe+xïB !UÉÈwD¹l¤kºÄ“(Zk<¥j†‰JÏQëà‡ƒhŸ5m˲¡‡³!áyÉ&Ú?:¾HTf…òU8ÃÀT"5ûhQ9ªµ>k©ß&ºÅ'è}€~õ¶?x¹Çâ`&[^½|ê}éçåìËÉ—“ÿ ×bûendstream endobj 95 0 obj 2173 endobj 93 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 94 0 R >> endobj 97 0 obj <> stream xœ•VQoÛ6öè_!ôÉA  IQ”Ôbk6Š%u܇~qÙUaKФ Šþ÷¤DYN—!VŽÇ»ïîûx$0ýg·ÇÙãì1àds?Ûcð~5»Zò8È SBÉ`µ›ñ $Ÿ@F˜ RƒÁê8¿þ¼©»¼¹X}™E1ð8ËÐoõ0— M-ʘ>µE¹×V¡@$ÎñV[b2¤ÆRµÝâÏ;m¾ZŠ$H@&×FeDr–‚´{±Ï«cÞ5ÏÚ_fqF/P62rÙ~%Tæ{íí^_4°Ï»›{½žJLéÂ|É·ÚÆ#/J·žó‰q}ñNÛBž à<  w–èµb·žÓ›Î·z®ó5îÔk*t?ƒsa1Âí͇7ë¥DiçÔe6‰’Ò Æ„^øn¢øHn«Ãó¾*-_iOC}˜tÒ+³q}á°/òI¯ç´W†m“.Vß*•JÆwUcz5â­(;Š’xŸ•½;IHŽW¿¡|QCNý¡þ (•B¬ÅüË9ÑõÚ\ŸˆÁ»>@ùt\¢¨Û¾¤‰Íå¥OzO“õOJÿû¡(óM³´§ÅˆÚ…4¶QüÚR£·®çks±ø)ïžÛ.?BõÔAÝ`w¥éúˆÏ7K/´…3"÷­9äxƳÈnñv\zß=.bˆíñp`^Ïy}ÊyJ‹êæë—™ç©f^ ŠW0/04ÞR»# šûÛ 1ä#±Ãø©-ù>z§€th“ý÷¡˜1Q”ƒz“ØÀÝù“ê6;h!Ðæõ¼vÍwÒÏ> >> /Contents 97 0 R >> endobj 100 0 obj <> stream xœ½ZmoÛ¶Þýš_aìKR ÒD‰ÔËݧ.óiœ9p›I´Ù’+ÉKóïï!y(R–¬ªÅ°hZš<<¯Ïy]Ï%OüÆŸëÝÙç³Ï"×ôõnòËòì§E8ñ=7d1›,ŸÏÈÄ‘[&q£py¾ÐÉrwqõšîk^~XþynÄ’¶-7ÌK¾ï&D/݉+¡úwQÕ׳{±4–ÄjyÁŸÅZ¨ò’çk.V~Z€† ÷C*trH¹>8~"t‚½ËW¹‘ ¤çC¾®³"¯¤¼ÄåP•—L^ë2XBmþ+ÔM|¼6—’ˆeÒßr1r½@/¾‰•Ä¥Q’ Âi©” nØìª_õšWä\*^6‹o¯ÙúU®†Öj*VB71*ås’¸^ÔH”Ž#ž‹ößLhƒëY¥”öA¿H-m³¿ð,m”æÛ÷®!nC7åœoT¤íàC”|æFÎ}Ž)À3Ò'CðbaªÃ@]êP&ÊR‚qU-ËQgç{žëº­õßlÏwj=¤.Ø jÄeR­›Í5/v¼.߯Šía—¯T '‘ðG¤]¹~M¥ö>µby©Š$&¬Uþ‘Yi5!ãa”èr£ñ7ËòZ‡9ŽuJÄHã–ËŽbߣjн³¹n]}±÷Yè"aà³û÷¼N¿ü×ä¿Ëˆ}„î‘Ò½Åñ¡¨ý c€´¢YüÐÚ¦µøQ ò†1â‚`ûæéQ%3–@ª` ZEBÕÒŽŸ¼:€„A˜/$ýgðâÌe`¶¹ùò´XhiáX‹èL–à:}ÚòÇ<R< G+-·-@ñ8­vÂ\Q*FìZzXoÊ ŒÓ›†žÈÊQzÓ”«9$á°We¶9-;ŽG« >‰FæóˆKǪ̼Xô\;GÞ÷§½Ì S°q*3€]äcT&T´Fé• •¼‹A{ô¤›lÇó °û´ü8€„_W›$¡ÚŠÂWd‰%éŠ ªu0rÄ’D¢ÙNIô$Ü«T>có÷£N§ t«Ô,P#4W ©Uù’Uu–¿HmKYér•X½ø˜¢¥u]fOH $j^)ZEF¥œæG-§¡˜ÍSSšGn bAnŽˆ1ê#‹úEúuÛס¥ RŽ>´IÁüTq‘ ´ìÏòªNÏ+Z x<ʦŽìƒr0ämw¨êŽËŸ¸Ž¡aŠ*¬þpSìð-«ñêðm8qH:¥9ç³Zú)¤ÉD“aÍÕ<Ç”mMOY®s“ybçS´)ÛýnÖ„í£ª +ðËÙÇ›ÇÅô·ÇûÅÅä¨[Éëbô›×Ũ®0FöPv^®1­¨=3VPEXƒ¬UæeÉ«}‘oðS֪ЄÞF'`TÌL–Ÿ…Å—*sm$^.UáÅÂÎïæ7迹îáz~{.Ó†ÊÙ‹®ìÝù§?n:¬v9»™ÝNï—‹Ùíõ¹Œž# ¸$ÌÈ ²ï±íײØ÷2g}‹„†RʵÈ%Ö`"3EΈѿĤ‘ššˆ0LMû,à¦@΀^ˆûFpÓP8HN‚›'Rk(Ì;KƒDP%oÑSÝÁº~ˆ¡Ž¶*€î—´¬ÃOco´Úqx$@í¦žÑŠ'r °c¨ÑXÍ…"ÝÌHC";±|W 1“º~H2ÕÏøŠÌ·GpÀm) ñDg—²Äƒ”å¹,v#Éñ{‘Å„ª}ZgjÂ÷c Z ÐË +*dÓ¨~Éò´|_5Z©b$‰ØàXù >”ø\"Ç|Ý zž¼ŽŒ3/WMs€âùõU‡òýøÆ·[篼ÀVk®Ë'©üò²H¸L? å.­e&ŠÇ„F»C¥{ˆÍxúTáÐPTòë-z~¡;MðUÂä0¬ˆfÚIÅKÄ¡¥×èoLüÅjÍýOb߯Í,vˆ ^ò Rl-Ô$ Óï–¦3ô0ËCÅŸÛŽJM¨9*PrgdeñúPVEYaœ‚“}{Øn 3bšZo£ý~æwÉxOlB‘vlNºí-«_Q:T¦1tQ¢MO=~b.kCZL¼3)ª5îôñFUâÖ#^‹ÃK¾œ2kXê¡L«™ö×ýÝô Ãgð¦¢#~c½78’_Éb§šW’cÓ+Î;qHœ9Ý<Ñ`ú#ºƒ§ºƒbŠý6ðô˧±øD#Ú“¶äK0!š¸œÿï׏‚ÊVF¤ù«ÛÐú¶SŽ·]¼Â|£í:ïhÛi’ Û~ÛØî1‘º8TÌ»‚Ÿéw‚ÁŽrô-N–‹orU`Ìœ֫¥÷¶‚(p¾Y¼¶û‘=O¨÷úKDx“ýG(}¤ÁZßòªB:X:á“H|DöÍÿ|ÀÖÝjL'ÇÓp×EQBGJkD5HޤÕqJ` ¡5/$‚‚_ZdÁ¶àºgæ Ú4iž5ûFõª¢N3ÖsÚ$Å6Ë9š÷àbst_lß_Š\¦Ä~sê)龦»MuXió6¥’F²@Ä-Ø“Úñ@jwï[;{¡j¤¯™g}û×#¡ÛL®§óOÓ幓‘ûp5¿¹™^-gó[üÈ&0"øê;٘ɷtGõ=‰ø[¨% šÃÁ‚su› E`5úŃê„ÌŠ«yg ôA6£k¯–M³î¹ÛÕÅÍÑÁÙmgŒÓG›³®¨ëÎÒJe%œ3K.=Ä“ZÞêÃåÝ|v»\©" G–þ,ÓÄd†Oõ½mÒIO~D=•AŽúÕ|0Û¦ËÉïg¿Ÿýßo*endstream endobj 101 0 obj 2434 endobj 99 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R27 27 0 R /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 100 0 R >> endobj 103 0 obj <> stream xœíXÛnã6Eûè¯0òb§°‘u)Їîn6Pdwï›_d™ŽµE¯.]ìô{;$G"m%Þ´)š¶hÀÁ˜Μ9s8”GèØS¿ø™íFŸGŸÇTÛºl7~µ]ÜR>NH²0/6#:žë5ã€Æ„‡ã˜r²ñb7}½M÷¨ÎŸF>'žŸ$°n±žr¢LÔ#^Ô™Þ+ ' ±±Èº¹º¾Sf–N»…·bc<2JXïQ”™PFˆÍsc›žGØxN½˜°@­Ìë»|·/Ärz/äN4Õ×å¹vÇHÀˆÄ*(½SÓVe­£÷IЇJ•%"lËrº¸Õq1cúxiÜÒÄI2ß(S¬³ÁuÍ6×;Ð$}ŽW™ú"`Äç&Û´îöé—R› |\”–r—²ÕKw)fœgèðÃgö2/›z†hCføDÝf[môHÄ;#á|¸Åsˆú'ÁŸ¨j‘5¹,õv1Iú<¤®àÜÁHc@AÉönÙáÐÞ]Úƒ[bʬ §Æ²Àè4à0¶ÀÕÆÜO¨ÃDõÅZ|_ÂR6ÆžûÖ´uVå+d—‹a^âbŸuÒ÷ƒï9éØ×'L8¾„nX˜ÇøF´öéW"KÛZ $Ûž~Èk%ê¶h´ S<¨¥íØM[ÚT¹r»€'„Z LQ PºC1@¾ÎÜqZZ®ôÙv‡ã.\r/ yŸgiQèòs®Êß±6ëÄyy¯WGFaN³+KK ³cÀÊø¥æ”A¿{p-@/×(”¶‰Û÷›û†0CûçR´!}*`ã¹ïÂ²í¾¯ò]Þä«È˜~5-¦ ÈñHí˜Gú£ÔÏ묭ëSÔ§Џ³qO¶3²ïÃ)Oyâñߦü¥ì‹ÏmZÔ'”‡uÿåÇ··‘WgõèÙõdè÷Ðiž!¸6ŠF‰&Ì3P™ÊÝ ãý Hì€ 4G‡eù´13›ÚÁFûÖ'r~² Ì1C¯PKÓ‚iYÁùÖsN›f‹}Ÿ81ùiBð̲D0¥6èÈÛr:ùåúæònq{}sµœzº¤¡ aõfi*&M½¡©·<ŸÌ Ž€?à›9xº¾ñ¸åNñá¢Ç°ôíó{€(MÕ ìbBþ›‡7è#ŽŸÔX½<âH«$f0;lñ9×cv|ªËãƒ.綪§ºÜGà}1¡#ñy;@A܈>µã6 2PÏ/yÓ]©N)O‡ÀkYöè‹}•wtt ÷¿Ál‘V†'J†|œ ÚÌ &§øø¼¼y‡‰ÙËúâòG”­![lV.)‹ò "‘’¶è_Lž 2]⠻Тä )\1èLwšM Ú^ +§•<§JCìWR"-g–²ƒ"3‡±ê]À$‡‰ÛBÜ›c‚2çIÃe–èÓïY3ÄÁl|qa¾ò‰Í`šë X#ÕMuäVi#–Ó•Î×¼0ÀT&oßþðƒ*>‡˜TsÛa¥¿ç×G:;’1йøà~þ¹Šf3>C|iÿØÓä‹%‘²½„|uþçìùziùzÖüô »vˆê¬a‚´tÏ0t{½7ŠÁu‚èå7e¹øyLÕkãî-ø\ýãsŸDcꃚ¨—Úßé…Gï™ûwàꎵÑËy¬ÖßÈa-—Ó7v8Ä}ç%Ir÷NwynB>~÷JŒBcóßo³P­»\Œ?Œ>Œ~Þ@ûƒendstream endobj 104 0 obj 1524 endobj 102 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /A 20 0 R /R15 15 0 R /R10 10 0 R >> >> /Contents 103 0 R >> endobj 106 0 obj <> stream xœíYMoÛ8Å^ý+_ê#~ˆèa7ë rÙ´©zóEq˜X…,¹³EQô¿/9$EÕ®‘(¼»†›IÇ£á¼73o5A8JÌ—û¾\O>N>FlþÛrý^LÎop $8á,*î'8ŠÁ'b8G)rœ"N¢b=»X•%»—Ň MQB…Ð~ÅÝ,EÆ„”dÞôÆXRD´!·–¶W—W”bïx#ïmD‚"Êf)Qç–Œs‹Y’ Å8ÉaÆSµË•ì³Ù®¥ê>›Ç2lNv¿ÂD±ÿdñÒ˜bÏD¦£f(7 -õØ5=@¥ˆ Á0„Gi*|ª‹YqðS”kz?·‘5"õ~Õ½1åˆkÌšÔª‚0GÙïrœ-A4õGOûM©ª²®w8¦.7‡ºʦU+ÙcrÍþP(\L„¦Ïqµ“Ý}Û­åœÃL±œû-DÀÄ"<(fÌA˜_ÛBç@”5®Û»Ç|uõl5Ýpà­ ‘ Þ:oG*Ze©±;ºÄ`üT©œ¥;}xº @>ÿ–Õ‹¶®åRUmÕ ¦à™{¨w]!ãVBþµlÜßé“òf9˜ºÅ”ÐçÞ™±îÀ§;ð±HÛaîÀ?AÝþ<3÷«[ê”î¯\]n¶¯rÌÞÖ‚df¢ûÛ¡sÕ%`[o˜+pòØîP¶‡ÄMÕ> >> /Contents 106 0 R >> endobj 109 0 obj <> stream xœíXÁnÛ8öè¯rJˆ)‰¢öØÔrè¦MÜ[.ŠMÇ*dÉ‘äMú÷;$‡"mÙÝv·H°‹ #£9óæñÍP¡A¤þðw¾žABIy hJ8 fëÓ‹U±éeûnöu§$Šóüf‹Ó”(H”YÓ'eI ƒ0–¦ë/¯n•™å$¥ÖñF.ÍŠŒ6¬(ë¹TFˆ-òc c&‚F‚°D¹^_^è×coÑÛOScä:cì¡êO‡1lv~®LB'”ø¾1‰µ³ YjC“˜2pô-Ö:VÆH>DPt l¦§²_•õÝéƒlÖ²o¿)ÎU҈Й}r÷N= YÊ¢A˜DD(‡²ô;9ï»ÝU2AâôØ*© ‰Ú"¤ÂàÝoÛºC’̾¦aÉHšñÞÎnt-3¦/S³(#)—>îàƒDMþÜËÿÒ‹8a^ÄÆ7'ÐKé¤Û}YT•ñŽHLï„ý,!tX©¨›~%['d8¨yÆ„EWš¡Aù$ÛeÓ®åWL‡Ýîõ"”)¤r›œ.7MtƘÛôÚP[hqÝ,¶•öºmm >4ø¾cÄPÓBsHAt¼R$ÒE*mK6¨. ßÅú¢©*€ªlj]#`}–g{ °ÓÿSåb×m )8XbczØ®eÝ›œ„P1x0þq‰9i˜M×¶ŒŒ©á²ò Ž£|ˆ4È?w|ŸL‘ ²¸¯ä Š‚CéO]\½+BÓ®Ü#Ž+²:‡ºGoLÜâÁH$Ðнi¸Ìra4b(«ëá!˜SwÀe÷µ\÷„,R\Û2'V™PE®Üµ>æÌ©*z¹'±LyhÍ8W2`ŸvÄŽƒÐGL;c j{\zxZ,ú¶|Æx(,¸[‹ÿ†ØîhmÌ=Ž<Ø´ÝAìÔš;"_zßÄÅ}HZe×—õî ÄÙ(7h3ÓC¯åÝ/S‡eÊ~ËþIÊG/ƒòr¥V*ÍV°½ã8Æ®d9þ¾ÙÖ‹áÝ‘Ìz1ªÅôÙ­ A8Ej–£!áP\ý“)™:¡ÈÍÆˆ[‰ÐÀ—Rcpâ¤t_黜—¿™²Æ™'ÃCEb¾ L]”¤z†P¸{bª·»T[³÷ÎTÖ#¦¸3þ³'`7Õïb;}±æmOõÿ²›ÃôÖÁ_±ƒ¿Pû)ËÝ­âÇ›&ö9xÑ¿QÃÕ;çCa>LÃüêã¨ÏÜÁ<¼Tµ´}"ps½5gÔz–x÷κ¬eèë 6"××~Ëfi¬ÎüÛUàWJɱ“2ô7Éb»jOgØHøÀý¨álûQk)×›ª” ‚ÖýNÊQ8öP0“Bš©¸Ì±ˆŒz{⨴Åñ‹:|—²Ý=;)õã٢٢¹ AÜìå<7e8v9?ZÕ½Ù8ÊþFú6­ì Z΃¹»2#³ôŒˆî5™w¨8ŽO«¦3_:2o"…I¾/ðsÍÎt³l›µööñ8Ø<ö†U÷EÄveAßJvÝ(?HÚp+÷cgÆ,xüÙE>n 4K|¹Ï´65‚“’[û¢¨æ[Moæt_(Šv¬ ߃œÛ­ÅQKWõW2ûQ r€Þ~ëz©qŽ©7G£¥øAÜáîâø†ßI œ"{Ç_.Žÿ¨Ç‡¯«Cãž›h ÊHãιÚV•S,¢H£BÙ+*Ñ!¾üLŠxm~6µ ®Q¨„Í̹w6ø¿8 dåe?"î§gÀ+¸¨… b±Ö5&”Ût|ž|žü"•endstream endobj 110 0 obj 1404 endobj 108 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R15 15 0 R /R10 10 0 R >> >> /Contents 109 0 R >> endobj 112 0 obj <> stream xœåXÁnÛ8öè¯zJ€ŠIQ"{Ü4X4IãÞrQlºQaI®$o׿Cr(2qbt³ÙvÓ…F£áðÍ{´3B“Ì|ð{Ñ̾̾$ÔÆü×¢I~ÏÞ| "QD¬È“ùjF“Ôæ$9•D‰¤‚,™7G'·ÕfÔýñüóŒ ’q¥ o¾<Ä„hF²Ò‡.LDé"Ý0žýveÂLA}â½r%lª¨Û…6Aè-‹{K¹Ì“IJ3IXnRÏÏNìë<*zuqê‚…íÀF¨ù˜i¡HI¡µ4ψ4Oëv6èÅXwíõÑ'Ý5zìw&W–„ Uº"¯ñ bªï®mašAƒÐŸt›·};ØdNò)¹2‘‚(¡Tá"ñ‚y äx[]èBù`¯7½t;ÚÒ93•¤Ï·ÀÑœš›vgñ€Ì ¤A»ÂÜ 9»-,£ÂÝ ‡\ªÐ[m ETö,Þ 3Ðჯõxk!âfI¡$h§°x´ôÝǯ€ÄÄâgfC)`!-¾º_u}£—v±Ü0߸±E`õ–§¸Yø[¯yæðËŸÅu%×=€Š#0nòâiÝɈƒ‚þ•›Ÿ*ˆø1? ~î›ßs]U¾¿Ö^è%gØ5öJ²@ÞFÒS„øà¥èoh1åN?*_À_÷ÿíc@fn˜`Î:ÈdÊdΓËÙåì/w00endstream endobj 113 0 obj 1067 endobj 111 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R15 15 0 R /R10 10 0 R >> >> /Contents 112 0 R >> endobj 115 0 obj <> stream xœíYYOãH–æ1¿"o€´îq·¯ö¼ÍÎf£HL`À#ÊK“xÛŒã,ðï·úrw|„†Y­´ÊCD¹ººŽ¯¾*á¾Í>ò{žö~ô~ô1—©¯yÚÿ=ê}¼Â^?D¡O|·Ý÷pßâ:}Säù}Š=ä“~”ž~YMʸ8‹þê9²0½hqê!&Â6²%ºdP!É7åptÍÄ$DVŠWñ½°H0"•Å8›ÇL¾Ù¦o–CmDhßÂ6EÄeªäürž:å%—yW÷̧ë5ú(¬„I¹âwCšªÓS&-øB2Œó4.‹ç/ùzÏË$Ϙ u Â@ÚÈÈh§\c¦¢ìò0äƒÄ¢å63î«…)e>@d8/†_¸wŽ‘¯ëËú<¹B¸!³·ä‡(Àu˵QHØãA¶ëÜßìO—çAº¯ó‡xrº”N΄±mÛ.QQ¬r[dmi–?É J–ß˸ƒJÔfSEͽƒóU®9¬-ø ™ztQ [´ºÏ½Áðê I$½’§I–¤Û”Lj™EÚ¼î6¼öé>/d¤ºQËU²i4ÁÐ ?dU•~ 0ðZðúÇ ÉBÚÿÎjÜ‚·ÈlXN@Ákv"²ÏòõóRô8 ›VÄò†—˜^Ä”«ØwÆ]“Ž·óÄð8„ø!O²r#k­{û@¤½ ½ø|oxÎ2» ½œ ¹k\ úŸo*}͇†¾åx1@±¤BmÚN©[>ßT·˜rÓ+óöÃôC¼Åä Iþó3%»l|Ño4øt©‡ˆgy}L$¹+ø- ˜KH2 É®»ƒ>ûx—NŸ¤=àyžP§iÉK躬­:þ¯×’'f”ñ„˸Nzn’­E<ä:¼0{©VÃJ×·{\ƒÕ{ùí@² TŸo¦pSg$Û$¨’=X~’Ðlzr>®£«ÑxxÂÑØì©ŒëDNŒ5€Í ¡ëp2Qº_¿ ]Dbcty1G'ã.•Œ­0—sî¤m ³÷ òFÕ™7¶”i‹(jÛ3þ’lSNaZNgkMj@c³)$ì\^7lR±KX¦h'dWÉ|Õ ;5G€M`Ùð›Ø¸Å¼F½p^,väíu 4Ngr÷$Fqäø`GÕrm¬„vÈûæ\ÅNtS½nÊÂJLkŒnt¥œK`ÅI7uÞ‘Ïéü™d ¹kœN³&™ Ò–¾_ k»‡],ɇbSš|ϧ²lfÛ(œ4†ß°þíl&W:ìÐ¨Ëøûù¹·óP('RÝ^ÆõÝ«K–ËEª Ö"¶%˜õ®Õ¾±çRÂvÁ;ñÞpÛE¡ï—Ûÿñò_ÅËÝ¿—;‘6_/Îï‰b8ùSÒØ½•ìÅ‹øËx!u¼Ô´°íW e¼M/ùÛÔ/IÙ¶Z%œ.üÝj¾é˜:‚ÖI‹±Ì‹Î_ÞiÍ"©› üÃäé-éÆñõêa"H_£–=X4üÀ„F ï¨Óˆô`a‡¯ÐŒ8†Æ“ƒ¾ú©eP·É2.ä;—ï3σÆ/\:{J<>‘ḆZc‚¼@m£FãüµZ|Üv ½Šê@ê ¢néD”€D°á™HlËÞ P ˆ¢ÁSI^\Á­/M±W`DL ~µÕòžFU¸˜¶½E´«n˜ìþHÖ²à߀?e\µÍãÊ`ç}!@‚ê§ÃcRÿ¿ˆãøl^Zfù-Çfjƒ¨ÿ­÷­÷ `h†endstream endobj 116 0 obj 1442 endobj 114 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R15 15 0 R /R10 10 0 R >> >> /Contents 115 0 R >> endobj 118 0 obj <> stream xœ½XßoÛ6öè¿Bos‹%Q¢ìas½À¨k§Ž‚¡€_\[ITØ’+ÉKóßïHEÚŠ='-†>½ïçwwŸìêxâþ½Úö¾ö¾:TÊô_«­ógÚûuN™“$ò£ÐIï{Ôq¥ŽRNXäpÊHä;é¶?|\ºJ¿ôF¼ I@/]÷"ê/Ö¢!aÄW’²n®Ç·Bì'„Q­8Ïî•EŸ¿µ˜«L!6ÏŽÍ =øŽK=NüPhN÷ÛqAåe5Ï‹‡zÑÈÊmÖTÏ‹+¼bÂEpÒc³¯ $j]6Ò# -Y±ß~Æ|ÌâSc¨”£{©F­ÿ¨D<ÒOÂÖfk!Š»®c¦e?Uu#…X¾]¹y~(‹NíóÍô\&º(ò}l)ËÖ…2˜@wĪiÔôn2A!m£Ìe2\ªù­÷*ëdËBÀSPŒ±¸¥¹à9‡ùÐgv“µÜµÉúoMÕ¥… r\B± Ÿéâày‹0Þh´ôRt¥Š—€ †À­ìÜ$!ÔUçPŸŠc‚w"h£øt=›Üh&ù™ÆÖoGÂ.—Ïb =àž¹ÑÉòSd‡¡µíö¹Ì“´Ìl˜w9ð ±ôbûÊ ׎˘X¥üm]Á1Íê\-eàbIÛó5FÒ¡xŸ³æ)Ë4õ³Ì?©ü¹oÙ)’Ù²ÑAïŒÊ®*¿d«FmÿƒË¼/ò¦ÆÆÀ÷P@‹/þQ§x{Í ªu"¹&÷­9Þà®'‚ç@²_ÿò·š]fìg›û^èÀ³ ùTàcs‰RE3`§Ãí”§ÊvUVA\6¹ââŒ[<Þ¾oùæ`†7ýe‚ÔßöÕ¡4¼oKAZ~“¦C‹oà¼ê_Úy]¨¡‚>Šê <ŒÙèÒ=%“Ç^`³#m ëa«áßçÙÁíÍhØYµ TÓƒÄмÛùøÝ[ÉøKl«ý€¶S}P‡xáz± –Y÷à¢c^E½@-7Ò ·W‰Ÿžô/MmªŸë&Û"ÔMXgýÅÑ%Žà‹çßÛ­ãí8Zyø»X ÕF©ó±÷±÷/{J%endstream endobj 119 0 obj 1448 endobj 117 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /R15 15 0 R /R10 10 0 R >> >> /Contents 118 0 R >> endobj 121 0 obj <> stream xœíYÍoÔ8‡•¸ô¯ˆzX@êxc'qœ•hY@h@;«½ô’I3mP&it.üíûl¿Äî$™N»ìžP-γßÇï÷>l|B=_ýàïlupspãQ½ÖýÊVÞÉüà·Sy I8ã¡7_Po¦e¼ qOЈpæÍW/Þ\¥×2o^οñƒ$¹ùÅ‹ˆ¨%ê?î–>©•ˆ0Xf¥nåûgj™%$¢ài¾4'2JXb^e¹ZÛ|×¶Yèû„y3ê ÂB%ù>¯W¹l6ïšz5W[xLh¯T’Vb³r+Ï_|ÕæFp¬YK›ì*5F„$J:#ŽìffVŠJêiHDïêeÞœ¿T«3J) ¢Ì‹Íwøz¶©dzû»ŽY`6<ÆdŒc‚Ða:S°üðx)€žŒÅ¬Ç“qFÀ. þJúìÐN3¥¾‹<6©,ð)líxºS])@{ñ£és!pñ~NŠ”î©g§þ˜>8ßö68Lƒ­¸5""UÞÔ•&×™µ¯±Ä"–7RK1÷R©Fš$ö¬¿ÕŠÐ¹Ðí+ËÙŸU­Éâ+*áÞo²ÎæÍܘ†¨MóéÛä×MÞæ@HY?"¡Ìî2t©Yˆ¬Àb  ÷é¸ñ—Hb­ÔÍ|ÈíS~On­_òL“K¤9Ó„Å”éÓ%¢Š[éÂFһ߷ "æ&¸ØNï$RYÍ!0B}8nµd@"«gQãî ÙÁía¢Ëš}lVTíÁ"Ñn* œZ³YßÌ¿–uƒêhoÂË Æ;áJΉùY.Un÷x™0ÐD}×%N ÆÛ–oyÕE‘÷k]ž²È©6˜MŒ„ñtžLò‰æ;w_§,²uið‡ý<î¢1UÎѺá ÓmM˵Ú–µý¯6_®KìqÐ{=h§­Y]µ²Yg²¨.‘ÓqŸˆ‹z]]à‡;/ê[ÿ¼Ås-‘Ä ƒ.‰Õ—›uÞyÛ¡­AÔX› []|ª! ÷Á}šËuSµ¦Ÿ)×Å6äqoL™¶rP-¯•l;I¿jj¸'»H´E÷.|‘´ê.ZÔ¥»¢ì Áƒýÿ¥Aÿc‡_ÖÿÀ¡ç¿eFïÿdÕ½ã<3sŠƒÿh M]\üHü3<ÓŒbËÛÁæ‡@og½€ÍáÐ[ÎU‚ èm½º^;m0t:Ê·¢,ݶ0¶QÃUÝä §Y¶nRSQÀ[ëI±4ž;æå dê*ס ç”ÅfPÇ¢óþíG3K 'ùWõź4ú™ÓÎaœN¥Qpw&‘¦ïÄvÄÍ 2:gËb•Ÿ¿$f€âÄ’Ñgr¥M †ra.ŒX†à Á]œ"ßqäݺÊ íè¸ÖQáèÊlètJÇâ_'§?â0Ö­÷–T‰… •8Tâ'š=±¢™ºôŸ#ÈÃÊc=€B#ØGy ]št€Ê £Uô0kàL*ëf@¯ÆÉHßmÂÍ:TŸ.UªÛa_y®™Ebîû§#ØËѽ=*&x~m hz`.Ók­„qg˜Áù¦¯EkÐwlíg6¨C¸2_vJ¼«ßœ<7‡+'‡nóQ·©[Sn(®ðcևǑÖWNß{eéH«¤Ùi»²ýPÞ2Öï¡ßðVKÿäíåmS\^I1Ù®Aaš¸¡}~ú-ÄТ…3ï ©ï1™kò“g{UVÆA퀤Ñ’N«çÐq<çò½ @–ªÇ€ÇR{%èY*†ÿ‚v¬b6'àNQd²ÜXsÅÝèØ|*¥Ø—p|àÝ»RÆ‘yhØ—p{éÓg{UE-?J¸G±Í§{jG¶)yö“m“lsë›}êú³PWõÝî´åﯴv[{H wå·`;ŠÕ÷W‡èŒîÎöf4ÖF¦üÃ6]™‹‚œ¶‡(d[ã%Ìù@L»Ší£ÒihcŸeÞJÓ¿|ýXj2¹NKlkv¯dE¦f:$Øo@¾† ¡s ïá´Kò›ñݹ­iºÄú¶p.ó2Ÿ+î\#Îj„Èß`Aê¾y8c”ÓJß‚(w®\',ÒfˆÅ>=<î=M?B<¬ôè;ñðêv¶ØÌ¾bð-eÆe•xÌÎIîª7&kXBR;³æµVH…&i¨J#OÜ׆ˉ“êCCÅ„¡Â:V# ¦Sã»…Ñ&ê½õd¬0Ú,rÓÙ¹G—¹ÌMu 9±£XVW2-*¼üSgn¹üÿ˜^»ý|í~H9  jÀ”ØÛ¹÷ùàóÁ?˜3Ú]endstream endobj 122 0 obj 1762 endobj 120 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /A 20 0 R /R15 15 0 R /R10 10 0 R /R6 6 0 R >> >> /Contents 121 0 R >> endobj 125 0 obj <> stream xœíYKoÛFn¯ú„¶„[î“ä1qR#(Ú&Ž€¨{ %ÊfC‘ I5 Pä·wvvÉ]™”å½$0|°5ÎÎã›ofåˆÐ Ò?ö÷r3{?{P”õ¿–›àùböÃ%•AJRÅ”ë BÔ MˆTAB%Q,Xlæç·Ù¶Ë›'‹¿f\’ˆ§)è-VsI´ˆF$Š{Ñk-‘„ 1’ºí.^½Õb–I{ÅË|m,2JØ`1¯–¹‚o‘ï[(¢ˆ° ¤QB˜ÐšÏ´ZJb0ÈÌ»Ÿµ$&)H¤‘> >> /Contents 125 0 R >> endobj 128 0 obj <> stream xœíšÍSÛ:ÀÛkþ éL³•dI–Žý L¦@Sð›wxí!¸mâÖq¿þûîJ¶å¾„â\L†C`Y¯öóÇÊÁ8}5Ÿ«É×ÉW&¼¬ý¸X±ÙäÙ™ÐÌ3Ò(–-'‚M½S‚6Ì F²luðòzñ¥Î«'ÙÇI¢'Ρ^vy D‚O[Ñœ$$ l”›úhvNbé@‹Vñ,_‹R€ì,æë‹œ„èïû6UœƒdSÁ-HEšÇÅ:]•«ŒÔ•Õ¹à (Hð¨4H~Öïj/ÆÈâa?ë§ÿùÞcÐxH›³)}#¹d©à(vùÔåKr\±”§XRßTÅå͆¥ë•é>þ»éD€í›þðþ =0u0ƒIÁRèÏÉâÓVŒù¦)ê4¢I XÔQAr”—«¼®~ùÄ¡aݪ.1ÁMlgòß7>çRƒèlþ(êk/Ä»§ëës¦{øª Q Z“÷^ô=ÔËÅzåkÿœ€´³u~6{å»M¦vM4[’È}½-ïŠMTkŽX—µ?C÷r5Ì·§Á–Œé+¼)ë£]æÞ3ìŸèìâÛçz³ÕñuÙ(º;>Òi¢(sklIüöè¥:éMÑùü0¹ L@þìÇ•7&ÃX¦1²òK]”ë&£NΟþKgì*øE¹^–ÕjÑ ¶V4© 6ߊ0–S™XêÐÐÎ>Úìº ™q~’›6 Ýœ€êì/Ú^±UUV[ÎËP%Jž¼Ùß]ݽ#þ]ýÓ –‹I&Hùø„1I†<½ùÕ¦®ŠõUG1c©ˆöN)æacè °1Ôµ·cL¥`¢î-Ó>ÅQýƒoÎþ5\è*·×{ª•jm…oaIL×N–¸ÿ³Ä 5Óbs¼ ñáÍËÏ¿î{Òø7Ç Þƒ4jàä•ïAÑôö´‡Åƒ€ÅÃØ‚ÆC.âÓUHñnxá/ãÄA»;ævŽdJ¹Ç!‘„A]L®°q¯ªÐK¢W4ÜÒKø[à~×?¾îwÑÕ¥é&b„{Óɼ,ÖuG Òw{gÂT¥,IÐÐfp0–%É=àÝOb¤l‡PKÖ7©¡hÏÚcã`ãa¬<ÔÌ\Œ†b'ÿo•<›ÍßÎN³0Ä6¥èâ.tòÇmLWœÆ»â2äÂ+˜[¸†õÀ\I¤ ”¸FÈôÊC¸†Pꛎ\ÃdÙýUnìPÛ_寄´ãÙéáyv6;=ºk¼¡º7® ¥SM õ€7Tžj^y0Õ¢é-ªí·µ±ƒmìTÛú…»„ÁØþv–(Ò;ÌØ»É»Éo@¹endstream endobj 129 0 obj 1002 endobj 127 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /A 20 0 R /R15 15 0 R /R10 10 0 R >> >> /Contents 128 0 R >> endobj 131 0 obj <> stream xœíYÛnÛFm_õ|t€h³÷Ëc¬ª‚ÙRdAÐäA°©˜­%&séßwg—\Ò’lo€ÀHdÁ€%‡3³gÎÎ’‘ÃOýy¹ê}ê}JˆÃšËUršö^̉H 2’Jž¤ËIúÎ&áD#!M’4IW'ƒëÅÇ*+Ÿ¥ÿô˜@˜cíÒ«"aÕ@3@¢Ð)6Õh|05HÆpž-½GJ ³õe  wcë3ÕIŸ`(Óôº,Üí bÁë׃âÁåbí ‚t2+Ë¢¹·†ù íb¤ª®]4„#ÌÞ¼JÝ¥Y»æRw[ƒˆ…„‡ÖEå.ì€Hd„1Ò#gMvjŽgS*ÄDƒ¾MÏìSˆF™¤Ï1ÒðŸQV¬ÅÍÍŸe±r¡I”hÊïà®DÊ#ߪw'•ÏKwnû­zþ·+ýKK[ò†A}øBmº,‘ŠÚï–¿í[£ÀÊ(b4‘R"¡Á|SæWw»æÚþc ¶¿ßïZزw]¿÷ÌU…Y®$g‹wòË65Y•ÙZ ÷Ô2«Êÿ\Ñh§üK[ÜÆì£Â×¼ºv Í-\½Gr€-¾øµ2íZe yUðu1ÿjz¨@üñ²e`kw/QÕÝD‹í¹÷EÛòå•o!ÜBW™‹ŒÐN°‹Ï7Õf‡÷UQ/PnŸ¸LûŒCå`yÒn…§£sÀ:’r1zP:ýñ CÙ¿váÚ«×(Õ&W|¬òb]ÕˆèŠ{ȱoÍ/‹õ²(W‹ZåG\5ºùœû®ìS¦¤ ™BèFÃéÙ0;©ÎMÞ¦“ÉpŽƒº1 Êmue{óê´‘-e > >> /Contents 131 0 R >> endobj 134 0 obj <> stream xœíYÁnã6m¯þ ³ÀŠI‘"]×5Œ:qÖQ±Xlz0ÙQkKYYî6ßᢔØÉ í)‰2^†Ãá›ÇgJŠ "óç®Ëíàëàk@k.Ëmð!ü4§"ÐDK&ã ] hbLSE„ D² Ýž owuV½KÿpA"®5Ä¥7g‚ˆF$JèÒ ‚0”EÊ]=ž\˜i"h8ÏV6#£„ùŒY±Ì µEÝÚB®"ÂTÒH›Ðú¶*qzA´hÆÛ!ÄIìS. „(Q¾È¬ªÊfnåó•‘€ÄúôÛ "üà§Ð„ÂR˜…вv•´+YDbiÒQ3›bTÒ©äóxvaÀJI„ÐAGDat¹¹_—ůU¹…*®ÏjäE)c;øŸúý$ëghÔô<4_cH& ¾C 8ƪï8ƒÖ@°©A™è]•ß<9:0XšØŸÏ,˜ ¶™ÿ¸~g× =¢ú‰‹=_ü…Ô¨®vN\°à‡œª¶Aã¬Üfuuoþ3½VÀÛA‡Ûv¶9¿åõ-‚°4?º¾E¶iŒb°Ø:7PbºÔtôoœ–hê[’5bK|®«ùäÜ',!‰—ÿdu "èÊ£ú˜Ú’§ÕÖ¯¸÷6kùËk«ù¨…n2,²Nµ‹ý¦Þ9:©GëÒuˆ{(¤¸ÔǦ:³_AíêɆ´<·|-ËbUVÛ…s“Øo—Ý>·û ÔÔ˜ŽÐ+7ƒóË2/êÇ^ ñªPMx ’„Ä}¼@Î šÝà Œ¿øØïxA Du2{/ˆ4‘]­œìàÕÚöw6âhÞ9\]Ž,(ñð`ANà׃0ÅÍñ4;cìûÅ5¸÷q(ð¾nêÖ¢€!v²¨·`Q¦ÅVÔoç^“IM'£«t>¹8UsÚÜÿO›âpÆzÛ‡ôRö´)Þ8`/›jSØÔÉ£^¿Gê%:”»ñ‚¹‹koûtb:Öº•Ù‡Ãr³ydX§éõˆÃGƒ8z؇–Ë€)¸ôx$8”È”êaV22ëdönÔpªO§ª·àXoÈ®^ìßx4;¥sLÒ!àóp6ކéÄ•´oM>ŸšWû K‘i°£h±Ì®ÏÖnƒº­Ï!@? kžÕûÊ6Sw¦>òäÌLu ¢õ~Q-Š:Ëгà|Dý /ÏV ›ÙÞm²mEaMB˜'–nÈ~—k\DÜÙHÀ?¾( Mp»þÇz(Øn»í•ap„m1 V>¸uÃÐYúƒDLPSM(ðü £¥‰¥ÁÇÁÇÁ¿þ¿MÁendstream endobj 135 0 obj 1099 endobj 133 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /A 20 0 R /R15 15 0 R /R10 10 0 R >> >> /Contents 134 0 R >> endobj 137 0 obj <> stream xœÕZ]oÛÆ½·þ‚ŸÀd¸üæ£í¨Fp“8±U4) ´´’ØË•¤bûßwvw–;)F- \\ä!ñz¹œ9sæÌ0ŽÍfŽøƒ/‹³?Îþ˜1¹¦ÿZ³«ÅÙ›;Ì; ÝП-ÖglfÉ=3ŸÅvÎbØ¡;[¯®·é®åõëÅïg^`;^’À¾ÅêU`‹%æØN¤—>‰•Àva!V+UÓÞ¼»ËnbLo¼ãku¢Ël·;‘—K.Á6‡ÚfùŽc»3‹9±íúbçcõì­^mxUð¶~yx-MGĮȎ…Eò5í¾.iºgû‘¶*+¡‰~õÕ­<6uÖ|ñÞ¢…q·Vó]Í^¶Y¹‘wevÄô©íVZÏ|;ì(Òç¬ØbÝwå ñªrÅöÀ#‘ZynáXiªJ¢×è娳uì=Úòª‘‚õe•ç|Ù>ôžŒd0ñ: o•_­ðÀ²Åbñ‹Å6Sv:ÄÎõ¾\¶YU"LBâ28§3lƒ›ùí‡ùâNz&"'|½¾}ÿ~~½xwûQéŠS4¾‡[ ×¢Î½ëº*0xÆçøFM¿»"†ßwwÜókÆéH?&ñ^`ðÇΣè5/Hlq‹ÏÃE>Iù3‘Þ ÐX¹‹1…e¹tžn65 d“¶ü\®Â{Øã‘•xC÷MÆ}îEVVyµyA”ù ²,»ÿü^:)ðÈQ‹mÚ"XHVðT!ÂH|ZÜ l˜"“K±äŒZµãuÚVuƒnÁͱts,ÉA]~ô;åY£rK[2‘[«´M/9æñÎg&¯Æ’°I >ēĬ$IÄXú¢ì›8h_h¹»ÎŽ´\ɽ!9_øRo†3ðÔP©—ë¬*EݵŸkkïÖý aª´Øå\zÉómÖùîü~.ÒTE"ëG1?&ñƒLsenì ã{~¾CÀGè¦Û°ÐÐÃ_t ¹¼z?—~Š ußÜ Øüö—O³võ½iÂz©8Bg±¸»ùðQ&X `¢½OYžÓôW<7ÈÎ1ÒÙ¥€_Žèõ ‰Ÿþ ®1h¾ài]aÒåvx+ȃ¬T„é1"<Ị²H]#ó=ÒIÑ‘Œ9æ1,<¾„>‡)ÄßFËOâ ‹¢Ãò“•gUq½Hl$«NNÙ‘[ì}x- Dh55–ù ZbâPTÈÙÑNà‚ª~±ÖPXÊU®koЄ‡WûoE ËyÓ Cúô SPúDaya"ÀkÔœ]]-áh…"ß!ŒÓfx­b é Ž‹ˆˆpJA´}kv[^WH²]••í…ò_Ç!fèÌä_÷”Š3s QÀÅSò-ÏJžÖxœám zÃ„à‘·OœKaû¤Ê®HN„o¥ØZð ÒNž¶orURzÕJÞIë5ãùMfNð{¹¥_Áue•IbÞ ÑfË}ž’Ä}¯ÙÈën‡¿{Îuy˜(.šÐ]ÇÁ]Ï»<-S­,Ï8i$!´Í2ÔQ߬c—'Œ‘XÎËM»%ðRP‰˜PV1Q¸ª@aA»Þ×5ˆi•W=ÛH†ÉD9+à.“Ù@mÌ(y•´I¬'¬ùÀ©ìûLz¶ …6e¤„¶Ny¤mèÄB"’ú þبͨ§6Ý“…¦ÂPÔŠ&6Ù¹ µ¦ô¡ Ms+"4 ÓBÓòb¨¢ U)?’›oin§…¦?ÕÄQ¡ié¤Ï̵þšÐ¤=ÄÕ¦1ѨM³6T›0 ^šT›ðvâ4y:): „'i؈ôô=2˜YÌ?ö4g¤9MìŽËN™ žKš•¿¦ ÝŸ8~ ÔŠO~ÇIDOsü` ÅÄãÄ"ãïúÓ-SŠw¦i°æ)ÜœëÒ Iaº“jÓÇœÛøv¯{ú>+2(‰ŠÃ½Øuaô«‡$v‰x,ø‡ÚP\® *èÿv3r}‰Ž5i¶˜ßÜÞ!îHopޝ0t"«²“ l"ùD‘A‹yß}ÞˆœÖŒ[b%T£yƒbVÏðL‡Jë $JûS¹úÖÔB|Ç(PÖË-JDŸ¸ïâ»J !~ØÈN(ÜÉHGT/1fŠ…öb¤å,,áñZÞ¼”mú,_$ÑêŒ^1¿zs9cb*ª‡¼–ø‡ hLf^ÂHÌlÿ%7ŒQ»¯ë3áB/¶ÅöÕã›f¹åEzüü„|B>ðïéóWÒ‹yÁÅñƒÐ<§î9¾€89XÅÑÃ=Wzå4«=ÕŸdµç Ÿlµï‹A†nr_”ÇOÄ4æT³cÉ"ät…¿@Ö¥nš8ñîQÍØŸâº“=5¨c½h’x£æý–¼[o0t÷î-j6UgF¥ËŽ/³Ÿ”n‡˜ËQzÝ/ƒRÕpÁXEû½ï¶®ö›-Ö0RCÚ|SÓù T¿Ñ¶GJÜ»µIÿ~¥%<èËhKáKÑ\ß°ý6mpc·eÕ⊉é#öʽo3»Zèà®òš_¤«•ò¯®L¢É¯õÿã$òþ?“èô|‘ÀÑå¢S‘è±hp¿\ ©¦ ~=)…~+±ŒG'¿ú)d…òÿ$Äj´{œ\'¿Œ¥û€ Õ÷wýÍ@¾>9™;¡tšS¶Ü]#ͱQ‡¤ÆŠ¯ €¸S¢D |“- ïÎ,ó€ôñàô8 ?\è„“Þô"±o¾˜}>û|ö'ò$_endstream endobj 138 0 obj 2483 endobj 136 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /A 20 0 R /R15 15 0 R /R10 10 0 R >> >> /Contents 137 0 R >> endobj 140 0 obj <> stream xœÝXÙRGM^ù •_Œ«¤öt÷¬É!2!eÀU*UÁE £ÆžEžÅ@¾>½Ü^¤ ¹’§W½Ýsîrº=„'žøƒÏ¬<øzðu‚¥Mdåä—ÅÁÛKL”„$ô'‹»<™É1Ç('1PH&‹òðø!]u¬y³ø|@äÑ$áãËà öiÓa á†XYê¶;9½f’ ë—ìN­H0"fEVeLùÙ<÷l3ßó™Ì°#â‹‘«î»‡ëÃ{V—¬kž¯ßȳð9bX„bq$>nñ Äp5Mî!è}ë;ð„ÏS÷·Ò¢Äœú¸o¾é}ŒQn¢˜{á+K^ÁrØ,—wj5¬N&miÛÖYžvl)~ò)ò©F­]¥]žò œ sÐFÀ&P’ÐÏpBÅA¸Ç±œõ\ÕrkBmžK¹s þ»«%ìØGجªP!ËëCã, ‚æX!)—¾89†…-‡WæÊJ•‘ Œ„å2a‚",–ñ=Á‹Ù‰.w«ðèú¦’QŽK¤qé€NEæôt¶ÌKVµy])Ä‚QkŒûÑNÆõÚ¡ H}JI蹜Ë¡†baŠdd0Iá>ˆ–"¯XÛ5yu»Ø¨®<Δ}Ñå3;AEõ|1g2#d æ›võÀš:wÐVË"‰ä‚S>¢œÂ™ù i!‚;íÚsthèuœY_ð–žú¾Š›­xîŸ#&€.áÓÂèQiÀ}°Œ§•N@8+òUËÑ‘ Òf£ä>ñœ$Ñ\bl¸ì[v×ñ 6;r ‹¬®›e^ìb'Î÷ëXÎhàó`‰É©G À&ðÓf¸åHaâÜå]¿do‹ºº—ßd¡:d«%ÄH< b7¯#˜-Y›7ªâQŒ¨ ±Ç¼{¨{™B”8`6lÕÔŸYÖñô–LñÚÄI‰5Skå]S*WñÝtuB'f4 Q¹€¶l•6œhwv¯eÚ¥·iË \bƒj÷¼bPÄl¥¶ ÙN‘A †Žß·lвºâéÝgº1¸‘¶ëqW…ÊרÉ×Çö'éìG¦?\}øm~)ï9Ñ~qúë_²éñæÏ›­Ö3ñs¸¡„øa¬7ÝÀ+½€0á%FŸÛJÜÍ·nDxŸ‹íäwnE81ÎàéöU)ç|_ˆ"Lì²Wó³ÓÙÙÑﳊèØþTšftSÊ[Ý×Ê“–GÃ>ÎP.Â}¡'ß®{zþÇüòjeÚ6ìwïdüD(‚ªºXÌÏOÏO¶žÃÂý©ò9nb/3ü“Ê;â‹:át’ù½ŒYïå`}uryuéð^MCŘFS•CÐÔH¢’Ý©O\6ê† Ñ`!C¶&@Çš”KÄ“MÀq騈™í¾ÌHЧ´\ êah‹4Ö\µ2𦴗ùýƒ¬”$pÚcQ×_]«È¿@ÁðéÚÖú¨»ªbàP…£rÂÃ’‰ùûùñB“£ëä@clÐé&«‹¾¬¦›¿¿¶ Sy˜] +‚±¡oªHv‘’_¾­7$pL„bohúôX”Ø2~(iäzöîjºÎ¨‹3(ÑvWƒo*ûYÉnOå¥Ð˱+—7”œbÔ³’M+;߈›ïv"‰Î½ÿª›T]—~½vÊ1‡X¡»2””o*mÅ©áe2“‹nÛÍóª«]A’fYÝWHÌïS—Ÿû¶’ð¨v5Ê~Y½‘¡ò÷PÝȶբŒ­TaY÷[H˜@GQ—gp3œ«û.5{­¶ŠdyÛÓªam B0roÊZ£ZTÇ(jÓ’üV`õܳ vôÙ¦f]ÎiMÜ¥OŠjqe-$ †bMŒ*–c²»?9ã¶@ Ø,ÖŸ$ÉNÿGÈëš:¹Õ’˼íRxUQj601k„/±*ÒŒñ;¶Œ ~IŒ(N—ËVÝBIHd£··Ð2}ºÑû_;×Ü©ýúïoÿEªïȾskW™Ã îšãHܲ ìáîQ1ï\ÕkÆ“cÜݾ(ß4.\\XyÓæ³m ßAZŠ"#‡GÙm^"ÛUªÜçµÞ–ÅkqÔ¹½Ü>w:Ê×®¶{¼‘`·àB½ÆºiL¸’å¥Cb"½­V5/í†HÕ—·ðbé^&7Q»¼¹&¿ä8ÏW[¯4ñžÒƒ†øJ†ÅKo_§w¶í.nšrZI8豉ö¼x¾¯uÐÛd0/NV‰ªG'gB rÂÆaŤî(²/±bEÍŸÁ3µX‘—Ú™¸ÄH¼h,ÆÍ“þXPÇ×endstream endobj 141 0 obj 1763 endobj 139 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /A 20 0 R /R15 15 0 R /R10 10 0 R >> >> /Contents 140 0 R >> endobj 143 0 obj <> stream xœíYÛnÛFm›7…'0Y.—×¾¥ŽpÇVѦ0 P%3¡H‡—DÊ×wvv–»ÔÅ–Ý<’`¹Ü93sæ åØläˆ?ôoº<úrôeÄpMý“.G¿~½fþ(¶ãÀ ¼Ñx~ÄFîy,²ý`1ßÜÑxy|v—Ü·Y}2þtÄ}Ûáq ûƳcßḴP-]‰ßva!’+UÓ¾¹¸ËnlûLm¼ÎæòD—ÙnbV¦™XÛÓ6ËsÛỶl×;Ën94ÝtRM?eiÛÜ/²j™µõmbíÉ#oOÄ‚ÃB‡pDhGÂ\´¡íê²A¿¸xL&·whóìÐW–‰ûW ½›Ê[i îsì©#›¶ª³ú§æ%½ÎÝÍ«ƒÓ1Ú¼Çá‡` —+ã»ïv!þú\ŠmÖ¿Ø5Ù¼+Èí̼ªérã·^nEi|a‘My†gû‘÷®&%úiñ¤[‹‡¾ £pÛºP‡É¬áa\í™jÒT.þ€tc03P¤ lA©¢Y‡TÈ€‰v'I†”»éâÀJ™“öVÕíkzsRÕ0ŠfO×ÔßòFj¹QŒYaòÓ.òfòŠ ³Z4Î[¥n¡ °ÞŸ!¾Ê~(P ͳ í¿¡€ù“Zñ• HôÍ›AgD¥MŠB f UFõ‚™íh:ÚŽYÒ&Ó¤G6FÑm ÛtËe2時ÆÈBeE&ëÇѓϪ%[Y¿‹®Ýê„"™V@ð%¾ñ࿊"‚IÐÁ Û:)èôË¡ìc¡Ÿ(]N¡ü2b*M_‹iEÉ!ùÏ‚¹Ì¶dØ7¹"öðGøä[ÞÞa^;F)åOÆŒI(­ªz–—I+çËK‘ÂD¦§ï€Õ³J¥çóÜÍõÅk´Â72£ó°ñPÏ£2:•R¤]°¿Œû x† Y¯0ŠaÅ‘)±’:éõõ öh¨ cc¨°Ö,kZ qt<Ö§üN×–]#ù™¡V¦l×p«\nR¶ªwö`bß\Ñ6‡ y%3Ç`úñÅ«ËÉõù“›HE!öv·dJÔnqÑ "c+†¼€lØ(3J(©#ý7 q¬îˆYÃÉЉ«Ç˜DI ¯º¬ÑeºÍßÁ#©Þg¢n»ušÕäí«¦¢Jû`sO²¦kòrAj“±‡Â­æ¹”hKË™> IÊØ†ìŒ}¾LÖÏ›¬•_ \n !Ùo20×Èž¨¿?lòôïÓHü¡øìCVŒr(”©Àä7£Õ2‡¶;­V0 c8}OÜBV®w<Õtö}ó©:„ wÕ|}é ‰2c8ƒ‹òeòH¯Þž_§UWÎ(¨ž™:`³„–Ä5F‹X-“ÕÐå@øÔòÐÓï›O­ØðÇ’¬ röÿ¡¨Mˆ2õE¾¼/òùz‹04ЇÏÐÆU‘A‚¦áG”«ºí.ùR^ÿK6{I-JóÔ#zOƒÙcìÅzÛ"—ÂÇ×…©® H33_Ú¢­'sÊëª[Ic]eÝgJ,ýPöµ1aJ|/ªúÿR68n|Rú 7SÃ) É¡¡1[f’¶ˆÒ5%‘¶yVQÖM´îÝ©œáÆ×Ѫ”' $ˆ¡K49ÞÊoD·'E^ö2$îkg×€Ó¿Bß•ð-ü Ûk ÝÝâJ¥R´Ö•;µ˜K“’îÒ’±Iæ¹bNNi"vñV’·Hþ‡\–×Ä8ËPØÖ2À ñ@À|Î¥ÿw”ócÏEÚRßäôëäžþXF¥¤{ óH•¦ì^n„¥¬¢¼•F•Ò}ò·kº¶äÿpChëúœï†ëùîþðÀ¬)Ó22l˜g’YluBQp‚‰ðBI,UÞG\èËž°†¹óà÷?œGý¿«¤fÃö.i•ý5R̓¾!¸÷êŸe¾¸kIŠêl(ªJŽà |#=·'ö4oåÑ®1Ü7YÖëêÒ2Ÿ¥òæF¼H ¾ùð—5K|ÑCŒy,¶GŽ>ý ¦” »endstream endobj 144 0 obj 2035 endobj 142 0 obj << /Type /Page /MediaBox [0 0 612 792] /Parent 2 0 R /Resources << /ProcSet [/PDF /Text] /Font << /A 20 0 R /R15 15 0 R /R10 10 0 R >> >> /Contents 143 0 R >> endobj 34 0 obj <> endobj 46 0 obj <> endobj 27 0 obj <> endobj 20 0 obj <>/FontBBox[0 0 61 115]/FontMatrix[1 0 0 1 0 0]/Widths[ 0 0 0 0 110 78]>> endobj 15 0 obj <> endobj 14 0 obj <> endobj 10 0 obj <> endobj 23 0 obj <> endobj 6 0 obj <> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R 7 0 R 11 0 R 16 0 R 24 0 R 28 0 R 31 0 R 37 0 R 40 0 R 43 0 R 47 0 R 50 0 R 53 0 R 56 0 R 59 0 R 62 0 R 65 0 R 68 0 R 71 0 R 75 0 R 78 0 R 81 0 R 84 0 R 87 0 R 90 0 R 93 0 R 96 0 R 99 0 R 102 0 R 105 0 R 108 0 R 111 0 R 114 0 R 117 0 R 120 0 R 124 0 R 127 0 R 130 0 R 133 0 R 136 0 R 139 0 R 142 0 R ] /Count 42 >> endobj 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 145 0 obj << /CreationDate (D:20040112111411) /Producer (GNU Ghostscript 5.50) >> endobj 19 0 obj <> endobj 21 0 obj <> stream 0 0 0 0 61 60 d1 61 0 0 60 0 0 cm BI /IM true/W 61/H 60/BPC 1/F/CCF/DP<> ID & N°œ,X@°Aap`‚áaÁ…‚ …„ .,X\ XAp¢ ƒ“Tx|0x0ø<0ðaáðÁàÃàðÃÁ‡‡ÃƒƒÃ  > Ááᨀ EI endstream endobj 22 0 obj <> stream 0 0 0 -55 61 5 d1 61 0 0 60 0 -55 cm BI /IM true/W 61/H 60/BPC 1/F/CCF/DP<> ID &¨àˆpàäÕpÃÁƒáàÃÇÁ‡†‡ƒ > <0x|x`øx0ðÃÃàß‚ÂXAp°AaÁp‚ÂÂÁ„   ,, \,X@°X… MQ€X EI endstream endobj 35 0 obj <> stream 0 0 0 -41 47 6 d1 47 0 0 47 0 -41 cm BI /IM true/W 47/H 47/BPC 1/F/CCF/DP<> ID &¡·…‚ …‚„ „ .X., ¸X XA`± 95ÃàðaáƒÁðÃÃÁ‡†Ã >< <0ü@ EI endstream endobj 36 0 obj <> stream 0 0 0 -41 47 6 d1 47 0 0 47 0 -41 cm BI /IM true/W 47/H 47/BPC 1/F/CCF/DP<> ID 6`áÓ\†  <0x>x0|<0ðÁàøaàÁððǃÁa…Á„ …‚„.X\X@¸X Q … EI endstream endobj 74 0 obj <> stream 110 0 0 0 0 0 d1 endstream endobj 123 0 obj <> stream 78 0 0 0 0 0 d1 endstream endobj xref 0 146 0000000000 65535 f 0000097012 00000 n 0000096652 00000 n 0000000313 00000 n 0000000015 00000 n 0000000294 00000 n 0000096576 00000 n 0000001103 00000 n 0000000461 00000 n 0000001084 00000 n 0000096410 00000 n 0000004116 00000 n 0000001263 00000 n 0000004095 00000 n 0000096336 00000 n 0000096260 00000 n 0000006549 00000 n 0000004302 00000 n 0000006528 00000 n 0000097150 00000 n 0000096025 00000 n 0000098388 00000 n 0000098650 00000 n 0000096501 00000 n 0000009386 00000 n 0000006741 00000 n 0000009365 00000 n 0000095954 00000 n 0000012104 00000 n 0000009572 00000 n 0000012083 00000 n 0000015392 00000 n 0000012290 00000 n 0000015371 00000 n 0000095811 00000 n 0000098918 00000 n 0000099161 00000 n 0000017021 00000 n 0000015608 00000 n 0000017000 00000 n 0000020158 00000 n 0000017207 00000 n 0000020137 00000 n 0000023429 00000 n 0000020356 00000 n 0000023408 00000 n 0000095900 00000 n 0000025524 00000 n 0000023639 00000 n 0000025503 00000 n 0000028545 00000 n 0000025712 00000 n 0000028524 00000 n 0000031023 00000 n 0000028731 00000 n 0000031002 00000 n 0000033480 00000 n 0000031219 00000 n 0000033459 00000 n 0000036163 00000 n 0000033666 00000 n 0000036142 00000 n 0000038724 00000 n 0000036371 00000 n 0000038703 00000 n 0000041459 00000 n 0000038910 00000 n 0000041438 00000 n 0000044042 00000 n 0000041655 00000 n 0000044021 00000 n 0000046662 00000 n 0000044228 00000 n 0000046641 00000 n 0000099403 00000 n 0000050404 00000 n 0000046858 00000 n 0000050383 00000 n 0000053526 00000 n 0000050590 00000 n 0000053505 00000 n 0000055993 00000 n 0000053724 00000 n 0000055972 00000 n 0000059230 00000 n 0000056189 00000 n 0000059209 00000 n 0000062452 00000 n 0000059426 00000 n 0000062431 00000 n 0000064591 00000 n 0000062660 00000 n 0000064570 00000 n 0000067033 00000 n 0000064767 00000 n 0000067012 00000 n 0000068380 00000 n 0000067219 00000 n 0000068359 00000 n 0000071106 00000 n 0000068576 00000 n 0000071084 00000 n 0000072923 00000 n 0000071303 00000 n 0000072901 00000 n 0000074259 00000 n 0000073099 00000 n 0000074237 00000 n 0000075935 00000 n 0000074435 00000 n 0000075913 00000 n 0000077264 00000 n 0000076101 00000 n 0000077242 00000 n 0000078968 00000 n 0000077430 00000 n 0000078946 00000 n 0000080678 00000 n 0000079134 00000 n 0000080656 00000 n 0000082702 00000 n 0000080844 00000 n 0000082680 00000 n 0000099468 00000 n 0000084541 00000 n 0000082888 00000 n 0000084519 00000 n 0000085815 00000 n 0000084717 00000 n 0000085793 00000 n 0000087167 00000 n 0000085991 00000 n 0000087145 00000 n 0000088538 00000 n 0000087343 00000 n 0000088516 00000 n 0000091293 00000 n 0000088714 00000 n 0000091271 00000 n 0000093328 00000 n 0000091469 00000 n 0000093306 00000 n 0000095635 00000 n 0000093504 00000 n 0000095613 00000 n 0000097061 00000 n trailer << /Size 146 /Root 1 0 R /Info 145 0 R >> startxref 99533 %%EOF postgis-0.8.1/.cvsignore0100664000077300001440000000006007754517432014640 0ustar postgisuserslibpostgis.so.0.8 postgis.sql postgis_undef.sql postgis-0.8.1/CHANGES0100664000077300001440000001504310000570601013611 0ustar postgisusersPostGIS 0.8.1 2025/01/12 - New Things - Schema support in AddGeometryColumn and loader/dumper - Bug Fixes - Memory fixes - GEOS translation fixes PostGIS 0.8.0 2025/11/24 - New Things - Support for PostgreSQL 7.4 - Support for all OpenGIS SFSQL functions (requires GEOS) - Contains() - Within() - GeomUnion() - Intersection() - Buffer() - and many more...! - Includes OpenGIS conformance tests - Passes all OpenGIS conformance tests - Spatial aggregate functions - GeomUnion() - Collect() - Bug Fixes - shp2pgsql/pgsql2shp - Numerous special cases in rings and attributes repaired - Some OpenGIS conformance changes PostGIS 0.7.5 2025/04/08 - Bug Fixes - shp2pgsql - Z coordinate handling - M coordinate handling - Ring handling fixed in some cases - Support for large numbers in attribute tables - Some obscure operators fixed - Some cygwin build improvements PostGIS 0.7.4 2025/02/12 - Bug Fixes - Several shp2pgsql enhancements and bugs. - Cleaner compile, fewer warnings. - Better undef support. - Fixed stateplane/feet proj definitions. - New Things - Support for PostgreSQL 7.3 - Optional spatial index selectivity system PostGIS 0.7.3 2025/09/05 - Bug Fixes - Stupid bug in .sql install script breaks install for many. Squashed. New release needed. - Automatic version detection for appropriate GiST bindings - postgis_transform now supports box3d types as well as geometry PostGIS 0.7.2 2025/09/01 - Bug Fixes - Numerous subtle bugs fixed in pgsql2shp and shp2pgsql DBF and SHP file handling - Some pgsql 7.3 preparations - Patch to truly_inside() corner case - Updates to the ~ and @ operators - Update to translate() function to also translate bbox PostGIS 0.7.1 2025/05/14 - Bug Fixes - PgSQL 7.2 RTree-over-GIST bug fix. Rare data cases caused index building to fail. - Carriage returns removed from source code. Were causing compilation failures. - collect() now returns simplest homogeneous type being aggregated (e.g.M ULTIPOLYGON for collect(*POLYGON)) PostGIS 0.7.0 2025/05/04 - New Things - transform() function provides coordinate reprojection using proj4 library - spatial_ref_sys.sql has a complete set of proj4 definitions for each EPSG coordinate system - support for PostgreSQL 7.2 GiST index API - refactoring of source code to separate index support functions from other functions - max_distance() function - distance_spheroid() function - collect() aggregate function - xmin(),ymin(),zmin(),xmax(),ymax(),zmax() functions - Bug Fixes - transform() more graceful when grid shifts are missing - setsrid() made cachable - patches to loader/dumper PostGIS 0.6.2 2025/11/07 - New Things - spatial_ref_sys.sql complete set of SRID and WKT - generate postgis_undef.sql automatically at build - Bug fixes - Memory problem in shp2pgsql - Compilation problems with shp2pgsql PostGIS 0.6.1 2025/10/15 - Bug fixes - Cygwin compilation fix - Improved getopts handling in utility programs - Text casting fixes PostGIS 0.6 2025/09/19 - New functions - postgis_version() Return the PostGIS version number. - find_srid(::varchar, ::varchar, ::varchar) Return the SRID number for a particular column of a database. - AddGeometryColumn(::varchar,
::varchar, ::varchar, ::integer, ::varchar, ::integer) Appends a geometry column to an existing table and updates the metadata tables appropriately. - DropGeometryColumn(::varchar,
::varchar, ::varchar) Removes a geometry column from an existing spatial table. - Distance(::geometry, ::geometry) Returns the cartesian distance between two geometries. - AsText(::geometry) Returns the OGC well-known text version of the geometry. - SRID(::geometry) Returns the integer SRID of the geometry. - GeometryFromText(::varchar, ::integer) Creates a geometry object given the OGC well-known text and a valid SRID. - SetSRID(::geometry) Sets the SRID of a geometry to a particular value. - IsClosed(::geometry) Returns true of first and last points of geometry are coincident. - StartPoint(::geometry) Returns the first point of a geometry. - EndPoint(::geometry) Returns the last point of a geometry. - Centroid(::geometry) Returns the centroid of a geometry. - More OpenGIS SFSQL compatibility - SPATIAL_REF_SYS table - GEOMETRY_COLUMNS table - SRID integrity checking - Better Mapserver compatibility - Minor fixes/changes - Support for WKB in the tables - Miscellaneous bug fixes - Placeholders for precision grid PostGIS 0.5 2025/07/20 - New functions - Dimension() - GeometryType() - Envelope() - X(), Y(), Z() - NumPoints() - PointN() - ExteriorRing() - NumInteriorRings() - InteriorRingN() - NumGeometries() - GeometryN() - Length_Spheroid() - Length3D_Spheroid() - AsBinary() + XDR and NDR variants - force_collection() - Removed functions - wkb_ndr() - wkb_xdr() - New Objects - SPHEROID(,,) To be used with the length_spheroid functions for accurate length calculations on lat/lon data. - Minor bug fixes - Internal Functions - Extra constructors to make geometry manipulation easier - Structural Reorganization - Broke postgis.c up into four new files postgis_debug.c -- debugging functions postgis_fn.c -- generic functions (like length()) postgis_ops.c -- operators and indexing functions postgis_inout.c -- type support functions and data conversion functions PostGIS 0.2 2025/06/19 - New functions - extent() - force_2d() - force_3d() - wkb_xdr() - wkb_ndr() - translate() - Fixes - Cygwin compilation (Norman Vine) - i386 byte alignment fixed - 'VACUUM ANALYZE' fixed - Other - documentation in docbook xml - example program for WKB access - removed 'make test' until we can get regression working more cleanly PostGIS 0.1 2025/05/25 - Initial release! - 'geometry' and 'box3d' types. - Parsing routines for all possible geometries in OGIS text format (POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION). - Output routines for all possible geometries in OGIS text format. - area2d(), area3d() - length3d(), length3d() - perimeter2d(), perimeter3d() - truely_inside() - rtree index support functions - gist index support functions postgis-0.8.1/COPYING0100664000077300001440000004313007314701322013661 0ustar postgisusers GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 2025 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. postgis-0.8.1/CREDITS0100664000077300001440000000242107760543145013660 0ustar postgisusersCREDITS: 2025/11/24 The core team of PostGIS is from Refractions Research: Dave Blasby, Paul Ramsey, Jeff Lounsbury and Chris Hodgson. All versions include substantial contributions from the core team. VERSION SPECIFIC CREDITS: Version 0.1 of PostGIS was developed by Refractions Research Inc, of Victora, British Columbia, Canada (http://www.refractions.net), as a research project into using PostgreSQL as a geospatial data-store. The following staff participated in the project: Dave Blasby - Core server objects and indexing (the hard stuff!) Paul Ramsey - Extensions to the PostgreSQL JDBC driver. Jeff Lounsbury - Shape file loader/dumper. Version 0.2 of PostGIS includes contributions from: Norman Vine on CygWin compilation issues Version 0.5 of PostGIS includes contributions from: Geographic Data BC (David Skea and Mark Sondheim) with funding and direction on adding calculations on a spheroid to PostGIS. Version 0.7 of PostGIS includes patches from: Steffen Macke on numerous loader/dumper bugs. Bernhard Reiter on some documentation issues and a loader limit. Mark Cave-Ayland on truly_inside(). STRK on shp2pgsql improvements Version 0.8 of PostGIS includes patches from: Carl Anderson on schemas STRK on numerous bug fixes and enhancements postgis-0.8.1/Makefile0100664000077300001440000001333107757177457014321 0ustar postgisusers# Configuration Directives #--------------------------------------------------------------- # Set USE_PROJ to 1 for Proj4 reprojection support # USE_PROJ=1 ifeq (${PROJ_DIR},) PROJ_DIR=/usr/local endif #--------------------------------------------------------------- # Set USE_GEOS to 1 for GEOS spatial predicate and operator # support # USE_GEOS=1 ifeq (${GEOS_DIR},) GEOS_DIR=/usr/local endif #--------------------------------------------------------------- # Set USE_STATS to 1 for new GiST statistics collection support # Note that this support requires additional columns in # GEOMETRY_COLUMNS, so see the list archives for info or # install a fresh database using postgis.sql # USE_STATS=1 #--------------------------------------------------------------- subdir=contrib/postgis #--------------------------------------------------------------- # Default the root of the PostgreSQL source tree # To use a non-standard location set the PGSQL_SRC environment # variable to the appropriate location. # ifeq (${PGSQL_SRC},) top_builddir = ../.. include $(top_builddir)/src/Makefile.global #LPATH := $$libdir else top_builddir = ${PGSQL_SRC} include $(top_builddir)/src/Makefile.global #LPATH := ${PWD} endif #--------------------------------------------------------------- # Default missing CXX variable to c++ # ifeq ($(CXX),) CXX = c++ endif #--------------------------------------------------------------- # Test the version string and set the USE_VERSION macro # appropriately. # ifneq ($(findstring 7.1,$(VERSION)),) USE_VERSION=71 else ifneq ($(findstring 7.2,$(VERSION)),) USE_VERSION=72 else ifneq ($(findstring 7.3,$(VERSION)),) USE_VERSION=73 else USE_VERSION=74 endif endif endif #--------------------------------------------------------------- # Shared library parameters. # NAME=postgis SO_MAJOR_VERSION=0 SO_MINOR_VERSION=8 ifeq (${USE_VERSION}, 71) MODULE_FILENAME = $(libdir)/$(shlib) MODULE_INSTALLDIR = $(libdir) else MODULE_FILENAME = $$libdir/$(shlib) MODULE_INSTALLDIR = $(pkglibdir) endif #--------------------------------------------------------------- override CFLAGS += -g -fexceptions override CFLAGS += -I$(srcdir) -DFRONTEND -DSYSCONFDIR='"$(sysconfdir)"' override CFLAGS += -DUSE_VERSION=$(USE_VERSION) ifeq ($(USE_GEOS),1) override CFLAGS += -I$(GEOS_DIR)/include/geos -DUSE_GEOS endif ifeq ($(USE_PROJ),1) override CFLAGS += -I$(PROJ_DIR)/include -DUSE_PROJ endif override DLLLIBS += $(BE_DLLLIBS) override CXXFLAGS := $(CFLAGS) # memory debug for gcc 2.91, 2.95, 3.0 and 3.1 # for gcc >= 3.2.2 set GLIBCPP_FORCE_NEW at runtime instead #override CXXFLAGS += -D__USE_MALLOC #--------------------------------------------------------------- # Add index selectivity to C flags # ifeq ($(USE_STATS),1) override CFLAGS += -DUSE_STATS endif #--------------------------------------------------------------- # Select proper GiST support C file # ifeq ($(USE_VERSION),71) GIST_SUPPORT=71 GIST_ESTIMATE= else GIST_SUPPORT=72 GIST_ESTIMATE=postgis_estimate.o endif ifeq ($(USE_GEOS),1) GEOS_WRAPPER=postgis_geos_wrapper.o endif OBJS=postgis_debug.o postgis_ops.o postgis_fn.o postgis_inout.o postgis_proj.o postgis_chip.o postgis_transform.o postgis_gist_$(GIST_SUPPORT).o $(GIST_ESTIMATE) postgis_geos.o $(GEOS_WRAPPER) postgis_algo.o #--------------------------------------------------------------- # Add libraries that libpq depends (or might depend) on into the # shared library link. (The order in which you list them here doesn't # matter.) SHLIB_LINK = $(filter -L%, $(LDFLAGS)) ifeq ($(USE_GEOS),1) SHLIB_LINK += -lstdc++ -L$(GEOS_DIR)/lib -lgeos endif ifeq ($(USE_PROJ),1) SHLIB_LINK += -L$(PROJ_DIR)/lib -lproj endif SHLIB_LINK += $(BE_DLLLIBS) #--------------------------------------------------------------- # Makefile targets include $(top_srcdir)/src/Makefile.shlib postgis_geos_wrapper.o: postgis_geos_wrapper.cpp all: all-lib postgis.sql postgis.sql postgis_undef.sql loaderdumper loaderdumper: $(MAKE) -C loader # Shared library stuff postgis.sql: postgis_sql_common.sql.in postgis_sql_$(USE_VERSION)_end.sql.in postgis_sql_$(USE_VERSION)_start.sql.in cat postgis_sql_$(USE_VERSION)_start.sql.in postgis_sql_common.sql.in postgis_sql_$(USE_VERSION)_end.sql.in | sed -e 's:@MODULE_FILENAME@:$(MODULE_FILENAME):g;s:@POSTGIS_VERSION@:$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION) USE_GEOS=$(USE_GEOS) USE_PROJ=$(USE_PROJ) USE_STATS=$(USE_STATS):g' > $@ postgis_undef.sql: postgis.sql create_undef.pl perl create_undef.pl $< $(USE_VERSION) > $@ install: all installdirs install-postgis-lib $(INSTALL_DATA) $(srcdir)/README.postgis $(docdir)/contrib $(INSTALL_DATA) postgis.sql $(datadir)/contrib $(INSTALL_DATA) postgis_undef.sql $(datadir)/contrib $(INSTALL_DATA) spatial_ref_sys.sql $(datadir)/contrib $(INSTALL_DATA) README.postgis $(datadir)/contrib $(MAKE) -C loader install #- This has been copied from postgresql and adapted install-postgis-lib: $(shlib) $(INSTALL_SHLIB) $< $(DESTDIR)$(MODULE_INSTALLDIR)/$(shlib) ifneq ($(PORTNAME), win) ifneq ($(shlib), lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)) cd $(DESTDIR)$(MODULE_INSTALLDIR) && \ rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) && \ $(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) endif ifneq ($(shlib), lib$(NAME)$(DLSUFFIX)) cd $(DESTDIR)$(MODULE_INSTALLDIR) && \ rm -f lib$(NAME)$(DLSUFFIX) && \ $(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX) endif endif # not win #---------------------------------------------------------- installdirs: $(mkinstalldirs) $(docdir)/contrib $(datadir)/contrib $(libdir) uninstall: uninstall-lib @rm -f $(docdir)/contrib/README.postgis $(datadir)/contrib/postgis.sql clean distclean maintainer-clean: clean-lib @rm -f $(OBJS) postgis.sql postgis_undef.sql $(MAKE) -C loader clean $(MAKE) -C doc clean postgis-0.8.1/README.postgis0100664000077300001440000001471710000570601015174 0ustar postgisusersPostGIS - Geographic Information Systems Extensions to PostgreSQL ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VERSION: 0.8.1 (2025/01/12) MORE INFORMATION: http://postgis.refractions.net INTRODUCTION: 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: ./ Core source code, makefiles and install directions. ./jdbc Extensions to the PostgreSQL JDBC drivers to support the GIS objects. ./doc Documentation on the code, objects and functions provided. ./loader A program to convert ESRI Shape files into SQL text suitable for uploading into a PostGIS/PostgreSQL database. ./examples Small programs which demonstrate ways of accessing GIS data. INSTALLATION: PostGIS is compatible with PostgreSQL 7.1 and above. To install the module, move this directory to the "contrib" directory of your PostgreSQL source installation. Alternately, edit the "top_buildir" in the Makefile and point it at your PostgreSQL source tree. You must have a PostgreSQL source tree, and you must have run succesfully built and installed it for this to work. SEE THE NOTE ON GEOS SUPPORT BELOW FOR SPECIAL COMPILATION INSTRUCTIONS * PROJ4 SUPPORT: The Proj4 reprojection library is required if you want to use the transform() function to reproject features within the database. Install Proj4 in the default location. Edit the postgis Makefile and change the USE_PROJ variable to 1 and ensure that the PROJ_DIR variable points to your Proj4 installation location (/usr/local is the default). * SPATIAL PREDICATE / GEOS SUPPORT: The GEOS library provides support for exact topological tests such as Touches(), Contains(), Disjoint() and spatial operations such as Intersection(), Union() and Buffer(). You can download GEOS from http://geos.refractions.net In order to use the GEOS support, you *must* specially compile your version of PostgreSQL to link the C++ runtime library. To do this, invoke the PgSQL configuration script this way: LDFLAGS=-lstdc++ ./configure --your-options-go-here The initial LDFLAGS variable is passed through to the Makefile and adds the C++ library to the linking stage. Once you have compiled PgSQL with C++ support, you can enable GEOS support in PostGIS by setting the USE_GEOS variable in the PostGIS Makefile to 1, and ensure that the GEOS_DIR variable points to your GEOS installation location (/usr/local is the default). To compile PostGIS, as root run: make make install PostGIS now requires the PL/pgSQL procedural language in order to operate correctly. To install PL/pgSQL use the 'createlang' program from the PostgreSQL installation. (The PostgreSQL Programmer's Guide has details if you want to this manually for some reason.) As postgres run: createlang plpgsql yourdatabase psql -f postgis.sql -d yourdatabase Installation should now be complete. UPGRADING: Upgrading PostGIS can be tricky, because the underlying C libraries which support the object types and geometries may have changed between versions. To avoid problems when upgrading, you will have to dump all the tables in your database, destroy the database, create a new one, add the PL/pgSQL language, upload the new postgis.sql file, then upload your database dump: pg_dump -t "*" -f dumpfile.sql yourdatabase dropdb yourdatabase createdb yourdatabase createlang plpgsql yourdatabase psql -f postgis.sql -d yourdatabase psql -f dumpfile.sql -d yourdatabase vacuumdb -z yourdatabase When upgrading to 0.6+, all your geometries will be created with an SRID of -1. To create valid OpenGIS geometries, you will have to create a valid SRID in the SPATIAL_REF_SYS table, and then update your geometries to reference the SRID with the following SQL (with the appropriate substitutions: UPDATE
SET = SetSRID(,); USAGE: 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 ) 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 ) 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. INSERT INTO SPATIAL_REF_SYS ( SRID, AUTH_NAME, AUTH_SRID, SRTEXT ) VALUES ( 1, 'EPSG', 4269, 'GEOGCS["NAD83", DATUM[ "North_American_Datum_1983", SPHEROID[ "GRS 1980", 6378137, 298.257222101 ] ], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433]]' ); CREATE TABLE geotest ( id INT4, name VARCHAR(32) ); SELECT AddGeometryColumn('db','geotest','geopoint',1,'POINT',2); INSERT INTO geotest (id, name, geopoint) 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)); SELECT name,AsText(geopoint) FROM geotest; 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. You can build a GiST index with: CREATE INDEX ON USING gist ( gist_geometry_ops ); Always run the "VACUUM ANALYZE " on your tables after creating an index. This gathers statistics which the query planner uses to optimize index usage. Note that PostgreSQL may occasionally not use the GiST indexes when performing searches. If you find your system is not using the indexes automatically (use 'EXPLAIN' to see the query plan) you can force index use with the command: SET ENABLE_SEQSCAN = OFF Try doing an EXPLAIN on your query before and after the 'enable_seqscan' command to see the different query plans. postgis-0.8.1/TODO0100664000077300001440000000046707760543145013340 0ustar postgisusers2003/11/20 - GML import/export routines - Connectivity to commercial GIS software. - Re-write WKT input/output functions to be faster - SVG output routines - Update PgSQL GiST to support row level (recangle level?) locking. - Network creation and network operations (upstream, downstream, least cost path) postgis-0.8.1/create_undef.pl0100664000077300001440000000570507714764650015636 0ustar postgisusers# perl create_undef.pl # creates a new sql script to delete all the postgis functions et al. ($#ARGV == 1) || die "Usage: perl create_undef.pl \nCreates a new SQL script to delete all the PostGIS functions.\n"; # drops are in the following order: # 1. Indexing system stuff # 2. Meta datatables # 3. Aggregates # 3. Casts # 4. Operators # 5. Functions # 6. Types # 7. Tables my @aggs = (); my @casts = (); my @funcs = (); my @types = (); my @ops = (); my $version = $ARGV[1]; print "BEGIN;\n"; if ( $version eq "73" ) { print "-- Drop index bindings from system tables\n"; print "DROP OPERATOR CLASS gist_geometry_ops USING gist;\n"; } else { print "-- Drop index bindings from system tables\n"; print "DELETE FROM pg_amproc WHERE amopclaid = (SELECT oid FROM pg_opclass WHERE opcname = 'gist_geometry_ops');\n"; print "DELETE FROM pg_amop WHERE amopclaid = (SELECT oid FROM pg_opclass WHERE opcname = 'gist_geometry_ops');\n"; print "DELETE FROM pg_opclass WHERE opcname = 'gist_geometry_ops';\n"; } open( INPUT, $ARGV[0] ) || die "Couldn't open file: $ARGV[0]\n"; while( my $line = ) { $line =~ s/[\r\n]//g; push (@funcs, $line) if ($line =~ /^create function/i); push (@ops, $line) if ($line =~ /^create operator.*\(/i); push (@aggs, $line) if ($line =~ /^create aggregate/i); push (@types, $line) if ($line =~ /^create type/i); push (@casts, $line) if ($line =~ /^create cast/i); } close( INPUT ); print "-- Drop all aggregates.\n"; foreach my $agg (@aggs) { if ( $agg =~ /create aggregate\s*(\w+)\s*\(/i ) { if ( $version eq "71" ) { print "DROP AGGREGATE $1 geometry;\n"; } else { print "DROP AGGREGATE $1 ( geometry );\n"; } } else { die "Couldn't parse line: $agg\n"; } } print "-- Drop all operators.\n"; foreach my $op (@ops) { if ($op =~ /create operator ([^(]+)/i ) { print "DROP OPERATOR $1 (geometry,geometry);\n"; } else { die "Couldn't parse line: $op\n"; } } print "-- Drop all casts.\n"; foreach my $cast (@casts) { if ($cast =~ /create cast\s*\((.+?)\)/i ) { print "DROP CAST ($1);\n"; } else { die "Couldn't parse line: $cast\n"; } } print "-- Drop all functions.\n"; foreach my $fn (@funcs) { if ($fn =~ /create function ([^(]+)\((.*)\)/i ) { my $fn_nm = $1; my $fn_arg = $2; if ( $version eq "73" ) { if ( ! ( $fn_nm =~ /_in/i || $fn_nm =~ /_out/i ) ) { print "DROP FUNCTION $fn_nm ($fn_arg);\n"; } } else { print "DROP FUNCTION $fn_nm ($fn_arg);\n"; } } else { die "Couldn't parse line: $fn\n"; } } print "-- Drop all types.\n"; foreach my $type (@types) { if ($type =~ /create type ([^(]+)/i ) { if ( $version eq "73" ) { print "DROP TYPE $1 CASCADE;\n"; } else { print "DROP TYPE $1;\n"; } } else { die "Couldn't parse line: $type\n"; } } print "-- Drop all tables.\n"; print "DROP TABLE spatial_ref_sys;\n"; print "DROP TABLE geometry_columns;\n"; print "\n"; print "COMMIT;\n"; 1; postgis-0.8.1/postgis.h0100664000077300001440000005366107761626111014511 0ustar postgisusers /********************************************************************** * $Id: postgis.h,v 1.39 2025/11/28 11:06:49 strk Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis.h,v $ * Revision 1.39 2025/11/28 11:06:49 strk * Added WKB_recv function for binary WKB input * * Revision 1.38 2025/11/19 15:44:51 strk * added prototypes for geometry_{le,ge,cmp} * * Revision 1.37 2025/10/28 16:57:35 strk * Added collect_garray() function. * * Revision 1.36 2025/10/28 15:16:17 strk * unite_sfunc() from postgis_geos.c renamed to geom_accum() and moved in postgis_fn.c * * Revision 1.35 2025/10/28 11:16:46 strk * Added postgis_algo.c prototypes * * Revision 1.34 2025/10/16 16:35:42 dblasby * added #include for people using freeBSD (strk@keybit.net patch) * * Revision 1.33 2025/08/08 18:19:20 dblasby * Conformance changes. * Removed junk from postgis_debug.c and added the first run of the long * transaction locking support. (this will change - dont use it) * conformance tests were corrected * some dos cr/lf removed * empty geometries i.e. GEOMETRYCOLLECT(EMPTY) added (with indexing support) * pointN(,1) now returns the first point (used to return 2nd) * * Revision 1.32 2025/08/06 19:31:18 dblasby * Added the WKB parser. Added all the functions like * PolyFromWKB(,[]). * * Added all the functions like PolyFromText(,[]) * * Minor problem in GEOS library fixed. * * Revision 1.31 2025/07/25 17:08:37 pramsey * Moved Cygwin endian define out of source files into postgis.h common * header file. * * Revision 1.30 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ /* * Everything is stored in a geometry3d, which is just a conglomeration * of the base types (and a little bit of other info). */ #include #include "utils/geo_decls.h" #define POINTTYPE 1 #define LINETYPE 2 #define POLYGONTYPE 3 #define MULTIPOINTTYPE 4 #define MULTILINETYPE 5 #define MULTIPOLYGONTYPE 6 #define COLLECTIONTYPE 7 #define BBOXONLYTYPE 99 /* * Norman Vine found this problem for compiling under cygwin * it defines BYTE_ORDER and LITTLE_ENDIAN */ #ifdef __CYGWIN__ #include // FOR ENDIAN DEFINES #endif //standard definition of an ellipsoid (what wkt calls a spheroid) // f = (a-b)/a // e_sq = (a*a - b*b)/(a*a) // b = a - fa typedef struct { double a; //semimajor axis double b; //semiminor axis double f; //flattening double e; //eccentricity (first) double e_sq; //eccentricity (first), squared char name[20]; //name of ellipse } SPHEROID; /*--------------------------------------------------------------------- * POINT3D - (x,y,z) * Base type for all geometries * Also used for POINT type and MULTIPOINT type *-------------------------------------------------------------------*/ typedef struct { double x,y,z; //for lat/long x=long, y=lat } POINT3D; /*--------------------------------------------------------------------- * BOX3D - Specified by two corner points, which are * sorted to save calculation time later. * * LLB -- lower right bottom point (ie. South West, Z low) * URT -- upper right top point (ie. North East, Z high) * * this is the long diagonal * * example: * BOX([0.0,0.0,0.0],[10.0,10.0,10.0]) * * NOTE: You CAN make columns in your database of this type * IT IS NOT A TRUE GEOMETRY! *-------------------------------------------------------------------*/ typedef struct { POINT3D LLB,URT; /* corner POINT3Ds on long diagonal */ } BOX3D; /*--------------------------------------------------------------------- * LINE - set of points (directed arcs) * P1->P2->P3->P4...->Pn *-------------------------------------------------------------------*/ typedef struct { int32 npoints; // how many points in the line int32 junk; // double-word alignment POINT3D points[1]; // array of actual points } LINE3D; /*--------------------------------------------------------------------- * POLYGON - set of closed rings. First ring in outer boundary * other rings are "holes" * * NOTE: this is acually stored a bit differently. It is more like: * int32 nrings * char filler[] * * where the 1st 4 byes of filler[] is npoints[0] the next 4 bytes * are npoints[1], etc... * * points[0] is either at filler[ 4 * nrings] * or at filler [ 4* nrings + 4] * Which ever one is double-word-aligned *-------------------------------------------------------------------*/ typedef struct { int32 nrings; // how many rings in this polygon int32 npoints[1]; //how many points in each ring /* could be 4 byes of filler here to make sure points[] is double-word aligned*/ POINT3D points[1]; // array of actual points } POLYGON3D; /*--------------------------------------------------------------------- * Geometry - all columns in postgres are of this type * * Geometries are collections of simple geometry types * (point, line, polygon). * * A Point is a geometry with a single point in it. * A MultiPoint is a geometry with a list of 'point' in it. * A Line is a geometry with a single line in it. * A MultiLine is a geometry with a list of 'line' in it. * A Polygon is a geometry with a single polygon in it. * A MultiPolygon is a geometry with a list of 'polygon' in it. * A Collection is a geometry with a (mixed) list of * point, line, and polygon. * * The bvol is the bounding volume of all the subobjects. * * is3d is true if the original data was sent in a 3d data. * 2d data is 3d data with z=0.0. * * 'type' has values: * Point -> POINTTYPE * MultiPoint -> MULTIPOINTTYPE * Line -> LINETYPE * MultiLine -> MULTILINETYPE * Polygon -> POLYGONTYPE * MultiPolygon -> MULTIPOLYGONTYPE * Collection -> COLLECTIOMTYPE * * 'objType' has values: * Point -> POINTTYPE * Line -> LINETYPE * Polygon -> POLYGONTYPE * * 'objOffset' is an offset (in bytes) into this structure of where * the subobject is defined. THESE ARE ALWAYS DOUBLE-WORD ALIGNED. * * * In reality the structure looks like: * int32 size; * int32 type; * bool is3d; * * BOX3D bvol; * int32 nobjs; * char data[...]; * * AND: * &objType[0] = &data[0] * &objType[1] = &data[4] * ... * &obgOffset[0] = &data[ 4* nobjs] * &obgOffset[1] = &data[ 4* nobjs + 4] * ... * &objData[0] = &GEOMETRY + objOffset[0] //always double-word aligned * &objData[1] = &GEOMETRY + objOffset[1] //always double-word aligned * ... * * ALL GEOMETRY COLUMNS IN YOUR DATABASE SHOULD BE OF THIS TYPE *-------------------------------------------------------------------*/ typedef struct { int32 size; // postgres variable-length type requirement int32 SRID; // spatial reference system id double offsetX; // for precision grid (future improvement) double offsetY; // for precision grid (future improvement) double scale; // for precision grid (future improvement) int32 type; // this type of geometry bool is3d; // true if the points are 3d (only for output) BOX3D bvol; // bounding volume of all the geo objects int32 nobjs; // how many sub-objects in this object int32 objType[1]; // type of object int32 objOffset[1];// offset (in bytes) into this structure where // the object is located char objData[1]; // store for actual objects } GEOMETRY; typedef struct chiptag { int size; //unused (for use by postgresql) int endian_hint; // the number 1 in the endian of this datastruct BOX3D bvol; int SRID; char future[4]; float factor; //usually 1.0. Integer values are multiplied by this number //to get the actual height value (for sub-meter accuracy //height data). int datatype; // 1 = float32, 5 = 24bit integer, 6 = 16bit integer (short) // 101 = float32 (NDR), 105 = 24bit integer (NDR), 106=16bit int (NDR) int height; int width; int compression; //# 0 = no compression, 1 = differencer // 0x80 = new value // 0x7F = nodata // this is provided for convenience, it should be set to // sizeof(chip) bytes into the struct because the serialized form is: //
// NULL when serialized void *data; // data[0] = bottm left, data[width] = 1st pixel, 2nd row (uncompressed) } CHIP; //for GiST indexing //This is the BOX type from geo_decls.h // Its included here for the GiST index. // Originally, we used BOXONLYTYPE geometries as our keys, but after // Oleg and teodor (http://www.sai.msu.su/~megera/postgres/gist/) // have released a more generic rtree/gist index for geo_decls.h polygon // type. I am using a slightly modified version of this, so // it will be easier to maintain. // // Their indexing is based on the BOX object, so we include it here. // ONLY FOR INDEXING typedef struct geomkey { int32 size; /* size in varlena terms */ BOX key; int32 SRID; //spatial reference system identifier } GEOMETRYKEY; // WKB structure -- exactly the same as TEXT typedef struct Well_known_bin { int32 size; // total size of this structure unsigned char data[1]; //THIS HOLD VARIABLE LENGTH DATA } WellKnownBinary; // -------------------------------------------- // histogram2d type // 2d histogram is a bounding box with a bunch of cells in it. // The cells will have width (xmax-xmin)/boxesPerSide // and height(ymax-ymin)/boxesPerSide // The first box is the ll corner's box, the send is directly to the right // (row-major). // // Size of structure is: // 4 (size) + 32 (box) + 4 (boxesPerSide) + // boxesPerSide*boxesPerSide*4 (data) typedef struct histotag { int32 size; // postgres variable-length type requirement int boxesPerSide; //boxesPerSide * boxesPerSide = total boxes in grid double avgFeatureArea; // average bbox area of features in this histogram // double will be correctly aligned double xmin,ymin, xmax, ymax; // BOX of area unsigned int value[1]; // variable length # of ints for histogram } HISTOGRAM2D; //prototypes int isspace(int c); /* constructors*/ POLYGON3D *make_polygon(int nrings, int *pts_per_ring, POINT3D *pts, int npoints, int *size); void set_point( POINT3D *pt,double x, double y, double z); GEOMETRY *make_oneobj_geometry(int sub_obj_size, char *sub_obj, int type, bool is3d, int SRID,double scale, double offx,double offy); void print_point(char *result, POINT3D *pt,bool is3d); void print_many_points(char *result, POINT3D *pt ,int npoints, bool is3d); void swap(double *d1, double *d2); int numb_points_in_list(char *str); bool parse_points_in_list(char *str, POINT3D *points, int32 max_points, bool *is3d); bool parse_points_in_list_exact(char *str, POINT3D *points, int32 max_points, bool *is3d); int find_outer_list_length(char *str); bool points_per_sublist( char *str, int32 *npoints, int32 max_lists); char *scan_to_same_level(char *str); int objects_inside_point(char *str); int objects_inside_line(char *str); int objects_inside_polygon(char *str); int objects_inside_multipoint(char *str); int objects_inside_multiline(char *str); int objects_inside_multipolygon(char *str); int objects_inside_collection(char *str); int objects_inside(char *str); bool parse_objects_inside_point(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d); bool parse_objects_inside_multipoint(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d); bool parse_objects_inside_line(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d); bool parse_objects_inside_multiline(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d); bool parse_objects_inside_polygon(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d); bool parse_objects_inside_multipolygon(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d); bool parse_objects(int32 *obj_size,char **objs,int32 *obj_types,int32 nobjs,char *str, int *offset, bool *is3d); bool parse_objects_inside_collection(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d); BOX3D *bbox_of_point(POINT3D *pt); BOX3D *bbox_of_polygon(POLYGON3D *polygon); BOX3D *bbox_of_line(LINE3D *line); BOX3D *union_box3d(BOX3D *a, BOX3D *b); BOX3D *bbox_of_geometry(GEOMETRY *geom); GEOMETRY *make_bvol_geometry(BOX3D *box); bool box3d_ov(BOX3D *box1, BOX3D *box2); bool is_same_point(POINT3D *p1, POINT3D *p2); bool is_same_line(LINE3D *l1, LINE3D *l2); bool is_same_polygon(POLYGON3D *poly1, POLYGON3D *poly2); BOX *convert_box3d_to_box(BOX3D *in); double line_length2d(LINE3D *line); double line_length3d(LINE3D *line); double polygon_area2d_old(POLYGON3D *poly1); double polygon_perimeter3d(POLYGON3D *poly1); double polygon_perimeter2d(POLYGON3D *poly1); int PIP( POINT3D *P, POINT3D *V, int n ); bool point_truely_inside(POINT3D *point, BOX3D *box); int compute_outcode( POINT3D *p, BOX3D *box); bool lineseg_inside_box( POINT3D *P1, POINT3D *P2, BOX3D *box); bool linestring_inside_box(POINT3D *pts, int npoints, BOX3D *box); bool polygon_truely_inside(POLYGON3D *poly, BOX3D *box); bool line_truely_inside( LINE3D *line, BOX3D *box); void translate_points(POINT3D *pt, int npoints,double x_off, double y_off, double z_off); int size_subobject (char *sub_obj, int type); GEOMETRY *add_to_geometry(GEOMETRY *geom,int sub_obj_size, char *sub_obj, int type); LINE3D *make_line(int npoints, POINT3D *pts, int *size); void swap_char(char *a, char*b); void flip_endian_double(char *dd); void flip_endian_int32(char *ii); char *to_wkb(GEOMETRY *geom, bool flip_endian); char *wkb_multipolygon(POLYGON3D **polys,int numb_polys,int32 *size, bool flipbytes, char byte_order,bool use3d); char *wkb_polygon(POLYGON3D *poly,int32 *size, bool flipbytes, char byte_order,bool use3d, char *mem); char *wkb_multiline(LINE3D **lines,int32 *size, int numb_lines, bool flipbytes, char byte_order,bool use3d); char *wkb_line(LINE3D *line,int32 *size, bool flipbytes, char byte_order,bool use3d, char *mem); char *wkb_point(POINT3D *pt,int32 *size, bool flipbytes, char byte_order, bool use3d); char *wkb_multipoint(POINT3D *pt,int32 numb_points,int32 *size, bool flipbytes, char byte_order,bool use3d); char *to_wkb_collection(GEOMETRY *geom, bool flip_endian, int32 *size); char *to_wkb_sub(GEOMETRY *geom, bool flip_endian, int32 *wkb_size); double deltaLongitude(double azimuth, double sigma, double tsm,SPHEROID *sphere); double bigA(double u2); double bigB(double u2); double distance_ellipse(double lat1, double long1, double lat2, double long2, SPHEROID *sphere); double mu2(double azimuth,SPHEROID *sphere); double length2d_ellipse_linestring(LINE3D *line, SPHEROID *sphere); double length3d_ellipse_linestring(LINE3D *line, SPHEROID *sphere); double distance_pt_pt(POINT3D *p1, POINT3D *p2); double distance_pt_line(POINT3D *p1, LINE3D *l2); double distance_pt_poly(POINT3D *p1, POLYGON3D *poly2); double distance_line_line(LINE3D *l1, LINE3D *l2); double distance_line_poly(LINE3D *l1, POLYGON3D *poly2); double distance_poly_poly(POLYGON3D *poly1, POLYGON3D *poly2); double distance_pt_seg(POINT3D *p, POINT3D *A, POINT3D *B); double distance_seg_seg(POINT3D *A, POINT3D *B, POINT3D *C, POINT3D *D); bool point_in_poly(POINT3D *p, POLYGON3D *poly); POINT3D *segmentize_ring(POINT3D *points, double dist, int num_points_in, int *num_points_out); Datum optimistic_overlap(PG_FUNCTION_ARGS); unsigned char parse_hex(char *str); void deparse_hex(unsigned char str, unsigned char *result); char *geometry_to_text(GEOMETRY *geometry); BOX3D *parse_box3d(char *str); int getint(char *c); double getdouble(char *c); GEOMETRY *WKBtoGeometry(char *WKB, int length, int *bytes_read); POINT3D *wkb_linearring(char *WKB,char is3d, char flip_endian, int *numbPoints, int *bytes,int bytes_in_stream); GEOMETRY *makeNullGeometry(int SRID); void compressType(GEOMETRY *g); void DP_findsplit(POINT3D *, int, int, int, int *, double *); void DP_simplify(POINT3D *, int, POINT3D **, int *, double); char *simplify_line3d(LINE3D *, double); char *simplify_polygon3d(POLYGON3D *, double); char *simplify_point3d(POINT3D *, double); //exposed to psql Datum box3d_in(PG_FUNCTION_ARGS); Datum box3d_out(PG_FUNCTION_ARGS); Datum geometry_in(PG_FUNCTION_ARGS); Datum geometry_out(PG_FUNCTION_ARGS); Datum astext_geometry(PG_FUNCTION_ARGS); Datum geometry_text(PG_FUNCTION_ARGS); Datum get_bbox_of_geometry(PG_FUNCTION_ARGS); Datum get_geometry_of_bbox(PG_FUNCTION_ARGS); Datum box3d_same(PG_FUNCTION_ARGS); Datum geometry_overleft(PG_FUNCTION_ARGS); Datum geometry_left(PG_FUNCTION_ARGS); Datum geometry_right(PG_FUNCTION_ARGS); Datum geometry_overright(PG_FUNCTION_ARGS); Datum geometry_contained(PG_FUNCTION_ARGS); Datum geometry_contain(PG_FUNCTION_ARGS); Datum geometry_overlap(PG_FUNCTION_ARGS); Datum geometry_same(PG_FUNCTION_ARGS); Datum box3d_overlap(PG_FUNCTION_ARGS); Datum box3d_overleft(PG_FUNCTION_ARGS); Datum box3d_right(PG_FUNCTION_ARGS); Datum box3d_contain(PG_FUNCTION_ARGS); Datum geometry_union(PG_FUNCTION_ARGS); Datum geometry_inter(PG_FUNCTION_ARGS); Datum geometry_size(PG_FUNCTION_ARGS); Datum length3d(PG_FUNCTION_ARGS); Datum length2d(PG_FUNCTION_ARGS); Datum area2d(PG_FUNCTION_ARGS); Datum perimeter3d(PG_FUNCTION_ARGS); Datum perimeter2d(PG_FUNCTION_ARGS); Datum truly_inside(PG_FUNCTION_ARGS); Datum geometry_lt(PG_FUNCTION_ARGS); Datum geometry_le(PG_FUNCTION_ARGS); Datum geometry_eq(PG_FUNCTION_ARGS); Datum geometry_gt(PG_FUNCTION_ARGS); Datum geometry_ge(PG_FUNCTION_ARGS); Datum geometry_cmp(PG_FUNCTION_ARGS); Datum npoints(PG_FUNCTION_ARGS); Datum nrings(PG_FUNCTION_ARGS); Datum mem_size(PG_FUNCTION_ARGS); Datum summary(PG_FUNCTION_ARGS); Datum translate(PG_FUNCTION_ARGS); Datum asbinary_specify(PG_FUNCTION_ARGS); Datum asbinary_simple(PG_FUNCTION_ARGS); Datum force_2d(PG_FUNCTION_ARGS); Datum force_3d(PG_FUNCTION_ARGS); Datum force_collection(PG_FUNCTION_ARGS); Datum combine_bbox(PG_FUNCTION_ARGS); Datum dimension(PG_FUNCTION_ARGS); Datum geometrytype(PG_FUNCTION_ARGS); Datum envelope(PG_FUNCTION_ARGS); Datum x_point(PG_FUNCTION_ARGS); Datum y_point(PG_FUNCTION_ARGS); Datum z_point(PG_FUNCTION_ARGS); Datum numpoints_linestring(PG_FUNCTION_ARGS); Datum pointn_linestring(PG_FUNCTION_ARGS); Datum exteriorring_polygon(PG_FUNCTION_ARGS); Datum numinteriorrings_polygon(PG_FUNCTION_ARGS); Datum interiorringn_polygon(PG_FUNCTION_ARGS); Datum numgeometries_collection(PG_FUNCTION_ARGS); Datum geometryn_collection(PG_FUNCTION_ARGS); Datum ellipsoid_out(PG_FUNCTION_ARGS); Datum ellipsoid_in(PG_FUNCTION_ARGS); Datum length_ellipsoid(PG_FUNCTION_ARGS); Datum length3d_ellipsoid(PG_FUNCTION_ARGS); Datum distance_ellipsoid(PG_FUNCTION_ARGS); Datum point_inside_circle(PG_FUNCTION_ARGS); Datum distance(PG_FUNCTION_ARGS); Datum expand_bbox(PG_FUNCTION_ARGS); Datum srid_geom(PG_FUNCTION_ARGS); Datum geometry_from_text(PG_FUNCTION_ARGS); Datum startpoint(PG_FUNCTION_ARGS); Datum endpoint(PG_FUNCTION_ARGS); Datum isclosed(PG_FUNCTION_ARGS); Datum centroid(PG_FUNCTION_ARGS); Datum postgis_gist_sel(PG_FUNCTION_ARGS); Datum WKB_in(PG_FUNCTION_ARGS); Datum WKB_out(PG_FUNCTION_ARGS); Datum WKB_recv(PG_FUNCTION_ARGS); Datum CHIP_in(PG_FUNCTION_ARGS); Datum CHIP_out(PG_FUNCTION_ARGS); Datum CHIP_to_geom(PG_FUNCTION_ARGS); Datum srid_chip(PG_FUNCTION_ARGS); Datum setsrid_chip(PG_FUNCTION_ARGS); Datum width_chip(PG_FUNCTION_ARGS); Datum height_chip(PG_FUNCTION_ARGS); Datum datatype_chip(PG_FUNCTION_ARGS); Datum compression_chip(PG_FUNCTION_ARGS); Datum setfactor_chip(PG_FUNCTION_ARGS); Datum factor_chip(PG_FUNCTION_ARGS); Datum segmentize(PG_FUNCTION_ARGS); Datum box3d_xmin(PG_FUNCTION_ARGS); Datum box3d_ymin(PG_FUNCTION_ARGS); Datum box3d_zmin(PG_FUNCTION_ARGS); Datum box3d_xmax(PG_FUNCTION_ARGS); Datum box3d_ymax(PG_FUNCTION_ARGS); Datum box3d_zmax(PG_FUNCTION_ARGS); Datum box3dtobox(PG_FUNCTION_ARGS); Datum transform_geom(PG_FUNCTION_ARGS); Datum max_distance(PG_FUNCTION_ARGS); Datum geom_accum(PG_FUNCTION_ARGS); Datum collect_garray(PG_FUNCTION_ARGS); Datum collector(PG_FUNCTION_ARGS); Datum WKBtoBYTEA(PG_FUNCTION_ARGS); Datum histogram2d_in(PG_FUNCTION_ARGS); Datum histogram2d_out(PG_FUNCTION_ARGS); Datum create_histogram2d(PG_FUNCTION_ARGS); Datum build_histogram2d(PG_FUNCTION_ARGS); Datum geometry2box(PG_FUNCTION_ARGS); Datum explode_histogram2d(PG_FUNCTION_ARGS); Datum estimate_histogram2d(PG_FUNCTION_ARGS); Datum postgisgistcostestimate(PG_FUNCTION_ARGS); Datum geometryfromWKB(PG_FUNCTION_ARGS); Datum geometryfromWKB_SRID(PG_FUNCTION_ARGS); Datum PointfromWKB_SRID(PG_FUNCTION_ARGS); Datum LinefromWKB_SRID(PG_FUNCTION_ARGS); Datum PolyfromWKB_SRID(PG_FUNCTION_ARGS); Datum MPointfromWKB_SRID(PG_FUNCTION_ARGS); Datum MLinefromWKB_SRID(PG_FUNCTION_ARGS); Datum MPolyfromWKB_SRID(PG_FUNCTION_ARGS); Datum GCfromWKB_SRID(PG_FUNCTION_ARGS); Datum geometry_from_text_poly(PG_FUNCTION_ARGS); Datum geometry_from_text_mpoly(PG_FUNCTION_ARGS); Datum geometry_from_text_point(PG_FUNCTION_ARGS); Datum geometry_from_text_mpoint(PG_FUNCTION_ARGS); Datum geometry_from_text_line(PG_FUNCTION_ARGS); Datum geometry_from_text_mline(PG_FUNCTION_ARGS); Datum geometry_from_text_gc(PG_FUNCTION_ARGS); Datum isempty(PG_FUNCTION_ARGS); Datum simplify(PG_FUNCTION_ARGS); /*-------------------------------------------------------------------- * Useful floating point utilities and constants. * from postgres geo_decls.c * EPSILON modified to be more "double" friendly *-------------------------------------------------------------------*/ // from contrib/cube/cube.c #define max(a,b) ((a) > (b) ? (a) : (b)) #define min(a,b) ((a) <= (b) ? (a) : (b)) #define abs(a) ((a) < (0) ? (-a) : (a)) postgis-0.8.1/postgis_algo.c0100664000077300001440000002363707747170633015515 0ustar postgisusers/********************************************************************** * $Id: postgis_algo.c,v 1.1 2025/10/27 10:21:15 strk Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_algo.c,v $ * Revision 1.1 2025/10/27 10:21:15 strk * Initial import. * **********************************************************************/ #include "postgres.h" #include "postgis.h" /*********************************************************************** * Simple Douglas-Peucker line simplification. * No checks are done to avoid introduction of self-intersections. * No topology relations are considered. * * --strk@keybit.net; ***********************************************************************/ #define SAMEPOINT(a,b) ((a)->x==(b)->x&&(a)->y==(b)->y&&(a)->z==(b)->z) #define VERBOSE 0 #if VERBOSE > 0 #undef REPORT_POINTS_REDUCTION #undef REPORT_RINGS_REDUCTION #define REPORT_RINGS_ADJUSTMENTS #endif #undef CHECK_RING_IS_CLOSE /* * Search farthest point from segment p1-p2 * returns squared distance an int pointer */ void DP_findsplit(POINT3D *pts, int npts, int p1, int p2, int *split, double *dist) { int k; POINT3D *pa, *pb, *pk; double tmp; #if VERBOSE > 4 elog(NOTICE, "DP_findsplit called"); #endif *dist = -1; *split = p1; if (p1 + 1 < p2) { pa = &(pts[p1]); pb = &(pts[p2]); #if VERBOSE > 4 elog(NOTICE, "DP_findsplit: P%d(%f,%f) to P%d(%f,%f)", p1, pa->x, pa->y, p2, pb->x, pb->y); #endif for (k=p1+1; k 4 elog(NOTICE, "DP_findsplit: P%d(%f,%f)", k, pk->x, pk->y); #endif /* distance computation */ tmp = distance_pt_seg(pk, pa, pb); if (tmp > *dist) { *dist = tmp; /* record the maximum */ *split = k; #if VERBOSE > 4 elog(NOTICE, "DP_findsplit: P%d is farthest (%g)", k, *dist); #endif } } } /* length---should be redone if can == 0 */ else { #if VERBOSE > 3 elog(NOTICE, "DP_findsplit: segment too short, no split/no dist"); #endif } } void DP_simplify(POINT3D *inpts, int inptsn, POINT3D **outpts, int *outptsn, double epsilon) { int stack[inptsn]; /* recursion stack */ int sp=-1; /* recursion stack pointer */ int p1, split; double dist_sq; double epsilon_sq = epsilon*epsilon; POINT3D *outpoints; int numoutpoints=0; p1 = 0; stack[++sp] = inptsn-1; #if VERBOSE > 4 elog(NOTICE, "DP_simplify called"); #endif outpoints = (POINT3D *)palloc( sizeof(POINT3D) * inptsn); memcpy(outpoints, inpts, sizeof(POINT3D)); numoutpoints++; #if VERBOSE > 3 elog(NOTICE, "DP_simplify: added P0 to simplified point array (size 1)"); #endif do { DP_findsplit(inpts, inptsn, p1, stack[sp], &split, &dist_sq); #if VERBOSE > 3 elog(NOTICE, "DP_simplify: farthest point from P%d-P%d is P%d (dist. %g)", p1, stack[sp], split, sqrt(dist_sq)); #endif if (dist_sq > epsilon_sq) { stack[++sp] = split; } else { /* outpoints = repalloc( outpoints, sizeof(POINT3D) * numoutpoints+1 ); if ( outpoints == NULL ) elog(NOTICE, "Out of virtual memory"); */ memcpy(outpoints+numoutpoints, &(inpts[stack[sp]]), sizeof(POINT3D)); numoutpoints++; #if VERBOSE > 3 elog(NOTICE, "DP_simplify: added P%d to simplified point array (size: %d)", stack[sp], numoutpoints); #endif p1 = stack[sp--]; } #if VERBOSE > 5 elog(NOTICE, "stack pointer = %d", sp); #endif } while (! (sp<0) ); /* * If we have reduced the number of points realloc * outpoints array to free up some memory. * Might be turned on and of with a SAVE_MEMORY define ... */ if ( numoutpoints < inptsn ) { outpoints = (POINT3D *)repalloc(outpoints, sizeof(POINT3D)*numoutpoints); if ( outpoints == NULL ) { elog(ERROR, "Out of virtual memory"); } } *outpts = outpoints; *outptsn = numoutpoints; } char * simplify_line3d(LINE3D *iline, double dist) { POINT3D *ipts; POINT3D *opts; int iptsn, optsn, olinesize; LINE3D *oline; ipts = iline->points; iptsn = iline->npoints; DP_simplify(ipts, iptsn, &opts, &optsn, dist); oline = make_line(optsn, opts, &olinesize); return (char *)oline; } char * simplify_polygon3d(POLYGON3D *ipoly, double dist) { POINT3D *ipts; POINT3D *opts; int iptsn, optsn, size; int nrings; int pts_per_ring[ipoly->nrings]; POLYGON3D *opoly; int ri; POINT3D *allpts = NULL; int allptsn = 0; int pt_off = 0; /* point offset for each ring */ nrings = 0; #ifdef REPORT_RINGS_REDUCTION elog(NOTICE, "simplify_polygon3d: simplifying polygon with %d rings", ipoly->nrings); #endif /* Points start here */ ipts = (POINT3D *) ((char *)&(ipoly->npoints[ipoly->nrings] )); pt_off=0; for (ri=0; rinrings; pt_off += ipoly->npoints[ri++]) { iptsn = ipoly->npoints[ri]; #ifdef CHECK_RING_IS_CLOSE if ( ! SAMEPOINT(ipts+pt_off, ipts+pt_off+iptsn-1) ) elog(NOTICE, "First point != Last point"); #endif DP_simplify(ipts+pt_off, iptsn, &opts, &optsn, dist); if ( optsn < 2 ) { /* There as to be an error in DP_simplify */ elog(NOTICE, "DP_simplify returned a <2 pts array"); pfree(opts); continue; } #ifdef CHECK_RING_IS_CLOSE if ( ! SAMEPOINT(opts, opts+optsn-1) ) elog(NOTICE, "First point != Last point"); #endif if ( optsn < 4 ) { pfree(opts); #ifdef REPORT_RINGS_ADJUSTMENTS elog(NOTICE, "simplify_polygon3d: ring%d skipped ( <4 pts )", ri); #endif if ( ri ) continue; else break; } #ifdef REPORT_POINTS_REDUCTION elog(NOTICE, "simplify_polygon3d: ring%d simplified from %d to %d points", ri, iptsn, optsn); #endif /* * Add ring to simplified ring array * (TODO: dinamic allocation of pts_per_ring) */ pts_per_ring[nrings++] = optsn; if ( ! allptsn ) { allptsn = optsn; allpts = palloc(sizeof(POINT3D)*allptsn); memcpy(allpts, opts, sizeof(POINT3D)*optsn); } else { allptsn += optsn; allpts = repalloc(allpts, sizeof(POINT3D)*allptsn); memcpy(allpts+(allptsn-optsn), opts, sizeof(POINT3D)*optsn); } pfree(opts); if ( ! allpts ) { elog(NOTICE, "Error allocating memory for all ring points"); return NULL; } } #ifdef REPORT_RINGS_REDUCTION elog(NOTICE, "simplify_polygon3d: simplified polygon with %d rings", nrings); #endif if ( nrings ) { opoly = make_polygon(nrings, pts_per_ring, allpts, allptsn, &size); pfree(allpts); return (char *)opoly; } else { return NULL; } } char * simplify_point3d(POINT3D *ipoint, double dist) { return (char *)ipoint; } PG_FUNCTION_INFO_V1(simplify); Datum simplify(PG_FUNCTION_ARGS) { Datum datum; BOX3D *bbox; GEOMETRY *orig_geom; GEOMETRY *simp_geom = NULL; char *orig_obj; /* pointer to each object in orig_geom */ char *simp_obj; /* pointer to each simplified object */ int simp_obj_size; /* size of simplified object */ int32 *offsets; int i; double dist; if ( PG_ARGISNULL(0) ) PG_RETURN_NULL(); datum = PG_GETARG_DATUM(0); orig_geom = (GEOMETRY *)PG_DETOAST_DATUM(datum); if ( PG_ARGISNULL(1) ) PG_RETURN_NULL(); dist = PG_GETARG_FLOAT8(1); /* * Three or more points on a straight line will still collapse! */ // if ( dist == 0 ) PG_RETURN_POINTER(orig_geom); offsets = (int32 *) ( ((char *) &(orig_geom->objType[0] )) + sizeof(int32) * orig_geom->nobjs ); /* * Simplify each subobject indipendently. * No topology relations kept. */ for(i=0;inobjs; i++) { orig_obj = (char *) orig_geom+offsets[i]; if ( orig_geom->objType[i] == LINETYPE ) { simp_obj = simplify_line3d((LINE3D *)orig_obj, dist); } else if ( orig_geom->objType[i] == POLYGONTYPE ) { simp_obj = simplify_polygon3d((POLYGON3D *)orig_obj, dist); } else if ( orig_geom->objType[i] == POINTTYPE ) { simp_obj = simplify_point3d((POINT3D *)orig_obj, dist); } else { elog(NOTICE, "Unknown geometry type"); PG_RETURN_NULL(); } /* Simplified object degenerated to empty set */ if ( ! simp_obj ) continue; /* Get size of simplified object */ simp_obj_size = size_subobject(simp_obj, orig_geom->objType[i]); /* Create one-object geometry (will add objects later) */ if ( simp_geom == NULL ) { simp_geom = make_oneobj_geometry( simp_obj_size, simp_obj, orig_geom->objType[i], orig_geom->is3d, orig_geom->SRID, orig_geom->scale, orig_geom->offsetX, orig_geom->offsetY); } /* Add object to already initialized geometry */ else { simp_geom = add_to_geometry( simp_geom, simp_obj_size, simp_obj, orig_geom->objType[i] ); } /* Error in simplified geometry construction */ if ( ! simp_geom ) { elog(ERROR, "geometry construction failed at iteration %d", i); PG_RETURN_NULL(); } } if ( simp_geom == NULL ) PG_RETURN_NULL(); /* Calculate the bounding box */ bbox = bbox_of_geometry(simp_geom); memcpy(&(simp_geom->bvol), bbox, sizeof(BOX3D)); pfree(bbox); simp_geom->type = orig_geom->type; PG_RETURN_POINTER(simp_geom); } /*********************************************************************** * --strk@keybit.net; ***********************************************************************/ postgis-0.8.1/postgis_chip.c0100664000077300001440000001474207700351537015504 0ustar postgisusers /********************************************************************** * $Id: postgis_chip.c,v 1.6 2025/07/01 18:30:55 pramsey Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_chip.c,v $ * Revision 1.6 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" // input is a string with hex chars in it. Convert to binary and put in the result PG_FUNCTION_INFO_V1(CHIP_in); Datum CHIP_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); CHIP *result; int size; int t; int input_str_len; int datum_size; //printf("chip_in called\n"); input_str_len = strlen(str); if ( ( ( (int)(input_str_len/2.0) ) *2.0) != input_str_len) { elog(ERROR,"CHIP_in parser - should be even number of characters!"); PG_RETURN_NULL(); } if (strspn(str,"0123456789ABCDEF") != strlen(str) ) { elog(ERROR,"CHIP_in parser - input contains bad characters. Should only have '0123456789ABCDEF'!"); PG_RETURN_NULL(); } size = (input_str_len/2) ; result = (CHIP *) palloc(size); for (t=0;tsize = size; if (result->size < sizeof(CHIP) ) { elog(ERROR,"CHIP_in parser - bad data (too small to be a CHIP)!"); PG_RETURN_NULL(); } if (result->endian_hint != 1) { //need to do an endian flip flip_endian_int32( (char *) &result->endian_hint); flip_endian_double((char *) &result->bvol.LLB.x); flip_endian_double((char *) &result->bvol.LLB.y); flip_endian_double((char *) &result->bvol.LLB.z); flip_endian_double((char *) &result->bvol.URT.x); flip_endian_double((char *) &result->bvol.URT.y); flip_endian_double((char *) &result->bvol.URT.z); flip_endian_int32( (char *) & result->SRID); //dont know what to do with future[8] ... flip_endian_int32( (char *) & result->height); flip_endian_int32( (char *) & result->width); flip_endian_int32( (char *) & result->compression); flip_endian_int32( (char *) & result->factor); flip_endian_int32( (char *) & result->datatype); } if (result->endian_hint != 1 ) { elog(ERROR,"CHIP_in parser - bad data (endian flag != 1)!"); PG_RETURN_NULL(); } datum_size = 4; if ( (result->datatype == 6) || (result->datatype == 7) || (result->datatype == 106) || (result->datatype == 107) ) { datum_size = 2; } if ( (result->datatype == 8) || (result->datatype == 108) ) { datum_size=1; } if (result->compression ==0) //only true for non-compressed data { if (result->size != (sizeof(CHIP) + datum_size * result->width*result->height) ) { elog(ERROR,"CHIP_in parser - bad data (actual size != computed size)!"); PG_RETURN_NULL(); } } PG_RETURN_POINTER(result); } //given a CHIP structure, convert it to Hex and put it in a string PG_FUNCTION_INFO_V1(CHIP_out); Datum CHIP_out(PG_FUNCTION_ARGS) { CHIP *chip = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *result; int size_result; int t; //printf("chip_out called\n"); size_result = (chip->size ) *2 +1; //+1 for null char result = palloc (size_result); result[size_result-1] = 0; //null terminate for (t=0; t< (chip->size); t++) { deparse_hex( ((unsigned char *) chip)[t], &result[t*2]); } PG_RETURN_CSTRING(result); } PG_FUNCTION_INFO_V1(CHIP_to_geom); Datum CHIP_to_geom(PG_FUNCTION_ARGS) { CHIP *chip = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *result; POLYGON3D *poly; POINT3D pts[5]; //5 points around box int pts_per_ring[1]; int poly_size; //use LLB's z value (we're going to set is3d to false) set_point( &pts[0], chip->bvol.LLB.x , chip->bvol.LLB.y , chip->bvol.LLB.z ); set_point( &pts[1], chip->bvol.URT.x , chip->bvol.LLB.y , chip->bvol.LLB.z ); set_point( &pts[2], chip->bvol.URT.x , chip->bvol.URT.y , chip->bvol.LLB.z ); set_point( &pts[3], chip->bvol.LLB.x , chip->bvol.URT.y , chip->bvol.LLB.z ); set_point( &pts[4], chip->bvol.LLB.x , chip->bvol.LLB.y , chip->bvol.LLB.z ); pts_per_ring[0] = 5; //ring has 5 points //make a polygon poly = make_polygon(1, pts_per_ring, pts, 5, &poly_size); result = make_oneobj_geometry(poly_size, (char *)poly, POLYGONTYPE, FALSE,chip->SRID, 1.0, 0.0, 0.0); PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(srid_chip); Datum srid_chip(PG_FUNCTION_ARGS) { CHIP *c = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); PG_RETURN_INT32(c->SRID); } PG_FUNCTION_INFO_V1(factor_chip); Datum factor_chip(PG_FUNCTION_ARGS) { CHIP *c = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); PG_RETURN_FLOAT4(c->factor); } PG_FUNCTION_INFO_V1(datatype_chip); Datum datatype_chip(PG_FUNCTION_ARGS) { CHIP *c = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); PG_RETURN_INT32(c->datatype); } PG_FUNCTION_INFO_V1(compression_chip); Datum compression_chip(PG_FUNCTION_ARGS) { CHIP *c = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); PG_RETURN_INT32(c->compression); } PG_FUNCTION_INFO_V1(height_chip); Datum height_chip(PG_FUNCTION_ARGS) { CHIP *c = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); PG_RETURN_INT32(c->height); } PG_FUNCTION_INFO_V1(width_chip); Datum width_chip(PG_FUNCTION_ARGS) { CHIP *c = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); PG_RETURN_INT32(c->width); } PG_FUNCTION_INFO_V1(setsrid_chip); Datum setsrid_chip(PG_FUNCTION_ARGS) { CHIP *c = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 new_srid = PG_GETARG_INT32(1); CHIP *result; result = (CHIP *) palloc(c->size); memcpy(result,c,c->size); result->SRID = new_srid; PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(setfactor_chip); Datum setfactor_chip(PG_FUNCTION_ARGS) { CHIP *c = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); float factor = PG_GETARG_FLOAT4(1); CHIP *result; result = (CHIP *) palloc(c->size); memcpy(result,c,c->size); result->factor = factor; PG_RETURN_POINTER(result); } postgis-0.8.1/postgis_debug.c0100664000077300001440000002031607756727773015665 0ustar postgisusers /********************************************************************** * $Id: postgis_debug.c,v 1.13 2025/11/19 18:01:31 strk Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_debug.c,v $ * Revision 1.13 2025/11/19 18:01:31 strk * CR removed * * Revision 1.12 2025/09/16 20:27:12 dblasby * added ability to delete geometries. * * Revision 1.11 2025/08/08 18:19:20 dblasby * Conformance changes. * Removed junk from postgis_debug.c and added the first run of the long * transaction locking support. (this will change - dont use it) * conformance tests were corrected * some dos cr/lf removed * empty geometries i.e. GEOMETRYCOLLECT(EMPTY) added (with indexing support) * pointN(,1) now returns the first point (used to return 2nd) * * Revision 1.10 2025/07/25 17:08:37 pramsey * Moved Cygwin endian define out of source files into postgis.h common * header file. * * Revision 1.9 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" #include "executor/spi.h" #include "commands/trigger.h" #define SHOW_DIGS_DOUBLE 15 #define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1) // #define DEBUG_GIST //#define DEBUG_GIST2 //find the size of geometry PG_FUNCTION_INFO_V1(mem_size); Datum mem_size(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); PG_RETURN_INT32(geom1->size); } //get summary info on a GEOMETRY PG_FUNCTION_INFO_V1(summary); Datum summary(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 *offsets1; char *o1; int32 type1,j,i; POLYGON3D *poly; LINE3D *line; char *result; int size; char tmp[100]; text *mytext; size = 1; result = palloc(1); result[0] = 0; //null terminate it offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; if (type1 == POINTTYPE) //point { size += 30; result = repalloc(result,size); sprintf(tmp,"Object %i is a POINT()\n",j); strcat(result,tmp); } if (type1 == LINETYPE) //line { line = (LINE3D *) o1; size += 57; result = repalloc(result,size); sprintf(tmp,"Object %i is a LINESTRING() with %i points\n",j,line->npoints); strcat(result,tmp); } if (type1 == POLYGONTYPE) //POLYGON { poly = (POLYGON3D *) o1; size += 57*(poly->nrings +1); result = repalloc(result,size); sprintf(tmp,"Object %i is a POLYGON() with %i rings\n",j,poly->nrings); strcat(result,tmp); for (i=0; inrings;i++) { sprintf(tmp," + ring %i has %i points\n",i,poly->npoints[i]); strcat(result,tmp); } } } // create a text obj to return mytext = (text *) palloc(VARHDRSZ + strlen(result) ); VARATT_SIZEP(mytext) = VARHDRSZ + strlen(result) ; memcpy(VARDATA(mytext) , result, strlen(result) ); pfree(result); PG_RETURN_POINTER(mytext); } extern Datum lockcheck(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(lockcheck); Datum lockcheck (PG_FUNCTION_ARGS) { TriggerData *trigdata = (TriggerData *) fcinfo->context; char *colname ; int id; HeapTuple rettuple; TupleDesc tupdesc; int SPIcode; char *relname; bool isnull; char query[1024]; int pk_type_oid; char *pk_id = NULL; elog(NOTICE,"in lockcheck()"); /* Make sure trigdata is pointing at what I expect */ if (!CALLED_AS_TRIGGER(fcinfo)) elog(ERROR, "lockcheck: not fired by trigger manager"); rettuple = trigdata->tg_newtuple; tupdesc = trigdata->tg_relation->rd_att; /* Connect to SPI manager */ SPIcode = SPI_connect(); if (SPIcode != SPI_OK_CONNECT) { elog(ERROR,"lockcheck: couldnt open a connection to SPI"); PG_RETURN_NULL() ; } relname = SPI_getrelname(trigdata->tg_relation); colname = trigdata->tg_trigger->tgargs[0]; elog(NOTICE,"trigger was executed on the relation: '%s', with attribute named '%s', with locktable named '%s'", relname,colname,"authorization_table"); //get the value pk_type_oid =SPI_gettypeid ( tupdesc , SPI_fnumber(tupdesc,colname)); elog(NOTICE,"primary key type # = %i", pk_type_oid ) ; if (pk_type_oid == 23) //int4 { int id = (int) DatumGetInt32( SPI_getbinval(rettuple, tupdesc, SPI_fnumber(tupdesc,colname), &isnull) ); if (isnull) { elog(ERROR,"lockcheck - column (%s) of table (%s) is null!",colname,relname); } pk_id = palloc(100); sprintf(pk_id,"%i",id); } else if (pk_type_oid == 25) // text { Datum id = ( SPI_getbinval(rettuple, tupdesc, SPI_fnumber(tupdesc,colname), &isnull) ); if (isnull) { elog(ERROR,"lockcheck - column (%s) of table (%s) is null!",colname,relname); } pk_id = DatumGetCString(DirectFunctionCall1(textout,id)); } else if (pk_type_oid == 1043) // varchar { Datum id = ( SPI_getbinval(rettuple, tupdesc, SPI_fnumber(tupdesc,colname), &isnull) ); if (isnull) { elog(ERROR,"lockcheck - column (%s) of table (%s) is null!",colname,relname); } pk_id = DatumGetCString(DirectFunctionCall1(varcharout,id)); } else { elog(ERROR,"id column (%s) of table (%s) has to be either int4, text, or varchar. Its - %s (oid %i)",colname,relname,SPI_gettype ( tupdesc , SPI_fnumber(tupdesc,colname) ) ,pk_type_oid ); } id = (int) DatumGetInt32( SPI_getbinval(rettuple, tupdesc, SPI_fnumber(tupdesc,colname), &isnull) ); sprintf(query,"SELECT authid FROM %s WHERE expires >= now() AND tname = '%s' and fid = '%s'::text", "authorization_table",relname,pk_id); elog(NOTICE,"about to execute :%s", query); SPIcode = SPI_exec(query,0); if (SPIcode !=SPI_OK_SELECT ) elog(ERROR,"couldnt execute to test for lock :%s",query); if (SPI_processed >0) { // there is a lock - check to see if I have rights to it! TupleDesc tupdesc = SPI_tuptable->tupdesc; SPITupleTable *tuptable = SPI_tuptable; HeapTuple tuple = tuptable->vals[0]; char *lockcode = SPI_getvalue(tuple, tupdesc, 1); elog(NOTICE,"there is a lock on this row!"); // check to see if temp_lock_have_table table exists (it might not exist if they own no locks sprintf(query,"SELECT * FROM pg_class WHERE relname = 'temp_lock_have_table'"); SPIcode = SPI_exec(query,0); if (SPIcode !=SPI_OK_SELECT ) elog(ERROR,"couldnt execute to test for lockkey temp table :%s",query); if (SPI_processed ==0) { elog(NOTICE,"I do not own any locks (no lock table) - I cannot modify the row"); //PG_RETURN_NULL(); SPI_finish(); //return NULL; elog(ERROR,"attemted to modify a locked row that I do not have authorization for!"); } sprintf(query,"SELECT * FROM temp_lock_have_table WHERE xideq(transid , getTransactionID() ) AND lockcode ='%s'",lockcode); elog(NOTICE,"about to execute :%s", query); SPIcode = SPI_exec(query,0); if (SPIcode !=SPI_OK_SELECT ) elog(ERROR,"couldnt execute to test for lock aquire:%s",query); if (SPI_processed >0) { elog(NOTICE,"I own the lock - I can modify the row"); SPI_finish(); return PointerGetDatum(rettuple); } elog(NOTICE,"I do not own the lock - I cannot modify the row"); //PG_RETURN_NULL(); SPI_finish(); //return NULL; elog(ERROR,"attemted to modify a locked row that I do not have authorization for!"); } else { elog(NOTICE,"there is NOT a lock on this row!"); SPI_finish(); return PointerGetDatum(rettuple); } } extern Datum getTransactionID(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(getTransactionID); Datum getTransactionID(PG_FUNCTION_ARGS) { TransactionId xid = GetCurrentTransactionId(); PG_RETURN_DATUM( TransactionIdGetDatum(xid) ); } postgis-0.8.1/postgis_estimate.c0100664000077300001440000006046407754133241016375 0ustar postgisusers /********************************************************************** * $Id: postgis_estimate.c,v 1.7 2025/11/11 10:14:57 strk Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_estimate.c,v $ * Revision 1.7 2025/11/11 10:14:57 strk * Added support for PG74 * * Revision 1.6 2025/07/25 17:08:37 pramsey * Moved Cygwin endian define out of source files into postgis.h common * header file. * * Revision 1.5 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ // If you're modifiying this file you should read the postgis mail list as it has // detailed descriptions of whats happening here and why. #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" #define SHOW_DIGS_DOUBLE 15 #define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1) //-------------------------------------------------------------------------- #include "access/heapam.h" #include "catalog/catname.h" #include "catalog/pg_operator.h" #include "catalog/pg_proc.h" #include "catalog/pg_statistic.h" #include "catalog/pg_type.h" #include "mb/pg_wchar.h" #include "nodes/makefuncs.h" #include "optimizer/clauses.h" #include "optimizer/cost.h" #include "optimizer/pathnode.h" #include "optimizer/plancat.h" #include "optimizer/prep.h" #include "parser/parse_func.h" #include "parser/parse_oper.h" #include "parser/parsetree.h" #include "utils/builtins.h" #include "utils/date.h" #include "utils/int8.h" #include "utils/lsyscache.h" #include "utils/selfuncs.h" #include "utils/syscache.h" #include "executor/spi.h" //estimate_histogram2d(histogram2d, box) // returns a % estimate of the # of features that will be returned by that box query // //For each grid cell that intersects the query box // Calculate area of intersection (AOI) // IF AOI < avgFeatureArea THEN set AOI = avgFeatureArea // SUM AOI/area-of-cell*value-of-cell // // change : instead of avgFeatureArea, use avgFeatureArea or 10% of a grid cell (whichever is smaller) PG_FUNCTION_INFO_V1(estimate_histogram2d); Datum estimate_histogram2d(PG_FUNCTION_ARGS) { HISTOGRAM2D *histo = (HISTOGRAM2D *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); BOX *box = (BOX *) PG_GETARG_POINTER(1); double box_area; int x_idx_min, x_idx_max, y_idx_min, y_idx_max; double intersect_x, intersect_y,AOI; int x,y; double xmin,ymin,xmax,ymax; int32 result_sum; double cell_area; int total,t; double avg_feature_size; result_sum = 0; xmin = histo->xmin; ymin = histo->ymin; xmax = histo->xmax; ymax = histo->ymax; cell_area = ( (xmax-xmin)*(ymax-ymin)/(histo->boxesPerSide*histo->boxesPerSide) ); avg_feature_size = histo->avgFeatureArea; if ( avg_feature_size > cell_area*0.1) { avg_feature_size = cell_area*0.1; } //elog(NOTICE,"start estimate_histogram2d: "); //elog(NOTICE,"box is : (%.15g,%.15g to %.15g,%.15g)",box->low.x,box->low.y, box->high.x, box->high.y); box_area = (box->high.x-box->low.x)*(box->high.y-box->low.y); if (box_area<0) box_area =0; // for precision! //check to see which boxes this intersects x_idx_min = (box->low.x-xmin)/(xmax-xmin)*histo->boxesPerSide; if (x_idx_min <0) x_idx_min = 0; if (x_idx_min >= histo->boxesPerSide) x_idx_min = histo->boxesPerSide-1; y_idx_min = (box->low.y-ymin)/(ymax-ymin)*histo->boxesPerSide; if (y_idx_min <0) y_idx_min = 0; if (y_idx_min >= histo->boxesPerSide) y_idx_min = histo->boxesPerSide-1; x_idx_max = (box->high.x-xmin)/(xmax-xmin)*histo->boxesPerSide; if (x_idx_max <0) x_idx_max = 0; if (x_idx_max >= histo->boxesPerSide) x_idx_max = histo->boxesPerSide-1; y_idx_max = (box->high.y-ymin)/(ymax-ymin)*histo->boxesPerSide ; if (y_idx_max <0) y_idx_max = 0; if (y_idx_max >= histo->boxesPerSide) y_idx_max = histo->boxesPerSide-1; //the {x,y}_idx_{min,max} define the grid squares that the box intersects //elog(NOTICE," search is in x: %i to %i y: %i to %i",x_idx_min, x_idx_max, y_idx_min,y_idx_max); for (y= y_idx_min; y<=y_idx_max;y++) { for (x=x_idx_min;x<= x_idx_max;x++) { intersect_x = min(box->high.x, xmin+ (x+1) * (xmax-xmin)/histo->boxesPerSide ) - max(box->low.x, xmin+ x*(xmax-xmin)/histo->boxesPerSide ) ; intersect_y = min(box->high.y, ymin+ (y+1) * (ymax-ymin)/histo->boxesPerSide ) - max(box->low.y, ymin+ y*(ymax-ymin)/histo->boxesPerSide ) ; // for a point, intersect_x=0, intersect_y=0, box_area =0 //elog(NOTICE,"x=%i,y=%i, intersect_x= %.15g, intersect_y = %.15g",x,y,intersect_x,intersect_y); if ( (intersect_x>=0) && (intersect_y>=0) ) { AOI = intersect_x*intersect_y; if (AOI< avg_feature_size) AOI = avg_feature_size; result_sum += AOI/cell_area* histo->value[x+y*histo->boxesPerSide]; } } } total = 0; for(t=0;tboxesPerSide*histo->boxesPerSide;t++) { total+=histo->value[t]; } if ( (histo->avgFeatureArea <=0) && (box_area <=0) ) PG_RETURN_FLOAT8(1.0/((double)(total))); else PG_RETURN_FLOAT8(result_sum/((double)total)); } //explode_histogram2d(histogram2d, tablename::text) // executes CREATE TABLE tablename (the_geom geometry, id int, hits int, percent float) // then populates it // DOES NOT UPDATE GEOMETRY_COLUMNS PG_FUNCTION_INFO_V1(explode_histogram2d); Datum explode_histogram2d(PG_FUNCTION_ARGS) { HISTOGRAM2D *histo = (HISTOGRAM2D *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *tablename; char sql[1000]; char geom[1000]; int t; int total; double cellx,celly; int x,y; int SPIcode; cellx = (histo->xmax-histo->xmin)/histo->boxesPerSide; celly = (histo->ymax-histo->ymin)/histo->boxesPerSide; tablename = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_DATUM(1)))); total = 0; for(t=0;tboxesPerSide*histo->boxesPerSide;t++) { total+=histo->value[t]; } if (total==0) total=1; SPIcode = SPI_connect(); if (SPIcode != SPI_OK_CONNECT) { elog(ERROR,"build_histogram2d: couldnt open a connection to SPI"); PG_RETURN_NULL() ; } sprintf(sql,"CREATE TABLE %s (the_geom geometry, id int, hits int, percent float)",tablename); SPIcode = SPI_exec(sql, 2147483640 ); // max signed int32 if (SPIcode != SPI_OK_UTILITY ) { elog(ERROR,"explode_histogram2d: couldnt create table"); PG_RETURN_NULL() ; } t=0; for(y=0;yboxesPerSide;y++) { for(x=0;xboxesPerSide;x++) { sprintf(geom,"POLYGON((%.15g %.15g, %.15g %.15g, %.15g %.15g, %.15g %.15g, %.15g %.15g ))", histo->xmin + x*cellx, histo->ymin+y*celly, histo->xmin + (x)*cellx, histo->ymin+ (y+1)*celly, histo->xmin + (x+1)*cellx, histo->ymin+ (y+1)*celly, histo->xmin + (x+1)*cellx, histo->ymin+y*celly, histo->xmin + x*cellx, histo->ymin+y*celly ); sprintf(sql,"INSERT INTO %s VALUES('%s'::geometry,%i,%i,%.15g)",tablename,geom,t,histo->value[t],histo->value[t]/((double)total)*100.0); //elog(NOTICE,"SQL:%s",sql); t++; SPIcode = SPI_exec(sql, 2147483640 ); // max signed int32 if (SPIcode != SPI_OK_INSERT ) { elog(ERROR,"explode_histogram2d: couldnt insert into"); PG_RETURN_NULL() ; } } } SPIcode =SPI_finish(); if (SPIcode != SPI_OK_FINISH ) { elog(ERROR,"build_histogram2d: couldnt disconnect from SPI"); PG_RETURN_NULL() ; } PG_RETURN_POINTER(histo) ; } //build_histogram2d (HISTOGRAM2D, tablename, columnname) // executes the SPI 'SELECT box3d(columnname) FROM tablename' // and sticks all the results in the histogram PG_FUNCTION_INFO_V1(build_histogram2d); Datum build_histogram2d(PG_FUNCTION_ARGS) { HISTOGRAM2D *histo = (HISTOGRAM2D *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *tablename, *columnname; HISTOGRAM2D *result; int SPIcode; char sql[1000]; SPITupleTable *tuptable; TupleDesc tupdesc ; int ntuples,t; Datum datum; bool isnull; HeapTuple tuple ; BOX *box; double box_area, area_intersect, cell_area; int x_idx_min, x_idx_max; int y_idx_min, y_idx_max; double xmin,ymin, xmax,ymax; double intersect_x, intersect_y; int x,y; int total; double sum_area; int sum_area_numb; double sum_area_new = 0; int sum_area_numb_new =0; int bump=0; int tuplimit = 500000; // No. of tuples returned on each cursor fetch bool moredata; void *SPIplan; void *SPIportal; xmin = histo->xmin; ymin = histo->ymin; xmax = histo->xmax; ymax = histo->ymax; result = (HISTOGRAM2D *) malloc(histo->size); memcpy(result,histo,histo->size); total = 0; for(t=0;tboxesPerSide*histo->boxesPerSide;t++) { total+=histo->value[t]; } sum_area = histo->avgFeatureArea * total; sum_area_numb = total; tablename = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_DATUM(1)))); columnname = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_DATUM(2)))); //elog(NOTICE,"Start build_histogram2d with %i items already existing", sum_area_numb); //elog(NOTICE,"table=\"%s\", column = \"%s\"", tablename, columnname); SPIcode = SPI_connect(); if (SPIcode != SPI_OK_CONNECT) { elog(ERROR,"build_histogram2d: couldnt open a connection to SPI"); PG_RETURN_NULL() ; } sprintf(sql,"SELECT box(\"%s\") FROM \"%s\"",columnname,tablename); //elog(NOTICE,"executing %s",sql); SPIplan = SPI_prepare(sql, 0, NULL); if (SPIplan == NULL) { elog(ERROR,"build_histogram2d: couldnt create query plan via SPI"); PG_RETURN_NULL() ; } SPIportal = SPI_cursor_open(NULL, SPIplan, NULL, NULL); if (SPIportal == NULL) { elog(ERROR,"build_histogram2d: couldn't create cursor via SPI"); PG_RETURN_NULL() ; } moredata = TRUE; while (moredata==TRUE) { //elog(NOTICE,"about to fetch..."); SPI_cursor_fetch(SPIportal, TRUE, tuplimit); ntuples = SPI_processed; //elog(NOTICE,"processing %d records", ntuples); if (ntuples > 0) { tuptable = SPI_tuptable; tupdesc = SPI_tuptable->tupdesc; cell_area = ( (xmax-xmin)*(ymax-ymin)/(histo->boxesPerSide*histo->boxesPerSide) ); for (t=0;tvals[t]; datum = SPI_getbinval(tuple, tupdesc, 1, &isnull); if (!(isnull)) { box = (BOX *)DatumGetPointer(datum); box_area = (box->high.x-box->low.x)*(box->high.y-box->low.y); sum_area_new += box_area; sum_area_numb_new ++; if (box_area > cell_area ) box_area = cell_area; if (box_area<0) box_area =0; // for precision! //check to see which boxes this intersects x_idx_min = (box->low.x-xmin)/(xmax-xmin)*histo->boxesPerSide; if (x_idx_min <0) x_idx_min = 0; if (x_idx_min >= histo->boxesPerSide) x_idx_min = histo->boxesPerSide-1; y_idx_min = (box->low.y-ymin)/(ymax-ymin)*histo->boxesPerSide; if (y_idx_min <0) y_idx_min = 0; if (y_idx_min >= histo->boxesPerSide) y_idx_min = histo->boxesPerSide-1; x_idx_max = (box->high.x-xmin)/(xmax-xmin)*histo->boxesPerSide; if (x_idx_max <0) x_idx_max = 0; if (x_idx_max >= histo->boxesPerSide) x_idx_max = histo->boxesPerSide-1; y_idx_max = (box->high.y-ymin)/(ymax-ymin)*histo->boxesPerSide ; if (y_idx_max <0) y_idx_max = 0; if (y_idx_max >= histo->boxesPerSide) y_idx_max = histo->boxesPerSide-1; //the {x,y}_idx_{min,max} define the grid squares that the box intersects // if the area of the intersect between the box and the grid square > 5% of //elog(NOTICE,"box is : (%.15g,%.15g to %.15g,%.15g)",box->low.x,box->low.y, box->high.x, box->high.y); //elog(NOTICE," search is in x: %i to %i y: %i to %i",x_idx_min, x_idx_max, y_idx_min,y_idx_max); for (y= y_idx_min; y<=y_idx_max;y++) { for (x=x_idx_min;x<= x_idx_max;x++) { intersect_x = min(box->high.x, xmin+ (x+1) * (xmax-xmin)/histo->boxesPerSide ) - max(box->low.x, xmin+ x*(xmax-xmin)/histo->boxesPerSide ) ; intersect_y = min(box->high.y, ymin+ (y+1) * (ymax-ymin)/histo->boxesPerSide ) - max(box->low.y, ymin+ y*(ymax-ymin)/histo->boxesPerSide ) ; // for a point, intersect_x=0, intersect_y=0, box_area =0 //elog(NOTICE,"x=%i,y=%i, intersect_x= %.15g, intersect_y = %.15g",x,y,intersect_x,intersect_y); if ( (intersect_x>=0) && (intersect_y>=0) ) { area_intersect = intersect_x*intersect_y; if (area_intersect >= box_area*0.05) { //elog(NOTICE,"bump"); bump++; result->value[x+y*histo->boxesPerSide]++; } } } } // End of y } // End isnull } // End of for loop // Free all the results after each fetch, otherwise all tuples stay // in memory until the end of the table... SPI_freetuptable(tuptable); } else { moredata = FALSE; } // End of if ntuples > 0 } // End of while loop // Close the cursor SPI_cursor_close(SPIportal); SPIcode =SPI_finish(); if (SPIcode != SPI_OK_FINISH ) { elog(ERROR,"build_histogram2d: couldnt disconnect from SPI"); PG_RETURN_NULL() ; } //elog(NOTICE,"finishing up build_histogram2d "); //pfree(tablename); //pfree(columnname); total = 0; for(t=0;tboxesPerSide*histo->boxesPerSide;t++) { total+=result->value[t]; } //elog(NOTICE ,"histogram finishes with %i items in it - acutally added %i rows and %i bumps\n",total,sum_area_numb_new,bump); //elog(NOTICE,"done build_histogram2d "); //re-calculate statistics on avg bbox size if (sum_area_numb_new >0) result->avgFeatureArea = (sum_area_new+sum_area)/((double)(sum_area_numb_new+sum_area_numb)); PG_RETURN_POINTER(result) ; } /* * get_restriction_var * Examine the args of a restriction clause to see if it's of the * form (var op something) or (something op var). If so, extract * and return the var and the other argument. * * Inputs: * args: clause argument list * varRelid: see specs for restriction selectivity functions * * Outputs: (these are set only if TRUE is returned) * *var: gets Var node * *other: gets other clause argument * *varonleft: set TRUE if var is on the left, FALSE if on the right * * Returns TRUE if a Var is identified, otherwise FALSE. */ static bool get_restriction_var(List *args, int varRelid, Var **var, Node **other, bool *varonleft) { Node *left, *right; if (length(args) != 2) return false; left = (Node *) lfirst(args); right = (Node *) lsecond(args); /* Ignore any binary-compatible relabeling */ if (IsA(left, RelabelType)) left = (Node *)((RelabelType *) left)->arg; if (IsA(right, RelabelType)) right = (Node *)((RelabelType *) right)->arg; /* Look for the var */ if (IsA(left, Var) && (varRelid == 0 || varRelid == ((Var *) left)->varno)) { *var = (Var *) left; *other = right; *varonleft = true; } else if (IsA(right, Var) && (varRelid == 0 || varRelid == ((Var *) right)->varno)) { *var = (Var *) right; *other = left; *varonleft = false; } else { /* Duh, it's too complicated for me... */ return false; } return true; } //restriction in the GiST && operator PG_FUNCTION_INFO_V1(postgis_gist_sel); Datum postgis_gist_sel(PG_FUNCTION_ARGS) { Query *root = (Query *) PG_GETARG_POINTER(0); // Oid operator = PG_GETARG_OID(1); List *args = (List *) PG_GETARG_POINTER(2); int varRelid = PG_GETARG_INT32(3); GEOMETRY *in; BOX *search_box; char sql[1000]; SPITupleTable *tuptable; TupleDesc tupdesc ; HeapTuple tuple ; Datum datum; bool isnull; Var *var; Node *other; bool varonleft; Oid relid; int SPIcode; double myest; #ifndef USE_STATS PG_RETURN_FLOAT8(0.000005); #endif //PG_RETURN_FLOAT8(0.000005); //elog(NOTICE,"postgis_gist_sel was called"); if (!get_restriction_var(args, varRelid, &var, &other, &varonleft)) { //elog(NOTICE,"get_restriction_var FAILED -returning early"); PG_RETURN_FLOAT8(0.000005); } relid = getrelid(var->varno, root->rtable); if (relid == InvalidOid) { //elog(NOTICE,"getrelid FAILED (invalid oid) -returning early"); PG_RETURN_FLOAT8(0.000005); } //elog(NOTICE,"operator's oid = %i (this should be GEOMETRY && GEOMETRY)",operator); //elog(NOTICE,"relations' oid = %i (this should be the relation that the && is working on) ",relid); //elog(NOTICE,"varatt oid = %i (basically relations column #) ",var->varattno); if (IsA(other, Const) &&((Const *) other)->constisnull) { //elog(NOTICE,"other operand of && is NULL - returning early"); PG_RETURN_FLOAT8(0.000005); } if (IsA(other, Const)) { //elog(NOTICE,"The other side of the && is a constant with type (oid) = %i and length %i. This should be GEOMETRY with length -1 (variable length)",((Const*)other)->consttype,((Const*)other)->constlen); } else { //elog(NOTICE,"the other side of && isnt a constant - returning early"); PG_RETURN_FLOAT8(0.000005); } //get the BOX thats being searched in in = (GEOMETRY*)PG_DETOAST_DATUM( ((Const*)other)->constvalue ); search_box = convert_box3d_to_box(&in->bvol); //elog(NOTICE,"requested search box is : (%.15g %.15g, %.15g %.15g)",search_box->low.x,search_box->low.y,search_box->high.x,search_box->high.y); SPIcode = SPI_connect(); if (SPIcode != SPI_OK_CONNECT) { elog(NOTICE,"postgis_gist_sel: couldnt open a connection to SPI:%i",SPIcode); PG_RETURN_FLOAT8(0.000005) ; } sprintf(sql,"SELECT stats FROM GEOMETRY_COLUMNS WHERE attrelid=%u AND varattnum=%i",relid,var->varattno); //elog(NOTICE,"sql:%s",sql); SPIcode = SPI_exec(sql, 1 ); if (SPIcode != SPI_OK_SELECT ) { SPI_finish(); elog(NOTICE,"postgis_gist_sel: couldnt execute sql via SPI"); PG_RETURN_FLOAT8(0.000005) ; } if (SPI_processed !=1) { SPI_finish(); //elog(NOTICE,"postgis_gist_sel: geometry_columns didnt return a unique value"); PG_RETURN_FLOAT8(0.000005) ; } tuptable = SPI_tuptable; tupdesc = SPI_tuptable->tupdesc; tuple = tuptable->vals[0]; datum = SPI_getbinval(tuple, tupdesc, 1, &isnull); if (isnull) { SPI_finish(); //elog(NOTICE,"postgis_gist_sel: geometry_columns returned a null histogram"); PG_RETURN_FLOAT8(0.000005) ; } //elog(NOTICE,"postgis_gist_sel: checking against estimate_histogram2d"); // now we have the histogram, and our search box - use the estimate_histogram2d(histo,box) to get the result! myest = DatumGetFloat8( DirectFunctionCall2( estimate_histogram2d, datum, PointerGetDatum(search_box) ) ); if ( (myest<0) || (myest!=myest) ) // <0? or NaN? { //elog(NOTICE,"postgis_gist_sel: got something crazy back from estimate_histogram2d"); PG_RETURN_FLOAT8(0.000005) ; } SPIcode =SPI_finish(); if (SPIcode != SPI_OK_FINISH ) { //elog(NOTICE,"postgis_gist_sel: couldnt disconnect from SPI"); PG_RETURN_FLOAT8(0.000005) ; } //elog(NOTICE,"postgis_gist_sel: finished, returning with %lf",myest); PG_RETURN_FLOAT8(myest); } static void genericcostestimate2(Query *root, RelOptInfo *rel, IndexOptInfo *index, List *indexQuals, Cost *indexStartupCost, Cost *indexTotalCost, Selectivity *indexSelectivity, double *indexCorrelation) { double numIndexTuples; double numIndexPages; List *selectivityQuals = indexQuals; #if USE_VERSION >= 74 QualCost index_qual_cost; #endif //elog(NOTICE,"in genericcostestimate"); /* * If the index is partial, AND the index predicate with the * explicitly given indexquals to produce a more accurate idea of the * index restriction. This may produce redundant clauses, which we * hope that cnfify and clauselist_selectivity will deal with * intelligently. * * Note that index->indpred and indexQuals are both in implicit-AND form * to start with, which we have to make explicit to hand to * canonicalize_qual, and then we get back implicit-AND form again. */ if (index->indpred != NIL) { Expr *andedQuals; andedQuals = make_ands_explicit(nconc(listCopy(index->indpred), indexQuals)); selectivityQuals = canonicalize_qual(andedQuals, true); } /* Estimate the fraction of main-table tuples that will be visited */ *indexSelectivity = clauselist_selectivity(root, selectivityQuals, #if USE_VERSION < 74 lfirsti(rel->relids)); #else rel->relid, JOIN_INNER); #endif /* * Estimate the number of tuples that will be visited. We do it in * this rather peculiar-looking way in order to get the right answer * for partial indexes. We can bound the number of tuples by the * index size, in any case. */ numIndexTuples = *indexSelectivity * rel->tuples; //elog(NOTICE,"relation has %li pages",rel->pages); //elog(NOTICE,"indexselectivity is %lf, ntuples = %lf, numindexTuples = %lf, index->tuples = %lf",*indexSelectivity, rel->tuples, numIndexTuples,index->tuples); if (numIndexTuples > index->tuples) numIndexTuples = index->tuples; /* * Always estimate at least one tuple is touched, even when * indexSelectivity estimate is tiny. */ if (numIndexTuples < 1.0) numIndexTuples = 1.0; /* * Estimate the number of index pages that will be retrieved. * * For all currently-supported index types, the first page of the index * is a metadata page, and we should figure on fetching that plus a * pro-rated fraction of the remaining pages. */ //elog(NOTICE,"index->pages = %li ",index->pages); if (index->pages > 1 && index->tuples > 0) { numIndexPages = (numIndexTuples / index->tuples) * (index->pages - 1); numIndexPages += 1; /* count the metapage too */ numIndexPages = ceil(numIndexPages); } else numIndexPages = 1.0; //elog(NOTICE,"numIndexPages = %lf ",numIndexPages); /* * Compute the index access cost. * * Our generic assumption is that the index pages will be read * sequentially, so they have cost 1.0 each, not random_page_cost. * Also, we charge for evaluation of the indexquals at each index * tuple. All the costs are assumed to be paid incrementally during * the scan. */ #if USE_VERSION < 74 *indexStartupCost = 0; *indexTotalCost = numIndexPages + (cpu_index_tuple_cost + cost_qual_eval(indexQuals)) * numIndexTuples; #else cost_qual_eval(&index_qual_cost, indexQuals); *indexStartupCost = index_qual_cost.startup; *indexTotalCost = numIndexPages + (cpu_index_tuple_cost + index_qual_cost.per_tuple) * numIndexTuples; #endif //elog(NOTICE,"cpu_index_tuple_cost = %lf, cost_qual_eval(indexQuals)) = %lf", // cpu_index_tuple_cost,cost_qual_eval(indexQuals)); //elog(NOTICE,"indexTotalCost = %lf ",*indexTotalCost); /* * Generic assumption about index correlation: there isn't any. */ *indexCorrelation = 0.97; //elog(NOTICE,"indexcorrelation = %lf ",*indexCorrelation); } PG_FUNCTION_INFO_V1(postgisgistcostestimate); Datum postgisgistcostestimate(PG_FUNCTION_ARGS) { Query *root = (Query *) PG_GETARG_POINTER(0); RelOptInfo *rel = (RelOptInfo *) PG_GETARG_POINTER(1); IndexOptInfo *index = (IndexOptInfo *) PG_GETARG_POINTER(2); List *indexQuals = (List *) PG_GETARG_POINTER(3); Cost *indexStartupCost = (Cost *) PG_GETARG_POINTER(4); Cost *indexTotalCost = (Cost *) PG_GETARG_POINTER(5); Selectivity *indexSelectivity = (Selectivity *) PG_GETARG_POINTER(6); double *indexCorrelation = (double *) PG_GETARG_POINTER(7); //elog(NOTICE,"postgisgistcostestimate was called"); genericcostestimate2(root, rel, index, indexQuals, indexStartupCost, indexTotalCost, indexSelectivity, indexCorrelation); //elog(NOTICE,"postgisgistcostestimate is going to return void"); PG_RETURN_VOID(); } postgis-0.8.1/postgis_fn.c0100664000077300001440000022217107754140343015161 0ustar postgisusers /********************************************************************** * $Id: postgis_fn.c,v 1.31 2025/11/11 10:58:43 strk Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_fn.c,v $ * Revision 1.31 2025/11/11 10:58:43 strk * Fixed a typo in envelope() * * Revision 1.30 2025/10/29 15:53:10 strk * geoscentroid() removed. both geos and pgis versions are called 'centroid'. * only one version will be compiled based on USE_GEOS flag. * * Revision 1.29 2025/10/28 16:57:35 strk * Added collect_garray() function. * * Revision 1.28 2025/10/28 15:16:17 strk * unite_sfunc() from postgis_geos.c renamed to geom_accum() and moved in postgis_fn.c * * Revision 1.27 2025/10/17 16:12:23 dblasby * Made Envelope() CW instead of CCW. * * Revision 1.26 2025/10/17 16:07:05 dblasby * made isEmpty() return true/false * * Revision 1.25 2025/09/16 20:27:12 dblasby * added ability to delete geometries. * * Revision 1.24 2025/08/08 18:19:20 dblasby * Conformance changes. * Removed junk from postgis_debug.c and added the first run of the long * transaction locking support. (this will change - dont use it) * conformance tests were corrected * some dos cr/lf removed * empty geometries i.e. GEOMETRYCOLLECT(EMPTY) added (with indexing support) * pointN(,1) now returns the first point (used to return 2nd) * * Revision 1.23 2025/07/25 17:08:37 pramsey * Moved Cygwin endian define out of source files into postgis.h common * header file. * * Revision 1.22 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" #include "utils/array.h" #define NfunctionFirstPoint 1 // if you use #define NfunctionFirstPoint 0, you get 0-based indexing (this is what programmers want):: // pointN(, 0) is the 1st point, and pointN(, 1) is the second point. // if you use #define NfunctionFirstPoint 1, you get 1-based indexing (which seems to be what the spec wants):: // pointN(, 1) is the 1st point, and pointN(, 2) is the second point. #define SHOW_DIGS_DOUBLE 15 #define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1) // #define DEBUG_GIST //#define DEBUG_GIST2 /************************************************************************** * GENERAL PURPOSE GEOMETRY FUNCTIONS **************************************************************************/ double line_length2d(LINE3D *line) { int i; POINT3D *frm,*to; double dist = 0.0; if (line->npoints <2) return 0.0; //must have >1 point to make sense frm = &line->points[0]; for (i=1; inpoints;i++) { to = &line->points[i]; dist += sqrt( ( (frm->x - to->x)*(frm->x - to->x) ) + ( (frm->y - to->y)*(frm->y - to->y) ) ); frm = to; } return dist; } double line_length3d(LINE3D *line) { int i; POINT3D *frm,*to; double dist = 0.0; if (line->npoints <2) return 0.0; //must have >1 point to make sense frm = &line->points[0]; for (i=1; inpoints;i++) { to = &line->points[i]; dist += sqrt( ( (frm->x - to->x)*(frm->x - to->x) ) + ((frm->y - to->y)*(frm->y - to->y) ) + ((frm->z - to->z)*(frm->z - to->z) ) ); frm = to; } return dist; } //find the "length of a geometry" // length3d(point) = 0 // length3d(line) = length of line // length3d(polygon) = 0 -- could make sense to return sum(ring perimeter) // uses euclidian 3d length PG_FUNCTION_INFO_V1(length3d); Datum length3d(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 *offsets1; char *o1; int32 type1,j; LINE3D *line; double dist = 0.0; offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; if (type1 == LINETYPE) //LINESTRING { line = (LINE3D *) o1; dist += line_length3d(line); } } PG_RETURN_FLOAT8(dist); } //find the "length of a geometry" // length3d(point) = 0 // length3d(line) = length of line // length3d(polygon) = 0 -- could make sense to return sum(ring perimeter) // uses euclidian 2d length PG_FUNCTION_INFO_V1(length2d); Datum length2d(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 *offsets1; char *o1; int32 type1,j; LINE3D *line; double dist = 0.0; offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; if (type1 == LINETYPE) //LINESTRING { line = (LINE3D *) o1; dist += line_length2d(line); } } PG_RETURN_FLOAT8(dist); } //find the 2d area of the outer ring - sum (area 2d of inner rings) // Could use a more numerically stable calculator... double polygon_area2d_old(POLYGON3D *poly1) { double poly_area=0.0, ringarea=0.0; int i,j,ring,pt_offset; POINT3D *pts1; pts1 = (POINT3D *) ( (char *)&(poly1->npoints[poly1->nrings] ) ); pts1 = (POINT3D *) MAXALIGN(pts1); //elog(NOTICE,"in polygon_area2d_old"); pt_offset = 0; //index to first point in ring for (ring = 0; ring < poly1->nrings; ring++) { ringarea = 0.0; for (i=0;i<(poly1->npoints[ring]-1);i++) { // j = (i+1) % (poly1->npoints[ring]); j = i+1; ringarea += pts1[pt_offset+ i].x * pts1[pt_offset+j].y - pts1[pt_offset+ i].y * pts1[pt_offset+j].x; } ringarea /= 2.0; //elog(NOTICE," ring 1 has area %lf",ringarea); ringarea = fabs(ringarea ); if (ring != 0) //outer ringarea = -1.0*ringarea ; // its a hole poly_area += ringarea; pt_offset += poly1->npoints[ring]; } return poly_area; } //calculate the area of all the subobj in a polygon // area(point) = 0 // area (line) = 0 // area(polygon) = find its 2d area PG_FUNCTION_INFO_V1(area2d); Datum area2d(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 *offsets1; char *o1; int32 type1,j; POLYGON3D *poly; double area = 0.0; offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; if (type1 == POLYGONTYPE) //POLYGON { poly = (POLYGON3D *) o1; area += polygon_area2d_old(poly); } } PG_RETURN_FLOAT8(area); } double polygon_perimeter3d(POLYGON3D *poly1) { double poly_perimeter=0.0, ring_perimeter=0.0; int i,ring,pt_offset; POINT3D *pts1; POINT3D *to,*frm; pts1 = (POINT3D *) ( (char *)&(poly1->npoints[poly1->nrings] ) ); pts1 = (POINT3D *) MAXALIGN(pts1); pt_offset = 0; //index to first point in ring for (ring = 0; ring < poly1->nrings; ring++) { ring_perimeter = 0.0; frm = &pts1[pt_offset]; for (i=1; inpoints[ring];i++) { to = &pts1[pt_offset+ i]; ring_perimeter += sqrt( ( (frm->x - to->x)*(frm->x - to->x) ) + ((frm->y - to->y)*(frm->y - to->y) ) + ((frm->z - to->z)*(frm->z - to->z) ) ); frm = to; } poly_perimeter += ring_perimeter; pt_offset += poly1->npoints[ring]; } return poly_perimeter; } double polygon_perimeter2d(POLYGON3D *poly1) { double poly_perimeter=0.0, ring_perimeter=0.0; int i,ring,pt_offset; POINT3D *pts1; POINT3D *to,*frm; pts1 = (POINT3D *) ( (char *)&(poly1->npoints[poly1->nrings] ) ); pts1 = (POINT3D *) MAXALIGN(pts1); pt_offset = 0; //index to first point in ring for (ring = 0; ring < poly1->nrings; ring++) { ring_perimeter = 0.0; frm = &pts1[pt_offset]; for (i=1; inpoints[ring];i++) { to = &pts1[pt_offset+ i]; ring_perimeter += sqrt( ( (frm->x - to->x)*(frm->x - to->x) ) + ((frm->y - to->y)*(frm->y - to->y) ) ); frm = to; } poly_perimeter += ring_perimeter; pt_offset += poly1->npoints[ring]; } return poly_perimeter; } //calculate the perimeter of polys (sum of length of all rings) PG_FUNCTION_INFO_V1(perimeter3d); Datum perimeter3d(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 *offsets1; char *o1; int32 type1,j; POLYGON3D *poly; double area = 0.0; offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; if (type1 == POLYGONTYPE) //POLYGON { poly = (POLYGON3D *) o1; area += polygon_perimeter3d(poly); } } PG_RETURN_FLOAT8(area); } //calculate the perimeter of polys (sum of length of all rings) PG_FUNCTION_INFO_V1(perimeter2d); Datum perimeter2d(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 *offsets1; char *o1; int32 type1,j; POLYGON3D *poly; double area = 0.0; offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; if (type1 == POLYGONTYPE) //POLYGON { poly = (POLYGON3D *) o1; area += polygon_perimeter2d(poly); } } PG_RETURN_FLOAT8(area); } // cn_PnPoly(): crossing number test for a point in a polygon // input: P = a point, // V[] = vertex points of a polygon V[n+1] with V[n]=V[0] // returns: 0 = outside, 1 = inside // // Our polygons have first and last point the same, // int PIP( POINT3D *P, POINT3D *V, int n ) { int cn = 0; // the crossing number counter int i; double vt; // loop through all edges of the polygon for (i=0; i< (n-1) ; i++) { // edge from V[i] to V[i+1] if (((V[i].y <= P->y) && (V[i+1].y > P->y)) // an upward crossing || ((V[i].y > P->y) && (V[i+1].y <= P->y))) // a downward crossing { vt = (double)(P->y - V[i].y) / (V[i+1].y - V[i].y); if (P->x < V[i].x + vt * (V[i+1].x - V[i].x)) // P.x x >= box->LLB.x) && (point->x <= box->URT.x) && (point->y >= box->LLB.y) && (point->y <= box->URT.y) ); } // see if a linestring is inside a box - check to see if each its line // segments are inside the box // NOTE: all this is happening in 2d - third dimention is ignored // //use a modified CohenSutherland line clipping algoritm // //Step one - compute outcodes for Pi and Pi+1 // // // | | // 1001 | 1000 | 1010 // | | // ----------+-----------+------------ // | (inside) | // 0001 | | 0010 // | 0000 | // ----------+-----------+------------ // | | // 0101 | 0100 | 0110 // | | // // If Pi or Pi+1 have code 0000 then this line seg is inside the box (trivial accept) // if Pi && Pi+1 != 0 then seg is NOT in the box (trivial reject) // // Otherwise the line seg might traverse through the box. // => see if the seg intersects any of the walls of the box. // int compute_outcode( POINT3D *p, BOX3D *box) { int Code=0; //printf("compute outcode:\n"); //print_box(box); //printf("point = [%g,%g]\n",p->x,p->y); if (p->y > box->URT.y ) Code = 8; else { if (p->y LLB.y ) { Code = 4; } } if (p->x > box->URT.x ) { return (Code+2); } if (p->x LLB.x ) { return (Code+1); } return (Code); } bool lineseg_inside_box( POINT3D *P1, POINT3D *P2, BOX3D *box) { int outcode_p1, outcode_p2; double Ax,Ay, Bx,By, Cx,Cy, Dx,Dy; double r,s; outcode_p1 = compute_outcode(P1, box); if (outcode_p1 ==0) return TRUE; outcode_p2 = compute_outcode(P2, box); if (outcode_p2 ==0) return TRUE; if ((outcode_p1 & outcode_p2) != 0) return FALSE; if ((outcode_p1 + outcode_p2) == 12) return TRUE; //vertically slices box if ((outcode_p1 + outcode_p2) == 3) return TRUE; //horizontally slices box //printf("have to do boundry calcs\n"); // know that its a diagonal line //this is the tough case - it may or maynot intersect the box //see if it intersects the horizonal and vertical box lines // from comp.graphics.algo's faq: /* (Ay-Cy)(Dx-Cx)-(Ax-Cx)(Dy-Cy) r = ------------------------------------ (Bx-Ax)(Dy-Cy)-(By-Ay)(Dx-Cx) (Ay-Cy)(Bx-Ax)-(Ax-Cx)(By-Ay) s = ----------------------------------- (Bx-Ax)(Dy-Cy)-(By-Ay)(Dx-Cx) */ // if 0<= r&s <=1 then intersection exists Ax = P1->x; Ay = P1->y; Bx = P2->x; By = P2->y; //top hor part of box Cx = box->LLB.x; Cy= box->URT.y; Dx = box->URT.x; Dy= box->URT.y; r= ((Ay-Cy)*(Dx-Cx)-(Ax-Cx)*(Dy-Cy) )/ ((Bx-Ax)*(Dy-Cy)-(By-Ay)*(Dx-Cx) ) ; s= ((Ay-Cy)*(Bx-Ax)-(Ax-Cx)*(By-Ay))/ ((Bx-Ax)*(Dy-Cy)-(By-Ay)*(Dx-Cx) ) ; if ( (r>=0) && (r<=1) && (s>=0) && (s<=1) ) return TRUE; //bottom hor part of box Cx = box->LLB.x; Cy= box->LLB.y; Dx = box->URT.x; Dy= box->LLB.y; r= ((Ay-Cy)*(Dx-Cx)-(Ax-Cx)*(Dy-Cy) )/ ((Bx-Ax)*(Dy-Cy)-(By-Ay)*(Dx-Cx) ) ; s= ((Ay-Cy)*(Bx-Ax)-(Ax-Cx)*(By-Ay))/ ((Bx-Ax)*(Dy-Cy)-(By-Ay)*(Dx-Cx) ) ; if ( (r>=0) && (r<=1) && (s>=0) && (s<=1) ) return TRUE; //left ver part of box Cx = box->LLB.x; Cy= box->LLB.y; Dx = box->LLB.x; Dy= box->URT.y; r= ((Ay-Cy)*(Dx-Cx)-(Ax-Cx)*(Dy-Cy) )/ ((Bx-Ax)*(Dy-Cy)-(By-Ay)*(Dx-Cx) ) ; s= ((Ay-Cy)*(Bx-Ax)-(Ax-Cx)*(By-Ay))/ ((Bx-Ax)*(Dy-Cy)-(By-Ay)*(Dx-Cx) ) ; if ( (r>=0) && (r<=1) && (s>=0) && (s<=1) ) return TRUE; //right ver part of box Cx = box->URT.x; Cy= box->LLB.y; Dx = box->URT.x; Dy= box->URT.y; r= ((Ay-Cy)*(Dx-Cx)-(Ax-Cx)*(Dy-Cy) )/ ((Bx-Ax)*(Dy-Cy)-(By-Ay)*(Dx-Cx) ) ; s= ((Ay-Cy)*(Bx-Ax)-(Ax-Cx)*(By-Ay))/ ((Bx-Ax)*(Dy-Cy)-(By-Ay)*(Dx-Cx) ) ; if ( (r>=0) && (r<=1) && (s>=0) && (s<=1) ) return TRUE; //otherwise we did not intersect the box return FALSE; } //give the work to an easier process bool linestring_inside_box(POINT3D *pts, int npoints, BOX3D *box) { POINT3D *frm,*to; int i; if (npoints <2) return FALSE; //must have >1 point to make sense frm = &pts[0]; for (i=1; i< npoints;i++) { to = &pts[i]; if (lineseg_inside_box( frm, to, box)) return TRUE; frm = to; } return FALSE; } //this ones the most complex // 1. treat the outer ring as a line and see if its inside // + if it is, then poly is inside box // 2. The polygon could be completely contained inside the box // + line detector (step 1) would have found this // 3. The polygon could be completely surrounding the box // + point-in-polygon of one of the box corners // + COMPLEXITY: box could be totally inside a single hole // +test all holes like step 1. Any that pass arent "bad" holes // + each of the bad holes do a point-in-polygon if true =-> totally in hole bool polygon_truely_inside(POLYGON3D *poly, BOX3D *box) { bool outer_ring_inside,outer_ring_surrounds; POINT3D *pts1; POINT3D test_point; int32 ring; int point_offset; pts1 = (POINT3D *) ( (char *)&(poly->npoints[poly->nrings] ) ); pts1 = (POINT3D *) MAXALIGN(pts1); //step 1 (and 2) outer_ring_inside = linestring_inside_box(pts1, poly->npoints[0], box); if (outer_ring_inside) return TRUE; test_point.x = box->LLB.x; test_point.y = box->LLB.y; //.z unimportant outer_ring_surrounds = PIP(&test_point, pts1,poly->npoints[0] ); if (!(outer_ring_surrounds)) return FALSE; // disjoing //printf("polygon - have to check holes\n"); //step 3 point_offset = poly->npoints[0]; for (ring =1; ring< poly->nrings; ring ++) { if (!( linestring_inside_box(&pts1[point_offset], poly->npoints[ring], box) )) { //doesnt intersect the box // so if one of the corners of the box is inside the hole, it totally // surrounds the box if (PIP(&test_point, &pts1[point_offset],poly->npoints[ring] ) ) return FALSE; } point_offset += poly->npoints[ring]; } return TRUE; } //This is more complicated because all the points in the line can be outside the box, // but one of the edges can cross into the box. // We send the work off to another function because its generically usefull for // polygons too bool line_truely_inside( LINE3D *line, BOX3D *box) { return linestring_inside_box(&line->points[0], line->npoints, box); } //is anything in geom1 really inside the the bvol (2d only) defined in geom2? // send each object to its proper handler PG_FUNCTION_INFO_V1(truly_inside); Datum truly_inside(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); BOX3D *the_bbox; int32 *offsets1; char *o1; int32 type1,j; POLYGON3D *poly; LINE3D *line; POINT3D *point; if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } the_bbox = &geom2->bvol; offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; if (type1 == POINTTYPE) //point { point = (POINT3D *) o1; if ( point_truely_inside(point, the_bbox)) PG_RETURN_BOOL(TRUE); } if (type1 == LINETYPE) //line { line = (LINE3D *) o1; if ( line_truely_inside(line, the_bbox)) PG_RETURN_BOOL(TRUE); } if (type1 == POLYGONTYPE) //POLYGON { poly = (POLYGON3D *) o1; if ( polygon_truely_inside(poly, the_bbox)) PG_RETURN_BOOL(TRUE); } } PG_RETURN_BOOL(FALSE); } //number of points in an object PG_FUNCTION_INFO_V1(npoints); Datum npoints(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 *offsets1; char *o1; int32 type1,j,i; POLYGON3D *poly; LINE3D *line; int32 numb_points = 0; offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; if (type1 == POINTTYPE) //point { numb_points ++; } if (type1 == LINETYPE) //line { line = (LINE3D *) o1; numb_points += line->npoints; } if (type1 == POLYGONTYPE) //POLYGON { poly = (POLYGON3D *) o1; for (i=0; inrings;i++) { numb_points += poly->npoints[i]; } } } PG_RETURN_INT32(numb_points); } //number of rings in an object PG_FUNCTION_INFO_V1(nrings); Datum nrings(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 *offsets1; char *o1; int32 type1,j; POLYGON3D *poly; int32 numb_rings = 0; offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; if (type1 == POLYGONTYPE) //POLYGON { poly = (POLYGON3D *) o1; numb_rings += poly->nrings; } } PG_RETURN_INT32(numb_rings); } void translate_points(POINT3D *pt, int npoints,double x_off, double y_off, double z_off) { int i; //printf("translating %i points by [%g,%g,%g]\n",npoints,x_off,y_off,z_off); if (npoints <1) return; //nothing to do for (i=0;isize); memcpy(geom1, geom, geom->size); //Will handle SRID and grid offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type= geom1->objType[j]; if (type == POINTTYPE) //point { point = (POINT3D *) o1; translate_points(point, 1,x_off,y_off,z_off); } if (type == LINETYPE) //line { line = (LINE3D *) o1; translate_points(&(line->points[0]), line->npoints,x_off,y_off,z_off); } if (type == POLYGONTYPE) //POLYGON { poly = (POLYGON3D *) o1; //find where the points are and where to put them numb_points =0; for (i=0; inrings;i++) { numb_points += poly->npoints[i]; } pts = (POINT3D *) ( (char *)&(poly->npoints[poly->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); translate_points(pts, numb_points,x_off,y_off,z_off); } } //translate the bounding box as well geom1->bvol.LLB.x += x_off; geom1->bvol.LLB.y += y_off; geom1->bvol.LLB.z += z_off; geom1->bvol.URT.x += x_off; geom1->bvol.URT.y += y_off; geom1->bvol.URT.z += z_off; PG_RETURN_POINTER(geom1); } // set the is3d flag so the system think the geometry is 2d or 3d PG_FUNCTION_INFO_V1(force_2d); Datum force_2d(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *result; result = (GEOMETRY *) palloc(geom->size); memcpy(result,geom, geom->size); result->is3d = FALSE; PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(force_3d); Datum force_3d(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *result; result = (GEOMETRY *) palloc(geom->size); memcpy(result,geom, geom->size); result->is3d = TRUE; PG_RETURN_POINTER(result); } //NULL safe bbox union // combine_bbox(BOX3D, geometry) => union BOX3D and geometry->bvol // For finding the extent of a set of rows using the extent() aggregate PG_FUNCTION_INFO_V1(combine_bbox); Datum combine_bbox(PG_FUNCTION_ARGS) { Pointer box3d_ptr = PG_GETARG_POINTER(0); Pointer geom_ptr = PG_GETARG_POINTER(1); BOX3D *a,*b; GEOMETRY *geom; BOX3D *box; if ( (box3d_ptr == NULL) && (geom_ptr == NULL) ) { PG_RETURN_NULL(); // combine_bbox(null,null) => null } if (box3d_ptr == NULL) { geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); box = (BOX3D *) palloc(sizeof(BOX3D)); memcpy(box, &(geom->bvol), sizeof(BOX3D) ); PG_RETURN_POINTER(box); // combine_bbox(null, geometry) => geometry->bvol } if (geom_ptr == NULL) { box = (BOX3D *) palloc(sizeof(BOX3D)); memcpy(box, (char *) PG_GETARG_DATUM(0) , sizeof(BOX3D) ); PG_RETURN_POINTER( box ); // combine_bbox(BOX3D, null) => BOX3D } //combine_bbox(BOX3D, geometry) => union(BOX3D, geometry->bvol) box = (BOX3D *) palloc(sizeof(BOX3D)); a = (BOX3D *) PG_GETARG_DATUM(0) ; b= &(( (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)) )->bvol); box->LLB.x = b->LLB.x; box->LLB.y = b->LLB.y; box->LLB.z = b->LLB.z; box->URT.x = b->URT.x; box->URT.y = b->URT.y; box->URT.z = b->URT.z; if (a->LLB.x < b->LLB.x) box->LLB.x = a->LLB.x; if (a->LLB.y < b->LLB.y) box->LLB.y = a->LLB.y; if (a->LLB.z < b->LLB.z) box->LLB.z = a->LLB.z; if (a->URT.x > b->URT.x) box->URT.x = a->URT.x; if (a->URT.y > b->URT.y) box->URT.y = a->URT.y; if (a->URT.z > b->URT.z) box->URT.z = a->URT.z; PG_RETURN_POINTER( box ); } //return 2 for 2d geometries or 3 for 3d geometries PG_FUNCTION_INFO_V1(dimension); Datum dimension(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int t; int result,dim,type; if ((geom->type == COLLECTIONTYPE) && (geom->nobjs ==0)) PG_RETURN_INT32(-1); if (geom->type == POINTTYPE) PG_RETURN_INT32(0); if (geom->type == LINETYPE) PG_RETURN_INT32(1); if (geom->type == POLYGONTYPE) PG_RETURN_INT32(2); if (geom->type == MULTIPOINTTYPE) PG_RETURN_INT32(0); if (geom->type == MULTILINETYPE) PG_RETURN_INT32(1); if (geom->type == MULTIPOLYGONTYPE) PG_RETURN_INT32(2); result = -1; dim =0; //its a collection -look for the largest one for (t=0;tnobjs;t++) { type= geom->objType[t]; if (type == POINTTYPE) dim=0; if (type == LINETYPE) dim=1; if (type == POLYGONTYPE) dim=2; if (dim>result) result = dim; } PG_RETURN_INT32(result); } //returns a string representation of this geometry's type PG_FUNCTION_INFO_V1(geometrytype); Datum geometrytype(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *text_ob = palloc(20+4); char *result = text_ob+4; int32 size; memset(result,0,20); if (geom->type == POINTTYPE) strcpy(result,"POINT"); if (geom->type == MULTIPOINTTYPE) strcpy(result,"MULTIPOINT"); if (geom->type == LINETYPE) strcpy(result,"LINESTRING"); if (geom->type == MULTILINETYPE) strcpy(result,"MULTILINESTRING"); if (geom->type == POLYGONTYPE) strcpy(result,"POLYGON"); if (geom->type == MULTIPOLYGONTYPE) strcpy(result,"MULTIPOLYGON"); if (geom->type == COLLECTIONTYPE) strcpy(result,"GEOMETRYCOLLECTION"); if (strlen(result) == 0) strcpy(result,"UNKNOWN"); size = strlen(result) +4 ; memcpy(text_ob, &size,4); // size of string PG_RETURN_POINTER(text_ob); } //makes a polygon of a features bvol - 1st point = LL 3rd=UR // 2d only // // create new geometry of type polygon, 1 ring, 5 points PG_FUNCTION_INFO_V1(envelope); Datum envelope(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *result; POLYGON3D *poly; POINT3D pts[5]; //5 points around box int pts_per_ring[1]; int poly_size; //use LLB's z value (we're going to set is3d to false) //0,1,2,3,4 --> CCW order, 4,3,2,1,0 --> CW order set_point( &pts[4], geom->bvol.LLB.x , geom->bvol.LLB.y , geom->bvol.LLB.z ); set_point( &pts[3], geom->bvol.URT.x , geom->bvol.LLB.y , geom->bvol.LLB.z ); set_point( &pts[2], geom->bvol.URT.x , geom->bvol.URT.y , geom->bvol.LLB.z ); set_point( &pts[1], geom->bvol.LLB.x , geom->bvol.URT.y , geom->bvol.LLB.z ); set_point( &pts[0], geom->bvol.LLB.x , geom->bvol.LLB.y , geom->bvol.LLB.z ); pts_per_ring[0] = 5; //ring has 5 points //make a polygon poly = make_polygon(1, pts_per_ring, pts, 5, &poly_size); result = make_oneobj_geometry(poly_size, (char *)poly, POLYGONTYPE, FALSE,geom->SRID, geom->scale, geom->offsetX, geom->offsetY); PG_RETURN_POINTER(result); } //X(GEOMETRY) -- find the first POINT(..) in GEOMETRY, returns its X value. //Return NULL if there is no POINT(..) in GEOMETRY PG_FUNCTION_INFO_V1(x_point); Datum x_point(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *o; int type1,j; int32 *offsets1; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == POINTTYPE) //point { PG_RETURN_FLOAT8( ((POINT3D *)o)->x) ; } } PG_RETURN_NULL(); } //Y(GEOMETRY) -- find the first POINT(..) in GEOMETRY, returns its Y value. //Return NULL if there is no POINT(..) in GEOMETRY PG_FUNCTION_INFO_V1(y_point); Datum y_point(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *o; int type1,j; int32 *offsets1; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == POINTTYPE) //point { PG_RETURN_FLOAT8( ((POINT3D *)o)->y) ; } } PG_RETURN_NULL(); } //Z(GEOMETRY) -- find the first POINT(..) in GEOMETRY, returns its Z value. //Return NULL if there is no POINT(..) in GEOMETRY PG_FUNCTION_INFO_V1(z_point); Datum z_point(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *o; int type1,j; int32 *offsets1; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == POINTTYPE) //point { PG_RETURN_FLOAT8( ((POINT3D *)o)->z) ; } } PG_RETURN_NULL(); } //numpoints(GEOMETRY) -- find the first linestring in GEOMETRY, return //the number of points in it. Return NULL if there is no LINESTRING(..) //in GEOMETRY PG_FUNCTION_INFO_V1(numpoints_linestring); Datum numpoints_linestring(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *o; int type1,j; int32 *offsets1; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == LINETYPE) //linestring { PG_RETURN_INT32( ((LINE3D *)o)->npoints) ; } } PG_RETURN_NULL(); } //pointn(GEOMETRY,INTEGER) -- find the first linestring in GEOMETRY, //return the point at index INTEGER (0 is 1st point). Return NULL if //there is no LINESTRING(..) in GEOMETRY or INTEGER is out of bounds. // keeps is3d flag PG_FUNCTION_INFO_V1(pointn_linestring); Datum pointn_linestring(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 wanted_index =PG_GETARG_INT32(1); char *o; int type1,j; int32 *offsets1; LINE3D *line; wanted_index -= NfunctionFirstPoint; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == LINETYPE) //linestring { line = (LINE3D *)o; if ( (wanted_index<0) || (wanted_index> (line->npoints-1) ) ) PG_RETURN_NULL(); //index out of range //get the point, make a new geometry PG_RETURN_POINTER( make_oneobj_geometry(sizeof(POINT3D), (char *)&line->points[wanted_index], POINTTYPE, geom->is3d, geom->SRID, geom->scale, geom->offsetX, geom->offsetY) ); } } PG_RETURN_NULL(); } // exteriorRing(GEOMETRY) -- find the first polygon in GEOMETRY, return //its exterior ring (as a linestring). Return NULL if there is no //POLYGON(..) in GEOMETRY. PG_FUNCTION_INFO_V1(exteriorring_polygon); Datum exteriorring_polygon(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *o; int type1,j; int32 *offsets1; LINE3D *line; POLYGON3D *poly; POINT3D *pts; int size_line; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == POLYGONTYPE) //polygon object { poly = (POLYGON3D *)o; pts = (POINT3D *) ( (char *)&(poly->npoints[poly->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); line = make_line(poly->npoints[0], pts, &size_line); //get the ring, make a new geometry PG_RETURN_POINTER( make_oneobj_geometry(size_line, (char *) line, LINETYPE, geom->is3d,geom->SRID, geom->scale, geom->offsetX, geom->offsetY) ); } } PG_RETURN_NULL(); } //NumInteriorRings(GEOMETRY) -- find the first polygon in GEOMETRY, //return the number of interior rings. Return NULL if there is no //POLYGON(..) in GEOMETRY. PG_FUNCTION_INFO_V1(numinteriorrings_polygon); Datum numinteriorrings_polygon(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *o; int type1,j; int32 *offsets1; POLYGON3D *poly; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == POLYGONTYPE) //polygon object { poly = (POLYGON3D *)o; PG_RETURN_INT32( poly->nrings -1 ) ; } } PG_RETURN_NULL(); } // InteriorRingN(GEOMETRY,INTEGER) -- find the first polygon in GEOMETRY, //return the interior ring at index INTEGER (as a linestring). Return //NULL if there is no POLYGON(..) in GEOMETRY or INTEGER is out of bounds. // 1st ring = exerior ring PG_FUNCTION_INFO_V1(interiorringn_polygon); Datum interiorringn_polygon(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 wanted_index =PG_GETARG_INT32(1); char *o; int type1,j,t,point_offset; int32 *offsets1; POLYGON3D *poly; LINE3D *line; POINT3D *pts; int size_line; wanted_index -= NfunctionFirstPoint; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == POLYGONTYPE) //polygon object { poly = (POLYGON3D *)o; if ( (wanted_index<0) || (wanted_index> (poly->nrings-2) ) ) PG_RETURN_NULL(); //index out of range pts = (POINT3D *) ( (char *)&(poly->npoints[poly->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); //find the 1st point in wanted ring point_offset=0; for (t=0; t< (wanted_index+1); t++) { point_offset += poly->npoints[t]; } line = make_line(poly->npoints[wanted_index+1], &pts[point_offset], &size_line); //get the ring, make a new geometry PG_RETURN_POINTER( make_oneobj_geometry(size_line, (char *) line, LINETYPE, geom->is3d, geom->SRID, geom->scale, geom->offsetX, geom->offsetY) ); } } PG_RETURN_NULL(); } // numgeometries(GEOMETRY) -- if GEOMETRY is a GEOMETRYCOLLECTION, return //the number of geometries in it, otherwise return NULL. // if GEOMETRY is a MULTI* type, return the number of sub-types in it. PG_FUNCTION_INFO_V1(numgeometries_collection); Datum numgeometries_collection(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); if ( (geom->type == COLLECTIONTYPE) || (geom->type == MULTIPOINTTYPE) || (geom->type == MULTILINETYPE) || (geom->type == MULTIPOLYGONTYPE) ) PG_RETURN_INT32( geom->nobjs ) ; else PG_RETURN_NULL(); } //geometryN(GEOMETRY, INTEGER) -- if GEOMETRY is a GEOMETRYCOLLECTION, //return the sub-geometry at index INTEGER (0=first geometry), otherwise //return NULL. NOTE: MULTIPOINT, MULTILINESTRING,MULTIPOLYGON are //converted to sets of POINT,LINESTRING, and POLYGON so the index may //change. // if GEOMETRY is a MULTI* type, return the Nth sub-geometry PG_FUNCTION_INFO_V1(geometryn_collection); Datum geometryn_collection(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 wanted_index =PG_GETARG_INT32(1); int type; int32 *offsets1; char *o; wanted_index -= NfunctionFirstPoint; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; if (!(( (geom->type == COLLECTIONTYPE) || (geom->type == MULTIPOINTTYPE) || (geom->type == MULTILINETYPE) || (geom->type == MULTIPOLYGONTYPE) ))) PG_RETURN_NULL(); if ( (wanted_index <0) || (wanted_index > (geom->nobjs-1) ) ) PG_RETURN_NULL(); //bad index type = geom->objType[wanted_index]; o = (char *) geom +offsets1[wanted_index] ; if (type == POINTTYPE) { PG_RETURN_POINTER( make_oneobj_geometry(sizeof(POINT3D), o, POINTTYPE, geom->is3d, geom->SRID, geom->scale, geom->offsetX, geom->offsetY) ); } if (type == LINETYPE) { PG_RETURN_POINTER( make_oneobj_geometry( size_subobject (o, LINETYPE), o, LINETYPE, geom->is3d, geom->SRID, geom->scale, geom->offsetX, geom->offsetY) ); } if (type == POLYGONTYPE) { PG_RETURN_POINTER( make_oneobj_geometry( size_subobject (o, POLYGONTYPE), o, POLYGONTYPE, geom->is3d, geom->SRID, geom->scale, geom->offsetX, geom->offsetY) ); } PG_RETURN_NULL(); } //force the geometry to be a geometrycollection type PG_FUNCTION_INFO_V1(force_collection); Datum force_collection(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *result; result = (GEOMETRY *) palloc(geom->size); memcpy(result,geom, geom->size); result->type = COLLECTIONTYPE; PG_RETURN_POINTER(result); } // point_inside_circle(geometry, Px, Py, d) // returns true if there is a point in geometry whose distance to (Px,Py) is < d PG_FUNCTION_INFO_V1(point_inside_circle); Datum point_inside_circle(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *o; int type1,j; int32 *offsets1; POINT3D *pt; double Px = PG_GETARG_FLOAT8(1); double Py = PG_GETARG_FLOAT8(2); double d = PG_GETARG_FLOAT8(3); double dd = d*d; //d squared offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom->nobjs; j++) //for each object in geom { o = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == POINTTYPE) //point { //see if its within d of Px,Py pt = (POINT3D *) o; if ( ( (pt->x - Px)*(pt->x - Px) + (pt->y - Py)*(pt->y - Py) ) < dd) { PG_RETURN_BOOL(TRUE); } } } PG_RETURN_BOOL(FALSE); } //distance from p to line A->B double distance_pt_seg(POINT3D *p, POINT3D *A, POINT3D *B) { double r,s; //if start==end, then use pt distance if ( ( A->x == B->x) && (A->y == B->y) ) return distance_pt_pt(p,A); //otherwise, we use comp.graphics.algorithms Frequently Asked Questions method /*(1) AC dot AB r = --------- ||AB||^2 r has the following meaning: r=0 P = A r=1 P = B r<0 P is on the backward extension of AB r>1 P is on the forward extension of AB 0x-A->x) * (B->x-A->x) + (p->y-A->y) * (B->y-A->y) )/( (B->x-A->x)*(B->x-A->x) +(B->y-A->y)*(B->y-A->y) ); if (r<0) return (distance_pt_pt(p,A)); if (r>1) return(distance_pt_pt(p,B)); /*(2) (Ay-Cy)(Bx-Ax)-(Ax-Cx)(By-Ay) s = ----------------------------- L^2 Then the distance from C to P = |s|*L. */ s = ((A->y-p->y)*(B->x-A->x)- (A->x-p->x)*(B->y-A->y) )/ ((B->x-A->x)*(B->x-A->x) +(B->y-A->y)*(B->y-A->y) ); return abs(s) * sqrt(((B->x-A->x)*(B->x-A->x) +(B->y-A->y)*(B->y-A->y) )); } // find the distance from AB to CD double distance_seg_seg(POINT3D *A, POINT3D *B, POINT3D *C, POINT3D *D) { double s_top, s_bot,s; double r_top, r_bot,r; //printf("seg_seg [%g,%g]->[%g,%g] by [%g,%g]->[%g,%g] \n",A->x,A->y,B->x,B->y, C->x,C->y, D->x, D->y); //A and B are the same point if ( ( A->x == B->x) && (A->y == B->y) ) return distance_pt_seg(A,C,D); //U and V are the same point if ( ( C->x == D->x) && (C->y == D->y) ) return distance_pt_seg(D,A,B); // AB and CD are line segments /* from comp.graphics.algo Solving the above for r and s yields (Ay-Cy)(Dx-Cx)-(Ax-Cx)(Dy-Cy) r = ----------------------------- (eqn 1) (Bx-Ax)(Dy-Cy)-(By-Ay)(Dx-Cx) (Ay-Cy)(Bx-Ax)-(Ax-Cx)(By-Ay) s = ----------------------------- (eqn 2) (Bx-Ax)(Dy-Cy)-(By-Ay)(Dx-Cx) Let P be the position vector of the intersection point, then P=A+r(B-A) or Px=Ax+r(Bx-Ax) Py=Ay+r(By-Ay) By examining the values of r & s, you can also determine some other limiting conditions: If 0<=r<=1 & 0<=s<=1, intersection exists r<0 or r>1 or s<0 or s>1 line segments do not intersect If the denominator in eqn 1 is zero, AB & CD are parallel If the numerator in eqn 1 is also zero, AB & CD are collinear. */ r_top = (A->y-C->y)*(D->x-C->x) - (A->x-C->x)*(D->y-C->y) ; r_bot = (B->x-A->x)*(D->y-C->y) - (B->y-A->y)*(D->x-C->x) ; s_top = (A->y-C->y)*(B->x-A->x) - (A->x-C->x)*(B->y-A->y); s_bot = (B->x-A->x)*(D->y-C->y) - (B->y-A->y)*(D->x-C->x); if ( (r_bot==0) || (s_bot == 0) ) { return ( min(distance_pt_seg(A,C,D), min(distance_pt_seg(B,C,D), min(distance_pt_seg(C,A,B), distance_pt_seg(D,A,B) ) ) ) ); } s = s_top/s_bot; r= r_top/r_bot; if ((r<0) || (r>1) || (s<0) || (s>1) ) { //no intersection return ( min(distance_pt_seg(A,C,D), min(distance_pt_seg(B,C,D), min(distance_pt_seg(C,A,B), distance_pt_seg(D,A,B) ) ) ) ); } else return -0; //intersection exists } //trivial double distance_pt_pt(POINT3D *p1, POINT3D *p2) { //print_point_debug(p1); //print_point_debug(p2); return ( sqrt( (p2->x - p1->x) * (p2->x - p1->x) + (p2->y - p1->y) * (p2->y - p1->y) ) ); } //search all the segments of line to see which one is closest to p1 double distance_pt_line(POINT3D *p1, LINE3D *l2) { double result = 99999999999.9,dist_this; bool result_okay = FALSE; //result is a valid min int t; POINT3D *start,*end; start = &(l2->points[0]); for (t =1;tnpoints;t++) { end = &(l2->points[t]); dist_this = distance_pt_seg(p1, start,end); if (result_okay) result= min(result,dist_this); else { result_okay = TRUE; result = dist_this; } start =end; } return result; } // test each segment of l1 against each segment of l2. Return min double distance_line_line(LINE3D *l1, LINE3D *l2) { double result = 99999999999.9,dist_this; bool result_okay = FALSE; //result is a valid min int t,u; POINT3D *start,*end; POINT3D *start2,*end2; start = &(l1->points[0]); for (t =1;tnpoints;t++) //for each segment in L1 { end = &(l1->points[t]); start2 = &(l2->points[0]); for (u=1; u< l2->npoints; u++) //for each segment in L2 { end2 = &(l2->points[u]); dist_this = distance_seg_seg(start,end,start2,end2); //printf("line_line; seg %i * seg %i, dist = %g\n",t,u,dist_this); if (result_okay) result= min(result,dist_this); else { result_okay = TRUE; result = dist_this; } if (result <=0) return 0; //intersection start2 = end2; } start = end; } return result; } // 1. see if pt in outer boundary. if no, then treat the outer ring like a line // 2. if in the boundary, test to see if its in a hole. if so, then return dist to hole double distance_pt_poly(POINT3D *p1, POLYGON3D *poly2) { POINT3D *pts; //pts array for polygon double result; LINE3D *line; int junk,t; int offset; pts = (POINT3D *) ( (char *)&(poly2->npoints[poly2->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); if (PIP( p1, pts, poly2->npoints[0] ) ) { //inside the outer ring. scan though each of the inner rings looking to // see if its inside. If not, distance =0. Otherwise, distance = // pt to ring distance offset = poly2->npoints[0]; //where ring t starts; for (t=1; tnrings;t++) //foreach inner ring { if ( PIP( p1, &pts[offset], poly2->npoints[t] ) ) { //inside a hole. Distance = pt -> ring line = make_line (poly2->npoints[t] , &pts[offset] , &junk); result = distance_pt_line(p1, line); pfree(line); return result; } offset += poly2->npoints[t]; } return 0; //its inside the polygon } else { //outside the outer ring. Distance = pt -> ring line = make_line (poly2->npoints[0] , pts, &junk); result = distance_pt_line(p1, line); pfree(line); return result; } } // brute force. Test l1 against each ring. If there's an intersection then return 0 (crosses boundary) // otherwise, test to see if a point inside outer rings of polygon, but not in inner rings. // if so, return 0 (line inside polygon) // otherwise return min distance to a ring (could be outside polygon or inside a hole) double distance_line_poly(LINE3D *l1, POLYGON3D *poly2) { double min_dist=9999999.0,this_dist; int t,junk; LINE3D *line; POINT3D *pts; //pts array for polygon int offset; pts = (POINT3D *) ( (char *)&(poly2->npoints[poly2->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); offset =0; for (t=0;tnrings; t++) { line = make_line (poly2->npoints[t] , &pts[offset] , &junk); this_dist = distance_line_line(l1, line); pfree(line); //printf("line_poly; ring %i dist = %g\n",t,this_dist); if (t==0) min_dist = this_dist; else min_dist = min(min_dist,this_dist); if (min_dist <=0) return 0; //intersection offset += poly2->npoints[t]; } //no intersection, have to check if a point is inside the outer ring if (PIP( &l1->points[0], pts, poly2->npoints[0] ) ) { //its in the polygon. Have to check if its inside a hole //printf("line_poly; inside outer ring\n"); offset =poly2->npoints[0] ; for (t=1; tnrings;t++) //foreach inner ring { if ( PIP( &l1->points[0], &pts[offset], poly2->npoints[t] ) ) { //its inside a hole, then the actual distance is the min ring distance //printf("line_poly; inside inner ring %i\n",t); return min_dist; } offset += poly2->npoints[t]; } // not in hole, there for inside the polygon return 0; } else { //not in the outside ring, so min distance to a ring is the actual min distance return min_dist; } } // true if point is in poly (and not in its holes) bool point_in_poly(POINT3D *p, POLYGON3D *poly) { int t; POINT3D *pts1; int offset; pts1 = (POINT3D *) ( (char *)&(poly->npoints[poly->nrings] ) ); pts1 = (POINT3D *) MAXALIGN(pts1); if (PIP(p, pts1, poly->npoints[0])) { offset = poly->npoints[0]; for (t=1;tnrings;t++) { if (PIP(p, &pts1[offset], poly->npoints[t]) ) { return FALSE; //inside a hole } offset += poly->npoints[t]; } return TRUE; //in outer ring, not in holes } else return FALSE; //not in outer ring } // brute force. // test to see if any rings intersect. if yes, dist =0 // test to see if one inside the other and if they are inside holes. // find min distance ring-to-ring double distance_poly_poly(POLYGON3D *poly1, POLYGON3D *poly2) { //foreach ring in Poly1 // foreach ring in Poly2 // if intersect, return 0 // if poly1 inside poly2 return 0 // if poly2 inside poly1 return 0 // otherwise return closest approach of rings int t,junk; POINT3D *pts1,*pts2; int32 offset1; double min_dist= 99999999999.9, this_dist; LINE3D *line; pts1 = (POINT3D *) ( (char *)&(poly1->npoints[poly1->nrings] ) ); pts1 = (POINT3D *) MAXALIGN(pts1); pts2 = (POINT3D *) ( (char *)&(poly2->npoints[poly2->nrings] ) ); pts2 = (POINT3D *) MAXALIGN(pts2); //do this first as its a quick test //test if poly1 inside poly2 if (point_in_poly(pts1, poly2) ) return 0; //test if poly2 inside poly1 if (point_in_poly(pts2, poly1) ) return 0; offset1 =0; for (t=0; tnrings; t++) //for each ring in poly1 { line = make_line (poly1->npoints[t] , &pts1[offset1] , &junk); this_dist = distance_line_poly(line, poly2); pfree(line); //printf("poly_poly; ring %i dist = %g\n",t,this_dist); if (t==0) min_dist = this_dist; else min_dist = min(min_dist,this_dist); if (min_dist <=0) return 0; //intersection offset1 += poly1->npoints[t]; } //rings do not intersect return min_dist; } //minimum distance between objects in geom1 and geom2. returns null if it doesnt exist (future null-safe version). PG_FUNCTION_INFO_V1(distance); Datum distance(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); int g1_i, g2_i; double dist,this_dist = 0; bool dist_set = FALSE; //true once dist makes sense. int32 *offsets1,*offsets2; int type1,type2; char *o1,*o2; if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } dist = 99999999999999999999.9; //very far offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; offsets2 = (int32 *) ( ((char *) &(geom2->objType[0] ))+ sizeof(int32) * geom2->nobjs ) ; for (g1_i=0; g1_i < geom1->nobjs; g1_i++) { o1 = (char *) geom1 +offsets1[g1_i] ; type1= geom1->objType[g1_i]; for (g2_i=0; g2_i < geom2->nobjs; g2_i++) { o2 = (char *) geom2 +offsets2[g2_i] ; type2= geom2->objType[g2_i]; if ( (type1 == POINTTYPE) && (type2 == POINTTYPE) ) { this_dist = distance_pt_pt( (POINT3D *)o1, (POINT3D *)o2 ); } if ( (type1 == POINTTYPE) && (type2 == LINETYPE) ) { this_dist = distance_pt_line( (POINT3D *)o1, (LINE3D *)o2 ); } if ( (type1 == POINTTYPE) && (type2 == POLYGONTYPE) ) { this_dist = distance_pt_poly( (POINT3D *)o1, (POLYGON3D *)o2 ); } if ( (type1 == LINETYPE) && (type2 == LINETYPE) ) { this_dist = distance_line_line( (LINE3D *)o1, (LINE3D *)o2 ); } if ( (type1 == LINETYPE) && (type2 == POLYGONTYPE) ) { this_dist = distance_line_poly( (LINE3D *)o1, (POLYGON3D *)o2 ); } if ( (type1 == POLYGONTYPE) && (type2 == POLYGONTYPE) ) { this_dist = distance_poly_poly( (POLYGON3D *)o1, (POLYGON3D *)o2 ); } //trival versions based on above dist(a,b) = dist(b,a) if ( (type1 == LINETYPE) && (type2 == POINTTYPE) ) { this_dist = distance_pt_line( (POINT3D *)o2, (LINE3D *)o1 ); } if ( (type1 == POLYGONTYPE) && (type2 == POINTTYPE) ) { this_dist = distance_pt_poly( (POINT3D *)o2, (POLYGON3D *)o1 ); } if ( (type1 == POLYGONTYPE) && (type2 == LINETYPE) ) { this_dist = distance_line_poly( (LINE3D *)o2, (POLYGON3D *)o1 ); } if (dist_set) { dist = min(dist,this_dist); } else { dist = this_dist; //first one through dist_set = TRUE; } if (dist <= 0.0) PG_RETURN_FLOAT8( (double) 0.0); // no need to look for things closer } } if (dist <0) dist = 0; //computational error, may get -0.00000000001 PG_RETURN_FLOAT8(dist); } //expand_bbox(bbox3d, d) // returns a new bbox which is exanded d unit in all directions PG_FUNCTION_INFO_V1(expand_bbox); Datum expand_bbox(PG_FUNCTION_ARGS) { BOX3D *bbox = (BOX3D *) PG_GETARG_POINTER(0); double d = PG_GETARG_FLOAT8(1); BOX3D *result = (BOX3D *) palloc(sizeof(BOX3D)); result->LLB.x = bbox->LLB.x - d; result->LLB.y = bbox->LLB.y - d; result->LLB.z = bbox->LLB.z - d; result->URT.x = bbox->URT.x + d; result->URT.y = bbox->URT.y + d; result->URT.z = bbox->URT.z + d; PG_RETURN_POINTER(result); } //startpoint(geometry) :- if geometry is a linestring, return the first //point. Otherwise, return NULL. PG_FUNCTION_INFO_V1(startpoint); Datum startpoint(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); POINT3D *pt; LINE3D *line; int32 *offsets1; if ( (geom1->type != LINETYPE) && (geom1->type != MULTILINETYPE) ) PG_RETURN_NULL(); offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; line = (LINE3D *) ( (char *) geom1 +offsets1[0]); pt = &line->points[0]; PG_RETURN_POINTER( make_oneobj_geometry(sizeof(POINT3D), (char *) pt, POINTTYPE, geom1->is3d, geom1->SRID, geom1->scale, geom1->offsetX, geom1->offsetY) ); } //endpoint(geometry) :- if geometry is a linestring, return the last //point. Otherwise, return NULL. PG_FUNCTION_INFO_V1(endpoint); Datum endpoint(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); POINT3D *pt; LINE3D *line; int32 *offsets1; if ( (geom1->type != LINETYPE) && (geom1->type != MULTILINETYPE) ) PG_RETURN_NULL(); offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; line = (LINE3D *) ( (char *) geom1 +offsets1[0]); pt = &line->points[line->npoints-1]; PG_RETURN_POINTER( make_oneobj_geometry(sizeof(POINT3D), (char *) pt, POINTTYPE, geom1->is3d, geom1->SRID, geom1->scale, geom1->offsetX, geom1->offsetY) ); } //isclosed(geometry) :- if geometry is a linestring then returns //startpoint == endpoint. If its not a linestring then return NULL. If //its a multilinestring, return true only if all the sub-linestrings have //startpoint=endpoint. //calculations always done in 3d (even if you do a force2d) PG_FUNCTION_INFO_V1(isclosed); Datum isclosed(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); POINT3D *pt1,*pt2; LINE3D *line; int32 *offsets1; int t; if (!((geom1->type == LINETYPE) || (geom1->type == MULTILINETYPE) )) PG_RETURN_NULL(); offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; for (t=0; t< geom1->nobjs; t++) { line = (LINE3D *) ( (char *) geom1 +offsets1[t]); pt1 = &line->points[0]; pt2 = &line->points[line->npoints-1]; if ( (pt1->x != pt2->x) || (pt1->y != pt2->y) || (pt1->z != pt2->z) ) PG_RETURN_BOOL(FALSE); } PG_RETURN_BOOL(TRUE); } #ifndef USE_GEOS PG_FUNCTION_INFO_V1(centroid); Datum centroid(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 *offsets1; POINT3D *pts,*cent; POLYGON3D *poly; int t,v; int num_points,num_points_tot; double tot_x,tot_y,tot_z; GEOMETRY *result; offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; if (!((geom1->type == POLYGONTYPE) || (geom1->type == MULTIPOLYGONTYPE) )) PG_RETURN_NULL(); //find the centroid num_points_tot = 0; tot_x = 0; tot_y =0; tot_z=0; for (t=0;tnobjs;t++) { poly = (POLYGON3D *) ( (char *) geom1 +offsets1[t]); pts = (POINT3D *) ( (char *)&(poly->npoints[poly->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); num_points =poly->npoints[0]; // just do the outer ring // for (u=0;unrings;u++) // { // num_points += poly->npoints[u]; // } num_points_tot += num_points-1; //last point = 1st point for (v=0;vis3d, geom1->SRID, geom1->scale, geom1->offsetX, geom1->offsetY) ); pfree(cent); PG_RETURN_POINTER(result); } #endif // ! defined USE_GEOS // max_distance(geom,geom) (both geoms must be linestrings) //find max distance between l1 and l2 // method: for each point in l1, find distance to l2. // return max distance // // note: max_distance(l1,l2) != max_distance(l2,l1) // returns double PG_FUNCTION_INFO_V1(max_distance); Datum max_distance(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); LINE3D *l1,*l2; int32 *offsets1,*offsets2; int t; POINT3D *pt; double result,dist; if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } // only works with lines if ( (geom1->type != LINETYPE) || (geom2->type != LINETYPE) ) PG_RETURN_NULL(); offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; offsets2 = (int32 *) ( ((char *) &(geom2->objType[0] ))+ sizeof(int32) * geom2->nobjs ) ; l1 = (LINE3D *) ( (char *) geom1 +offsets1[0] ); l2 = (LINE3D *) ( (char *) geom2 +offsets2[0] ) ; result = -9999; // all distances should be positive for(t=0;tnpoints;t++) //for each point in l1 { pt = &l1->points[t]; dist = distance_pt_line(pt, l2); if (dist > result) { result = dist; } } if (result <0.0) result = 0; PG_RETURN_FLOAT8(result); } // optimistic_overlap(Polygon P1, Multipolygon MP2, double dist) // returns true if P1 overlaps MP2 // method: bbox check - is separation < dist? no - return false (quick) // yes - return distance(P1,MP2) < dist PG_FUNCTION_INFO_V1(optimistic_overlap); Datum optimistic_overlap(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); double dist = PG_GETARG_FLOAT8(2); BOX3D g1_bvol; double calc_dist; if (geom1->SRID != geom2->SRID) { elog(ERROR,"optimistic_overlap:Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } if (geom1->type != POLYGONTYPE) { elog(ERROR,"optimistic_overlap: first arg isnt a polygon\n"); PG_RETURN_NULL(); } if ( (geom2->type != POLYGONTYPE) && (geom2->type != MULTIPOLYGONTYPE) ) { elog(ERROR,"optimistic_overlap: 2nd arg isnt a [multi-]polygon\n"); PG_RETURN_NULL(); } //bbox check memcpy(&g1_bvol, &geom1->bvol, sizeof(BOX3D) ); g1_bvol.LLB.x = g1_bvol.LLB.x - dist; g1_bvol.LLB.y = g1_bvol.LLB.y - dist; g1_bvol.URT.x = g1_bvol.URT.x + dist; g1_bvol.URT.y = g1_bvol.URT.y + dist; //xmin = LLB.x, xmax = URT.x if ( (g1_bvol.LLB.x > geom2->bvol.URT.x) || (g1_bvol.URT.x < geom2->bvol.LLB.x) || (g1_bvol.LLB.y > geom2->bvol.URT.y) || (g1_bvol.URT.y < geom2->bvol.LLB.y) ) { PG_RETURN_BOOL(FALSE); //bbox not overlap } //compute distances //should be a fast calc if they actually do intersect calc_dist = DatumGetFloat8 (DirectFunctionCall2(distance, PointerGetDatum( geom1 ), PointerGetDatum( geom2 ))); PG_RETURN_BOOL(calc_dist < dist); } //returns a list of points for a single polygon // foreach segment // (1st and last points will be unaltered, but // there will be more points inbetween if segment length is POINT3D *segmentize_ring(POINT3D *points, double dist, int num_points_in, int *num_points_out) { double seg_distance; int max_points, offset_new,offset_old; POINT3D *result,*r; bool keep_going; POINT3D *last_point, *next_point; //initial storage max_points = 1000; offset_new=0; //start at beginning of points list result = (POINT3D *) palloc (sizeof(POINT3D) * max_points); memcpy(result, points, sizeof(POINT3D) ); //1st point offset_new++; last_point = points; offset_old = 1; keep_going = 1; while(keep_going) { next_point = &points[offset_old]; //distance last->next > dist seg_distance = sqrt( (next_point->x-last_point->x)*(next_point->x-last_point->x) + (next_point->y-last_point->y)*(next_point->y-last_point->y) ); if (offset_new >= max_points) { //need to add new points to result r = result; result = (POINT3D *) palloc (sizeof(POINT3D) * max_points *2);//double size memcpy(result,r, sizeof(POINT3D)*max_points); max_points *=2; pfree(r); } if (seg_distance > dist) { //add a point at the distance location // and set last_point to this loc result[offset_new].x = last_point->x + (next_point->x-last_point->x)/seg_distance * dist; result[offset_new].y = last_point->y + (next_point->y-last_point->y)/seg_distance * dist; last_point = &result[offset_new]; offset_new ++; } else { //everything fine, just add the next_point and pop forward result[offset_new].x = next_point->x; result[offset_new].y = next_point->y; offset_new++; offset_old++; last_point = next_point; } keep_going = (offset_old < num_points_in); } *num_points_out = offset_new; return result; } // select segmentize('POLYGON((0 0, 0 10, 5 5, 0 0))',1); //segmentize(GEOMETRY P1, double maxlen) //given a [multi-]polygon, return a new polygon with each segment at most a given length PG_FUNCTION_INFO_V1(segmentize); Datum segmentize(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *result = NULL, *result2; double maxdist = PG_GETARG_FLOAT8(1); int32 *offsets1,*p_npoints_ring; int g1_i,r; POLYGON3D *p,*poly; POINT3D *polypts; int num_polypts; POINT3D *all_polypts; int all_num_polypts,all_num_polypts_max; POINT3D *p_points,*rr; int new_size; bool first_one; int poly_size; BOX3D *bbox; first_one = 1; if ( (geom1->type != POLYGONTYPE) && (geom1->type != MULTIPOLYGONTYPE) ) { elog(ERROR,"segmentize: 1st arg isnt a [multi-]polygon\n"); PG_RETURN_NULL(); } offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; for (g1_i=0; g1_i < geom1->nobjs; g1_i++) { all_num_polypts = 0; all_num_polypts_max = 1000; all_polypts = (POINT3D *) palloc (sizeof(POINT3D) * all_num_polypts_max ); p = (POLYGON3D*)((char *) geom1 +offsets1[g1_i]) ; // the polygon p_npoints_ring = (int32 *) palloc(sizeof(int32) * p->nrings); p_points = (POINT3D *) ( (char *)&(p->npoints[p->nrings] ) ); p_points = (POINT3D *) MAXALIGN(p_points); for (r=0;rnrings;r++) //foreach ring in the polygon { polypts = segmentize_ring(p_points, maxdist, p->npoints[r], &num_polypts); if ( (all_num_polypts + num_polypts) < all_num_polypts_max ) { //just add memcpy( &all_polypts[all_num_polypts], polypts, sizeof(POINT3D) *num_polypts ); all_num_polypts += num_polypts; } else { //need more space new_size = all_num_polypts_max + num_polypts + 1000; rr = (POINT3D*) palloc(sizeof(POINT3D) * new_size); memcpy(rr,all_polypts, sizeof(POINT3D) *all_num_polypts); memcpy(&rr[all_num_polypts], polypts , sizeof(POINT3D) *num_polypts); pfree(all_polypts); all_polypts = rr; all_num_polypts += num_polypts; } //set points in ring value pfree(polypts); p_npoints_ring[r] = num_polypts; } //for each ring poly = make_polygon(p->nrings, p_npoints_ring, all_polypts, all_num_polypts, &poly_size); if (first_one) { first_one = 0; result = make_oneobj_geometry(poly_size, (char *)poly, POLYGONTYPE, FALSE,geom1->SRID, geom1->scale, geom1->offsetX, geom1->offsetY); pfree(poly); pfree(all_polypts); } else { result2 = add_to_geometry(result,poly_size, (char *) poly, POLYGONTYPE); bbox = bbox_of_geometry( result2 ); // make bounding box memcpy( &result2->bvol, bbox, sizeof(BOX3D) ); // copy bounding box pfree(bbox); // free bounding box pfree(result); result = result2; pfree(poly); pfree(all_polypts); } } // foreach polygon PG_RETURN_POINTER(result); } /* * This is a geometry array constructor * for use as aggregates sfunc. * Will have * as input an array of Geometry pointers and a Geometry. * Will DETOAST given geometry and put a pointer to it * in the given array. DETOASTED value is first copied * to a safe memory context to avoid premature deletion. */ PG_FUNCTION_INFO_V1(geom_accum); Datum geom_accum(PG_FUNCTION_ARGS) { ArrayType *array; int nelems, nbytes; Datum datum; GEOMETRY *geom; ArrayType *result; Pointer **pointers; MemoryContext oldcontext; datum = PG_GETARG_DATUM(0); if ( (Pointer *)datum == NULL ) { array = NULL; nelems = 0; //elog(NOTICE, "geom_accum: NULL array, nelems=%d", nelems); } else { array = (ArrayType *) PG_DETOAST_DATUM_COPY(datum); nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array)); } datum = PG_GETARG_DATUM(1); // Do nothing, return state array if ( (Pointer *)datum == NULL ) { //elog(NOTICE, "geom_accum: NULL geom, nelems=%d", nelems); PG_RETURN_ARRAYTYPE_P(array); } /* * Switch to * flinfo->fcinfo->fn_mcxt * memory context to be sure both detoasted * geometry AND array of pointers to it * last till the call to unite_finalfunc. */ oldcontext = MemoryContextSwitchTo(fcinfo->flinfo->fn_mcxt); /* Make a DETOASTED copy of input geometry */ geom = (GEOMETRY *)PG_DETOAST_DATUM_COPY(datum); //elog(NOTICE, "geom_accum: adding %p (nelems=%d)", geom, nelems); /* * Might use a more optimized version instead of repalloc'ing * at every iteration. This is not the bottleneck anyway. * --strk(TODO); */ ++nelems; nbytes = ARR_OVERHEAD(1) + sizeof(Pointer *) * nelems; if ( ! array ) { result = (ArrayType *) palloc(nbytes); result->size = nbytes; result->ndim = 1; *((int *) ARR_DIMS(result)) = nelems; } else { result = (ArrayType *) repalloc(array, nbytes); result->size = nbytes; result->ndim = 1; *((int *) ARR_DIMS(result)) = nelems; } pointers = (Pointer **)ARR_DATA_PTR(result); pointers[nelems-1] = (Pointer *)geom; /* Go back to previous memory context */ MemoryContextSwitchTo(oldcontext); PG_RETURN_ARRAYTYPE_P(result); } /* * collect_garray ( GEOMETRY[] ) returns a geometry which contains * all the sub_objects from all of the geometries in given array. * * returned geometry is the simplest possible, based on the types * of the collected objects * ie. if all are of either X or multiX, then a multiX is returned * bboxonly types are treated as null geometries (no sub_objects) */ PG_FUNCTION_INFO_V1( collect_garray ); Datum collect_garray ( PG_FUNCTION_ARGS ) { Datum datum; ArrayType *array; int nelems, srid=-1, is3d=0; GEOMETRY **geoms; GEOMETRY *result=NULL, *geom, *tmp; int i, o; BOX3D *bbox; /* Get input datum */ datum = PG_GETARG_DATUM(0); /* Return null on null input */ if ( (Pointer *)datum == NULL ) PG_RETURN_NULL(); /* Get actual ArrayType */ array = (ArrayType *) PG_DETOAST_DATUM(datum); /* Get number of geometries in array */ nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array)); /* Return null on 0-elements input array */ if ( nelems == 0 ) PG_RETURN_NULL(); /* Get pointer to GEOMETRY pointers array */ geoms = (GEOMETRY **)ARR_DATA_PTR(array); /* Return the only present element of a 1-element array */ if ( nelems == 1 ) PG_RETURN_POINTER(geoms[0]); /* Iterate over all geometries in array */ for (i=0; iSRID; /* Get first geometry's is3d flag as base is3d */ is3d = geom->is3d; result = (GEOMETRY *)palloc(geom->size); if ( ! result ) { elog(ERROR, "collect_garray: out of virtual memory"); PG_RETURN_NULL(); } memcpy(result, geom, geom->size); /* * I belive memory associated with geometries * in array can be safely removed. Comment * this out if you get memory faults! * TODO: inspect this (as long as passed * array is the result of geom_accum this * is true because geom_accum will DETOAST_COPY * while for direct user call I do not know) */ pfree(geom); continue; } /* Skip geometry if it contains no sub-objects */ if ( ! geom->nobjs ) { if ( geom->is3d ) is3d = 1; // should I care ? pfree(geom); // se note above continue; } /* * If we are here this means we are in front of a * good (non empty) geometry beside the first */ /* Fist let's check for SRID compatibility */ if ( geom->SRID != srid ) { elog(ERROR, "Operation on GEOMETRIES with different SRIDs"); PG_RETURN_NULL(); } /* * Set result is3d flag to true if at least one * of geometries in set has is set to true */ if ( geom->is3d ) is3d = 1; /* Get to sub-objects offset */ offsets = (int32 *)(((char *)&(geom->objType[0])) + sizeof(int32) * geom->nobjs ) ; /* Iterate over geometry sub-objects */ for (o=0; onobjs; o++) { int size, type; char *obj; /* Get object pointer */ obj = (char *) geom+offsets[o]; /* Get object type */ type = geom->objType[o]; /* Get object size (fast way) */ if( o == geom->nobjs-1 ) { size = geom->size - offsets[o]; } else { size = offsets[o+1] - offsets[o]; } /* * Add sub-object to base geometry, * replace base geometry with new one. */ tmp = add_to_geometry(result, size, obj, type); pfree( result ); result = tmp; } pfree(geom); // se note above } /* Check we got something in our result */ if ( result == NULL ) PG_RETURN_NULL(); /* * We should now have a big fat geometry composed of all * sub-objects from all geometries in array */ /* Set is3d flag */ result->is3d = is3d; /* Construct bounding volume */ bbox = bbox_of_geometry( result ); // make memcpy( &result->bvol, bbox, sizeof(BOX3D) ); // copy pfree( bbox ); // release PG_RETURN_POINTER( result ); } // collector( geom, geom ) returns a geometry which contains // all the sub_objects from both of the argument geometries // returned geometry is the simplest possible, based on the types // of the colelct objects // ie. if all are of either X or multiX, then a multiX is returned // bboxonly types are treated as null geometries (no sub_objects) PG_FUNCTION_INFO_V1( collector ); Datum collector( PG_FUNCTION_ARGS ) { Pointer geom1_ptr = PG_GETARG_POINTER(0); Pointer geom2_ptr = PG_GETARG_POINTER(1); GEOMETRY *geom1, *geom2, *temp, *result; BOX3D *bbox; int32 i, size, *offsets2; // return null if both geoms are null if ( (geom1_ptr == NULL) && (geom2_ptr == NULL) ) { PG_RETURN_NULL(); } // return a copy of the second geom if only first geom is null if (geom1_ptr == NULL) { geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); result = (GEOMETRY *)palloc( geom2->size ); memcpy( result, geom2, geom2->size ); PG_RETURN_POINTER(result); } // return a copy of the first geom if only second geom is null if (geom2_ptr == NULL) { geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); result = (GEOMETRY *)palloc( geom1->size ); memcpy( result, geom1, geom1->size ); PG_RETURN_POINTER(result); } geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); if ( geom1->SRID != geom2->SRID ) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } if (geom1->nobjs ==0) { geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); result = (GEOMETRY *)palloc( geom2->size ); memcpy( result, geom2, geom2->size ); PG_RETURN_POINTER(result); } if (geom2->nobjs ==0) { geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); result = (GEOMETRY *)palloc( geom1->size ); memcpy( result, geom1, geom1->size ); PG_RETURN_POINTER(result); } result = (GEOMETRY *)palloc( geom1->size ); memcpy( result, geom1, geom1->size ); offsets2 = (int32 *)( ((char *)&(geom2->objType[0])) + sizeof( int32 ) * geom2->nobjs ) ; for (i=0; inobjs; i++) { if( i == geom2->nobjs-1 ) { size = geom2->size - offsets2[i]; } else { size = offsets2[i+1] - offsets2[i]; } temp = add_to_geometry( result, size, ((char *) geom2 + offsets2[i]), geom2->objType[i] ); pfree( result ); result = temp; } result->is3d = geom1->is3d || geom2->is3d; bbox = bbox_of_geometry( result ); // make bounding box memcpy( &result->bvol, bbox, sizeof(BOX3D) ); // copy bounding box pfree( bbox ); // free bounding box PG_RETURN_POINTER( result ); } PG_FUNCTION_INFO_V1(box3d_xmin); Datum box3d_xmin(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); PG_RETURN_FLOAT8(box1->LLB.x); } PG_FUNCTION_INFO_V1(box3d_ymin); Datum box3d_ymin(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); PG_RETURN_FLOAT8(box1->LLB.y); } PG_FUNCTION_INFO_V1(box3d_zmin); Datum box3d_zmin(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); PG_RETURN_FLOAT8(box1->LLB.z); } PG_FUNCTION_INFO_V1(box3d_xmax); Datum box3d_xmax(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); PG_RETURN_FLOAT8(box1->URT.x); } PG_FUNCTION_INFO_V1(box3d_ymax); Datum box3d_ymax(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); PG_RETURN_FLOAT8(box1->URT.y); } PG_FUNCTION_INFO_V1(box3d_zmax); Datum box3d_zmax(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); PG_RETURN_FLOAT8(box1->URT.z); } PG_FUNCTION_INFO_V1(box3dtobox); Datum box3dtobox(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); BOX *out; out = convert_box3d_to_box(box1); PG_RETURN_POINTER(out); } PG_FUNCTION_INFO_V1(isempty); Datum isempty(PG_FUNCTION_ARGS) { GEOMETRY *geom1= (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); if (geom1->nobjs ==0) PG_RETURN_BOOL(TRUE); PG_RETURN_BOOL(FALSE); } // converts multi* types with 1 element to the single-element version. // ie. MULTIPOINT(0 0) --> POINT(0 0) void compressType(GEOMETRY *g) { if (g->nobjs ==1) { if (g->type == MULTIPOINTTYPE) { g->type = POINTTYPE; return; } if (g->type == MULTILINETYPE) { g->type = LINETYPE; return; } if (g->type == MULTIPOLYGONTYPE) { g->type = POLYGONTYPE; return; } } } postgis-0.8.1/postgis_geos.c0100664000077300001440000013703507766327221015524 0ustar postgisusers/********************************************************************** * $Id: postgis_geos.c,v 1.26 2025/12/12 12:03:29 strk Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_geos.c,v $ * Revision 1.26 2025/12/12 12:03:29 strk * More debugging output, some code cleanup. * * Revision 1.25 2025/12/12 10:28:50 strk * added GEOSnoop OUTPUT debugging info * * Revision 1.24 2025/12/12 10:08:24 strk * Added GEOSnoop function and some optional debugging output for * geos<->postgis converter (define DEBUG_CONVERTER at top postgis_geos.c) * * Revision 1.23 2025/11/05 18:25:08 strk * moved #ifdef USE_GEOS below prototypes, added NULL implementation of unite_garray * * Revision 1.22 2025/11/05 18:02:41 strk * renamed unite_finalfunc to unite_garray * * Revision 1.21 2025/11/04 19:06:08 strk * added missing first geom pfree in unite_finalfunc * * Revision 1.20 2025/10/29 15:53:10 strk * geoscentroid() removed. both geos and pgis versions are called 'centroid'. * only one version will be compiled based on USE_GEOS flag. * * Revision 1.19 2025/10/29 13:59:40 strk * Added geoscentroid function. * * Revision 1.18 2025/10/28 15:16:17 strk * unite_sfunc() from postgis_geos.c renamed to geom_accum() and moved in postgis_fn.c * * Revision 1.17 2025/10/28 10:59:55 strk * handled NULL state array in unite_finalfunc, cleaned up some spurios code * * Revision 1.16 2025/10/27 23:44:54 strk * unite_sfunc made always copy input array in long lived memory context. * It should now work with safer memory. * * Revision 1.15 2025/10/27 20:13:05 strk * Made GeomUnion release memory soon, Added fastunion support functions * * Revision 1.14 2025/10/24 21:52:35 strk * Modified strcmp-based if-else with switch-case in GEOS2POSTGIS() * using new GEOSGeometryTypeId() interface. * * Revision 1.13 2025/10/24 08:28:49 strk * Fixed memory leak in GEOSGetCoordinates(), made sure that GEOS2POSTGIS * free type string even in case of collapsed geoms. Made sure that geomunion * release memory in case of exception thrown by GEOSUnion. Sooner release * of palloced memory in PolyFromGeometry (pts_per_ring). * * Revision 1.12 2025/10/16 20:16:18 dblasby * Added NOTICE_HANDLER function. For some reason this didnt get properly * committed last time. * * Revision 1.11 2025/10/14 23:19:19 dblasby * GEOS2POSTGIS - added protection to pfree(NULL) for multi* geoms * * Revision 1.10 2025/10/03 16:45:37 dblasby * added pointonsurface() as a sub. Some memory management fixes/tests. * removed a few NOTICEs. * * Revision 1.9 2025/09/16 20:27:12 dblasby * added ability to delete geometries. * * Revision 1.8 2025/08/08 18:19:20 dblasby * Conformance changes. * Removed junk from postgis_debug.c and added the first run of the long * transaction locking support. (this will change - dont use it) * conformance tests were corrected * some dos cr/lf removed * empty geometries i.e. GEOMETRYCOLLECT(EMPTY) added (with indexing support) * pointN(,1) now returns the first point (used to return 2nd) * * Revision 1.7 2025/08/06 19:31:18 dblasby * Added the WKB parser. Added all the functions like * PolyFromWKB(,[]). * * Added all the functions like PolyFromText(,[]) * * Minor problem in GEOS library fixed. * * Revision 1.6 2025/08/05 18:27:21 dblasby * Added null implementations of new GEOS-returning-geometry functions (ie. * buffer). * * Revision 1.5 2025/08/01 23:58:08 dblasby * added the functionality to convert GEOS->PostGIS geometries. Added those geos * functions to postgis. * * Revision 1.4 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ //-------------------------------------------------------------------------- // //#define DEBUG #include "postgres.h" #include #include #include #include #include #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" #include "utils/array.h" #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "utils/builtins.h" /* * Define this to have have many notices printed * during postgis->geos and geos->postgis conversions */ #undef DEBUG_CONVERTER #undef DEBUG_POSTGIS2GEOS #undef DEBUG_GEOS2POSTGIS typedef struct Geometry Geometry; extern const char * createGEOSPoint(POINT3D *pt); extern void initGEOS(int maxalign); extern char *GEOSrelate(Geometry *g1, Geometry*g2); extern char GEOSrelatePattern(Geometry *g1, Geometry*g2,char *pat); extern char GEOSrelateDisjoint(Geometry *g1, Geometry*g2); extern char GEOSrelateTouches(Geometry *g1, Geometry*g2); extern char GEOSrelateIntersects(Geometry *g1, Geometry*g2); extern char GEOSrelateCrosses(Geometry *g1, Geometry*g2); extern char GEOSrelateWithin(Geometry *g1, Geometry*g2); extern char GEOSrelateContains(Geometry *g1, Geometry*g2); extern char GEOSrelateOverlaps(Geometry *g1, Geometry*g2); extern char *GEOSasText(Geometry *g1); extern char GEOSisEmpty(Geometry *g1); extern char *GEOSGeometryType(Geometry *g1); extern int GEOSGeometryTypeId(Geometry *g1); extern void GEOSdeleteChar(char *a); extern void GEOSdeleteGeometry(Geometry *a); extern Geometry *PostGIS2GEOS_point(POINT3D *point,int SRID, bool is3d); extern Geometry *PostGIS2GEOS_linestring(LINE3D *line,int SRID, bool is3d); extern Geometry *PostGIS2GEOS_polygon(POLYGON3D *polygon,int SRID, bool is3d); extern Geometry *PostGIS2GEOS_multipolygon(POLYGON3D **polygons,int npolys, int SRID, bool is3d); extern Geometry *PostGIS2GEOS_multilinestring(LINE3D **lines,int nlines, int SRID, bool is3d); extern Geometry *PostGIS2GEOS_multipoint(POINT3D **points,int npoints, int SRID, bool is3d); extern Geometry *PostGIS2GEOS_box3d(BOX3D *box, int SRID); extern Geometry *PostGIS2GEOS_collection(Geometry **geoms, int ngeoms,int SRID, bool is3d); extern char GEOSisvalid(Geometry *g1); extern char *throw_exception(Geometry *g); extern Geometry *GEOSIntersection(Geometry *g1, Geometry *g2); extern POINT3D *GEOSGetCoordinate(Geometry *g1); extern POINT3D *GEOSGetCoordinates(Geometry *g1); extern int GEOSGetNumCoordinate(Geometry *g1); extern Geometry *GEOSGetGeometryN(Geometry *g1, int n); extern Geometry *GEOSGetExteriorRing(Geometry *g1); extern Geometry *GEOSGetInteriorRingN(Geometry *g1,int n); extern int GEOSGetNumInteriorRings(Geometry *g1); extern int GEOSGetSRID(Geometry *g1); extern int GEOSGetNumGeometries(Geometry *g1); extern Geometry *GEOSBuffer(Geometry *g1,double width); extern Geometry *GEOSConvexHull(Geometry *g1); extern Geometry *GEOSDifference(Geometry *g1,Geometry *g2); extern Geometry *GEOSBoundary(Geometry *g1); extern Geometry *GEOSSymDifference(Geometry *g1,Geometry *g2); extern Geometry *GEOSUnion(Geometry *g1,Geometry *g2); extern char GEOSequals(Geometry *g1, Geometry*g2); extern char GEOSisSimple(Geometry *g1); extern char GEOSisRing(Geometry *g1); extern Geometry *GEOSpointonSurface(Geometry *g1); extern Geometry *GEOSGetCentroid(Geometry *g); Datum relate_full(PG_FUNCTION_ARGS); Datum relate_pattern(PG_FUNCTION_ARGS); Datum disjoint(PG_FUNCTION_ARGS); Datum touches(PG_FUNCTION_ARGS); Datum intersects(PG_FUNCTION_ARGS); Datum crosses(PG_FUNCTION_ARGS); Datum within(PG_FUNCTION_ARGS); Datum contains(PG_FUNCTION_ARGS); Datum overlaps(PG_FUNCTION_ARGS); Datum isvalid(PG_FUNCTION_ARGS); Datum buffer(PG_FUNCTION_ARGS); Datum intersection(PG_FUNCTION_ARGS); Datum convexhull(PG_FUNCTION_ARGS); Datum difference(PG_FUNCTION_ARGS); Datum boundary(PG_FUNCTION_ARGS); Datum symdifference(PG_FUNCTION_ARGS); Datum geomunion(PG_FUNCTION_ARGS); Datum unite_garray(PG_FUNCTION_ARGS); Datum issimple(PG_FUNCTION_ARGS); Datum isring(PG_FUNCTION_ARGS); Datum geomequals(PG_FUNCTION_ARGS); Datum pointonsurface(PG_FUNCTION_ARGS); Datum GEOSnoop(PG_FUNCTION_ARGS); Geometry *POSTGIS2GEOS(GEOMETRY *g); void errorIfGeometryCollection(GEOMETRY *g1, GEOMETRY *g2); GEOMETRY *GEOS2POSTGIS(Geometry *g, char want3d ); POLYGON3D *PolyFromGeometry(Geometry *g, int *size); LINE3D *LineFromGeometry(Geometry *g, int *size); void NOTICE_MESSAGE(char *msg); #ifdef USE_GEOS //----------------------------------------------- // return a GEOS Geometry from a POSTGIS GEOMETRY //---------------------------------------------- void NOTICE_MESSAGE(char *msg) { elog(NOTICE,msg); } /* * Resize an ArrayType of 1 dimension to contain num (Pointer *) elements * array will be repalloc'ed */ static ArrayType * resize_ptrArrayType(ArrayType *a, int num) { int nelems = ArrayGetNItems(ARR_NDIM(a), ARR_DIMS(a)); int nbytes = ARR_OVERHEAD(1) + sizeof(Pointer *) * num; if (num == nelems) return a; a = (ArrayType *) repalloc(a, nbytes); a->size = nbytes; a->ndim = 1; *((int *) ARR_DIMS(a)) = num; return a; } /* * This is the final function for union/fastunite/geomunion * aggregate (still discussing the name). Will have * as input an array of Geometry pointers. * Will iteratively call GEOSUnion on the GEOS-converted * versions of them and return PGIS-converted version back. * Changing combination order *might* speed up performance. * * Geometries in the array are pfree'd as soon as possible. * */ PG_FUNCTION_INFO_V1(unite_garray); Datum unite_garray(PG_FUNCTION_ARGS) { Datum datum; ArrayType *array; int is3d = 0; int nelems, i; GEOMETRY **geoms, *result, *pgis_geom; Geometry *g1, *g2, *geos_result; #ifdef DEBUG static int call=1; #endif #ifdef DEBUG call++; #endif datum = PG_GETARG_DATUM(0); /* Null array, null geometry (should be empty?) */ if ( (Pointer *)datum == NULL ) PG_RETURN_NULL(); array = (ArrayType *) PG_DETOAST_DATUM(datum); nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array)); #ifdef DEBUG elog(NOTICE, "unite_garray: number of elements: %d", nelems); #endif if ( nelems == 0 ) PG_RETURN_NULL(); geoms = (GEOMETRY **)ARR_DATA_PTR(array); /* One-element union is the element itself */ if ( nelems == 1 ) PG_RETURN_POINTER(geoms[0]); /* Ok, we really need geos now ;) */ initGEOS(MAXIMUM_ALIGNOF); if ( geoms[0]->is3d ) is3d = 1; geos_result = POSTGIS2GEOS(geoms[0]); pfree(geoms[0]); for (i=1; iis3d || geom2->is3d); GEOSdeleteGeometry(g3); if (result == NULL) { elog(ERROR,"GEOS union() threw an error (result postgis geometry formation)!"); PG_RETURN_NULL(); //never get here } compressType(result); // convert multi* to single item if appropriate PG_RETURN_POINTER(result); } // select symdifference('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','POLYGON((5 5, 15 5, 15 7, 5 7, 5 5))'); PG_FUNCTION_INFO_V1(symdifference); Datum symdifference(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2,*g3; GEOMETRY *result; initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); g3 = GEOSSymDifference(g1,g2); if (g3 == NULL) { elog(ERROR,"GEOS symdifference() threw an error!"); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); PG_RETURN_NULL(); //never get here } // elog(NOTICE,"result: %s", GEOSasText(g3) ) ; result = GEOS2POSTGIS(g3, geom1->is3d || geom2->is3d); if (result == NULL) { GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); GEOSdeleteGeometry(g3); elog(ERROR,"GEOS symdifference() threw an error (result postgis geometry formation)!"); PG_RETURN_NULL(); //never get here } GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); GEOSdeleteGeometry(g3); compressType(result); // convert multi* to single item if appropriate PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(boundary); Datum boundary(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); Geometry *g1,*g3; GEOMETRY *result; initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g3 = GEOSBoundary(g1); if (g3 == NULL) { elog(ERROR,"GEOS bounary() threw an error!"); GEOSdeleteGeometry(g1); PG_RETURN_NULL(); //never get here } // elog(NOTICE,"result: %s", GEOSasText(g3) ) ; result = GEOS2POSTGIS(g3, geom1->is3d); if (result == NULL) { GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g3); elog(ERROR,"GEOS bounary() threw an error (result postgis geometry formation)!"); PG_RETURN_NULL(); //never get here } GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g3); compressType(result); // convert multi* to single item if appropriate PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(convexhull); Datum convexhull(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); Geometry *g1,*g3; GEOMETRY *result; initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g3 = GEOSConvexHull(g1); if (g3 == NULL) { elog(ERROR,"GEOS convexhull() threw an error!"); GEOSdeleteGeometry(g1); PG_RETURN_NULL(); //never get here } // elog(NOTICE,"result: %s", GEOSasText(g3) ) ; result = GEOS2POSTGIS(g3, geom1->is3d); if (result == NULL) { GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g3); elog(ERROR,"GEOS convexhull() threw an error (result postgis geometry formation)!"); PG_RETURN_NULL(); //never get here } GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g3); compressType(result); // convert multi* to single item if appropriate PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(buffer); Datum buffer(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); double size = PG_GETARG_FLOAT8(1); Geometry *g1,*g3; GEOMETRY *result; initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g3 = GEOSBuffer(g1,size); if (g3 == NULL) { elog(ERROR,"GEOS buffer() threw an error!"); GEOSdeleteGeometry(g1); PG_RETURN_NULL(); //never get here } // elog(NOTICE,"result: %s", GEOSasText(g3) ) ; result = GEOS2POSTGIS(g3, geom1->is3d); if (result == NULL) { GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g3); elog(ERROR,"GEOS buffer() threw an error (result postgis geometry formation)!"); PG_RETURN_NULL(); //never get here } GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g3); compressType(result); // convert multi* to single item if appropriate PG_RETURN_POINTER(result); } //select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'); //select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','POLYGON((5 5, 15 5, 15 7, 5 7, 5 5))'); //select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','POLYGON((25 5, 35 5, 35 7, 25 7, 25 5))'); //select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','POINT(5 5)'); //select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','LINESTRING(5 5, 10 10)'); //select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','MULTIPOINT(5 5, 7 7, 9 9, 10 10, 11 11)'); //select intersection('POLYGON(( 0 0, 10 0, 10 10, 0 10, 0 0))','POLYGON((5 5, 15 5, 15 7, 5 7, 5 5 ),(6 6,6.5 6, 6.5 6.5,6 6.5,6 6))'); ////select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','MULTIPOINT(5 5, 7 7, 9 9, 10 10, 11 11)'); // select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','MULTILINESTRING((5 5, 10 10),(1 1, 2 2) )'); //select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','MULTILINESTRING((5 5, 10 10),(1 1, 2 2) )'); //select intersection('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','MULTIPOLYGON(((5 5, 15 5, 15 7, 5 7, 5 5)),((1 1,1 2,2 2,1 2, 1 1)))'); PG_FUNCTION_INFO_V1(intersection); Datum intersection(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2,*g3; GEOMETRY *result; initGEOS(MAXIMUM_ALIGNOF); //elog(NOTICE,"intersection() START"); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); //elog(NOTICE," constructed geometrys - calling geos"); //elog(NOTICE,"g1 = %s",GEOSasText(g1)); //elog(NOTICE,"g2 = %s",GEOSasText(g2)); //if (g1==NULL) // elog(NOTICE,"g1 is null"); //if (g2==NULL) // elog(NOTICE,"g2 is null"); //elog(NOTICE,"g2 is valid = %i",GEOSisvalid(g2)); //elog(NOTICE,"g1 is valid = %i",GEOSisvalid(g1)); g3 = GEOSIntersection(g1,g2); //elog(NOTICE," intersection finished"); if (g3 == NULL) { elog(ERROR,"GEOS Intersection() threw an error!"); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); PG_RETURN_NULL(); //never get here } // elog(NOTICE,"result: %s", GEOSasText(g3) ) ; result = GEOS2POSTGIS(g3, geom1->is3d || geom2->is3d); if (result == NULL) { GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); GEOSdeleteGeometry(g3); elog(ERROR,"GEOS Intersection() threw an error (result postgis geometry formation)!"); PG_RETURN_NULL(); //never get here } GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); GEOSdeleteGeometry(g3); compressType(result); // convert multi* to single item if appropriate PG_RETURN_POINTER(result); } //select difference('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','POLYGON((5 5, 15 5, 15 7, 5 7, 5 5))'); PG_FUNCTION_INFO_V1(difference); Datum difference(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2,*g3; GEOMETRY *result; initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); g3 = GEOSDifference(g1,g2); if (g3 == NULL) { elog(ERROR,"GEOS difference() threw an error!"); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); PG_RETURN_NULL(); //never get here } // elog(NOTICE,"result: %s", GEOSasText(g3) ) ; result = GEOS2POSTGIS(g3, geom1->is3d || geom2->is3d); if (result == NULL) { GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); GEOSdeleteGeometry(g3); elog(ERROR,"GEOS difference() threw an error (result postgis geometry formation)!"); PG_RETURN_NULL(); //never get here } GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); GEOSdeleteGeometry(g3); compressType(result); // convert multi* to single item if appropriate PG_RETURN_POINTER(result); } //select pointonsurface('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'); PG_FUNCTION_INFO_V1(pointonsurface); Datum pointonsurface(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); Geometry *g1,*g3; GEOMETRY *result; initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g3 = GEOSpointonSurface(g1); if (g3 == NULL) { elog(ERROR,"GEOS pointonsurface() threw an error!"); GEOSdeleteGeometry(g1); PG_RETURN_NULL(); //never get here } // elog(NOTICE,"result: %s", GEOSasText(g3) ) ; result = GEOS2POSTGIS(g3, geom1->is3d); if (result == NULL) { GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g3); elog(ERROR,"GEOS pointonsurface() threw an error (result postgis geometry formation)!"); PG_RETURN_NULL(); //never get here } GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g3); compressType(result); // convert multi* to single item if appropriate PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(centroid); Datum centroid(PG_FUNCTION_ARGS) { GEOMETRY *geom, *result; Geometry *geosgeom, *geosresult; geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); initGEOS(MAXIMUM_ALIGNOF); geosgeom = POSTGIS2GEOS(geom); geosresult = GEOSGetCentroid(geosgeom); if ( geosresult == NULL ) { GEOSdeleteGeometry(geosgeom); elog(ERROR,"GEOS getCentroid() threw an error!"); PG_RETURN_NULL(); } result = GEOS2POSTGIS(geosresult, geom->is3d); if (result == NULL) { GEOSdeleteGeometry(geosgeom); GEOSdeleteGeometry(geosresult); elog(ERROR,"Error in GEOS-PGIS conversion"); PG_RETURN_NULL(); } GEOSdeleteGeometry(geosgeom); GEOSdeleteGeometry(geosresult); PG_RETURN_POINTER(result); } //---------------------------------------------- void errorIfGeometryCollection(GEOMETRY *g1, GEOMETRY *g2) { if ( (g1->type == COLLECTIONTYPE) || (g2->type == COLLECTIONTYPE) ) elog(ERROR,"Relate Operation called with a GEOMETRYCOLLECTION type. This is unsupported"); } PG_FUNCTION_INFO_V1(isvalid); Datum isvalid(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); bool result; Geometry *g1; initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); result = GEOSisvalid(g1); GEOSdeleteGeometry(g1); if (result == 2) { elog(ERROR,"GEOS isvalid() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } // overlaps(GEOMETRY g1,GEOMETRY g2) // returns if GEOS::g1->overlaps(g2) returns true // throws an error (elog(ERROR,...)) if GEOS throws an error PG_FUNCTION_INFO_V1(overlaps); Datum overlaps(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2; bool result; errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); result = GEOSrelateOverlaps(g1,g2); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); if (result == 2) { elog(ERROR,"GEOS overlaps() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(contains); Datum contains(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2; bool result; errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); result = GEOSrelateContains(g1,g2); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); if (result == 2) { elog(ERROR,"GEOS contains() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(within); Datum within(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2; bool result; errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); result = GEOSrelateWithin(g1,g2); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); if (result == 2) { elog(ERROR,"GEOS within() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(crosses); Datum crosses(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2; bool result; errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); result = GEOSrelateCrosses(g1,g2); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); if (result == 2) { elog(ERROR,"GEOS crosses() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(intersects); Datum intersects(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2; bool result; errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); result = GEOSrelateIntersects(g1,g2); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); if (result == 2) { elog(ERROR,"GEOS intersects() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(touches); Datum touches(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2; bool result; errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); result = GEOSrelateTouches(g1,g2); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); if (result == 2) { elog(ERROR,"GEOS touches() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(disjoint); Datum disjoint(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2; bool result; errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); result = GEOSrelateDisjoint(g1,g2); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); if (result == 2) { elog(ERROR,"GEOS disjoin() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(relate_pattern); Datum relate_pattern(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); char *patt; bool result; Geometry *g1,*g2; errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); patt = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_DATUM(2)))); result = GEOSrelatePattern(g1,g2,patt); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); pfree(patt); if (result == 2) { elog(ERROR,"GEOS relate_pattern() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(relate_full); Datum relate_full(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2; char *relate_str; int len; char *result; //elog(NOTICE,"in relate_full()"); errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); //elog(NOTICE,"GEOS init()"); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); //elog(NOTICE,"constructed geometries "); if ((g1==NULL) || (g2 == NULL)) elog(NOTICE,"g1 or g2 are null"); //elog(NOTICE,GEOSasText(g1)); //elog(NOTICE,GEOSasText(g2)); //elog(NOTICE,"valid g1 = %i", GEOSisvalid(g1)); //elog(NOTICE,"valid g2 = %i",GEOSisvalid(g2)); //elog(NOTICE,"about to relate()"); relate_str = GEOSrelate(g1, g2); //elog(NOTICE,"finished relate()"); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); if (relate_str == NULL) { //free(relate_str); elog(ERROR,"GEOS relate() threw an error!"); PG_RETURN_NULL(); //never get here } len = strlen(relate_str) + 4; result= palloc(len); *((int *) result) = len; memcpy(result +4, relate_str, len-4); free(relate_str); PG_RETURN_POINTER(result); } //============================== PG_FUNCTION_INFO_V1(geomequals); Datum geomequals(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); Geometry *g1,*g2; bool result; errorIfGeometryCollection(geom1,geom2); initGEOS(MAXIMUM_ALIGNOF); g1 = POSTGIS2GEOS(geom1 ); g2 = POSTGIS2GEOS(geom2 ); result = GEOSequals(g1,g2); GEOSdeleteGeometry(g1); GEOSdeleteGeometry(g2); if (result == 2) { elog(ERROR,"GEOS equals() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(issimple); Datum issimple(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); Geometry *g1; int result; if (geom->nobjs == 0) PG_RETURN_BOOL(true); initGEOS(MAXIMUM_ALIGNOF); //elog(NOTICE,"GEOS init()"); g1 = POSTGIS2GEOS(geom ); result = GEOSisSimple(g1); GEOSdeleteGeometry(g1); if (result == 2) { elog(ERROR,"GEOS issimple() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(isring); Datum isring(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); Geometry *g1; int result; if (geom->type != LINETYPE) { elog(ERROR,"isring() should only be called on a LINE"); } if (geom->nobjs == 0) PG_RETURN_BOOL(false); initGEOS(MAXIMUM_ALIGNOF); //elog(NOTICE,"GEOS init()"); g1 = POSTGIS2GEOS(geom ); result = GEOSisRing(g1); GEOSdeleteGeometry(g1); if (result == 2) { elog(ERROR,"GEOS isring() threw an error!"); PG_RETURN_NULL(); //never get here } PG_RETURN_BOOL(result); } //=================================================== POLYGON3D *PolyFromGeometry(Geometry *g, int *size) { int ninteriorrings; POINT3D *pts; int *pts_per_ring; int t; POLYGON3D *poly; int npoints; ninteriorrings = GEOSGetNumInteriorRings(g); npoints = GEOSGetNumCoordinate(g); pts = GEOSGetCoordinates(g); if (npoints <3) { GEOSdeleteChar( (char*) pts); return NULL; } pts_per_ring = palloc(sizeof(int) * (ninteriorrings+1)); pts_per_ring[0] = GEOSGetNumCoordinate(GEOSGetExteriorRing(g)); for (t=0;tpoints[t].x,line->points[t].y,line->points[t].z); //} GEOSdeleteChar( (char*) pts); return line; } GEOMETRY *GEOS2POSTGIS(Geometry *g,char want3d) { int type = GEOSGeometryTypeId(g) ; GEOMETRY *result = NULL; POINT3D *pts; LINE3D *line; BOX3D *bbox ; GEOMETRY *geom, *g2, *r; POLYGON3D *poly; GEOMETRY *g_new,*g_old; int ngeoms,t,size; switch (type) { /* From slower to faster.. compensation rule :) */ case COLLECTIONTYPE: #ifdef DEBUG_GEOS2POSTGIS elog(NOTICE, "GEOS2POSTGIS: It's a COLLECTION"); #endif //this is more difficult because GEOS allows GCs of GCs ngeoms = GEOSGetNumGeometries(g); if (ngeoms ==0) { result = makeNullGeometry(GEOSGetSRID(g)); return result; } if (ngeoms == 1) { return GEOS2POSTGIS(GEOSGetGeometryN(g,0), want3d); // short cut! } geom = GEOS2POSTGIS(GEOSGetGeometryN(g,0) , want3d); for (t=1;ttype = MULTIPOLYGONTYPE; return result; } for (t=0;tbvol, bbox, sizeof(BOX3D) ); // free bounding box pfree( bbox ); return result; case MULTILINETYPE: #ifdef DEBUG_GEOS2POSTGIS elog(NOTICE, "GEOS2POSTGIS: It's a MULTILINE"); #endif ngeoms = GEOSGetNumGeometries(g); if (ngeoms ==0) { result = makeNullGeometry(GEOSGetSRID(g)); result->type = MULTILINETYPE; return result; } line = LineFromGeometry(GEOSGetGeometryN(g,0), &size); result = make_oneobj_geometry(size, (char *)line, MULTILINETYPE, want3d, GEOSGetSRID(g),1.0, 0.0, 0.0); #ifdef DEBUG_GEOS2POSTGIS elog(NOTICE,"GEOS2POSTGIS: t0: %s",geometry_to_text(result)); elog(NOTICE," size = %i", result->size); #endif for (t=1;tsize); #endif pfree(g_old); } bbox = bbox_of_geometry( result ); // make bounding box memcpy( &result->bvol, bbox, sizeof(BOX3D) ); // copy bounding box pfree( bbox ); // free bounding box #ifdef DEBUG_GEOS2POSTGIS elog(NOTICE,"GEOS2POSTGIS: end: %s",geometry_to_text(result)); elog(NOTICE," size = %i", result->size); #endif return result; case MULTIPOINTTYPE: #ifdef DEBUG_GEOS2POSTGIS elog(NOTICE, "GEOS2POSTGIS: It's a MULTIPOINT"); #endif g_new = NULL; ngeoms = GEOSGetNumGeometries(g); if (ngeoms ==0) { result = makeNullGeometry(GEOSGetSRID(g)); result->type = MULTIPOINTTYPE; return result; } pts = GEOSGetCoordinates(g); g_old = make_oneobj_geometry(sizeof(POINT3D), (char *) pts, MULTIPOINTTYPE, want3d, GEOSGetSRID(g),1.0, 0.0, 0.0); for (t=1;tbvol, bbox, sizeof(BOX3D) ); // free bounding box pfree( bbox ); return g_new; case POLYGONTYPE: #ifdef DEBUG_GEOS2POSTGIS elog(NOTICE, "GEOS2POSTGIS: It's a POLYGON"); #endif poly = PolyFromGeometry(g,&size); if (poly == NULL) return NULL; result = make_oneobj_geometry(size, (char *) poly, POLYGONTYPE, want3d, GEOSGetSRID(g),1.0, 0.0, 0.0); return result; case LINETYPE: #ifdef DEBUG_GEOS2POSTGIS elog(NOTICE, "GEOS2POSTGIS: It's a LINE"); #endif line = LineFromGeometry(g,&size); if (line == NULL) return NULL; result = make_oneobj_geometry(size, (char *) line, LINETYPE, want3d, GEOSGetSRID(g),1.0, 0.0, 0.0); return result; case POINTTYPE: #ifdef DEBUG_GEOS2POSTGIS elog(NOTICE, "GEOS2POSTGIS: It's a POINT"); #endif pts = GEOSGetCoordinate(g); result = make_oneobj_geometry(sizeof(POINT3D), (char *) pts, POINTTYPE, want3d, GEOSGetSRID(g), 1.0, 0.0, 0.0); GEOSdeleteChar( (char*) pts); return result; default: #ifdef DEBUG_GEOS2POSTGIS elog(NOTICE, "GEOS2POSTGIS: It's UNKNOWN!"); #endif return NULL; } } //BBOXONLYTYPE -> returns as a 2d polygon Geometry *POSTGIS2GEOS(GEOMETRY *g) { POINT3D *pt; LINE3D *line; POLYGON3D *poly; POLYGON3D **polys; LINE3D **lines; POINT3D **points; Geometry **geoms; Geometry *geos; char *obj; int obj_type; int t; Geometry *result; int32 *offsets1 = (int32 *) ( ((char *) &(g->objType[0] ))+ sizeof(int32) * g->nobjs ) ; switch(g->type) { case POINTTYPE: #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "POSTGIS2GEOS: it's a POINT"); #endif pt = (POINT3D*) ((char *) g +offsets1[0]) ; result = PostGIS2GEOS_point(pt,g->SRID,g->is3d); if (result == NULL) { elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); } return result; break; case LINETYPE: #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "POSTGIS2GEOS: it's a LINE"); #endif line = (LINE3D*) ((char *) g +offsets1[0]) ; result = PostGIS2GEOS_linestring(line,g->SRID,g->is3d); if (result == NULL) { elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); } return result; break; case POLYGONTYPE: #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "POSTGIS2GEOS: it's a POLYGON"); #endif poly = (POLYGON3D*) ((char *) g +offsets1[0]) ; result = PostGIS2GEOS_polygon(poly,g->SRID,g->is3d); if (result == NULL) { elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); } return result; break; case MULTIPOLYGONTYPE: #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "POSTGIS2GEOS: it's a MULTIPOLYGON"); #endif //make an array of POLYGON3Ds polys = NULL; if (g->nobjs >0) polys = (POLYGON3D**) palloc(sizeof (POLYGON3D*) * g->nobjs); for (t=0;tnobjs;t++) { polys[t] = (POLYGON3D*) ((char *) g +offsets1[t]) ; } geos= PostGIS2GEOS_multipolygon(polys, g->nobjs, g->SRID,g->is3d); if (polys != NULL) pfree(polys); if (geos == NULL) { elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); } return geos; break; case MULTILINETYPE: #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "POSTGIS2GEOS: it's a MULTILINE"); #endif //make an array of LINES3D lines = NULL; if (g->nobjs >0) lines = (LINE3D**) palloc(sizeof (LINE3D*) * g->nobjs); for (t=0;tnobjs;t++) { #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "Line %d has offset %d", t, offsets1[t]); #endif lines[t] = (LINE3D*) ((char *)g+offsets1[t]) ; } geos= PostGIS2GEOS_multilinestring(lines, g->nobjs, g->SRID,g->is3d); if (lines != NULL) pfree(lines); if (geos == NULL) { elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); } return geos; break; case MULTIPOINTTYPE: #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "POSTGIS2GEOS: it's a MULTIPOINT"); #endif //make an array of POINT3Ds points = NULL; if (g->nobjs >0) points = (POINT3D**) palloc(sizeof (POINT3D*) * g->nobjs); for (t=0;tnobjs;t++) { points[t] = (POINT3D*) ((char *) g +offsets1[t]) ; } geos= PostGIS2GEOS_multipoint(points, g->nobjs,g->SRID,g->is3d); if (points != NULL) pfree(points); if (geos == NULL) { elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); } return geos; break; case BBOXONLYTYPE: #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "POSTGIS2GEOS: it's a BBOXONLY"); #endif result = PostGIS2GEOS_box3d(&g->bvol, g->SRID); if (result == NULL) { elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); } return result; break; case COLLECTIONTYPE: #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "POSTGIS2GEOS: it's a COLLECTION"); #endif //make an array of GEOS Geometries geoms = NULL; if (g->nobjs >0) geoms = (Geometry**) palloc(sizeof (Geometry*) * g->nobjs); for (t=0;tnobjs;t++) { obj = ((char *) g +offsets1[t]); obj_type = g->objType[t]; switch (obj_type) { case POINTTYPE: pt = (POINT3D*) obj ; geoms[t] = PostGIS2GEOS_point(pt,g->SRID,g->is3d); if (geoms[t] == NULL) { pfree(geoms); elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); return NULL; } break; case LINETYPE: line = (LINE3D*) obj ; geoms[t] = PostGIS2GEOS_linestring(line,g->SRID,g->is3d); if (geoms[t] == NULL) { pfree(geoms); elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); return NULL; } break; case POLYGONTYPE: poly = (POLYGON3D*) obj ; geoms[t] = PostGIS2GEOS_polygon(poly,g->SRID,g->is3d); if (geoms[t] == NULL) { pfree(geoms); elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); return NULL; } break; } } #ifdef DEBUG_POSTGIS2GEOS elog(NOTICE, "POSTGIS2GEOS: COLLECTION has %d objs, srid %d and is %s 3d", g->nobjs, g->SRID, g->is3d ? "" : "not"); #endif geos = PostGIS2GEOS_collection(geoms,g->nobjs,g->SRID,g->is3d); if (geoms != NULL) pfree(geoms); if (geos == NULL) { elog(ERROR,"Couldnt convert the postgis geometry to GEOS!"); } return geos; break; } return NULL; } PG_FUNCTION_INFO_V1(GEOSnoop); Datum GEOSnoop(PG_FUNCTION_ARGS) { GEOMETRY *geom; Geometry *geosgeom; GEOMETRY *result; initGEOS(MAXIMUM_ALIGNOF); geom = (GEOMETRY *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); #ifdef DEBUG_CONVERTER elog(NOTICE, "GEOSnoop: IN: %s", geometry_to_text(geom)); #endif geosgeom = POSTGIS2GEOS(geom); if ( (Pointer *)geom != (Pointer *)PG_GETARG_DATUM(0) ) pfree(geom); result = GEOS2POSTGIS(geosgeom, geom->is3d); GEOSdeleteGeometry(geosgeom); #ifdef DEBUG_CONVERTER elog(NOTICE, "GEOSnoop: OUT: %s", geometry_to_text(result)); #endif PG_RETURN_POINTER(result); } //---------------------------------------------------------------------------- // NULL implementation here // --------------------------------------------------------------------------- #else // ndef USE_GEOS #include "postgres.h" #include #include #include #include #include #include "fmgr.h" Datum relate_full(PG_FUNCTION_ARGS); Datum relate_pattern(PG_FUNCTION_ARGS); Datum disjoint(PG_FUNCTION_ARGS); Datum touches(PG_FUNCTION_ARGS); Datum intersects(PG_FUNCTION_ARGS); Datum crosses(PG_FUNCTION_ARGS); Datum within(PG_FUNCTION_ARGS); Datum contains(PG_FUNCTION_ARGS); Datum overlaps(PG_FUNCTION_ARGS); Datum isvalid(PG_FUNCTION_ARGS); Datum buffer(PG_FUNCTION_ARGS); Datum intersection(PG_FUNCTION_ARGS); Datum convexhull(PG_FUNCTION_ARGS); Datum difference(PG_FUNCTION_ARGS); Datum boundary(PG_FUNCTION_ARGS); Datum symdifference(PG_FUNCTION_ARGS); Datum geomunion(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(intersection); Datum intersection(PG_FUNCTION_ARGS) { elog(ERROR,"intersection:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(convexhull); Datum convexhull(PG_FUNCTION_ARGS) { elog(ERROR,"convexhull:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(difference); Datum difference(PG_FUNCTION_ARGS) { elog(ERROR,"difference:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(boundary); Datum boundary(PG_FUNCTION_ARGS) { elog(ERROR,"boundary:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(symdifference); Datum symdifference(PG_FUNCTION_ARGS) { elog(ERROR,"symdifference:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(geomunion); Datum geomunion(PG_FUNCTION_ARGS) { elog(ERROR,"geomunion:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(buffer); Datum buffer(PG_FUNCTION_ARGS) { elog(ERROR,"buffer:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(relate_full); Datum relate_full(PG_FUNCTION_ARGS) { elog(ERROR,"relate_full:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(relate_pattern); Datum relate_pattern(PG_FUNCTION_ARGS) { elog(ERROR,"relate_pattern:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(disjoint); Datum disjoint(PG_FUNCTION_ARGS) { elog(ERROR,"disjoint:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(intersects); Datum intersects(PG_FUNCTION_ARGS) { elog(ERROR,"intersects:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(touches); Datum touches(PG_FUNCTION_ARGS) { elog(ERROR,"touches:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(crosses); Datum crosses(PG_FUNCTION_ARGS) { elog(ERROR,"crosses:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(within); Datum within(PG_FUNCTION_ARGS) { elog(ERROR,"within:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(contains); Datum contains(PG_FUNCTION_ARGS) { elog(ERROR,"contains:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(overlaps); Datum overlaps(PG_FUNCTION_ARGS) { elog(ERROR,"overlaps:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(isvalid); Datum isvalid(PG_FUNCTION_ARGS) { elog(ERROR,"isvalid:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(issimple); Datum issimple(PG_FUNCTION_ARGS) { elog(ERROR,"issimple:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(geomequals); Datum geomequals(PG_FUNCTION_ARGS) { elog(ERROR,"geomequals:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(isring); Datum isring(PG_FUNCTION_ARGS) { elog(ERROR,"isring:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(pointonsurface); Datum pointonsurface(PG_FUNCTION_ARGS) { elog(ERROR,"pointonsurface:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(unite_garray); Datum unite_garray(PG_FUNCTION_ARGS) { elog(ERROR,"unite_garray:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); // never get here } PG_FUNCTION_INFO_V1(GEOSnoop); Datum GEOSnoop(PG_FUNCTION_ARGS) { elog(ERROR,"GEOSnoop:: operation not implemented - compile PostGIS with GEOS support"); PG_RETURN_NULL(); } #endif postgis-0.8.1/postgis_geos_wrapper.cpp0100664000077300001440000006333207766341734017627 0ustar postgisusers// g++ postgis_GEOSwrapper.cpp -c -I/usr/local/include -I/usr/local/include/geos -I/usr/local/src/postgresql-7.2.3//src/include /* * $Log: postgis_geos_wrapper.cpp,v $ * Revision 1.17 2025/12/12 13:34:20 strk * added missing 'const' in prototypes * * Revision 1.16 2025/12/12 12:03:30 strk * More debugging output, some code cleanup. * * Revision 1.15 2025/11/12 16:36:04 strk * delete all caught exceptions after use * * Revision 1.14 2025/10/29 13:58:28 strk * Added GEOSGetCentroid() function * * Revision 1.13 2025/10/24 21:33:21 strk * Added GEOSGeometryTypeId(Geometry *) wrapper function. * Added GEOSGetCoordinates_Polygon(Polygon *) as an experimental optimized * version of GEOSGetCoordinates(Geometry *); More to add ... * * Revision 1.12 2025/10/24 14:29:53 strk * GEOSGetCoordinates() reverted to getCoordinates() call so to be compatible * to all type of geometries (not only LineStrings) * * Revision 1.11 2025/10/24 08:28:50 strk * Fixed memory leak in GEOSGetCoordinates(), made sure that GEOS2POSTGIS * free type string even in case of collapsed geoms. Made sure that geomunion * release memory in case of exception thrown by GEOSUnion. Sooner release * of palloced memory in PolyFromGeometry (pts_per_ring). * * Revision 1.10 2025/10/20 19:50:49 strk * Removed some memory leaks in PostGIS2* converters. * */ #include #include #include #include #include "geom.h" #include "util.h" using namespace geos; //WARNING THIS *MUST* BE SET CORRECTLY. int MAXIMUM_ALIGNOF = -999999; // to be set during initialization - this will be either 4 (intel) or 8 (sparc) //for getting things to align properly double are on 8byte align on solaris machines, and 4bytes on intel #define TYPEALIGN(ALIGNVAL,LEN) (((long)(LEN) + (ALIGNVAL-1)) & ~(ALIGNVAL-1)) #define MAXALIGN(LEN) TYPEALIGN(MAXIMUM_ALIGNOF, (LEN)) typedef int int32; typedef struct { double x,y,z; //for lat/long x=long, y=lat } POINT3D; typedef struct { POINT3D LLB,URT; /* corner POINT3Ds on long diagonal */ } BOX3D; typedef struct { int32 npoints; // how many points in the line int32 junk; // double-word alignment POINT3D points[1]; // array of actual points } LINE3D; typedef struct { int32 nrings; // how many rings in this polygon int32 npoints[1]; //how many points in each ring /* could be 4 byes of filler here to make sure points[] is double-word aligned*/ POINT3D points[1]; // array of actual points } POLYGON3D; #define POINTTYPE 1 #define LINETYPE 2 #define POLYGONTYPE 3 #define MULTIPOINTTYPE 4 #define MULTILINETYPE 5 #define MULTIPOLYGONTYPE 6 #define COLLECTIONTYPE 7 //########################################################### extern "C" char *GEOSrelate(Geometry *g1, Geometry*g2); extern "C" void initGEOS(int maxalign); extern "C" void GEOSdeleteChar(char *a); extern "C" void GEOSdeleteGeometry(Geometry *a); extern "C" char GEOSrelatePattern(Geometry *g1, Geometry*g2,char *pat); extern "C" char GEOSrelateDisjoint(Geometry *g1, Geometry*g2); extern "C" char GEOSrelateTouches(Geometry *g1, Geometry*g2); extern "C" char GEOSrelateIntersects(Geometry *g1, Geometry*g2); extern "C" char GEOSrelateCrosses(Geometry *g1, Geometry*g2); extern "C" char GEOSrelateWithin(Geometry *g1, Geometry*g2); extern "C" char GEOSrelateContains(Geometry *g1, Geometry*g2); extern "C" char GEOSrelateOverlaps(Geometry *g1, Geometry*g2); extern "C" Geometry *PostGIS2GEOS_point(POINT3D *point,int SRID, bool is3d); extern "C" Geometry *PostGIS2GEOS_linestring(const LINE3D *line,int SRID, bool is3d); extern "C" Geometry *PostGIS2GEOS_polygon(POLYGON3D *polygon,int SRID, bool is3d); extern "C" Geometry *PostGIS2GEOS_multipolygon(POLYGON3D **polygons,int npolys, int SRID, bool is3d); extern "C" Geometry *PostGIS2GEOS_multilinestring(const LINE3D **lines,int nlines, int SRID, bool is3d); extern "C" Geometry *PostGIS2GEOS_multipoint(POINT3D **points,int npoints, int SRID, bool is3d); extern "C" Geometry *PostGIS2GEOS_box3d(BOX3D *box, int SRID); extern "C" Geometry *PostGIS2GEOS_collection(Geometry **geoms, int ngeoms,int SRID, bool is3d); extern "C" char GEOSisvalid(Geometry *g1); extern "C" char *GEOSasText(Geometry *g1); extern "C" char GEOSisEmpty(Geometry *g1); extern "C" char *GEOSGeometryType(Geometry *g1); extern "C" int GEOSGeometryTypeId(Geometry *g1); extern "C" char *throw_exception(Geometry *g); extern "C" Geometry *GEOSIntersection(Geometry *g1,Geometry *g1); extern "C" Geometry *GEOSBuffer(Geometry *g1,double width); extern "C" Geometry *GEOSConvexHull(Geometry *g1); extern "C" Geometry *GEOSDifference(Geometry *g1,Geometry *g2); extern "C" Geometry *GEOSBoundary(Geometry *g1); extern "C" Geometry *GEOSSymDifference(Geometry *g1,Geometry *g2); extern "C" Geometry *GEOSUnion(Geometry *g1,Geometry *g2); extern "C" POINT3D *GEOSGetCoordinate(Geometry *g1); extern "C" POINT3D *GEOSGetCoordinates_Polygon(Polygon *g1); extern "C" POINT3D *GEOSGetCoordinates(Geometry *g1); extern "C" int GEOSGetNumCoordinate(Geometry *g1); extern "C" const Geometry *GEOSGetGeometryN(Geometry *g1, int n); extern "C" const Geometry *GEOSGetExteriorRing(Geometry *g1); extern "C" const Geometry *GEOSGetInteriorRingN(Geometry *g1, int n); extern "C" int GEOSGetNumInteriorRings(Geometry *g1); extern "C" int GEOSGetSRID(Geometry *g1); extern "C" int GEOSGetNumGeometries(Geometry *g1); extern "C" char GEOSisSimple(Geometry *g1); extern "C" char GEOSequals(Geometry *g1, Geometry*g2); extern "C" char GEOSisRing(Geometry *g1); extern "C" Geometry *GEOSpointonSurface(Geometry *g1); extern "C" Geometry *GEOSGetCentroid(Geometry *g1); extern "C" void NOTICE_MESSAGE(char *msg); //########################################################### GeometryFactory *geomFactory = NULL; void initGEOS (int maxalign) { if (geomFactory == NULL) { geomFactory = new GeometryFactory( new PrecisionModel(), -1); // NOTE: SRID will have to be changed after geometry creation MAXIMUM_ALIGNOF = maxalign; } } // ------------------------------------------------------------------------------ // geometry constuctors - return NULL if there was an error //------------------------------------------------------------------------------- //note: you lose the 3d from this! Geometry *PostGIS2GEOS_box3d(BOX3D *box, int SRID) { try { Geometry *g; Envelope *envelope = new Envelope(box->LLB.x,box->URT.x ,box->LLB.y,box->URT.y); g = geomFactory->toGeometry(envelope,geomFactory->getPrecisionModel(), SRID); delete envelope; if (g==NULL) return NULL; g->setSRID(SRID); return g; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *PostGIS2GEOS_collection(Geometry **geoms, int ngeoms,int SRID, bool is3d) { try { Geometry *g; int t; vector *subGeos=new vector; for (t =0; t< ngeoms; t++) { subGeos->push_back(geoms[t]); } g = geomFactory->buildGeometry(subGeos); delete subGeos; if (g==NULL) return NULL; g->setSRID(SRID); return g; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *PostGIS2GEOS_point(POINT3D *point,int SRID, bool is3d) { try { Coordinate *c; if (is3d) c = new Coordinate(point->x, point->y); else c = new Coordinate(point->x, point->y, point->z); Geometry *g = geomFactory->createPoint(*c); delete c; if (g==NULL) return NULL; g->setSRID(SRID); return g; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } /* * This function must return an all-new allocated object */ Geometry * PostGIS2GEOS_linestring(const LINE3D *line,int SRID, bool is3d) { try{ int t; Coordinate c; //build coordinatelist & pre-allocate space BasicCoordinateList *coords = new BasicCoordinateList(line->npoints); if (is3d) { for (t=0;tnpoints;t++) { c.x = line->points[t].x; c.y = line->points[t].y; c.z = line->points[t].z; coords->setAt( c ,t); } } else //make 2d points { for (t=0;tnpoints;t++) { c.x = line->points[t].x; c.y = line->points[t].y; c.z = DoubleNotANumber; coords->setAt( c ,t); } } Geometry *g = geomFactory->createLineString(coords); delete coords; if (g==NULL) return NULL; g->setSRID(SRID); return g; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } //polygons is an array of pointers to polygons Geometry *PostGIS2GEOS_multipolygon(POLYGON3D **polygons,int npolys, int SRID, bool is3d) { try { int t; vector *subPolys=NULL; Geometry *g; subPolys=new vector; for (t =0; t< npolys; t++) { subPolys->push_back(PostGIS2GEOS_polygon(polygons[t], SRID,is3d )); } g = geomFactory->createMultiPolygon(subPolys); delete subPolys; if (g== NULL) return NULL; g->setSRID(SRID); return g; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } //lines is an array of pointers to line3d Geometry * PostGIS2GEOS_multilinestring(const LINE3D **lines, int nlines, int SRID, bool is3d) { try { int t; vector *subLines = new vector; Geometry *g; for (t =0; t< nlines; t++) { subLines->push_back(PostGIS2GEOS_linestring(lines[t], SRID,is3d )); } // geometries pointed to by subLines will be owned // by returned MultiLineString object g = geomFactory->createMultiLineString(subLines); delete subLines; if (g==NULL) return NULL; g->setSRID(SRID); return g; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *PostGIS2GEOS_multipoint(POINT3D **points,int npoints, int SRID, bool is3d) { try { int t; vector *subPoints =new vector; Geometry *g; for (t =0; t< npoints; t++) { subPoints->push_back(PostGIS2GEOS_point(points[t], SRID,is3d )); } g = geomFactory->createMultiPoint(subPoints); delete subPoints; if (g==NULL) return NULL; g->setSRID(SRID); return g; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *PostGIS2GEOS_polygon(POLYGON3D *polygon,int SRID, bool is3d) { try { POINT3D *pts; Coordinate c; int ring,t; Geometry *g; LinearRing *outerRing; LinearRing *innerRing; BasicCoordinateList *cl; int pointOffset =0; // first point that we're looking at. a POLYGON3D has all its points smooshed together vector *innerRings=new vector; pts = (POINT3D *) ( (char *)&(polygon->npoints[polygon->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); // make outerRing cl = new BasicCoordinateList(polygon->npoints[0]); if (is3d) { for(t=0;tnpoints[0];t++) { c.x = pts[t].x; c.y = pts[t].y; c.z = pts[t].z; cl->setAt( c ,t); } } else { for(t=0;tnpoints[0];t++) { c.x = pts[t].x; c.y = pts[t].y; c.z = DoubleNotANumber; cl->setAt( c ,t); } } outerRing = (LinearRing*) geomFactory->createLinearRing(cl); delete cl; if (outerRing == NULL) return NULL; outerRing->setSRID(SRID); pointOffset = polygon->npoints[0]; for(ring =1; ring< polygon->nrings; ring++) { cl = new BasicCoordinateList(polygon->npoints[ring]); if (is3d) { for(t=0;tnpoints[ring];t++) { c.x = pts[t+pointOffset].x; c.y = pts[t+pointOffset].y; c.z = pts[t+pointOffset].z; cl->setAt( c ,t); } } else { for(t=0;tnpoints[ring];t++) { c.x = pts[t+pointOffset].x; c.y = pts[t+pointOffset].y; c.z = DoubleNotANumber; cl->setAt( c ,t); } } innerRing = (LinearRing *) geomFactory->createLinearRing(cl); delete cl; if (innerRing == NULL) { delete outerRing; return NULL; } innerRing->setSRID(SRID); innerRings->push_back(innerRing); pointOffset += polygon->npoints[ring]; } g = geomFactory->createPolygon(outerRing, innerRings); if (g==NULL) return NULL; g->setSRID(SRID); return g; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } //----------------------------------------------------------- // relate()-related functions // return 0 = false, 1 = true, 2 = error occured //----------------------------------------------------------- char GEOSrelateDisjoint(Geometry *g1, Geometry*g2) { try { bool result; result = g1->disjoint(g2); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } char GEOSrelateTouches(Geometry *g1, Geometry*g2) { try { bool result; result = g1->touches(g2); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } char GEOSrelateIntersects(Geometry *g1, Geometry*g2) { try { bool result; result = g1->intersects(g2); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } char GEOSrelateCrosses(Geometry *g1, Geometry*g2) { try { bool result; result = g1->crosses(g2); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } char GEOSrelateWithin(Geometry *g1, Geometry*g2) { try { bool result; result = g1->within(g2); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } // call g1->contains(g2) // returns 0 = false // 1 = true // 2 = error was trapped char GEOSrelateContains(Geometry *g1, Geometry*g2) { try { bool result; result = g1->contains(g2); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } char GEOSrelateOverlaps(Geometry *g1, Geometry*g2) { try { bool result; result = g1->overlaps(g2); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } //------------------------------------------------------------------- // low-level relate functions //------------------------------------------------------------------ char GEOSrelatePattern(Geometry *g1, Geometry*g2,char *pat) { try { bool result; string s = pat; result = g1->relate(g2,pat); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } char *GEOSrelate(Geometry *g1, Geometry*g2) { try { IntersectionMatrix *im = g1->relate(g2); string s; char *result; if (im == NULL) return NULL; s= im->toString(); result = (char*) malloc( s.length() + 1); strcpy(result, s.c_str() ); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } //----------------------------------------------------------------- // isValid //----------------------------------------------------------------- char GEOSisvalid(Geometry *g1) { try { bool result; result =g1->isValid(); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } //----------------------------------------------------------------- // general purpose //----------------------------------------------------------------- char GEOSequals(Geometry *g1, Geometry*g2) { try { bool result; result = g1->equals(g2); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } char *GEOSasText(Geometry *g1) { try { string s = g1->toString(); char *result; result = (char*) malloc( s.length() + 1); strcpy(result, s.c_str() ); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } char GEOSisEmpty(Geometry *g1) { try { return g1->isEmpty(); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } char GEOSisSimple(Geometry *g1) { try { return g1->isSimple(); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } char GEOSisRing(Geometry *g1) { try { return (( (LinearRing*)g1)->isRing()); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 2; } catch (...) { return 2; } } //free the result of this char *GEOSGeometryType(Geometry *g1) { try { string s = g1->getGeometryType(); char *result; result = (char*) malloc( s.length() + 1); strcpy(result, s.c_str() ); return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } // Return postgis geometry type index int GEOSGeometryTypeId(Geometry *g1) { try { GeometryTypeId id = g1->getGeometryTypeId(); switch (id) { case GEOS_POINT: return POINTTYPE; case GEOS_LINESTRING: return LINETYPE; case GEOS_POLYGON: return POLYGONTYPE; case GEOS_MULTIPOINT: return MULTIPOINTTYPE; case GEOS_MULTILINESTRING: return MULTILINETYPE; case GEOS_MULTIPOLYGON: return MULTIPOLYGONTYPE; case GEOS_GEOMETRYCOLLECTION: return COLLECTIONTYPE; default: return 0; } } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return -1; } catch (...) { return -1; } } //------------------------------------------------------------------- // GEOS functions that return geometries //------------------------------------------------------------------- Geometry *GEOSIntersection(Geometry *g1,Geometry *g2) { try { Geometry *g3 = g1->intersection(g2); return g3; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *GEOSBuffer(Geometry *g1,double width) { try { Geometry *g3 = g1->buffer(width); return g3; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *GEOSConvexHull(Geometry *g1) { try { Geometry *g3 = g1->convexHull(); return g3; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *GEOSDifference(Geometry *g1,Geometry *g2) { try { Geometry *g3 = g1->difference(g2); return g3; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *GEOSBoundary(Geometry *g1) { try { Geometry *g3 = g1->getBoundary(); return g3; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *GEOSSymDifference(Geometry *g1,Geometry *g2) { try { Geometry *g3 = g1->symDifference(g2); return g3; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *GEOSUnion(Geometry *g1,Geometry *g2) { try { Geometry *g3 = g1->Union(g2); return g3; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } Geometry *GEOSpointonSurface(Geometry *g1) { try { Geometry *g3 = g1->getInteriorPoint(); return g3; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch (...) { return NULL; } } //------------------------------------------------------------------- // memory management functions //------------------------------------------------------------------ //BUG:: this leaks memory, but delete kills the PrecisionModel for ALL the geometries void GEOSdeleteGeometry(Geometry *a) { try{ delete a; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; //return NULL; } catch(...) { // do nothing! } } void GEOSdeleteChar(char *a) { try{ free(a); } catch (GEOSException *ge) // ??? { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; //return NULL; } catch(...) { // do nothing! } } //------------------------------------------------------------------- //GEOS => POSTGIS conversions //------------------------------------------------------------------- // free the result when done! // g1 must be a point POINT3D *GEOSGetCoordinate(Geometry *g1) { try{ POINT3D *result = (POINT3D*) malloc (sizeof(POINT3D)); const Coordinate *c =g1->getCoordinate(); result->x = c->x; result->y = c->y; result->z = c->z; return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch(...) { return NULL; } } //must free the result when done // result is an array length g1->getNumCoordinates() POINT3D *GEOSGetCoordinates(Geometry *g1) { if ( g1->getGeometryTypeId() == GEOS_POLYGON ) { return GEOSGetCoordinates_Polygon((Polygon *)g1); } try { int numPoints = g1->getNumPoints(); POINT3D *result = (POINT3D*) malloc (sizeof(POINT3D) * numPoints ); int t; CoordinateList *cl = g1->getCoordinates(); Coordinate c; for (t=0;tgetAt(t); result[t].x = c.x; result[t].y = c.y; result[t].z = c.z; } delete cl; return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch(...) { return NULL; } } // A somewhat optimized version for polygon types. POINT3D *GEOSGetCoordinates_Polygon(Polygon *g1) { try { int t, r, outidx=0; const CoordinateList *cl; Coordinate c; const LineString *lr; int npts, nrings; POINT3D *result; npts = g1->getNumPoints(); result = (POINT3D*) malloc (sizeof(POINT3D) * npts); // Exterior ring lr = g1->getExteriorRing(); cl = lr->getCoordinatesRO(); npts = lr->getNumPoints(); for (t=0; tgetAt(t); result[outidx].x = c.x; result[outidx].y = c.y; result[outidx].z = c.z; outidx++; } // Interior rings nrings = g1->getNumInteriorRing(); for (r=0; rgetInteriorRingN(r); cl = lr->getCoordinatesRO(); npts = lr->getNumPoints(); for (t=0; tgetAt(t); result[outidx].x = c.x; result[outidx].y = c.y; result[outidx].z = c.z; outidx++; } } return result; } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch(...) { return NULL; } } int GEOSGetNumCoordinate(Geometry *g1) { try{ return g1->getNumPoints(); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 0; } catch(...) { return 0; } } int GEOSGetNumInteriorRings(Geometry *g1) { try{ Polygon *p = (Polygon *) g1; return p->getNumInteriorRing(); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 0; } catch(...) { return 0; } } //only call on GCs (or multi*) int GEOSGetNumGeometries(Geometry *g1) { try{ GeometryCollection *gc = (GeometryCollection *) g1; return gc->getNumGeometries(); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 0; } catch(...) { return 0; } } //call only on GEOMETRYCOLLECTION or MULTI* const Geometry *GEOSGetGeometryN(Geometry *g1, int n) { try{ const GeometryCollection *gc = (GeometryCollection *) g1; return gc->getGeometryN(n); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch(...) { return NULL; } } //call only on polygon const Geometry *GEOSGetExteriorRing(Geometry *g1) { try{ Polygon *p = (Polygon *) g1; return p->getExteriorRing(); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 0; } catch(...) { return 0; } } //call only on polygon const Geometry *GEOSGetInteriorRingN(Geometry *g1,int n) { try{ Polygon *p = (Polygon *) g1; return p->getInteriorRingN(n); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch(...) { return NULL; } } Geometry *GEOSGetCentroid(Geometry *g) { try{ return g->getCentroid(); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return NULL; } catch(...) { return NULL; } } int GEOSGetSRID(Geometry *g1) { try{ return g1->getSRID(); } catch (GEOSException *ge) { NOTICE_MESSAGE((char *)ge->toString().c_str()); delete ge; return 0; } catch(...) { return 0; } } postgis-0.8.1/postgis_gist_71.c0100664000077300001440000003617207714764650016050 0ustar postgisusers /********************************************************************** * $Id: postgis_gist_71.c,v 1.3 2025/08/08 18:19:20 dblasby Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_gist_71.c,v $ * Revision 1.3 2025/08/08 18:19:20 dblasby * Conformance changes. * Removed junk from postgis_debug.c and added the first run of the long * transaction locking support. (this will change - dont use it) * conformance tests were corrected * some dos cr/lf removed * empty geometries i.e. GEOMETRYCOLLECT(EMPTY) added (with indexing support) * pointN(,1) now returns the first point (used to return 2nd) * * Revision 1.2 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" //Norman Vine found this problem for compiling under cygwin // it defines BYTE_ORDER and LITTLE_ENDIAN #ifdef __CYGWIN__ #include // FOR ENDIAN DEFINES #endif #define SHOW_DIGS_DOUBLE 15 #define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1) // #define DEBUG_GIST //for GIST index typedef char* (*BINARY_UNION)(char*, char*, int*); typedef float (*SIZE_BOX)(char*); typedef Datum (*RDF)(PG_FUNCTION_ARGS); GISTENTRY *ggeometry_compress(PG_FUNCTION_ARGS); GEOMETRYKEY *ggeometry_union(PG_FUNCTION_ARGS); GIST_SPLITVEC * ggeometry_picksplit(PG_FUNCTION_ARGS); bool ggeometry_consistent(PG_FUNCTION_ARGS); float * ggeometry_penalty(PG_FUNCTION_ARGS); bool * ggeometry_same(PG_FUNCTION_ARGS); char * ggeometry_binary_union(char *r1, char *r2, int *sizep); float size_geometrykey( char *pk ); Datum ggeometry_inter(PG_FUNCTION_ARGS); /* ** Common rtree-function (for all ops) */ char * rtree_union(bytea *entryvec, int *sizep, BINARY_UNION bu); float * rtree_penalty(GISTENTRY *origentry, GISTENTRY *newentry, float *result, BINARY_UNION bu, SIZE_BOX sb); GIST_SPLITVEC * rtree_picksplit(bytea *entryvec, GIST_SPLITVEC *v, int keylen, BINARY_UNION bu, RDF interop, SIZE_BOX sb); bool rtree_internal_consistent(BOX *key, BOX *query, StrategyNumber strategy); GISTENTRY *rtree_decompress(PG_FUNCTION_ARGS); //restriction in the GiST && operator Datum postgis_gist_sel(PG_FUNCTION_ARGS) { PG_RETURN_FLOAT8(0.000005); } BOX *convert_box3d_to_box(BOX3D *in) { BOX *out = palloc (sizeof (BOX) ); out->high.x = in->URT.x; out->high.y = in->URT.y; out->low.x = in->LLB.x; out->low.y = in->LLB.y; return out; } PG_FUNCTION_INFO_V1(ggeometry_compress); GISTENTRY *ggeometry_compress(PG_FUNCTION_ARGS) { GISTENTRY *entry=(GISTENTRY*)PG_GETARG_POINTER(0); GISTENTRY *retval; if ( entry->leafkey) { retval = palloc(sizeof(GISTENTRY)); if ( entry->pred ) { GEOMETRY *in; GEOMETRYKEY *r; BOX *thebox; #ifdef DEBUG_GIST2 printf("GIST: ggeometry_compress called on geometry\n"); #endif in = (GEOMETRY*)PG_DETOAST_DATUM(PointerGetDatum(entry->pred)); if (in->nobjs ==0) // this is the EMPTY geometry { //elog(NOTICE,"found an empty geometry"); // dont bother adding this to the index PG_RETURN_POINTER(entry); } r = (GEOMETRYKEY*)palloc( sizeof(GEOMETRYKEY) ); r->size = sizeof(GEOMETRYKEY); r->SRID = in->SRID; thebox = convert_box3d_to_box(&in->bvol); memcpy( (void*)&(r->key), (void*)thebox, sizeof(BOX) ); if ( (char*)in != entry->pred ) { pfree( in ); pfree(thebox); } gistentryinit(*retval, (char*)r, entry->rel, entry->page, entry->offset, sizeof(GEOMETRYKEY),FALSE); } else { gistentryinit(*retval, NULL, entry->rel, entry->page, entry->offset, 0,FALSE); } } else { retval = entry; } return( retval ); } PG_FUNCTION_INFO_V1(ggeometry_consistent); bool ggeometry_consistent(PG_FUNCTION_ARGS) { GISTENTRY *entry = (GISTENTRY*) PG_GETARG_POINTER(0); GEOMETRY *query = (GEOMETRY*) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); BOX *thebox; /* ** if entry is not leaf, use gbox_internal_consistent, ** else use gbox_leaf_consistent */ #ifdef DEBUG_GIST2 printf("GIST: ggeometry_consistent called\n"); #endif if ( ! (entry->pred && query) ) return FALSE; thebox = convert_box3d_to_box( &(query->bvol) ); if( ((GEOMETRYKEY *)(entry->pred))->SRID != query->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs (ggeometry_consistent)\n"); PG_RETURN_BOOL(FALSE); } PG_RETURN_BOOL(rtree_internal_consistent((BOX*)&( ((GEOMETRYKEY *)(entry->pred))->key ), thebox, strategy)); } PG_FUNCTION_INFO_V1(ggeometry_union); GEOMETRYKEY *ggeometry_union(PG_FUNCTION_ARGS) { GEOMETRYKEY *result; #ifdef DEBUG_GIST2 printf("GIST: ggeometry_union called\n"); #endif result = (GEOMETRYKEY*) rtree_union( (bytea*) PG_GETARG_POINTER(0), (int*) PG_GETARG_POINTER(1), ggeometry_binary_union ); return result; } PG_FUNCTION_INFO_V1(ggeometry_penalty); float *ggeometry_penalty(PG_FUNCTION_ARGS) { #ifdef DEBUG_GIST2 printf("GIST: ggeometry_penalty called\n"); #endif return rtree_penalty( (GISTENTRY*) PG_GETARG_POINTER(0), (GISTENTRY*) PG_GETARG_POINTER(1), (float*) PG_GETARG_POINTER(2), ggeometry_binary_union, size_geometrykey ); } PG_FUNCTION_INFO_V1(ggeometry_picksplit); GIST_SPLITVEC *ggeometry_picksplit(PG_FUNCTION_ARGS) { #ifdef DEBUG_GIST2 printf("GIST: ggeometry_picksplit called\n"); #endif return rtree_picksplit( (bytea*)PG_GETARG_POINTER(0), (GIST_SPLITVEC*)PG_GETARG_POINTER(1), sizeof(GEOMETRYKEY), ggeometry_binary_union, ggeometry_inter, size_geometrykey ); } PG_FUNCTION_INFO_V1(ggeometry_same); bool *ggeometry_same(PG_FUNCTION_ARGS) { GEOMETRYKEY *b1 = (GEOMETRYKEY*) PG_GETARG_POINTER(0); GEOMETRYKEY *b2 = (GEOMETRYKEY*) PG_GETARG_POINTER(1); bool *result = (bool*) PG_GETARG_POINTER(2); #ifdef DEBUG_GIST2 printf("GIST: ggeometry_same called\n"); #endif if ( b1 && b2 ) *result = DatumGetBool( DirectFunctionCall2( box_same, PointerGetDatum(&(b1->key)), PointerGetDatum(&(b2->key))) ); else *result = ( b1==NULL && b2==NULL ) ? TRUE : FALSE; return(result); } PG_FUNCTION_INFO_V1(ggeometry_inter); Datum ggeometry_inter(PG_FUNCTION_ARGS) { GEOMETRYKEY *b1 = (GEOMETRYKEY*) PG_GETARG_POINTER(0); GEOMETRYKEY*b2 = (GEOMETRYKEY*) PG_GETARG_POINTER(1); char *interd; #ifdef DEBUG_GIST2 printf("GIST: ggeometry_inter called\n"); #endif interd = DatumGetPointer(DirectFunctionCall2( rt_box_inter, PointerGetDatum( &(b1->key) ), PointerGetDatum( &(b2->key) )) ); if (interd) { GEOMETRYKEY *tmp = (GEOMETRYKEY*)palloc( sizeof(GEOMETRYKEY) ); tmp->size = sizeof(GEOMETRYKEY); memcpy( (void*)&(tmp->key), (void*)interd, sizeof(BOX) ); tmp->SRID = b1->SRID; pfree( interd ); PG_RETURN_POINTER( tmp ); } else PG_RETURN_POINTER( NULL ); } char *ggeometry_binary_union(char *r1, char *r2, int *sizep) { GEOMETRYKEY *retval; #ifdef DEBUG_GIST2 printf("GIST: ggeometry_binary_union called\n"); #endif if ( ! (r1 && r2) ) { if ( r1 ) { retval = (GEOMETRYKEY*)palloc( sizeof(GEOMETRYKEY) ); memcpy( (void*)retval, (void*)r1, sizeof(GEOMETRYKEY) ); *sizep = sizeof(GEOMETRYKEY); } else if ( r2 ) { retval = (GEOMETRYKEY*)palloc( sizeof(GEOMETRYKEY) ); memcpy( (void*)retval, (void*)r2, sizeof(GEOMETRYKEY) ); *sizep = sizeof(GEOMETRYKEY); } else { *sizep = 0; retval = NULL; } } else { BOX *key = (BOX*)DatumGetPointer( DirectFunctionCall2( rt_box_union, PointerGetDatum( &(((GEOMETRYKEY*)r1)->key) ), PointerGetDatum( &(((GEOMETRYKEY*)r2)->key) )) ); retval = (GEOMETRYKEY*)palloc( sizeof(GEOMETRYKEY) ); retval->SRID = ((GEOMETRYKEY *) r1)->SRID; memcpy( (void*)&(retval->key), (void*)key, sizeof(BOX) ); pfree( key ); *sizep = retval->size = sizeof(GEOMETRYKEY); } return (char*)retval; } float size_geometrykey( char *pk ) { #ifdef DEBUG_GIST2 printf("GIST: size_geometrykey called\n"); #endif if ( pk ) { float size; DirectFunctionCall2( rt_box_size, PointerGetDatum( &(((GEOMETRYKEY*)pk)->key) ), PointerGetDatum( &size ) ); return size; } else return 0.0; } char *rtree_union(bytea *entryvec, int *sizep, BINARY_UNION bu) { int numranges, i; char *out, *tmp; #ifdef DEBUG_GIST2 printf("GIST: rtree_union called\n"); #endif numranges = (VARSIZE(entryvec) - VARHDRSZ)/sizeof(GISTENTRY); tmp = (char *)(((GISTENTRY *)(VARDATA(entryvec)))[0]).pred; out = NULL; for (i = 1; i < numranges; i++) { out = (*bu)(tmp, (char *) (((GISTENTRY *)(VARDATA(entryvec)))[i]).pred, sizep); if (i > 1 && tmp) pfree(tmp); tmp = out; } return(out); } float *rtree_penalty(GISTENTRY *origentry, GISTENTRY *newentry, float *result, BINARY_UNION bu, SIZE_BOX sb) { char * ud; float tmp1; int sizep; #ifdef DEBUG_GIST2 printf("GIST: rtree_penalty called\n"); #endif ud = (*bu)( origentry->pred, newentry->pred, &sizep ); tmp1 = (*sb)( ud ); if (ud) pfree(ud); *result = tmp1 - (*sb)( origentry->pred ); return(result); } /* ** The GiST PickSplit method ** We use Guttman's poly time split algorithm */ GIST_SPLITVEC *rtree_picksplit(bytea *entryvec, GIST_SPLITVEC *v, int keylen, BINARY_UNION bu, RDF interop, SIZE_BOX sb) { OffsetNumber i, j; char *datum_alpha, *datum_beta; char *datum_l, *datum_r; char *union_d, *union_dl, *union_dr; char *inter_d; bool firsttime; float size_alpha, size_beta, size_union, size_inter; float size_waste, waste; float size_l, size_r; int nbytes; int sizep; OffsetNumber seed_1 = 0, seed_2 = 0; OffsetNumber *left, *right; OffsetNumber maxoff; #ifdef DEBUG_GIST2 printf("GIST: rtree_picsplit called\n"); #endif maxoff = ((VARSIZE(entryvec) - VARHDRSZ)/sizeof(GISTENTRY)) - 2; nbytes = (maxoff + 2) * sizeof(OffsetNumber); v->spl_left = (OffsetNumber *) palloc(nbytes); v->spl_right = (OffsetNumber *) palloc(nbytes); firsttime = true; waste = 0.0; for (i = FirstOffsetNumber; i < maxoff; i = OffsetNumberNext(i)) { datum_alpha = (char *)(((GISTENTRY *)(VARDATA(entryvec)))[i].pred); for (j = OffsetNumberNext(i); j <= maxoff; j = OffsetNumberNext(j)) { datum_beta = (char *)(((GISTENTRY *)(VARDATA(entryvec)))[j].pred); /* compute the wasted space by unioning these guys */ /* size_waste = size_union - size_inter; */ union_d = (*bu)( datum_alpha, datum_beta, &sizep ); if ( union_d ) { size_union = (*sb)(union_d); pfree(union_d); } else size_union = 0.0; if ( datum_alpha && datum_beta ) { inter_d = DatumGetPointer(DirectFunctionCall2( interop, PointerGetDatum( datum_alpha ), PointerGetDatum( datum_beta )) ); if ( inter_d ) { size_inter = (*sb)(inter_d); pfree(inter_d); } else size_inter = 0.0; } else size_inter = 0.0; size_waste = size_union - size_inter; /* * are these a more promising split that what we've * already seen? */ if (size_waste > waste || firsttime) { waste = size_waste; seed_1 = i; seed_2 = j; firsttime = false; } } } left = v->spl_left; v->spl_nleft = 0; right = v->spl_right; v->spl_nright = 0; if ( ((GISTENTRY *)(VARDATA(entryvec)))[seed_1].pred ) { datum_l = (char*) palloc( keylen ); memcpy( (void*)datum_l, (void*)(((GISTENTRY *)(VARDATA(entryvec)))[seed_1].pred ), keylen ); } else datum_l = NULL; size_l = (*sb)( datum_l ); if ( ((GISTENTRY *)(VARDATA(entryvec)))[seed_2].pred ) { datum_r = (char*) palloc( keylen ); memcpy( (void*)datum_r, (void*)(((GISTENTRY *)(VARDATA(entryvec)))[seed_2].pred ), keylen ); } else datum_r = NULL; size_r = (*sb)( datum_r ); /* * Now split up the regions between the two seeds. An important * property of this split algorithm is that the split vector v * has the indices of items to be split in order in its left and * right vectors. We exploit this property by doing a merge in * the code that actually splits the page. * * For efficiency, we also place the new index tuple in this loop. * This is handled at the very end, when we have placed all the * existing tuples and i == maxoff + 1. */ maxoff = OffsetNumberNext(maxoff); for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) { /* * If we've already decided where to place this item, just * put it on the right list. Otherwise, we need to figure * out which page needs the least enlargement in order to * store the item. */ if (i == seed_1) { *left++ = i; v->spl_nleft++; continue; } else if (i == seed_2) { *right++ = i; v->spl_nright++; continue; } /* okay, which page needs least enlargement? */ datum_alpha = (char *)(((GISTENTRY *)(VARDATA(entryvec)))[i].pred); union_dl = (*bu)( datum_l, datum_alpha, &sizep ); union_dr = (*bu)( datum_r, datum_alpha, &sizep ); size_alpha = (*sb)( union_dl ); size_beta = (*sb)( union_dr ); /* pick which page to add it to */ if (size_alpha - size_l < size_beta - size_r) { pfree(datum_l); pfree(union_dr); datum_l = union_dl; size_l = size_alpha; *left++ = i; v->spl_nleft++; } else { pfree(datum_r); pfree(union_dl); datum_r = union_dr; size_r = size_alpha; *right++ = i; v->spl_nright++; } } *left = *right = FirstOffsetNumber; /* sentinel value, see dosplit() */ v->spl_ldatum = datum_l; v->spl_rdatum = datum_r; return( v ); } bool rtree_internal_consistent(BOX *key, BOX *query, StrategyNumber strategy) { bool retval; #ifdef DEBUG_GIST2 printf("GIST: rtree_internal_consist called\n"); #endif switch(strategy) { case RTLeftStrategyNumber: case RTOverLeftStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_overleft, PointerGetDatum(key), PointerGetDatum(query) ) ); break; case RTOverlapStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_overlap, PointerGetDatum(key), PointerGetDatum(query) ) ); break; case RTOverRightStrategyNumber: case RTRightStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_right, PointerGetDatum(key), PointerGetDatum(query) ) ); break; case RTSameStrategyNumber: case RTContainsStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_contain, PointerGetDatum(key), PointerGetDatum(query) ) ); break; case RTContainedByStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_overlap, PointerGetDatum(key), PointerGetDatum(query) ) ); break; default: retval = FALSE; } return(retval); } PG_FUNCTION_INFO_V1(rtree_decompress); GISTENTRY *rtree_decompress(PG_FUNCTION_ARGS) { return((GISTENTRY*)PG_GETARG_POINTER(0)); } postgis-0.8.1/postgis_gist_72.c0100664000077300001440000003512307714764650016044 0ustar postgisusers /********************************************************************** * $Id: postgis_gist_72.c,v 1.6 2025/08/08 18:19:20 dblasby Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_gist_72.c,v $ * Revision 1.6 2025/08/08 18:19:20 dblasby * Conformance changes. * Removed junk from postgis_debug.c and added the first run of the long * transaction locking support. (this will change - dont use it) * conformance tests were corrected * some dos cr/lf removed * empty geometries i.e. GEOMETRYCOLLECT(EMPTY) added (with indexing support) * pointN(,1) now returns the first point (used to return 2nd) * * Revision 1.5 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * ********************************************************************** * * GiST indexing functions for pgsql >= 7.2 * **********************************************************************/ #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" //Norman Vine found this problem for compiling under cygwin // it defines BYTE_ORDER and LITTLE_ENDIAN #ifdef __CYGWIN__ #include // FOR ENDIAN DEFINES #endif #define SHOW_DIGS_DOUBLE 15 #define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1) //#define DEBUG_GIST //for GIST index typedef char* (*BINARY_UNION)(char*, char*, int*); typedef float (*SIZE_BOX)(char*); typedef Datum (*RDF)(PG_FUNCTION_ARGS); BOX *convert_box3d_to_box(BOX3D *in); Datum ggeometry_compress(PG_FUNCTION_ARGS); Datum ggeometry_consistent(PG_FUNCTION_ARGS); bool rtree_internal_consistent(BOX *key, BOX *query,StrategyNumber strategy); Datum rtree_decompress(PG_FUNCTION_ARGS); Datum gbox_union(PG_FUNCTION_ARGS); Datum gbox_picksplit(PG_FUNCTION_ARGS); Datum gbox_penalty(PG_FUNCTION_ARGS); Datum gbox_same(PG_FUNCTION_ARGS); static float size_box(Datum box); int debug = 0; BOX *convert_box3d_to_box(BOX3D *in) { BOX *out = palloc (sizeof (BOX) ); out->high.x = in->URT.x; out->high.y = in->URT.y; out->low.x = in->LLB.x; out->low.y = in->LLB.y; return out; } PG_FUNCTION_INFO_V1(ggeometry_compress); Datum ggeometry_compress(PG_FUNCTION_ARGS) { GISTENTRY *entry=(GISTENTRY*)PG_GETARG_POINTER(0); GISTENTRY *retval; if ( entry->leafkey) { retval = palloc(sizeof(GISTENTRY)); if ( DatumGetPointer(entry->key) != NULL ) { GEOMETRY *in; BOX *r; #ifdef DEBUG_GIST elog(NOTICE,"GIST: ggeometry_compress called on geometry\n"); fflush( stdout ); #endif in = (GEOMETRY*)PG_DETOAST_DATUM( entry->key ); if (in->nobjs ==0) // this is the EMPTY geometry { //elog(NOTICE,"found an empty geometry"); // dont bother adding this to the index PG_RETURN_POINTER(entry); } else { r = convert_box3d_to_box(&in->bvol); if ( in != (GEOMETRY*)DatumGetPointer(entry->key) ) { pfree( in ); } gistentryinit(*retval, PointerGetDatum(r), entry->rel, entry->page, entry->offset, sizeof(BOX), FALSE); } } else { gistentryinit(*retval, (Datum) 0, entry->rel, entry->page, entry->offset, 0,FALSE); } } else { retval = entry; } PG_RETURN_POINTER(retval); } PG_FUNCTION_INFO_V1(ggeometry_consistent); Datum ggeometry_consistent(PG_FUNCTION_ARGS) { GISTENTRY *entry = (GISTENTRY*) PG_GETARG_POINTER(0); GEOMETRY *query = (GEOMETRY*) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); BOX *thebox; bool result; /* ** if entry is not leaf, use gbox_internal_consistent, ** else use gbox_leaf_consistent */ #ifdef DEBUG_GIST elog(NOTICE,"GIST: ggeometry_consistent called\n"); fflush( stdout ); #endif if ( ! (DatumGetPointer(entry->key) != NULL && query) ) PG_RETURN_BOOL(FALSE); thebox = convert_box3d_to_box( &(query->bvol) ); result = rtree_internal_consistent((BOX *) DatumGetPointer(entry->key), thebox, strategy ); PG_FREE_IF_COPY(query, 1); PG_RETURN_BOOL(result); } bool rtree_internal_consistent(BOX *key, BOX *query, StrategyNumber strategy) { bool retval; #ifdef DEBUG_GIST elog(NOTICE,"GIST: rtree_internal_consist called\n"); fflush( stdout ); #endif switch(strategy) { case RTLeftStrategyNumber: case RTOverLeftStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_overleft, PointerGetDatum(key), PointerGetDatum(query) ) ); break; case RTOverlapStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_overlap, PointerGetDatum(key), PointerGetDatum(query) ) ); break; case RTOverRightStrategyNumber: case RTRightStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_right, PointerGetDatum(key), PointerGetDatum(query) ) ); break; case RTSameStrategyNumber: case RTContainsStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_contain, PointerGetDatum(key), PointerGetDatum(query) ) ); break; case RTContainedByStrategyNumber: retval = DatumGetBool( DirectFunctionCall2( box_overlap, PointerGetDatum(key), PointerGetDatum(query) ) ); break; default: retval = FALSE; } return(retval); } PG_FUNCTION_INFO_V1(rtree_decompress); Datum rtree_decompress(PG_FUNCTION_ARGS) { PG_RETURN_POINTER(PG_GETARG_POINTER(0)); } /* ** The GiST Union method for boxes ** returns the minimal bounding box that encloses all the entries in entryvec */ PG_FUNCTION_INFO_V1(gbox_union); Datum gbox_union(PG_FUNCTION_ARGS) { bytea *entryvec = (bytea *) PG_GETARG_POINTER(0); int *sizep = (int *) PG_GETARG_POINTER(1); int numranges, i; BOX *cur, *pageunion; #ifdef DEBUG_GIST elog(NOTICE,"GIST: gbox_union called\n"); fflush( stdout ); #endif numranges = (VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY); pageunion = (BOX *) palloc(sizeof(BOX)); cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[0].key); memcpy((void *) pageunion, (void *) cur, sizeof(BOX)); for (i = 1; i < numranges; i++) { cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[i].key); if (pageunion->high.x < cur->high.x) pageunion->high.x = cur->high.x; if (pageunion->low.x > cur->low.x) pageunion->low.x = cur->low.x; if (pageunion->high.y < cur->high.y) pageunion->high.y = cur->high.y; if (pageunion->low.y > cur->low.y) pageunion->low.y = cur->low.y; } *sizep = sizeof(BOX); PG_RETURN_POINTER(pageunion); } /* ** The GiST Penalty method for boxes ** As in the R-tree paper, we use change in area as our penalty metric */ PG_FUNCTION_INFO_V1(gbox_penalty); Datum gbox_penalty(PG_FUNCTION_ARGS) { GISTENTRY *origentry = (GISTENTRY *) PG_GETARG_POINTER(0); GISTENTRY *newentry = (GISTENTRY *) PG_GETARG_POINTER(1); float *result = (float *) PG_GETARG_POINTER(2); Datum ud; float tmp1; #ifdef DEBUG_GIST elog(NOTICE,"GIST: gbox_penalty called\n"); fflush( stdout ); #endif ud = DirectFunctionCall2(rt_box_union, origentry->key, newentry->key); tmp1 = size_box(ud); if (DatumGetPointer(ud) != NULL) pfree(DatumGetPointer(ud)); *result = tmp1 - size_box(origentry->key); PG_RETURN_POINTER(result); } typedef struct { BOX *key; int pos; } KBsort; static int compare_KB(const void* a, const void* b) { BOX *abox = ((KBsort*)a)->key; BOX *bbox = ((KBsort*)b)->key; float sa = (abox->high.x - abox->low.x) * (abox->high.y - abox->low.y); float sb = (bbox->high.x - bbox->low.x) * (bbox->high.y - bbox->low.y); if ( sa==sb ) return 0; return ( sa>sb ) ? 1 : -1; } /* ** The GiST PickSplit method ** New linear algorithm, see 'New Linear Node Splitting Algorithm for R-tree', ** C.H.Ang and T.C.Tan */ PG_FUNCTION_INFO_V1(gbox_picksplit); Datum gbox_picksplit(PG_FUNCTION_ARGS) { bytea *entryvec = (bytea *) PG_GETARG_POINTER(0); GIST_SPLITVEC *v = (GIST_SPLITVEC *) PG_GETARG_POINTER(1); OffsetNumber i; OffsetNumber *listL, *listR, *listB, *listT; BOX *unionL, *unionR, *unionB, *unionT; int posL, posR, posB, posT; BOX pageunion; BOX *cur; char direction = ' '; bool allisequal = true; OffsetNumber maxoff; int nbytes; #ifdef DEBUG_GIST elog(NOTICE,"GIST: gbox_picksplit called\n"); fflush( stdout ); #endif posL = posR = posB = posT = 0; maxoff = ((VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY)) - 1; cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[FirstOffsetNumber].key); memcpy((void *) &pageunion, (void *) cur, sizeof(BOX)); /* find MBR */ for (i = OffsetNumberNext(FirstOffsetNumber); i <= maxoff; i = OffsetNumberNext(i)) { cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[i].key); if ( allisequal == true && ( pageunion.high.x != cur->high.x || pageunion.high.y != cur->high.y || pageunion.low.x != cur->low.x || pageunion.low.y != cur->low.y ) ) allisequal = false; if (pageunion.high.x < cur->high.x) pageunion.high.x = cur->high.x; if (pageunion.low.x > cur->low.x) pageunion.low.x = cur->low.x; if (pageunion.high.y < cur->high.y) pageunion.high.y = cur->high.y; if (pageunion.low.y > cur->low.y) pageunion.low.y = cur->low.y; } nbytes = (maxoff + 2) * sizeof(OffsetNumber); listL = (OffsetNumber *) palloc(nbytes); listR = (OffsetNumber *) palloc(nbytes); unionL = (BOX *) palloc(sizeof(BOX)); unionR = (BOX *) palloc(sizeof(BOX)); if (allisequal) { cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[OffsetNumberNext(FirstOffsetNumber)].key); if (memcmp((void *) cur, (void *) &pageunion, sizeof(BOX)) == 0) { v->spl_left = listL; v->spl_right = listR; v->spl_nleft = v->spl_nright = 0; memcpy((void *) unionL, (void *) &pageunion, sizeof(BOX)); memcpy((void *) unionR, (void *) &pageunion, sizeof(BOX)); for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) { if (i <= (maxoff - FirstOffsetNumber + 1) / 2) { v->spl_left[v->spl_nleft] = i; v->spl_nleft++; } else { v->spl_right[v->spl_nright] = i; v->spl_nright++; } } v->spl_ldatum = BoxPGetDatum(unionL); v->spl_rdatum = BoxPGetDatum(unionR); PG_RETURN_POINTER(v); } } listB = (OffsetNumber *) palloc(nbytes); listT = (OffsetNumber *) palloc(nbytes); unionB = (BOX *) palloc(sizeof(BOX)); unionT = (BOX *) palloc(sizeof(BOX)); #define ADDLIST( list, unionD, pos, num ) do { \ if ( pos ) { \ if ( unionD->high.x < cur->high.x ) unionD->high.x = cur->high.x; \ if ( unionD->low.x > cur->low.x ) unionD->low.x = cur->low.x; \ if ( unionD->high.y < cur->high.y ) unionD->high.y = cur->high.y; \ if ( unionD->low.y > cur->low.y ) unionD->low.y = cur->low.y; \ } else { \ memcpy( (void*)unionD, (void*) cur, sizeof( BOX ) ); \ } \ list[pos] = num; \ (pos)++; \ } while(0) for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) { cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[i].key); if (cur->low.x - pageunion.low.x < pageunion.high.x - cur->high.x) ADDLIST(listL, unionL, posL,i); else ADDLIST(listR, unionR, posR,i); if (cur->low.y - pageunion.low.y < pageunion.high.y - cur->high.y) ADDLIST(listB, unionB, posB,i); else ADDLIST(listT, unionT, posT,i); } /* bad disposition, sort by ascending and resplit */ if ( (posR==0 || posL==0) && (posT==0 || posB==0) ) { KBsort *arr = (KBsort*)palloc( sizeof(KBsort) * maxoff ); posL = posR = posB = posT = 0; for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) { arr[i-1].key = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[i].key); arr[i-1].pos = i; } qsort( arr, maxoff, sizeof(KBsort), compare_KB ); for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) { cur = arr[i-1].key; if (cur->low.x - pageunion.low.x < pageunion.high.x - cur->high.x) ADDLIST(listL, unionL, posL,arr[i-1].pos); else if ( cur->low.x - pageunion.low.x == pageunion.high.x - cur->high.x ) { if ( posL>posR ) ADDLIST(listR, unionR, posR,arr[i-1].pos); else ADDLIST(listL, unionL, posL,arr[i-1].pos); } else ADDLIST(listR, unionR, posR,arr[i-1].pos); if (cur->low.y - pageunion.low.y < pageunion.high.y - cur->high.y) ADDLIST(listB, unionB, posB,arr[i-1].pos); else if ( cur->low.y - pageunion.low.y == pageunion.high.y - cur->high.y ) { if ( posB>posT ) ADDLIST(listT, unionT, posT,arr[i-1].pos); else ADDLIST(listB, unionB, posB,arr[i-1].pos); } else ADDLIST(listT, unionT, posT,arr[i-1].pos); } pfree(arr); } /* which split more optimal? */ if (Max(posL, posR) < Max(posB, posT)) direction = 'x'; else if (Max(posL, posR) > Max(posB, posT)) direction = 'y'; else { Datum interLR = DirectFunctionCall2(rt_box_inter, BoxPGetDatum(unionL), BoxPGetDatum(unionR)); Datum interBT = DirectFunctionCall2(rt_box_inter, BoxPGetDatum(unionB), BoxPGetDatum(unionT)); float sizeLR, sizeBT; sizeLR = size_box(interLR); sizeBT = size_box(interBT); if (sizeLR < sizeBT) direction = 'x'; else direction = 'y'; } if (direction == 'x') { pfree(unionB); pfree(listB); pfree(unionT); pfree(listT); v->spl_left = listL; v->spl_right = listR; v->spl_nleft = posL; v->spl_nright = posR; v->spl_ldatum = BoxPGetDatum(unionL); v->spl_rdatum = BoxPGetDatum(unionR); } else { pfree(unionR); pfree(listR); pfree(unionL); pfree(listL); v->spl_left = listB; v->spl_right = listT; v->spl_nleft = posB; v->spl_nright = posT; v->spl_ldatum = BoxPGetDatum(unionB); v->spl_rdatum = BoxPGetDatum(unionT); } PG_RETURN_POINTER(v); } /* ** Equality method */ PG_FUNCTION_INFO_V1(gbox_same); Datum gbox_same(PG_FUNCTION_ARGS) { BOX *b1 = (BOX *) PG_GETARG_POINTER(0); BOX *b2 = (BOX *) PG_GETARG_POINTER(1); bool *result = (bool *) PG_GETARG_POINTER(2); #ifdef DEBUG_GIST elog(NOTICE,"GIST: gbox_same called\n"); fflush( stdout ); #endif if (b1 && b2) *result = DatumGetBool(DirectFunctionCall2(box_same, PointerGetDatum(b1), PointerGetDatum(b2))); else *result = (b1 == NULL && b2 == NULL) ? TRUE : FALSE; PG_RETURN_POINTER(result); } static float size_box(Datum box) { #ifdef DEBUG_GIST elog(NOTICE,"GIST: size_box called\n"); fflush( stdout ); #endif if (DatumGetPointer(box) != NULL) { float size; DirectFunctionCall2(rt_box_size, box, PointerGetDatum(&size)); return size; } else return 0.0; } postgis-0.8.1/postgis_inout.c0100664000077300001440000033116407766401057015724 0ustar postgisusers /********************************************************************** * $Id: postgis_inout.c,v 1.35 2025/12/12 18:00:15 strk Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_inout.c,v $ * Revision 1.35 2025/12/12 18:00:15 strk * reverted make_line patch, patched size_subobject instead - the reported bug was caused to their inconsistency * * Revision 1.34 2025/12/12 14:39:04 strk * Fixed a bug in make_line allocating less memory then required * * Revision 1.33 2025/12/12 12:03:30 strk * More debugging output, some code cleanup. * * Revision 1.32 2025/12/09 11:58:42 strk * Final touch to wkb binary input function * * Revision 1.31 2025/12/09 11:13:41 strk * WKB_recv: set StringInfo cursor to the end of StringInfo buf as required by postgres backend * * Revision 1.30 2025/12/08 17:57:36 strk * Binary WKB input function built only when USE_VERSION > 73. Making some modifications based on reported failures * * Revision 1.29 2025/11/28 11:06:49 strk * Added WKB_recv function for binary WKB input * * Revision 1.28 2025/10/06 18:09:08 dblasby * Fixed typo in add_to_geometry(). With very poorly aligned sub-objects, it * wouldnt allocate enough memory. Fixed it so its pesimistic and will allocate * enough memory. * * Revision 1.27 2025/08/22 17:40:11 dblasby * fixed geometry_in('SRID={no ;}'). * * Revision 1.26 2025/08/21 16:22:09 dblasby * added patch from strk@freek.keybit.net for PG_NARGS() not being in 7.2 * * Revision 1.25 2025/08/08 18:19:20 dblasby * Conformance changes. * Removed junk from postgis_debug.c and added the first run of the long * transaction locking support. (this will change - dont use it) * conformance tests were corrected * some dos cr/lf removed * empty geometries i.e. GEOMETRYCOLLECT(EMPTY) added (with indexing support) * pointN(,1) now returns the first point (used to return 2nd) * * Revision 1.24 2025/08/06 19:31:18 dblasby * Added the WKB parser. Added all the functions like * PolyFromWKB(,[]). * * Added all the functions like PolyFromText(,[]) * * Minor problem in GEOS library fixed. * * Revision 1.23 2025/07/25 17:08:37 pramsey * Moved Cygwin endian define out of source files into postgis.h common * header file. * * Revision 1.22 2025/07/08 18:35:54 dblasby * changed asbinary_specify() so that it is more aware of TEXT being * un-terminated. * * this is a modified patch from David Garnier . * * Revision 1.21 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #if USE_VERSION > 73 # include "lib/stringinfo.h" // for WKB binary input #endif #include "utils/elog.h" #define SHOW_DIGS_DOUBLE 15 #define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1) // #define DEBUG_GIST //#define DEBUG_GIST2 #define WKB3DOFFSET 0x80000000 void swap_char(char *a,char *b) { char c; c = *a; *a=*b; *b=c; } void flip_endian_double(char *d) { swap_char(d+7, d); swap_char(d+6, d+1); swap_char(d+5, d+2); swap_char(d+4, d+3); } void flip_endian_int32(char *i) { swap_char (i+3,i); swap_char (i+2,i+1); } //takes a point and sticks it at the end of a string void print_point(char *result, POINT3D *pt,bool is3d) { char temp[MAX_DIGS_DOUBLE*3 +6]; if ( (pt == NULL) || (result == NULL) ) return; if (is3d) sprintf(temp, "%.15g %.15g %.15g", pt->x,pt->y,pt->z); else sprintf(temp, "%.15g %.15g", pt->x,pt->y); strcat(result,temp); } //result MUST BE null terminated (or result[0] = 0) void print_many_points(char *result, POINT3D *pt ,int npoints, bool is3d) { int u; result += strlen(result); if (is3d) { for (u=0;u 2 (2nd list is not included) int numb_points_in_list(char *str) { bool keep_going; int points_found = 1; //no "," if only one point (and last point) // # points = 1 + numb of "," if ( (str == NULL) || (str[0] == 0) ) { return 0; //either null string or empty string } //look ahead for the "(" str = strchr(str,'(') ; if ( (str == NULL) || (str[1] == 0) ) // str[0] = '('; { return 0; //either didnt find "(" or its at the end of the string } keep_going = TRUE; while (keep_going) { str=strpbrk(str,",)"); // look for a "," or ")" keep_going = (str != NULL); if (keep_going) // found a , or ) { if (str[0] == ')') { //finished return points_found; } else //str[0] = "," { points_found++; str++; //move 1 char forward } } } return points_found; // technically it should return an error. } //Actually parse the points in a list // "(1 2 3, 4 5 6),(7 8, 9 10, 11 12 13)" => // points[0] = {1,2,3} and points[1] = {4,5,6} // (2nd list is not parsed) // // parse at most max_points (points should already have enough space) // if any of the points are 3d, is3d is set to true, otherwise its untouched. // 2d points have z=0.0 // // returns true if everything parses okay, otherwise false bool parse_points_in_list(char *str, POINT3D *points, int32 max_points, bool *is3d) { bool keep_going; int numb_found= 0; int num_entities; if ( (str == NULL) || (str[0] == 0) || (max_points <0) || (points == NULL) ) { return FALSE; //either null string or empty string or other problem } if (max_points == 0) return TRUE; //ask for nothing, get nothing //look ahead for the "(" str = strchr(str,'(') ; if ( (str == NULL) || (str[1] == 0) ) // str[0] = '('; { return FALSE; //either didnt find "(" or its at the end of the string } str++; //move forward one char keep_going = TRUE; while (keep_going) { //attempt to get the point num_entities = sscanf(str,"%le %le %le", &(points[numb_found].x), &(points[numb_found].y), &(points[numb_found].z)); if (num_entities !=3) { if (num_entities !=2 ) { elog(ERROR, "geom3d: parse_points_in_list() on invalid point"); return FALSE; //error } else { points[numb_found].z = 0.0; //2d (only found x,y - set z =0.0) } } else { *is3d = TRUE; //found 3 entites (x,y,z) } numb_found++; str=strpbrk(str,",)"); // look for a "," or ")" if (str != NULL) str++; keep_going = ( (str != NULL) && (str[0] != ')' ) && (numb_found < max_points) ); } return TRUE; } //Actually parse the points in a list // "(1 2 3, 4 5 6),(7 8, 9 10, 11 12 13)" => // points[0] = {1,2,3} and points[1] = {4,5,6} // (2nd list is not parsed) // // parse at most max_points (points should already have enough space) // if any of the points are 3d, is3d is set to true, otherwise its untouched. // 2d points have z=0.0 // // returns true if everything parses okay, otherwise false // // THIS IS EXACTLY the same as parse_points_in_list(), but returns FALSE if // the number of points parsed is != max_points bool parse_points_in_list_exact(char *str, POINT3D *points, int32 max_points, bool *is3d) { bool keep_going; int numb_found= 0; char *end_of_double; if ( (str == NULL) || (str[0] == 0) || (max_points <0) || (points == NULL) ) { return FALSE; //either null string or empty string or other problem } if (max_points == 0) return TRUE; //ask for nothing, get nothing //look ahead for the "(" str = strchr(str,'(') ; if ( (str == NULL) || (str[1] == 0) ) // str[0] = '('; { return FALSE; //either didnt find "(" or its at the end of the string } str++; //move forward one char keep_going = TRUE; while (keep_going) { //attempt to get the point //scanf is slow, so we use strtod() points[numb_found].x = strtod(str,&end_of_double); if (end_of_double == str) { return FALSE; //error occured (nothing parsed) } str = end_of_double; points[numb_found].y = strtod(str,&end_of_double); if (end_of_double == str) { return FALSE; //error occured (nothing parsed) } str = end_of_double; points[numb_found].z = strtod(str,&end_of_double); //will be zero if error occured if (!(end_of_double == str)) { *is3d = TRUE; //found 3 entites (x,y,z) } str = end_of_double; numb_found++; str=strpbrk(str,",)"); // look for a "," or ")" if (str != NULL) str++; keep_going = ( (str != NULL) && (str[0] != ')' ) && (numb_found < max_points) ); } return (numb_found == max_points); } // Find the number of sub lists in a list // ( (..),(..),(..) ) -> 3 // ( ( (..),(..) ), ( (..) )) -> 2 // ( ) -> 0 // scan through the list, for every "(", depth (nesting) increases by 1 // for every ")", depth (nesting) decreases by 1 // if find a "(" at depth 1, then there is a sub list // // example: // "(((..),(..)),((..)))" //depth 12333223332112333210 // + + increase here int find_outer_list_length(char *str) { int current_depth = 0; int numb_lists = 0; while ( (str != NULL) && (str[0] != 0) ) { str=strpbrk(str,"()"); //look for "(" or ")" if (str != NULL) { if (str[0] == '(') { current_depth++; if (current_depth == 2) numb_lists ++; } if (str[0] == ')') { current_depth--; if (current_depth == 0) return numb_lists ; } str++; } } return numb_lists ; // probably should give an error } // Find out how many points are in each sublist, put the result in the array npoints[] // (for at most max_list sublists) // // ( (L1),(L2),(L3) ) --> npoints[0] = points in L1, // npoints[1] = points in L2, // npoints[2] = points in L3 // // We find these by, again, scanning through str looking for "(" and ")" // to determine the current depth. We dont actually parse the points. bool points_per_sublist( char *str, int32 *npoints, int32 max_lists) { //scan through, noting depth and ","s int current_depth = 0; int current_list =-1 ; while ( (str != NULL) && (str[0] != 0) ) { str=strpbrk(str,"(),"); //find "(" or ")" or "," if (str != NULL) { if (str[0] == '(') { current_depth++; if (current_depth == 2) { current_list ++; if (current_list >=max_lists) return TRUE; // too many sub lists found npoints[current_list] = 1; } // might want to return an error if depth>2 } if (str[0] == ')') { current_depth--; if (current_depth == 0) return TRUE ; } if (str[0] == ',') { if (current_depth==2) { npoints[current_list] ++; } } str++; } } return TRUE ; // probably should give an error } //simple scan-forward to find the next "(" at the same level // ( (), (),(), ),(... // + return this location char *scan_to_same_level(char *str) { //scan forward in string looking for at "(" at the same level // as the one its already pointing at int current_depth = 0; bool first_one=TRUE; while ( (str != NULL) && (str[0] != 0) ) { str=strpbrk(str,"()"); if (str != NULL) { if (str[0] == '(') { if (!(first_one)) { if (current_depth == 0) return str; } else first_one = FALSE; //ignore the first opening "(" current_depth++; } if (str[0] == ')') { current_depth--; } str++; } } return str ; // probably should give an error } /* * BOX3D_in - takes a string rep of BOX3D and returns internal rep * * example: * "BOX3D(x1 y1 z1,x2 y2 z2)" * or "BOX3D(x1 y1,x2 y2)" z1 and z2 = 0.0 * * */ BOX3D *parse_box3d(char *str) { BOX3D *bbox = (BOX3D *) palloc(sizeof(BOX3D)); bool junk_bool; bool okay; int npoints; //verify that there are exactly two points //strip leading spaces while (isspace((unsigned char) *str)) str++; //printf( "box3d_in gets '%s'\n",str); if (strstr(str,"BOX3D") != str ) { elog(ERROR,"BOX3D parser - doesnt start with BOX3D"); pfree(bbox); return NULL; } if ((npoints = numb_points_in_list(str)) != 2) { //printf("npoints in this bbox is %i, should be 2\n",npoints); elog(ERROR,"BOX3D parser - number of points should be exactly 2"); pfree(bbox); return NULL; } //want to parse two points, and dont care if they are 2d or 3d okay = parse_points_in_list(str, &(bbox->LLB), 2, &junk_bool); if (okay == 0) { elog(ERROR,"box3d: couldnt parse: '%s'\n",str); pfree(bbox); return NULL; } //validate corners so LLB is mins of x,y,z and URT is maxs x,y,z if ( bbox->LLB.x > bbox->URT.x) { swap ( &bbox->LLB.x , &bbox->URT.x ) ; } if ( bbox->LLB.y > bbox->URT.y) { swap ( &bbox->LLB.y , &bbox->URT.y ); } if ( bbox->LLB.z > bbox->URT.z) { swap ( &bbox->LLB.z , &bbox->URT.z ) ; } return bbox; } PG_FUNCTION_INFO_V1(box3d_in); Datum box3d_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); BOX3D *bbox ; bbox = parse_box3d(str); if (bbox != NULL) PG_RETURN_POINTER(bbox); else PG_RETURN_NULL(); } /* * Takes an internal rep of a BOX3D and returns a string rep. * * example: * "BOX3D(LLB.x LLB.y LLB.z, URT.x URT.y URT.z)" */ PG_FUNCTION_INFO_V1(box3d_out); Datum box3d_out(PG_FUNCTION_ARGS) { BOX3D *bbox = (BOX3D *) PG_GETARG_POINTER(0); int size; char *result; if (bbox == NULL) { result = palloc(5); strcat(result,"NULL"); PG_RETURN_CSTRING(result); } size = MAX_DIGS_DOUBLE*6+5+2+4+5+1; result = (char *) palloc(size); //double digits+ "BOX3D"+ "()" + commas +null sprintf(result, "BOX3D(%.15g %.15g %.15g,%.15g %.15g %.15g)", bbox->LLB.x,bbox->LLB.y,bbox->LLB.z, bbox->URT.x,bbox->URT.y,bbox->URT.z); PG_RETURN_CSTRING(result); } /*************************************************************** * these functions return the number of sub-objects inside a * sub-portion of a string. * * LINESTRING(), POLYGON(), POINT() allways have 1 sub object * * MULTIPOLYGON() MULTILINESTRING() MULTIPOINT() will have a variable number of sub-parts * ex MULTIPOINT(1 1 1, 2 2 2,3 3 3,4 4 4) -->4 because there are 4 points in it * * GEOMETRYCOLLECTION() - need to look at each sub-object in the collection ***************************************************************/ //number of object inside a point int objects_inside_point(char *str) { return 1; //trivial points always have 1 point in them } //number of object inside a line int objects_inside_line(char *str) { return 1; //trivial lines always have 1 line in them } //number of object inside a polygon int objects_inside_polygon(char *str) { return 1; //trivial polygon always have 1 polygon in them } //bit more complicated - need to find out how many points are in this entity int objects_inside_multipoint(char *str) { return numb_points_in_list(str); } //bit more complicated - need to find out how many lines are in this entity int objects_inside_multiline(char *str) { return find_outer_list_length(str); } //bit more complicated - need to find out how many polygons are in this entity int objects_inside_multipolygon(char *str) { return find_outer_list_length(str); } //This one is more complicated, we have to look at each of the sub-object inside // the collection. // result = sum of ( number of objects in each of the collection's sub-objects ) // // EX: 'GEOMETRYCOLLECTION( POINT(1 2 3), // POINT (4 5 6) ), // LINESTRING(3 4 5,1 2 3,5 6 0), // MULTILINESTRING((3 4 5,1 2 3,5 6 0)), // MULTIPOINT(1 2 3), // MULTILINESTRING((3 4 5,1 2 3,5 6 0),(1 2 0,4 5 0,6 7 0,99 99 0)), // MULTIPOLYGON (( (3 4 5,1 2 3,5 6),(1 2, 4 5, 6 7) ), ( (11 11, 22 22, 33 33),(44 44, 55 55, 66 66) ) )' // // # object = # of objs in POINT (1) + # of objs in POINT (1) + # of objs in LINESTRING (1) // + # of objs in MULTILINESTRING (1) + # of objs in MULTIPOINT (1) // + # of objs in MULTILINESTRING (1) + # of objs in MULTIPOLYGON (2) int objects_inside_collection(char *str) { int tally = 0; int sub_size = 0; //skip past the "geometrycollection" at begining of string str += 18; if (strstr(str, "GEOMETRYCOLLECTION") != NULL) return -1; // collection inside collection; bad boy! //we scan to the first letter, then pass it to objects inside // to find out how many sub-objects there are. Then move to // the next object while ( str != NULL) { //scan for a letter (all objs start with M, P, or L str = strpbrk(str,"MPL"); //search for MULTI*, POLY*, POIN* if (str != NULL) { //object found sub_size = objects_inside(str); //how many in this object if (sub_size == -1) return -1;//relay error tally += sub_size; // running total //need to move to next item // by scanning past any letters str = strchr(str,'('); //need to move to the next sub-object } } return tally; } // Find the # of sub-objects inside the geometry // Just pass it off to the other functions int objects_inside(char *str) { char *parenth; char *loc; parenth = strchr(str,'('); if (parenth == NULL) return -1; //invalid string // look only at the begining of the string // the order of these "if" are important! if ( ((loc = strstr(str, "GEOMETRYCOLLECTION")) != NULL) && (loc < parenth) ) return objects_inside_collection(str); // do multi before base types (MULTIPOINT has the string "POINT" in it) if (((loc = strstr(str,"MULTIPOINT")) != NULL) && (loc < parenth) ) return objects_inside_multipoint(str); if (((loc = strstr(str,"MULTILINESTRING") )!= NULL) && (loc < parenth) ) return objects_inside_multiline(str); if (((loc = strstr(str,"MULTIPOLYGON")) != NULL) && (loc < parenth) ) return objects_inside_multipolygon(str); //base types if (((loc = strstr(str,"POINT")) != NULL) && (loc < parenth) ) return objects_inside_point(str); if (((loc = strstr(str,"LINESTRING")) != NULL) && (loc < parenth) ) return objects_inside_line(str); if (((loc = strstr(str,"POLYGON")) != NULL) && (loc < parenth) ) return objects_inside_polygon(str); return -1; //invalid } /**************************************************************************** * These functions actually parse the objects in the strings * They all have arguments: * obj_size[] -- size (in bytes) of each the sub-objects * objs[][] -- list of pointers to the actual objects * obj_types -- type of the sub-obj (see postgis.h) * nobjs -- max number of sub-obj * str -- actual string to parse from (start at begining) * offset -- which sub-object # are we dealing with * is3d -- are any of the points in the object 3d? * * basically, each of the functions will: * + parse str to find the information required * + allocate a new obj(s) and place it/them in objs to hold this info * + set the obj_size for this/these sub-object * + set the obj_type for this/these sub-object * + increase offset so the next objects will go in the correct place * + set is3d if there are any 3d points in the sub-object * + return FALSE if an error occured ****************************************************************************/ //parse a point - make a new POINT3D object bool parse_objects_inside_point(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d) { bool result; if (*offset >= nobjs) return FALSE; //too many objs found objs[*offset] = palloc (sizeof(POINT3D) ); memset(objs[*offset], 0, sizeof(POINT3D) ); // zero memory obj_types[*offset] = POINTTYPE; obj_size[*offset] = sizeof(POINT3D); str = strchr(str,'('); if (str == NULL) return FALSE; // parse error //printf("about to parse the point\n"); result = parse_points_in_list_exact(str, (POINT3D*) objs[*offset] , 1, is3d); //printf(" +point parsed\n"); *offset = *offset + 1; return (result); // pass along any parse error } //parse a multipoint object - offset may increase by >1 // multiple sub object may be created bool parse_objects_inside_multipoint(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d) { bool result; int npoints; int t; POINT3D *pts; // first find out how many points are in the multi-point npoints = objects_inside_multipoint(str); if (npoints <0) return FALSE; // error in parsing (should have been caught before) if (npoints ==0) return TRUE; //no points, no nothing if (*offset >= nobjs) return FALSE; //too many objs found dont do anything, relay error str = strchr(str,'('); if (str == NULL) return FALSE; //allocate all the new objects pts = palloc( sizeof(POINT3D) * npoints); for (t=0;t make it two on top of each other if (*offset >= nobjs) return FALSE; //too many objs found //how many points are in this linestring? num_points = numb_points_in_list(str); if (num_points == 0) return FALSE; if (num_points == 1) //not really a line { num_points = 2; add_point = TRUE; } // -1 because object already has 1 point in it objs[*offset] = palloc (sizeof(LINE3D) + sizeof(POINT3D)*(num_points-1) ); memset(objs[*offset], 0, sizeof(LINE3D) + sizeof(POINT3D)*(num_points-1) ); // zero memory obj_types[*offset] = LINETYPE; obj_size[*offset] = sizeof(LINE3D) + sizeof(POINT3D)*(num_points-1) ; str = strchr(str,'('); if (str == NULL) return FALSE; ( (LINE3D *) objs[*offset] )->npoints = num_points; if (add_point) { result = parse_points_in_list_exact(str, &(( (LINE3D*) objs[*offset]) ->points[0]) , num_points-1, is3d); } else { result = parse_points_in_list_exact(str, &(( (LINE3D*) objs[*offset]) ->points[0]) , num_points, is3d); } if (add_point) { memcpy( &(( (LINE3D*) objs[*offset]) ->points[1]) , &(( (LINE3D*) objs[*offset]) ->points[0]) , sizeof(POINT3D) ); } *offset = *offset + 1; return (result); } //parse a multi-line. For each sub-linestring, call the parse_objects_inside_line() function // 'MULTILINESTRING((3 4 5,1 2 3,5 6 0),(1 2 0,4 5 0,6 7 0,99 99 0))' // first scan to the second "(" - this is the begining of the first linestring. // scan it, then move to the second linestring bool parse_objects_inside_multiline(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d) { bool result; int num_lines; int t; //how many lines are there? num_lines = objects_inside_multiline(str); if (num_lines <0) return FALSE; if (num_lines ==0) return TRUE; //can be nothing if (*offset >= nobjs) return FALSE; //too many objs found str= strchr(str,'('); //first one if (str != NULL) str++; str= strchr(str,'('); //2nd one if (str == NULL) return FALSE; // couldnt find it for (t=0;t= nobjs) return FALSE; //too many objs found //find out how many rings there are num_rings = find_outer_list_length(str); if (num_rings <1) return FALSE; // must have at least one ring //allocate space for how many points in each ring npoints = palloc( sizeof(int32) * num_rings); //find out how many points are in each sub-list (ring) result = points_per_sublist(str,npoints, num_rings); //how many points are inside this polygon in total? sum_points =0; for(t=0; t< num_rings ; t++) { sum_points += npoints[t]; if (npoints[t] <3) { elog(ERROR,"polygon has ring with <3 points."); pfree(npoints); return FALSE; } } //now we can allocate the structure // -1 because the POLYGON3D already has space for 1 ring with 1 point // 4 is for possible double-word alignment size = sizeof(POLYGON3D) + sizeof(int32)*(num_rings-1) +4+ sizeof(POINT3D)*(sum_points-1) ; objs[*offset] = palloc (size); memset(objs[*offset], 0, size ); // zero memory polygon = (POLYGON3D *) objs[*offset]; obj_types[*offset] = POLYGONTYPE; obj_size[*offset] = size; str = strchr(str,'('); if (str == NULL) { pfree(npoints); return FALSE; } str++; polygon->nrings = num_rings; pts = (POINT3D *) &(polygon->npoints[num_rings]); //pts[] is just past the end of npoints[] // make sure its double-word aligned pts = (POINT3D *) MAXALIGN(pts); //printf("POLYGON is at %p, size is %i, pts is at %p (%i)\n",objs[*offset],size, pts, ((void *) pts) - ((void *)objs[*offset]) ); //printf("npoints[0] is at %p, num_rings=%i\n", &(((POLYGON3D *) objs[*offset])->npoints[0] ), num_rings ); points_offset = 0; for(t=0;tnpoints[t] = npoints[t]; // set # pts in this ring //use exact because it will screw up otherwise //printf("about to parse the actual points in ring #%i with %i points:\n",t,npoints[t]); result = parse_points_in_list_exact(str, &pts[points_offset], npoints[t], is3d); //printf(" +done parsing points\n"); //printf("1st points in ring is: [%g,%g,%g]\n", pts[points_offset].x ,pts[points_offset].y ,pts[points_offset].z ); if (!(result)) { pfree(npoints); return FALSE; //relay error } //first and last point are the same if (! (FPeq(pts[points_offset].x , pts[points_offset + npoints[t]-1].x ) &&FPeq(pts[points_offset].y , pts[points_offset + npoints[t]-1].y ) &&FPeq(pts[points_offset].z , pts[points_offset + npoints[t]-1].z ) ) ) { elog(ERROR,"polygon has ring where first point != last point"); pfree(npoints); return FALSE; //invalid poly } points_offset += npoints[t]; //where to stick points in the next ring str = strchr(str,'('); // where is the next ring if (str == NULL) { pfree(npoints); return FALSE; //relay parse error } str++; } pfree(npoints); *offset = *offset + 1; return (result); } // MULTIPOLYGON (( (3 4 5,1 2 3,5 6),(1 2, 4 5, 6 7) ), ( (11 11, 22 22, 33 33),(44 44, 55 55, 66 66) ) )' // pass off work to parse_objects_inside_polygon() bool parse_objects_inside_multipolygon(int32 *obj_size,char **objs, int32 *obj_types, int32 nobjs, char *str, int *offset, bool* is3d) { bool result; int num_polys; int t; num_polys = objects_inside_multipolygon(str); //how many polygons are inside me? //printf("parse_objects_inside_multipolygon('%s')\n",str); if (num_polys <0) return FALSE; if (num_polys ==0) return TRUE; //ask for nothing, get nothing if (*offset >= nobjs) return FALSE; //too many objs found str= strchr(str,'('); //first one (begining of list of polys) if (str != NULL) { str++; str= strchr(str,'('); //2nd one (beginning of 1st poly) } if (str == NULL) return FALSE; //relay error for (t=0;tLLB.x = pt->x; the_box->LLB.y = pt->y; the_box->LLB.z = pt->z; the_box->URT.x = pt->x; the_box->URT.y = pt->y; the_box->URT.z = pt->z; return the_box; } // box encloses all the points in all the rings BOX3D *bbox_of_polygon(POLYGON3D *polygon) { BOX3D *the_box ; int numb_points =0,i; POINT3D *pts,*pt; for (i=0; inrings; i++) { numb_points += polygon->npoints[i]; } if (numb_points <1) return NULL; pts = (POINT3D *) ( (char *)&(polygon->npoints[polygon->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); the_box = bbox_of_point(&pts[0]); for (i=1; ix < the_box->LLB.x) the_box->LLB.x = pt->x; if (pt->y < the_box->LLB.y) the_box->LLB.y = pt->y; if (pt->z < the_box->LLB.z) the_box->LLB.z = pt->z; if (pt->x > the_box->URT.x) the_box->URT.x = pt->x; if (pt->y > the_box->URT.y) the_box->URT.y = pt->y; if (pt->z > the_box->URT.z) the_box->URT.z = pt->z; } return the_box; } //box encloses points in line BOX3D *bbox_of_line(LINE3D *line) { BOX3D *the_box; POINT3D *pt; int i; if (line->npoints <1) { return NULL; } the_box = bbox_of_point(&line->points[0]); for (i=1;i< line->npoints; i++) { pt = &line->points[i]; if (pt->x < the_box->LLB.x) the_box->LLB.x = pt->x; if (pt->y < the_box->LLB.y) the_box->LLB.y = pt->y; if (pt->z < the_box->LLB.z) the_box->LLB.z = pt->z; if (pt->x > the_box->URT.x) the_box->URT.x = pt->x; if (pt->y > the_box->URT.y) the_box->URT.y = pt->y; if (pt->z > the_box->URT.z) the_box->URT.z = pt->z; } return the_box; } //merge box a and b (expand b) //if b is null, new one is returned // otherwise b is returned BOX3D *union_box3d(BOX3D *a, BOX3D *b) { if (a==NULL) return NULL; if (b==NULL) { b=(BOX3D*) palloc(sizeof(BOX3D)); memcpy(b,a,sizeof(BOX3D) ); return b; } if (a->LLB.x < b->LLB.x) b->LLB.x = a->LLB.x; if (a->LLB.y < b->LLB.y) b->LLB.y = a->LLB.y; if (a->LLB.z < b->LLB.z) b->LLB.z = a->LLB.z; if (a->URT.x > b->URT.x) b->URT.x = a->URT.x; if (a->URT.y > b->URT.y) b->URT.y = a->URT.y; if (a->URT.z > b->URT.z) b->URT.z = a->URT.z; return b; } BOX3D *bbox_of_geometry(GEOMETRY *geom) { int i; int32 *offsets; char *obj; BOX3D *result=NULL; BOX3D *a_box; //printf("bbox_of_geometry(%p)\n", geom); if (geom->nobjs <1) return NULL; //bbox of 0 objs is 0 //where are the objects living? offsets = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; //for each sub-object for(i=0; inobjs;i++) { obj = (char *) geom +offsets[i] ; if (geom->objType[i] == POINTTYPE) { //printf("box of a point\n"); a_box = bbox_of_point( (POINT3D *) obj); result= union_box3d(a_box ,result); if (a_box != NULL) pfree (a_box); } if (geom->objType[i] == LINETYPE) { //printf("box of a line, # points = %i\n",((LINE3D *) obj)->npoints ); a_box = bbox_of_line( (LINE3D *) obj); result = union_box3d(a_box ,result); if (a_box != NULL) pfree (a_box); } if (geom->objType[i] == POLYGONTYPE) { //printf("box of a polygon\n"); a_box = bbox_of_polygon( (POLYGON3D *) obj); result =union_box3d(a_box ,result); if (a_box != NULL) pfree (a_box); } } return result; } //given wkt and SRID, return a geometry //actually we cheat, postgres will convert the string to a geometry for us... PG_FUNCTION_INFO_V1(geometry_from_text); Datum geometry_from_text(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 SRID; GEOMETRY *result; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; result = (GEOMETRY *) palloc(geom1->size); memcpy(result,geom1, geom1->size); if (result != NULL) { result->SRID = SRID; } else { PG_RETURN_NULL(); } PG_RETURN_POINTER(result); } // Parse a geometry object // // 1. Find information on how many sub-object there are // 2. create a group of sub-object and populate them // 3. make a large structure & populate with all the above info. // // PG_FUNCTION_INFO_V1(geometry_in); Datum geometry_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); GEOMETRY *geometry; BOX3D *the_bbox; int32 nobjs; char **objs; int32 *obj_types; int32 *obj_size; int entire_size; bool is3d = FALSE; bool okay; int next_loc; int32 *offsets; int t; int obj_parse_offset; int nitems; int32 SRID; double scale,offx,offy; BOX3D *mybox; //printf("str=%s\n",str); //trim white while (isspace((unsigned char) *str)) str++; //test to see if it starts with a SRID= SRID = -1; scale = offx = offy = 0; if (strstr(str,"SRID=")) { //its spatially located nitems = sscanf(str,"SRID=%i;",&SRID); if (nitems !=1 ) { //error elog(ERROR,"couldnt parse objects in GEOMETRY (SRID related)"); PG_RETURN_NULL() ; } //delete first part of string str = strchr(str,';'); if (str != NULL) str++; else { elog(ERROR,"couldnt parse objects in GEOMETRY (SRID related - no ';')"); PG_RETURN_NULL() ; } } if (strstr(str,"EMPTY")) { GEOMETRY *result=makeNullGeometry( SRID); if (strstr(str,"MULTIPOLYGON")) result->type = MULTIPOLYGONTYPE; if (strstr(str,"MULTILINESTRING")) result->type = MULTILINETYPE; if (strstr(str,"MULTIPOINT")) result->type = MULTIPOINTTYPE; PG_RETURN_POINTER( result ); } if (strstr(str,"BOX3D") != NULL ) // bbox only { mybox = parse_box3d(str); if (mybox == NULL) PG_RETURN_NULL() ; geometry = (GEOMETRY *) palloc(sizeof(GEOMETRY)); geometry->size = sizeof(GEOMETRY); geometry->type = BBOXONLYTYPE; geometry->nobjs = -1; geometry->SRID = SRID; geometry->scale = 1.0; geometry->offsetX = 0.0; geometry->offsetY = 0.0; memcpy(&(geometry->bvol),mybox, sizeof(BOX3D) ); pfree(mybox); PG_RETURN_POINTER(geometry); } if ((str==NULL) || (strlen(str) == 0) ) { elog(ERROR,"couldnt parse objects in GEOMETRY (null string)\n"); PG_RETURN_NULL() ; } // handle the 2 variants of MULTIPOINT - 'MULTIPOINT(0 0, 1 1)'::geometry and 'MULTIPOINT( (0 0), (1 1))'::geometry; // we cheat - if its the 2nd variant, we replace the internal parethesis with spaces! if (strstr(str,"MULTIPOINT") != NULL ) { //its a multipoint - replace any internal parenthesis with spaces char *first_paren; char *last_paren; char *current_paren; first_paren= index (str,'('); last_paren = rindex(str,')'); if ( (first_paren == NULL) || (last_paren == NULL) || (first_paren >last_paren) ) { elog(ERROR,"couldnt parse objects in GEOMETRY (parenthesis related)\n"); PG_RETURN_NULL() ; } //now we can just got through the string for (current_paren = (first_paren+1); current_paren <(last_paren);current_paren++) { if ( (current_paren[0] ==')') || (current_paren[0]=='(') ) { current_paren[0] = ' '; } } } //elog (NOTICE,"in:%s\n", str); //printf("geometry_in got string ''\n"); nobjs= objects_inside(str); //how many sub-objects if (nobjs <=0) //dont allow zero-object items { elog(ERROR,"couldnt parse objects in GEOMETRY\n"); PG_RETURN_NULL() ; } //printf("geometry_in determins that there are %i sub-objects\n",nobjs); //allocate enough space for info structures objs = palloc(sizeof( char *) * nobjs); memset(objs, 0, sizeof( char *) * nobjs); obj_types = palloc(sizeof(int32) * nobjs); memset(obj_types, 0, sizeof(int32) * nobjs); obj_size = palloc(sizeof(int32) * nobjs); memset(obj_size, 0, sizeof(int32) * nobjs); obj_parse_offset = 0; //start populating obj list at beginning //printf(" +about to parse the objects\n"); okay = parse_objects(obj_size,objs,obj_types,nobjs,str,&obj_parse_offset , &is3d); //printf(" +finished parsing object\n"); if (!(okay) || (obj_parse_offset != nobjs ) ) { //free for (t =0; tsize = entire_size; //set collection type. Need to differentiate between // geometrycollection and (say) multipoint if ( strstr(str, "GEOMETRYCOLLECTION") != NULL ) geometry->type = COLLECTIONTYPE; else { if ( strstr(str, "MULTI") != NULL ) { if (obj_types[0] == POINTTYPE) geometry->type = MULTIPOINTTYPE; if (obj_types[0] == LINETYPE) geometry->type = MULTILINETYPE; if (obj_types[0] == POLYGONTYPE) geometry->type = MULTIPOLYGONTYPE; } else { geometry->type = obj_types[0]; //single object } } geometry->is3d = is3d; //any 3d points found anywhere? geometry->nobjs = nobjs; // sub-objects //copy in type and length info //where to put objects. next_loc will point to (bytes forward) &objData[0] next_loc = ( (char *) &(geometry->objType[0] ) - (char *) geometry); next_loc += sizeof(int32) * 2* nobjs; next_loc = MAXALIGN(next_loc); //where is the offsets array offsets = (int32 *) ( ((char *) &(geometry->objType[0] ))+ sizeof(int32) * nobjs ) ; //printf("structure is at %p, offsets is at %p, next_loc = %i\n",geometry, offsets, next_loc); for (t=0; tobjType[t] = obj_types[t]; //set its type offsets[t] = next_loc; //where is it //printf("copy %i bytes from %p to %p\n", obj_size[t] , objs[t],(char *) geometry + next_loc); memcpy( (char *) geometry + next_loc, objs[t], obj_size[t] ); //put sub-object into object pfree(objs[t]); // free the original object (its redundant) next_loc += obj_size[t]; //where does the next object go? next_loc = MAXALIGN(next_loc); } //free temporary structures pfree(objs); pfree(obj_types); pfree(obj_size); //calculate its bounding volume the_bbox = bbox_of_geometry(geometry); if (the_bbox != NULL) { memcpy( &geometry->bvol, the_bbox, sizeof(BOX3D) ); pfree(the_bbox); } //printf("returning from geometry_in, nobjs = %i\n", nobjs); geometry->SRID = SRID; geometry->scale = scale; geometry->offsetX = offx; geometry->offsetY = offy; PG_RETURN_POINTER(geometry); } PG_FUNCTION_INFO_V1(srid_geom); Datum srid_geom(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); PG_RETURN_INT32(geom1->SRID); } //Take internal rep of geometry, output string in the form of // 'SRID=%i;' ie. 'SRID=5;POINT(1 1)' PG_FUNCTION_INFO_V1(geometry_out); Datum geometry_out(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *wkt; char *result; int len; wkt = geometry_to_text(geom1); len = strlen(wkt) + 6+ 25 + 1; result = palloc(len);//extra space for SRID memset(result, 0, len); //zero everything out sprintf(result,"SRID=%i;%s",geom1->SRID,wkt); pfree(wkt); PG_RETURN_CSTRING(result); } //Take internal rep of geometry, output string PG_FUNCTION_INFO_V1(astext_geometry); Datum astext_geometry(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *wkt; char *result; int len; wkt = geometry_to_text(geom1); //changed so it isnt null terminated (not needed with text) len = strlen(wkt) + 4; result= palloc(len); *((int *) result) = len; memcpy(result +4, wkt, len-4); pfree(wkt); PG_RETURN_CSTRING(result); } //Take internal rep of geometry, output string //takes a GEOMETRY and returns a WKT representation char *geometry_to_text(GEOMETRY *geometry) { char *result; int t,u; int32 *offsets; char *obj; POINT3D *pts; POLYGON3D *polygon; LINE3D *line; POINT3D *point; int pt_off,size; bool briefmode= TRUE; // ie. dont print out "POINT3D(..)", just print out the ".." part bool is3d; bool first_sub_obj = TRUE; bool multi_obj = FALSE; int mem_size,npts; if (geometry->nobjs == 0) { //empty geometry result = (char*) palloc(30); sprintf(result,"GEOMETRYCOLLECTION(EMPTY)"); if (geometry->type == MULTILINETYPE) sprintf(result,"MULTILINESTRING(EMPTY)"); if (geometry->type == MULTIPOINTTYPE) sprintf(result,"MULTIPOINT(EMPTY)"); if (geometry->type == MULTIPOLYGONTYPE) sprintf(result,"MULTIPOLYGON(EMPTY)"); return result; } //printf("in geom_out(%p)\n",geometry); size = 30; //just enough to put in object type result = (char *) palloc(30); mem_size= 30; //try to limit number of repalloc()s if (geometry->type == BBOXONLYTYPE) { mem_size = MAX_DIGS_DOUBLE*6+5+2+4+5+1; pfree(result); result = (char *) palloc(mem_size); //double digits+ "BOX3D"+ "()" + commas +null sprintf(result, "BOX3D(%.15g %.15g %.15g,%.15g %.15g %.15g)", geometry->bvol.LLB.x,geometry->bvol.LLB.y,geometry->bvol.LLB.z, geometry->bvol.URT.x,geometry->bvol.URT.y,geometry->bvol.URT.z); return result; } if (geometry->type == POINTTYPE) { multi_obj = FALSE; sprintf(result, "POINT(" ); } else if (geometry->type == LINETYPE) { multi_obj = FALSE; sprintf(result, "LINESTRING" ); } else if (geometry->type == POLYGONTYPE) { multi_obj = FALSE; sprintf(result, "POLYGON" ); } else if (geometry->type == MULTIPOINTTYPE) { //multiple sub-object need to be put into one object multi_obj = TRUE; sprintf(result, "MULTIPOINT(" ); } else if (geometry->type == MULTILINETYPE) { //multiple sub-object need to be put into one object multi_obj = TRUE; sprintf(result, "MULTILINESTRING(" ); } else if (geometry->type == MULTIPOLYGONTYPE) { //multiple sub-object need to be put into one object multi_obj = TRUE; sprintf(result, "MULTIPOLYGON(" ); } else if (geometry->type == COLLECTIONTYPE) { sprintf(result, "GEOMETRYCOLLECTION(" ); briefmode = FALSE; multi_obj = FALSE; } //where are the objects? offsets = (int32 *) ( ((char *) &(geometry->objType[0] ))+ sizeof(int32) * geometry->nobjs ) ; is3d = geometry->is3d; for(t=0;tnobjs; t++) //for each object { obj = (char *) geometry +offsets[t] ; if (geometry->objType[t] == 1) //POINT { point = (POINT3D *) obj; if (briefmode) //dont need to put in "POINT(" { size +=MAX_DIGS_DOUBLE*3 + 2 +3 ; result = repalloc(result, size ); //make memory bigger if (!(first_sub_obj)) { strcat(result,","); } else { first_sub_obj = FALSE; } print_point(result, point,is3d); //render point if (t == (geometry->nobjs-1)) strcat(result,")"); // need to close object? } else { size +=MAX_DIGS_DOUBLE*3 + 2 +3 +7 ; result = repalloc(result, size ); strcat(result, "POINT("); print_point(result, point,is3d); strcat(result, ")"); if (t != (geometry->nobjs -1) ) strcat(result,","); } } if (geometry->objType[t] == 2) //LINESTRING { line = (LINE3D *) obj; if (briefmode) { size +=(MAX_DIGS_DOUBLE*3+5)*line->npoints +3; result = repalloc(result, size ); #ifdef DEBUG_TOTEXT elog(NOTICE, "Added space for %d points, result size: %d", line->npoints, size); elog(NOTICE, "Strlen result(%x): %d", result, strlen(result)); #endif if (!(first_sub_obj)) { strcat(result,","); } else { first_sub_obj = FALSE; } strcat(result,"("); print_many_points(result, &line->points[0],line->npoints , is3d); strcat(result,")"); if ((t == (geometry->nobjs-1)) && multi_obj ) //close object? strcat(result,")"); #ifdef DEBUG_TOTEXT elog(NOTICE, "RESULT: %s", result); #endif } else { size +=(MAX_DIGS_DOUBLE*3+5)*line->npoints +12+3; result = repalloc(result, size ); strcat(result, "LINESTRING("); //optimized for speed print_many_points(result, &line->points[0],line->npoints , is3d); strcat(result,")"); if (t != (geometry->nobjs -1) ) strcat(result,","); } } if (geometry->objType[t] == 3) //POLYGON { polygon = (POLYGON3D *) obj; if (!(briefmode)) { size += 7 + polygon->nrings *3+9; result = repalloc(result, size ); strcat(result,"POLYGON"); } else { size += 7 + polygon->nrings *3; result = repalloc(result, size ); } //need to separate objects? if (!(first_sub_obj)) { strcat(result,","); } else { first_sub_obj = FALSE; } strcat(result,"("); //begin poly pt_off = 0; //where is the first point in this ring? //where are the points pts = (POINT3D *) ( (char *)&(polygon->npoints[polygon->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); npts = 0; for (u=0; u< polygon->nrings ; u++) npts += polygon->npoints[u]; size += (MAX_DIGS_DOUBLE*3+3) * npts + 5* polygon->nrings; result = repalloc(result, size ); for (u=0; u< polygon->nrings ; u++) //for each ring { //printf("making ring #%i in obj, %i\n",u,t); if (u!=0) strcat(result,","); //separate rings strcat(result,"("); //begin ring print_many_points(result, &pts[pt_off] ,polygon->npoints[u], is3d); pt_off = pt_off + polygon->npoints[u]; //where is first point of next ring? strcat(result,")"); //end ring } strcat(result,")"); //end poly if ((t == (geometry->nobjs-1)) && multi_obj ) strcat(result,")"); if ((!(briefmode)) && (t != (geometry->nobjs -1) )) strcat(result,","); } if (!(briefmode)) { first_sub_obj = TRUE; } } if (!(briefmode)) strcat(result,")"); return(result); } /***************************************************** * conversion routines *****************************************************/ //get bvol inside a geometry PG_FUNCTION_INFO_V1(get_bbox_of_geometry); Datum get_bbox_of_geometry(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); BOX3D *result; if (geom->nobjs == 0) PG_RETURN_NULL(); //make a copy of it result = palloc ( sizeof(BOX3D) ); memcpy(result,&geom->bvol, sizeof(BOX3D) ); PG_RETURN_POINTER(result); } //make a fake geomery with just it a bvol PG_FUNCTION_INFO_V1(get_geometry_of_bbox); Datum get_geometry_of_bbox(PG_FUNCTION_ARGS) { BOX3D *bbox = (BOX3D *) PG_GETARG_POINTER(0); GEOMETRY *geom ; //make a copy of it geom = palloc ( sizeof(GEOMETRY) ); geom->size = sizeof(GEOMETRY); geom->type = BBOXONLYTYPE; geom->nobjs = -1; geom->SRID = -1; geom->scale = 1.0; geom->offsetX = 0.0; geom->offsetY = 0.0; memcpy(&(geom->bvol),bbox, sizeof(BOX3D) ); PG_RETURN_POINTER(geom); } //***************************************************************** //WKB does not do any padding or alignment! // in general these function take // 1. geometry item or list // 2. if the endian-ness should be changed (flipbytes) // 3. byte_order - 0=big endian (XDR) 1= little endian (NDR) // 4. use the 3d extention wkb (use3d) // // NOTE: // A. mem - if null, function pallocs memory for result // - otherwise, use mem to dump the wkb into // b. for lists, the # of sub-objects is also specified // // and return // 1. size of the wkb structure ("int *size") // 2. the actual wkb structure //***************************************************************** //convert a POINT3D into wkb char *wkb_point(POINT3D *pt,int32 *size, bool flipbytes, char byte_order, bool use3d) { char *result ; uint32 type ; char *c_type = (char *) &type; if (use3d) { *size = 29; type = ((unsigned int) WKB3DOFFSET + ((unsigned int)1)); } else { *size = 21; type = 1; } result = palloc (*size); if (flipbytes) flip_endian_int32( (char *) &type); result[0] = byte_order; result[1] = c_type[0]; result[2] = c_type[1]; result[3] = c_type[2]; result[4] = c_type[3]; if (use3d) memcpy(&result[5], pt, 24 ); //copy in point data else memcpy(&result[5], pt, 16 ); //copy in point data if (flipbytes) { flip_endian_double((char *) &result[5]); // x flip_endian_double((char *) &result[5+8]); // y if (use3d) flip_endian_double((char *) &result[5+16]); // z } return result; } //pt is a pointer to list of POINT3Ds char *wkb_multipoint(POINT3D *pt,int32 numb_points,int32 *size, bool flipbytes, char byte_order,bool use3d) { char *result; uint32 type ; // 3D/2D multipoint, following frank's spec uint32 npoints = numb_points; char *c_type = (char *) &type; char *c_npoints = (char *) &npoints; int t; int32 junk; const int sub_size_3d = 29; const int sub_size_2d = 21; if (use3d) { *size = 9 + sub_size_3d*numb_points; type = WKB3DOFFSET + 4; } else { *size = 9 + sub_size_2d*numb_points; type = 4; } result = palloc (*size); npoints = numb_points; if (flipbytes) { flip_endian_int32((char *) &type); flip_endian_int32((char *) &npoints); } result[0] = byte_order; result[1] = c_type[0]; result[2] = c_type[1]; result[3] = c_type[2]; result[4] = c_type[3]; result[5] = c_npoints[0]; result[6] = c_npoints[1]; result[7] = c_npoints[2]; result[8] = c_npoints[3]; for (t=0; tnpoints; int numb_points = line->npoints; char *c_npoints = (char *) &npoints; if (use3d) { *size = 9 + 24*numb_points; type = WKB3DOFFSET + 2; } else { *size = 9 + 16*numb_points; type = 2; } if (flipbytes) { flip_endian_int32((char *) &type); flip_endian_int32((char *) &npoints); } if (mem == NULL) result = palloc (*size); else result = mem; result[0] = byte_order; result[1] = c_type[0]; //type result[2] = c_type[1]; result[3] = c_type[2]; result[4] = c_type[3]; result[5] = c_npoints[0]; //npoints result[6] = c_npoints[1]; result[7] = c_npoints[2]; result[8] = c_npoints[3]; if (use3d) { memcpy(&result[9],&line->points, line->npoints*24); // copy all the pt data in one chuck if (flipbytes) { for (t=0;tnpoints; t++) { flip_endian_double((char *) &result[9 + t*24]); // x flip_endian_double((char *) &result[9+8 + t*24]); // y flip_endian_double((char *) &result[9+16+ t*24]); // z } } } else { for (t=0; tpoints)[t]), 16); //need to copy each pt individually if (flipbytes) { flip_endian_double((char *) &result[9 + t*16]); // x flip_endian_double((char *) &result[9+8 + t*16]); // y } } } return result; } // expects an array of pointers to lines // calls wkb_line() to do most of the work char *wkb_multiline(LINE3D **lines,int32 *size, int numb_lines, bool flipbytes, char byte_order,bool use3d) { int total_points = 0; int total_size=0; int size_part = 0; int t; char *result,*new_spot; uint32 type ; char *c_type = (char *) &type; uint32 nlines = numb_lines; char *c_nlines = (char *) &nlines; if (use3d) { type = WKB3DOFFSET + 5; } else { type = 5; } if (flipbytes) { flip_endian_int32((char *) &type); flip_endian_int32((char *) &nlines); } //how many points in the entire multiline() for (t=0;tnpoints; } if (use3d) { total_size = 9+ 9*numb_lines + 24*total_points; } else { total_size = 9 + 9*numb_lines + 16*total_points; } *size = total_size; result = palloc (total_size); result[0] = byte_order; result[1] = c_type[0]; //type result[2] = c_type[1]; result[3] = c_type[2]; result[4] = c_type[3]; result[5] = c_nlines[0]; //num linestrings result[6] = c_nlines[1]; result[7] = c_nlines[2]; result[8] = c_nlines[3]; new_spot = result + 9;//where to put the next linestring for (t=0;tnpoints[poly->nrings] ) ); pts = (POINT3D *) MAXALIGN(pts); numRings = poly->nrings; //total points in all the rings for (t=0; t< poly->nrings; t++) { total_points += poly->npoints[t]; } if (use3d) { *size = 9 + 4*poly->nrings + 24*total_points; type = WKB3DOFFSET + 3; } else { *size = 9 + 4*poly->nrings + 16*total_points; type = 3; } if (mem == NULL) result = palloc (*size); else result = mem; if (flipbytes) { flip_endian_int32((char *) &type); flip_endian_int32((char *) &numRings); } result[0] = byte_order; result[1] = c_type[0]; //type result[2] = c_type[1]; result[3] = c_type[2]; result[4] = c_type[3]; result[5] = c_numRings[0]; //npoints result[6] = c_numRings[1]; result[7] = c_numRings[2]; result[8] = c_numRings[3]; if (use3d) { offset = 9; //where the actual linearring structure is going point_offset = 0; for (t=0;tnrings; t++) //for each ring { npoints = poly->npoints[t]; if (flipbytes) flip_endian_int32((char *) &npoints); result[offset] = c_npoints[0]; //num points in this ring result[offset+1] = c_npoints[1]; result[offset+2] = c_npoints[2]; result[offset+3] = c_npoints[3]; memcpy(&result[offset+4], &pts[point_offset], 24*poly->npoints[t]); if (flipbytes) { for (u=0;unpoints[t];u++) //for each point { flip_endian_double((char *) &result[offset+4+u*24] ); flip_endian_double((char *) &result[offset+4+u*24+8] ); flip_endian_double((char *) &result[offset+4+u*24]+16); } } point_offset += poly->npoints[t]; // reset offsets offset += 4 + poly->npoints[t]* 24; } } else { offset = 9; // where the 1st linearring goes point_offset = 0; for (t=0;tnrings; t++) { npoints = poly->npoints[t]; if (flipbytes) flip_endian_int32((char *) &npoints); result[offset] = c_npoints[0]; result[offset+1] = c_npoints[1]; result[offset+2] = c_npoints[2]; result[offset+3] = c_npoints[3]; for (u=0;unpoints[t];u++) { memcpy(&result[offset+4 + u*16], &pts[point_offset+u], 16); if (flipbytes) { flip_endian_double((char *) &result[offset+4+u*16] ); flip_endian_double((char *) &result[offset+4+u*16+8] ); } } point_offset += poly->npoints[t]; offset += 4 + poly->npoints[t]* 16; } } return result; } //expects a list of pointer to polygon3d char *wkb_multipolygon(POLYGON3D **polys,int numb_polys,int32 *size, bool flipbytes, char byte_order,bool use3d) { int t,u; int total_points = 0; int total_size=0; int size_part = 0; int total_rings = 0; char *result,*new_spot; uint32 type; char *c_type = (char *) &type; uint32 npolys = numb_polys; char *c_npolys = (char *) &npolys; if (use3d) { type = WKB3DOFFSET + 6; } else { type = 6; } if (flipbytes) { flip_endian_int32( (char *) &type); flip_endian_int32((char *) &npolys); } //find total # rings and total points for (t=0;tnrings; for (u=0;unrings; u++) { total_points += polys[t]->npoints[u]; } } if (use3d) { total_size =9 + 9*numb_polys + 24*total_points + 4*total_rings; } else { total_size = 9 + 9*numb_polys + 16*total_points + 4*total_rings; } *size = total_size; result = palloc (total_size); result[0] = byte_order; result[1] = c_type[0]; //type result[2] = c_type[1]; result[3] = c_type[2]; result[4] = c_type[3]; result[5] = c_npolys[0]; //number of polygons result[6] = c_npolys[1]; result[7] = c_npolys[2]; result[8] = c_npolys[3]; new_spot = result+9; //where 1st polygon goes for (t=0;ttype == COLLECTIONTYPE) { sub_result= to_wkb_collection(geom, flip_endian, &size); size += 4; //size info result = palloc (size ); memcpy(result+4, sub_result, size-4); memcpy(result, &size, 4); pfree(sub_result); return result; } else { sub_result= to_wkb_sub(geom, flip_endian, &size); size += 4; //size info result = palloc (size ); memcpy(result+4, sub_result, size-4); memcpy(result, &size, 4); pfree(sub_result); return result; } } //make a wkb chunk out of a geometrycollection char *to_wkb_collection(GEOMETRY *geom, bool flip_endian, int32 *end_size) { char *result, **sub_result; int sub_size; int *sizes; int t; int32 *offsets1; int32 type; int total_size =0; int offset; char byte_order; int coll_type=7; char *c_type = (char *)&coll_type; int nobj = geom->nobjs; char *c_nobj = (char *) &nobj; //printf("making a wkb of a collections\n"); //determing byte order and if numbers need endian change if (BYTE_ORDER == BIG_ENDIAN) { if (flip_endian) { byte_order = 1; } else { byte_order = 0; } } else { if (flip_endian) { byte_order = 0; } else { byte_order = 1; } } //for sub part of the geometry structure offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; // we make a list of smaller wkb chunks in sub_result[] // and that wkb chunk's size in sizes[] sub_result = NULL; if (geom->nobjs >0) sub_result = palloc( sizeof(char *) * geom->nobjs); sizes = NULL; if (geom->nobjs >0) sizes = palloc( sizeof(int) * geom->nobjs); for (t=0; tnobjs; t++) //for each part of the collections, do the work in another function { type = geom->objType[t]; if (type == POINTTYPE) { sub_result[t] = ( wkb_point((POINT3D *) ((char *) geom +offsets1[t] ) , &sub_size, flip_endian, byte_order, geom->is3d)); sizes[t] = sub_size; total_size += sub_size; } if (type == LINETYPE) { sub_result[t] = ( wkb_line((LINE3D *) ((char *) geom +offsets1[t] ) , &sub_size, flip_endian, byte_order, geom->is3d, NULL)); sizes[t] = sub_size; total_size += sub_size; } if (type == POLYGONTYPE) { sub_result[t] = ( wkb_polygon((POLYGON3D *) ((char *) geom +offsets1[t] ) , &sub_size, flip_endian, byte_order, geom->is3d, NULL)); sizes[t] = sub_size; total_size += sub_size; } } result = palloc( total_size +9); // need geometrycollection header if (flip_endian) { flip_endian_int32((char *) &coll_type); flip_endian_int32((char *) &nobj); } //could use a memcpy, but... result[0] = byte_order; result[1] = c_type[0]; //type result[2] = c_type[1]; result[3] = c_type[2]; result[4] = c_type[3]; result[5] = c_nobj[0]; //number of part to collection result[6] = c_nobj[1]; result[7] = c_nobj[2]; result[8] = c_nobj[3]; offset =9; //start after the geometrycollection header for (t=0;tnobjs; t++) { memcpy(result+ offset, sub_result[t], sizes[t]); pfree(sub_result[t]); offset += sizes[t]; } //free temp structures if (sub_result != NULL) pfree( sub_result); if (sizes != NULL) pfree( sizes); //total size of the wkb *end_size = total_size+9; //decode_wkb(result, &junk); return result; } //convert geometry to WKB, flipping endian if appropriate // // This handles POINT, LINESTRING, POLYGON, MULTIPOINT,MULTILINESTRING, MULTIPOLYGON // // GEOMETRYCOLLECTION is not handled by this function see to_wkb_collection() // // flip_endian - request an endian swap (relative to current machine) // wkb_size - return size of wkb char *to_wkb_sub(GEOMETRY *geom, bool flip_endian, int32 *wkb_size) { char byte_order; char *result = NULL; int t; int32 *offsets1; LINE3D **linelist; POLYGON3D **polylist; //determine WKB byte order flag if (BYTE_ORDER == BIG_ENDIAN) //server is running on a big endian machine { if (flip_endian) { byte_order = 1; //as per WKB specification } else { byte_order = 0; } } else { if (flip_endian) { byte_order = 0; } else { byte_order = 1; } } // for searching in the geom struct offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; // for each of the possible geometry types, we pass it off to a worker function if (geom->type == POINTTYPE) { result = ( wkb_point((POINT3D *) ((char *) geom +offsets1[0] ) , wkb_size, flip_endian, byte_order, geom->is3d)); } if (geom->type == MULTIPOINTTYPE) { result = ( wkb_multipoint((POINT3D *) ((char *) geom +offsets1[0] ) , geom->nobjs, wkb_size, flip_endian, byte_order, geom->is3d)); } if (geom->type == LINETYPE) { result = ( wkb_line((LINE3D *) ((char *) geom +offsets1[0] ) , wkb_size, flip_endian, byte_order, geom->is3d, NULL)); } if (geom->type == MULTILINETYPE) { //make a list of lines linelist = NULL; if (geom->nobjs >0) linelist = palloc( sizeof(LINE3D *) * geom->nobjs); for (t=0;tnobjs; t++) { linelist[t] = (LINE3D *) ((char *) geom +offsets1[t] ) ; } result = ( wkb_multiline( linelist, wkb_size, geom->nobjs, flip_endian, byte_order, geom->is3d)); } if (geom->type == POLYGONTYPE) { result = ( wkb_polygon((POLYGON3D *) ((char *) geom +offsets1[0] ) , wkb_size, flip_endian, byte_order, geom->is3d, NULL)); } if (geom->type == MULTIPOLYGONTYPE) { //make a list of polygons polylist = NULL; if (geom->nobjs >0) polylist = palloc( sizeof(POLYGON3D *) * geom->nobjs); for (t=0;tnobjs; t++) { polylist[t] = (POLYGON3D *) ((char *) geom +offsets1[t] ) ; } result = ( wkb_multipolygon( polylist,geom->nobjs, wkb_size, flip_endian, byte_order, geom->is3d)); } //decode_wkb(result, &junk); return (result); } //convert binary geometry into OGIS well know binary format with NDR (little endian) formating // see http://www.opengis.org/techno/specs/99-049.rtf page 3-24 for specification // // 3d geometries are encode as in OGR by adding WKB3DOFFSET to the type. Points are then 24bytes (X,Y,Z) // instead of 16 bytes (X,Y) // //dont do any flipping of endian asbinary_simple(GEOMETRY) PG_FUNCTION_INFO_V1(asbinary_simple); Datum asbinary_simple(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); PG_RETURN_POINTER(to_wkb(geom, FALSE)); } //convert binary geometry into OGIS well know binary format with NDR (little endian) formating // see http://www.opengis.org/techno/specs/99-049.rtf page 3-24 for specification // // 3d geometries are encode as in OGR by adding WKB3DOFFSET to the type. Points are then 24bytes (X,Y,Z) // instead of 16 bytes (X,Y) // //flip if required asbinary_specify(GEOMETRY,'xdr') or asbinary_specify(GEOMETRY,'ndr') PG_FUNCTION_INFO_V1(asbinary_specify); Datum asbinary_specify(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); text *type = PG_GETARG_TEXT_P(1); if (VARSIZE(type) < 7) // 4 (size header) + 3 (text length) { elog(ERROR,"asbinary(geometry, ) - type should be 'XDR' or 'NDR'. type length is %i",VARSIZE(type) -4); PG_RETURN_NULL(); } if ( ( strncmp(VARDATA(type) ,"xdr",3) == 0 ) || (strncmp(VARDATA(type) ,"XDR",3) == 0) ) { //printf("requested XDR\n"); if (BYTE_ORDER == BIG_ENDIAN) PG_RETURN_POINTER(to_wkb(geom, FALSE)); else PG_RETURN_POINTER(to_wkb(geom, TRUE)); } else { //printf("requested NDR\n"); if (BYTE_ORDER == LITTLE_ENDIAN) PG_RETURN_POINTER(to_wkb(geom, FALSE)); else PG_RETURN_POINTER(to_wkb(geom, TRUE)); } } //takes a text argument and parses it to make a geometry PG_FUNCTION_INFO_V1(geometry_text); Datum geometry_text(PG_FUNCTION_ARGS) { char *input = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *cstring; void *result; if (*((int *) input) == 4) { //empty string PG_RETURN_NULL(); } cstring = palloc(*((int *) input)); // length+4 memcpy(cstring, &input[4], ( *((int *) input))-4); cstring[( *((int *) input))-4] = 0; // nullterminate result = DatumGetPointer( DirectFunctionCall1(geometry_in,PointerGetDatum(cstring))) ; PG_RETURN_POINTER (result); //NOTE: this could cause problem since input isnt null terminated - usually this will not // cause a problem because the parse will not go further than the end of the string. // FIXED. } //make a geometry with one obj in it (of size new_obj_size) // type should be POINTTYPE, LINETYPE or POLYGONTYPE // if you want to change the object's type to something else (ie GEOMETRYCOLLECTION), do // that after with geom->type = GEOMETRYCOLLECTION // this does calculate the bvol // // sets the SRID and grid info to the given values // // do not call this with type = GEOMETRYCOLLECTION GEOMETRY *make_oneobj_geometry(int sub_obj_size, char *sub_obj, int type, bool is3d,int SRID, double scale, double offx, double offy) { int size = sizeof(GEOMETRY) + 4 + sub_obj_size ; GEOMETRY *result = palloc(size); char *sub_obj_loc; BOX3D *bbox; result->size = size; result->nobjs = 1; result->type = type; result->is3d = is3d; result->SRID = SRID; result->scale = scale; result->offsetX = offx; result->offsetY = offy; result->objType[0] = type; if (type == MULTIPOINTTYPE) result->objType[0] = POINTTYPE; if (type == MULTILINETYPE) result->objType[0] = LINETYPE; if (type == MULTIPOLYGONTYPE) result->objType[0] = POLYGONTYPE; if (type == COLLECTIONTYPE) { pfree(result); return(NULL); //error } sub_obj_loc = (char *) &result->objType[2]; sub_obj_loc = (char *) MAXALIGN(sub_obj_loc); result->objType[1] = sub_obj_loc - (char *) result; //result->objType[1] is where objOffset is //copy in the subobject memcpy(sub_obj_loc , sub_obj, sub_obj_size); bbox = bbox_of_geometry(result); memcpy(&result->bvol,bbox, sizeof(BOX3D) ); //make bounding box return result; } //find the size of the subobject and return it int size_subobject (char *sub_obj, int type) { if (type == POINTTYPE) { return (sizeof(POINT3D)); } if (type == LINETYPE) { /* size of first point is included in struct LINE3D */ return(sizeof(LINE3D) + sizeof(POINT3D) * ( ((LINE3D *)sub_obj)->npoints - 1 )); } if (type==POLYGONTYPE) { POLYGON3D *poly = (POLYGON3D *) sub_obj; int t,points=0; for (t=0;tnrings;t++) { points += poly->npoints[t]; } if ( ( (long) ( &poly->npoints[poly->nrings] )) == (MAXALIGN(&poly->npoints[poly->nrings] ) ) ) return (sizeof(POLYGON3D) + 4*(poly->nrings-1) + sizeof(POINT3D)*(points-1) ); //no extra align else return (sizeof(POLYGON3D) + 4*(poly->nrings-1) + sizeof(POINT3D)*(points-1) +4 ); } return (-1);//unknown sub-object type } //produce a new geometry, which is the old geometry with another object stuck in it // This will try to make the geometry's type is correct (move POINTTYPE to MULTIPOINTTYPE or // change to GEOMETRYCOLLECTION) // // this does NOT calculate the bvol - you should set it with "bbox_of_geometry" // // type is the type of the subobject // do not call this as with type = GEOMETRYCOLLECTION // // doesnt change the is3d flag // doesnt change the SRID or other attributes GEOMETRY *add_to_geometry(GEOMETRY *geom,int sub_obj_size, char *sub_obj, int type) { int size,t; int size_obj,next_offset; GEOMETRY *result; int32 *old_offsets, *new_offsets; //all the offsets could cause re-alignment problems, so need to deal with each one size = geom->size +4*(geom->nobjs +1) /*byte align*/ +sub_obj_size + 4 /*ObjType[]*/ +4 /*new offset*/; result = (GEOMETRY *) palloc(size); result->size = size; result->is3d = geom->is3d; result->SRID = geom->SRID; result->offsetX = geom->offsetX; result->offsetY = geom->offsetY; result->scale = geom->scale; //accidently sent in a single-entity type but gave it a multi-entity type // re-type it as single-entity if (type == MULTIPOINTTYPE) type = POINTTYPE; if (type == MULTILINETYPE) type = LINETYPE; if (type == MULTIPOLYGONTYPE) type = POLYGONTYPE; // change to the simplest possible type that supports the type being added if (geom->type == POINTTYPE || geom->type == MULTIPOINTTYPE) { if (type == POINTTYPE) result->type = MULTIPOINTTYPE; else result->type = COLLECTIONTYPE; } if (geom->type == LINETYPE || geom->type == MULTILINETYPE) { if (type == LINETYPE) result->type = MULTILINETYPE; else result->type = COLLECTIONTYPE; } if (geom->type == POLYGONTYPE || geom->type == MULTIPOLYGONTYPE) { if (type == POLYGONTYPE) result->type = MULTIPOLYGONTYPE; else result->type = COLLECTIONTYPE; } if (geom->type == COLLECTIONTYPE) result->type = COLLECTIONTYPE; // now result geometry's type and sub-object's type is okay // we have to setup the geometry result->nobjs = geom->nobjs+1; for (t=0; t< geom->nobjs; t++) { result->objType[t] = geom->objType[t]; } //printf("about to copy geomes\n"); //printf("result is at %p and is %i bytes long\n",result,result->size); //printf("geom is at %p and is %i bytes long\n",geom,geom->size); old_offsets =& geom->objType[geom->nobjs] ; new_offsets =& result->objType[result->nobjs] ; next_offset = ( (char *) &new_offsets[result->nobjs] ) - ( (char *) result) ; next_offset = MAXALIGN(next_offset); //have to re-set the offsets and copy in the sub-object data for (t=0; t< geom->nobjs; t++) { //where is this going to go? new_offsets[t] = next_offset; size_obj = size_subobject ((char *) (((char *) geom) + old_offsets[t] ), geom->objType[t]); next_offset += size_obj; next_offset = MAXALIGN(next_offset); // make sure its aligned properly //printf("coping %i bytes from %p to %p\n", size_obj,( (char *) geom) + old_offsets[t],((char *) result) + new_offsets[t] ); memcpy( ((char *) result) + new_offsets[t] , ( (char *) geom) + old_offsets[t], size_obj); //printf("copying done\n"); } //printf("copying in new object\n"); //now, put in the new data result->objType[ result->nobjs -1 ] = type; new_offsets[ result->nobjs -1 ] = next_offset; memcpy( ((char *) result) + new_offsets[result->nobjs-1] ,sub_obj , sub_obj_size); //printf("returning\n"); return result; } //make a polygon obj // size is return in arg "size" POLYGON3D *make_polygon(int nrings, int *pts_per_ring, POINT3D *pts, int npoints, int *size) { POLYGON3D *result; int t; POINT3D *inside_poly_pts; *size = sizeof(POLYGON3D) + 4 /*align*/ + 4*(nrings-1)/*npoints struct*/ + sizeof(POINT3D) *(npoints-1) /*points struct*/ ; result= (POLYGON3D *) palloc (*size); result->nrings = nrings; for (t=0;tnpoints[t] = pts_per_ring[t]; } inside_poly_pts = (POINT3D *) ( (char *)&(result->npoints[result->nrings] ) ); inside_poly_pts = (POINT3D *) MAXALIGN(inside_poly_pts); memcpy(inside_poly_pts, pts, npoints *sizeof(POINT3D) ); return result; } void set_point( POINT3D *pt,double x, double y, double z) { pt->x = x; pt->y = y; pt->z = z; } //make a line3d object // return size of structure in 'size' LINE3D *make_line(int npoints, POINT3D *pts, int *size) { LINE3D *result; *size = sizeof(LINE3D) + (npoints-1)*sizeof(POINT3D); result= (LINE3D *) palloc (*size); result->npoints = npoints; memcpy( result->points, pts, npoints*sizeof(POINT3D) ); return result; } //given one byte, populate result with two byte representing // the hex number // ie deparse_hex( 255, mystr) // -> mystr[0] = 'F' and mystr[1] = 'F' // no error checking done void deparse_hex(unsigned char str, unsigned char *result) { int input_high; int input_low; input_high = (str>>4); input_low = (str & 0x0F); switch (input_high) { case 0: result[0] = '0'; break; case 1: result[0] = '1'; break; case 2: result[0] = '2'; break; case 3: result[0] = '3'; break; case 4: result[0] = '4'; break; case 5: result[0] = '5'; break; case 6: result[0] = '6'; break; case 7: result[0] = '7'; break; case 8: result[0] = '8'; break; case 9: result[0] = '9'; break; case 10: result[0] = 'A'; break; case 11: result[0] = 'B'; break; case 12: result[0] = 'C'; break; case 13: result[0] = 'D'; break; case 14: result[0] = 'E'; break; case 15: result[0] = 'F'; break; } switch (input_low) { case 0: result[1] = '0'; break; case 1: result[1] = '1'; break; case 2: result[1] = '2'; break; case 3: result[1] = '3'; break; case 4: result[1] = '4'; break; case 5: result[1] = '5'; break; case 6: result[1] = '6'; break; case 7: result[1] = '7'; break; case 8: result[1] = '8'; break; case 9: result[1] = '9'; break; case 10: result[1] = 'A'; break; case 11: result[1] = 'B'; break; case 12: result[1] = 'C'; break; case 13: result[1] = 'D'; break; case 14: result[1] = 'E'; break; case 15: result[1] = 'F'; break; } } //given a string with at least 2 chars in it, convert them to // a byte value. No error checking done! unsigned char parse_hex(char *str) { //do this a little brute force to make it faster unsigned char result_high = 0; unsigned char result_low = 0; switch (str[0]) { case '0' : result_high = 0; break; case '1' : result_high = 1; break; case '2' : result_high = 2; break; case '3' : result_high = 3; break; case '4' : result_high = 4; break; case '5' : result_high = 5; break; case '6' : result_high = 6; break; case '7' : result_high = 7; break; case '8' : result_high = 8; break; case '9' : result_high = 9; break; case 'A' : result_high = 10; break; case 'B' : result_high = 11; break; case 'C' : result_high = 12; break; case 'D' : result_high = 13; break; case 'E' : result_high = 14; break; case 'F' : result_high = 15; break; } switch (str[1]) { case '0' : result_low = 0; break; case '1' : result_low = 1; break; case '2' : result_low = 2; break; case '3' : result_low = 3; break; case '4' : result_low = 4; break; case '5' : result_low = 5; break; case '6' : result_low = 6; break; case '7' : result_low = 7; break; case '8' : result_low = 8; break; case '9' : result_low = 9; break; case 'A' : result_low = 10; break; case 'B' : result_low = 11; break; case 'C' : result_low = 12; break; case 'D' : result_low = 13; break; case 'E' : result_low = 14; break; case 'F' : result_low = 15; break; } return (unsigned char) ((result_high<<4) + result_low); } // input is a string with hex chars in it. Convert to binary and put in the result PG_FUNCTION_INFO_V1(WKB_in); Datum WKB_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); WellKnownBinary *result; int size; int t; int input_str_len; //printf("wkb_in called\n"); input_str_len = strlen(str); if ( ( ( (int)(input_str_len/2.0) ) *2.0) != input_str_len) { elog(ERROR,"WKB_in parser - should be even number of characters!"); PG_RETURN_NULL(); } if (strspn(str,"0123456789ABCDEF") != strlen(str) ) { elog(ERROR,"WKB_in parser - input contains bad characters. Should only have '0123456789ABCDEF'!"); PG_RETURN_NULL(); } size = (input_str_len/2) + 4; result = (WellKnownBinary *) palloc(size); result->size = size; for (t=0;tsize - 4) *2 +1; //+1 for null char result = palloc (size_result); result[size_result-1] = 0; //null terminate for (t=0; t< (WKB->size -4); t++) { deparse_hex( ((unsigned char *) WKB)[4 + t], &result[t*2]); } PG_RETURN_CSTRING(result); } #if USE_VERSION > 73 /* * This function must advance the StringInfo.cursor pointer * and leave it at the end of StringInfo.buf. If it fails * to do so the backend will raise an exception with message: * ERROR: incorrect binary data format in bind parameter # * */ PG_FUNCTION_INFO_V1(WKB_recv); Datum WKB_recv(PG_FUNCTION_ARGS) { StringInfo buf = (StringInfo) PG_GETARG_POINTER(0); bytea *result; //elog(NOTICE, "WKB_recv start"); /* Add VARLENA size info to make it a valid varlena object */ result = (bytea *)palloc(buf->len+VARHDRSZ); VARATT_SIZEP(result) = buf->len+VARHDRSZ; memcpy(VARATT_DATA(result), buf->data, buf->len); /* Set cursor to the end of buffer (so the backend is happy) */ buf->cursor = buf->len; //elog(NOTICE, "WKB_recv end (returning result)"); PG_RETURN_POINTER(result); } #endif PG_FUNCTION_INFO_V1(WKBtoBYTEA); Datum WKBtoBYTEA(PG_FUNCTION_ARGS) { WellKnownBinary *WKB = (WellKnownBinary *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); bytea *result; result = (bytea*) palloc(WKB->size); memcpy(result,WKB, WKB->size); PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(geometry2box); Datum geometry2box(PG_FUNCTION_ARGS) { GEOMETRY *g = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); //elog(NOTICE,"geometry2box - ymax is %.15g",g->bvol.URT.y); PG_RETURN_POINTER(convert_box3d_to_box(&g->bvol) ); } //create_histogram2d(BOX3D, boxesPerSide) // returns a histgram with 0s in all the boxes. PG_FUNCTION_INFO_V1(create_histogram2d); Datum create_histogram2d(PG_FUNCTION_ARGS) { BOX3D *bbox = (BOX3D *) PG_GETARG_POINTER(0); int32 boxesPerSide= PG_GETARG_INT32(1); HISTOGRAM2D *histo; int size,t; if ( (boxesPerSide <1) || (boxesPerSide >50) ) { elog(ERROR,"create_histogram2d - boxesPerSide is too small or big.\n"); PG_RETURN_NULL() ; } size = sizeof(HISTOGRAM2D) + (boxesPerSide*boxesPerSide-1)*4 ; histo = (HISTOGRAM2D *) palloc (size); histo->size = size; histo->xmin = bbox->LLB.x; histo->ymin = bbox->LLB.y; histo->xmax = bbox->URT.x; histo->ymax = bbox->URT.y; histo->avgFeatureArea = 0; histo->boxesPerSide = boxesPerSide; for (t=0;tvalue[t] =0; } //elog(NOTICE,"create_histogram2d returning"); PG_RETURN_POINTER(histo); } //text form of HISTOGRAM2D is: // 'HISTOGRAM2D(xmin,ymin,xmax,ymax,boxesPerSide;value[0],value[1],...') // note the ";" in the middle (for easy parsing) // I dont expect anyone to actually create one by hand PG_FUNCTION_INFO_V1(histogram2d_in); Datum histogram2d_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); HISTOGRAM2D *histo ; int nitems; double xmin,ymin,xmax,ymax; int boxesPerSide; double avgFeatureArea; char *str2,*str3; long datum; int t; while (isspace((unsigned char) *str)) str++; if (strstr(str,"HISTOGRAM2D(") != str) { elog(ERROR,"histogram2d parser - doesnt start with 'HISTOGRAM2D(\n"); PG_RETURN_NULL() ; } if (strstr(str,";") == NULL) { elog(ERROR,"histogram2d parser - doesnt have a ; in sring!\n"); PG_RETURN_NULL() ; } nitems = sscanf(str,"HISTOGRAM2D(%lf,%lf,%lf,%lf,%i,%lf;",&xmin,&ymin,&xmax,&ymax,&boxesPerSide,&avgFeatureArea); if (nitems != 6) { elog(ERROR,"histogram2d parser - couldnt parse initial portion of histogram!\n"); PG_RETURN_NULL() ; } if ( (boxesPerSide > 50) || (boxesPerSide <1) ) { elog(ERROR,"histogram2d parser - boxesPerSide is too big or too small\n"); PG_RETURN_NULL() ; } str2 = strstr(str,";"); str2++; if (str2[0] ==0) { elog(ERROR,"histogram2d parser - no histogram values\n"); PG_RETURN_NULL() ; } histo = (HISTOGRAM2D *) palloc (sizeof(HISTOGRAM2D) + (boxesPerSide*boxesPerSide-1)*4 ); histo->size = sizeof(HISTOGRAM2D) + (boxesPerSide*boxesPerSide-1)*4 ; for (t=0;tvalue[t] = (unsigned int) datum; str2= str3+1; //move past the "," or ")" } histo->xmin = xmin; histo->xmax = xmax; histo->ymin = ymin; histo->ymax = ymax; histo->avgFeatureArea = avgFeatureArea; histo->boxesPerSide = boxesPerSide; PG_RETURN_POINTER(histo); } //text version PG_FUNCTION_INFO_V1(histogram2d_out); Datum histogram2d_out(PG_FUNCTION_ARGS) { //char *result; //result = palloc(200); //sprintf(result,"HISTOGRAM2D(0,0,100,100,2;11,22,33,44)"); //PG_RETURN_CSTRING(result); HISTOGRAM2D *histo = (HISTOGRAM2D *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *result; int t; char temp[100]; int size; size = 26+6*MAX_DIGS_DOUBLE + histo->boxesPerSide*histo->boxesPerSide* (MAX_DIGS_DOUBLE+1); result = palloc(size); sprintf(result,"HISTOGRAM2D(%.15g,%.15g,%.15g,%.15g,%i,%.15g;", histo->xmin,histo->ymin,histo->xmax,histo->ymax,histo->boxesPerSide,histo->avgFeatureArea ); //elog(NOTICE,"so far: %s",result); //elog(NOTICE,"buffsize=%i, size=%i",size,histo->size); for (t=0;tboxesPerSide*histo->boxesPerSide;t++) { if (t!=((histo->boxesPerSide*histo->boxesPerSide)-1)) sprintf(temp,"%u,", histo->value[t]); else sprintf(temp,"%u", histo->value[t]); strcat(result,temp); } strcat(result,")"); //elog(NOTICE,"about to return string (len=%i): -%s-",strlen(result),result); PG_RETURN_CSTRING(result); } int getint(char *c) { return *((int*)c); } double getdouble(char *c) { return *((double*)c); } //void flip_endian_double(char *dd); //void flip_endian_int32(char *ii); //select geometry(asbinary('POINT(1 2 3)','XDR')); //select geometry(asbinary('POINT(1 2)','XDR')); //select geometry(asbinary('POINT(1 2 3)','NDR')); //select geometry(asbinary('POINT(1 2)','NDR')); //select geometry(asbinary('LINESTRING(1 2, 3 4)','XDR')); //select geometry(asbinary('LINESTRING(1 2, 3 4)','NDR')); //select geometry(asbinary('LINESTRING(1 2 5 , 3 4 6)','XDR')); //select geometry(asbinary('LINESTRING(1 2 5 , 3 4 6)','NDR')); //select geometry(asbinary('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','XDR')); //select geometry(asbinary('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))','NDR')); //select geometry(asbinary('POLYGON((0 0 0, 10 0, 10 10, 0 10, 0 0))','XDR')); //select geometry(asbinary('POLYGON((0 0 0, 10 0, 10 10, 0 10, 0 0))','NDR')); //select geometry(asbinary('POLYGON((5 5, 15 5, 15 7, 5 7, 5 5 ),(6 6,6.5 6, 6.5 6.5,6 6.5,6 6))','NDR')); //select geometry(asbinary('POLYGON((5 5, 15 5, 15 7, 5 7, 5 5 ),(6 6,6.5 6, 6.5 6.5,6 6.5,6 6))','XDR')); //select geometry(asbinary('POLYGON((5 5 0, 15 5, 15 7, 5 7, 5 5 ),(6 6,6.5 6, 6.5 6.5,6 6.5,6 6))','NDR')); //select geometry(asbinary('POLYGON((5 5 0, 15 5, 15 7, 5 7, 5 5 ),(6 6,6.5 6, 6.5 6.5,6 6.5,6 6))','XDR')); //select geometry(asbinary('MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0)','NDR')); //select geometry(asbinary('MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0 0)','NDR')); //select geometry(asbinary('MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0)','XDR')); //select geometry(asbinary('MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0 0)','NDR')); //select geometry(asbinary('MULTILINESTRING((5 5, 10 10),(1 1, 2 2) )','NDR')); //select geometry(asbinary('MULTILINESTRING((5 5, 10 10),(1 1, 2 2 0) )','NDR')); //select geometry(asbinary('MULTILINESTRING((5 5, 10 10),(1 1, 2 2) )','XDR')); //select geometry(asbinary('MULTILINESTRING((5 5, 10 10),(1 1, 2 2 0) )','XDR')); //select geometry(asbinary('MULTIPOLYGON(((5 5, 15 5, 15 7, 5 7, 5 5)),((1 1,1 2,2 2,1 2, 1 1)))','NDR')); //select geometry(asbinary('MULTIPOLYGON(((5 5, 15 5, 15 7, 5 7, 5 5)),((1 1,1 2,2 2,1 2, 1 1 0)))','NDR')); //select geometry(asbinary('MULTIPOLYGON(((5 5, 15 5, 15 7, 5 7, 5 5)),((1 1,1 2,2 2,1 2, 1 1)))','XDR')); //select geometry(asbinary('MULTIPOLYGON(((5 5, 15 5, 15 7, 5 7, 5 5)),((1 1,1 2,2 2,1 2, 1 1 0)))','XDR')); //select geometry(asbinary('GEOMETRYCOLLECTION(POINT(1 2),POINT(3 4))','NDR')); //select geometry(asbinary('GEOMETRYCOLLECTION(POINT(1 2 3),LINESTRING(1 2, 3 4),POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)))','NDR')); // geometryfromWKB(, [] ) PG_FUNCTION_INFO_V1(geometryfromWKB_SRID); Datum geometryfromWKB_SRID(PG_FUNCTION_ARGS) { char *wkb_input = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int SRID = PG_GETARG_INT32(1); char *wkb = &wkb_input[4]; int wkb_size = *((int *) wkb_input); int bytes_read; GEOMETRY *result; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; //elog(NOTICE,"geometryfromWKB:: size = %i",wkb_size); result = WKBtoGeometry(wkb,wkb_size,&bytes_read); if (result == NULL) { PG_RETURN_NULL(); } else { result->SRID = SRID; PG_RETURN_POINTER(result); } } PG_FUNCTION_INFO_V1(PointfromWKB_SRID); Datum PointfromWKB_SRID(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometryfromWKB_SRID, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != POINTTYPE) { elog(ERROR,"PointfromWKB:: WKB isnt POINT"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(LinefromWKB_SRID); Datum LinefromWKB_SRID(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometryfromWKB_SRID, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != LINETYPE) { elog(ERROR,"LinefromWKB_SRID:: WKB isnt LINESTRING"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(PolyfromWKB_SRID); Datum PolyfromWKB_SRID(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometryfromWKB_SRID, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != POLYGONTYPE) { elog(ERROR,"PolyfromWKB_SRID:: WKB isnt POLYGON"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(MPointfromWKB_SRID); Datum MPointfromWKB_SRID(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometryfromWKB_SRID, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != MULTIPOINTTYPE) { elog(ERROR,"MPointfromWKB_SRID:: WKB isnt MULTIPOINT"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(MLinefromWKB_SRID); Datum MLinefromWKB_SRID(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometryfromWKB_SRID, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != MULTILINETYPE) { elog(ERROR,"MLinefromWKB_SRID:: WKB isnt MULTILINESTRING"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(MPolyfromWKB_SRID); Datum MPolyfromWKB_SRID(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometryfromWKB_SRID, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != MULTIPOLYGONTYPE) { elog(ERROR,"MPolyfromWKB_SRID:: WKB isnt MULTIPOLYGON"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(GCfromWKB_SRID); Datum GCfromWKB_SRID(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometryfromWKB_SRID, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != COLLECTIONTYPE) { elog(ERROR,"MPolyfromWKB_SRID:: WKB isnt GEOMETRYCOLLECTION"); } PG_RETURN_POINTER(geom); } //convert a WKB (that has length bytes) // to a GEOMETRY. This function read bytes_read bytes during the operation // This function will call itself "recursively" on GeometryCollections GEOMETRY *WKBtoGeometry(char *WKB, int length, int *bytes_read) { char myByteOrder; char wkbByteOrder; int wkbType; char is3d; *bytes_read = 0; if (length<5) elog(ERROR,"WKB:: insufficient bytes in stream"); if ( BYTE_ORDER == BIG_ENDIAN ) myByteOrder=0; else myByteOrder=1; wkbByteOrder = *(WKB); if (!( (wkbByteOrder==0) || (wkbByteOrder==1) )) { elog(ERROR,"WKB is not valid - endian code = %i", (int) wkbByteOrder); return NULL; } WKB ++; // skip to next byte (*bytes_read)++; if (myByteOrder == wkbByteOrder) { wkbType = getint(WKB); } else { flip_endian_int32( WKB ); wkbType = getint(WKB); } WKB += 4; (*bytes_read) += 4; //elog(NOTICE,"my byte order is %i",myByteOrder); //elog(NOTICE,"WKB byte order is %i",wkbByteOrder); //elog(NOTICE,"WKB type is %i",wkbType); is3d = 0; switch (wkbType) { case (0x80000000 +1): //point 3d is3d = 1; case 1: //point 2d if ( (length-(*bytes_read)) < (16+is3d*8)) elog(ERROR,"WKB:: insufficient bytes in stream"); { POINT3D pt; if (myByteOrder == wkbByteOrder) { pt.x = getdouble(WKB); WKB+=8; (*bytes_read)+=8; pt.y = getdouble(WKB); WKB+=8; (*bytes_read)+=8; if (is3d) { pt.z = getdouble(WKB); WKB+=8; (*bytes_read)+=8; } else { pt.z=0; } } else { flip_endian_double(WKB); pt.x = getdouble(WKB); WKB+=8; (*bytes_read)+=8; flip_endian_double(WKB); pt.y = getdouble(WKB); WKB+=8; (*bytes_read)+=8; if (is3d) { flip_endian_double(WKB); pt.z = getdouble(WKB); WKB+=8; (*bytes_read)+=8; } else { pt.z =0; } } return make_oneobj_geometry(sizeof(POINT3D), (char *) &pt, POINTTYPE, is3d, -1,1.0, 0.0, 0.0 ); } break; case (0x80000000 +2): //line 3d is3d = 1; case 2: //line 2d if ( (length-(*bytes_read)) < (4)) elog(ERROR,"WKB:: insufficient bytes in stream"); { int npoints,t; POINT3D *pts; int size; LINE3D *line; if (myByteOrder == wkbByteOrder) { npoints= getint(WKB); WKB+=4; (*bytes_read)+=4; if ( (length-(*bytes_read)) < ((16+is3d*8))*npoints) elog(ERROR,"WKB:: insufficient bytes in stream"); pts = palloc( npoints *sizeof(POINT3D)); for (t=0;ttype = MULTIPOINTTYPE; return result; } mybytes_read = *bytes_read; so_far = WKBtoGeometry(WKB, length - mybytes_read, &other_bytes_read); (*bytes_read) = mybytes_read + other_bytes_read; WKB += other_bytes_read; so_far->type = MULTIPOINTTYPE; if (ngeoms ==1) return so_far; for (t=1;ttype = MULTILINETYPE; return result; } mybytes_read = *bytes_read; so_far = WKBtoGeometry(WKB, length - mybytes_read, &other_bytes_read); (*bytes_read) = mybytes_read + other_bytes_read; WKB += other_bytes_read; so_far->type = MULTILINETYPE; if (ngeoms ==1) return so_far; for (t=1;ttype = MULTIPOLYGONTYPE; return result; } mybytes_read = *bytes_read; so_far = WKBtoGeometry(WKB, length - mybytes_read, &other_bytes_read); (*bytes_read) = mybytes_read + other_bytes_read; WKB += other_bytes_read; so_far->type = MULTIPOLYGONTYPE; if (ngeoms ==1) return so_far; for (t=1;ttype = COLLECTIONTYPE; if (ngeoms ==1) return so_far; for (t=1;ttype != POLYGONTYPE) { elog(ERROR,"geometry_from_text_poly:: WKT isnt POLYGON"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(geometry_from_text_line); Datum geometry_from_text_line(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometry_from_text, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != LINETYPE) { elog(ERROR,"geometry_from_text_line:: WKT isnt LINESTRING"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(geometry_from_text_point); Datum geometry_from_text_point(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometry_from_text, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != POINTTYPE) { elog(ERROR,"geometry_from_text_point:: WKT isnt POINT"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(geometry_from_text_mpoint); Datum geometry_from_text_mpoint(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometry_from_text, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != MULTIPOINTTYPE) { elog(ERROR,"geometry_from_text_mpoint:: WKT isnt MULTIPOINT"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(geometry_from_text_mline); Datum geometry_from_text_mline(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometry_from_text, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != MULTILINETYPE) { elog(ERROR,"geometry_from_text_mline:: WKT isnt MULTILINESTRING"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(geometry_from_text_mpoly); Datum geometry_from_text_mpoly(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometry_from_text, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != MULTIPOLYGONTYPE) { elog(ERROR,"geometry_from_text_mpoly:: WKT isnt MULTIPOLYGON"); } PG_RETURN_POINTER(geom); } PG_FUNCTION_INFO_V1(geometry_from_text_gc); Datum geometry_from_text_gc(PG_FUNCTION_ARGS) { int SRID; GEOMETRY *geom; if ( ! PG_ARGISNULL(1) ) SRID = PG_GETARG_INT32(1); else SRID = -1; geom = (GEOMETRY *) DatumGetPointer( DirectFunctionCall2(geometry_from_text, PG_GETARG_DATUM(0),Int32GetDatum(SRID) )); if (geom->type != COLLECTIONTYPE) { elog(ERROR,"geometry_from_text_gc:: WKT isnt GEOMETRYCOLLECTION"); } PG_RETURN_POINTER(geom); } //returns a GEOMETRYCOLLECTION(EMPTY) // bbox of this object is BOX3D(0 0 0, 0 0 0) // but should be treated as NULL GEOMETRY *makeNullGeometry(int SRID) { int size = sizeof(GEOMETRY); GEOMETRY *result = palloc(size); memset(result,0, size ); // init to 0s result->size = size; result->nobjs = 0; result->type = COLLECTIONTYPE; result->is3d = false; result->SRID = SRID; result->scale = 1.0; result->offsetX = 0; result->offsetY = 0; memset(&result->bvol,0, sizeof(BOX3D) ); //make bbox :: BOX3D(0 0 0, 0 0 0) return result; } postgis-0.8.1/postgis_ops.c0100664000077300001440000007474307757157352015404 0ustar postgisusers /********************************************************************** * $Id: postgis_ops.c,v 1.12 2025/11/20 15:34:02 strk Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_ops.c,v $ * Revision 1.12 2025/11/20 15:34:02 strk * expected in-transaction memory release for btree operators * * Revision 1.11 2025/11/19 15:26:57 strk * Added geometry_le, geometry_ge, geometry_cmp functions, * modified geometry_lt, geometry_gt, geometry_eq to be consistent. * * Revision 1.10 2025/07/25 17:08:37 pramsey * Moved Cygwin endian define out of source files into postgis.h common * header file. * * Revision 1.9 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" #define SHOW_DIGS_DOUBLE 15 #define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1) //given a bvol, make a "fake" geometry that contains it (for indexing) GEOMETRY *make_bvol_geometry(BOX3D *box) { return (GEOMETRY *) DatumGetPointer(DirectFunctionCall1(get_geometry_of_bbox,PointerGetDatum(box) ) ); } // *********************************** // GEOMETRY indexing (operator) fns // NOTE: // These work on the bbox of the geometry, not the // individual components (except same) // *********************************** PG_FUNCTION_INFO_V1(box3d_same); Datum box3d_same(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); BOX3D *box2 = (BOX3D *) PG_GETARG_POINTER(1); bool result; result = ( FPeq(box1->LLB.x , box2->LLB.x) && FPeq(box1->LLB.y , box2->LLB.y) && FPeq(box1->URT.x , box2->URT.x) && FPeq(box1->URT.y , box2->URT.y) ); PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(geometry_overleft); Datum geometry_overleft(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); bool result; //printf("in geometry_overleft\n"); //print_box(&geom1->bvol); //print_box(&geom2->bvol); if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } result = FPle(geom1->bvol.URT.x, geom2->bvol.URT.x); PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(geometry_left); Datum geometry_left(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); bool result; //printf("in geometry_left\n"); if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } result = FPlt(geom1->bvol.URT.x, geom2->bvol.LLB.x); PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(geometry_right); Datum geometry_right(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); bool result; //printf("in geometry_right\n"); if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } result = FPgt(geom1->bvol.LLB.x, geom2->bvol.URT.x); PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(geometry_overright); Datum geometry_overright(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); bool result; //printf("in geometry_overright\n"); if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } result = FPge(geom1->bvol.LLB.x, geom2->bvol.LLB.x); PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(geometry_contained); Datum geometry_contained(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); bool result; if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } //printf("in geometry_contained\n"); result = FPle(geom1->bvol.URT.x, geom2->bvol.URT.x) && FPge(geom1->bvol.LLB.x, geom2->bvol.LLB.x) && FPle(geom1->bvol.URT.y, geom2->bvol.URT.y) && FPge(geom1->bvol.LLB.y, geom2->bvol.LLB.y); //printf("returning geometry_contained\n"); PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(geometry_contain); Datum geometry_contain(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); bool result; //printf("in geometry_contain\n"); if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } result = FPge(geom1->bvol.URT.x, geom2->bvol.URT.x) && FPle(geom1->bvol.LLB.x, geom2->bvol.LLB.x) && FPge(geom1->bvol.URT.y, geom2->bvol.URT.y) && FPle(geom1->bvol.LLB.y, geom2->bvol.LLB.y); PG_RETURN_BOOL(result); } bool box3d_ov(BOX3D *box1, BOX3D *box2) { bool result; result = /*overlap in x*/ (( FPge(box1->URT.x, box2->URT.x) && FPle(box1->LLB.x, box2->URT.x)) || (FPge(box2->URT.x, box1->URT.x) && FPle(box2->LLB.x, box1->URT.x))) && /*overlap in y*/ ((FPge(box1->URT.y, box2->URT.y) && FPle(box1->LLB.y, box2->URT.y)) || (FPge(box2->URT.y, box1->URT.y) && FPle(box2->LLB.y, box1->URT.y))); //printf("box3d_ov about to return %i\n",(int) result); return result; } PG_FUNCTION_INFO_V1(geometry_overlap); Datum geometry_overlap(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); //printf("in geometry_overlap\n"); if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } PG_RETURN_BOOL(box3d_ov(&(geom1->bvol), &(geom2->bvol))); } bool is_same_point(POINT3D *p1, POINT3D *p2) { return ( FPeq(p1->x, p2->x ) && FPeq(p1->y, p2->y ) &&FPeq(p1->z, p2->z ) ); } bool is_same_line(LINE3D *l1, LINE3D *l2) { int i; //lines are directed, so all the points should be the same if (l1->npoints != l2->npoints) return FALSE; //simple case, not the same # of points for (i=0;inpoints; i++) { if (!( is_same_point( &l1->points[i], &l2->points[i] ) ) ) { return FALSE; } } return TRUE; } /*********************************************************** * * Comparision function for use in Binary Tree searches * (ORDER BY, GROUP BY, DISTINCT) * ***********************************************************/ PG_FUNCTION_INFO_V1(geometry_lt); Datum geometry_lt(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); //elog(NOTICE, "geometry_lt called"); if (geom1->SRID != geom2->SRID) { elog(ERROR, "Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } if ( ! FPeq(geom1->bvol.LLB.x , geom2->bvol.LLB.x) ) { if (geom1->bvol.LLB.x < geom2->bvol.LLB.x) PG_RETURN_BOOL(TRUE); } if ( ! FPeq(geom1->bvol.LLB.y , geom2->bvol.LLB.y) ) { if (geom1->bvol.LLB.y < geom2->bvol.LLB.y) PG_RETURN_BOOL(TRUE); } if ( ! FPeq(geom1->bvol.LLB.z , geom2->bvol.LLB.z) ) { if (geom1->bvol.LLB.z < geom2->bvol.LLB.z) PG_RETURN_BOOL(TRUE); } if ( ! FPeq(geom1->bvol.URT.x , geom2->bvol.URT.x) ) { if (geom1->bvol.URT.x < geom2->bvol.URT.x) PG_RETURN_BOOL(TRUE); } if ( ! FPeq(geom1->bvol.URT.y , geom2->bvol.URT.y) ) { if (geom1->bvol.URT.y < geom2->bvol.URT.y) PG_RETURN_BOOL(TRUE); } if ( ! FPeq(geom1->bvol.URT.z , geom2->bvol.URT.z) ) { if (geom1->bvol.URT.z < geom2->bvol.URT.z) PG_RETURN_BOOL(TRUE); } PG_RETURN_BOOL(FALSE); } PG_FUNCTION_INFO_V1(geometry_le); Datum geometry_le(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); //elog(NOTICE, "geometry_le called"); if (geom1->SRID != geom2->SRID) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); elog(ERROR, "Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } if ( ! FPeq(geom1->bvol.LLB.x , geom2->bvol.LLB.x) ) { if (geom1->bvol.LLB.x < geom2->bvol.LLB.x) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.LLB.y , geom2->bvol.LLB.y) ) { if (geom1->bvol.LLB.y < geom2->bvol.LLB.y) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.LLB.z , geom2->bvol.LLB.z) ) { if (geom1->bvol.LLB.z < geom2->bvol.LLB.z) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.URT.x , geom2->bvol.URT.x) ) { if (geom1->bvol.URT.x < geom2->bvol.URT.x) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.URT.y , geom2->bvol.URT.y) ) { if (geom1->bvol.URT.y < geom2->bvol.URT.y) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.URT.z , geom2->bvol.URT.z) ) { if (geom1->bvol.URT.z < geom2->bvol.URT.z) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } PG_FUNCTION_INFO_V1(geometry_eq); Datum geometry_eq(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); //elog(NOTICE, "geometry_eq called"); if (geom1->SRID != geom2->SRID) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); elog(ERROR, "Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } if ( ! FPeq(geom1->bvol.LLB.x , geom2->bvol.LLB.x) ) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.LLB.y , geom2->bvol.LLB.y) ) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.LLB.z , geom2->bvol.LLB.z) ) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.URT.x , geom2->bvol.URT.x) ) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.URT.y , geom2->bvol.URT.y) ) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.URT.z , geom2->bvol.URT.z) ) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } PG_FUNCTION_INFO_V1(geometry_ge); Datum geometry_ge(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); //elog(NOTICE, "geometry_ge called"); if (geom1->SRID != geom2->SRID) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); elog(ERROR, "Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } if ( ! FPeq(geom1->bvol.LLB.x , geom2->bvol.LLB.x) ) { if (geom1->bvol.LLB.x > geom2->bvol.LLB.x) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.LLB.y , geom2->bvol.LLB.y) ) { if (geom1->bvol.LLB.y > geom2->bvol.LLB.y) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.LLB.z , geom2->bvol.LLB.z) ) { if (geom1->bvol.LLB.z > geom2->bvol.LLB.z) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.URT.x , geom2->bvol.URT.x) ) { if (geom1->bvol.URT.x > geom2->bvol.URT.x) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.URT.y , geom2->bvol.URT.y) ) { if (geom1->bvol.URT.y > geom2->bvol.URT.y) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } PG_RETURN_BOOL(FALSE); } if ( ! FPeq(geom1->bvol.URT.z , geom2->bvol.URT.z) ) { if (geom1->bvol.URT.z > geom2->bvol.URT.z) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } PG_RETURN_BOOL(FALSE); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } PG_FUNCTION_INFO_V1(geometry_gt); Datum geometry_gt(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); //elog(NOTICE, "geometry_gt called"); if (geom1->SRID != geom2->SRID) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); elog(ERROR, "Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } if ( ! FPeq(geom1->bvol.LLB.x , geom2->bvol.LLB.x) ) { if (geom1->bvol.LLB.x > geom2->bvol.LLB.x) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } } if ( ! FPeq(geom1->bvol.LLB.y , geom2->bvol.LLB.y) ) { if (geom1->bvol.LLB.y > geom2->bvol.LLB.y) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } } if ( ! FPeq(geom1->bvol.LLB.z , geom2->bvol.LLB.z) ) { if (geom1->bvol.LLB.z > geom2->bvol.LLB.z) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } } if ( ! FPeq(geom1->bvol.URT.x , geom2->bvol.URT.x) ) { if (geom1->bvol.URT.x > geom2->bvol.URT.x) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } } if ( ! FPeq(geom1->bvol.URT.y , geom2->bvol.URT.y) ) { if (geom1->bvol.URT.y > geom2->bvol.URT.y) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } } if ( ! FPeq(geom1->bvol.URT.z , geom2->bvol.URT.z) ) { if (geom1->bvol.URT.z > geom2->bvol.URT.z) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(TRUE); } } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_BOOL(FALSE); } PG_FUNCTION_INFO_V1(geometry_cmp); Datum geometry_cmp(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); //elog(NOTICE, "geometry_cmp called"); if (geom1->SRID != geom2->SRID) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); elog(ERROR, "Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } if ( ! FPeq(geom1->bvol.LLB.x , geom2->bvol.LLB.x) ) { if (geom1->bvol.LLB.x < geom2->bvol.LLB.x) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(-1); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(1); } if ( ! FPeq(geom1->bvol.LLB.y , geom2->bvol.LLB.y) ) { if (geom1->bvol.LLB.y < geom2->bvol.LLB.y) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(-1); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(1); } if ( ! FPeq(geom1->bvol.LLB.z , geom2->bvol.LLB.z) ) { if (geom1->bvol.LLB.z < geom2->bvol.LLB.z) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(-1); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(1); } if ( ! FPeq(geom1->bvol.URT.x , geom2->bvol.URT.x) ) { if (geom1->bvol.URT.x < geom2->bvol.URT.x) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(-1); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(1); } if ( ! FPeq(geom1->bvol.URT.y , geom2->bvol.URT.y) ) { if (geom1->bvol.URT.y < geom2->bvol.URT.y) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(-1); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(1); } if ( ! FPeq(geom1->bvol.URT.z , geom2->bvol.URT.z) ) { if (geom1->bvol.URT.z < geom2->bvol.URT.z) { if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(-1); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(1); } if ( (Pointer *)PG_GETARG_DATUM(0) != (Pointer *)geom1 ) pfree(geom1); if ( (Pointer *)PG_GETARG_DATUM(1) != (Pointer *)geom2 ) pfree(geom2); PG_RETURN_INT32(0); } //order of points in a ring IS important //order of rings is also important bool is_same_polygon(POLYGON3D *poly1, POLYGON3D *poly2) { int i; int numb_points; POINT3D *pts1, *pts2; if (poly1->nrings != poly2->nrings) return FALSE; numb_points = 0; for (i=0; i< poly1->nrings; i++) { if (poly1->npoints[i] != poly2->npoints[i]) return FALSE; numb_points += poly1->npoints[i]; } pts1 = (POINT3D *) ( (char *)&(poly1->npoints[poly1->nrings] ) ); pts1 = (POINT3D *) MAXALIGN(pts1); pts2 = (POINT3D *) ( (char *)&(poly2->npoints[poly2->nrings] ) ); pts2 = (POINT3D *) MAXALIGN(pts2); for (i=0; i< numb_points; i++) { if (!( is_same_point( &pts1[i], &pts2[i] ) ) ) { return FALSE; } } return TRUE; } //FIXED: // geom1 same as geom2 // iff // + have same type // + have same # objects // + have same bvol // + each object in geom1 has a corresponding object in geom2 (see above) PG_FUNCTION_INFO_V1(geometry_same); Datum geometry_same(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); bool result; int i,j; bool *already_hit; int32 type1,type2; int32 *offsets1,*offsets2; char *o1,*o2; if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } //printf("in geometry_same\n"); //This was removed because this doesnt actually refer to the geometry, but how it is represented // to the user //easy tests //if (geom1->type != geom2-> type) // PG_RETURN_BOOL(FALSE); if (geom1->nobjs != geom2->nobjs) PG_RETURN_BOOL(FALSE); result = DatumGetBool(DirectFunctionCall2(box3d_same, PointerGetDatum(&geom1->bvol), PointerGetDatum(&geom2->bvol) ) ); if (result == FALSE) PG_RETURN_BOOL(FALSE); if (geom1->nobjs<1) return FALSE; // no objects (probably a BOXONLYTYPE) and bvols dont match // printf(" +have to do it the hard way"); already_hit = (bool *) palloc (geom2->nobjs * sizeof(bool) ); memset(already_hit, 0, geom2->nobjs * sizeof(bool) ); //all false offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; offsets2 = (int32 *) ( ((char *) &(geom2->objType[0] ))+ sizeof(int32) * geom2->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom1->nobjs; j++) //for each object in geom1 { o1 = (char *) geom1 +offsets1[j] ; type1= geom1->objType[j]; for(i=0;inobjs; i++) //for each object in geom2 { o2 = (char *) geom2 +offsets2[i] ; type2= geom2->objType[j]; if ( (type1 == type2) && (!(already_hit[i])) ) { //see if they match if (type1 == POINTTYPE) { if (is_same_point((POINT3D *) o1,(POINT3D *) o2)) { already_hit[i] = TRUE; break; } } if (type1 == LINETYPE) { if (is_same_line((LINE3D *) o1,(LINE3D *) o2)) { already_hit[i] = TRUE; break; } } if (type2 == POLYGONTYPE) { if (is_same_polygon((POLYGON3D *) o1,(POLYGON3D *) o2)) { already_hit[i] = TRUE; break; } } } } if (i == geom1->nobjs) PG_RETURN_BOOL(FALSE); // couldnt find match } PG_RETURN_BOOL(TRUE); } /******************************************************* *Box3d routines *******************************************************/ /* box_overlap - does box1 overlap box2? */ PG_FUNCTION_INFO_V1(box3d_overlap); Datum box3d_overlap(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); BOX3D *box2 = (BOX3D *) PG_GETARG_POINTER(1); PG_RETURN_BOOL(box3d_ov(box1, box2)); } /* box_overleft - is the right edge of box1 to the left of * the right edge of box2? * * This is "less than or equal" for the end of a time range, * when time ranges are stored as rectangles. */ PG_FUNCTION_INFO_V1(box3d_overleft); Datum box3d_overleft(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); BOX3D *box2 = (BOX3D *) PG_GETARG_POINTER(1); bool result; result = FPle(box1->URT.x, box2->URT.x); //printf("box3d_overleft about to return %i\n",(int) result); PG_RETURN_BOOL(result); } /* box_right - is box1 strictly right of box2? */ PG_FUNCTION_INFO_V1(box3d_right); Datum box3d_right(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); BOX3D *box2 = (BOX3D *) PG_GETARG_POINTER(1); bool result; result = FPgt(box1->LLB.x, box2->URT.x); //printf("box3d_rightabout to return %i\n",(int) result); PG_RETURN_BOOL(result); } /* box_contain - does box1 contain box2? */ PG_FUNCTION_INFO_V1(box3d_contain); Datum box3d_contain(PG_FUNCTION_ARGS) { BOX3D *box1 = (BOX3D *) PG_GETARG_POINTER(0); BOX3D *box2 = (BOX3D *) PG_GETARG_POINTER(1); bool result; result = FPge(box1->URT.x, box2->URT.x) && FPle(box1->LLB.x, box2->LLB.x) && FPge(box1->URT.y, box2->URT.y) && FPle(box1->LLB.y, box2->LLB.y); //printf("box3d_contain about to return %i\n",(int) result); PG_RETURN_BOOL(result); } /****************************************************** * RTREE index requires these 3 functions ******************************************************/ PG_FUNCTION_INFO_V1(geometry_union); Datum geometry_union(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); GEOMETRY *result = (GEOMETRY *) palloc(sizeof(GEOMETRY) ); BOX3D *n; if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } result->size = sizeof(GEOMETRY); result->type = BBOXONLYTYPE; result->nobjs = -1; result->SRID = geom1->SRID; result->scale = geom1->scale; result->offsetX = geom1->offsetX; result->offsetY = geom1->offsetY; n = &result->bvol; //cheat - just change the bbox n->URT.x = max(geom1->bvol.URT.x, geom2->bvol.URT.x); n->URT.y = max(geom1->bvol.URT.y, geom2->bvol.URT.y); n->LLB.x = min(geom1->bvol.LLB.x, geom2->bvol.LLB.x); n->LLB.y = min(geom1->bvol.LLB.y, geom2->bvol.LLB.y); n->URT.z = max(geom1->bvol.URT.z, geom2->bvol.URT.z); n->LLB.z = min(geom1->bvol.LLB.z, geom2->bvol.LLB.z); PG_FREE_IF_COPY(geom1, 0); PG_FREE_IF_COPY(geom2, 1); PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(geometry_inter); Datum geometry_inter(PG_FUNCTION_ARGS) { GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); GEOMETRY *result = (GEOMETRY *) palloc(sizeof(GEOMETRY) ); if (geom1->SRID != geom2->SRID) { elog(ERROR,"Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } result->size = sizeof(GEOMETRY); result->type = BBOXONLYTYPE; result->nobjs = -1; result->SRID = geom1->SRID; result->scale = geom1->scale; result->offsetX = geom1->offsetX; result->offsetY = geom1->offsetY; result->bvol.URT.x = min(geom1->bvol.URT.x, geom2->bvol.URT.x); result->bvol.URT.y = min(geom1->bvol.URT.y, geom2->bvol.URT.y); result->bvol.URT.z = min(geom1->bvol.URT.z, geom2->bvol.URT.z); result->bvol.LLB.x = max(geom1->bvol.LLB.x, geom2->bvol.LLB.x); result->bvol.LLB.y = max(geom1->bvol.LLB.y, geom2->bvol.LLB.y); result->bvol.LLB.z = max(geom1->bvol.LLB.z, geom2->bvol.LLB.z); if (result->bvol.URT.x < result->bvol.LLB.x || result->bvol.URT.y < result->bvol.LLB.y) { pfree(result); /* Indicate "no intersection" by returning NULL pointer */ result = NULL; } PG_FREE_IF_COPY(geom1, 0); PG_FREE_IF_COPY(geom2, 1); PG_RETURN_POINTER(result); } PG_FUNCTION_INFO_V1(geometry_size); Datum geometry_size(PG_FUNCTION_ARGS) { Pointer aptr = PG_GETARG_POINTER(0); float *size = (float *) PG_GETARG_POINTER(1); GEOMETRY *a; float xdim,ydim; if (aptr == NULL) { *size = 0.0; //printf(" + aprt==null return in 0.0\n"); PG_RETURN_VOID(); } a = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); if (a->bvol.URT.x <= a->bvol.LLB.x || a->bvol.URT.y <= a->bvol.LLB.y) *size = 0.0; else { xdim = (a->bvol.URT.x - a->bvol.LLB.x); ydim = (a->bvol.URT.y - a->bvol.LLB.y); *size = (float) (xdim * ydim); } //printf(" + about to return (and free) with %e\n",*size); /* Avoid leaking memory when handed toasted input. */ PG_FREE_IF_COPY(a, 0); PG_RETURN_VOID(); } postgis-0.8.1/postgis_proj.c0100664000077300001440000002407307763701733015537 0ustar postgisusers /********************************************************************** * $Id: postgis_proj.c,v 1.8 2025/12/04 18:58:35 dblasby Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_proj.c,v $ * Revision 1.8 2025/12/04 18:58:35 dblasby * changed david skae to skea * * Revision 1.7 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" #define SHOW_DIGS_DOUBLE 15 #define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1) // distance from -126 49 to -126 49.011096139863 in 'SPHEROID["GRS_1980",6378137,298.257222101]' is 1234.000 //use the WKT definition of an ellipsoid // ie. SPHEROID["name",A,rf] or SPHEROID("name",A,rf) // SPHEROID["GRS_1980",6378137,298.257222101] // wkt says you can use "(" or "[" PG_FUNCTION_INFO_V1(ellipsoid_in); Datum ellipsoid_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); SPHEROID *sphere = (SPHEROID *) palloc(sizeof(SPHEROID)); int nitems; double rf; memset(sphere,0, sizeof(SPHEROID)); if (strstr(str,"SPHEROID") != str ) { elog(ERROR,"SPHEROID parser - doesnt start with SPHEROID"); pfree(sphere); PG_RETURN_NULL(); } nitems = sscanf(str,"SPHEROID[\"%19[^\"]\",%lf,%lf]",sphere->name,&sphere->a,&rf); if ( nitems==0) nitems = sscanf(str,"SPHEROID(\"%19[^\"]\",%lf,%lf)",sphere->name,&sphere->a,&rf); if (nitems != 3) { elog(ERROR,"SPHEROID parser - couldnt parse the spheroid"); pfree(sphere); PG_RETURN_NULL(); } sphere->f = 1.0/rf; sphere->b = sphere->a - (1.0/rf)*sphere->a; sphere->e_sq = ((sphere->a*sphere->a) - (sphere->b*sphere->b) )/ (sphere->a*sphere->a); sphere->e = sqrt(sphere->e_sq); PG_RETURN_POINTER(sphere); } PG_FUNCTION_INFO_V1(ellipsoid_out); Datum ellipsoid_out(PG_FUNCTION_ARGS) { SPHEROID *sphere = (SPHEROID *) PG_GETARG_POINTER(0); char *result; result = palloc(MAX_DIGS_DOUBLE + MAX_DIGS_DOUBLE + 20 + 9 + 2); sprintf(result,"SPHEROID(\"%s\",%.15g,%.15g)", sphere->name,sphere->a, 1.0/sphere->f); PG_RETURN_CSTRING(result); } //support function for distance calc //code is taken from David Skea //Geographic Data BC, Province of British Columbia, Canada. // Thanks to GDBC and David Skea for allowing this to be // put in PostGIS. double deltaLongitude(double azimuth, double sigma, double tsm,SPHEROID *sphere) { // compute the expansion C double das,C; double ctsm,DL; das = cos(azimuth)*cos(azimuth); C = sphere->f/16.0 * das * (4.0 + sphere->f * (4.0 - 3.0 * das)); // compute the difference in longitude ctsm = cos(tsm); DL = ctsm + C * cos(sigma) * (-1.0 + 2.0 * ctsm*ctsm); DL = sigma + C * sin(sigma) * DL; return (1.0 - C) * sphere->f * sin(azimuth) * DL; } //support function for distance calc //code is taken from David Skea //Geographic Data BC, Province of British Columbia, Canada. // Thanks to GDBC and David Skea for allowing this to be // put in PostGIS. double mu2(double azimuth,SPHEROID *sphere) { double e2; e2 = sqrt(sphere->a*sphere->a-sphere->b*sphere->b)/sphere->b; return cos(azimuth)*cos(azimuth) * e2*e2; } //support function for distance calc //code is taken from David Skea //Geographic Data BC, Province of British Columbia, Canada. // Thanks to GDBC and David Skea for allowing this to be // put in PostGIS. double bigA(double u2) { return 1.0 + u2/256.0 * (64.0 + u2 * (-12.0 + 5.0 * u2)); } //support function for distance calc //code is taken from David Skea //Geographic Data BC, Province of British Columbia, Canada. // Thanks to GDBC and David Skea for allowing this to be // put in PostGIS. double bigB(double u2) { return u2/512.0 * (128.0 + u2 * (-64.0 + 37.0 * u2)); } //given 2 lat/longs and ellipse, find the distance // note original r = 1st, s=2nd location double distance_ellipse(double lat1, double long1, double lat2, double long2, SPHEROID *sphere) { //code is taken from David Skea //Geographic Data BC, Province of British Columbia, Canada. // Thanks to GDBC and David Skea for allowing this to be // put in PostGIS. double L1,L2,sinU1,sinU2,cosU1,cosU2; double dl,dl1,dl2,dl3,cosdl1,sindl1; double cosSigma,sigma,azimuthEQ,tsm; double u2,A,B; double dsigma; int iterations; L1 = atan((1.0 - sphere->f ) * tan( lat1) ); L2 = atan((1.0 - sphere->f ) * tan( lat2) ); sinU1 = sin(L1); sinU2 = sin(L2); cosU1 = cos(L1); cosU2 = cos(L2); dl = long2- long1; dl1 = dl; cosdl1 = cos(dl); sindl1 = sin(dl); iterations = 0; do { cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosdl1; sigma = acos(cosSigma); azimuthEQ = asin((cosU1 * cosU2 * sindl1)/sin(sigma)); tsm = acos(cosSigma - (2.0 * sinU1 * sinU2)/(cos(azimuthEQ)*cos(azimuthEQ))); dl2 = deltaLongitude(azimuthEQ, sigma, tsm,sphere); dl3 = dl1 - (dl + dl2); dl1 = dl + dl2; cosdl1 = cos(dl1); sindl1 = sin(dl1); iterations++; } while ( (iterations<999) && (fabs(dl3) > 1.0e-032)); // compute expansions A and B u2 = mu2(azimuthEQ,sphere); A = bigA(u2); B = bigB(u2); // compute length of geodesic dsigma = B * sin(sigma) * (cos(tsm) + (B*cosSigma*(-1.0 + 2.0 * (cos(tsm)*cos(tsm))))/4.0); return sphere->b * (A * (sigma - dsigma)); } double length2d_ellipse_linestring(LINE3D *line, SPHEROID *sphere) { int i; POINT3D *frm,*to; double dist = 0.0; if (line->npoints <2) return 0.0; //must have >1 point to make sense frm = &line->points[0]; for (i=1; inpoints;i++) { to = &line->points[i]; dist += distance_ellipse(frm->y*M_PI/180.0 , frm->x*M_PI/180.0, to->y*M_PI/180.0 , to->x*M_PI/180.0, sphere); frm = to; } return dist; } double length3d_ellipse_linestring(LINE3D *line, SPHEROID *sphere) { int i; POINT3D *frm,*to; double dist = 0.0; double dist_ellipse; if (line->npoints <2) return 0.0; //must have >1 point to make sense frm = &line->points[0]; for (i=1; inpoints;i++) { to = &line->points[i]; dist_ellipse = distance_ellipse(frm->y*M_PI/180.0 , frm->x*M_PI/180.0, to->y*M_PI/180.0 , to->x*M_PI/180.0, sphere); dist += sqrt(dist_ellipse*dist_ellipse + (frm->z*frm->z) ); frm = to; } return dist; } // length_ellipsoid(GEOMETRY, SPHEROID) // find the "length of a geometry" // length2d(point) = 0 // length2d(line) = length of line // length2d(polygon) = 0 // uses ellipsoidal math to find the distance //// x's are longitude, and y's are latitude - both in decimal degrees PG_FUNCTION_INFO_V1(length_ellipsoid); Datum length_ellipsoid(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); SPHEROID *sphere = (SPHEROID *) PG_GETARG_POINTER(1); int32 *offsets1; char *o1; int32 type1,j; LINE3D *line; double dist = 0.0; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o1 = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == LINETYPE) //LINESTRING { line = (LINE3D *) o1; dist += length2d_ellipse_linestring(line,sphere); } } PG_RETURN_FLOAT8(dist); } // length3d_ellipsoid(GEOMETRY, SPHEROID) // find the "length of a geometry" // length3d(point) = 0 // length3d(line) = length of line // length3d(polygon) = 0 // uses ellipsoidal math to find the distance on the XY plane, then // uses simple Pythagoras theorm to find the 3d distance on each segment // x's are longitude, and y's are latitude - both in decimal degrees PG_FUNCTION_INFO_V1(length3d_ellipsoid); Datum length3d_ellipsoid(PG_FUNCTION_ARGS) { GEOMETRY *geom = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); SPHEROID *sphere = (SPHEROID *) PG_GETARG_POINTER(1); int32 *offsets1; char *o1; int32 type1,j; LINE3D *line; double dist = 0.0; offsets1 = (int32 *) ( ((char *) &(geom->objType[0] ))+ sizeof(int32) * geom->nobjs ) ; //now have to do a scan of each object for (j=0; j< geom->nobjs; j++) //for each object in geom1 { o1 = (char *) geom +offsets1[j] ; type1= geom->objType[j]; if (type1 == LINETYPE) //LINESTRING { line = (LINE3D *) o1; dist += length3d_ellipse_linestring(line,sphere); } } PG_RETURN_FLOAT8(dist); } //distance (geometry,geometry, sphere) // -geometrys MUST be points PG_FUNCTION_INFO_V1(distance_ellipsoid); Datum distance_ellipsoid(PG_FUNCTION_ARGS) { SPHEROID *sphere = (SPHEROID *) PG_GETARG_POINTER(2); GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); GEOMETRY *geom2 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); POINT3D *pt1,*pt2; int32 *offsets1; int32 *offsets2; char *o; if (geom1->SRID != geom2->SRID) { elog(ERROR,"optimistic_overlap:Operation on two GEOMETRIES with different SRIDs\n"); PG_RETURN_NULL(); } if (geom1->type != POINTTYPE) { elog(ERROR,"optimistic_overlap: first arg isnt a point\n"); PG_RETURN_NULL(); } if (geom2->type != POINTTYPE) { elog(ERROR,"optimistic_overlap: second arg isnt a point\n"); PG_RETURN_NULL(); } offsets1 = (int32 *) ( ((char *) &(geom1->objType[0] ))+ sizeof(int32) * geom1->nobjs ) ; offsets2 = (int32 *) ( ((char *) &(geom2->objType[0] ))+ sizeof(int32) * geom2->nobjs ) ; o = (char *) geom1 +offsets1[0] ; pt1 = (POINT3D *) o; o = (char *) geom2 +offsets2[0] ; pt2 = (POINT3D *) o; PG_RETURN_FLOAT8(distance_ellipse(pt1->y*M_PI/180.0 ,pt1->x*M_PI/180.0 , pt2->y*M_PI/180.0 ,pt2->x*M_PI/180.0 , sphere) ); //double distance_ellipse(double lat1, double long1, // double lat2, double long2, // SPHEROID *sphere) } postgis-0.8.1/postgis_sql_71_end.sql.in0100664000077300001440000003264007774253025017500 0ustar postgisusers -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- $Id: postgis_sql_71_end.sql.in,v 1.5 2024/12/30 10:40:21 strk Exp $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net -- Copyright 2001-2003 Refractions Research Inc. -- -- This is free software; you can redistribute and/or modify it under -- the terms of hte GNU General Public Licence. See the COPYING file. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- $Log: postgis_sql_71_end.sql.in,v $ -- Revision 1.5 2024/12/30 10:40:21 strk -- For all versions: -- Updated fix_geometry_columns to use a more readable format in queries. -- -- For PG >= 73: -- Updated fix_geometry_columns() to consider schema when fixing attrelid and -- varattnum, also changed empty value to 'public' string for records with -- an invalid schema specification. -- Updated DropGeometryColumn to actually issue the -- ALTER TABLE DROP COLUMN query. -- -- Revision 1.4 2024/12/23 09:00:12 strk -- AddGeometryColumn, DropGeometryColum moved to version-specific scripts. -- Schema support enabled for version 73 and 74. -- -- Revision 1.3 2025/12/18 18:07:06 strk -- Changed fix_geometry_columns() for PG >= 73 so to set f_table_schema to -- the empty string if its value is not a valid pg namespace. -- -- Revision 1.2 2025/07/01 18:30:55 pramsey -- Added CVS revision headers. -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- GiST support functions -- CREATE FUNCTION ggeometry_consistent(opaque,geometry,int4) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION ggeometry_compress(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION ggeometry_penalty(opaque,opaque,opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION ggeometry_picksplit(opaque, opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION ggeometry_union(bytea, opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION ggeometry_same(opaque, opaque, opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION rtree_decompress(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C'; -- -- R-Tree support functions -- CREATE FUNCTION geometry_union(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION geometry_inter(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION geometry_size(geometry,opaque) RETURNS float4 AS '@MODULE_FILENAME@' LANGUAGE 'C'; INSERT INTO pg_opclass (opcname, opcdeftype) SELECT 'gist_geometry_ops', oid FROM pg_type WHERE typname = 'geometry'; SELECT o.oid AS opoid, o.oprname INTO TABLE rt_ops_tmp FROM pg_operator o, pg_type t WHERE o.oprleft = t.oid AND t.typname = 'geometry'; -- box_left INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) SELECT am.oid, opcl.oid, c.opoid, 1 FROM pg_am am, pg_opclass opcl, rt_ops_tmp c WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND c.oprname = '<<'; -- box_overleft INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) SELECT am.oid, opcl.oid, c.opoid, 2 FROM pg_am am, pg_opclass opcl, rt_ops_tmp c WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND c.oprname = '&<'; -- box_overlap INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) SELECT am.oid, opcl.oid, c.opoid, 3 FROM pg_am am, pg_opclass opcl, rt_ops_tmp c WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND c.oprname = '&&'; -- box_overright INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) SELECT am.oid, opcl.oid, c.opoid, 4 FROM pg_am am, pg_opclass opcl, rt_ops_tmp c WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND c.oprname = '&>'; -- box_right INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) SELECT am.oid, opcl.oid, c.opoid, 5 FROM pg_am am, pg_opclass opcl, rt_ops_tmp c WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND c.oprname = '>>'; -- box_same INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) SELECT am.oid, opcl.oid, c.opoid, 6 FROM pg_am am, pg_opclass opcl, rt_ops_tmp c WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND c.oprname = '~='; -- box_contains INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) SELECT am.oid, opcl.oid, c.opoid, 7 FROM pg_am am, pg_opclass opcl, rt_ops_tmp c WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND c.oprname = '~'; -- box_contained INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) SELECT am.oid, opcl.oid, c.opoid, 8 FROM pg_am am, pg_opclass opcl, rt_ops_tmp c WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND c.oprname = '@'; DROP TABLE rt_ops_tmp; -- -- Add the entries to amproc for the support methods. -- Note the amprocnum numbers associated with each are specific! -- INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) SELECT am.oid, opcl.oid, pro.oid, 1 FROM pg_am am, pg_opclass opcl, pg_proc pro WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND proname = 'ggeometry_consistent'; INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) SELECT am.oid, opcl.oid, pro.oid, 2 FROM pg_am am, pg_opclass opcl, pg_proc pro WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND proname = 'ggeometry_union'; INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) SELECT am.oid, opcl.oid, pro.oid, 3 FROM pg_am am, pg_opclass opcl, pg_proc pro WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND proname = 'ggeometry_compress'; INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) SELECT am.oid, opcl.oid, pro.oid, 4 FROM pg_am am, pg_opclass opcl, pg_proc pro WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND proname = 'rtree_decompress'; INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) SELECT am.oid, opcl.oid, pro.oid, 5 FROM pg_am am, pg_opclass opcl, pg_proc pro WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND proname = 'ggeometry_penalty'; INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) SELECT am.oid, opcl.oid, pro.oid, 6 FROM pg_am am, pg_opclass opcl, pg_proc pro WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND proname = 'ggeometry_picksplit'; INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) SELECT am.oid, opcl.oid, pro.oid, 7 FROM pg_am am, pg_opclass opcl, pg_proc pro WHERE amname = 'gist' AND opcname = 'gist_geometry_ops' AND proname = 'ggeometry_same'; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- FIX_GEOMETRY_COLUMNS() CREATE FUNCTION fix_geometry_columns() RETURNS text AS ' BEGIN UPDATE geometry_columns SET attrelid = ( SELECT c.oid AS attrelid FROM pg_class c, pg_attribute a WHERE c.relname = geometry_columns.f_table_name::name AND a.attrelid = c.oid AND a.attname = geometry_columns.f_geometry_column::name ); UPDATE geometry_columns SET varattnum = ( SELECT a.attnum FROM pg_class c, pg_attribute a WHERE c.relname = geometry_columns.f_table_name::name AND a.attrelid = c.oid AND a.attname = geometry_columns.f_geometry_column::name ); RETURN ''geometry_columns table is now linked to the system tables''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ADDGEOMETRYCOLUMN ( -- , ,
, , -- , , ) -- -- Type can be one of geometry, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON, -- MULTIPOLYGON, LINESTRING, or MULTILINESTRING. -- -- Types (except geometry) are checked for consistency using a CHECK constraint -- uses SQL ALTER TABLE command to add the geometry column to the table. -- Addes a row to geometry_columns. -- Addes a constraint on the table that all the geometries MUST have the same -- SRID. Checks the coord_dimension to make sure its between 0 and 3. -- Should also check the precision grid (future expansion). -- Calls fix_geometry_columns() at the end. -- CREATE FUNCTION AddGeometryColumn(varchar,varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS ' DECLARE catalog_name alias for $1; schema_name alias for $2; table_name alias for $3; column_name alias for $4; new_srid alias for $5; new_type alias for $6; new_dim alias for $7; BEGIN IF ( not ( (new_type =''GEOMETRY'') or (new_type =''GEOMETRYCOLLECTION'') or (new_type =''POINT'') or (new_type =''MULTIPOINT'') or (new_type =''POLYGON'') or (new_type =''MULTIPOLYGON'') or (new_type =''LINESTRING'') or (new_type =''MULTILINESTRING'')) ) THEN RAISE EXCEPTION ''Invalid type name - valid ones are: GEOMETRY, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON, MULTIPOLYGON, LINESTRING, or MULTILINESTRING ''; return ''fail''; END IF; IF ( (new_dim >3) or (new_dim <0) ) THEN RAISE EXCEPTION ''invalid dimension''; return ''fail''; END IF; EXECUTE ''ALTER TABLE '' || quote_ident(table_name) || '' ADD COLUMN '' || quote_ident(column_name) || '' geometry ''; EXECUTE ''INSERT INTO geometry_columns VALUES ('' || quote_literal('''') || '','' || quote_literal('''') || '','' || quote_literal(table_name) || '','' || quote_literal(column_name) || '','' || new_dim || '','' || new_srid || '','' || quote_literal(new_type) || '')''; EXECUTE ''select fix_geometry_columns()''; EXECUTE ''ALTER TABLE '' || quote_ident(table_name) || '' ADD CHECK (SRID('' || quote_ident(column_name) || '') = '' || new_srid || '')'' ; IF (not(new_type = ''GEOMETRY'')) THEN EXECUTE ''ALTER TABLE '' || quote_ident(table_name) || '' ADD CHECK (geometrytype('' || quote_ident(column_name) || '')='' || quote_literal(new_type) || '' OR ('' || quote_ident(column_name) || '') is null)''; END IF; return ''Geometry column '' || column_name || '' added to table '' || table_name || '' WITH a SRID of '' || new_srid || '' and type '' || new_type; END; ' LANGUAGE 'plpgsql' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ADDGEOMETRYCOLUMN ( ,
, , , , ) -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CREATE FUNCTION AddGeometryColumn(varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS ' DECLARE ret text; BEGIN SELECT AddGeometryColumn('''',$1,$2,$3,$4,$5,$6) into ret; RETURN ret; END; ' LANGUAGE 'plpgsql' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- DROPGEOMETRYCOLUMN( ,
, ) -- -- There is no ALTER TABLE DROP COLUMN command in postgresql -- There is no ALTER TABLE DROP CONSTRAINT command in postgresql -- So, we: -- 1. remove the unwanted geom column reference from the -- geometry_columns table -- 2. update the table so that the geometry column is all NULLS -- This is okay since the CHECK srid(geometry) = is not -- checked if geometry is NULL (the isstrict attribute on srid()) -- 3. add another constraint that the geometry column must be NULL -- This, effectively kills the geometry column -- (a) its not in the geometry_column table -- (b) it only has nulls in it -- (c) you cannot add anything to the geom column because it must be NULL -- -- This will screw up if you put a NOT NULL constraint on the geometry -- column, so the first thing we must do is remove this constraint (its a -- modification of the pg_attribute system table) -- -- We also check to see if the table/column exists in the geometry_columns -- table CREATE FUNCTION DropGeometryColumn(varchar,varchar,varchar) RETURNS text AS ' DECLARE schema_name alias for $1; table_name alias for $2; column_name alias for $3; myrec RECORD; okay boolean; BEGIN -- first we find out if the column is in the geometry_columns table okay = ''f''; FOR myrec IN SELECT * from geometry_columns where f_table_schema = schema_name and f_table_name = table_name and f_geometry_column = column_name LOOP okay := ''t''; END LOOP; IF (okay <> ''t'') THEN RAISE EXCEPTION ''column not found in geometry_columns table''; return ''f''; END IF; -- ensure the geometry column does not have a NOT NULL attribute EXECUTE ''update pg_attribute set attnotnull = false from pg_class where pg_attribute.attrelid = pg_class.oid and pg_class.relname = '' || quote_literal(table_name) ||'' and pg_attribute.attname = '' || quote_literal(column_name); -- remove ref from geometry_columns table EXECUTE ''delete from geometry_columns where f_table_schema = '' || quote_literal(database_name) || '' and f_table_name = '' || quote_literal(table_name) || '' and f_geometry_column = '' || quote_literal(column_name ); -- update the given table/column so that it it all NULLS EXECUTE ''update "''||table_name||''" set "''||column_name||''"= NULL''; -- add = NULL constraint to given table/column EXECUTE ''ALTER TABLE "''||table_name||''" ADD CHECK ("''||column_name||''" IS NULL)''; RETURN table_name || ''.'' || column_name ||'' effectively removed.''; END; ' LANGUAGE 'plpgsql' WITH (isstrict); END TRANSACTION; postgis-0.8.1/postgis_sql_71_start.sql.in0100664000077300001440000000756407700351537020072 0ustar postgisusers -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- $Id: postgis_sql_71_start.sql.in,v 1.2 2025/07/01 18:30:55 pramsey Exp $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net -- Copyright 2001-2003 Refractions Research Inc. -- -- This is free software; you can redistribute and/or modify it under -- the terms of hte GNU General Public Licence. See the COPYING file. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- $Log: postgis_sql_71_start.sql.in,v $ -- Revision 1.2 2025/07/01 18:30:55 pramsey -- Added CVS revision headers. -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BEGIN TRANSACTION; -- You might have to define the PL/PgSQL language usually done with the -- changelang script. -- Here's some hokey code to test to see if PL/PgSQL is installed -- if it is, you get a message "PL/PgSQL is installed" -- otherwise it will give a big error message. (select 'PL/PgSQL is installed.' as message from pg_language where lanname='plpgsql') union (select 'You must install PL/PgSQL before running this SQL file,\nor you will get an error. To install PL/PgSQL run:\n\tcreatelang plpgsql '::text as message) order by message limit 1; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- HISTOGRAM2D CREATE FUNCTION histogram2d_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION histogram2d_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE histogram2d ( alignment = double, internallength = variable, input = histogram2d_in, output = histogram2d_out, storage = main ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- BOX3D CREATE FUNCTION box3d_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION box3d_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE box3d ( alignment = double, internallength = 48, input = box3d_in, output = box3d_out ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- SPHEROID CREATE FUNCTION spheroid_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@','ellipsoid_in' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION spheroid_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@','ellipsoid_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE spheroid ( alignment = double, internallength = 65, input = spheroid_in, output = spheroid_out ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- WKB CREATE FUNCTION wkb_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@','WKB_in' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION wkb_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@','WKB_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE wkb ( internallength = variable, input = wkb_in, output = wkb_out, storage = extended ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- CHIP CREATE FUNCTION chip_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@','CHIP_in' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION chip_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@','CHIP_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE chip ( alignment = double, internallength = variable, input = chip_in, output = chip_out, storage = extended ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GEOMETRY CREATE FUNCTION geometry_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE geometry ( alignment = double, internallength = variable, input = geometry_in, output = geometry_out, storage = main ); -- -- GiST Selectivity Function -- CREATE FUNCTION postgis_gist_sel(oid, oid, int2, opaque, int4) RETURNS float8 AS '@MODULE_FILENAME@' LANGUAGE 'C'; postgis-0.8.1/postgis_sql_72_end.sql.in0100664000077300001440000004332507774253025017503 0ustar postgisusers -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- $Id: postgis_sql_72_end.sql.in,v 1.6 2024/12/30 10:40:21 strk Exp $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net -- Copyright 2001-2003 Refractions Research Inc. -- -- This is free software; you can redistribute and/or modify it under -- the terms of hte GNU General Public Licence. See the COPYING file. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- $Log: postgis_sql_72_end.sql.in,v $ -- Revision 1.6 2024/12/30 10:40:21 strk -- For all versions: -- Updated fix_geometry_columns to use a more readable format in queries. -- -- For PG >= 73: -- Updated fix_geometry_columns() to consider schema when fixing attrelid and -- varattnum, also changed empty value to 'public' string for records with -- an invalid schema specification. -- Updated DropGeometryColumn to actually issue the -- ALTER TABLE DROP COLUMN query. -- -- Revision 1.5 2024/12/23 09:00:12 strk -- AddGeometryColumn, DropGeometryColum moved to version-specific scripts. -- Schema support enabled for version 73 and 74. -- -- Revision 1.4 2025/12/18 18:07:06 strk -- Changed fix_geometry_columns() for PG >= 73 so to set f_table_schema to -- the empty string if its value is not a valid pg namespace. -- -- Revision 1.3 2025/07/01 18:30:55 pramsey -- Added CVS revision headers. -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- UPDATE_GEOMETRY_STATS() CREATE FUNCTION update_geometry_stats() RETURNS text AS ' BEGIN EXECUTE ''update geometry_columns set attrelid = (select pg_class.oid AS attrelid from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_GEOMETRY_column::name), varattnum = (select pg_attribute.attnum from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_GEOMETRY_column::name)''; execute ''update geometry_columns set stats = (build_histogram2d( create_histogram2d(find_extent(f_table_name,f_GEOMETRY_column),40 ),f_table_name::text, f_GEOMETRY_column::text)) ''; return ''done''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- UPDATE_GEOMETRY_STATS(
, ) CREATE FUNCTION update_geometry_stats(varchar,varchar) RETURNS text AS ' DECLARE tablename aliAS for $1; columnname aliAS for $2; BEGIN EXECUTE ''update geometry_columns set attrelid = (select pg_class.oid AS attrelid from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_GEOMETRY_column::name), varattnum = (select pg_attribute.attnum from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_GEOMETRY_column::name)''; execute ''update geometry_columns set stats = (build_histogram2d( create_histogram2d(find_extent(''|| quote_literal(tablename) || '',''||quote_literal(columnname) ||''),40 ),''|| quote_literal(tablename) || ''::text,''||quote_literal(columnname) ||''::text )) WHERE f_table_name=''|| quote_literal(tablename) || ''and f_GEOMETRY_column=''||quote_literal(columnname) ; return ''done''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- CREATE_HISTOGRAM2D( , ) -- -- Returns a histgram with 0s in all the boxes. CREATE FUNCTION create_histogram2d(box3d,int) RETURNS histogram2d AS '@MODULE_FILENAME@','create_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- BUILD_HISTOGRAM2D( , , ) -- CREATE FUNCTION build_histogram2d (HISTOGRAM2D,text,text) RETURNS histogram2d AS '@MODULE_FILENAME@','build_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- EXPLODE_HISTOGRAM2D( , ) -- CREATE FUNCTION explode_histogram2d (HISTOGRAM2D,text) RETURNS histogram2d AS '@MODULE_FILENAME@','explode_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ESTIMATE_HISTOGRAM2D( , ) -- CREATE FUNCTION estimate_histogram2d(HISTOGRAM2D,box) RETURNS float8 AS '@MODULE_FILENAME@','estimate_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- POSTGISCOSTESTIMATE() -- CREATE FUNCTION postgisgistcostestimate(opaque,opaque,opaque,opaque,opaque,opaque,opaque,opaque) RETURNS opaque AS '@MODULE_FILENAME@','postgisgistcostestimate' LANGUAGE 'C' with (isstrict); -- -- 7.2 GiST support functions -- CREATE FUNCTION ggeometry_consistent(opaque,geometry,int4) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE'C'; CREATE FUNCTION ggeometry_compress(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE'C'; CREATE FUNCTION gbox_penalty(opaque,opaque,opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE'C'; CREATE FUNCTION gbox_picksplit(opaque, opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE'C'; CREATE FUNCTION gbox_union(bytea, opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE'C'; CREATE FUNCTION gbox_same(box, box, opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE'C'; CREATE FUNCTION rtree_decompress(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE'C'; -- -- 7.2 RTREE support functions -- CREATE FUNCTION geometry_union(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE'C'; CREATE FUNCTION geometry_inter(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE'C'; CREATE FUNCTION geometry_size(geometry,opaque) RETURNS float4 AS '@MODULE_FILENAME@' LANGUAGE'C'; -- -- Create opclass index binding entries. -- INSERT INTO pg_opclass (opcamid, opcname, opcintype, opcdefault, opckeytype) VALUES ( (SELECT oid FROM pg_am WHERE amname = 'gist'), 'gist_geometry_ops', (SELECT oid FROM pg_type WHERE typname = 'geometry'), true, (SELECT oid FROM pg_type WHERE typname = 'box')); -- drop table rt_ops_tmp; SELECT o.oid AS opoid, o.oprname INTO TABLE rt_ops_tmp FROM pg_operator o, pg_type t WHERE o.oprleft = t.oid AND t.typname = 'geometry'; -- poly_left INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) SELECT opcl.oid, 1, true, c.opoid FROM pg_opclass opcl, rt_ops_tmp c WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and c.oprname = '<<'; -- poly_overleft INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) SELECT opcl.oid, 2, true, c.opoid FROM pg_opclass opcl, rt_ops_tmp c WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and c.oprname = '&<'; -- poly_overlap INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) SELECT opcl.oid, 3, true, c.opoid FROM pg_opclass opcl, rt_ops_tmp c WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and c.oprname = '&&'; -- poly_overright INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) SELECT opcl.oid, 4, true, c.opoid FROM pg_opclass opcl, rt_ops_tmp c WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and c.oprname = '&>'; -- poly_right INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) SELECT opcl.oid, 5, true, c.opoid FROM pg_opclass opcl, rt_ops_tmp c WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and c.oprname = '>>'; -- poly_same INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) SELECT opcl.oid, 6, true, c.opoid FROM pg_opclass opcl, rt_ops_tmp c WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and c.oprname = '~='; -- poly_contains INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) SELECT opcl.oid, 7, true, c.opoid FROM pg_opclass opcl, rt_ops_tmp c WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and c.oprname = '~'; -- poly_contained INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr) SELECT opcl.oid, 8, true, c.opoid FROM pg_opclass opcl, rt_ops_tmp c WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and c.oprname = '@'; DROP TABLE rt_ops_tmp; -- add the entries to amproc for the support methods -- note the amprocnum numbers associated with each are specific! INSERT INTO pg_amproc (amopclaid, amprocnum, amproc) SELECT opcl.oid, 1, pro.oid FROM pg_opclass opcl, pg_proc pro WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and proname = 'ggeometry_consistent'; INSERT INTO pg_amproc (amopclaid, amprocnum, amproc) SELECT opcl.oid, 2, pro.oid FROM pg_opclass opcl, pg_proc pro WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and proname = 'gbox_union'; INSERT INTO pg_amproc (amopclaid, amprocnum, amproc) SELECT opcl.oid, 3, pro.oid FROM pg_opclass opcl, pg_proc pro WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and proname = 'ggeometry_compress'; INSERT INTO pg_amproc (amopclaid, amprocnum, amproc) SELECT opcl.oid, 4, pro.oid FROM pg_opclass opcl, pg_proc pro WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and proname = 'rtree_decompress'; INSERT INTO pg_amproc (amopclaid, amprocnum, amproc) SELECT opcl.oid, 5, pro.oid FROM pg_opclass opcl, pg_proc pro WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and proname = 'gbox_penalty'; INSERT INTO pg_amproc (amopclaid, amprocnum, amproc) SELECT opcl.oid, 6, pro.oid FROM pg_opclass opcl, pg_proc pro WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and proname = 'gbox_picksplit'; INSERT INTO pg_amproc (amopclaid, amprocnum, amproc) SELECT opcl.oid, 7, pro.oid FROM pg_opclass opcl, pg_proc pro WHERE opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist') and opcname = 'gist_geometry_ops' and proname = 'gbox_same'; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- FIX_GEOMETRY_COLUMNS() CREATE FUNCTION fix_geometry_columns() RETURNS text AS ' BEGIN UPDATE geometry_columns SET attrelid = ( SELECT c.oid AS attrelid FROM pg_class c, pg_attribute a WHERE c.relname = geometry_columns.f_table_name::name AND a.attrelid = c.oid AND a.attname = geometry_columns.f_geometry_column::name ); UPDATE geometry_columns SET varattnum = ( SELECT a.attnum FROM pg_class c, pg_attribute a WHERE c.relname = geometry_columns.f_table_name::name AND a.attrelid = c.oid AND a.attname = geometry_columns.f_geometry_column::name ); RETURN ''geometry_columns table is now linked to the system tables''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ADDGEOMETRYCOLUMN ( -- , ,
, , -- , , ) -- -- Type can be one of geometry, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON, -- MULTIPOLYGON, LINESTRING, or MULTILINESTRING. -- -- Types (except geometry) are checked for consistency using a CHECK constraint -- uses SQL ALTER TABLE command to add the geometry column to the table. -- Addes a row to geometry_columns. -- Addes a constraint on the table that all the geometries MUST have the same -- SRID. Checks the coord_dimension to make sure its between 0 and 3. -- Should also check the precision grid (future expansion). -- Calls fix_geometry_columns() at the end. -- CREATE FUNCTION AddGeometryColumn(varchar,varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS ' DECLARE catalog_name alias for $1; schema_name alias for $2; table_name alias for $3; column_name alias for $4; new_srid alias for $5; new_type alias for $6; new_dim alias for $7; BEGIN IF ( not ( (new_type =''GEOMETRY'') or (new_type =''GEOMETRYCOLLECTION'') or (new_type =''POINT'') or (new_type =''MULTIPOINT'') or (new_type =''POLYGON'') or (new_type =''MULTIPOLYGON'') or (new_type =''LINESTRING'') or (new_type =''MULTILINESTRING'')) ) THEN RAISE EXCEPTION ''Invalid type name - valid ones are: GEOMETRY, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON, MULTIPOLYGON, LINESTRING, or MULTILINESTRING ''; return ''fail''; END IF; IF ( (new_dim >3) or (new_dim <0) ) THEN RAISE EXCEPTION ''invalid dimension''; return ''fail''; END IF; EXECUTE ''ALTER TABLE '' || quote_ident(table_name) || '' ADD COLUMN '' || quote_ident(column_name) || '' geometry ''; EXECUTE ''INSERT INTO geometry_columns VALUES ('' || quote_literal('''') || '','' || quote_literal('''') || '','' || quote_literal(table_name) || '','' || quote_literal(column_name) || '','' || new_dim || '','' || new_srid || '','' || quote_literal(new_type) || '')''; EXECUTE ''select fix_geometry_columns()''; EXECUTE ''ALTER TABLE '' || quote_ident(table_name) || '' ADD CHECK (SRID('' || quote_ident(column_name) || '') = '' || new_srid || '')'' ; IF (not(new_type = ''GEOMETRY'')) THEN EXECUTE ''ALTER TABLE '' || quote_ident(table_name) || '' ADD CHECK (geometrytype('' || quote_ident(column_name) || '')='' || quote_literal(new_type) || '' OR ('' || quote_ident(column_name) || '') is null)''; END IF; return ''Geometry column '' || column_name || '' added to table '' || table_name || '' WITH a SRID of '' || new_srid || '' and type '' || new_type; END; ' LANGUAGE 'plpgsql' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ADDGEOMETRYCOLUMN ( ,
, , , , ) -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CREATE FUNCTION AddGeometryColumn(varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS ' DECLARE ret text; BEGIN SELECT AddGeometryColumn('''',$1,$2,$3,$4,$5,$6) into ret; RETURN ret; END; ' LANGUAGE 'plpgsql' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- DROPGEOMETRYCOLUMN( ,
, ) -- -- There is no ALTER TABLE DROP COLUMN command in postgresql -- There is no ALTER TABLE DROP CONSTRAINT command in postgresql -- So, we: -- 1. remove the unwanted geom column reference from the -- geometry_columns table -- 2. update the table so that the geometry column is all NULLS -- This is okay since the CHECK srid(geometry) = is not -- checked if geometry is NULL (the isstrict attribute on srid()) -- 3. add another constraint that the geometry column must be NULL -- This, effectively kills the geometry column -- (a) its not in the geometry_column table -- (b) it only has nulls in it -- (c) you cannot add anything to the geom column because it must be NULL -- -- This will screw up if you put a NOT NULL constraint on the geometry -- column, so the first thing we must do is remove this constraint (its a -- modification of the pg_attribute system table) -- -- We also check to see if the table/column exists in the geometry_columns -- table CREATE FUNCTION DropGeometryColumn(varchar,varchar,varchar) RETURNS text AS ' DECLARE schema_name alias for $1; table_name alias for $2; column_name alias for $3; myrec RECORD; okay boolean; BEGIN -- first we find out if the column is in the geometry_columns table okay = ''f''; FOR myrec IN SELECT * from geometry_columns where f_table_schema = schema_name and f_table_name = table_name and f_geometry_column = column_name LOOP okay := ''t''; END LOOP; IF (okay <> ''t'') THEN RAISE EXCEPTION ''column not found in geometry_columns table''; return ''f''; END IF; -- ensure the geometry column does not have a NOT NULL attribute EXECUTE ''update pg_attribute set attnotnull = false from pg_class where pg_attribute.attrelid = pg_class.oid and pg_class.relname = '' || quote_literal(table_name) ||'' and pg_attribute.attname = '' || quote_literal(column_name); -- remove ref from geometry_columns table EXECUTE ''delete from geometry_columns where f_table_schema = '' || quote_literal(database_name) || '' and f_table_name = '' || quote_literal(table_name) || '' and f_geometry_column = '' || quote_literal(column_name ); -- update the given table/column so that it it all NULLS EXECUTE ''update "''||table_name||''" set "''||column_name||''"= NULL''; -- add = NULL constraint to given table/column EXECUTE ''ALTER TABLE "''||table_name||''" ADD CHECK ("''||column_name||''" IS NULL)''; RETURN table_name || ''.'' || column_name ||'' effectively removed.''; END; ' LANGUAGE 'plpgsql' WITH (isstrict); END TRANSACTION; postgis-0.8.1/postgis_sql_72_start.sql.in0100664000077300001440000000756007700351537020067 0ustar postgisusers -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- $Id: postgis_sql_72_start.sql.in,v 1.2 2025/07/01 18:30:55 pramsey Exp $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net -- Copyright 2001-2003 Refractions Research Inc. -- -- This is free software; you can redistribute and/or modify it under -- the terms of hte GNU General Public Licence. See the COPYING file. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- $Log: postgis_sql_72_start.sql.in,v $ -- Revision 1.2 2025/07/01 18:30:55 pramsey -- Added CVS revision headers. -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BEGIN TRANSACTION; -- You might have to define the PL/PgSQL language usually done with the -- changelang script. -- Here's some hokey code to test to see if PL/PgSQL is installed -- if it is, you get a message "PL/PgSQL is installed" -- otherwise it will give a big error message. (select 'PL/PgSQL is installed.' as message from pg_language where lanname='plpgsql') union (select 'You must install PL/PgSQL before running this SQL file,\nor you will get an error. To install PL/PgSQL run:\n\tcreatelang plpgsql '::text as message) order by message limit 1; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- HISTOGRAM2D CREATE FUNCTION histogram2d_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION histogram2d_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE histogram2d ( alignment = double, internallength = variable, input = histogram2d_in, output = histogram2d_out, storage = main ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- BOX3D CREATE FUNCTION box3d_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION box3d_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE box3d ( alignment = double, internallength = 48, input = box3d_in, output = box3d_out ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- SPHEROID CREATE FUNCTION spheroid_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@','ellipsoid_in' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION spheroid_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@','ellipsoid_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE spheroid ( alignment = double, internallength = 65, input = spheroid_in, output = spheroid_out ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- WKB CREATE FUNCTION wkb_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@','WKB_in' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION wkb_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@','WKB_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE wkb ( internallength = variable, input = wkb_in, output = wkb_out, storage = extended ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- CHIP CREATE FUNCTION chip_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@','CHIP_in' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION chip_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@','CHIP_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE chip ( alignment = double, internallength = variable, input = chip_in, output = chip_out, storage = extended ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GEOMETRY CREATE FUNCTION geometry_in(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_out(opaque) RETURNS opaque AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE geometry ( alignment = double, internallength = variable, input = geometry_in, output = geometry_out, storage = main ); -- -- GiST Selectivity Function -- CREATE FUNCTION postgis_gist_sel(opaque, oid, opaque, int4) RETURNS float8 AS '@MODULE_FILENAME@' LANGUAGE'C'; postgis-0.8.1/postgis_sql_73_end.sql.in0100664000077300001440000003623507774253025017506 0ustar postgisusers -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- $Id: postgis_sql_73_end.sql.in,v 1.8 2024/12/30 10:40:21 strk Exp $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net -- Copyright 2001-2003 Refractions Research Inc. -- -- This is free software; you can redistribute and/or modify it under -- the terms of hte GNU General Public Licence. See the COPYING file. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- $Log: postgis_sql_73_end.sql.in,v $ -- Revision 1.8 2024/12/30 10:40:21 strk -- For all versions: -- Updated fix_geometry_columns to use a more readable format in queries. -- -- For PG >= 73: -- Updated fix_geometry_columns() to consider schema when fixing attrelid and -- varattnum, also changed empty value to 'public' string for records with -- an invalid schema specification. -- Updated DropGeometryColumn to actually issue the -- ALTER TABLE DROP COLUMN query. -- -- Revision 1.7 2024/12/23 09:00:12 strk -- AddGeometryColumn, DropGeometryColum moved to version-specific scripts. -- Schema support enabled for version 73 and 74. -- -- Revision 1.6 2025/12/18 18:07:06 strk -- Changed fix_geometry_columns() for PG >= 73 so to set f_table_schema to -- the empty string if its value is not a valid pg namespace. -- -- Revision 1.5 2025/11/28 11:25:31 strk -- Added explicit geometry as text cast -- -- Revision 1.4 2025/07/01 18:30:55 pramsey -- Added CVS revision headers. -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- 7.3 explicit casting definitions -- CREATE CAST ( chip AS geometry ) WITH FUNCTION geometry(chip) AS IMPLICIT; CREATE CAST ( geometry AS box3d ) WITH FUNCTION box3d(geometry) AS IMPLICIT; CREATE CAST ( geometry AS box ) WITH FUNCTION box(geometry) AS IMPLICIT; CREATE CAST ( box3d AS geometry ) WITH FUNCTION geometry(box3d) AS IMPLICIT; CREATE CAST ( text AS geometry) WITH FUNCTION geometry(text) AS IMPLICIT; CREATE CAST ( wkb AS bytea ) WITH FUNCTION bytea(wkb) AS IMPLICIT; CREATE CAST ( box3d AS box ) WITH FUNCTION box3dtobox(box3d); CREATE CAST ( geometry AS text ) WITH FUNCTION astext(geometry); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- UPDATE_GEOMETRY_STATS() CREATE FUNCTION update_geometry_stats() RETURNS text AS ' BEGIN EXECUTE ''update geometry_columns set attrelid = (select pg_class.oid AS attrelid from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_geometry_column::name), varattnum = (select pg_attribute.attnum from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_geometry_column::name)''; execute ''update geometry_columns set stats = (build_histogram2d( create_histogram2d(find_extent(f_table_name,f_geometry_column),40 ),f_table_name::text, f_geometry_column::text)) ''; return ''done''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- UPDATE_GEOMETRY_STATS(
, ) CREATE FUNCTION update_geometry_stats(varchar,varchar) RETURNS text AS ' DECLARE tablename aliAS for $1; columnname aliAS for $2; BEGIN EXECUTE ''update geometry_columns set attrelid = (select pg_class.oid AS attrelid from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_geometry_column::name), varattnum = (select pg_attribute.attnum from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_geometry_column::name)''; execute ''update geometry_columns set stats = (build_histogram2d( create_histogram2d(find_extent(''|| quote_literal(tablename) || '',''||quote_literal(columnname) ||''),40 ),''|| quote_literal(tablename) || ''::text,''||quote_literal(columnname) ||''::text )) WHERE f_table_name=''|| quote_literal(tablename) || ''and f_geometry_column=''||quote_literal(columnname) ; return ''done''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- CREATE_HISTOGRAM2D( , ) -- -- Returns a histgram with 0s in all the boxes. CREATE FUNCTION create_histogram2d(box3d,int) RETURNS histogram2d AS '@MODULE_FILENAME@','create_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- BUILD_HISTOGRAM2D( , , ) -- CREATE FUNCTION build_histogram2d (histogram2d, text, text) RETURNS histogram2d AS '@MODULE_FILENAME@','build_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- EXPLODE_HISTOGRAM2D( , ) -- CREATE FUNCTION explode_histogram2d (histogram2d, text) RETURNS histogram2d AS '@MODULE_FILENAME@','explode_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ESTIMATE_HISTOGRAM2D( , ) -- CREATE FUNCTION estimate_histogram2d(histogram2d,box) RETURNS float8 AS '@MODULE_FILENAME@','estimate_histogram2d' LANGUAGE 'C' with (isstrict); CREATE FUNCTION postgisgistcostestimate(internal,internal,internal,internal,internal,internal,internal,internal) RETURNS opaque AS '@MODULE_FILENAME@','postgisgistcostestimate' LANGUAGE 'C' with (isstrict); -- -- 7.2 GiST support functions -- CREATE FUNCTION ggeometry_consistent(internal,geometry,int4) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION ggeometry_compress(internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION gbox_penalty(internal,internal,internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION gbox_picksplit(internal, internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION gbox_union(bytea, internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION gbox_same(box, box, internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION rtree_decompress(internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; -- -- 7.2 RTREE support functions -- CREATE FUNCTION geometry_union(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION geometry_inter(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION geometry_size(geometry,internal) RETURNS float4 AS '@MODULE_FILENAME@' LANGUAGE 'C'; -- -- Create opclass index bindings -- CREATE OPERATOR CLASS gist_geometry_ops DEFAULT FOR TYPE geometry USING gist AS OPERATOR 1 << , OPERATOR 2 &< , OPERATOR 3 && , OPERATOR 4 &> , OPERATOR 5 >> , OPERATOR 6 ~= , OPERATOR 7 ~ , OPERATOR 8 @ , FUNCTION 1 ggeometry_consistent (internal, geometry, int4), FUNCTION 2 gbox_union (bytea, internal), FUNCTION 3 ggeometry_compress (internal), FUNCTION 4 rtree_decompress (internal), FUNCTION 5 gbox_penalty (internal, internal, internal), FUNCTION 6 gbox_picksplit (internal, internal), FUNCTION 7 gbox_same (box, box, internal); UPDATE pg_opclass SET opckeytype = (select oid from pg_type where typname = 'box') WHERE opcname = 'gist_geometry_ops'; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- FIX_GEOMETRY_COLUMNS() -- -- Since 7.3 schema support has been added. -- Previous postgis versions used to put the database name in -- the schema column. This needs to be fixed, so we set to the -- empty string any schema value not existing in pg_namespace -- CREATE FUNCTION fix_geometry_columns() RETURNS text AS ' BEGIN -- it would be better to find the correct schema name UPDATE geometry_columns SET f_table_schema = ''public'' WHERE f_table_schema is NULL or f_table_schema NOT IN ( SELECT nspname::varchar FROM pg_namespace ); UPDATE geometry_columns SET attrelid = ( SELECT c.oid FROM pg_class c, pg_attribute a, pg_namespace n WHERE c.relname = geometry_columns.f_table_name::name AND a.attrelid = c.oid AND c.relnamespace = n.oid AND a.attname = geometry_columns.f_geometry_column::name AND n.nspname = geometry_columns.f_table_schema::name ); UPDATE geometry_columns SET varattnum = ( SELECT a.attnum FROM pg_class c, pg_attribute a, pg_namespace n WHERE n.nspname = geometry_columns.f_table_schema::name AND c.relname = geometry_columns.f_table_name::name AND a.attname = geometry_columns.f_geometry_column::name AND a.attrelid = c.oid AND c.relnamespace = n.oid ); RETURN ''geometry_columns table is now linked to the system tables''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ADDGEOMETRYCOLUMN ( -- , ,
, , -- , , ) -- -- Type can be one of geometry, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON, -- MULTIPOLYGON, LINESTRING, or MULTILINESTRING. -- -- Types (except geometry) are checked for consistency using a CHECK constraint -- uses SQL ALTER TABLE command to add the geometry column to the table. -- Addes a row to geometry_columns. -- Addes a constraint on the table that all the geometries MUST have the same -- SRID. Checks the coord_dimension to make sure its between 0 and 3. -- Should also check the precision grid (future expansion). -- Calls fix_geometry_columns() at the end. -- CREATE FUNCTION AddGeometryColumn(varchar,varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS ' DECLARE catalog_name alias for $1; schema_name alias for $2; table_name alias for $3; column_name alias for $4; new_srid alias for $5; new_type alias for $6; new_dim alias for $7; rec RECORD; schema_ok bool; real_schema name; BEGIN IF ( not ( (new_type =''GEOMETRY'') or (new_type =''GEOMETRYCOLLECTION'') or (new_type =''POINT'') or (new_type =''MULTIPOINT'') or (new_type =''POLYGON'') or (new_type =''MULTIPOLYGON'') or (new_type =''LINESTRING'') or (new_type =''MULTILINESTRING'')) ) THEN RAISE EXCEPTION ''Invalid type name - valid ones are: GEOMETRY, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON, MULTIPOLYGON, LINESTRING, or MULTILINESTRING ''; RETURN ''fail''; END IF; IF ( (new_dim >3) or (new_dim <0) ) THEN RAISE EXCEPTION ''invalid dimension''; RETURN ''fail''; END IF; IF ( schema_name != '''' ) THEN schema_ok = ''f''; FOR rec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP schema_ok := ''t''; END LOOP; if ( schema_ok <> ''t'' ) THEN RAISE NOTICE ''Invalid schema name - using current_schema()''; SELECT current_schema() into real_schema; ELSE real_schema = schema_name; END IF; ELSE SELECT current_schema() into real_schema; END IF; EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' || quote_ident(table_name) || '' ADD COLUMN '' || quote_ident(column_name) || '' geometry ''; EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' || quote_ident(table_name) || '' ADD CHECK (SRID('' || quote_ident(column_name) || '') = '' || new_srid || '')'' ; IF (not(new_type = ''GEOMETRY'')) THEN EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' || quote_ident(table_name) || '' ADD CHECK (geometrytype('' || quote_ident(column_name) || '')='' || quote_literal(new_type) || '' OR ('' || quote_ident(column_name) || '') is null)''; END IF; EXECUTE ''INSERT INTO geometry_columns VALUES ('' || quote_literal('''') || '','' || quote_literal(real_schema) || '','' || quote_literal(table_name) || '','' || quote_literal(column_name) || '','' || new_dim || '','' || new_srid || '','' || quote_literal(new_type) || '')''; EXECUTE ''select fix_geometry_columns()''; --SELECT fix_geometry_columns(); return ''Geometry column '' || column_name || '' added to table '' || real_schema || ''.'' || table_name || '' WITH a SRID of '' || new_srid || '' and type '' || new_type; END; ' LANGUAGE 'plpgsql' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ADDGEOMETRYCOLUMN ( ,
, , , , ) -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CREATE FUNCTION AddGeometryColumn(varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS ' DECLARE ret text; BEGIN SELECT AddGeometryColumn('''',$1,$2,$3,$4,$5,$6) into ret; RETURN ret; END; ' LANGUAGE 'plpgsql' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- DROPGEOMETRYCOLUMN( ,
, ) -- -- There is no ALTER TABLE DROP COLUMN command in postgresql -- There is no ALTER TABLE DROP CONSTRAINT command in postgresql -- So, we: -- 1. remove the unwanted geom column reference from the -- geometry_columns table -- 2. update the table so that the geometry column is all NULLS -- This is okay since the CHECK srid(geometry) = is not -- checked if geometry is NULL (the isstrict attribute on srid()) -- 3. add another constraint that the geometry column must be NULL -- This, effectively kills the geometry column -- (a) its not in the geometry_column table -- (b) it only has nulls in it -- (c) you cannot add anything to the geom column because it must be NULL -- -- This will screw up if you put a NOT NULL constraint on the geometry -- column, so the first thing we must do is remove this constraint (its a -- modification of the pg_attribute system table) -- -- We also check to see if the table/column exists in the geometry_columns -- table CREATE FUNCTION DropGeometryColumn(varchar,varchar,varchar) RETURNS text AS ' DECLARE schema_name alias for $1; table_name alias for $2; column_name alias for $3; myrec RECORD; real_schema name; okay boolean; query text; BEGIN -- Find, check or fix schema_name IF ( schema_name != '''' ) THEN okay = ''f''; FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP okay := ''t''; END LOOP; IF ( okay <> ''t'' ) THEN RAISE NOTICE ''Invalid schema name - using current_schema()''; SELECT current_schema() into real_schema; ELSE real_schema = schema_name; END IF; ELSE SELECT current_schema() into real_schema; END IF; -- first we find out if the column is in the geometry_columns table okay = ''f''; FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP okay := ''t''; END LOOP; IF (okay <> ''t'') THEN RAISE EXCEPTION ''column not found in geometry_columns table''; RETURN ''f''; END IF; -- Remove ref from geometry_columns table EXECUTE ''delete from geometry_columns where f_table_schema = '' || quote_literal(real_schema) || '' and f_table_name = '' || quote_literal(table_name) || '' and f_geometry_column = '' || quote_literal(column_name); -- Remove table column EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' || quote_ident(table_name) || '' DROP COLUMN '' || quote_ident(column_name); RETURN real_schema || ''.'' || table_name || ''.'' || column_name ||'' effectively removed.''; END; ' LANGUAGE 'plpgsql' WITH (isstrict); END TRANSACTION; postgis-0.8.1/postgis_sql_73_start.sql.in0100664000077300001440000000760707700351537020072 0ustar postgisusers -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- $Id: postgis_sql_73_start.sql.in,v 1.2 2025/07/01 18:30:55 pramsey Exp $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net -- Copyright 2001-2003 Refractions Research Inc. -- -- This is free software; you can redistribute and/or modify it under -- the terms of hte GNU General Public Licence. See the COPYING file. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- $Log: postgis_sql_73_start.sql.in,v $ -- Revision 1.2 2025/07/01 18:30:55 pramsey -- Added CVS revision headers. -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BEGIN TRANSACTION; -- You might have to define the PL/PgSQL language usually done with the -- changelang script. -- Here's some hokey code to test to see if PL/PgSQL is installed -- if it is, you get a message "PL/PgSQL is installed" -- otherwise it will give a big error message. (select 'PL/PgSQL is installed.' as message from pg_language where lanname='plpgsql') union (select 'You must install PL/PgSQL before running this SQL file,\nor you will get an error. To install PL/PgSQL run:\n\tcreatelang plpgsql '::text as message) order by message limit 1; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- HISTOGRAM2D CREATE FUNCTION histogram2d_in(cstring) RETURNS histogram2d AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION histogram2d_out(histogram2d) RETURNS cstring AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE histogram2d ( alignment = double, internallength = variable, input = histogram2d_in, output = histogram2d_out, storage = main ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- BOX3D CREATE FUNCTION box3d_in(cstring) RETURNS box3d AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION box3d_out(box3d) RETURNS cstring AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE box3d ( alignment = double, internallength = 48, input = box3d_in, output = box3d_out ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- SPHEROID CREATE FUNCTION spheroid_in(cstring) RETURNS spheroid AS '@MODULE_FILENAME@','ellipsoid_in' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION spheroid_out(spheroid) RETURNS cstring AS '@MODULE_FILENAME@','ellipsoid_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE spheroid ( alignment = double, internallength = 65, input = spheroid_in, output = spheroid_out ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- WKB CREATE FUNCTION wkb_in(cstring) RETURNS wkb AS '@MODULE_FILENAME@','WKB_in' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION wkb_out(wkb) RETURNS cstring AS '@MODULE_FILENAME@','WKB_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE wkb ( internallength = variable, input = wkb_in, output = wkb_out, storage = extended ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- CHIP CREATE FUNCTION chip_in(cstring) RETURNS chip AS '@MODULE_FILENAME@','CHIP_in' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION chip_out(chip) RETURNS cstring AS '@MODULE_FILENAME@','CHIP_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE chip ( alignment = double, internallength = variable, input = chip_in, output = chip_out, storage = extended ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GEOMETRY CREATE FUNCTION geometry_in(cstring) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_out(geometry) RETURNS cstring AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE geometry ( alignment = double, internallength = variable, input = geometry_in, output = geometry_out, storage = main ); -- -- GiST selectivity function -- CREATE FUNCTION postgis_gist_sel (internal, oid, internal, int4) RETURNS float8 AS '@MODULE_FILENAME@' LANGUAGE 'C'; postgis-0.8.1/postgis_sql_74_end.sql.in0100664000077300001440000003771307774253025017511 0ustar postgisusers -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- $Id: postgis_sql_74_end.sql.in,v 1.7 2024/12/30 10:40:21 strk Exp $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net -- Copyright 2001-2003 Refractions Research Inc. -- -- This is free software; you can redistribute and/or modify it under -- the terms of hte GNU General Public Licence. See the COPYING file. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- $Log: postgis_sql_74_end.sql.in,v $ -- Revision 1.7 2024/12/30 10:40:21 strk -- For all versions: -- Updated fix_geometry_columns to use a more readable format in queries. -- -- For PG >= 73: -- Updated fix_geometry_columns() to consider schema when fixing attrelid and -- varattnum, also changed empty value to 'public' string for records with -- an invalid schema specification. -- Updated DropGeometryColumn to actually issue the -- ALTER TABLE DROP COLUMN query. -- -- Revision 1.6 2024/12/23 09:00:12 strk -- AddGeometryColumn, DropGeometryColum moved to version-specific scripts. -- Schema support enabled for version 73 and 74. -- -- Revision 1.5 2025/12/18 18:07:06 strk -- Changed fix_geometry_columns() for PG >= 73 so to set f_table_schema to -- the empty string if its value is not a valid pg namespace. -- -- Revision 1.4 2025/11/28 11:25:31 strk -- Added explicit geometry as text cast -- -- Revision 1.3 2025/11/28 11:06:49 strk -- Added WKB_recv function for binary WKB input -- -- Revision 1.2 2025/11/19 15:29:21 strk -- Added default btree operator class for PG7.4 -- -- Revision 1.1 2025/11/11 10:38:23 strk -- Postgresql 7.4 enabler scripts. -- -- Revision 1.4 2025/07/01 18:30:55 pramsey -- Added CVS revision headers. -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- WKB -- this has been moved here at _end from _start -- because we need the definition of function bytea -- found in _common CREATE TYPE wkb ( internallength = variable, input = wkb_in, output = wkb_out, storage = extended, send = bytea, receive = wkb_recv ); -- -- 7.3 explicit casting definitions -- CREATE CAST ( chip AS geometry ) WITH FUNCTION geometry(chip) AS IMPLICIT; CREATE CAST ( geometry AS box3d ) WITH FUNCTION box3d(geometry) AS IMPLICIT; CREATE CAST ( geometry AS box ) WITH FUNCTION box(geometry) AS IMPLICIT; CREATE CAST ( box3d AS geometry ) WITH FUNCTION geometry(box3d) AS IMPLICIT; CREATE CAST ( text AS geometry) WITH FUNCTION geometry(text) AS IMPLICIT; CREATE CAST ( wkb AS bytea ) WITH FUNCTION bytea(wkb) AS IMPLICIT; CREATE CAST ( box3d AS box ) WITH FUNCTION box3dtobox(box3d); CREATE CAST ( geometry AS text ) WITH FUNCTION astext(geometry); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- UPDATE_GEOMETRY_STATS() CREATE FUNCTION update_geometry_stats() RETURNS text AS ' BEGIN EXECUTE ''update geometry_columns set attrelid = (select pg_class.oid AS attrelid from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_geometry_column::name), varattnum = (select pg_attribute.attnum from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_geometry_column::name)''; execute ''update geometry_columns set stats = (build_histogram2d( create_histogram2d(find_extent(f_table_name,f_geometry_column),40 ),f_table_name::text, f_geometry_column::text)) ''; return ''done''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- UPDATE_GEOMETRY_STATS(
, ) CREATE FUNCTION update_geometry_stats(varchar,varchar) RETURNS text AS ' DECLARE tablename aliAS for $1; columnname aliAS for $2; BEGIN EXECUTE ''update geometry_columns set attrelid = (select pg_class.oid AS attrelid from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_geometry_column::name), varattnum = (select pg_attribute.attnum from pg_class,pg_attribute where relname =geometry_columns.f_table_name::name and pg_attribute.attrelid = pg_class.oid and pg_attribute.attname = geometry_columns.f_geometry_column::name)''; execute ''update geometry_columns set stats = (build_histogram2d( create_histogram2d(find_extent(''|| quote_literal(tablename) || '',''||quote_literal(columnname) ||''),40 ),''|| quote_literal(tablename) || ''::text,''||quote_literal(columnname) ||''::text )) WHERE f_table_name=''|| quote_literal(tablename) || ''and f_geometry_column=''||quote_literal(columnname) ; return ''done''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- CREATE_HISTOGRAM2D( , ) -- -- Returns a histgram with 0s in all the boxes. CREATE FUNCTION create_histogram2d(box3d,int) RETURNS histogram2d AS '@MODULE_FILENAME@','create_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- BUILD_HISTOGRAM2D( , , ) -- CREATE FUNCTION build_histogram2d (histogram2d, text, text) RETURNS histogram2d AS '@MODULE_FILENAME@','build_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- EXPLODE_HISTOGRAM2D( , ) -- CREATE FUNCTION explode_histogram2d (histogram2d, text) RETURNS histogram2d AS '@MODULE_FILENAME@','explode_histogram2d' LANGUAGE 'C' with (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ESTIMATE_HISTOGRAM2D( , ) -- CREATE FUNCTION estimate_histogram2d(histogram2d,box) RETURNS float8 AS '@MODULE_FILENAME@','estimate_histogram2d' LANGUAGE 'C' with (isstrict); CREATE FUNCTION postgisgistcostestimate(internal,internal,internal,internal,internal,internal,internal,internal) RETURNS opaque AS '@MODULE_FILENAME@','postgisgistcostestimate' LANGUAGE 'C' with (isstrict); -- -- 7.2 GiST support functions -- CREATE FUNCTION ggeometry_consistent(internal,geometry,int4) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION ggeometry_compress(internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION gbox_penalty(internal,internal,internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION gbox_picksplit(internal, internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION gbox_union(bytea, internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION gbox_same(box, box, internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION rtree_decompress(internal) RETURNS internal AS '@MODULE_FILENAME@' LANGUAGE 'C'; -- -- 7.2 RTREE support functions -- CREATE FUNCTION geometry_union(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION geometry_inter(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION geometry_size(geometry,internal) RETURNS float4 AS '@MODULE_FILENAME@' LANGUAGE 'C'; -- -- Create opclass index bindings -- CREATE OPERATOR CLASS gist_geometry_ops DEFAULT FOR TYPE geometry USING gist AS OPERATOR 1 << , OPERATOR 2 &< , OPERATOR 3 && , OPERATOR 4 &> , OPERATOR 5 >> , OPERATOR 6 ~= , OPERATOR 7 ~ , OPERATOR 8 @ , FUNCTION 1 ggeometry_consistent (internal, geometry, int4), FUNCTION 2 gbox_union (bytea, internal), FUNCTION 3 ggeometry_compress (internal), FUNCTION 4 rtree_decompress (internal), FUNCTION 5 gbox_penalty (internal, internal, internal), FUNCTION 6 gbox_picksplit (internal, internal), FUNCTION 7 gbox_same (box, box, internal); UPDATE pg_opclass SET opckeytype = (select oid from pg_type where typname = 'box') WHERE opcname = 'gist_geometry_ops'; CREATE OPERATOR CLASS btree_geometry_ops DEFAULT FOR TYPE geometry USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 geometry_cmp (geometry, geometry); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- FIX_GEOMETRY_COLUMNS() -- -- Since 7.3 schema support has been added. -- Previous postgis versions used to put the database name in -- the schema column. This needs to be fixed, so we set to the -- empty string any schema value not existing in pg_namespace -- CREATE FUNCTION fix_geometry_columns() RETURNS text AS ' BEGIN -- it would be better to find the correct schema name UPDATE geometry_columns SET f_table_schema = ''public'' WHERE f_table_schema is NULL or f_table_schema NOT IN ( SELECT nspname::varchar FROM pg_namespace ); UPDATE geometry_columns SET attrelid = ( SELECT c.oid FROM pg_class c, pg_attribute a, pg_namespace n WHERE c.relname = geometry_columns.f_table_name::name AND a.attrelid = c.oid AND c.relnamespace = n.oid AND a.attname = geometry_columns.f_geometry_column::name AND n.nspname = geometry_columns.f_table_schema::name ); UPDATE geometry_columns SET varattnum = ( SELECT a.attnum FROM pg_class c, pg_attribute a, pg_namespace n WHERE n.nspname = geometry_columns.f_table_schema::name AND c.relname = geometry_columns.f_table_name::name AND a.attname = geometry_columns.f_geometry_column::name AND a.attrelid = c.oid AND c.relnamespace = n.oid ); RETURN ''geometry_columns table is now linked to the system tables''; END; ' LANGUAGE 'plpgsql' ; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ADDGEOMETRYCOLUMN ( -- , ,
, , -- , , ) -- -- Type can be one of geometry, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON, -- MULTIPOLYGON, LINESTRING, or MULTILINESTRING. -- -- Types (except geometry) are checked for consistency using a CHECK constraint -- uses SQL ALTER TABLE command to add the geometry column to the table. -- Addes a row to geometry_columns. -- Addes a constraint on the table that all the geometries MUST have the same -- SRID. Checks the coord_dimension to make sure its between 0 and 3. -- Should also check the precision grid (future expansion). -- Calls fix_geometry_columns() at the end. -- CREATE FUNCTION AddGeometryColumn(varchar,varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS ' DECLARE catalog_name alias for $1; schema_name alias for $2; table_name alias for $3; column_name alias for $4; new_srid alias for $5; new_type alias for $6; new_dim alias for $7; rec RECORD; schema_ok bool; real_schema name; BEGIN IF ( not ( (new_type =''GEOMETRY'') or (new_type =''GEOMETRYCOLLECTION'') or (new_type =''POINT'') or (new_type =''MULTIPOINT'') or (new_type =''POLYGON'') or (new_type =''MULTIPOLYGON'') or (new_type =''LINESTRING'') or (new_type =''MULTILINESTRING'')) ) THEN RAISE EXCEPTION ''Invalid type name - valid ones are: GEOMETRY, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON, MULTIPOLYGON, LINESTRING, or MULTILINESTRING ''; RETURN ''fail''; END IF; IF ( (new_dim >3) or (new_dim <0) ) THEN RAISE EXCEPTION ''invalid dimension''; RETURN ''fail''; END IF; IF ( schema_name != '''' ) THEN schema_ok = ''f''; FOR rec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP schema_ok := ''t''; END LOOP; if ( schema_ok <> ''t'' ) THEN RAISE NOTICE ''Invalid schema name - using current_schema()''; SELECT current_schema() into real_schema; ELSE real_schema = schema_name; END IF; ELSE SELECT current_schema() into real_schema; END IF; EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' || quote_ident(table_name) || '' ADD COLUMN '' || quote_ident(column_name) || '' geometry ''; EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' || quote_ident(table_name) || '' ADD CHECK (SRID('' || quote_ident(column_name) || '') = '' || new_srid || '')'' ; IF (not(new_type = ''GEOMETRY'')) THEN EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' || quote_ident(table_name) || '' ADD CHECK (geometrytype('' || quote_ident(column_name) || '')='' || quote_literal(new_type) || '' OR ('' || quote_ident(column_name) || '') is null)''; END IF; EXECUTE ''INSERT INTO geometry_columns VALUES ('' || quote_literal('''') || '','' || quote_literal(real_schema) || '','' || quote_literal(table_name) || '','' || quote_literal(column_name) || '','' || new_dim || '','' || new_srid || '','' || quote_literal(new_type) || '')''; EXECUTE ''select fix_geometry_columns()''; --SELECT fix_geometry_columns(); return ''Geometry column '' || column_name || '' added to table '' || real_schema || ''.'' || table_name || '' WITH a SRID of '' || new_srid || '' and type '' || new_type; END; ' LANGUAGE 'plpgsql' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ADDGEOMETRYCOLUMN ( ,
, , , , ) -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CREATE FUNCTION AddGeometryColumn(varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS ' DECLARE ret text; BEGIN SELECT AddGeometryColumn('''',$1,$2,$3,$4,$5,$6) into ret; RETURN ret; END; ' LANGUAGE 'plpgsql' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- DROPGEOMETRYCOLUMN( ,
, ) -- -- There is no ALTER TABLE DROP COLUMN command in postgresql -- There is no ALTER TABLE DROP CONSTRAINT command in postgresql -- So, we: -- 1. remove the unwanted geom column reference from the -- geometry_columns table -- 2. update the table so that the geometry column is all NULLS -- This is okay since the CHECK srid(geometry) = is not -- checked if geometry is NULL (the isstrict attribute on srid()) -- 3. add another constraint that the geometry column must be NULL -- This, effectively kills the geometry column -- (a) its not in the geometry_column table -- (b) it only has nulls in it -- (c) you cannot add anything to the geom column because it must be NULL -- -- This will screw up if you put a NOT NULL constraint on the geometry -- column, so the first thing we must do is remove this constraint (its a -- modification of the pg_attribute system table) -- -- We also check to see if the table/column exists in the geometry_columns -- table CREATE FUNCTION DropGeometryColumn(varchar,varchar,varchar) RETURNS text AS ' DECLARE schema_name alias for $1; table_name alias for $2; column_name alias for $3; myrec RECORD; real_schema name; okay boolean; query text; BEGIN -- Find, check or fix schema_name IF ( schema_name != '''' ) THEN okay = ''f''; FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP okay := ''t''; END LOOP; IF ( okay <> ''t'' ) THEN RAISE NOTICE ''Invalid schema name - using current_schema()''; SELECT current_schema() into real_schema; ELSE real_schema = schema_name; END IF; ELSE SELECT current_schema() into real_schema; END IF; -- first we find out if the column is in the geometry_columns table okay = ''f''; FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP okay := ''t''; END LOOP; IF (okay <> ''t'') THEN RAISE EXCEPTION ''column not found in geometry_columns table''; RETURN ''f''; END IF; -- Remove ref from geometry_columns table EXECUTE ''delete from geometry_columns where f_table_schema = '' || quote_literal(real_schema) || '' and f_table_name = '' || quote_literal(table_name) || '' and f_geometry_column = '' || quote_literal(column_name); -- Remove table column EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' || quote_ident(table_name) || '' DROP COLUMN '' || quote_ident(column_name); RETURN real_schema || ''.'' || table_name || ''.'' || column_name ||'' effectively removed.''; END; ' LANGUAGE 'plpgsql' WITH (isstrict); END TRANSACTION; postgis-0.8.1/postgis_sql_74_start.sql.in0100664000077300001440000001007507761626111020064 0ustar postgisusers -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- $Id: postgis_sql_74_start.sql.in,v 1.2 2025/11/28 11:06:49 strk Exp $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net -- Copyright 2001-2003 Refractions Research Inc. -- -- This is free software; you can redistribute and/or modify it under -- the terms of hte GNU General Public Licence. See the COPYING file. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- $Log: postgis_sql_74_start.sql.in,v $ -- Revision 1.2 2025/11/28 11:06:49 strk -- Added WKB_recv function for binary WKB input -- -- Revision 1.1 2025/11/11 10:38:23 strk -- Postgresql 7.4 enabler scripts. -- -- Revision 1.2 2025/07/01 18:30:55 pramsey -- Added CVS revision headers. -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BEGIN TRANSACTION; -- You might have to define the PL/PgSQL language usually done with the -- changelang script. -- Here's some hokey code to test to see if PL/PgSQL is installed -- if it is, you get a message "PL/PgSQL is installed" -- otherwise it will give a big error message. (select 'PL/PgSQL is installed.' as message from pg_language where lanname='plpgsql') union (select 'You must install PL/PgSQL before running this SQL file,\nor you will get an error. To install PL/PgSQL run:\n\tcreatelang plpgsql '::text as message) order by message limit 1; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- HISTOGRAM2D CREATE FUNCTION histogram2d_in(cstring) RETURNS histogram2d AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION histogram2d_out(histogram2d) RETURNS cstring AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE histogram2d ( alignment = double, internallength = variable, input = histogram2d_in, output = histogram2d_out, storage = main ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- BOX3D CREATE FUNCTION box3d_in(cstring) RETURNS box3d AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION box3d_out(box3d) RETURNS cstring AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE box3d ( alignment = double, internallength = 48, input = box3d_in, output = box3d_out ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- SPHEROID CREATE FUNCTION spheroid_in(cstring) RETURNS spheroid AS '@MODULE_FILENAME@','ellipsoid_in' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION spheroid_out(spheroid) RETURNS cstring AS '@MODULE_FILENAME@','ellipsoid_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE spheroid ( alignment = double, internallength = 65, input = spheroid_in, output = spheroid_out ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- WKB CREATE FUNCTION wkb_in(cstring) RETURNS wkb AS '@MODULE_FILENAME@','WKB_in' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION wkb_out(wkb) RETURNS cstring AS '@MODULE_FILENAME@','WKB_out' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION wkb_recv(internal) RETURNS wkb AS '@MODULE_FILENAME@','WKB_recv' LANGUAGE 'C' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- CHIP CREATE FUNCTION chip_in(cstring) RETURNS chip AS '@MODULE_FILENAME@','CHIP_in' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION chip_out(chip) RETURNS cstring AS '@MODULE_FILENAME@','CHIP_out' LANGUAGE 'C' WITH (isstrict); CREATE TYPE chip ( alignment = double, internallength = variable, input = chip_in, output = chip_out, storage = extended ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GEOMETRY CREATE FUNCTION geometry_in(cstring) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_out(geometry) RETURNS cstring AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE TYPE geometry ( alignment = double, internallength = variable, input = geometry_in, output = geometry_out, storage = main ); -- -- GiST selectivity function -- CREATE FUNCTION postgis_gist_sel (internal, oid, internal, int4) RETURNS float8 AS '@MODULE_FILENAME@' LANGUAGE 'C'; postgis-0.8.1/postgis_sql_common.sql.in0100664000077300001440000010000707772002034017672 0ustar postgisusers -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- $Id: postgis_sql_common.sql.in,v 1.26 2024/12/23 09:00:12 strk Exp $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net -- Copyright 2001-2003 Refractions Research Inc. -- -- This is free software; you can redistribute and/or modify it under -- the terms of hte GNU General Public Licence. See the COPYING file. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- $Log: postgis_sql_common.sql.in,v $ -- Revision 1.26 2024/12/23 09:00:12 strk -- AddGeometryColumn, DropGeometryColum moved to version-specific scripts. -- Schema support enabled for version 73 and 74. -- -- Revision 1.25 2025/12/18 18:07:06 strk -- Changed fix_geometry_columns() for PG >= 73 so to set f_table_schema to -- the empty string if its value is not a valid pg namespace. -- -- Revision 1.24 2025/12/12 10:08:24 strk -- Added GEOSnoop function and some optional debugging output for -- geos<->postgis converter (define DEBUG_CONVERTER at top postgis_geos.c) -- -- Revision 1.23 2025/11/19 17:50:18 strk -- missing function definition added (I forgot - sorry) -- -- Revision 1.22 2025/11/19 15:23:27 strk -- Fixed wrong COMMUTATOR specifications in '<','>','~=','@' operators, -- added new '<=', '>=' operators -- -- Revision 1.21 2025/11/13 13:14:49 strk -- used quote_ident() calls in AddGeometryColumns as suggested by Bernhard Herzog -- -- Revision 1.20 2025/11/12 20:55:18 strk -- AddGeometryColumn column identifier case respect fix as suggested by Bernhard Herzog -- -- Revision 1.19 2025/11/05 18:26:54 strk -- Added fast collect() and geomunion() aggregates implementations -- -- Revision 1.18 2025/10/28 11:18:27 strk -- Added Algorithms section and simplify() enabler code -- -- Revision 1.17 2025/10/23 08:06:54 strk -- Added 'unite' aggregate. -- -- Revision 1.16 2025/10/17 16:07:05 dblasby -- made isEmpty() return true/false -- -- Revision 1.15 2025/09/04 16:19:06 dblasby -- removed truly_inside() function. -- -- Revision 1.14 2025/08/08 18:19:20 dblasby -- Conformance changes. -- Removed junk from postgis_debug.c and added the first run of the long -- transaction locking support. (this will change - dont use it) -- conformance tests were corrected -- some dos cr/lf removed -- empty geometries i.e. GEOMETRYCOLLECT(EMPTY) added (with indexing support) -- pointN(,1) now returns the first point (used to return 2nd) -- -- Revision 1.13 2025/08/06 19:31:18 dblasby -- Added the WKB parser. Added all the functions like -- PolyFromWKB(,[]). -- -- Added all the functions like PolyFromText(,[]) -- -- Minor problem in GEOS library fixed. -- -- Revision 1.12 2025/08/01 23:58:08 dblasby -- added the functionality to convert GEOS->PostGIS geometries. Added those geos -- functions to postgis. -- -- Revision 1.11 2025/07/01 18:30:55 pramsey -- Added CVS revision headers. -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- SPATIAL_REF_SYS CREATE TABLE spatial_ref_sys ( srid integer not null primary key, auth_name varchar(256), auth_srid integer, srtext varchar(2048), proj4text varchar(2048) ); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GEOMETRY_COLUMNS 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 null, coord_dimension integer not null, srid integer not null, type varchar(30) not null, attrelid oid, varattnum int, stats histogram2d, CONSTRAINT geometry_columns_pk primary key ( f_table_catalog, f_table_schema, f_table_name, f_geometry_column ) ); -- -- Workaround for old user defined variable length datatype -- default value bug. Should not be necessary > 7.2 -- UPDATE pg_type SET typdefault = NULL WHERE typname = 'wkb'; UPDATE pg_type SET typdefault = NULL WHERE typname = 'geometry'; UPDATE pg_type SET typdefault = NULL WHERE typname = 'histogram2d'; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- POSTGIS_VERSION() CREATE FUNCTION postgis_version() RETURNS text AS 'SELECT \'@POSTGIS_VERSION@\'::text AS version' LANGUAGE 'sql'; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- FIND_SRID( ,
, ) CREATE FUNCTION find_srid(varchar,varchar,varchar) RETURNS int4 AS 'DECLARE schem text; tabl text; sr int4; BEGIN IF $1 IS NULL THEN RAISE EXCEPTION ''find_srid() - schema is NULL!''; END IF; IF $2 IS NULL THEN RAISE EXCEPTION ''find_srid() - table name is NULL!''; END IF; IF $3 IS NULL THEN RAISE EXCEPTION ''find_srid() - column name is NULL!''; END IF; schem = $1; tabl = $2; -- if the table contains a . and the schema is empty -- split the table into a schema and a table -- otherwise drop through to default behavior IF ( schem = '''' and tabl LIKE ''%.%'' ) THEN schem = substr(tabl,1,strpos(tabl,''.'')-1); tabl = substr(tabl,length(schem)+2); ELSE schem = schem || ''%''; END IF; select SRID into sr from geometry_columns where f_table_schema like schem and f_table_name = tabl and f_geometry_column = $3; IF NOT FOUND THEN RAISE EXCEPTION ''find_srid() - couldnt find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase missmatch?''; END IF; return sr; END; ' LANGUAGE 'plpgsql' WITH (iscachable); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GET_PROJ4_FROM_SRID( ) CREATE FUNCTION get_proj4_from_srid(integer) RETURNS text AS 'SELECT proj4text::text FROM spatial_ref_sys WHERE srid= $1' LANGUAGE 'sql' WITH (iscachable,isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- FIND_EXTENT(
, ) CREATE FUNCTION find_extent(text,text) RETURNS box3d AS ' DECLARE tablename alias for $1; columnname alias for $2; okay boolean; myrec RECORD; BEGIN FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||tablename||''"'' LOOP return myrec.extent; END LOOP; END; ' LANGUAGE 'plpgsql' WITH (isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- TRANSFORM ( , ) -- -- Test: -- -- trans=# select * from spatial_ref_sys ; -- -- srid | auth_name | auth_srid | srtext | proj4text -- ------+---------------+-----------+--------+-------------------------------------------------------------------------- -- 1 | latlong WGS84 | 1 | | +proj=longlat +datum=WGS84 -- 2 | BC albers | 2 | | proj=aea ellps=GRS80 lon_0=-126 lat_0=45 lat_1=50 lat_2=58.5 x_0=1000000 -- -- select transform( 'SRID=1;POINT(-120.8 50.3)', 2); -- -> 'SRID=2;POINT(1370033.37046971 600755.810968684)' -- CREATE FUNCTION transform_geometry(geometry,text,text,int) RETURNS geometry AS '@MODULE_FILENAME@','transform_geom' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION transform(geometry,integer) RETURNS geometry AS 'BEGIN RETURN transform_geometry( $1 , get_proj4_from_srid(SRID( $1 ) ), get_proj4_from_srid( $2 ), $2 ); END;' LANGUAGE 'plpgsql' WITH (iscachable,isstrict); -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- COMMON FUNCTIONS CREATE FUNCTION srid(chip) RETURNS int4 AS '@MODULE_FILENAME@','srid_chip' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION height(chip) RETURNS int4 AS '@MODULE_FILENAME@','height_chip' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION factor(chip) RETURNS FLOAT4 AS '@MODULE_FILENAME@','factor_chip' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION width(chip) RETURNS int4 AS '@MODULE_FILENAME@','width_chip' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION datatype(chip) RETURNS int4 AS '@MODULE_FILENAME@','datatype_chip' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION compression(chip) RETURNS int4 AS '@MODULE_FILENAME@','compression_chip' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION setSRID(chip,int4) RETURNS chip AS '@MODULE_FILENAME@','setsrid_chip' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION setfactor(chip,float4) RETURNS chip AS '@MODULE_FILENAME@','setfactor_chip' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION geometry(CHIP) RETURNS geometry AS '@MODULE_FILENAME@','CHIP_to_geom' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION box3d(geometry) RETURNS box3d AS '@MODULE_FILENAME@','get_bbox_of_geometry' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION box(geometry) RETURNS BOX AS '@MODULE_FILENAME@','geometry2box' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION geometry(box3d) RETURNS geometry AS '@MODULE_FILENAME@','get_geometry_of_bbox' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION geometry(text) RETURNS geometry AS '@MODULE_FILENAME@','geometry_text' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION expand(box3d,float8) RETURNS box3d AS '@MODULE_FILENAME@','expand_bbox' LANGUAGE 'C' WITH (iscachable,isstrict); -- -- Functions for converting to WKB -- CREATE FUNCTION asbinary(geometry) RETURNS wkb AS '@MODULE_FILENAME@','asbinary_simple' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION asbinary(geometry,TEXT) RETURNS wkb AS '@MODULE_FILENAME@','asbinary_specify' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION bytea(wkb) RETURNS bytea AS '@MODULE_FILENAME@','WKBtoBYTEA' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION geometry(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','geometryfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION GeomFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','geometryfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION GeomFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','geometryfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION PointFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','PointfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION PointFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','PointfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION LineFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','LinefromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION LineFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','LinefromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION LinestringFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','LinefromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION LinestringFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','LinefromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION PolyFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','PolyfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION PolyFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','PolyfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION PolygonFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','PolyfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION PolygonFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','PolyfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MPointFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MPointfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MPointFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MPointfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MultiPointFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MPointfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MultiPointFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MPointfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MultiLineFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MLinefromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MultiLineFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MLinefromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MLineFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MLinefromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MLineFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MLinefromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MPolyFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MPolyfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MPolyFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MPolyfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MultiPolyFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MPolyfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION MultiPolyFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','MPolyfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION GeomCollFromWKB(wkb,int) RETURNS GEOMETRY AS '@MODULE_FILENAME@','GCfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); CREATE FUNCTION GeomCollFromWKB(wkb) RETURNS GEOMETRY AS '@MODULE_FILENAME@','GCfromWKB_SRID' LANGUAGE 'C' WITH (iscachable,isstrict); -- CREATE FUNCTION index_thing(geometry) -- RETURNS BOOL -- AS '@MODULE_FILENAME@' -- LANGUAGE 'C' WITH (isstrict); -- -- Debugging functions -- CREATE FUNCTION npoints(geometry) RETURNS int4 AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION nrings(geometry) RETURNS int4 AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict) ; CREATE FUNCTION mem_size(geometry) RETURNS int4 AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION summary(geometry) RETURNS text AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION translate(geometry,float8,float8,float8) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict) ; CREATE FUNCTION dimension(geometry) RETURNS int4 AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict) ; CREATE FUNCTION geometrytype(geometry) RETURNS text AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION envelope(geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION x(geometry) RETURNS float8 AS '@MODULE_FILENAME@','x_point' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION y(geometry) RETURNS float8 AS '@MODULE_FILENAME@','y_point' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION z(geometry) RETURNS float8 AS '@MODULE_FILENAME@','z_point' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION numpoints(geometry) RETURNS integer AS '@MODULE_FILENAME@','numpoints_linestring' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION pointn(geometry,integer) RETURNS geometry AS '@MODULE_FILENAME@','pointn_linestring' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION exteriorring(geometry) RETURNS geometry AS '@MODULE_FILENAME@','exteriorring_polygon' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION numinteriorrings(geometry) RETURNS integer AS '@MODULE_FILENAME@','numinteriorrings_polygon' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION interiorringn(geometry,integer) RETURNS geometry AS '@MODULE_FILENAME@','interiorringn_polygon' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION numgeometries(geometry) RETURNS integer AS '@MODULE_FILENAME@','numgeometries_collection' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometryn(geometry,integer) RETURNS geometry AS '@MODULE_FILENAME@','geometryn_collection' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION max_distance(geometry,geometry) RETURNS float8 AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION optimistic_overlap(geometry,geometry,FLOAT8) RETURNS BOOL AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION segmentize(geometry,FLOAT8) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION distance(geometry,geometry) RETURNS float8 AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION astext(geometry) RETURNS TEXT AS '@MODULE_FILENAME@','astext_geometry' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION srid(geometry) RETURNS int4 AS '@MODULE_FILENAME@','srid_geom' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometryfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION geometryfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION geomfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION geomfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION polyfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_poly' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION polygonfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_poly' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION polygonfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_poly' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION mpolyfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mpoly' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION linefromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_line' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION mlinefromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mline' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION multilinestringfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mline' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION multilinestringfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mline' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION pointfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_point' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION mpointfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mpoint' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION multipointfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mpoint' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION multipointfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mpoint' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION geomcollfromtext(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_gc' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION setSRID(geometry,int4) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION polyfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_poly' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION mpolyfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mpoly' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION multipolygonfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mpoly' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION multipolygonfromtext(geometry,int) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mpoly' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION linefromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_line' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION linestringfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_line' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION linestringfromtext(geometry,int) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_line' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION mlinefromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mline' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION pointfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_point' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION mpointfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_mpoint' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION geomcollfromtext(geometry) RETURNS geometry AS '@MODULE_FILENAME@','geometry_from_text_gc' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION isempty(geometry) RETURNS boolean AS '@MODULE_FILENAME@','isempty' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION issimple(geometry) RETURNS boolean AS '@MODULE_FILENAME@','issimple' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION equals(geometry,geometry) RETURNS boolean AS '@MODULE_FILENAME@','geomequals' LANGUAGE 'C' WITH (isstrict,iscachable); -- -- Special spheroid functions -- CREATE FUNCTION length_spheroid(geometry,spheroid) RETURNS FLOAT8 AS '@MODULE_FILENAME@','length_ellipsoid' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION length3d_spheroid(geometry,spheroid) RETURNS FLOAT8 AS '@MODULE_FILENAME@','length3d_ellipsoid' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION distance_spheroid(geometry,geometry,spheroid) RETURNS FLOAT8 AS '@MODULE_FILENAME@','distance_ellipsoid' LANGUAGE 'C' WITH (isstrict); -- -- Generic operations -- CREATE FUNCTION length3d(geometry) RETURNS FLOAT8 AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION length(geometry) RETURNS FLOAT8 AS '@MODULE_FILENAME@','length2d' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION area2d(geometry) RETURNS FLOAT8 AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION area(geometry) RETURNS FLOAT8 AS '@MODULE_FILENAME@','area2d' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION perimeter3d(geometry) RETURNS FLOAT8 AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION perimeter(geometry) RETURNS FLOAT8 AS '@MODULE_FILENAME@','perimeter2d' LANGUAGE 'C' WITH (isstrict); ---CREATE FUNCTION truly_inside(geometry,geometry) --- RETURNS bool --- AS '@MODULE_FILENAME@' --- LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION point_inside_circle(geometry,float8,float8,float8) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION startpoint(geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION endpoint(geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION isclosed(geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION centroid(geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION isring(geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION pointonsurface(geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); -- -- BBox operations -- CREATE FUNCTION xmin(box3d) RETURNS FLOAT8 AS '@MODULE_FILENAME@','box3d_xmin' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION ymin(box3d) RETURNS FLOAT8 AS '@MODULE_FILENAME@','box3d_ymin' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION zmin(box3d) RETURNS FLOAT8 AS '@MODULE_FILENAME@','box3d_zmin' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION xmax(box3d) RETURNS FLOAT8 AS '@MODULE_FILENAME@','box3d_xmax' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION ymax(box3d) RETURNS FLOAT8 AS '@MODULE_FILENAME@','box3d_ymax' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION zmax(box3d) RETURNS FLOAT8 AS '@MODULE_FILENAME@','box3d_zmax' LANGUAGE 'C' WITH (isstrict,iscachable); CREATE FUNCTION box3dtobox(box3d) RETURNS BOX AS '@MODULE_FILENAME@','box3dtobox' LANGUAGE 'C' WITH (isstrict,iscachable); -- -- Aggregate functions -- CREATE FUNCTION geom_accum (geometry[],geometry) RETURNS geometry[] AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE FUNCTION combine_bbox(box3d,geometry) RETURNS box3d AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE AGGREGATE extent( sfunc = combine_bbox, basetype = geometry, stype = box3d ); CREATE FUNCTION collector(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE AGGREGATE memcollect( sfunc = collector, basetype = geometry, stype = geometry ); CREATE FUNCTION collect_garray (geometry[]) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE AGGREGATE collect ( sfunc = geom_accum, basetype = geometry, stype = geometry[], finalfunc = collect_garray ); -- -- Operator definitions -- CREATE FUNCTION geometry_overleft(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_overright(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_left(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_right(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_contain(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_contained(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_overlap(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_same(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); -- -- Sorting functions -- CREATE FUNCTION geometry_lt(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_le(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_gt(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_ge(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_eq(geometry, geometry) RETURNS bool AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geometry_cmp(geometry, geometry) RETURNS integer AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); -- -- Two dimensional to three dimensional forces -- CREATE FUNCTION force_2d(geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION force_3d(geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); -- -- Force collection -- CREATE FUNCTION force_collection(geometry) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); -- -- Operator definitions -- CREATE OPERATOR << ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_left, COMMUTATOR = '>>', RESTRICT = positionsel, JOIN = positionjoinsel ); CREATE OPERATOR &< ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_overleft, COMMUTATOR = '&>', RESTRICT = positionsel, JOIN = positionjoinsel ); CREATE OPERATOR && ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_overlap, COMMUTATOR = '&&', RESTRICT = postgis_gist_sel, JOIN = positionjoinsel ); CREATE OPERATOR &> ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_overright, COMMUTATOR = '&<', RESTRICT = positionsel, JOIN = positionjoinsel ); CREATE OPERATOR >> ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_right, COMMUTATOR = '<<', RESTRICT = positionsel, JOIN = positionjoinsel ); CREATE OPERATOR ~= ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_same, COMMUTATOR = '~=', RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR @ ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_contained, COMMUTATOR = '~', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ~ ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_contain, COMMUTATOR = '@', RESTRICT = contsel, JOIN = contjoinsel ); -- -- Sorting operators for Btree -- CREATE OPERATOR < ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_lt, COMMUTATOR = '>', NEGATOR = '>=', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR <= ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_le, COMMUTATOR = '>=', NEGATOR = '>', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR = ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_eq, COMMUTATOR = '=', -- we might implement a faster negator here RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR >= ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_ge, COMMUTATOR = '<=', NEGATOR = '<', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR > ( LEFTARG = GEOMETRY, RIGHTARG = GEOMETRY, PROCEDURE = geometry_gt, COMMUTATOR = '<', NEGATOR = '<=', RESTRICT = contsel, JOIN = contjoinsel ); -- -- GEOS Functions -- CREATE FUNCTION intersection(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@','intersection' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION buffer(geometry,float8) RETURNS geometry AS '@MODULE_FILENAME@','buffer' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION convexhull(geometry) RETURNS geometry AS '@MODULE_FILENAME@','convexhull' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION difference(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@','difference' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION boundary(geometry) RETURNS geometry AS '@MODULE_FILENAME@','boundary' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION symdifference(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@','symdifference' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION symmetricdifference(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@','symdifference' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION GeomUnion(geometry,geometry) RETURNS geometry AS '@MODULE_FILENAME@','geomunion' LANGUAGE 'C' WITH (isstrict); CREATE AGGREGATE MemGeomUnion ( basetype = geometry, sfunc = geomunion, stype = geometry ); CREATE FUNCTION unite_garray (geometry[]) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C'; CREATE AGGREGATE GeomUnion ( sfunc = geom_accum, basetype = geometry, stype = geometry[], finalfunc = unite_garray ); CREATE FUNCTION relate(geometry,geometry) RETURNS text AS '@MODULE_FILENAME@','relate_full' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION relate(geometry,geometry,text) RETURNS boolean AS '@MODULE_FILENAME@','relate_pattern' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION disjoint(geometry,geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION touches(geometry,geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION intersects(geometry,geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION crosses(geometry,geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION within(geometry,geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION contains(geometry,geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION overlaps(geometry,geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION isvalid(geometry) RETURNS boolean AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); CREATE FUNCTION geosnoop(geometry) RETURNS geometry AS '@MODULE_FILENAME@', 'GEOSnoop' LANGUAGE 'C' WITH (isstrict); -- -- Algorithms -- CREATE FUNCTION simplify(geometry, float8) RETURNS geometry AS '@MODULE_FILENAME@' LANGUAGE 'C' WITH (isstrict); postgis-0.8.1/postgis_transform.c0100664000077300001440000002653007731671040016570 0ustar postgisusers /********************************************************************** * $Id: postgis_transform.c,v 1.14 2025/09/16 20:27:12 dblasby Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: postgis_transform.c,v $ * Revision 1.14 2025/09/16 20:27:12 dblasby * added ability to delete geometries. * * Revision 1.13 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * **********************************************************************/ #include "postgres.h" #include #include #include #include #include #include "access/gist.h" #include "access/itup.h" #include "access/rtree.h" #include "fmgr.h" #include "postgis.h" #include "utils/elog.h" #define SHOW_DIGS_DOUBLE 15 #define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1) // if USE_PROJECTION undefined, we get a do-nothing transform() function #ifdef USE_PROJ #include "projects.h" PJ *make_project(char *str1); void to_rad(POINT3D *pts, int num_points); void to_dec(POINT3D *pts, int num_points); int pj_transform_nodatum( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, double *x, double *y, double *z ); //this is *exactly* the same as PROJ.4's pj_transform(), but it doesnt do the // datum shift. int pj_transform_nodatum( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, double *x, double *y, double *z ) { long i; //int need_datum_shift; pj_errno = 0; if( point_offset == 0 ) point_offset = 1; if( !srcdefn->is_latlong ) { for( i = 0; i < point_count; i++ ) { XY projected_loc; LP geodetic_loc; projected_loc.u = x[point_offset*i]; projected_loc.v = y[point_offset*i]; geodetic_loc = pj_inv( projected_loc, srcdefn ); if( pj_errno != 0 ) return pj_errno; x[point_offset*i] = geodetic_loc.u; y[point_offset*i] = geodetic_loc.v; } } if( !dstdefn->is_latlong ) { for( i = 0; i < point_count; i++ ) { XY projected_loc; LP geodetic_loc; geodetic_loc.u = x[point_offset*i]; geodetic_loc.v = y[point_offset*i]; projected_loc = pj_fwd( geodetic_loc, dstdefn ); if( pj_errno != 0 ) return pj_errno; x[point_offset*i] = projected_loc.u; y[point_offset*i] = projected_loc.v; } } return 0; } // convert decimal degress to radians void to_rad(POINT3D *pts, int num_points) { int t; for(t=0;tvl_len +1-4); memcpy(input_proj4,input_proj4_text->vl_dat, input_proj4_text->vl_len-4); input_proj4[input_proj4_text->vl_len-4] = 0; //null terminate output_proj4 = (char *) palloc(output_proj4_text->vl_len +1-4); memcpy(output_proj4,output_proj4_text->vl_dat, output_proj4_text->vl_len-4); output_proj4[output_proj4_text->vl_len-4] = 0; //null terminate if (geom->SRID == -1) { pfree(input_proj4); pfree(output_proj4); elog(ERROR,"tranform: source SRID = -1"); PG_RETURN_NULL(); // no srid, cannot convert } if (result_srid == -1) { pfree(input_proj4); pfree(output_proj4); elog(ERROR,"tranform: destination SRID = -1"); PG_RETURN_NULL(); // no srid, cannot convert } //make input and output projection objects input_pj = make_project(input_proj4); if ( (input_pj == NULL) || pj_errno) { pfree(input_proj4); pfree(output_proj4); elog(ERROR,"tranform: couldnt parse proj4 input string"); PG_RETURN_NULL(); } output_pj = make_project(output_proj4); if ((output_pj == NULL)|| pj_errno) { pfree(input_proj4); pfree(output_proj4); pj_free(input_pj); elog(ERROR,"tranform: couldnt parse proj4 output string"); PG_RETURN_NULL(); } //great, now we have a geometry, and input/output PJ* structs. Excellent. //copy the geometry structure - we're only going to change the points, not the structures result = (GEOMETRY *) palloc (geom->size); memcpy(result,geom, geom->size); gtype = result->type; // allow transformations of the BOX3D type - the loop below won't be entered since for a BOX3D // type result->nobjs will be -1 so we check for it here if (gtype == BBOXONLYTYPE) { bbox = &(result->bvol); pt = (POINT3D *)bbox; if (input_pj->is_latlong) to_rad(pt,2); tmpPts = palloc(sizeof(POINT3D)*2); memcpy(tmpPts, pt, sizeof(POINT3D)*2); pj_transform(input_pj,output_pj, 2,3, &pt->x,&pt->y, &pt->z); if (pj_errno) { if (pj_errno == -38) //2nd chance { //couldnt do nadshift - do it without the datum memcpy(pt,tmpPts, sizeof(POINT3D)*2); pj_transform_nodatum(input_pj,output_pj, 2 ,3, &pt->x,&pt->y, &pt->z); } if (pj_errno) { pfree(input_proj4); pfree(output_proj4); pj_free(input_pj); pj_free(output_pj); elog(ERROR,"transform: couldnt project bbox point: %i (%s)",pj_errno,pj_strerrno(pj_errno)); PG_RETURN_NULL(); } } pfree(tmpPts); if (output_pj->is_latlong) to_dec(pt,2); }else{ //handle each sub-geometry offsets1 = (int32 *) ( ((char *) &(result->objType[0] ))+ sizeof(int32) * result->nobjs ) ; for (j=0; j< result->nobjs; j++) //for each object in geom1 { o1 = (char *) result +offsets1[j] ; type1= result->objType[j]; if (type1 == POINTTYPE) //point { pt = (POINT3D *) o1; if (input_pj->is_latlong) to_rad(pt,1); tmpPts = palloc(sizeof(POINT3D) ); memcpy(tmpPts,pt, sizeof(POINT3D)); pj_transform(input_pj,output_pj, 1,3, &pt->x,&pt->y, &pt->z); if (pj_errno) { if (pj_errno == -38) //2nd chance { //couldnt do nadshift - do it without the datum memcpy(pt,tmpPts, sizeof(POINT3D)); pj_transform_nodatum(input_pj,output_pj, 1,3, &pt->x,&pt->y, &pt->z); } if (pj_errno) { pfree(input_proj4); pfree(output_proj4); pj_free(input_pj); pj_free(output_pj); elog(ERROR,"transform: couldnt project point: %i (%s)",pj_errno,pj_strerrno(pj_errno)); PG_RETURN_NULL(); } } pfree(tmpPts); if (output_pj->is_latlong) to_dec(pt,1); } if (type1 == LINETYPE) //line { line = (LINE3D *) o1; if (input_pj->is_latlong) to_rad(&line->points[0],line->npoints); tmpPts = palloc(sizeof(POINT3D)*line->npoints ); memcpy(tmpPts,&line->points[0], sizeof(POINT3D)*line->npoints); pj_transform(input_pj,output_pj, line->npoints ,3, &line->points[0].x,&line->points[0].y, &line->points[0].z); if (pj_errno) { if (pj_errno == -38) //2nd chance { //couldnt do nadshift - do it without the datum memcpy(&line->points[0],tmpPts, sizeof(POINT3D)*line->npoints); pj_transform_nodatum(input_pj,output_pj, line->npoints ,3, &line->points[0].x,&line->points[0].y, &line->points[0].z); } if (pj_errno) { pfree(input_proj4); pfree(output_proj4); pj_free(input_pj); pj_free(output_pj); elog(ERROR,"transform: couldnt project line"); PG_RETURN_NULL(); } } pfree(tmpPts); if (output_pj->is_latlong) to_dec(&line->points[0],line->npoints); } if (type1 == POLYGONTYPE) //POLYGON { poly = (POLYGON3D *) o1; poly_points = 0; for (i=0; inrings;i++) { poly_points += poly->npoints[i]; } poly_pts = (POINT3D *) ( (char *)&(poly->npoints[poly->nrings] ) ); if (input_pj->is_latlong) to_rad(poly_pts , poly_points); tmpPts = palloc(sizeof(POINT3D)* poly_points ); memcpy(tmpPts,&poly_pts[0].x, sizeof(POINT3D)* poly_points); pj_transform(input_pj,output_pj, poly_points,3, &poly_pts[0].x,&poly_pts[0].y, &poly_pts[0].z); if (pj_errno) { if (pj_errno == -38) //2nd chance { //couldnt do nadshift - do it without the datum memcpy(&poly_pts[0].x,tmpPts, sizeof(POINT3D)*poly_points); pj_transform_nodatum(input_pj,output_pj, poly_points,3, &poly_pts[0].x,&poly_pts[0].y, &poly_pts[0].z); } if (pj_errno) { pfree(input_proj4); pfree(output_proj4); pj_free(input_pj); pj_free(output_pj); elog(ERROR,"transform: couldnt project polygon"); PG_RETURN_NULL(); } } pfree(tmpPts); if (output_pj->is_latlong) to_dec(poly_pts , poly_points); } } } // clean up pj_free(input_pj); pj_free(output_pj); pfree(input_proj4); pfree(output_proj4); // Generate the bounding box if necessary if (gtype != BBOXONLYTYPE) { bbox = bbox_of_geometry(result); memcpy(&result->bvol,bbox, sizeof(BOX3D) ); //make bounding box } result->SRID = result_srid; PG_RETURN_POINTER(result); // new geometry } #else // return the original geometry PG_FUNCTION_INFO_V1(transform_geom); Datum transform_geom(PG_FUNCTION_ARGS) { elog(ERROR,"PostGIS transform() called, but support not compiled in. Modify your makefile to add proj support, remake and re-install"); //GEOMETRY *geom1 = (GEOMETRY *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); //GEOMETRY *result; //result = (GEOMETRY *) palloc (geom1->size); //memcpy(result,geom1, geom1->size); ///elog(NOTICE,"PostGIS transform //PG_RETURN_POINTER(result); PG_RETURN_NULL(); } #endif postgis-0.8.1/spatial_ref_sys.sql0100664000077300001440000420172107712523340016550 0ustar postgisusersBEGIN; -- -- Anguilla 1957 British West Indies Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2000,'ESRI',2000,'PROJCS["Anguilla_1957_British_West_Indies_Grid",GEOGCS["GCS_Anguilla_1957",DATUM["D_Anguilla_1957",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-62],PARAMETER["Scale_Factor",0.9995000000000001],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m'); -- -- Antigua 1943 British West Indies Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2001,'ESRI',2001,'PROJCS["Antigua_1943_British_West_Indies_Grid",GEOGCS["GCS_Antigua_1943",DATUM["D_Antigua_1943",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-62],PARAMETER["Scale_Factor",0.9995000000000001],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m'); -- -- Dominica 1945 British West Indies Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2002,'ESRI',2002,'PROJCS["Dominica_1945_British_West_Indies_Grid",GEOGCS["GCS_Dominica_1945",DATUM["D_Dominica_1945",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-62],PARAMETER["Scale_Factor",0.9995000000000001],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m'); -- -- Grenada 1953 British West Indies Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2003,'ESRI',2003,'PROJCS["Grenada_1953_British_West_Indies_Grid",GEOGCS["GCS_Grenada_1953",DATUM["D_Grenada_1953",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-62],PARAMETER["Scale_Factor",0.9995000000000001],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m'); -- -- Montserrat 1958 British West Indies Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2004,'ESRI',2004,'PROJCS["Montserrat_1958_British_West_Indies_Grid",GEOGCS["GCS_Montserrat_1958",DATUM["D_Montserrat_1958",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-62],PARAMETER["Scale_Factor",0.9995000000000001],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m'); -- -- St Kitts 1955 British West Indies Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2005,'ESRI',2005,'PROJCS["St_Kitts_1955_British_West_Indies_Grid",GEOGCS["GCS_St_Kitts_1955",DATUM["D_St_Kitts_1955",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-62],PARAMETER["Scale_Factor",0.9995000000000001],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m'); -- -- St Lucia 1955 British West Indies Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2006,'ESRI',2006,'PROJCS["St_Lucia_1955_British_West_Indies_Grid",GEOGCS["GCS_St_Lucia_1955",DATUM["D_St_Lucia_1955",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-62],PARAMETER["Scale_Factor",0.9995000000000001],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m'); -- -- St Vincent 1945 British West Indies Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2007,'ESRI',2007,'PROJCS["St_Vincent_1945_British_West_Indies_Grid",GEOGCS["GCS_St_Vincent_1945",DATUM["D_St_Vincent_1945",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-62],PARAMETER["Scale_Factor",0.9995000000000001],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m'); -- -- NAD 1927 CGQ77 MTM 2 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2008,'ESRI',2008,'PROJCS["NAD_1927_CGQ77_MTM_2_SCoPQ",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-55.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 MTM 3 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2009,'ESRI',2009,'PROJCS["NAD_1927_CGQ77_MTM_3_SCoPQ",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-58.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 MTM 4 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2010,'ESRI',2010,'PROJCS["NAD_1927_CGQ77_MTM_4_SCoPQ",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-61.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 MTM 5 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2011,'ESRI',2011,'PROJCS["NAD_1927_CGQ77_MTM_5_SCoPQ",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-64.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 MTM 6 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2012,'ESRI',2012,'PROJCS["NAD_1927_CGQ77_MTM_6_SCoPQ",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-67.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 MTM 7 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2013,'ESRI',2013,'PROJCS["NAD_1927_CGQ77_MTM_7_SCoPQ",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 MTM 8 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2014,'ESRI',2014,'PROJCS["NAD_1927_CGQ77_MTM_8_SCoPQ",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-73.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 MTM 9 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2015,'ESRI',2015,'PROJCS["NAD_1927_CGQ77_MTM_9_SCoPQ",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-76.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 MTM 10 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2016,'ESRI',2016,'PROJCS["NAD_1927_CGQ77_MTM_10_SCoPQ",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 8 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2017,'ESRI',2017,'PROJCS["NAD_1927_DEF_1976_MTM_8",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-73.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 9 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2018,'ESRI',2018,'PROJCS["NAD_1927_DEF_1976_MTM_9",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-76.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 10 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2019,'ESRI',2019,'PROJCS["NAD_1927_DEF_1976_MTM_10",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 11 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2020,'ESRI',2020,'PROJCS["NAD_1927_DEF_1976_MTM_11",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 12 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2021,'ESRI',2021,'PROJCS["NAD_1927_DEF_1976_MTM_12",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 13 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2022,'ESRI',2022,'PROJCS["NAD_1927_DEF_1976_MTM_13",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 14 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2023,'ESRI',2023,'PROJCS["NAD_1927_DEF_1976_MTM_14",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 15 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2024,'ESRI',2024,'PROJCS["NAD_1927_DEF_1976_MTM_15",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 16 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2025,'ESRI',2025,'PROJCS["NAD_1927_DEF_1976_MTM_16",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 MTM 17 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2026,'ESRI',2026,'PROJCS["NAD_1927_DEF_1976_MTM_17",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 UTM Zone 15N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2027,'ESRI',2027,'PROJCS["NAD_1927_DEF_1976_UTM_Zone_15N",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=15 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 UTM Zone 16N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2028,'ESRI',2028,'PROJCS["NAD_1927_DEF_1976_UTM_Zone_16N",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=16 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 UTM Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2029,'ESRI',2029,'PROJCS["NAD_1927_DEF_1976_UTM_Zone_17N",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +ellps=clrk66 +units=m'); -- -- NAD 1927 DEF 1976 UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2030,'ESRI',2030,'PROJCS["NAD_1927_DEF_1976_UTM_Zone_18N",GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 UTM Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2031,'ESRI',2031,'PROJCS["NAD_1927_CGQ77_UTM_Zone_17N",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2032,'ESRI',2032,'PROJCS["NAD_1927_CGQ77_UTM_Zone_18N",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2033,'ESRI',2033,'PROJCS["NAD_1927_CGQ77_UTM_Zone_19N",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2034,'ESRI',2034,'PROJCS["NAD_1927_CGQ77_UTM_Zone_20N",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=clrk66 +units=m'); -- -- NAD 1927 CGQ77 UTM Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2035,'ESRI',2035,'PROJCS["NAD_1927_CGQ77_UTM_Zone_21N",GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +ellps=clrk66 +units=m'); -- -- NAD 1983 CSRS98 New Brunswick Stereographic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2036,'ESRI',2036,'PROJCS["NAD_1983_CSRS98_New_Brunswick_Stereographic",GEOGCS["GCS_North_American_1983_CSRS98",DATUM["D_North_American_1983_CSRS98",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",2500000],PARAMETER["False_Northing",7500000],PARAMETER["Central_Meridian",-66.5],PARAMETER["Scale_Factor",0.999912],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1]]','+ellps=GRS80 +units=m'); -- -- NAD 1983 CSRS98 UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2037,'ESRI',2037,'PROJCS["NAD_1983_CSRS98_UTM_Zone_19N",GEOGCS["GCS_North_American_1983_CSRS98",DATUM["D_North_American_1983_CSRS98",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +ellps=GRS80 +units=m'); -- -- NAD 1983 CSRS98 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2038,'ESRI',2038,'PROJCS["NAD_1983_CSRS98_UTM_Zone_20N",GEOGCS["GCS_North_American_1983_CSRS98",DATUM["D_North_American_1983_CSRS98",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=GRS80 +units=m'); -- -- Israel TM Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2039,'ESRI',2039,'PROJCS["Israel_TM_Grid",GEOGCS["GCS_Israel",DATUM["D_Israel",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",219529.584],PARAMETER["False_Northing",626907.39],PARAMETER["Central_Meridian",35.20451694444445],PARAMETER["Scale_Factor",1.0000067],PARAMETER["Latitude_Of_Origin",31.73439361111111],UNIT["Meter",1]]','+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.000007 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +units=m'); -- -- Locodjo 1965 UTM Zone 30N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2040,'ESRI',2040,'PROJCS["Locodjo_1965_UTM_Zone_30N",GEOGCS["GCS_Locodjo_1965",DATUM["D_Locodjo_1965",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=30 +ellps=clrk80 +units=m'); -- -- Abidjan 1987 UTM Zone 30N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2041,'ESRI',2041,'PROJCS["Abidjan_1987_UTM_Zone_30N",GEOGCS["GCS_Abidjan_1987",DATUM["D_Abidjan_1987",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=30 +ellps=clrk80 +units=m'); -- -- Locodjo 1965 UTM Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2042,'ESRI',2042,'PROJCS["Locodjo_1965_UTM_Zone_29N",GEOGCS["GCS_Locodjo_1965",DATUM["D_Locodjo_1965",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +ellps=clrk80 +units=m'); -- -- Abidjan 1987 UTM Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2043,'ESRI',2043,'PROJCS["Abidjan_1987_UTM_Zone_29N",GEOGCS["GCS_Abidjan_1987",DATUM["D_Abidjan_1987",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +ellps=clrk80 +units=m'); -- -- Hanoi 1972 GK Zone 18 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2044,'ESRI',2044,'PROJCS["Hanoi_1972_GK_Zone_18",GEOGCS["GCS_Hanoi_1972",DATUM["D_Hanoi_1972",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",18500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m'); -- -- Hanoi 1972 GK Zone 19 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2045,'ESRI',2045,'PROJCS["Hanoi_1972_GK_Zone_19",GEOGCS["GCS_Hanoi_1972",DATUM["D_Hanoi_1972",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",19500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m'); -- -- CH1903+ LV95 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2056,'ESRI',2056,'PROJCS["CH1903+_LV95",GEOGCS["GCS_CH1903+",DATUM["D_CH1903+",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["False_Easting",2600000],PARAMETER["False_Northing",1200000],PARAMETER["Scale_Factor",1],PARAMETER["Azimuth",90],PARAMETER["Longitude_Of_Center",7.439583333333333],PARAMETER["Latitude_Of_Center",46.95240555555556],UNIT["Meter",1]]','+ellps=bessel +units=m'); -- -- ED 1950 ED77 UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2058,'ESRI',2058,'PROJCS["ED_1950_ED77_UTM_Zone_38N",GEOGCS["GCS_European_1950_ED77",DATUM["D_European_1950_ED77",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=intl +units=m'); -- -- ED 1950 ED77 UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2059,'ESRI',2059,'PROJCS["ED_1950_ED77_UTM_Zone_39N",GEOGCS["GCS_European_1950_ED77",DATUM["D_European_1950_ED77",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=intl +units=m'); -- -- ED 1950 ED77 UTM Zone 40N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2060,'ESRI',2060,'PROJCS["ED_1950_ED77_UTM_Zone_40N",GEOGCS["GCS_European_1950_ED77",DATUM["D_European_1950_ED77",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=40 +ellps=intl +units=m'); -- -- ED 1950 ED77 UTM Zone 41N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2061,'ESRI',2061,'PROJCS["ED_1950_ED77_UTM_Zone_41N",GEOGCS["GCS_European_1950_ED77",DATUM["D_European_1950_ED77",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=41 +ellps=intl +units=m'); -- -- Madrid 1870 Madrid Spain -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2062,'ESRI',2062,'PROJCS["Madrid_1870_Madrid_Spain",GEOGCS["GCS_Madrid_1870_Madrid",DATUM["D_Madrid_1870",SPHEROID["Struve_1860",6378298.3,294.73]],PRIMEM["Madrid",-3.687938888888889],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",600000],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",40],PARAMETER["Scale_Factor",0.9988085293],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=lcc +lat_1=40 +lat_0=40 +lon_0=-3.687938888888889 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669562 +pm=-3.687938888888889 +units=m'); -- -- S-JTSK Ferro Krovak -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2065,'ESRI',2065,'PROJCS["S-JTSK_Ferro_Krovak",GEOGCS["GCS_S_JTSK_Ferro",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Ferro",-17.66666666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Krovak"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",42.5],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",1],PARAMETER["Y_Scale",1],PARAMETER["XY_Plane_Rotation",0],UNIT["Meter",1]]','+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m'); -- -- Greek Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2100,'EPSG',2100,'PROJCS["Greek_Grid",GEOGCS["GCS_GGRS_1987",DATUM["D_GGRS_1987",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",24],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- ATS 1977 New Brunswick Stereographic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2200,'EPSG',2200,'PROJCS["ATS_1977_New_Brunswick_Stereographic",GEOGCS["GCS_ATS_1977",DATUM["D_ATS_1977",SPHEROID["ATS_1977",6378135,298.257]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",800000],PARAMETER["Central_Meridian",-66.5],PARAMETER["Scale_Factor",0.999912],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1]]','+a=6378135 +b=6356750.304921594 +units=m'); -- -- ATS 1977 UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2219,'EPSG',2219,'PROJCS["ATS_1977_UTM_Zone_19N",GEOGCS["GCS_ATS_1977",DATUM["D_ATS_1977",SPHEROID["ATS_1977",6378135,298.257]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m'); -- -- ATS 1977 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2220,'EPSG',2220,'PROJCS["ATS_1977_UTM_Zone_20N",GEOGCS["GCS_ATS_1977",DATUM["D_ATS_1977",SPHEROID["ATS_1977",6378135,298.257]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m'); -- -- Prince Edward Island Stereographic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2290,'EPSG',2290,'PROJCS["Prince_Edward_Island_Stereographic",GEOGCS["GCS_ATS_1977",DATUM["D_ATS_1977",SPHEROID["ATS_1977",6378135,298.257]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.999912],PARAMETER["Latitude_Of_Origin",47.25],UNIT["Meter",1]]','+a=6378135 +b=6356750.304921594 +units=m'); -- -- ATS 1977 MTM 4 Nova Scotia -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2294,'EPSG',2294,'PROJCS["ATS_1977_MTM_4_Nova_Scotia",GEOGCS["GCS_ATS_1977",DATUM["D_ATS_1977",SPHEROID["ATS_1977",6378135,298.257]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",4500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-61.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m'); -- -- ATS 1977 MTM 5 Nova Scotia -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2295,'EPSG',2295,'PROJCS["ATS_1977_MTM_5_Nova_Scotia",GEOGCS["GCS_ATS_1977",DATUM["D_ATS_1977",SPHEROID["ATS_1977",6378135,298.257]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",5500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-64.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m'); -- -- Finland Zone 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2391,'EPSG',2391,'PROJCS["Finland_Zone_1",GEOGCS["GCS_KKJ",DATUM["D_KKJ",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=intl +units=m'); -- -- Finland Zone 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2392,'EPSG',2392,'PROJCS["Finland_Zone_2",GEOGCS["GCS_KKJ",DATUM["D_KKJ",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",2500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",24],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m'); -- -- Finland Zone 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2393,'EPSG',2393,'PROJCS["Finland_Zone_3",GEOGCS["GCS_KKJ",DATUM["D_KKJ",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=intl +units=m'); -- -- Finland Zone 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2394,'EPSG',2394,'PROJCS["Finland_Zone_4",GEOGCS["GCS_KKJ",DATUM["D_KKJ",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",4500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",30],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=intl +units=m'); -- -- RT90 25 gon W -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2400,'EPSG',2400,'PROJCS["RT90_25_gon_W",GEOGCS["GCS_RT_1990",DATUM["D_RT_1990",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15.80827777777778],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m'); -- -- Samboja UTM Zone 50S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2550,'EPSG',2550,'PROJCS["Samboja_UTM_Zone_50S",GEOGCS["GCS_Samboja",DATUM["D_Samboja",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +south +ellps=bessel +units=m'); -- -- Lietuvos Koordinaciu Sistema -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2600,'EPSG',2600,'PROJCS["Lietuvos_Koordinaciu_Sistema",GEOGCS["GCS_LKS_1994",DATUM["D_Lithuania_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",24],PARAMETER["Scale_Factor",0.9998],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999800 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- Tete UTM Zone 36S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2736,'EPSG',2736,'PROJCS["Tete_UTM_Zone_36S",GEOGCS["GCS_Tete",DATUM["D_Tete",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=36 +south +ellps=clrk66 +units=m'); -- -- Tete UTM Zone 37S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (2737,'EPSG',2737,'PROJCS["Tete_UTM_Zone_37S",GEOGCS["GCS_Tete",DATUM["D_Tete",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +south +ellps=clrk66 +units=m'); -- -- Moznet UTM Zone 36S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3036,'EPSG',3036,'PROJCS["Moznet_UTM_Zone_36S",GEOGCS["GCS_Moznet",DATUM["D_Moznet",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=36 +south +ellps=WGS84 +units=m'); -- -- Moznet UTM Zone 37S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3037,'EPSG',3037,'PROJCS["Moznet_UTM_Zone_37S",GEOGCS["GCS_Moznet",DATUM["D_Moznet",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +south +ellps=WGS84 +units=m'); -- -- Indian 1960 UTM Zone 48N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3148,'EPSG',3148,'PROJCS["Indian_1960_UTM_Zone_48N",GEOGCS["GCS_Indian_1960",DATUM["D_Indian_1960",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- Indian 1960 UTM Zone 49N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3149,'EPSG',3149,'PROJCS["Indian_1960_UTM_Zone_49N",GEOGCS["GCS_Indian_1960",DATUM["D_Indian_1960",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- Indian 1960 TM 106NE -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3176,'EPSG',3176,'PROJCS["Indian_1960_TM_106NE",GEOGCS["GCS_Indian_1960",DATUM["D_Indian_1960",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",106],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=106 +k=0.999600 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- FD 1958 Iraq -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3200,'ESRI',3200,'PROJCS["FD_1958_Iraq",GEOGCS["GCS_FD_1958",DATUM["D_FD_1958",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",1166200],PARAMETER["Central_Meridian",45],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Scale_Factor",0.9987864077700001],PARAMETER["Latitude_Of_Origin",32.5],UNIT["Meter",1]]','+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864077700001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m'); -- -- Estonian Coordinate System of 1992 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3300,'EPSG',3300,'PROJCS["Estonian_Coordinate_System_of_1992",GEOGCS["GCS_Estonia_1992",DATUM["D_Estonia_1992",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",6375000],PARAMETER["Central_Meridian",24],PARAMETER["Standard_Parallel_1",58],PARAMETER["Standard_Parallel_2",59.33333333333334],PARAMETER["Latitude_Of_Origin",57.51755393055556],UNIT["Meter",1]]','+proj=lcc +lat_1=58 +lat_2=59.33333333333334 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +units=m'); -- -- PDO 1993 UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3439,'EPSG',3439,'PROJCS["PDO_1993_UTM_Zone_39N",GEOGCS["GCS_PDO_1993",DATUM["D_PDO_1993",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=clrk80 +units=m'); -- -- PDO 1993 UTM Zone 40N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3440,'EPSG',3440,'PROJCS["PDO_1993_UTM_Zone_40N",GEOGCS["GCS_PDO_1993",DATUM["D_PDO_1993",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=40 +ellps=clrk80 +units=m'); -- -- Old Hawaiian StatePlane Hawaii 1 FIPS 5101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3561,'EPSG',3561,'PROJCS["Old_Hawaiian_StatePlane_Hawaii_1_FIPS_5101",GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192'); -- -- Old Hawaiian StatePlane Hawaii 2 FIPS 5102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3562,'EPSG',3562,'PROJCS["Old_Hawaiian_StatePlane_Hawaii_2_FIPS_5102",GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192'); -- -- Old Hawaiian StatePlane Hawaii 3 FIPS 5103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3563,'EPSG',3563,'PROJCS["Old_Hawaiian_StatePlane_Hawaii_3_FIPS_5103",GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-158],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192'); -- -- Old Hawaiian StatePlane Hawaii 4 FIPS 5104 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3564,'EPSG',3564,'PROJCS["Old_Hawaiian_StatePlane_Hawaii_4_FIPS_5104",GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192'); -- -- Old Hawaiian StatePlane Hawaii 5 FIPS 5105 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3565,'EPSG',3565,'PROJCS["Old_Hawaiian_StatePlane_Hawaii_5_FIPS_5105",GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192'); -- -- Puerto Rico UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3920,'EPSG',3920,'PROJCS["Puerto_Rico_UTM_Zone_20N",GEOGCS["GCS_Puerto_Rico",DATUM["D_Puerto_Rico",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=clrk66 +units=m'); -- -- Puerto Rico StatePlane Puerto Rico FIPS 5201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3991,'EPSG',3991,'PROJCS["Puerto_Rico_StatePlane_Puerto_Rico_FIPS_5201",GEOGCS["GCS_Puerto_Rico",DATUM["D_Puerto_Rico",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333334],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192'); -- -- Puerto Rico StatePlane Virgin Islands St Croix FIPS 5202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (3992,'EPSG',3992,'PROJCS["Puerto_Rico_StatePlane_Virgin_Islands_St_Croix_FIPS_5202",GEOGCS["GCS_Puerto_Rico",DATUM["D_Puerto_Rico",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333334],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012193 +ellps=clrk66 +to_meter=0.3048006096012192'); -- -- Pulkovo 1995 GK Zone 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20002,'ESRI',20002,'PROJCS["Pulkovo_1995_GK_Zone_2",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",2500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20003,'ESRI',20003,'PROJCS["Pulkovo_1995_GK_Zone_3",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20004,'EPSG',20004,'PROJCS["Pulkovo_1995_GK_Zone_4",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",4500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 5 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20005,'EPSG',20005,'PROJCS["Pulkovo_1995_GK_Zone_5",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",5500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 6 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20006,'EPSG',20006,'PROJCS["Pulkovo_1995_GK_Zone_6",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",6500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 7 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20007,'EPSG',20007,'PROJCS["Pulkovo_1995_GK_Zone_7",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",7500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 8 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20008,'EPSG',20008,'PROJCS["Pulkovo_1995_GK_Zone_8",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",8500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 9 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20009,'EPSG',20009,'PROJCS["Pulkovo_1995_GK_Zone_9",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",9500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 10 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20010,'EPSG',20010,'PROJCS["Pulkovo_1995_GK_Zone_10",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",10500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 11 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20011,'EPSG',20011,'PROJCS["Pulkovo_1995_GK_Zone_11",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",11500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 12 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20012,'EPSG',20012,'PROJCS["Pulkovo_1995_GK_Zone_12",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",12500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 13 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20013,'EPSG',20013,'PROJCS["Pulkovo_1995_GK_Zone_13",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",13500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 14 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20014,'EPSG',20014,'PROJCS["Pulkovo_1995_GK_Zone_14",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",14500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 15 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20015,'EPSG',20015,'PROJCS["Pulkovo_1995_GK_Zone_15",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",15500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 16 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20016,'EPSG',20016,'PROJCS["Pulkovo_1995_GK_Zone_16",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",16500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 17 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20017,'EPSG',20017,'PROJCS["Pulkovo_1995_GK_Zone_17",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",17500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 18 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20018,'EPSG',20018,'PROJCS["Pulkovo_1995_GK_Zone_18",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",18500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 19 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20019,'EPSG',20019,'PROJCS["Pulkovo_1995_GK_Zone_19",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",19500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 20 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20020,'EPSG',20020,'PROJCS["Pulkovo_1995_GK_Zone_20",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",20500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 21 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20021,'EPSG',20021,'PROJCS["Pulkovo_1995_GK_Zone_21",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",21500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 22 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20022,'EPSG',20022,'PROJCS["Pulkovo_1995_GK_Zone_22",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",22500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 23 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20023,'EPSG',20023,'PROJCS["Pulkovo_1995_GK_Zone_23",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",23500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 24 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20024,'EPSG',20024,'PROJCS["Pulkovo_1995_GK_Zone_24",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",24500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 25 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20025,'EPSG',20025,'PROJCS["Pulkovo_1995_GK_Zone_25",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",25500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 26 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20026,'EPSG',20026,'PROJCS["Pulkovo_1995_GK_Zone_26",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",26500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 27 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20027,'EPSG',20027,'PROJCS["Pulkovo_1995_GK_Zone_27",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",27500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 28 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20028,'EPSG',20028,'PROJCS["Pulkovo_1995_GK_Zone_28",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",28500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 29 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20029,'EPSG',20029,'PROJCS["Pulkovo_1995_GK_Zone_29",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",29500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",171],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 30 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20030,'EPSG',20030,'PROJCS["Pulkovo_1995_GK_Zone_30",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",30500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",177],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 31 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20031,'EPSG',20031,'PROJCS["Pulkovo_1995_GK_Zone_31",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",31500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-177],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 32 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20032,'EPSG',20032,'PROJCS["Pulkovo_1995_GK_Zone_32",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",32500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-171],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 2N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20062,'ESRI',20062,'PROJCS["Pulkovo_1995_GK_Zone_2N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 3N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20063,'ESRI',20063,'PROJCS["Pulkovo_1995_GK_Zone_3N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 4N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20064,'EPSG',20064,'PROJCS["Pulkovo_1995_GK_Zone_4N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 5N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20065,'EPSG',20065,'PROJCS["Pulkovo_1995_GK_Zone_5N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 6N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20066,'EPSG',20066,'PROJCS["Pulkovo_1995_GK_Zone_6N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 7N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20067,'EPSG',20067,'PROJCS["Pulkovo_1995_GK_Zone_7N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 8N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20068,'EPSG',20068,'PROJCS["Pulkovo_1995_GK_Zone_8N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 9N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20069,'EPSG',20069,'PROJCS["Pulkovo_1995_GK_Zone_9N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 10N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20070,'EPSG',20070,'PROJCS["Pulkovo_1995_GK_Zone_10N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 11N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20071,'EPSG',20071,'PROJCS["Pulkovo_1995_GK_Zone_11N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 12N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20072,'EPSG',20072,'PROJCS["Pulkovo_1995_GK_Zone_12N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 13N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20073,'EPSG',20073,'PROJCS["Pulkovo_1995_GK_Zone_13N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 14N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20074,'EPSG',20074,'PROJCS["Pulkovo_1995_GK_Zone_14N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 15N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20075,'EPSG',20075,'PROJCS["Pulkovo_1995_GK_Zone_15N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 16N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20076,'EPSG',20076,'PROJCS["Pulkovo_1995_GK_Zone_16N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20077,'EPSG',20077,'PROJCS["Pulkovo_1995_GK_Zone_17N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20078,'EPSG',20078,'PROJCS["Pulkovo_1995_GK_Zone_18N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20079,'EPSG',20079,'PROJCS["Pulkovo_1995_GK_Zone_19N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20080,'EPSG',20080,'PROJCS["Pulkovo_1995_GK_Zone_20N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20081,'EPSG',20081,'PROJCS["Pulkovo_1995_GK_Zone_21N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 22N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20082,'EPSG',20082,'PROJCS["Pulkovo_1995_GK_Zone_22N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 23N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20083,'EPSG',20083,'PROJCS["Pulkovo_1995_GK_Zone_23N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 24N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20084,'EPSG',20084,'PROJCS["Pulkovo_1995_GK_Zone_24N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 25N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20085,'EPSG',20085,'PROJCS["Pulkovo_1995_GK_Zone_25N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 26N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20086,'EPSG',20086,'PROJCS["Pulkovo_1995_GK_Zone_26N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 27N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20087,'EPSG',20087,'PROJCS["Pulkovo_1995_GK_Zone_27N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 28N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20088,'EPSG',20088,'PROJCS["Pulkovo_1995_GK_Zone_28N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20089,'EPSG',20089,'PROJCS["Pulkovo_1995_GK_Zone_29N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",171],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 30N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20090,'EPSG',20090,'PROJCS["Pulkovo_1995_GK_Zone_30N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",177],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 31N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20091,'EPSG',20091,'PROJCS["Pulkovo_1995_GK_Zone_31N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-177],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1995 GK Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20092,'EPSG',20092,'PROJCS["Pulkovo_1995_GK_Zone_32N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-171],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Adindan UTM Zone 37N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20137,'EPSG',20137,'PROJCS["Adindan_UTM_Zone_37N",GEOGCS["GCS_Adindan",DATUM["D_Adindan",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +ellps=clrk80 +units=m'); -- -- Adindan UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20138,'EPSG',20138,'PROJCS["Adindan_UTM_Zone_38N",GEOGCS["GCS_Adindan",DATUM["D_Adindan",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=clrk80 +units=m'); -- -- AGD 1966 AMG Zone 48 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20248,'EPSG',20248,'PROJCS["AGD_1966_AMG_Zone_48",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 49 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20249,'EPSG',20249,'PROJCS["AGD_1966_AMG_Zone_49",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 50 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20250,'EPSG',20250,'PROJCS["AGD_1966_AMG_Zone_50",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 51 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20251,'EPSG',20251,'PROJCS["AGD_1966_AMG_Zone_51",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 52 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20252,'EPSG',20252,'PROJCS["AGD_1966_AMG_Zone_52",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 53 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20253,'EPSG',20253,'PROJCS["AGD_1966_AMG_Zone_53",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 54 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20254,'EPSG',20254,'PROJCS["AGD_1966_AMG_Zone_54",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=54 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 55 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20255,'EPSG',20255,'PROJCS["AGD_1966_AMG_Zone_55",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=55 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 56 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20256,'EPSG',20256,'PROJCS["AGD_1966_AMG_Zone_56",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=56 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 57 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20257,'EPSG',20257,'PROJCS["AGD_1966_AMG_Zone_57",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=57 +south +ellps=aust_SA +units=m'); -- -- AGD 1966 AMG Zone 58 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20258,'EPSG',20258,'PROJCS["AGD_1966_AMG_Zone_58",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=58 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 48 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20348,'EPSG',20348,'PROJCS["AGD_1984_AMG_Zone_48",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 49 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20349,'EPSG',20349,'PROJCS["AGD_1984_AMG_Zone_49",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 50 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20350,'EPSG',20350,'PROJCS["AGD_1984_AMG_Zone_50",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 51 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20351,'EPSG',20351,'PROJCS["AGD_1984_AMG_Zone_51",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 52 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20352,'EPSG',20352,'PROJCS["AGD_1984_AMG_Zone_52",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 53 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20353,'EPSG',20353,'PROJCS["AGD_1984_AMG_Zone_53",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 54 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20354,'EPSG',20354,'PROJCS["AGD_1984_AMG_Zone_54",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=54 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 55 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20355,'EPSG',20355,'PROJCS["AGD_1984_AMG_Zone_55",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=55 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 56 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20356,'EPSG',20356,'PROJCS["AGD_1984_AMG_Zone_56",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=56 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 57 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20357,'EPSG',20357,'PROJCS["AGD_1984_AMG_Zone_57",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=57 +south +ellps=aust_SA +units=m'); -- -- AGD 1984 AMG Zone 58 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20358,'EPSG',20358,'PROJCS["AGD_1984_AMG_Zone_58",GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=58 +south +ellps=aust_SA +units=m'); -- -- Ain el Abd UTM Zone 37N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20437,'EPSG',20437,'PROJCS["Ain_el_Abd_UTM_Zone_37N",GEOGCS["GCS_Ain_el_Abd_1970",DATUM["D_Ain_el_Abd_1970",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +ellps=intl +units=m'); -- -- Ain el Abd UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20438,'EPSG',20438,'PROJCS["Ain_el_Abd_UTM_Zone_38N",GEOGCS["GCS_Ain_el_Abd_1970",DATUM["D_Ain_el_Abd_1970",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=intl +units=m'); -- -- Ain el Abd UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20439,'EPSG',20439,'PROJCS["Ain_el_Abd_UTM_Zone_39N",GEOGCS["GCS_Ain_el_Abd_1970",DATUM["D_Ain_el_Abd_1970",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=intl +units=m'); -- -- Bahrain State Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20499,'EPSG',20499,'PROJCS["Bahrain_State_Grid",GEOGCS["GCS_Ain_el_Abd_1970",DATUM["D_Ain_el_Abd_1970",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=intl +units=m'); -- -- Afgooye UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20538,'EPSG',20538,'PROJCS["Afgooye_UTM_Zone_38N",GEOGCS["GCS_Afgooye",DATUM["D_Afgooye",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=krass +units=m'); -- -- Afgooye UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20539,'EPSG',20539,'PROJCS["Afgooye_UTM_Zone_39N",GEOGCS["GCS_Afgooye",DATUM["D_Afgooye",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=krass +units=m'); -- -- Portuguese National Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20790,'EPSG',20790,'PROJCS["Portuguese_National_Grid",GEOGCS["GCS_Lisbon_Lisbon",DATUM["D_Lisbon",SPHEROID["International_1924",6378388,297]],PRIMEM["Lisbon",-9.131906111111112],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",1],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl +pm=-9.131906111111112 +units=m'); -- -- Aratu UTM Zone 22S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20822,'EPSG',20822,'PROJCS["Aratu_UTM_Zone_22S",GEOGCS["GCS_Aratu",DATUM["D_Aratu",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +south +ellps=intl +units=m'); -- -- Aratu UTM Zone 23S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20823,'EPSG',20823,'PROJCS["Aratu_UTM_Zone_23S",GEOGCS["GCS_Aratu",DATUM["D_Aratu",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=23 +south +ellps=intl +units=m'); -- -- Aratu UTM Zone 24S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (20824,'EPSG',20824,'PROJCS["Aratu_UTM_Zone_24S",GEOGCS["GCS_Aratu",DATUM["D_Aratu",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=24 +south +ellps=intl +units=m'); -- -- Batavia UTM Zone 48S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21148,'EPSG',21148,'PROJCS["Batavia_UTM_Zone_48S",GEOGCS["GCS_Batavia",DATUM["D_Batavia",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +south +ellps=bessel +units=m'); -- -- Batavia UTM Zone 49S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21149,'EPSG',21149,'PROJCS["Batavia_UTM_Zone_49S",GEOGCS["GCS_Batavia",DATUM["D_Batavia",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +south +ellps=bessel +units=m'); -- -- Batavia UTM Zone 50S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21150,'EPSG',21150,'PROJCS["Batavia_UTM_Zone_50S",GEOGCS["GCS_Batavia",DATUM["D_Batavia",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +south +ellps=bessel +units=m'); -- -- Barbados 1938 British West Indies Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21291,'EPSG',21291,'PROJCS["Barbados_1938_British_West_Indies_Grid",GEOGCS["GCS_Barbados_1938",DATUM["D_Barbados_1938",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-62],PARAMETER["Scale_Factor",0.9995000000000001],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m'); -- -- Barbados 1938 Barbados Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21292,'EPSG',21292,'PROJCS["Barbados_1938_Barbados_Grid",GEOGCS["GCS_Barbados_1938",DATUM["D_Barbados_1938",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",30000],PARAMETER["False_Northing",75000],PARAMETER["Central_Meridian",-59.55972222222222],PARAMETER["Scale_Factor",0.9999986],PARAMETER["Latitude_Of_Origin",13.17638888888889],UNIT["Meter",1]]','+proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.999999 +x_0=30000 +y_0=75000 +ellps=clrk80 +units=m'); -- -- Beijing 1954 GK Zone 13 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21413,'EPSG',21413,'PROJCS["Beijing_1954_GK_Zone_13",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",13500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 14 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21414,'EPSG',21414,'PROJCS["Beijing_1954_GK_Zone_14",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",14500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 15 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21415,'EPSG',21415,'PROJCS["Beijing_1954_GK_Zone_15",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",15500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 16 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21416,'EPSG',21416,'PROJCS["Beijing_1954_GK_Zone_16",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",16500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 17 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21417,'EPSG',21417,'PROJCS["Beijing_1954_GK_Zone_17",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",17500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 18 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21418,'EPSG',21418,'PROJCS["Beijing_1954_GK_Zone_18",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",18500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 19 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21419,'EPSG',21419,'PROJCS["Beijing_1954_GK_Zone_19",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",19500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 20 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21420,'EPSG',21420,'PROJCS["Beijing_1954_GK_Zone_20",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",20500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 21 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21421,'EPSG',21421,'PROJCS["Beijing_1954_GK_Zone_21",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",21500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 22 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21422,'EPSG',21422,'PROJCS["Beijing_1954_GK_Zone_22",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",22500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 23 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21423,'EPSG',21423,'PROJCS["Beijing_1954_GK_Zone_23",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",23500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 13N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21473,'EPSG',21473,'PROJCS["Beijing_1954_GK_Zone_13N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 14N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21474,'EPSG',21474,'PROJCS["Beijing_1954_GK_Zone_14N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 15N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21475,'EPSG',21475,'PROJCS["Beijing_1954_GK_Zone_15N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 16N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21476,'EPSG',21476,'PROJCS["Beijing_1954_GK_Zone_16N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21477,'EPSG',21477,'PROJCS["Beijing_1954_GK_Zone_17N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21478,'EPSG',21478,'PROJCS["Beijing_1954_GK_Zone_18N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21479,'EPSG',21479,'PROJCS["Beijing_1954_GK_Zone_19N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21480,'EPSG',21480,'PROJCS["Beijing_1954_GK_Zone_20N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21481,'EPSG',21481,'PROJCS["Beijing_1954_GK_Zone_21N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 22N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21482,'EPSG',21482,'PROJCS["Beijing_1954_GK_Zone_22N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Beijing 1954 GK Zone 23N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21483,'EPSG',21483,'PROJCS["Beijing_1954_GK_Zone_23N",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Belge Lambert 1950 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21500,'EPSG',21500,'PROJCS["Belge_Lambert_1950",GEOGCS["GCS_Belge_1950_Brussels",DATUM["D_Belge_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Brussels",4.367975],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",150000],PARAMETER["False_Northing",5400000],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",49.83333333333334],PARAMETER["Standard_Parallel_2",51.16666666666666],PARAMETER["Latitude_Of_Origin",90],UNIT["Meter",1]]','+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.367975 +x_0=150000 +y_0=5400000 +ellps=intl +pm=4.367975 +units=m'); -- -- CH1903 LV03 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21781,'EPSG',21781,'PROJCS["CH1903_LV03",GEOGCS["GCS_CH1903",DATUM["D_CH1903",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",200000],PARAMETER["Scale_Factor",1],PARAMETER["Azimuth",90],PARAMETER["Longitude_Of_Center",7.439583333333333],PARAMETER["Latitude_Of_Center",46.95240555555556],UNIT["Meter",1]]','+ellps=bessel +units=m'); -- -- Bogota UTM Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21817,'EPSG',21817,'PROJCS["Bogota_UTM_Zone_17N",GEOGCS["GCS_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +ellps=intl +units=m'); -- -- Bogota UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21818,'EPSG',21818,'PROJCS["Bogota_UTM_Zone_18N",GEOGCS["GCS_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=intl +units=m'); -- -- Colombia West Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21891,'EPSG',21891,'PROJCS["Colombia_West_Zone",GEOGCS["GCS_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-77.08091666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",4.599047222222222],UNIT["Meter",1]]','+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m'); -- -- Colombia Bogota Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21892,'EPSG',21892,'PROJCS["Colombia_Bogota_Zone",GEOGCS["GCS_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-74.08091666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",4.599047222222222],UNIT["Meter",1]]','+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m'); -- -- Colombia East Central Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21893,'EPSG',21893,'PROJCS["Colombia_East_Central_Zone",GEOGCS["GCS_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-71.08091666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",4.599047222222222],UNIT["Meter",1]]','+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m'); -- -- Colombia East Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (21894,'EPSG',21894,'PROJCS["Colombia_East_Zone",GEOGCS["GCS_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-68.08091666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",4.599047222222222],UNIT["Meter",1]]','+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m'); -- -- Camacupa UTM Zone 32S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22032,'EPSG',22032,'PROJCS["Camacupa_UTM_Zone_32S",GEOGCS["GCS_Camacupa",DATUM["D_Camacupa",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +south +ellps=clrk80 +units=m'); -- -- Camacupa UTM Zone 33S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22033,'EPSG',22033,'PROJCS["Camacupa_UTM_Zone_33S",GEOGCS["GCS_Camacupa",DATUM["D_Camacupa",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +south +ellps=clrk80 +units=m'); -- -- Camacupa TM 11 30 SE -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22091,'EPSG',22091,'PROJCS["Camacupa_TM_11_30_SE",GEOGCS["GCS_Camacupa",DATUM["D_Camacupa",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",11.5],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m'); -- -- Camacupa TM 12 SE -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22092,'EPSG',22092,'PROJCS["Camacupa_TM_12_SE",GEOGCS["GCS_Camacupa",DATUM["D_Camacupa",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",12],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=12 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m'); -- -- Argentina Zone 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22191,'EPSG',22191,'PROJCS["Argentina_Zone_1",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-72],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=intl +units=m'); -- -- Argentina Zone 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22192,'EPSG',22192,'PROJCS["Argentina_Zone_2",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m'); -- -- Argentina Zone 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22193,'EPSG',22193,'PROJCS["Argentina_Zone_3",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-66],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=intl +units=m'); -- -- Argentina Zone 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22194,'EPSG',22194,'PROJCS["Argentina_Zone_4",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",4500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=intl +units=m'); -- -- Argentina Zone 5 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22195,'EPSG',22195,'PROJCS["Argentina_Zone_5",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",5500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-60],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=intl +units=m'); -- -- Argentina Zone 6 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22196,'EPSG',22196,'PROJCS["Argentina_Zone_6",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",6500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=intl +units=m'); -- -- Argentina Zone 7 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22197,'EPSG',22197,'PROJCS["Argentina_Zone_7",GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",7500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-54],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=intl +units=m'); -- -- Carthage UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22332,'EPSG',22332,'PROJCS["Carthage_UTM_Zone_32N",GEOGCS["GCS_Carthage_Degree",DATUM["D_Carthage",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Nord Tunisie -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22391,'ESRI',22391,'PROJCS["Nord_Tunisie",GEOGCS["GCS_Carthage",DATUM["D_Carthage",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",11],PARAMETER["Standard_Parallel_1",40],PARAMETER["Scale_Factor",0.999625544],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.899999999999999 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Sud Tunisie -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22392,'ESRI',22392,'PROJCS["Sud_Tunisie",GEOGCS["GCS_Carthage",DATUM["D_Carthage",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",11],PARAMETER["Standard_Parallel_1",37],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",37],UNIT["Meter",1]]','+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.899999999999999 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Corrego Alegre UTM Zone 23S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22523,'EPSG',22523,'PROJCS["Corrego_Alegre_UTM_Zone_23S",GEOGCS["GCS_Corrego_Alegre",DATUM["D_Corrego_Alegre",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=23 +south +ellps=intl +units=m'); -- -- Corrego Alegre UTM Zone 24S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22524,'EPSG',22524,'PROJCS["Corrego_Alegre_UTM_Zone_24S",GEOGCS["GCS_Corrego_Alegre",DATUM["D_Corrego_Alegre",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=24 +south +ellps=intl +units=m'); -- -- Deir ez Zor Levant Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22700,'ESRI',22700,'PROJCS["Deir_ez_Zor_Levant_Zone",GEOGCS["GCS_Deir_ez_Zor",DATUM["D_Deir_ez_Zor",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39.15],PARAMETER["Scale_Factor",0.9995341],PARAMETER["Latitude_Of_Origin",34.2],UNIT["Meter",1]]','+a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Deir ez Zor Syria Lambert -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22770,'ESRI',22770,'PROJCS["Deir_ez_Zor_Syria_Lambert",GEOGCS["GCS_Deir_ez_Zor",DATUM["D_Deir_ez_Zor",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",37.35],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Scale_Factor",0.9996256],PARAMETER["Latitude_Of_Origin",34.65],UNIT["Meter",1]]','+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Douala UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22832,'EPSG',22832,'PROJCS["Douala_UTM_Zone_32N",GEOGCS["GCS_Douala",DATUM["D_Douala",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Egypt Blue Belt -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22991,'EPSG',22991,'PROJCS["Egypt_Blue_Belt",GEOGCS["GCS_Egypt_1907",DATUM["D_Egypt_1907",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",1100000],PARAMETER["Central_Meridian",35],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=35 +k=1.000000 +x_0=300000 +y_0=1100000 +ellps=helmert +units=m'); -- -- Egypt Red Belt -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22992,'EPSG',22992,'PROJCS["Egypt_Red_Belt",GEOGCS["GCS_Egypt_1907",DATUM["D_Egypt_1907",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",615000],PARAMETER["False_Northing",810000],PARAMETER["Central_Meridian",31],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=31 +k=1.000000 +x_0=615000 +y_0=810000 +ellps=helmert +units=m'); -- -- Egypt Purple Belt -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22993,'EPSG',22993,'PROJCS["Egypt_Purple_Belt",GEOGCS["GCS_Egypt_1907",DATUM["D_Egypt_1907",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",200000],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=27 +k=1.000000 +x_0=700000 +y_0=200000 +ellps=helmert +units=m'); -- -- Egypt Extended Purple Belt -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (22994,'EPSG',22994,'PROJCS["Egypt_Extended_Purple_Belt",GEOGCS["GCS_Egypt_1907",DATUM["D_Egypt_1907",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",1200000],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=27 +k=1.000000 +x_0=700000 +y_0=1200000 +ellps=helmert +units=m'); -- -- ED 1950 UTM Zone 28N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23028,'EPSG',23028,'PROJCS["ED_1950_UTM_Zone_28N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=28 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23029,'EPSG',23029,'PROJCS["ED_1950_UTM_Zone_29N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 30N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23030,'EPSG',23030,'PROJCS["ED_1950_UTM_Zone_30N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=30 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 31N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23031,'EPSG',23031,'PROJCS["ED_1950_UTM_Zone_31N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=31 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23032,'EPSG',23032,'PROJCS["ED_1950_UTM_Zone_32N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 33N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23033,'EPSG',23033,'PROJCS["ED_1950_UTM_Zone_33N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 34N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23034,'EPSG',23034,'PROJCS["ED_1950_UTM_Zone_34N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=34 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 35N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23035,'EPSG',23035,'PROJCS["ED_1950_UTM_Zone_35N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=35 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 36N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23036,'EPSG',23036,'PROJCS["ED_1950_UTM_Zone_36N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=36 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 37N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23037,'EPSG',23037,'PROJCS["ED_1950_UTM_Zone_37N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +ellps=intl +units=m'); -- -- ED 1950 UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23038,'EPSG',23038,'PROJCS["ED_1950_UTM_Zone_38N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=intl +units=m'); -- -- ED 1950 TM 0 N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23090,'EPSG',23090,'PROJCS["ED_1950_TM_0_N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=0 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +units=m'); -- -- ED 1950 TM 5 NE -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23095,'EPSG',23095,'PROJCS["ED_1950_TM_5_NE",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",5],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=5 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +units=m'); -- -- Fahud UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23239,'EPSG',23239,'PROJCS["Fahud_UTM_Zone_39N",GEOGCS["GCS_Fahud",DATUM["D_Fahud",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=clrk80 +units=m'); -- -- Fahud UTM Zone 40N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23240,'EPSG',23240,'PROJCS["Fahud_UTM_Zone_40N",GEOGCS["GCS_Fahud",DATUM["D_Fahud",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=40 +ellps=clrk80 +units=m'); -- -- Garoua UTM Zone 33N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23433,'EPSG',23433,'PROJCS["Garoua_UTM_Zone_33N",GEOGCS["GCS_Garoua",DATUM["D_Garoua",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Hungarian 1972 Egyseges Orszagos Vetuleti -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23700,'EPSG',23700,'PROJCS["Hungarian_1972_Egyseges_Orszagos_Vetuleti",GEOGCS["GCS_Hungarian_1972",DATUM["D_Hungarian_1972",SPHEROID["GRS_1967",6378160,298.247167427]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["False_Easting",650000],PARAMETER["False_Northing",200000],PARAMETER["Scale_Factor",0.99993],PARAMETER["Azimuth",90],PARAMETER["Longitude_Of_Center",19.048571778],PARAMETER["Latitude_Of_Center",47.14439372222],UNIT["Meter",1]]','+ellps=GRS67 +units=m'); -- -- Indonesian 1974 UTM Zone 46N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23846,'EPSG',23846,'PROJCS["Indonesian_1974_UTM_Zone_46N",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 47N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23847,'EPSG',23847,'PROJCS["Indonesian_1974_UTM_Zone_47N",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 48N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23848,'EPSG',23848,'PROJCS["Indonesian_1974_UTM_Zone_48N",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 49N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23849,'EPSG',23849,'PROJCS["Indonesian_1974_UTM_Zone_49N",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 50N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23850,'EPSG',23850,'PROJCS["Indonesian_1974_UTM_Zone_50N",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 51N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23851,'EPSG',23851,'PROJCS["Indonesian_1974_UTM_Zone_51N",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 52N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23852,'EPSG',23852,'PROJCS["Indonesian_1974_UTM_Zone_52N",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 53N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23853,'EPSG',23853,'PROJCS["Indonesian_1974_UTM_Zone_53N",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 46S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23886,'EPSG',23886,'PROJCS["Indonesian_1974_UTM_Zone_46S",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 47S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23887,'EPSG',23887,'PROJCS["Indonesian_1974_UTM_Zone_47S",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 48S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23888,'EPSG',23888,'PROJCS["Indonesian_1974_UTM_Zone_48S",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 49S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23889,'EPSG',23889,'PROJCS["Indonesian_1974_UTM_Zone_49S",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 50S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23890,'EPSG',23890,'PROJCS["Indonesian_1974_UTM_Zone_50S",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 51S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23891,'EPSG',23891,'PROJCS["Indonesian_1974_UTM_Zone_51S",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 52S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23892,'EPSG',23892,'PROJCS["Indonesian_1974_UTM_Zone_52S",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 53S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23893,'EPSG',23893,'PROJCS["Indonesian_1974_UTM_Zone_53S",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indonesian 1974 UTM Zone 54S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23894,'EPSG',23894,'PROJCS["Indonesian_1974_UTM_Zone_54S",GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +units=m'); -- -- Indian 1954 UTM Zone 47N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23947,'EPSG',23947,'PROJCS["Indian_1954_UTM_Zone_47N",GEOGCS["GCS_Indian_1954",DATUM["D_Indian_1954",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- Indian 1954 UTM Zone 48N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (23948,'EPSG',23948,'PROJCS["Indian_1954_UTM_Zone_48N",GEOGCS["GCS_Indian_1954",DATUM["D_Indian_1954",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- Indian 1975 UTM Zone 47N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24047,'EPSG',24047,'PROJCS["Indian_1975_UTM_Zone_47N",GEOGCS["GCS_Indian_1975",DATUM["D_Indian_1975",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- Indian 1975 UTM Zone 48N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24048,'EPSG',24048,'PROJCS["Indian_1975_UTM_Zone_48N",GEOGCS["GCS_Indian_1975",DATUM["D_Indian_1975",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- Jamaica 1875 Old Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24100,'ESRI',24100,'PROJCS["Jamaica_1875_Old_Grid",GEOGCS["GCS_Jamaica_1875",DATUM["D_Jamaica_1875",SPHEROID["Clarke_1880",6378249.138,293.466307656]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",550000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",-77],PARAMETER["Standard_Parallel_1",18],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",18],UNIT["Meter",1]]','+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=550000 +y_0=400000 +a=6378249.138 +b=6356514.959419348 +units=m'); -- -- Jamaica Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24200,'ESRI',24200,'PROJCS["Jamaica_Grid",GEOGCS["GCS_Jamaica_1969",DATUM["D_Jamaica_1969",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",250000],PARAMETER["False_Northing",150000],PARAMETER["Central_Meridian",-77],PARAMETER["Standard_Parallel_1",18],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",18],UNIT["Meter",1]]','+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +units=m'); -- -- Kalianpur 1937 UTM Zone 45N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24305,'EPSG',24305,'PROJCS["Kalianpur_1937_UTM_Zone_45N",GEOGCS["GCS_Kalianpur_1937",DATUM["D_Kalianpur_1937",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=45 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- Kalianpur 1937 UTM Zone 46N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24306,'EPSG',24306,'PROJCS["Kalianpur_1937_UTM_Zone_46N",GEOGCS["GCS_Kalianpur_1937",DATUM["D_Kalianpur_1937",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=46 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- Kalianpur 1962 UTM Zone 41N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24311,'EPSG',24311,'PROJCS["Kalianpur_1962_UTM_Zone_41N",GEOGCS["GCS_Kalianpur_1962",DATUM["D_Kalianpur_1962",SPHEROID["Everest_Definition_1962",6377301.243,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165385 +units=m'); -- -- Kalianpur 1962 UTM Zone 42N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24312,'EPSG',24312,'PROJCS["Kalianpur_1962_UTM_Zone_42N",GEOGCS["GCS_Kalianpur_1962",DATUM["D_Kalianpur_1962",SPHEROID["Everest_Definition_1962",6377301.243,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165385 +units=m'); -- -- Kalianpur 1962 UTM Zone 43N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24313,'EPSG',24313,'PROJCS["Kalianpur_1962_UTM_Zone_43N",GEOGCS["GCS_Kalianpur_1962",DATUM["D_Kalianpur_1962",SPHEROID["Everest_Definition_1962",6377301.243,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165385 +units=m'); -- -- Kalianpur 1975 UTM Zone 42N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24342,'EPSG',24342,'PROJCS["Kalianpur_1975_UTM_Zone_42N",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1975 UTM Zone 43N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24343,'EPSG',24343,'PROJCS["Kalianpur_1975_UTM_Zone_43N",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1975 UTM Zone 44N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24344,'EPSG',24344,'PROJCS["Kalianpur_1975_UTM_Zone_44N",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1975 UTM Zone 45N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24345,'EPSG',24345,'PROJCS["Kalianpur_1975_UTM_Zone_45N",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1975 UTM Zone 46N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24346,'EPSG',24346,'PROJCS["Kalianpur_1975_UTM_Zone_46N",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1975 UTM Zone 47N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24347,'EPSG',24347,'PROJCS["Kalianpur_1975_UTM_Zone_47N",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1880 India Zone 0 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24370,'ESRI',24370,'PROJCS["Kalianpur_1880_India_Zone_0",GEOGCS["GCS_Kalianpur_1880",DATUM["D_Kalianpur_1880",SPHEROID["Everest_1830",6377299.36,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2355500],PARAMETER["False_Northing",2590000],PARAMETER["Central_Meridian",68],PARAMETER["Standard_Parallel_1",39.5],PARAMETER["Scale_Factor",0.99846154],PARAMETER["Latitude_Of_Origin",39.5],UNIT["Yard_Indian",0.91439853074444077]]','+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36 +b=6356098.35162804 +to_meter=0.9143985307444408'); -- -- Kalianpur 1880 India Zone I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24371,'ESRI',24371,'PROJCS["Kalianpur_1880_India_Zone_I",GEOGCS["GCS_Kalianpur_1880",DATUM["D_Kalianpur_1880",SPHEROID["Everest_1830",6377299.36,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",68],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",32.5],UNIT["Yard_Indian",0.91439853074444077]]','+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36 +b=6356098.35162804 +to_meter=0.9143985307444408'); -- -- Kalianpur 1880 India Zone IIa -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24372,'ESRI',24372,'PROJCS["Kalianpur_1880_India_Zone_IIa",GEOGCS["GCS_Kalianpur_1880",DATUM["D_Kalianpur_1880",SPHEROID["Everest_1830",6377299.36,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",74],PARAMETER["Standard_Parallel_1",26],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",26],UNIT["Yard_Indian",0.91439853074444077]]','+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36 +b=6356098.35162804 +to_meter=0.9143985307444408'); -- -- Kalianpur 1880 India Zone III -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24373,'ESRI',24373,'PROJCS["Kalianpur_1880_India_Zone_III",GEOGCS["GCS_Kalianpur_1880",DATUM["D_Kalianpur_1880",SPHEROID["Everest_1830",6377299.36,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",80],PARAMETER["Standard_Parallel_1",19],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",19],UNIT["Yard_Indian",0.91439853074444077]]','+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36 +b=6356098.35162804 +to_meter=0.9143985307444408'); -- -- Kalianpur 1880 India Zone IV -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24374,'ESRI',24374,'PROJCS["Kalianpur_1880_India_Zone_IV",GEOGCS["GCS_Kalianpur_1880",DATUM["D_Kalianpur_1880",SPHEROID["Everest_1830",6377299.36,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",80],PARAMETER["Standard_Parallel_1",12],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",12],UNIT["Yard_Indian",0.91439853074444077]]','+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36 +b=6356098.35162804 +to_meter=0.9143985307444408'); -- -- Kalianpur 1937 India Zone IIb -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24375,'ESRI',24375,'PROJCS["Kalianpur_1937_India_Zone_IIb",GEOGCS["GCS_Kalianpur_1937",DATUM["D_Kalianpur_1937",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2743195.5],PARAMETER["False_Northing",914398.5],PARAMETER["Central_Meridian",90],PARAMETER["Standard_Parallel_1",26],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",26],UNIT["Meter",1]]','+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377276.345 +b=6356075.413140239 +units=m'); -- -- Kalianpur 1962 India Zone I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24376,'ESRI',24376,'PROJCS["Kalianpur_1962_India_Zone_I",GEOGCS["GCS_Kalianpur_1962",DATUM["D_Kalianpur_1962",SPHEROID["Everest_Definition_1962",6377301.243,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2743196.4],PARAMETER["False_Northing",914398.8000000001],PARAMETER["Central_Meridian",68],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",32.5],UNIT["Meter",1]]','+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165385 +units=m'); -- -- Kalianpur 1962 India Zone IIa -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24377,'ESRI',24377,'PROJCS["Kalianpur_1962_India_Zone_IIa",GEOGCS["GCS_Kalianpur_1962",DATUM["D_Kalianpur_1962",SPHEROID["Everest_Definition_1962",6377301.243,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2743196.4],PARAMETER["False_Northing",914398.8000000001],PARAMETER["Central_Meridian",74],PARAMETER["Standard_Parallel_1",26],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",26],UNIT["Meter",1]]','+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165385 +units=m'); -- -- Kalianpur 1975 India Zone I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24378,'ESRI',24378,'PROJCS["Kalianpur_1975_India_Zone_I",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2743185.69],PARAMETER["False_Northing",914395.23],PARAMETER["Central_Meridian",68],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",32.5],UNIT["Meter",1]]','+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1975 India Zone IIa -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24379,'ESRI',24379,'PROJCS["Kalianpur_1975_India_Zone_IIa",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2743185.69],PARAMETER["False_Northing",914395.23],PARAMETER["Central_Meridian",74],PARAMETER["Standard_Parallel_1",26],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",26],UNIT["Meter",1]]','+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1975 India Zone IIb -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24380,'ESRI',24380,'PROJCS["Kalianpur_1975_India_Zone_IIb",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2743185.69],PARAMETER["False_Northing",914395.23],PARAMETER["Central_Meridian",90],PARAMETER["Standard_Parallel_1",26],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",26],UNIT["Meter",1]]','+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1975 India Zone III -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24381,'ESRI',24381,'PROJCS["Kalianpur_1975_India_Zone_III",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2743185.69],PARAMETER["False_Northing",914395.23],PARAMETER["Central_Meridian",80],PARAMETER["Standard_Parallel_1",19],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",19],UNIT["Meter",1]]','+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kalianpur 1880 India Zone IIb -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24382,'ESRI',24382,'PROJCS["Kalianpur_1880_India_Zone_IIb",GEOGCS["GCS_Kalianpur_1880",DATUM["D_Kalianpur_1880",SPHEROID["Everest_1830",6377299.36,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",90],PARAMETER["Standard_Parallel_1",26],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",26],UNIT["Yard_Indian",0.91439853074444077]]','+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36 +b=6356098.35162804 +to_meter=0.9143985307444408'); -- -- Kalianpur 1975 India Zone IV -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24383,'ESRI',24383,'PROJCS["Kalianpur_1975_India_Zone_IV",GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2743185.69],PARAMETER["False_Northing",914395.23],PARAMETER["Central_Meridian",80],PARAMETER["Standard_Parallel_1",12],PARAMETER["Scale_Factor",0.99878641],PARAMETER["Latitude_Of_Origin",12],UNIT["Meter",1]]','+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377299.151 +b=6356098.145120132 +units=m'); -- -- Kertau Singapore Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24500,'EPSG',24500,'PROJCS["Kertau_Singapore_Grid",GEOGCS["GCS_Kertau",DATUM["D_Kertau",SPHEROID["Everest_1830_Modified",6377304.063,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Cassini"],PARAMETER["False_Easting",30000],PARAMETER["False_Northing",30000],PARAMETER["Central_Meridian",103.8530022222222],PARAMETER["Latitude_Of_Origin",1.287646666666667],UNIT["Meter",1]]','+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +units=m'); -- -- Kertau UTM Zone 47N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24547,'EPSG',24547,'PROJCS["Kertau_UTM_Zone_47N",GEOGCS["GCS_Kertau",DATUM["D_Kertau",SPHEROID["Everest_1830_Modified",6377304.063,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +units=m'); -- -- Kertau UTM Zone 48N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24548,'EPSG',24548,'PROJCS["Kertau_UTM_Zone_48N",GEOGCS["GCS_Kertau",DATUM["D_Kertau",SPHEROID["Everest_1830_Modified",6377304.063,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +units=m'); -- -- KOC Lambert -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24600,'ESRI',24600,'PROJCS["KOC_Lambert",GEOGCS["GCS_Kuwait_Oil_Company",DATUM["D_Kuwait_Oil_Company",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",1166200],PARAMETER["Central_Meridian",45],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Scale_Factor",0.998786407767],PARAMETER["Latitude_Of_Origin",32.5],UNIT["Meter",1]]','+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.998786407767 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m'); -- -- La Canoa UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24718,'EPSG',24718,'PROJCS["La_Canoa_UTM_Zone_18N",GEOGCS["GCS_La_Canoa",DATUM["D_La_Canoa",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=intl +units=m'); -- -- La Canoa UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24719,'EPSG',24719,'PROJCS["La_Canoa_UTM_Zone_19N",GEOGCS["GCS_La_Canoa",DATUM["D_La_Canoa",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +ellps=intl +units=m'); -- -- La Canoa UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24720,'EPSG',24720,'PROJCS["La_Canoa_UTM_Zone_20N",GEOGCS["GCS_La_Canoa",DATUM["D_La_Canoa",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=intl +units=m'); -- -- La Canoa UTM Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24721,'ESRI',24721,'PROJCS["La_Canoa_UTM_Zone_21N",GEOGCS["GCS_La_Canoa",DATUM["D_La_Canoa",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +ellps=intl +units=m'); -- -- PSAD 1956 UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24818,'EPSG',24818,'PROJCS["PSAD_1956_UTM_Zone_18N",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=intl +units=m'); -- -- PSAD 1956 UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24819,'EPSG',24819,'PROJCS["PSAD_1956_UTM_Zone_19N",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +ellps=intl +units=m'); -- -- PSAD 1956 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24820,'EPSG',24820,'PROJCS["PSAD_1956_UTM_Zone_20N",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=intl +units=m'); -- -- PSAD 1956 UTM Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24821,'EPSG',24821,'PROJCS["PSAD_1956_UTM_Zone_21N",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +ellps=intl +units=m'); -- -- PSAD 1956 UTM Zone 17S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24877,'EPSG',24877,'PROJCS["PSAD_1956_UTM_Zone_17S",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +south +ellps=intl +units=m'); -- -- PSAD 1956 UTM Zone 18S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24878,'EPSG',24878,'PROJCS["PSAD_1956_UTM_Zone_18S",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +south +ellps=intl +units=m'); -- -- PSAD 1956 UTM Zone 19S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24879,'EPSG',24879,'PROJCS["PSAD_1956_UTM_Zone_19S",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +south +ellps=intl +units=m'); -- -- PSAD 1956 UTM Zone 20S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24880,'EPSG',24880,'PROJCS["PSAD_1956_UTM_Zone_20S",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +south +ellps=intl +units=m'); -- -- PSAD 1956 UTM Zone 22S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24882,'EPSG',24882,'PROJCS["PSAD_1956_UTM_Zone_22S",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +south +ellps=intl +units=m'); -- -- Peru West Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24891,'EPSG',24891,'PROJCS["Peru_West_Zone",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",222000],PARAMETER["False_Northing",1426834.743],PARAMETER["Central_Meridian",-80.5],PARAMETER["Scale_Factor",0.99983008],PARAMETER["Latitude_Of_Origin",-6],UNIT["Meter",1]]','+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.999830 +x_0=222000 +y_0=1426834.743 +ellps=intl +units=m'); -- -- Peru Central Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24892,'EPSG',24892,'PROJCS["Peru_Central_Zone",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",720000],PARAMETER["False_Northing",1039979.159],PARAMETER["Central_Meridian",-76],PARAMETER["Scale_Factor",0.99932994],PARAMETER["Latitude_Of_Origin",-9.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.999330 +x_0=720000 +y_0=1039979.159 +ellps=intl +units=m'); -- -- Peru East Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (24893,'EPSG',24893,'PROJCS["Peru_East_Zone",GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1324000],PARAMETER["False_Northing",1040084.558],PARAMETER["Central_Meridian",-70.5],PARAMETER["Scale_Factor",0.99952992],PARAMETER["Latitude_Of_Origin",-9.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.999530 +x_0=1324000 +y_0=1040084.558 +ellps=intl +units=m'); -- -- Ghana Metre Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25000,'EPSG',25000,'PROJCS["Ghana_Metre_Grid",GEOGCS["GCS_Leigon",DATUM["D_Leigon",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",274319.51],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-1],PARAMETER["Scale_Factor",0.99975],PARAMETER["Latitude_Of_Origin",4.666666666666667],UNIT["Meter",1]]','+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.999750 +x_0=274319.51 +y_0=0 +ellps=clrk80 +units=m'); -- -- Lome UTM Zone 31N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25231,'EPSG',25231,'PROJCS["Lome_UTM_Zone_31N",GEOGCS["GCS_Lome",DATUM["D_Lome",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=31 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Philippines Zone I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25391,'EPSG',25391,'PROJCS["Philippines_Zone_I",GEOGCS["GCS_Luzon_1911",DATUM["D_Luzon_1911",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=117 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m'); -- -- Philippines Zone II -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25392,'EPSG',25392,'PROJCS["Philippines_Zone_II",GEOGCS["GCS_Luzon_1911",DATUM["D_Luzon_1911",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",119],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=119 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m'); -- -- Philippines Zone III -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25393,'EPSG',25393,'PROJCS["Philippines_Zone_III",GEOGCS["GCS_Luzon_1911",DATUM["D_Luzon_1911",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",121],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=121 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m'); -- -- Philippines Zone IV -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25394,'EPSG',25394,'PROJCS["Philippines_Zone_IV",GEOGCS["GCS_Luzon_1911",DATUM["D_Luzon_1911",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=123 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m'); -- -- Philippines Zone V -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25395,'EPSG',25395,'PROJCS["Philippines_Zone_V",GEOGCS["GCS_Luzon_1911",DATUM["D_Luzon_1911",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",125],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=125 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m'); -- -- ETRF 1989 UTM Zone 28N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25828,'EPSG',25828,'PROJCS["ETRF_1989_UTM_Zone_28N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=28 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25829,'EPSG',25829,'PROJCS["ETRF_1989_UTM_Zone_29N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 30N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25830,'EPSG',25830,'PROJCS["ETRF_1989_UTM_Zone_30N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=30 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 31N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25831,'EPSG',25831,'PROJCS["ETRF_1989_UTM_Zone_31N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=31 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25832,'EPSG',25832,'PROJCS["ETRF_1989_UTM_Zone_32N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 33N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25833,'EPSG',25833,'PROJCS["ETRF_1989_UTM_Zone_33N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 34N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25834,'EPSG',25834,'PROJCS["ETRF_1989_UTM_Zone_34N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=34 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 35N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25835,'EPSG',25835,'PROJCS["ETRF_1989_UTM_Zone_35N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=35 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 36N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25836,'EPSG',25836,'PROJCS["ETRF_1989_UTM_Zone_36N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=36 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 37N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25837,'EPSG',25837,'PROJCS["ETRF_1989_UTM_Zone_37N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +ellps=WGS84 +units=m'); -- -- ETRF 1989 UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25838,'EPSG',25838,'PROJCS["ETRF_1989_UTM_Zone_38N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=WGS84 +units=m'); -- -- ETRF 1989 TM Baltic 1993 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25884,'EPSG',25884,'PROJCS["ETRF_1989_TM_Baltic_1993",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",24],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=WGS84 +units=m'); -- -- Malongo 1987 UTM Zone 32S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (25932,'EPSG',25932,'PROJCS["Malongo_1987_UTM_Zone_32S",GEOGCS["GCS_Malongo_1987",DATUM["D_Malongo_1987",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +south +ellps=intl +units=m'); -- -- Nord Maroc -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26191,'ESRI',26191,'PROJCS["Nord_Maroc",GEOGCS["GCS_Merchich",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",-6],PARAMETER["Standard_Parallel_1",37],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",37],UNIT["Meter",1]]','+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.399999999999999 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Sud Maroc -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26192,'ESRI',26192,'PROJCS["Sud_Maroc",GEOGCS["GCS_Merchich",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",-6],PARAMETER["Standard_Parallel_1",33],PARAMETER["Scale_Factor",0.9996155960000001],PARAMETER["Latitude_Of_Origin",33],UNIT["Meter",1]]','+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.399999999999999 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Sahara -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26193,'ESRI',26193,'PROJCS["Sahara",GEOGCS["GCS_Merchich",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1200000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",-6],PARAMETER["Standard_Parallel_1",29],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",29],UNIT["Meter",1]]','+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.399999999999999 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Massawa UTM Zone 37N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26237,'EPSG',26237,'PROJCS["Massawa_UTM_Zone_37N",GEOGCS["GCS_Massawa",DATUM["D_Massawa",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +ellps=bessel +units=m'); -- -- Minna UTM Zone 31N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26331,'EPSG',26331,'PROJCS["Minna_UTM_Zone_31N",GEOGCS["GCS_Minna",DATUM["D_Minna",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=31 +ellps=clrk80 +units=m'); -- -- Minna UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26332,'EPSG',26332,'PROJCS["Minna_UTM_Zone_32N",GEOGCS["GCS_Minna",DATUM["D_Minna",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +ellps=clrk80 +units=m'); -- -- Nigeria West Belt -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26391,'EPSG',26391,'PROJCS["Nigeria_West_Belt",GEOGCS["GCS_Minna",DATUM["D_Minna",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",230738.26],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",4.5],PARAMETER["Scale_Factor",0.99975],PARAMETER["Latitude_Of_Origin",4],UNIT["Meter",1]]','+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.999750 +x_0=230738.26 +y_0=0 +ellps=clrk80 +units=m'); -- -- Nigeria Mid Belt -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26392,'EPSG',26392,'PROJCS["Nigeria_Mid_Belt",GEOGCS["GCS_Minna",DATUM["D_Minna",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",670553.98],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",8.5],PARAMETER["Scale_Factor",0.99975],PARAMETER["Latitude_Of_Origin",4],UNIT["Meter",1]]','+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.999750 +x_0=670553.98 +y_0=0 +ellps=clrk80 +units=m'); -- -- Nigeria East Belt -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26393,'EPSG',26393,'PROJCS["Nigeria_East_Belt",GEOGCS["GCS_Minna",DATUM["D_Minna",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1110369.7],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",12.5],PARAMETER["Scale_Factor",0.99975],PARAMETER["Latitude_Of_Origin",4],UNIT["Meter",1]]','+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.999750 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +units=m'); -- -- Mhast UTM Zone 32S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26432,'EPSG',26432,'PROJCS["Mhast_UTM_Zone_32S",GEOGCS["GCS_Mhast",DATUM["D_Mhast",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +south +ellps=intl +units=m'); -- -- Monte Mario Rome Italy 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26591,'EPSG',26591,'PROJCS["Monte_Mario_Rome_Italy_1",GEOGCS["GCS_Monte_Mario_Rome",DATUM["D_Monte_Mario",SPHEROID["International_1924",6378388,297]],PRIMEM["Rome",12.45233333333333],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-3.45233333],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=9.00000000333333 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +pm=12.45233333333333 +units=m'); -- -- Monte Mario Rome Italy 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26592,'EPSG',26592,'PROJCS["Monte_Mario_Rome_Italy_2",GEOGCS["GCS_Monte_Mario_Rome",DATUM["D_Monte_Mario",SPHEROID["International_1924",6378388,297]],PRIMEM["Rome",12.45233333333333],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2520000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",2.54766667],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=15.00000000333333 +k=0.999600 +x_0=2520000 +y_0=0 +ellps=intl +pm=12.45233333333333 +units=m'); -- -- Mporaloko UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26632,'EPSG',26632,'PROJCS["Mporaloko_UTM_Zone_32N",GEOGCS["GCS_Mporaloko",DATUM["D_Mporaloko",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Mporaloko UTM Zone 32S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26692,'EPSG',26692,'PROJCS["Mporaloko_UTM_Zone_32S",GEOGCS["GCS_Mporaloko",DATUM["D_Mporaloko",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +south +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- NAD 1927 UTM Zone 3N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26703,'EPSG',26703,'PROJCS["NAD_1927_UTM_Zone_3N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 4N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26704,'EPSG',26704,'PROJCS["NAD_1927_UTM_Zone_4N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 5N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26705,'EPSG',26705,'PROJCS["NAD_1927_UTM_Zone_5N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 6N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26706,'EPSG',26706,'PROJCS["NAD_1927_UTM_Zone_6N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 7N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26707,'EPSG',26707,'PROJCS["NAD_1927_UTM_Zone_7N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 8N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26708,'EPSG',26708,'PROJCS["NAD_1927_UTM_Zone_8N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 9N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26709,'EPSG',26709,'PROJCS["NAD_1927_UTM_Zone_9N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 10N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26710,'EPSG',26710,'PROJCS["NAD_1927_UTM_Zone_10N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 11N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26711,'EPSG',26711,'PROJCS["NAD_1927_UTM_Zone_11N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 12N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26712,'EPSG',26712,'PROJCS["NAD_1927_UTM_Zone_12N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 13N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26713,'EPSG',26713,'PROJCS["NAD_1927_UTM_Zone_13N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 14N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26714,'EPSG',26714,'PROJCS["NAD_1927_UTM_Zone_14N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 15N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26715,'EPSG',26715,'PROJCS["NAD_1927_UTM_Zone_15N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 16N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26716,'EPSG',26716,'PROJCS["NAD_1927_UTM_Zone_16N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26717,'EPSG',26717,'PROJCS["NAD_1927_UTM_Zone_17N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26718,'EPSG',26718,'PROJCS["NAD_1927_UTM_Zone_18N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26719,'EPSG',26719,'PROJCS["NAD_1927_UTM_Zone_19N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26720,'EPSG',26720,'PROJCS["NAD_1927_UTM_Zone_20N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26721,'EPSG',26721,'PROJCS["NAD_1927_UTM_Zone_21N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 UTM Zone 22N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26722,'EPSG',26722,'PROJCS["NAD_1927_UTM_Zone_22N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 StatePlane Alabama East FIPS 0101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26729,'EPSG',26729,'PROJCS["NAD_1927_StatePlane_Alabama_East_FIPS_0101",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-85.83333333333333],PARAMETER["Scale_Factor",0.99996],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alabama West FIPS 0102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26730,'EPSG',26730,'PROJCS["NAD_1927_StatePlane_Alabama_West_FIPS_0102",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",30],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 1 FIPS 5001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26731,'EPSG',26731,'PROJCS["NAD_1927_StatePlane_Alaska_1_FIPS_5001",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",16404166.666667],PARAMETER["False_Northing",-16404166.666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",-36.86989764583333],PARAMETER["Longitude_Of_Center",-133.6666666666667],PARAMETER["Latitude_Of_Center",57],UNIT["Foot_US",0.30480060960121924]]','+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=-36.86989764583333 +k=0.9999 +x_0=5000000.000000102 +y_0=-5000000.000000102 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 2 FIPS 5002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26732,'EPSG',26732,'PROJCS["NAD_1927_StatePlane_Alaska_2_FIPS_5002",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-142],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 3 FIPS 5003 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26733,'EPSG',26733,'PROJCS["NAD_1927_StatePlane_Alaska_3_FIPS_5003",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-146],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 4 FIPS 5004 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26734,'EPSG',26734,'PROJCS["NAD_1927_StatePlane_Alaska_4_FIPS_5004",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-150],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 5 FIPS 5005 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26735,'EPSG',26735,'PROJCS["NAD_1927_StatePlane_Alaska_5_FIPS_5005",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-154],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 6 FIPS 5006 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26736,'EPSG',26736,'PROJCS["NAD_1927_StatePlane_Alaska_6_FIPS_5006",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-158],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 7 FIPS 5007 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26737,'EPSG',26737,'PROJCS["NAD_1927_StatePlane_Alaska_7_FIPS_5007",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-162],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=213360.4267208535 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 8 FIPS 5008 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26738,'EPSG',26738,'PROJCS["NAD_1927_StatePlane_Alaska_8_FIPS_5008",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-166],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 9 FIPS 5009 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26739,'EPSG',26739,'PROJCS["NAD_1927_StatePlane_Alaska_9_FIPS_5009",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-170],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Alaska 10 FIPS 5010 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26740,'EPSG',26740,'PROJCS["NAD_1927_StatePlane_Alaska_10_FIPS_5010",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-176],PARAMETER["Standard_Parallel_1",51.83333333333334],PARAMETER["Standard_Parallel_2",53.83333333333334],PARAMETER["Latitude_Of_Origin",51],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=51.83333333333334 +lat_2=53.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036577 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane California I FIPS 0401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26741,'EPSG',26741,'PROJCS["NAD_1927_StatePlane_California_I_FIPS_0401",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-122],PARAMETER["Standard_Parallel_1",40],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane California II FIPS 0402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26742,'EPSG',26742,'PROJCS["NAD_1927_StatePlane_California_II_FIPS_0402",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-122],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane California III FIPS 0403 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26743,'EPSG',26743,'PROJCS["NAD_1927_StatePlane_California_III_FIPS_0403",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane California IV FIPS 0404 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26744,'EPSG',26744,'PROJCS["NAD_1927_StatePlane_California_IV_FIPS_0404",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-119],PARAMETER["Standard_Parallel_1",36],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane California V FIPS 0405 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26745,'EPSG',26745,'PROJCS["NAD_1927_StatePlane_California_V_FIPS_0405",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-118],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane California VI FIPS 0406 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26746,'EPSG',26746,'PROJCS["NAD_1927_StatePlane_California_VI_FIPS_0406",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane California VII FIPS 0407 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26747,'EPSG',26747,'PROJCS["NAD_1927_StatePlane_California_VII_FIPS_0407",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4186692.58],PARAMETER["False_Northing",4160926.74],PARAMETER["Central_Meridian",-118.3333333333333],PARAMETER["Standard_Parallel_1",33.86666666666667],PARAMETER["Standard_Parallel_2",34.41666666666666],PARAMETER["Latitude_Of_Origin",34.13333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=33.86666666666667 +lat_2=34.41666666666666 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=1268253.006858014 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Arizona East FIPS 0201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26748,'EPSG',26748,'PROJCS["NAD_1927_StatePlane_Arizona_East_FIPS_0201",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Arizona Central FIPS 0202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26749,'EPSG',26749,'PROJCS["NAD_1927_StatePlane_Arizona_Central_FIPS_0202",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Arizona West FIPS 0203 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26750,'EPSG',26750,'PROJCS["NAD_1927_StatePlane_Arizona_West_FIPS_0203",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Arkansas North FIPS 0301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26751,'EPSG',26751,'PROJCS["NAD_1927_StatePlane_Arkansas_North_FIPS_0301",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Arkansas South FIPS 0302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26752,'EPSG',26752,'PROJCS["NAD_1927_StatePlane_Arkansas_South_FIPS_0302",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Colorado North FIPS 0501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26753,'EPSG',26753,'PROJCS["NAD_1927_StatePlane_Colorado_North_FIPS_0501",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Colorado Central FIPS 0502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26754,'EPSG',26754,'PROJCS["NAD_1927_StatePlane_Colorado_Central_FIPS_0502",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Colorado South FIPS 0503 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26755,'EPSG',26755,'PROJCS["NAD_1927_StatePlane_Colorado_South_FIPS_0503",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Connecticut FIPS 0600 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26756,'EPSG',26756,'PROJCS["NAD_1927_StatePlane_Connecticut_FIPS_0600",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Delaware FIPS 0700 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26757,'EPSG',26757,'PROJCS["NAD_1927_StatePlane_Delaware_FIPS_0700",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Florida East FIPS 0901 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26758,'EPSG',26758,'PROJCS["NAD_1927_StatePlane_Florida_East_FIPS_0901",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Florida West FIPS 0902 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26759,'EPSG',26759,'PROJCS["NAD_1927_StatePlane_Florida_West_FIPS_0902",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Florida North FIPS 0903 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26760,'EPSG',26760,'PROJCS["NAD_1927_StatePlane_Florida_North_FIPS_0903",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Hawaii 1 FIPS 5101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26761,'ESRI',26761,'PROJCS["NAD_1927_StatePlane_Hawaii_1_FIPS_5101",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Hawaii 2 FIPS 5102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26762,'ESRI',26762,'PROJCS["NAD_1927_StatePlane_Hawaii_2_FIPS_5102",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Hawaii 3 FIPS 5103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26763,'ESRI',26763,'PROJCS["NAD_1927_StatePlane_Hawaii_3_FIPS_5103",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-158],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Hawaii 4 FIPS 5104 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26764,'ESRI',26764,'PROJCS["NAD_1927_StatePlane_Hawaii_4_FIPS_5104",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Hawaii 5 FIPS 5105 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26765,'ESRI',26765,'PROJCS["NAD_1927_StatePlane_Hawaii_5_FIPS_5105",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Georgia East FIPS 1001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26766,'EPSG',26766,'PROJCS["NAD_1927_StatePlane_Georgia_East_FIPS_1001",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Georgia West FIPS 1002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26767,'EPSG',26767,'PROJCS["NAD_1927_StatePlane_Georgia_West_FIPS_1002",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Idaho East FIPS 1101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26768,'EPSG',26768,'PROJCS["NAD_1927_StatePlane_Idaho_East_FIPS_1101",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Idaho Central FIPS 1102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26769,'EPSG',26769,'PROJCS["NAD_1927_StatePlane_Idaho_Central_FIPS_1102",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-114],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Idaho West FIPS 1103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26770,'EPSG',26770,'PROJCS["NAD_1927_StatePlane_Idaho_West_FIPS_1103",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Illinois East FIPS 1201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26771,'EPSG',26771,'PROJCS["NAD_1927_StatePlane_Illinois_East_FIPS_1201",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Illinois West FIPS 1202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26772,'EPSG',26772,'PROJCS["NAD_1927_StatePlane_Illinois_West_FIPS_1202",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Indiana East FIPS 1301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26773,'EPSG',26773,'PROJCS["NAD_1927_StatePlane_Indiana_East_FIPS_1301",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Indiana West FIPS 1302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26774,'EPSG',26774,'PROJCS["NAD_1927_StatePlane_Indiana_West_FIPS_1302",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Iowa North FIPS 1401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26775,'EPSG',26775,'PROJCS["NAD_1927_StatePlane_Iowa_North_FIPS_1401",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",42.06666666666667],PARAMETER["Standard_Parallel_2",43.26666666666667],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.06666666666667 +lat_2=43.26666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Iowa South FIPS 1402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26776,'EPSG',26776,'PROJCS["NAD_1927_StatePlane_Iowa_South_FIPS_1402",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",40.61666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.61666666666667 +lat_2=41.78333333333333 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Kansas North FIPS 1501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26777,'EPSG',26777,'PROJCS["NAD_1927_StatePlane_Kansas_North_FIPS_1501",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Kansas South FIPS 1502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26778,'EPSG',26778,'PROJCS["NAD_1927_StatePlane_Kansas_South_FIPS_1502",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Kentucky North FIPS 1601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26779,'EPSG',26779,'PROJCS["NAD_1927_StatePlane_Kentucky_North_FIPS_1601",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Kentucky South FIPS 1602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26780,'EPSG',26780,'PROJCS["NAD_1927_StatePlane_Kentucky_South_FIPS_1602",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Louisiana North FIPS 1701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26781,'EPSG',26781,'PROJCS["NAD_1927_StatePlane_Louisiana_North_FIPS_1701",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Louisiana South FIPS 1702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26782,'EPSG',26782,'PROJCS["NAD_1927_StatePlane_Louisiana_South_FIPS_1702",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Maine East FIPS 1801 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26783,'EPSG',26783,'PROJCS["NAD_1927_StatePlane_Maine_East_FIPS_1801",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Maine West FIPS 1802 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26784,'EPSG',26784,'PROJCS["NAD_1927_StatePlane_Maine_West_FIPS_1802",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Maryland FIPS 1900 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26785,'EPSG',26785,'PROJCS["NAD_1927_StatePlane_Maryland_FIPS_1900",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Massachusetts Mainland FIPS 2001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26786,'EPSG',26786,'PROJCS["NAD_1927_StatePlane_Massachusetts_Mainland_FIPS_2001",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Massachusetts Island FIPS 2002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26787,'EPSG',26787,'PROJCS["NAD_1927_StatePlane_Massachusetts_Island_FIPS_2002",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Michigan North FIPS 2111 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26788,'ESRI',26788,'PROJCS["NAD_1927_StatePlane_Michigan_North_FIPS_2111",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Michigan Central FIPS 2112 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26789,'ESRI',26789,'PROJCS["NAD_1927_StatePlane_Michigan_Central_FIPS_2112",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.33333333333333],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Michigan South FIPS 2113 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26790,'ESRI',26790,'PROJCS["NAD_1927_StatePlane_Michigan_South_FIPS_2113",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.33333333333333],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Minnesota North FIPS 2201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26791,'EPSG',26791,'PROJCS["NAD_1927_StatePlane_Minnesota_North_FIPS_2201",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93.09999999999999],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Minnesota Central FIPS 2202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26792,'EPSG',26792,'PROJCS["NAD_1927_StatePlane_Minnesota_Central_FIPS_2202",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Minnesota South FIPS 2203 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26793,'EPSG',26793,'PROJCS["NAD_1927_StatePlane_Minnesota_South_FIPS_2203",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-94],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Mississippi East FIPS 2301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26794,'EPSG',26794,'PROJCS["NAD_1927_StatePlane_Mississippi_East_FIPS_2301",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99996],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.999960 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Mississippi West FIPS 2302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26795,'EPSG',26795,'PROJCS["NAD_1927_StatePlane_Mississippi_West_FIPS_2302",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Missouri East FIPS 2401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26796,'EPSG',26796,'PROJCS["NAD_1927_StatePlane_Missouri_East_FIPS_2401",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Missouri Central FIPS 2402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26797,'EPSG',26797,'PROJCS["NAD_1927_StatePlane_Missouri_Central_FIPS_2402",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Missouri West FIPS 2403 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26798,'EPSG',26798,'PROJCS["NAD_1927_StatePlane_Missouri_West_FIPS_2403",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-94.5],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.16666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD Michigan StatePlane Michigan East Old FIPS 2101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26801,'EPSG',26801,'PROJCS["NAD_Michigan_StatePlane_Michigan_East_Old_FIPS_2101",GEOGCS["GCS_North_American_Michigan",DATUM["D_North_American_Michigan",SPHEROID["Clarke_1866_Michigan",6378450.047,294.978684677]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-83.66666666666667],PARAMETER["Scale_Factor",0.9999428571],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999943 +x_0=152400.3048006096 +y_0=0 +a=6378450.047 +b=6356826.620025999 +to_meter=0.3048006096012192'); -- -- NAD Michigan StatePlane Michigan Central Old FIPS 2102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26802,'EPSG',26802,'PROJCS["NAD_Michigan_StatePlane_Michigan_Central_Old_FIPS_2102",GEOGCS["GCS_North_American_Michigan",DATUM["D_North_American_Michigan",SPHEROID["Clarke_1866_Michigan",6378450.047,294.978684677]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-85.75],PARAMETER["Scale_Factor",0.9999090909],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909 +x_0=152400.3048006096 +y_0=0 +a=6378450.047 +b=6356826.620025999 +to_meter=0.3048006096012192'); -- -- NAD Michigan StatePlane Michigan West Old FIPS 2103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26803,'EPSG',26803,'PROJCS["NAD_Michigan_StatePlane_Michigan_West_Old_FIPS_2103",GEOGCS["GCS_North_American_Michigan",DATUM["D_North_American_Michigan",SPHEROID["Clarke_1866_Michigan",6378450.047,294.978684677]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-88.75],PARAMETER["Scale_Factor",0.9999090909],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909 +x_0=152400.3048006096 +y_0=0 +a=6378450.047 +b=6356826.620025999 +to_meter=0.3048006096012192'); -- -- NAD Michigan StatePlane Michigan North FIPS 2111 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26811,'EPSG',26811,'PROJCS["NAD_Michigan_StatePlane_Michigan_North_FIPS_2111",GEOGCS["GCS_North_American_Michigan",DATUM["D_North_American_Michigan",SPHEROID["Clarke_1866_Michigan",6378450.047,294.978684677]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024385 +y_0=0 +a=6378450.047 +b=6356826.620025999 +to_meter=0.3048006096012192'); -- -- NAD Michigan StatePlane Michigan Central FIPS 2112 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26812,'EPSG',26812,'PROJCS["NAD_Michigan_StatePlane_Michigan_Central_FIPS_2112",GEOGCS["GCS_North_American_Michigan",DATUM["D_North_American_Michigan",SPHEROID["Clarke_1866_Michigan",6378450.047,294.978684677]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.33333333333333],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +a=6378450.047 +b=6356826.620025999 +to_meter=0.3048006096012192'); -- -- NAD Michigan StatePlane Michigan South FIPS 2113 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26813,'EPSG',26813,'PROJCS["NAD_Michigan_StatePlane_Michigan_South_FIPS_2113",GEOGCS["GCS_North_American_Michigan",DATUM["D_North_American_Michigan",SPHEROID["Clarke_1866_Michigan",6378450.047,294.978684677]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.33333333333333],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +a=6378450.047 +b=6356826.620025999 +to_meter=0.3048006096012192'); -- -- NAD 1983 UTM Zone 3N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26903,'EPSG',26903,'PROJCS["NAD_1983_UTM_Zone_3N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 4N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26904,'EPSG',26904,'PROJCS["NAD_1983_UTM_Zone_4N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 5N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26905,'EPSG',26905,'PROJCS["NAD_1983_UTM_Zone_5N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 6N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26906,'EPSG',26906,'PROJCS["NAD_1983_UTM_Zone_6N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 7N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26907,'EPSG',26907,'PROJCS["NAD_1983_UTM_Zone_7N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 8N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26908,'EPSG',26908,'PROJCS["NAD_1983_UTM_Zone_8N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 9N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26909,'EPSG',26909,'PROJCS["NAD_1983_UTM_Zone_9N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 10N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26910,'EPSG',26910,'PROJCS["NAD_1983_UTM_Zone_10N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 11N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26911,'EPSG',26911,'PROJCS["NAD_1983_UTM_Zone_11N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 12N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26912,'EPSG',26912,'PROJCS["NAD_1983_UTM_Zone_12N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 13N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26913,'EPSG',26913,'PROJCS["NAD_1983_UTM_Zone_13N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 14N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26914,'EPSG',26914,'PROJCS["NAD_1983_UTM_Zone_14N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 15N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26915,'EPSG',26915,'PROJCS["NAD_1983_UTM_Zone_15N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 16N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26916,'EPSG',26916,'PROJCS["NAD_1983_UTM_Zone_16N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26917,'EPSG',26917,'PROJCS["NAD_1983_UTM_Zone_17N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26918,'EPSG',26918,'PROJCS["NAD_1983_UTM_Zone_18N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26919,'EPSG',26919,'PROJCS["NAD_1983_UTM_Zone_19N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26920,'EPSG',26920,'PROJCS["NAD_1983_UTM_Zone_20N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26921,'EPSG',26921,'PROJCS["NAD_1983_UTM_Zone_21N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 22N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26922,'EPSG',26922,'PROJCS["NAD_1983_UTM_Zone_22N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 UTM Zone 23N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26923,'EPSG',26923,'PROJCS["NAD_1983_UTM_Zone_23N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alabama East FIPS 0101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26929,'EPSG',26929,'PROJCS["NAD_1983_StatePlane_Alabama_East_FIPS_0101",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-85.83333333333333],PARAMETER["Scale_Factor",0.99996],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alabama West FIPS 0102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26930,'EPSG',26930,'PROJCS["NAD_1983_StatePlane_Alabama_West_FIPS_0102",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 1 FIPS 5001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26931,'EPSG',26931,'PROJCS["NAD_1983_StatePlane_Alaska_1_FIPS_5001",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",5000000],PARAMETER["False_Northing",-5000000],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",-36.86989764583333],PARAMETER["Longitude_Of_Center",-133.6666666666667],PARAMETER["Latitude_Of_Center",57],UNIT["Meter",1]]','+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=-36.86989764583333 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 2 FIPS 5002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26932,'EPSG',26932,'PROJCS["NAD_1983_StatePlane_Alaska_2_FIPS_5002",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-142],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Meter",1]]','+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 3 FIPS 5003 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26933,'EPSG',26933,'PROJCS["NAD_1983_StatePlane_Alaska_3_FIPS_5003",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-146],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Meter",1]]','+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 4 FIPS 5004 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26934,'EPSG',26934,'PROJCS["NAD_1983_StatePlane_Alaska_4_FIPS_5004",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-150],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Meter",1]]','+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 5 FIPS 5005 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26935,'EPSG',26935,'PROJCS["NAD_1983_StatePlane_Alaska_5_FIPS_5005",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-154],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Meter",1]]','+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 6 FIPS 5006 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26936,'EPSG',26936,'PROJCS["NAD_1983_StatePlane_Alaska_6_FIPS_5006",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-158],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Meter",1]]','+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 7 FIPS 5007 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26937,'EPSG',26937,'PROJCS["NAD_1983_StatePlane_Alaska_7_FIPS_5007",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-162],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Meter",1]]','+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 8 FIPS 5008 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26938,'EPSG',26938,'PROJCS["NAD_1983_StatePlane_Alaska_8_FIPS_5008",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-166],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Meter",1]]','+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 9 FIPS 5009 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26939,'EPSG',26939,'PROJCS["NAD_1983_StatePlane_Alaska_9_FIPS_5009",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-170],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Meter",1]]','+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Alaska 10 FIPS 5010 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26940,'EPSG',26940,'PROJCS["NAD_1983_StatePlane_Alaska_10_FIPS_5010",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-176],PARAMETER["Standard_Parallel_1",51.83333333333334],PARAMETER["Standard_Parallel_2",53.83333333333334],PARAMETER["Latitude_Of_Origin",51],UNIT["Meter",1]]','+proj=lcc +lat_1=51.83333333333334 +lat_2=53.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane California I FIPS 0401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26941,'EPSG',26941,'PROJCS["NAD_1983_StatePlane_California_I_FIPS_0401",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-122],PARAMETER["Standard_Parallel_1",40],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane California II FIPS 0402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26942,'EPSG',26942,'PROJCS["NAD_1983_StatePlane_California_II_FIPS_0402",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-122],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane California III FIPS 0403 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26943,'EPSG',26943,'PROJCS["NAD_1983_StatePlane_California_III_FIPS_0403",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Meter",1]]','+proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane California IV FIPS 0404 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26944,'EPSG',26944,'PROJCS["NAD_1983_StatePlane_California_IV_FIPS_0404",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-119],PARAMETER["Standard_Parallel_1",36],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane California V FIPS 0405 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26945,'EPSG',26945,'PROJCS["NAD_1983_StatePlane_California_V_FIPS_0405",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-118],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Meter",1]]','+proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane California VI FIPS 0406 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26946,'EPSG',26946,'PROJCS["NAD_1983_StatePlane_California_VI_FIPS_0406",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Arizona East FIPS 0201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26948,'EPSG',26948,'PROJCS["NAD_1983_StatePlane_Arizona_East_FIPS_0201",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Arizona Central FIPS 0202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26949,'EPSG',26949,'PROJCS["NAD_1983_StatePlane_Arizona_Central_FIPS_0202",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Arizona West FIPS 0203 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26950,'EPSG',26950,'PROJCS["NAD_1983_StatePlane_Arizona_West_FIPS_0203",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Arkansas North FIPS 0301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26951,'EPSG',26951,'PROJCS["NAD_1983_StatePlane_Arkansas_North_FIPS_0301",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Arkansas South FIPS 0302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26952,'EPSG',26952,'PROJCS["NAD_1983_StatePlane_Arkansas_South_FIPS_0302",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",-92],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Colorado North FIPS 0501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26953,'EPSG',26953,'PROJCS["NAD_1983_StatePlane_Colorado_North_FIPS_0501",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Colorado Central FIPS 0502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26954,'EPSG',26954,'PROJCS["NAD_1983_StatePlane_Colorado_Central_FIPS_0502",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Colorado South FIPS 0503 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26955,'EPSG',26955,'PROJCS["NAD_1983_StatePlane_Colorado_South_FIPS_0503",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Connecticut FIPS 0600 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26956,'EPSG',26956,'PROJCS["NAD_1983_StatePlane_Connecticut_FIPS_0600",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",304800.6096],PARAMETER["False_Northing",152400.3048],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Delaware FIPS 0700 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26957,'EPSG',26957,'PROJCS["NAD_1983_StatePlane_Delaware_FIPS_0700",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38],UNIT["Meter",1]]','+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Florida East FIPS 0901 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26958,'EPSG',26958,'PROJCS["NAD_1983_StatePlane_Florida_East_FIPS_0901",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Florida West FIPS 0902 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26959,'EPSG',26959,'PROJCS["NAD_1983_StatePlane_Florida_West_FIPS_0902",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Florida North FIPS 0903 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26960,'EPSG',26960,'PROJCS["NAD_1983_StatePlane_Florida_North_FIPS_0903",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29],UNIT["Meter",1]]','+proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Hawaii 1 FIPS 5101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26961,'EPSG',26961,'PROJCS["NAD_1983_StatePlane_Hawaii_1_FIPS_5101",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Hawaii 2 FIPS 5102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26962,'EPSG',26962,'PROJCS["NAD_1983_StatePlane_Hawaii_2_FIPS_5102",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Hawaii 3 FIPS 5103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26963,'EPSG',26963,'PROJCS["NAD_1983_StatePlane_Hawaii_3_FIPS_5103",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-158],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Meter",1]]','+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Hawaii 4 FIPS 5104 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26964,'EPSG',26964,'PROJCS["NAD_1983_StatePlane_Hawaii_4_FIPS_5104",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Hawaii 5 FIPS 5105 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26965,'EPSG',26965,'PROJCS["NAD_1983_StatePlane_Hawaii_5_FIPS_5105",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Meter",1]]','+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Georgia East FIPS 1001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26966,'EPSG',26966,'PROJCS["NAD_1983_StatePlane_Georgia_East_FIPS_1001",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Georgia West FIPS 1002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26967,'EPSG',26967,'PROJCS["NAD_1983_StatePlane_Georgia_West_FIPS_1002",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Idaho East FIPS 1101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26968,'EPSG',26968,'PROJCS["NAD_1983_StatePlane_Idaho_East_FIPS_1101",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Idaho Central FIPS 1102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26969,'EPSG',26969,'PROJCS["NAD_1983_StatePlane_Idaho_Central_FIPS_1102",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-114],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Idaho West FIPS 1103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26970,'EPSG',26970,'PROJCS["NAD_1983_StatePlane_Idaho_West_FIPS_1103",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Illinois East FIPS 1201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26971,'EPSG',26971,'PROJCS["NAD_1983_StatePlane_Illinois_East_FIPS_1201",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Illinois West FIPS 1202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26972,'EPSG',26972,'PROJCS["NAD_1983_StatePlane_Illinois_West_FIPS_1202",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Indiana East FIPS 1301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26973,'EPSG',26973,'PROJCS["NAD_1983_StatePlane_Indiana_East_FIPS_1301",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000],PARAMETER["False_Northing",250000],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Indiana West FIPS 1302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26974,'EPSG',26974,'PROJCS["NAD_1983_StatePlane_Indiana_West_FIPS_1302",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000],PARAMETER["False_Northing",250000],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Iowa North FIPS 1401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26975,'EPSG',26975,'PROJCS["NAD_1983_StatePlane_Iowa_North_FIPS_1401",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",42.06666666666667],PARAMETER["Standard_Parallel_2",43.26666666666667],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Meter",1]]','+proj=lcc +lat_1=42.06666666666667 +lat_2=43.26666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Iowa South FIPS 1402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26976,'EPSG',26976,'PROJCS["NAD_1983_StatePlane_Iowa_South_FIPS_1402",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",40.61666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=lcc +lat_1=40.61666666666667 +lat_2=41.78333333333333 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Kansas North FIPS 1501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26977,'EPSG',26977,'PROJCS["NAD_1983_StatePlane_Kansas_North_FIPS_1501",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Kansas South FIPS 1502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26978,'EPSG',26978,'PROJCS["NAD_1983_StatePlane_Kansas_South_FIPS_1502",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Kentucky North FIPS 1601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26979,'EPSG',26979,'PROJCS["NAD_1983_StatePlane_Kentucky_North_FIPS_1601",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1]]','+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Kentucky South FIPS 1602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26980,'EPSG',26980,'PROJCS["NAD_1983_StatePlane_Kentucky_South_FIPS_1602",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Louisiana North FIPS 1701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26981,'EPSG',26981,'PROJCS["NAD_1983_StatePlane_Louisiana_North_FIPS_1701",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1]]','+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Louisiana South FIPS 1702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26982,'EPSG',26982,'PROJCS["NAD_1983_StatePlane_Louisiana_South_FIPS_1702",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.5],UNIT["Meter",1]]','+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Maine East FIPS 1801 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26983,'EPSG',26983,'PROJCS["NAD_1983_StatePlane_Maine_East_FIPS_1801",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Maine West FIPS 1802 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26984,'EPSG',26984,'PROJCS["NAD_1983_StatePlane_Maine_West_FIPS_1802",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Maryland FIPS 1900 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26985,'EPSG',26985,'PROJCS["NAD_1983_StatePlane_Maryland_FIPS_1900",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Massachusetts Mainland FIPS 2001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26986,'EPSG',26986,'PROJCS["NAD_1983_StatePlane_Massachusetts_Mainland_FIPS_2001",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",750000],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41],UNIT["Meter",1]]','+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Massachusetts Island FIPS 2002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26987,'EPSG',26987,'PROJCS["NAD_1983_StatePlane_Massachusetts_Island_FIPS_2002",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41],UNIT["Meter",1]]','+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Michigan North FIPS 2111 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26988,'EPSG',26988,'PROJCS["NAD_1983_StatePlane_Michigan_North_FIPS_2111",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",8000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Meter",1]]','+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Michigan Central FIPS 2112 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26989,'EPSG',26989,'PROJCS["NAD_1983_StatePlane_Michigan_Central_FIPS_2112",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Meter",1]]','+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Michigan South FIPS 2113 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26990,'EPSG',26990,'PROJCS["NAD_1983_StatePlane_Michigan_South_FIPS_2113",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Meter",1]]','+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Minnesota North FIPS 2201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26991,'EPSG',26991,'PROJCS["NAD_1983_StatePlane_Minnesota_North_FIPS_2201",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-93.09999999999999],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1]]','+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Minnesota Central FIPS 2202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26992,'EPSG',26992,'PROJCS["NAD_1983_StatePlane_Minnesota_Central_FIPS_2202",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45],UNIT["Meter",1]]','+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Minnesota South FIPS 2203 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26993,'EPSG',26993,'PROJCS["NAD_1983_StatePlane_Minnesota_South_FIPS_2203",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-94],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43],UNIT["Meter",1]]','+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Mississippi East FIPS 2301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26994,'EPSG',26994,'PROJCS["NAD_1983_StatePlane_Mississippi_East_FIPS_2301",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Mississippi West FIPS 2302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26995,'EPSG',26995,'PROJCS["NAD_1983_StatePlane_Mississippi_West_FIPS_2302",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Missouri East FIPS 2401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26996,'EPSG',26996,'PROJCS["NAD_1983_StatePlane_Missouri_East_FIPS_2401",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Missouri Central FIPS 2402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26997,'EPSG',26997,'PROJCS["NAD_1983_StatePlane_Missouri_Central_FIPS_2402",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Missouri West FIPS 2403 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (26998,'EPSG',26998,'PROJCS["NAD_1983_StatePlane_Missouri_West_FIPS_2403",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",850000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-94.5],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.16666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- Nahrwan 1967 UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27038,'EPSG',27038,'PROJCS["Nahrwan_1967_UTM_Zone_38N",GEOGCS["GCS_Nahrwan_1967",DATUM["D_Nahrwan_1967",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=clrk80 +units=m'); -- -- Nahrwan 1967 UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27039,'EPSG',27039,'PROJCS["Nahrwan_1967_UTM_Zone_39N",GEOGCS["GCS_Nahrwan_1967",DATUM["D_Nahrwan_1967",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=clrk80 +units=m'); -- -- Nahrwan 1967 UTM Zone 40N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27040,'EPSG',27040,'PROJCS["Nahrwan_1967_UTM_Zone_40N",GEOGCS["GCS_Nahrwan_1967",DATUM["D_Nahrwan_1967",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=40 +ellps=clrk80 +units=m'); -- -- Naparima 1972 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27120,'EPSG',27120,'PROJCS["Naparima_1972_UTM_Zone_20N",GEOGCS["GCS_Naparima_1972",DATUM["D_Naparima_1972",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=intl +units=m'); -- -- GD 1949 New Zealand Map Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27200,'ESRI',27200,'PROJCS["GD_1949_New_Zealand_Map_Grid",GEOGCS["GCS_New_Zealand_1949",DATUM["D_New_Zealand_1949",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["New_Zealand_Map_Grid"],PARAMETER["False_Easting",2510000],PARAMETER["False_Northing",6023150],PARAMETER["Longitude_Of_Origin",173],PARAMETER["Latitude_Of_Origin",-41],UNIT["Meter",1]]','+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +units=m'); -- -- New Zealand North Island -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27291,'EPSG',27291,'PROJCS["New_Zealand_North_Island",GEOGCS["GCS_New_Zealand_1949",DATUM["D_New_Zealand_1949",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",175.5],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-39],UNIT["Yard_Sears",0.91439841461602867]]','+proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1.000000 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +to_meter=0.9143984146160287'); -- -- New Zealand South Island -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27292,'EPSG',27292,'PROJCS["New_Zealand_South_Island",GEOGCS["GCS_New_Zealand_1949",DATUM["D_New_Zealand_1949",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",171.5],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-44],UNIT["Yard_Sears",0.91439841461602867]]','+proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1.000000 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +to_meter=0.9143984146160287'); -- -- NGO 1948 Oslo Norway Zone 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27391,'EPSG',27391,'PROJCS["NGO_1948_Oslo_Norway_Zone_1",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-4.666666666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=6.056250000000003 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +pm=10.72291666666667 +units=m'); -- -- NGO 1948 Oslo Norway Zone 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27392,'EPSG',27392,'PROJCS["NGO_1948_Oslo_Norway_Zone_2",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-2.333333333333334],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=8.389583333333336 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +pm=10.72291666666667 +units=m'); -- -- NGO 1948 Oslo Norway Zone 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27393,'EPSG',27393,'PROJCS["NGO_1948_Oslo_Norway_Zone_3",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +pm=10.72291666666667 +units=m'); -- -- NGO 1948 Oslo Norway Zone 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27394,'EPSG',27394,'PROJCS["NGO_1948_Oslo_Norway_Zone_4",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",2.5],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +pm=10.72291666666667 +units=m'); -- -- NGO 1948 Oslo Norway Zone 5 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27395,'EPSG',27395,'PROJCS["NGO_1948_Oslo_Norway_Zone_5",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",6.166666666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=16.88958333333334 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +pm=10.72291666666667 +units=m'); -- -- NGO 1948 Oslo Norway Zone 6 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27396,'EPSG',27396,'PROJCS["NGO_1948_Oslo_Norway_Zone_6",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",10.16666666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=20.88958333333334 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +pm=10.72291666666667 +units=m'); -- -- NGO 1948 Oslo Norway Zone 7 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27397,'EPSG',27397,'PROJCS["NGO_1948_Oslo_Norway_Zone_7",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",14.16666666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=24.88958333333334 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +pm=10.72291666666667 +units=m'); -- -- NGO 1948 Oslo Norway Zone 8 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27398,'EPSG',27398,'PROJCS["NGO_1948_Oslo_Norway_Zone_8",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",18.33333333333333],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +pm=10.72291666666667 +units=m'); -- -- Datum 73 UTM Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27429,'EPSG',27429,'PROJCS["Datum_73_UTM_Zone_29N",GEOGCS["GCS_Datum_73",DATUM["D_Datum_73",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +ellps=intl +units=m'); -- -- Nord de Guerre -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27500,'ESRI',27500,'PROJCS["Nord_de_Guerre",GEOGCS["GCS_ATF_Paris",DATUM["D_ATF",SPHEROID["Plessis_1817",6376523,308.64]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",6],PARAMETER["Standard_Parallel_1",55],PARAMETER["Scale_Factor",0.9995090800000001],PARAMETER["Latitude_Of_Origin",55],UNIT["Meter",1]]','+proj=lcc +lat_1=49.49999999999999 +lat_0=49.49999999999999 +lon_0=7.737229166666666 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=2.337229166666667 +units=m'); -- -- NTF Paris France I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27581,'ESRI',27581,'PROJCS["NTF_Paris_France_I",GEOGCS["GCS_NTF_Paris",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",1200000],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",55],PARAMETER["Scale_Factor",0.999877341],PARAMETER["Latitude_Of_Origin",55],UNIT["Meter",1]]','+proj=lcc +lat_1=49.49999999999999 +lat_0=49.49999999999999 +lon_0=2.337229166666667 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667 +units=m'); -- -- NTF Paris France II -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27582,'ESRI',27582,'PROJCS["NTF_Paris_France_II",GEOGCS["GCS_NTF_Paris",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",2200000],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",52],PARAMETER["Scale_Factor",0.99987742],PARAMETER["Latitude_Of_Origin",52],UNIT["Meter",1]]','+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667 +units=m'); -- -- NTF Paris France III -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27583,'ESRI',27583,'PROJCS["NTF_Paris_France_III",GEOGCS["GCS_NTF_Paris",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",3200000],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",49],PARAMETER["Scale_Factor",0.999877499],PARAMETER["Latitude_Of_Origin",49],UNIT["Meter",1]]','+proj=lcc +lat_1=44.09999999999999 +lat_0=44.09999999999999 +lon_0=2.337229166666667 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667 +units=m'); -- -- NTF Paris France IV -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27584,'ESRI',27584,'PROJCS["NTF_Paris_France_IV",GEOGCS["GCS_NTF_Paris",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",234.358],PARAMETER["False_Northing",4185861.369],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",46.85],PARAMETER["Scale_Factor",0.99994471],PARAMETER["Latitude_Of_Origin",46.85],UNIT["Meter",1]]','+proj=lcc +lat_1=42.165 +lat_0=42.165 +lon_0=2.337229166666667 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667 +units=m'); -- -- NTF Paris Nord France -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27591,'ESRI',27591,'PROJCS["NTF_Paris_Nord_France",GEOGCS["GCS_NTF_Paris",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",200000],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",55],PARAMETER["Scale_Factor",0.999877341],PARAMETER["Latitude_Of_Origin",55],UNIT["Meter",1]]','+proj=lcc +lat_1=49.49999999999999 +lat_0=49.49999999999999 +lon_0=2.337229166666667 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667 +units=m'); -- -- NTF Paris Centre France -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27592,'ESRI',27592,'PROJCS["NTF_Paris_Centre_France",GEOGCS["GCS_NTF_Paris",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",200000],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",52],PARAMETER["Scale_Factor",0.99987742],PARAMETER["Latitude_Of_Origin",52],UNIT["Meter",1]]','+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667 +units=m'); -- -- NTF Paris Sud France -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27593,'ESRI',27593,'PROJCS["NTF_Paris_Sud_France",GEOGCS["GCS_NTF_Paris",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",200000],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",49],PARAMETER["Scale_Factor",0.999877499],PARAMETER["Latitude_Of_Origin",49],UNIT["Meter",1]]','+proj=lcc +lat_1=44.09999999999999 +lat_0=44.09999999999999 +lon_0=2.337229166666667 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667 +units=m'); -- -- NTF Paris Corse -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27594,'ESRI',27594,'PROJCS["NTF_Paris_Corse",GEOGCS["GCS_NTF_Paris",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",234.358],PARAMETER["False_Northing",185861.369],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",46.85],PARAMETER["Scale_Factor",0.99994471],PARAMETER["Latitude_Of_Origin",46.85],UNIT["Meter",1]]','+proj=lcc +lat_1=42.165 +lat_0=42.165 +lon_0=2.337229166666667 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667 +units=m'); -- -- British National Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (27700,'EPSG',27700,'PROJCS["British_National_Grid",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",-100000],PARAMETER["Central_Meridian",-2],PARAMETER["Scale_Factor",0.999601272],PARAMETER["Latitude_Of_Origin",49],UNIT["Meter",1]]','+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 +ellps=airy +units=m'); -- -- Palestine 1923 Palestine Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28191,'EPSG',28191,'PROJCS["Palestine_1923_Palestine_Grid",GEOGCS["GCS_Palestine_1923",DATUM["D_Palestine_1923",SPHEROID["Clarke_1880_Benoit",6378300.79,293.466234571]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Cassini"],PARAMETER["False_Easting",170251.555],PARAMETER["False_Northing",126867.909],PARAMETER["Central_Meridian",35.21208055555556],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",31.73409694444445],UNIT["Meter",1]]','+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.79 +b=6356566.430000036 +units=m'); -- -- Palestine 1923 Palestine Belt -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28192,'EPSG',28192,'PROJCS["Palestine_1923_Palestine_Belt",GEOGCS["GCS_Palestine_1923",DATUM["D_Palestine_1923",SPHEROID["Clarke_1880_Benoit",6378300.79,293.466234571]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",170251.555],PARAMETER["False_Northing",1126867.909],PARAMETER["Central_Meridian",35.21208055555556],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",31.73409694444445],UNIT["Meter",1]]','+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1.000000 +x_0=170251.555 +y_0=1126867.909 +a=6378300.79 +b=6356566.430000036 +units=m'); -- -- Palestine 1923 Israel CS Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28193,'EPSG',28193,'PROJCS["Palestine_1923_Israel_CS_Grid",GEOGCS["GCS_Palestine_1923",DATUM["D_Palestine_1923",SPHEROID["Clarke_1880_Benoit",6378300.79,293.466234571]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Cassini"],PARAMETER["False_Easting",170251.555],PARAMETER["False_Northing",1126867.909],PARAMETER["Central_Meridian",35.21208055555556],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",31.73409694444445],UNIT["Meter",1]]','+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.79 +b=6356566.430000036 +units=m'); -- -- Pointe Noire UTM Zone 32S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28232,'EPSG',28232,'PROJCS["Pointe_Noire_UTM_Zone_32S",GEOGCS["GCS_Pointe_Noire",DATUM["D_Pointe_Noire",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +south +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- GDA 1994 MGA Zone 48 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28348,'EPSG',28348,'PROJCS["GDA_1994_MGA_Zone_48",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 49 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28349,'EPSG',28349,'PROJCS["GDA_1994_MGA_Zone_49",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 50 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28350,'EPSG',28350,'PROJCS["GDA_1994_MGA_Zone_50",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 51 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28351,'EPSG',28351,'PROJCS["GDA_1994_MGA_Zone_51",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 52 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28352,'EPSG',28352,'PROJCS["GDA_1994_MGA_Zone_52",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 53 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28353,'EPSG',28353,'PROJCS["GDA_1994_MGA_Zone_53",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 54 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28354,'EPSG',28354,'PROJCS["GDA_1994_MGA_Zone_54",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=54 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 55 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28355,'EPSG',28355,'PROJCS["GDA_1994_MGA_Zone_55",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=55 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 56 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28356,'EPSG',28356,'PROJCS["GDA_1994_MGA_Zone_56",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=56 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 57 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28357,'EPSG',28357,'PROJCS["GDA_1994_MGA_Zone_57",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=57 +south +ellps=GRS80 +units=m'); -- -- GDA 1994 MGA Zone 58 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28358,'EPSG',28358,'PROJCS["GDA_1994_MGA_Zone_58",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=58 +south +ellps=GRS80 +units=m'); -- -- Pulkovo 1942 GK Zone 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28402,'EPSG',28402,'PROJCS["Pulkovo_1942_GK_Zone_2",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",2500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28403,'EPSG',28403,'PROJCS["Pulkovo_1942_GK_Zone_3",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28404,'EPSG',28404,'PROJCS["Pulkovo_1942_GK_Zone_4",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",4500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 5 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28405,'EPSG',28405,'PROJCS["Pulkovo_1942_GK_Zone_5",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",5500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 6 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28406,'EPSG',28406,'PROJCS["Pulkovo_1942_GK_Zone_6",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",6500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 7 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28407,'EPSG',28407,'PROJCS["Pulkovo_1942_GK_Zone_7",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",7500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 8 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28408,'EPSG',28408,'PROJCS["Pulkovo_1942_GK_Zone_8",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",8500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 9 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28409,'EPSG',28409,'PROJCS["Pulkovo_1942_GK_Zone_9",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",9500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 10 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28410,'EPSG',28410,'PROJCS["Pulkovo_1942_GK_Zone_10",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",10500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 11 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28411,'EPSG',28411,'PROJCS["Pulkovo_1942_GK_Zone_11",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",11500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 12 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28412,'EPSG',28412,'PROJCS["Pulkovo_1942_GK_Zone_12",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",12500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 13 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28413,'EPSG',28413,'PROJCS["Pulkovo_1942_GK_Zone_13",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",13500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 14 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28414,'EPSG',28414,'PROJCS["Pulkovo_1942_GK_Zone_14",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",14500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 15 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28415,'EPSG',28415,'PROJCS["Pulkovo_1942_GK_Zone_15",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",15500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 16 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28416,'EPSG',28416,'PROJCS["Pulkovo_1942_GK_Zone_16",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",16500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 17 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28417,'EPSG',28417,'PROJCS["Pulkovo_1942_GK_Zone_17",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",17500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 18 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28418,'EPSG',28418,'PROJCS["Pulkovo_1942_GK_Zone_18",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",18500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 19 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28419,'EPSG',28419,'PROJCS["Pulkovo_1942_GK_Zone_19",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",19500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 20 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28420,'EPSG',28420,'PROJCS["Pulkovo_1942_GK_Zone_20",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",20500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 21 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28421,'EPSG',28421,'PROJCS["Pulkovo_1942_GK_Zone_21",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",21500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 22 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28422,'EPSG',28422,'PROJCS["Pulkovo_1942_GK_Zone_22",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",22500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 23 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28423,'EPSG',28423,'PROJCS["Pulkovo_1942_GK_Zone_23",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",23500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 24 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28424,'EPSG',28424,'PROJCS["Pulkovo_1942_GK_Zone_24",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",24500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 25 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28425,'EPSG',28425,'PROJCS["Pulkovo_1942_GK_Zone_25",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",25500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 26 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28426,'EPSG',28426,'PROJCS["Pulkovo_1942_GK_Zone_26",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",26500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 27 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28427,'EPSG',28427,'PROJCS["Pulkovo_1942_GK_Zone_27",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",27500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 28 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28428,'EPSG',28428,'PROJCS["Pulkovo_1942_GK_Zone_28",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",28500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 29 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28429,'EPSG',28429,'PROJCS["Pulkovo_1942_GK_Zone_29",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",29500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",171],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 30 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28430,'EPSG',28430,'PROJCS["Pulkovo_1942_GK_Zone_30",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",30500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",177],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 31 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28431,'EPSG',28431,'PROJCS["Pulkovo_1942_GK_Zone_31",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",31500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-177],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 32 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28432,'EPSG',28432,'PROJCS["Pulkovo_1942_GK_Zone_32",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",32500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-171],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 2N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28462,'EPSG',28462,'PROJCS["Pulkovo_1942_GK_Zone_2N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 3N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28463,'EPSG',28463,'PROJCS["Pulkovo_1942_GK_Zone_3N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 4N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28464,'EPSG',28464,'PROJCS["Pulkovo_1942_GK_Zone_4N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 5N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28465,'EPSG',28465,'PROJCS["Pulkovo_1942_GK_Zone_5N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 6N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28466,'EPSG',28466,'PROJCS["Pulkovo_1942_GK_Zone_6N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 7N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28467,'EPSG',28467,'PROJCS["Pulkovo_1942_GK_Zone_7N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 8N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28468,'EPSG',28468,'PROJCS["Pulkovo_1942_GK_Zone_8N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 9N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28469,'EPSG',28469,'PROJCS["Pulkovo_1942_GK_Zone_9N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 10N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28470,'EPSG',28470,'PROJCS["Pulkovo_1942_GK_Zone_10N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 11N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28471,'EPSG',28471,'PROJCS["Pulkovo_1942_GK_Zone_11N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 12N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28472,'EPSG',28472,'PROJCS["Pulkovo_1942_GK_Zone_12N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 13N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28473,'EPSG',28473,'PROJCS["Pulkovo_1942_GK_Zone_13N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 14N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28474,'EPSG',28474,'PROJCS["Pulkovo_1942_GK_Zone_14N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 15N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28475,'EPSG',28475,'PROJCS["Pulkovo_1942_GK_Zone_15N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 16N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28476,'EPSG',28476,'PROJCS["Pulkovo_1942_GK_Zone_16N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28477,'EPSG',28477,'PROJCS["Pulkovo_1942_GK_Zone_17N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28478,'EPSG',28478,'PROJCS["Pulkovo_1942_GK_Zone_18N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28479,'EPSG',28479,'PROJCS["Pulkovo_1942_GK_Zone_19N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28480,'EPSG',28480,'PROJCS["Pulkovo_1942_GK_Zone_20N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28481,'EPSG',28481,'PROJCS["Pulkovo_1942_GK_Zone_21N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 22N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28482,'EPSG',28482,'PROJCS["Pulkovo_1942_GK_Zone_22N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 23N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28483,'EPSG',28483,'PROJCS["Pulkovo_1942_GK_Zone_23N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 24N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28484,'EPSG',28484,'PROJCS["Pulkovo_1942_GK_Zone_24N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 25N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28485,'EPSG',28485,'PROJCS["Pulkovo_1942_GK_Zone_25N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 26N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28486,'EPSG',28486,'PROJCS["Pulkovo_1942_GK_Zone_26N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 27N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28487,'EPSG',28487,'PROJCS["Pulkovo_1942_GK_Zone_27N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 28N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28488,'EPSG',28488,'PROJCS["Pulkovo_1942_GK_Zone_28N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28489,'EPSG',28489,'PROJCS["Pulkovo_1942_GK_Zone_29N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",171],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 30N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28490,'EPSG',28490,'PROJCS["Pulkovo_1942_GK_Zone_30N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",177],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 31N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28491,'EPSG',28491,'PROJCS["Pulkovo_1942_GK_Zone_31N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-177],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Pulkovo 1942 GK Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28492,'EPSG',28492,'PROJCS["Pulkovo_1942_GK_Zone_32N",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-171],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m'); -- -- Qatar National Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28600,'EPSG',28600,'PROJCS["Qatar_National_Grid",GEOGCS["GCS_Qatar",DATUM["D_Qatar",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",51.21666666666667],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",24.45],UNIT["Meter",1]]','+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.999990 +x_0=200000 +y_0=300000 +ellps=intl +units=m'); -- -- RD Old -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28991,'EPSG',28991,'PROJCS["RD_Old",GEOGCS["GCS_Amersfoort",DATUM["D_Amersfoort",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",5.38763888888889],PARAMETER["Scale_Factor",0.9999079],PARAMETER["Latitude_Of_Origin",52.15616055555555],UNIT["Meter",1]]','+ellps=bessel +units=m'); -- -- RD New -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (28992,'EPSG',28992,'PROJCS["RD_New",GEOGCS["GCS_Amersfoort",DATUM["D_Amersfoort",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",155000],PARAMETER["False_Northing",463000],PARAMETER["Central_Meridian",5.38763888888889],PARAMETER["Scale_Factor",0.9999079],PARAMETER["Latitude_Of_Origin",52.15616055555555],UNIT["Meter",1]]','+ellps=bessel +units=m'); -- -- SAD 1969 Brazil Polyconic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29100,'EPSG',29100,'PROJCS["SAD_1969_Brazil_Polyconic",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Polyconic"],PARAMETER["False_Easting",5000000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-54],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29118,'EPSG',29118,'PROJCS["SAD_1969_UTM_Zone_18N",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29119,'EPSG',29119,'PROJCS["SAD_1969_UTM_Zone_19N",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29120,'EPSG',29120,'PROJCS["SAD_1969_UTM_Zone_20N",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29121,'EPSG',29121,'PROJCS["SAD_1969_UTM_Zone_21N",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 22N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29122,'EPSG',29122,'PROJCS["SAD_1969_UTM_Zone_22N",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 17S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29177,'EPSG',29177,'PROJCS["SAD_1969_UTM_Zone_17S",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +south +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 18S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29178,'EPSG',29178,'PROJCS["SAD_1969_UTM_Zone_18S",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +south +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 19S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29179,'EPSG',29179,'PROJCS["SAD_1969_UTM_Zone_19S",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +south +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 20S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29180,'EPSG',29180,'PROJCS["SAD_1969_UTM_Zone_20S",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +south +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 21S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29181,'EPSG',29181,'PROJCS["SAD_1969_UTM_Zone_21S",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +south +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 22S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29182,'EPSG',29182,'PROJCS["SAD_1969_UTM_Zone_22S",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +south +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 23S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29183,'EPSG',29183,'PROJCS["SAD_1969_UTM_Zone_23S",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=23 +south +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 24S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29184,'EPSG',29184,'PROJCS["SAD_1969_UTM_Zone_24S",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=24 +south +ellps=aust_SA +units=m'); -- -- SAD 1969 UTM Zone 25S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29185,'EPSG',29185,'PROJCS["SAD_1969_UTM_Zone_25S",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=25 +south +ellps=aust_SA +units=m'); -- -- Sapper Hill 1943 UTM Zone 20S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29220,'EPSG',29220,'PROJCS["Sapper_Hill_1943_UTM_Zone_20S",GEOGCS["GCS_Sapper_Hill_1943",DATUM["D_Sapper_Hill_1943",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +south +ellps=intl +units=m'); -- -- Sapper Hill 1943 UTM Zone 21S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29221,'EPSG',29221,'PROJCS["Sapper_Hill_1943_UTM_Zone_21S",GEOGCS["GCS_Sapper_Hill_1943",DATUM["D_Sapper_Hill_1943",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +south +ellps=intl +units=m'); -- -- Schwarzeck UTM Zone 33S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29333,'EPSG',29333,'PROJCS["Schwarzeck_UTM_Zone_33S",GEOGCS["GCS_Schwarzeck",DATUM["D_Schwarzeck",SPHEROID["Bessel_Namibia",6377483.865,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +south +ellps=bess_nam +units=m'); -- -- Sudan UTM Zone 35N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29635,'EPSG',29635,'PROJCS["Sudan_UTM_Zone_35N",GEOGCS["GCS_Sudan",DATUM["D_Sudan",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=35 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Sudan UTM Zone 36N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29636,'EPSG',29636,'PROJCS["Sudan_UTM_Zone_36N",GEOGCS["GCS_Sudan",DATUM["D_Sudan",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=36 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Tananarive 1925 UTM Zone 38S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29738,'EPSG',29738,'PROJCS["Tananarive_1925_UTM_Zone_38S",GEOGCS["GCS_Tananarive_1925",DATUM["D_Tananarive_1925",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +south +ellps=intl +units=m'); -- -- Tananarive 1925 UTM Zone 39S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29739,'EPSG',29739,'PROJCS["Tananarive_1925_UTM_Zone_39S",GEOGCS["GCS_Tananarive_1925",DATUM["D_Tananarive_1925",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +south +ellps=intl +units=m'); -- -- Timbalai 1948 UTM Zone 49N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29849,'EPSG',29849,'PROJCS["Timbalai_1948_UTM_Zone_49N",GEOGCS["GCS_Timbalai_1948",DATUM["D_Timbalai_1948",SPHEROID["Everest_Definition_1967",6377298.556,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +ellps=evrstSS +units=m'); -- -- Timbalai 1948 UTM Zone 50N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29850,'EPSG',29850,'PROJCS["Timbalai_1948_UTM_Zone_50N",GEOGCS["GCS_Timbalai_1948",DATUM["D_Timbalai_1948",SPHEROID["Everest_Definition_1967",6377298.556,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +ellps=evrstSS +units=m'); -- -- Irish National Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (29900,'EPSG',29900,'PROJCS["Irish_National_Grid",GEOGCS["GCS_TM65",DATUM["D_TM65",SPHEROID["Airy_Modified",6377340.189,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",250000],PARAMETER["Central_Meridian",-8],PARAMETER["Scale_Factor",1.000035],PARAMETER["Latitude_Of_Origin",53.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m'); -- -- Japan Zone 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30161,'EPSG',30161,'PROJCS["Japan_Zone_1",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33],UNIT["Meter",1]]','+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30162,'EPSG',30162,'PROJCS["Japan_Zone_2",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",131],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33],UNIT["Meter",1]]','+proj=tmerc +lat_0=33 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30163,'EPSG',30163,'PROJCS["Japan_Zone_3",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",132.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36],UNIT["Meter",1]]','+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30164,'EPSG',30164,'PROJCS["Japan_Zone_4",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",133.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33],UNIT["Meter",1]]','+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 5 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30165,'EPSG',30165,'PROJCS["Japan_Zone_5",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",134.3333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36],UNIT["Meter",1]]','+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 6 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30166,'EPSG',30166,'PROJCS["Japan_Zone_6",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",136],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36],UNIT["Meter",1]]','+proj=tmerc +lat_0=36 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 7 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30167,'EPSG',30167,'PROJCS["Japan_Zone_7",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",137.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36],UNIT["Meter",1]]','+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 8 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30168,'EPSG',30168,'PROJCS["Japan_Zone_8",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",138.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36],UNIT["Meter",1]]','+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 9 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30169,'EPSG',30169,'PROJCS["Japan_Zone_9",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",139.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36],UNIT["Meter",1]]','+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 10 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30170,'EPSG',30170,'PROJCS["Japan_Zone_10",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",140.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 11 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30171,'EPSG',30171,'PROJCS["Japan_Zone_11",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",140.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44],UNIT["Meter",1]]','+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 12 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30172,'EPSG',30172,'PROJCS["Japan_Zone_12",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",142.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44],UNIT["Meter",1]]','+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 13 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30173,'EPSG',30173,'PROJCS["Japan_Zone_13",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",144.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44],UNIT["Meter",1]]','+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 14 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30174,'EPSG',30174,'PROJCS["Japan_Zone_14",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",142],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26],UNIT["Meter",1]]','+proj=tmerc +lat_0=26 +lon_0=142 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 15 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30175,'EPSG',30175,'PROJCS["Japan_Zone_15",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",127.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26],UNIT["Meter",1]]','+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 16 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30176,'EPSG',30176,'PROJCS["Japan_Zone_16",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",124],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26],UNIT["Meter",1]]','+proj=tmerc +lat_0=26 +lon_0=124 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 17 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30177,'EPSG',30177,'PROJCS["Japan_Zone_17",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",131],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26],UNIT["Meter",1]]','+proj=tmerc +lat_0=26 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 18 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30178,'EPSG',30178,'PROJCS["Japan_Zone_18",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",136],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",20],UNIT["Meter",1]]','+proj=tmerc +lat_0=20 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Japan Zone 19 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30179,'EPSG',30179,'PROJCS["Japan_Zone_19",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",154],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26],UNIT["Meter",1]]','+proj=tmerc +lat_0=26 +lon_0=154 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Trinidad 1903 Trinidad Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30200,'EPSG',30200,'PROJCS["Trinidad_1903_Trinidad_Grid",GEOGCS["GCS_Trinidad_1903",DATUM["D_Trinidad_1903",SPHEROID["Clarke_1858",6378293.639,294.260676369]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Cassini"],PARAMETER["False_Easting",430000],PARAMETER["False_Northing",325000],PARAMETER["Central_Meridian",-61.33333333333334],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",10.44166666666667],UNIT["Link_Clarke",0.20116619490000001]]','+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46380700001 +y_0=65379.0133425 +a=6378293.639 +b=6356617.98149216 +to_meter=0.2011661949'); -- -- TC 1948 UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30339,'EPSG',30339,'PROJCS["TC_1948_UTM_Zone_39N",GEOGCS["GCS_Trucial_Coast_1948",DATUM["D_Trucial_Coast_1948",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=helmert +units=m'); -- -- TC 1948 UTM Zone 40N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30340,'EPSG',30340,'PROJCS["TC_1948_UTM_Zone_40N",GEOGCS["GCS_Trucial_Coast_1948",DATUM["D_Trucial_Coast_1948",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=40 +ellps=helmert +units=m'); -- -- Nord Algerie Ancienne -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30491,'ESRI',30491,'PROJCS["Nord_Algerie_Ancienne",GEOGCS["GCS_Voirol_1875",DATUM["D_Voirol_1875",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",3],PARAMETER["Standard_Parallel_1",40],PARAMETER["Scale_Factor",0.999625544],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Sud Algerie Ancienne -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30492,'ESRI',30492,'PROJCS["Sud_Algerie_Ancienne",GEOGCS["GCS_Voirol_1875",DATUM["D_Voirol_1875",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",3],PARAMETER["Standard_Parallel_1",37],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",37],UNIT["Meter",1]]','+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Nord Algerie -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30591,'ESRI',30591,'PROJCS["Nord_Algerie",GEOGCS["GCS_Voirol_Unifie_1960",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500135],PARAMETER["False_Northing",300090],PARAMETER["Central_Meridian",3],PARAMETER["Standard_Parallel_1",40],PARAMETER["Scale_Factor",0.999625544],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m'); -- -- Sud Algerie -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30592,'ESRI',30592,'PROJCS["Sud_Algerie",GEOGCS["GCS_Voirol_Unifie_1960",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500135],PARAMETER["False_Northing",300090],PARAMETER["Central_Meridian",3],PARAMETER["Standard_Parallel_1",37],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",37],UNIT["Meter",1]]','+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m'); -- -- Nord Sahara 1959 UTM Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30729,'EPSG',30729,'PROJCS["Nord_Sahara_1959_UTM_Zone_29N",GEOGCS["GCS_Nord_Sahara_1959",DATUM["D_Nord_Sahara_1959",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +ellps=clrk80 +units=m'); -- -- Nord Sahara 1959 UTM Zone 30N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30730,'EPSG',30730,'PROJCS["Nord_Sahara_1959_UTM_Zone_30N",GEOGCS["GCS_Nord_Sahara_1959",DATUM["D_Nord_Sahara_1959",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=30 +ellps=clrk80 +units=m'); -- -- Nord Sahara 1959 UTM Zone 31N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30731,'EPSG',30731,'PROJCS["Nord_Sahara_1959_UTM_Zone_31N",GEOGCS["GCS_Nord_Sahara_1959",DATUM["D_Nord_Sahara_1959",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=31 +ellps=clrk80 +units=m'); -- -- Nord Sahara 1959 UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30732,'EPSG',30732,'PROJCS["Nord_Sahara_1959_UTM_Zone_32N",GEOGCS["GCS_Nord_Sahara_1959",DATUM["D_Nord_Sahara_1959",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +ellps=clrk80 +units=m'); -- -- Swedish National Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (30800,'EPSG',30800,'PROJCS["Swedish_National_Grid",GEOGCS["GCS_RT38_Stockholm",DATUM["D_Stockholm_1938",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Stockholm",18.05827777777778],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-2.25],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +pm=18.05827777777778 +units=m'); -- -- Yoff 1972 UTM Zone 28N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31028,'EPSG',31028,'PROJCS["Yoff_1972_UTM_Zone_28N",GEOGCS["GCS_Yoff",DATUM["D_Yoff",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=28 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Zanderij 1972 UTM Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31121,'EPSG',31121,'PROJCS["Zanderij_1972_UTM_Zone_21N",GEOGCS["GCS_Zanderij",DATUM["D_Zanderij",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +ellps=intl +units=m'); -- -- Austria West Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31291,'EPSG',31291,'PROJCS["Austria_West_Zone",GEOGCS["GCS_MGI_Ferro",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Ferro",-17.66666666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",28],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m'); -- -- Austria Central Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31292,'EPSG',31292,'PROJCS["Austria_Central_Zone",GEOGCS["GCS_MGI_Ferro",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Ferro",-17.66666666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",31],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m'); -- -- Austria East Zone -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31293,'EPSG',31293,'PROJCS["Austria_East_Zone",GEOGCS["GCS_MGI_Ferro",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Ferro",-17.66666666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",34],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m'); -- -- MGI M28 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31294,'EPSG',31294,'PROJCS["MGI_M28",GEOGCS["GCS_MGI",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",10.33333333333333],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- MGI M31 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31295,'EPSG',31295,'PROJCS["MGI_M31",GEOGCS["GCS_MGI",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",13.33333333333333],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- MGI M34 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31296,'EPSG',31296,'PROJCS["MGI_M34",GEOGCS["GCS_MGI",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",16.33333333333334],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=16.33333333333334 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- MGI Austria Lambert -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31297,'EPSG',31297,'PROJCS["MGI_Austria_Lambert",GEOGCS["GCS_MGI",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",13.33333333333333],PARAMETER["Standard_Parallel_1",46],PARAMETER["Standard_Parallel_2",49],PARAMETER["Latitude_Of_Origin",47.5],UNIT["Meter",1]]','+proj=lcc +lat_1=46 +lat_2=49 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +units=m'); -- -- Germany Zone 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31491,'EPSG',31491,'PROJCS["Germany_Zone_1",GEOGCS["GCS_Deutsche_Hauptdreiecksnetz",DATUM["D_Deutsche_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=3 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m'); -- -- Germany Zone 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31492,'EPSG',31492,'PROJCS["Germany_Zone_2",GEOGCS["GCS_Deutsche_Hauptdreiecksnetz",DATUM["D_Deutsche_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",6],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=6 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=bessel +units=m'); -- -- Germany Zone 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31493,'EPSG',31493,'PROJCS["Germany_Zone_3",GEOGCS["GCS_Deutsche_Hauptdreiecksnetz",DATUM["D_Deutsche_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +units=m'); -- -- Germany Zone 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31494,'EPSG',31494,'PROJCS["Germany_Zone_4",GEOGCS["GCS_Deutsche_Hauptdreiecksnetz",DATUM["D_Deutsche_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",4500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",12],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=bessel +units=m'); -- -- Germany Zone 5 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31495,'EPSG',31495,'PROJCS["Germany_Zone_5",GEOGCS["GCS_Deutsche_Hauptdreiecksnetz",DATUM["D_Deutsche_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",5500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m'); -- -- Stereo 33 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31600,'EPSG',31600,'PROJCS["Stereo_33",GEOGCS["GCS_Dealul_Piscului_1933",DATUM["D_Dealul_Piscului_1933",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",25.39246588888889],PARAMETER["Scale_Factor",0.9996667],PARAMETER["Latitude_Of_Origin",45.9],UNIT["Meter",1]]','+ellps=intl +units=m'); -- -- Stereo 70 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31700,'EPSG',31700,'PROJCS["Stereo_70",GEOGCS["GCS_Dealul_Piscului_1970",DATUM["D_Dealul_Piscului_1970",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",25],PARAMETER["Scale_Factor",0.99975],PARAMETER["Latitude_Of_Origin",46],UNIT["Meter",1]]','+ellps=krass +units=m'); -- -- NGN UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31838,'EPSG',31838,'PROJCS["NGN_UTM_Zone_38N",GEOGCS["GCS_NGN",DATUM["D_NGN",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=WGS84 +units=m'); -- -- NGN UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31839,'EPSG',31839,'PROJCS["NGN_UTM_Zone_39N",GEOGCS["GCS_NGN",DATUM["D_NGN",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=WGS84 +units=m'); -- -- KUDAMS KTM -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (31900,'EPSG',31900,'PROJCS["KUDAMS_KTM",GEOGCS["GCS_KUDAMS",DATUM["D_Kuwait_Utility",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",48],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=48 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1927 StatePlane Montana North FIPS 2501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32001,'EPSG',32001,'PROJCS["NAD_1927_StatePlane_Montana_North_FIPS_2501",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",47.85],PARAMETER["Standard_Parallel_2",48.71666666666667],PARAMETER["Latitude_Of_Origin",47],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=47.85 +lat_2=48.71666666666667 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Montana Central FIPS 2502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32002,'EPSG',32002,'PROJCS["NAD_1927_StatePlane_Montana_Central_FIPS_2502",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",46.45],PARAMETER["Standard_Parallel_2",47.88333333333333],PARAMETER["Latitude_Of_Origin",45.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=46.45 +lat_2=47.88333333333333 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Montana South FIPS 2503 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32003,'EPSG',32003,'PROJCS["NAD_1927_StatePlane_Montana_South_FIPS_2503",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",44.86666666666667],PARAMETER["Standard_Parallel_2",46.4],PARAMETER["Latitude_Of_Origin",44],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.86666666666667 +lat_2=46.4 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Nebraska North FIPS 2601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32005,'EPSG',32005,'PROJCS["NAD_1927_StatePlane_Nebraska_North_FIPS_2601",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100],PARAMETER["Standard_Parallel_1",41.85],PARAMETER["Standard_Parallel_2",42.81666666666667],PARAMETER["Latitude_Of_Origin",41.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Nebraska South FIPS 2602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32006,'EPSG',32006,'PROJCS["NAD_1927_StatePlane_Nebraska_South_FIPS_2602",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-99.5],PARAMETER["Standard_Parallel_1",40.28333333333333],PARAMETER["Standard_Parallel_2",41.71666666666667],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Nevada East FIPS 2701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32007,'EPSG',32007,'PROJCS["NAD_1927_StatePlane_Nevada_East_FIPS_2701",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Nevada Central FIPS 2702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32008,'EPSG',32008,'PROJCS["NAD_1927_StatePlane_Nevada_Central_FIPS_2702",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Nevada West FIPS 2703 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32009,'EPSG',32009,'PROJCS["NAD_1927_StatePlane_Nevada_West_FIPS_2703",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane New Hampshire FIPS 2800 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32010,'EPSG',32010,'PROJCS["NAD_1927_StatePlane_New_Hampshire_FIPS_2800",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane New Jersey FIPS 2900 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32011,'EPSG',32011,'PROJCS["NAD_1927_StatePlane_New_Jersey_FIPS_2900",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74.66666666666667],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.999975 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane New Mexico East FIPS 3001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32012,'EPSG',32012,'PROJCS["NAD_1927_StatePlane_New_Mexico_East_FIPS_3001",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane New Mexico Central FIPS 3002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32013,'EPSG',32013,'PROJCS["NAD_1927_StatePlane_New_Mexico_Central_FIPS_3002",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane New Mexico West FIPS 3003 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32014,'EPSG',32014,'PROJCS["NAD_1927_StatePlane_New_Mexico_West_FIPS_3003",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane New York East FIPS 3101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32015,'EPSG',32015,'PROJCS["NAD_1927_StatePlane_New_York_East_FIPS_3101",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74.33333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",40],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane New York Central FIPS 3102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32016,'EPSG',32016,'PROJCS["NAD_1927_StatePlane_New_York_Central_FIPS_3102",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane New York West FIPS 3103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32017,'EPSG',32017,'PROJCS["NAD_1927_StatePlane_New_York_West_FIPS_3103",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane New York Long Island FIPS 3104 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32018,'EPSG',32018,'PROJCS["NAD_1927_StatePlane_New_York_Long_Island_FIPS_3104",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-74],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.5 +lon_0=-74 +x_0=609601.2192024385 +y_0=30480.06096012193 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane North Carolina FIPS 3200 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32019,'EPSG',32019,'PROJCS["NAD_1927_StatePlane_North_Carolina_FIPS_3200",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79],PARAMETER["Standard_Parallel_1",34.33333333333334],PARAMETER["Standard_Parallel_2",36.16666666666666],PARAMETER["Latitude_Of_Origin",33.75],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane North Dakota North FIPS 3301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32020,'EPSG',32020,'PROJCS["NAD_1927_StatePlane_North_Dakota_North_FIPS_3301",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane North Dakota South FIPS 3302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32021,'EPSG',32021,'PROJCS["NAD_1927_StatePlane_North_Dakota_South_FIPS_3302",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Ohio North FIPS 3401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32022,'EPSG',32022,'PROJCS["NAD_1927_StatePlane_Ohio_North_FIPS_3401",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Ohio South FIPS 3402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32023,'EPSG',32023,'PROJCS["NAD_1927_StatePlane_Ohio_South_FIPS_3402",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Oklahoma North FIPS 3501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32024,'EPSG',32024,'PROJCS["NAD_1927_StatePlane_Oklahoma_North_FIPS_3501",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Oklahoma South FIPS 3502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32025,'EPSG',32025,'PROJCS["NAD_1927_StatePlane_Oklahoma_South_FIPS_3502",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Oregon North FIPS 3601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32026,'EPSG',32026,'PROJCS["NAD_1927_StatePlane_Oregon_North_FIPS_3601",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Oregon South FIPS 3602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32027,'EPSG',32027,'PROJCS["NAD_1927_StatePlane_Oregon_South_FIPS_3602",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Pennsylvania North FIPS 3701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32028,'EPSG',32028,'PROJCS["NAD_1927_StatePlane_Pennsylvania_North_FIPS_3701",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",40.88333333333333],PARAMETER["Standard_Parallel_2",41.95],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Pennsylvania South FIPS 3702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32029,'EPSG',32029,'PROJCS["NAD_1927_StatePlane_Pennsylvania_South_FIPS_3702",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",39.93333333333333],PARAMETER["Standard_Parallel_2",40.96666666666667],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Rhode Island FIPS 3800 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32030,'EPSG',32030,'PROJCS["NAD_1927_StatePlane_Rhode_Island_FIPS_3800",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane South Carolina North FIPS 3901 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32031,'EPSG',32031,'PROJCS["NAD_1927_StatePlane_South_Carolina_North_FIPS_3901",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Standard_Parallel_1",33.76666666666667],PARAMETER["Standard_Parallel_2",34.96666666666667],PARAMETER["Latitude_Of_Origin",33],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane South Carolina South FIPS 3902 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32033,'EPSG',32033,'PROJCS["NAD_1927_StatePlane_South_Carolina_South_FIPS_3902",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Standard_Parallel_1",32.33333333333334],PARAMETER["Standard_Parallel_2",33.66666666666666],PARAMETER["Latitude_Of_Origin",31.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane South Dakota North FIPS 4001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32034,'EPSG',32034,'PROJCS["NAD_1927_StatePlane_South_Dakota_North_FIPS_4001",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane South Dakota South FIPS 4002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32035,'EPSG',32035,'PROJCS["NAD_1927_StatePlane_South_Dakota_South_FIPS_4002",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Tennessee FIPS 4100 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32036,'EPSG',32036,'PROJCS["NAD_1927_StatePlane_Tennessee_FIPS_4100",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-86],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024385 +y_0=30480.06096012193 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Texas North FIPS 4201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32037,'EPSG',32037,'PROJCS["NAD_1927_StatePlane_Texas_North_FIPS_4201",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Texas North Central FIPS 4202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32038,'EPSG',32038,'PROJCS["NAD_1927_StatePlane_Texas_North_Central_FIPS_4202",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-97.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Texas Central FIPS 4203 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32039,'EPSG',32039,'PROJCS["NAD_1927_StatePlane_Texas_Central_FIPS_4203",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Texas South Central FIPS 4204 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32040,'EPSG',32040,'PROJCS["NAD_1927_StatePlane_Texas_South_Central_FIPS_4204",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-99],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333334],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Texas South FIPS 4205 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32041,'EPSG',32041,'PROJCS["NAD_1927_StatePlane_Texas_South_FIPS_4205",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Utah North FIPS 4301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32042,'EPSG',32042,'PROJCS["NAD_1927_StatePlane_Utah_North_FIPS_4301",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Utah Central FIPS 4302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32043,'EPSG',32043,'PROJCS["NAD_1927_StatePlane_Utah_Central_FIPS_4302",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Utah South FIPS 4303 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32044,'EPSG',32044,'PROJCS["NAD_1927_StatePlane_Utah_South_FIPS_4303",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Vermont FIPS 3400 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32045,'EPSG',32045,'PROJCS["NAD_1927_StatePlane_Vermont_FIPS_3400",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-72.5],PARAMETER["Scale_Factor",0.9999642857142858],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Virginia North FIPS 4501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32046,'EPSG',32046,'PROJCS["NAD_1927_StatePlane_Virginia_North_FIPS_4501",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Virginia South FIPS 4502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32047,'EPSG',32047,'PROJCS["NAD_1927_StatePlane_Virginia_South_FIPS_4502",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Washington North FIPS 4601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32048,'EPSG',32048,'PROJCS["NAD_1927_StatePlane_Washington_North_FIPS_4601",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Washington South FIPS 4602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32049,'EPSG',32049,'PROJCS["NAD_1927_StatePlane_Washington_South_FIPS_4602",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane West Virginia North FIPS 4701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32050,'EPSG',32050,'PROJCS["NAD_1927_StatePlane_West_Virginia_North_FIPS_4701",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane West Virginia South FIPS 4702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32051,'EPSG',32051,'PROJCS["NAD_1927_StatePlane_West_Virginia_South_FIPS_4702",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Wisconsin North FIPS 4801 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32052,'EPSG',32052,'PROJCS["NAD_1927_StatePlane_Wisconsin_North_FIPS_4801",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Wisconsin Central FIPS 4802 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32053,'EPSG',32053,'PROJCS["NAD_1927_StatePlane_Wisconsin_Central_FIPS_4802",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Wisconsin South FIPS 4803 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32054,'EPSG',32054,'PROJCS["NAD_1927_StatePlane_Wisconsin_South_FIPS_4803",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Wyoming East FIPS 4901 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32055,'EPSG',32055,'PROJCS["NAD_1927_StatePlane_Wyoming_East_FIPS_4901",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",40.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Wyoming East Central FIPS 4902 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32056,'EPSG',32056,'PROJCS["NAD_1927_StatePlane_Wyoming_East_Central_FIPS_4902",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",40.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Wyoming West Central FIPS 4903 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32057,'EPSG',32057,'PROJCS["NAD_1927_StatePlane_Wyoming_West_Central_FIPS_4903",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",40.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Wyoming West FIPS 4904 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32058,'EPSG',32058,'PROJCS["NAD_1927_StatePlane_Wyoming_West_FIPS_4904",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",40.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Puerto Rico FIPS 5201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32059,'ESRI',32059,'PROJCS["NAD_1927_StatePlane_Puerto_Rico_FIPS_5201",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333334],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 StatePlane Virgin Islands St Croix FIPS 5202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32060,'ESRI',32060,'PROJCS["NAD_1927_StatePlane_Virgin_Islands_St_Croix_FIPS_5202",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333334],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012193 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 Guatemala Norte -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32061,'ESRI',32061,'PROJCS["NAD_1927_Guatemala_Norte",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",292209.579],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Standard_Parallel_1",16.81666666666667],PARAMETER["Scale_Factor",0.99992226],PARAMETER["Latitude_Of_Origin",16.81666666666667],UNIT["Meter",1]]','+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 Guatemala Sur -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32062,'ESRI',32062,'PROJCS["NAD_1927_Guatemala_Sur",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",325992.681],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Standard_Parallel_1",14.9],PARAMETER["Scale_Factor",0.99989906],PARAMETER["Latitude_Of_Origin",14.9],UNIT["Meter",1]]','+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 BLM Zone 14N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32074,'EPSG',32074,'PROJCS["NAD_1927_BLM_Zone_14N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.999600 +x_0=500000.0000000002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 BLM Zone 15N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32075,'EPSG',32075,'PROJCS["NAD_1927_BLM_Zone_15N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999600 +x_0=500000.0000000002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 BLM Zone 16N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32076,'EPSG',32076,'PROJCS["NAD_1927_BLM_Zone_16N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999600 +x_0=500000.0000000002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 BLM Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32077,'EPSG',32077,'PROJCS["NAD_1927_BLM_Zone_17N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999600 +x_0=500000.0000000002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1927 MTM 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32081,'EPSG',32081,'PROJCS["NAD_1927_MTM_1",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-53],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 MTM 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32082,'EPSG',32082,'PROJCS["NAD_1927_MTM_2",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-56],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 MTM 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32083,'EPSG',32083,'PROJCS["NAD_1927_MTM_3",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-58.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 MTM 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32084,'EPSG',32084,'PROJCS["NAD_1927_MTM_4",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-61.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 MTM 5 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32085,'EPSG',32085,'PROJCS["NAD_1927_MTM_5",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-64.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1927 MTM 6 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32086,'EPSG',32086,'PROJCS["NAD_1927_MTM_6",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-67.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1983 StatePlane Montana FIPS 2500 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32100,'EPSG',32100,'PROJCS["NAD_1983_StatePlane_Montana_FIPS_2500",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45],PARAMETER["Standard_Parallel_2",49],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Meter",1]]','+proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Nebraska FIPS 2600 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32104,'EPSG',32104,'PROJCS["NAD_1983_StatePlane_Nebraska_FIPS_2600",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100],PARAMETER["Standard_Parallel_1",40],PARAMETER["Standard_Parallel_2",43],PARAMETER["Latitude_Of_Origin",39.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Nevada East FIPS 2701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32107,'EPSG',32107,'PROJCS["NAD_1983_StatePlane_Nevada_East_FIPS_2701",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",8000000],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1]]','+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Nevada Central FIPS 2702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32108,'EPSG',32108,'PROJCS["NAD_1983_StatePlane_Nevada_Central_FIPS_2702",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",6000000],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1]]','+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Nevada West FIPS 2703 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32109,'EPSG',32109,'PROJCS["NAD_1983_StatePlane_Nevada_West_FIPS_2703",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",4000000],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1]]','+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane New Hampshire FIPS 2800 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32110,'EPSG',32110,'PROJCS["NAD_1983_StatePlane_New_Hampshire_FIPS_2800",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane New Jersey FIPS 2900 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32111,'EPSG',32111,'PROJCS["NAD_1983_StatePlane_New_Jersey_FIPS_2900",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane New Mexico East FIPS 3001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32112,'EPSG',32112,'PROJCS["NAD_1983_StatePlane_New_Mexico_East_FIPS_3001",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",165000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane New Mexico Central FIPS 3002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32113,'EPSG',32113,'PROJCS["NAD_1983_StatePlane_New_Mexico_Central_FIPS_3002",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane New Mexico West FIPS 3003 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32114,'EPSG',32114,'PROJCS["NAD_1983_StatePlane_New_Mexico_West_FIPS_3003",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",830000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane New York East FIPS 3101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32115,'EPSG',32115,'PROJCS["NAD_1983_StatePlane_New_York_East_FIPS_3101",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane New York Central FIPS 3102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32116,'EPSG',32116,'PROJCS["NAD_1983_StatePlane_New_York_Central_FIPS_3102",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane New York West FIPS 3103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32117,'EPSG',32117,'PROJCS["NAD_1983_StatePlane_New_York_West_FIPS_3103",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",350000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane New York Long Island FIPS 3104 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32118,'EPSG',32118,'PROJCS["NAD_1983_StatePlane_New_York_Long_Island_FIPS_3104",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane North Carolina FIPS 3200 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32119,'EPSG',32119,'PROJCS["NAD_1983_StatePlane_North_Carolina_FIPS_3200",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",609601.22],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79],PARAMETER["Standard_Parallel_1",34.33333333333334],PARAMETER["Standard_Parallel_2",36.16666666666666],PARAMETER["Latitude_Of_Origin",33.75],UNIT["Meter",1]]','+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane North Dakota North FIPS 3301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32120,'EPSG',32120,'PROJCS["NAD_1983_StatePlane_North_Dakota_North_FIPS_3301",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47],UNIT["Meter",1]]','+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane North Dakota South FIPS 3302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32121,'EPSG',32121,'PROJCS["NAD_1983_StatePlane_North_Dakota_South_FIPS_3302",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Ohio North FIPS 3401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32122,'EPSG',32122,'PROJCS["NAD_1983_StatePlane_Ohio_North_FIPS_3401",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Ohio South FIPS 3402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32123,'EPSG',32123,'PROJCS["NAD_1983_StatePlane_Ohio_South_FIPS_3402",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38],UNIT["Meter",1]]','+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Oklahoma North FIPS 3501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32124,'EPSG',32124,'PROJCS["NAD_1983_StatePlane_Oklahoma_North_FIPS_3501",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35],UNIT["Meter",1]]','+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Oklahoma South FIPS 3502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32125,'EPSG',32125,'PROJCS["NAD_1983_StatePlane_Oklahoma_South_FIPS_3502",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Oregon North FIPS 3601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32126,'EPSG',32126,'PROJCS["NAD_1983_StatePlane_Oregon_North_FIPS_3601",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Oregon South FIPS 3602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32127,'EPSG',32127,'PROJCS["NAD_1983_StatePlane_Oregon_South_FIPS_3602",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Pennsylvania North FIPS 3701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32128,'EPSG',32128,'PROJCS["NAD_1983_StatePlane_Pennsylvania_North_FIPS_3701",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",40.88333333333333],PARAMETER["Standard_Parallel_2",41.95],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Pennsylvania South FIPS 3702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32129,'EPSG',32129,'PROJCS["NAD_1983_StatePlane_Pennsylvania_South_FIPS_3702",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",39.93333333333333],PARAMETER["Standard_Parallel_2",40.96666666666667],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Rhode Island FIPS 3800 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32130,'EPSG',32130,'PROJCS["NAD_1983_StatePlane_Rhode_Island_FIPS_3800",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane South Carolina FIPS 3900 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32133,'EPSG',32133,'PROJCS["NAD_1983_StatePlane_South_Carolina_FIPS_3900",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",609600],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Standard_Parallel_2",34.83333333333334],PARAMETER["Latitude_Of_Origin",31.83333333333333],UNIT["Meter",1]]','+proj=lcc +lat_1=32.5 +lat_2=34.83333333333334 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane South Dakota North FIPS 4001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32134,'EPSG',32134,'PROJCS["NAD_1983_StatePlane_South_Dakota_North_FIPS_4001",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane South Dakota South FIPS 4002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32135,'EPSG',32135,'PROJCS["NAD_1983_StatePlane_South_Dakota_South_FIPS_4002",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Tennessee FIPS 4100 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32136,'EPSG',32136,'PROJCS["NAD_1983_StatePlane_Tennessee_FIPS_4100",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-86],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Texas North FIPS 4201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32137,'EPSG',32137,'PROJCS["NAD_1983_StatePlane_Texas_North_FIPS_4201",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34],UNIT["Meter",1]]','+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Texas North Central FIPS 4202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32138,'EPSG',32138,'PROJCS["NAD_1983_StatePlane_Texas_North_Central_FIPS_4202",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",2000000],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Meter",1]]','+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Texas Central FIPS 4203 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32139,'EPSG',32139,'PROJCS["NAD_1983_StatePlane_Texas_Central_FIPS_4203",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",3000000],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Meter",1]]','+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Texas South Central FIPS 4204 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32140,'EPSG',32140,'PROJCS["NAD_1983_StatePlane_Texas_South_Central_FIPS_4204",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",4000000],PARAMETER["Central_Meridian",-99],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333334],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Meter",1]]','+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Texas South FIPS 4205 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32141,'EPSG',32141,'PROJCS["NAD_1983_StatePlane_Texas_South_FIPS_4205",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",5000000],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Meter",1]]','+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Utah North FIPS 4301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32142,'EPSG',32142,'PROJCS["NAD_1983_StatePlane_Utah_North_FIPS_4301",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Utah Central FIPS 4302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32143,'EPSG',32143,'PROJCS["NAD_1983_StatePlane_Utah_Central_FIPS_4302",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",2000000],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Utah South FIPS 4303 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32144,'EPSG',32144,'PROJCS["NAD_1983_StatePlane_Utah_South_FIPS_4303",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",3000000],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Vermont FIPS 4400 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32145,'EPSG',32145,'PROJCS["NAD_1983_StatePlane_Vermont_FIPS_4400",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-72.5],PARAMETER["Scale_Factor",0.9999642857142858],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Virginia North FIPS 4501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32146,'EPSG',32146,'PROJCS["NAD_1983_StatePlane_Virginia_North_FIPS_4501",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",2000000],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Virginia South FIPS 4502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32147,'EPSG',32147,'PROJCS["NAD_1983_StatePlane_Virginia_South_FIPS_4502",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Washington North FIPS 4601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32148,'EPSG',32148,'PROJCS["NAD_1983_StatePlane_Washington_North_FIPS_4601",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47],UNIT["Meter",1]]','+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Washington South FIPS 4602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32149,'EPSG',32149,'PROJCS["NAD_1983_StatePlane_Washington_South_FIPS_4602",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane West Virginia North FIPS 4701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32150,'EPSG',32150,'PROJCS["NAD_1983_StatePlane_West_Virginia_North_FIPS_4701",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Meter",1]]','+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane West Virginia South FIPS 4702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32151,'EPSG',32151,'PROJCS["NAD_1983_StatePlane_West_Virginia_South_FIPS_4702",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37],UNIT["Meter",1]]','+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Wisconsin North FIPS 4801 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32152,'EPSG',32152,'PROJCS["NAD_1983_StatePlane_Wisconsin_North_FIPS_4801",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Wisconsin Central FIPS 4802 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32153,'EPSG',32153,'PROJCS["NAD_1983_StatePlane_Wisconsin_Central_FIPS_4802",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Wisconsin South FIPS 4803 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32154,'EPSG',32154,'PROJCS["NAD_1983_StatePlane_Wisconsin_South_FIPS_4803",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42],UNIT["Meter",1]]','+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Wyoming East FIPS 4901 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32155,'EPSG',32155,'PROJCS["NAD_1983_StatePlane_Wyoming_East_FIPS_4901",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Wyoming East Central FIPS 4902 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32156,'EPSG',32156,'PROJCS["NAD_1983_StatePlane_Wyoming_East_Central_FIPS_4902",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Wyoming West Central FIPS 4903 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32157,'EPSG',32157,'PROJCS["NAD_1983_StatePlane_Wyoming_West_Central_FIPS_4903",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Wyoming West FIPS 4904 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32158,'EPSG',32158,'PROJCS["NAD_1983_StatePlane_Wyoming_West_FIPS_4904",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 StatePlane Puerto Rico Virgin Islands FIPS 5200 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32161,'EPSG',32161,'PROJCS["NAD_1983_StatePlane_Puerto_Rico_Virgin_Islands_FIPS_5200",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",200000],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333334],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Meter",1]]','+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 2 SCoPQ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32180,'EPSG',32180,'PROJCS["NAD_1983_MTM_2_SCoPQ",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-55.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32181,'EPSG',32181,'PROJCS["NAD_1983_MTM_1",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-53],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32182,'EPSG',32182,'PROJCS["NAD_1983_MTM_2",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-56],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32183,'EPSG',32183,'PROJCS["NAD_1983_MTM_3",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-58.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32184,'EPSG',32184,'PROJCS["NAD_1983_MTM_4",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-61.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 5 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32185,'EPSG',32185,'PROJCS["NAD_1983_MTM_5",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-64.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 6 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32186,'EPSG',32186,'PROJCS["NAD_1983_MTM_6",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-67.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 7 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32187,'EPSG',32187,'PROJCS["NAD_1983_MTM_7",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 8 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32188,'EPSG',32188,'PROJCS["NAD_1983_MTM_8",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-73.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 9 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32189,'EPSG',32189,'PROJCS["NAD_1983_MTM_9",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-76.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 10 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32190,'EPSG',32190,'PROJCS["NAD_1983_MTM_10",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 11 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32191,'EPSG',32191,'PROJCS["NAD_1983_MTM_11",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 12 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32192,'EPSG',32192,'PROJCS["NAD_1983_MTM_12",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 13 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32193,'EPSG',32193,'PROJCS["NAD_1983_MTM_13",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 14 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32194,'EPSG',32194,'PROJCS["NAD_1983_MTM_14",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 15 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32195,'EPSG',32195,'PROJCS["NAD_1983_MTM_15",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 16 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32196,'EPSG',32196,'PROJCS["NAD_1983_MTM_16",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 MTM 17 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32197,'EPSG',32197,'PROJCS["NAD_1983_MTM_17",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",304800],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NAD 1983 Quebec Lambert -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32198,'EPSG',32198,'PROJCS["NAD_1983_Quebec_Lambert",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Standard_Parallel_1",46],PARAMETER["Standard_Parallel_2",60],PARAMETER["Latitude_Of_Origin",44],UNIT["Meter",1]]','+proj=lcc +lat_1=46 +lat_2=60 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- WGS 1972 UTM Zone 1N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32201,'EPSG',32201,'PROJCS["WGS_1972_UTM_Zone_1N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-177],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=1 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 2N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32202,'EPSG',32202,'PROJCS["WGS_1972_UTM_Zone_2N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-171],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=2 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 3N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32203,'EPSG',32203,'PROJCS["WGS_1972_UTM_Zone_3N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=3 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 4N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32204,'EPSG',32204,'PROJCS["WGS_1972_UTM_Zone_4N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=4 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 5N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32205,'EPSG',32205,'PROJCS["WGS_1972_UTM_Zone_5N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=5 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 6N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32206,'EPSG',32206,'PROJCS["WGS_1972_UTM_Zone_6N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=6 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 7N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32207,'EPSG',32207,'PROJCS["WGS_1972_UTM_Zone_7N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=7 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 8N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32208,'EPSG',32208,'PROJCS["WGS_1972_UTM_Zone_8N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=8 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 9N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32209,'EPSG',32209,'PROJCS["WGS_1972_UTM_Zone_9N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=9 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 10N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32210,'EPSG',32210,'PROJCS["WGS_1972_UTM_Zone_10N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=10 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 11N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32211,'EPSG',32211,'PROJCS["WGS_1972_UTM_Zone_11N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=11 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 12N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32212,'EPSG',32212,'PROJCS["WGS_1972_UTM_Zone_12N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=12 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 13N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32213,'EPSG',32213,'PROJCS["WGS_1972_UTM_Zone_13N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=13 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 14N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32214,'EPSG',32214,'PROJCS["WGS_1972_UTM_Zone_14N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=14 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 15N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32215,'EPSG',32215,'PROJCS["WGS_1972_UTM_Zone_15N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=15 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 16N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32216,'EPSG',32216,'PROJCS["WGS_1972_UTM_Zone_16N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=16 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32217,'EPSG',32217,'PROJCS["WGS_1972_UTM_Zone_17N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32218,'EPSG',32218,'PROJCS["WGS_1972_UTM_Zone_18N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32219,'EPSG',32219,'PROJCS["WGS_1972_UTM_Zone_19N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32220,'EPSG',32220,'PROJCS["WGS_1972_UTM_Zone_20N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32221,'EPSG',32221,'PROJCS["WGS_1972_UTM_Zone_21N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 22N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32222,'EPSG',32222,'PROJCS["WGS_1972_UTM_Zone_22N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 23N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32223,'EPSG',32223,'PROJCS["WGS_1972_UTM_Zone_23N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=23 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 24N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32224,'EPSG',32224,'PROJCS["WGS_1972_UTM_Zone_24N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=24 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 25N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32225,'EPSG',32225,'PROJCS["WGS_1972_UTM_Zone_25N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=25 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 26N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32226,'EPSG',32226,'PROJCS["WGS_1972_UTM_Zone_26N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=26 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 27N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32227,'EPSG',32227,'PROJCS["WGS_1972_UTM_Zone_27N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=27 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 28N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32228,'EPSG',32228,'PROJCS["WGS_1972_UTM_Zone_28N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=28 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32229,'EPSG',32229,'PROJCS["WGS_1972_UTM_Zone_29N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 30N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32230,'EPSG',32230,'PROJCS["WGS_1972_UTM_Zone_30N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=30 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 31N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32231,'EPSG',32231,'PROJCS["WGS_1972_UTM_Zone_31N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=31 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32232,'EPSG',32232,'PROJCS["WGS_1972_UTM_Zone_32N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 33N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32233,'EPSG',32233,'PROJCS["WGS_1972_UTM_Zone_33N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 34N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32234,'EPSG',32234,'PROJCS["WGS_1972_UTM_Zone_34N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=34 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 35N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32235,'EPSG',32235,'PROJCS["WGS_1972_UTM_Zone_35N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=35 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 36N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32236,'EPSG',32236,'PROJCS["WGS_1972_UTM_Zone_36N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=36 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 37N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32237,'EPSG',32237,'PROJCS["WGS_1972_UTM_Zone_37N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32238,'EPSG',32238,'PROJCS["WGS_1972_UTM_Zone_38N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32239,'EPSG',32239,'PROJCS["WGS_1972_UTM_Zone_39N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 40N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32240,'EPSG',32240,'PROJCS["WGS_1972_UTM_Zone_40N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=40 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 41N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32241,'EPSG',32241,'PROJCS["WGS_1972_UTM_Zone_41N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=41 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 42N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32242,'EPSG',32242,'PROJCS["WGS_1972_UTM_Zone_42N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=42 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 43N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32243,'EPSG',32243,'PROJCS["WGS_1972_UTM_Zone_43N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=43 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 44N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32244,'EPSG',32244,'PROJCS["WGS_1972_UTM_Zone_44N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=44 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 45N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32245,'EPSG',32245,'PROJCS["WGS_1972_UTM_Zone_45N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=45 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 46N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32246,'EPSG',32246,'PROJCS["WGS_1972_UTM_Zone_46N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=46 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 47N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32247,'EPSG',32247,'PROJCS["WGS_1972_UTM_Zone_47N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 48N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32248,'EPSG',32248,'PROJCS["WGS_1972_UTM_Zone_48N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 49N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32249,'EPSG',32249,'PROJCS["WGS_1972_UTM_Zone_49N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 50N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32250,'EPSG',32250,'PROJCS["WGS_1972_UTM_Zone_50N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 51N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32251,'EPSG',32251,'PROJCS["WGS_1972_UTM_Zone_51N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 52N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32252,'EPSG',32252,'PROJCS["WGS_1972_UTM_Zone_52N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 53N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32253,'EPSG',32253,'PROJCS["WGS_1972_UTM_Zone_53N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 54N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32254,'EPSG',32254,'PROJCS["WGS_1972_UTM_Zone_54N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=54 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 55N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32255,'EPSG',32255,'PROJCS["WGS_1972_UTM_Zone_55N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=55 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 56N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32256,'EPSG',32256,'PROJCS["WGS_1972_UTM_Zone_56N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=56 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 57N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32257,'EPSG',32257,'PROJCS["WGS_1972_UTM_Zone_57N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=57 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 58N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32258,'EPSG',32258,'PROJCS["WGS_1972_UTM_Zone_58N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=58 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 59N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32259,'EPSG',32259,'PROJCS["WGS_1972_UTM_Zone_59N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",171],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=59 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 60N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32260,'EPSG',32260,'PROJCS["WGS_1972_UTM_Zone_60N",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",177],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=60 +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 1S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32301,'EPSG',32301,'PROJCS["WGS_1972_UTM_Zone_1S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-177],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=1 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 2S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32302,'EPSG',32302,'PROJCS["WGS_1972_UTM_Zone_2S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-171],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=2 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 3S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32303,'EPSG',32303,'PROJCS["WGS_1972_UTM_Zone_3S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=3 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 4S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32304,'EPSG',32304,'PROJCS["WGS_1972_UTM_Zone_4S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=4 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 5S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32305,'EPSG',32305,'PROJCS["WGS_1972_UTM_Zone_5S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=5 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 6S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32306,'EPSG',32306,'PROJCS["WGS_1972_UTM_Zone_6S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=6 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 7S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32307,'EPSG',32307,'PROJCS["WGS_1972_UTM_Zone_7S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=7 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 8S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32308,'EPSG',32308,'PROJCS["WGS_1972_UTM_Zone_8S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=8 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 9S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32309,'EPSG',32309,'PROJCS["WGS_1972_UTM_Zone_9S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=9 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 10S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32310,'EPSG',32310,'PROJCS["WGS_1972_UTM_Zone_10S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=10 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 11S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32311,'EPSG',32311,'PROJCS["WGS_1972_UTM_Zone_11S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=11 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 12S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32312,'EPSG',32312,'PROJCS["WGS_1972_UTM_Zone_12S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=12 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 13S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32313,'EPSG',32313,'PROJCS["WGS_1972_UTM_Zone_13S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=13 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 14S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32314,'EPSG',32314,'PROJCS["WGS_1972_UTM_Zone_14S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=14 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 15S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32315,'EPSG',32315,'PROJCS["WGS_1972_UTM_Zone_15S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=15 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 16S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32316,'EPSG',32316,'PROJCS["WGS_1972_UTM_Zone_16S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=16 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 17S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32317,'EPSG',32317,'PROJCS["WGS_1972_UTM_Zone_17S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 18S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32318,'EPSG',32318,'PROJCS["WGS_1972_UTM_Zone_18S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 19S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32319,'EPSG',32319,'PROJCS["WGS_1972_UTM_Zone_19S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 20S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32320,'EPSG',32320,'PROJCS["WGS_1972_UTM_Zone_20S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 21S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32321,'EPSG',32321,'PROJCS["WGS_1972_UTM_Zone_21S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 22S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32322,'EPSG',32322,'PROJCS["WGS_1972_UTM_Zone_22S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 23S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32323,'EPSG',32323,'PROJCS["WGS_1972_UTM_Zone_23S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=23 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 24S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32324,'EPSG',32324,'PROJCS["WGS_1972_UTM_Zone_24S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=24 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 25S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32325,'EPSG',32325,'PROJCS["WGS_1972_UTM_Zone_25S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=25 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 26S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32326,'EPSG',32326,'PROJCS["WGS_1972_UTM_Zone_26S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=26 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 27S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32327,'EPSG',32327,'PROJCS["WGS_1972_UTM_Zone_27S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=27 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 28S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32328,'EPSG',32328,'PROJCS["WGS_1972_UTM_Zone_28S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=28 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 29S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32329,'EPSG',32329,'PROJCS["WGS_1972_UTM_Zone_29S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 30S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32330,'EPSG',32330,'PROJCS["WGS_1972_UTM_Zone_30S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=30 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 31S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32331,'EPSG',32331,'PROJCS["WGS_1972_UTM_Zone_31S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=31 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 32S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32332,'EPSG',32332,'PROJCS["WGS_1972_UTM_Zone_32S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 33S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32333,'EPSG',32333,'PROJCS["WGS_1972_UTM_Zone_33S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 34S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32334,'EPSG',32334,'PROJCS["WGS_1972_UTM_Zone_34S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=34 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 35S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32335,'EPSG',32335,'PROJCS["WGS_1972_UTM_Zone_35S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=35 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 36S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32336,'EPSG',32336,'PROJCS["WGS_1972_UTM_Zone_36S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=36 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 37S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32337,'EPSG',32337,'PROJCS["WGS_1972_UTM_Zone_37S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 38S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32338,'EPSG',32338,'PROJCS["WGS_1972_UTM_Zone_38S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 39S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32339,'EPSG',32339,'PROJCS["WGS_1972_UTM_Zone_39S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 40S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32340,'EPSG',32340,'PROJCS["WGS_1972_UTM_Zone_40S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=40 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 41S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32341,'EPSG',32341,'PROJCS["WGS_1972_UTM_Zone_41S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=41 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 42S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32342,'EPSG',32342,'PROJCS["WGS_1972_UTM_Zone_42S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=42 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 43S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32343,'EPSG',32343,'PROJCS["WGS_1972_UTM_Zone_43S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=43 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 44S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32344,'EPSG',32344,'PROJCS["WGS_1972_UTM_Zone_44S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=44 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 45S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32345,'EPSG',32345,'PROJCS["WGS_1972_UTM_Zone_45S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=45 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 46S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32346,'EPSG',32346,'PROJCS["WGS_1972_UTM_Zone_46S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=46 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 47S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32347,'EPSG',32347,'PROJCS["WGS_1972_UTM_Zone_47S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 48S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32348,'EPSG',32348,'PROJCS["WGS_1972_UTM_Zone_48S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 49S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32349,'EPSG',32349,'PROJCS["WGS_1972_UTM_Zone_49S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 50S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32350,'EPSG',32350,'PROJCS["WGS_1972_UTM_Zone_50S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 51S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32351,'EPSG',32351,'PROJCS["WGS_1972_UTM_Zone_51S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 52S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32352,'EPSG',32352,'PROJCS["WGS_1972_UTM_Zone_52S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 53S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32353,'EPSG',32353,'PROJCS["WGS_1972_UTM_Zone_53S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 54S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32354,'EPSG',32354,'PROJCS["WGS_1972_UTM_Zone_54S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=54 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 55S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32355,'EPSG',32355,'PROJCS["WGS_1972_UTM_Zone_55S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=55 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 56S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32356,'EPSG',32356,'PROJCS["WGS_1972_UTM_Zone_56S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=56 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 57S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32357,'EPSG',32357,'PROJCS["WGS_1972_UTM_Zone_57S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=57 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 58S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32358,'EPSG',32358,'PROJCS["WGS_1972_UTM_Zone_58S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=58 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 59S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32359,'EPSG',32359,'PROJCS["WGS_1972_UTM_Zone_59S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",171],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=59 +south +ellps=WGS72 +units=m'); -- -- WGS 1972 UTM Zone 60S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32360,'EPSG',32360,'PROJCS["WGS_1972_UTM_Zone_60S",GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",177],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=60 +south +ellps=WGS72 +units=m'); -- -- WGS 1984 UTM Zone 1N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32601,'EPSG',32601,'PROJCS["WGS_1984_UTM_Zone_1N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-177],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 2N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32602,'EPSG',32602,'PROJCS["WGS_1984_UTM_Zone_2N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-171],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 3N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32603,'EPSG',32603,'PROJCS["WGS_1984_UTM_Zone_3N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 4N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32604,'EPSG',32604,'PROJCS["WGS_1984_UTM_Zone_4N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 5N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32605,'EPSG',32605,'PROJCS["WGS_1984_UTM_Zone_5N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 6N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32606,'EPSG',32606,'PROJCS["WGS_1984_UTM_Zone_6N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 7N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32607,'EPSG',32607,'PROJCS["WGS_1984_UTM_Zone_7N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 8N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32608,'EPSG',32608,'PROJCS["WGS_1984_UTM_Zone_8N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 9N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32609,'EPSG',32609,'PROJCS["WGS_1984_UTM_Zone_9N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 10N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32610,'EPSG',32610,'PROJCS["WGS_1984_UTM_Zone_10N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 11N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32611,'EPSG',32611,'PROJCS["WGS_1984_UTM_Zone_11N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 12N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32612,'EPSG',32612,'PROJCS["WGS_1984_UTM_Zone_12N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 13N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32613,'EPSG',32613,'PROJCS["WGS_1984_UTM_Zone_13N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 14N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32614,'EPSG',32614,'PROJCS["WGS_1984_UTM_Zone_14N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 15N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32615,'EPSG',32615,'PROJCS["WGS_1984_UTM_Zone_15N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 16N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32616,'EPSG',32616,'PROJCS["WGS_1984_UTM_Zone_16N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 17N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32617,'EPSG',32617,'PROJCS["WGS_1984_UTM_Zone_17N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 18N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32618,'EPSG',32618,'PROJCS["WGS_1984_UTM_Zone_18N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 19N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32619,'EPSG',32619,'PROJCS["WGS_1984_UTM_Zone_19N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 20N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32620,'EPSG',32620,'PROJCS["WGS_1984_UTM_Zone_20N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 21N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32621,'EPSG',32621,'PROJCS["WGS_1984_UTM_Zone_21N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 22N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32622,'EPSG',32622,'PROJCS["WGS_1984_UTM_Zone_22N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 23N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32623,'EPSG',32623,'PROJCS["WGS_1984_UTM_Zone_23N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 24N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32624,'EPSG',32624,'PROJCS["WGS_1984_UTM_Zone_24N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 25N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32625,'EPSG',32625,'PROJCS["WGS_1984_UTM_Zone_25N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 26N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32626,'EPSG',32626,'PROJCS["WGS_1984_UTM_Zone_26N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 27N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32627,'EPSG',32627,'PROJCS["WGS_1984_UTM_Zone_27N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 28N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32628,'EPSG',32628,'PROJCS["WGS_1984_UTM_Zone_28N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 29N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32629,'EPSG',32629,'PROJCS["WGS_1984_UTM_Zone_29N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 30N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32630,'EPSG',32630,'PROJCS["WGS_1984_UTM_Zone_30N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 31N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32631,'EPSG',32631,'PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32632,'EPSG',32632,'PROJCS["WGS_1984_UTM_Zone_32N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 33N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32633,'EPSG',32633,'PROJCS["WGS_1984_UTM_Zone_33N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 34N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32634,'EPSG',32634,'PROJCS["WGS_1984_UTM_Zone_34N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 35N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32635,'EPSG',32635,'PROJCS["WGS_1984_UTM_Zone_35N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 36N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32636,'EPSG',32636,'PROJCS["WGS_1984_UTM_Zone_36N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 37N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32637,'EPSG',32637,'PROJCS["WGS_1984_UTM_Zone_37N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 38N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32638,'EPSG',32638,'PROJCS["WGS_1984_UTM_Zone_38N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 39N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32639,'EPSG',32639,'PROJCS["WGS_1984_UTM_Zone_39N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 40N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32640,'EPSG',32640,'PROJCS["WGS_1984_UTM_Zone_40N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 41N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32641,'EPSG',32641,'PROJCS["WGS_1984_UTM_Zone_41N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 42N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32642,'EPSG',32642,'PROJCS["WGS_1984_UTM_Zone_42N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 43N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32643,'EPSG',32643,'PROJCS["WGS_1984_UTM_Zone_43N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 44N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32644,'EPSG',32644,'PROJCS["WGS_1984_UTM_Zone_44N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 45N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32645,'EPSG',32645,'PROJCS["WGS_1984_UTM_Zone_45N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 46N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32646,'EPSG',32646,'PROJCS["WGS_1984_UTM_Zone_46N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 47N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32647,'EPSG',32647,'PROJCS["WGS_1984_UTM_Zone_47N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 48N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32648,'EPSG',32648,'PROJCS["WGS_1984_UTM_Zone_48N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 49N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32649,'EPSG',32649,'PROJCS["WGS_1984_UTM_Zone_49N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 50N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32650,'EPSG',32650,'PROJCS["WGS_1984_UTM_Zone_50N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 51N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32651,'EPSG',32651,'PROJCS["WGS_1984_UTM_Zone_51N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 52N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32652,'EPSG',32652,'PROJCS["WGS_1984_UTM_Zone_52N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 53N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32653,'EPSG',32653,'PROJCS["WGS_1984_UTM_Zone_53N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 54N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32654,'EPSG',32654,'PROJCS["WGS_1984_UTM_Zone_54N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 55N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32655,'EPSG',32655,'PROJCS["WGS_1984_UTM_Zone_55N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 56N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32656,'EPSG',32656,'PROJCS["WGS_1984_UTM_Zone_56N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 57N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32657,'EPSG',32657,'PROJCS["WGS_1984_UTM_Zone_57N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 58N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32658,'EPSG',32658,'PROJCS["WGS_1984_UTM_Zone_58N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 59N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32659,'EPSG',32659,'PROJCS["WGS_1984_UTM_Zone_59N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",171],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 60N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32660,'EPSG',32660,'PROJCS["WGS_1984_UTM_Zone_60N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",177],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=60 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- UPS North -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32661,'EPSG',32661,'PROJCS["UPS_North",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",2000000],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",0.994],PARAMETER["Latitude_Of_Origin",90],UNIT["Meter",1]]','+proj=stere +lat_0=90 +lon_0=0 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 1S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32701,'EPSG',32701,'PROJCS["WGS_1984_UTM_Zone_1S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-177],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=1 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 2S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32702,'EPSG',32702,'PROJCS["WGS_1984_UTM_Zone_2S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-171],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=2 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 3S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32703,'EPSG',32703,'PROJCS["WGS_1984_UTM_Zone_3S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=3 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 4S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32704,'EPSG',32704,'PROJCS["WGS_1984_UTM_Zone_4S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=4 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 5S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32705,'EPSG',32705,'PROJCS["WGS_1984_UTM_Zone_5S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=5 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 6S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32706,'EPSG',32706,'PROJCS["WGS_1984_UTM_Zone_6S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=6 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 7S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32707,'EPSG',32707,'PROJCS["WGS_1984_UTM_Zone_7S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=7 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 8S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32708,'EPSG',32708,'PROJCS["WGS_1984_UTM_Zone_8S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=8 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 9S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32709,'EPSG',32709,'PROJCS["WGS_1984_UTM_Zone_9S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=9 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 10S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32710,'EPSG',32710,'PROJCS["WGS_1984_UTM_Zone_10S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=10 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 11S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32711,'EPSG',32711,'PROJCS["WGS_1984_UTM_Zone_11S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=11 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 12S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32712,'EPSG',32712,'PROJCS["WGS_1984_UTM_Zone_12S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=12 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 13S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32713,'EPSG',32713,'PROJCS["WGS_1984_UTM_Zone_13S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=13 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 14S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32714,'EPSG',32714,'PROJCS["WGS_1984_UTM_Zone_14S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=14 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 15S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32715,'EPSG',32715,'PROJCS["WGS_1984_UTM_Zone_15S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=15 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 16S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32716,'EPSG',32716,'PROJCS["WGS_1984_UTM_Zone_16S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=16 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 17S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32717,'EPSG',32717,'PROJCS["WGS_1984_UTM_Zone_17S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=17 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 18S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32718,'EPSG',32718,'PROJCS["WGS_1984_UTM_Zone_18S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 19S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32719,'EPSG',32719,'PROJCS["WGS_1984_UTM_Zone_19S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=19 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 20S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32720,'EPSG',32720,'PROJCS["WGS_1984_UTM_Zone_20S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=20 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 21S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32721,'EPSG',32721,'PROJCS["WGS_1984_UTM_Zone_21S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=21 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 22S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32722,'EPSG',32722,'PROJCS["WGS_1984_UTM_Zone_22S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 23S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32723,'EPSG',32723,'PROJCS["WGS_1984_UTM_Zone_23S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=23 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 24S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32724,'EPSG',32724,'PROJCS["WGS_1984_UTM_Zone_24S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=24 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 25S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32725,'EPSG',32725,'PROJCS["WGS_1984_UTM_Zone_25S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=25 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 26S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32726,'EPSG',32726,'PROJCS["WGS_1984_UTM_Zone_26S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=26 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 27S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32727,'EPSG',32727,'PROJCS["WGS_1984_UTM_Zone_27S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=27 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 28S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32728,'EPSG',32728,'PROJCS["WGS_1984_UTM_Zone_28S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=28 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 29S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32729,'EPSG',32729,'PROJCS["WGS_1984_UTM_Zone_29S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=29 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 30S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32730,'EPSG',32730,'PROJCS["WGS_1984_UTM_Zone_30S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",-3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=30 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 31S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32731,'EPSG',32731,'PROJCS["WGS_1984_UTM_Zone_31S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",3],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=31 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 32S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32732,'EPSG',32732,'PROJCS["WGS_1984_UTM_Zone_32S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 33S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32733,'EPSG',32733,'PROJCS["WGS_1984_UTM_Zone_33S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 34S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32734,'EPSG',32734,'PROJCS["WGS_1984_UTM_Zone_34S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 35S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32735,'EPSG',32735,'PROJCS["WGS_1984_UTM_Zone_35S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=35 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 36S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32736,'EPSG',32736,'PROJCS["WGS_1984_UTM_Zone_36S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=36 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 37S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32737,'EPSG',32737,'PROJCS["WGS_1984_UTM_Zone_37S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",39],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=37 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 38S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32738,'EPSG',32738,'PROJCS["WGS_1984_UTM_Zone_38S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",45],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=38 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 39S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32739,'EPSG',32739,'PROJCS["WGS_1984_UTM_Zone_39S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",51],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=39 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 40S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32740,'EPSG',32740,'PROJCS["WGS_1984_UTM_Zone_40S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",57],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=40 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 41S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32741,'EPSG',32741,'PROJCS["WGS_1984_UTM_Zone_41S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",63],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=41 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 42S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32742,'EPSG',32742,'PROJCS["WGS_1984_UTM_Zone_42S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",69],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=42 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 43S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32743,'EPSG',32743,'PROJCS["WGS_1984_UTM_Zone_43S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=43 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 44S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32744,'EPSG',32744,'PROJCS["WGS_1984_UTM_Zone_44S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",81],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=44 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 45S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32745,'EPSG',32745,'PROJCS["WGS_1984_UTM_Zone_45S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",87],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=45 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 46S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32746,'EPSG',32746,'PROJCS["WGS_1984_UTM_Zone_46S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",93],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=46 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 47S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32747,'EPSG',32747,'PROJCS["WGS_1984_UTM_Zone_47S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",99],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=47 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 48S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32748,'EPSG',32748,'PROJCS["WGS_1984_UTM_Zone_48S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",105],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=48 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 49S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32749,'EPSG',32749,'PROJCS["WGS_1984_UTM_Zone_49S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 50S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32750,'EPSG',32750,'PROJCS["WGS_1984_UTM_Zone_50S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 51S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32751,'EPSG',32751,'PROJCS["WGS_1984_UTM_Zone_51S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 52S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32752,'EPSG',32752,'PROJCS["WGS_1984_UTM_Zone_52S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 53S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32753,'EPSG',32753,'PROJCS["WGS_1984_UTM_Zone_53S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 54S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32754,'EPSG',32754,'PROJCS["WGS_1984_UTM_Zone_54S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=54 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 55S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32755,'EPSG',32755,'PROJCS["WGS_1984_UTM_Zone_55S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=55 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 56S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32756,'EPSG',32756,'PROJCS["WGS_1984_UTM_Zone_56S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 57S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32757,'EPSG',32757,'PROJCS["WGS_1984_UTM_Zone_57S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=57 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 58S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32758,'EPSG',32758,'PROJCS["WGS_1984_UTM_Zone_58S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",165],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=58 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 59S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32759,'EPSG',32759,'PROJCS["WGS_1984_UTM_Zone_59S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",171],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=59 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 UTM Zone 60S -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32760,'EPSG',32760,'PROJCS["WGS_1984_UTM_Zone_60S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",177],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=60 +south +ellps=WGS84 +datum=WGS84 +units=m'); -- -- UPS South -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32761,'EPSG',32761,'PROJCS["UPS_South",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",2000000],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",0.994],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=stere +lat_0=-90 +lon_0=0 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- WGS 1984 TM 36 SE -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (32766,'EPSG',32766,'PROJCS["WGS_1984_TM_36_SE",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",10000000],PARAMETER["Central_Meridian",36],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=36 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Sphere Plate Carree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53001,'ESRI',53001,'PROJCS["Sphere_Plate_Carree",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Plate_Carree"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Equidistant Cylindrical -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53002,'ESRI',53002,'PROJCS["Sphere_Equidistant_Cylindrical",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",60],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Miller Cylindrical -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53003,'ESRI',53003,'PROJCS["Sphere_Miller_Cylindrical",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Miller_Cylindrical"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m'); -- -- Sphere Mercator -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53004,'ESRI',53004,'PROJCS["Sphere_Mercator",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",0],UNIT["Meter",1]]','+proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Sinusoidal -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53008,'ESRI',53008,'PROJCS["Sphere_Sinusoidal",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Sinusoidal"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Mollweide -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53009,'ESRI',53009,'PROJCS["Sphere_Mollweide",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mollweide"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=moll +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Eckert VI -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53010,'ESRI',53010,'PROJCS["Sphere_Eckert_VI",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_VI"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Eckert V -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53011,'ESRI',53011,'PROJCS["Sphere_Eckert_V",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_V"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Eckert IV -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53012,'ESRI',53012,'PROJCS["Sphere_Eckert_IV",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_IV"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Eckert III -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53013,'ESRI',53013,'PROJCS["Sphere_Eckert_III",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_III"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Eckert II -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53014,'ESRI',53014,'PROJCS["Sphere_Eckert_II",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_II"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Eckert I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53015,'ESRI',53015,'PROJCS["Sphere_Eckert_I",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_I"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Gall Stereographic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53016,'ESRI',53016,'PROJCS["Sphere_Gall_Stereographic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gall_Stereographic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=gall +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Behrmann -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53017,'ESRI',53017,'PROJCS["Sphere_Behrmann",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Behrmann"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Winkel I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53018,'ESRI',53018,'PROJCS["Sphere_Winkel_I",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Winkel_I"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",50.45977625218981],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Winkel II -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53019,'ESRI',53019,'PROJCS["Sphere_Winkel_II",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Winkel_II"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",50.45977625218981],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Polyconic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53021,'ESRI',53021,'PROJCS["Sphere_Polyconic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Polyconic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Quartic Authalic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53022,'ESRI',53022,'PROJCS["Sphere_Quartic_Authalic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Quartic_Authalic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Loximuthal -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53023,'ESRI',53023,'PROJCS["Sphere_Loximuthal",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Loximuthal"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Central_Parallel",40],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Bonne -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53024,'ESRI',53024,'PROJCS["Sphere_Bonne",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Bonne"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",60],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Hotine -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53025,'ESRI',53025,'PROJCS["Sphere_Hotine",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Two_Point_Natural_Origin"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Latitude_Of_1st_Point",0],PARAMETER["Latitude_Of_2nd_Point",60],PARAMETER["Scale_Factor",1],PARAMETER["Longitude_Of_1st_Point",0],PARAMETER["Longitude_Of_2nd_Point",60],PARAMETER["Latitude_Of_Center",40],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Stereographic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53026,'ESRI',53026,'PROJCS["Sphere_Stereographic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Equidistant Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53027,'ESRI',53027,'PROJCS["Sphere_Equidistant_Conic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",60],PARAMETER["Standard_Parallel_2",60],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Cassini -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53028,'ESRI',53028,'PROJCS["Sphere_Cassini",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Cassini"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Van der Grinten I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53029,'ESRI',53029,'PROJCS["Sphere_Van_der_Grinten_I",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Van_der_Grinten_I"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m'); -- -- Sphere Robinson -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53030,'ESRI',53030,'PROJCS["Sphere_Robinson",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Robinson"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=robin +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- Sphere Two Point Equidistant -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53031,'ESRI',53031,'PROJCS["Sphere_Two_Point_Equidistant",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Two_Point_Equidistant"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Latitude_Of_1st_Point",0],PARAMETER["Latitude_Of_2nd_Point",60],PARAMETER["Longitude_Of_1st_Point",0],PARAMETER["Longitude_Of_2nd_Point",60],UNIT["Meter",1]]','+a=6371000 +b=6371000 +units=m'); -- -- Sphere Azimuthal Equidistant -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (53032,'ESRI',53032,'PROJCS["Sphere_Azimuthal_Equidistant",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m'); -- -- World Plate Carree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54001,'ESRI',54001,'PROJCS["World_Plate_Carree",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Plate_Carree"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Equidistant Cylindrical -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54002,'ESRI',54002,'PROJCS["World_Equidistant_Cylindrical",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",60],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Miller Cylindrical -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54003,'ESRI',54003,'PROJCS["World_Miller_Cylindrical",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Miller_Cylindrical"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Mercator -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54004,'ESRI',54004,'PROJCS["World_Mercator",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",0],UNIT["Meter",1]]','+proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Sinusoidal -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54008,'ESRI',54008,'PROJCS["World_Sinusoidal",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Sinusoidal"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Mollweide -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54009,'ESRI',54009,'PROJCS["World_Mollweide",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mollweide"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Eckert VI -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54010,'ESRI',54010,'PROJCS["World_Eckert_VI",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_VI"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Eckert V -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54011,'ESRI',54011,'PROJCS["World_Eckert_V",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_V"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Eckert IV -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54012,'ESRI',54012,'PROJCS["World_Eckert_IV",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_IV"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Eckert III -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54013,'ESRI',54013,'PROJCS["World_Eckert_III",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_III"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Eckert II -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54014,'ESRI',54014,'PROJCS["World_Eckert_II",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_II"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Eckert I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54015,'ESRI',54015,'PROJCS["World_Eckert_I",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Eckert_I"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Gall Stereographic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54016,'ESRI',54016,'PROJCS["World_Gall_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Gall_Stereographic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=gall +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Behrmann -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54017,'ESRI',54017,'PROJCS["World_Behrmann",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Behrmann"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Winkel I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54018,'ESRI',54018,'PROJCS["World_Winkel_I",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Winkel_I"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",50.45977625218981],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Winkel II -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54019,'ESRI',54019,'PROJCS["World_Winkel_II",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Winkel_II"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",50.45977625218981],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Polyconic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54021,'ESRI',54021,'PROJCS["World_Polyconic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Polyconic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Quartic Authalic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54022,'ESRI',54022,'PROJCS["World_Quartic_Authalic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Quartic_Authalic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Loximuthal -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54023,'ESRI',54023,'PROJCS["World_Loximuthal",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Loximuthal"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Central_Parallel",40],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Bonne -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54024,'ESRI',54024,'PROJCS["World_Bonne",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Bonne"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",60],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Hotine -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54025,'ESRI',54025,'PROJCS["World_Hotine",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Two_Point_Natural_Origin"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Latitude_Of_1st_Point",0],PARAMETER["Latitude_Of_2nd_Point",60],PARAMETER["Scale_Factor",1],PARAMETER["Longitude_Of_1st_Point",0],PARAMETER["Longitude_Of_2nd_Point",60],PARAMETER["Latitude_Of_Center",40],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Stereographic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54026,'ESRI',54026,'PROJCS["World_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Equidistant Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54027,'ESRI',54027,'PROJCS["World_Equidistant_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",60],PARAMETER["Standard_Parallel_2",60],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Cassini -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54028,'ESRI',54028,'PROJCS["World_Cassini",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Cassini"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Van der Grinten I -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54029,'ESRI',54029,'PROJCS["World_Van_der_Grinten_I",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Van_der_Grinten_I"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Robinson -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54030,'ESRI',54030,'PROJCS["World_Robinson",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Robinson"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]','+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Two Point Equidistant -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54031,'ESRI',54031,'PROJCS["World_Two_Point_Equidistant",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Two_Point_Equidistant"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Latitude_Of_1st_Point",0],PARAMETER["Latitude_Of_2nd_Point",60],PARAMETER["Longitude_Of_1st_Point",0],PARAMETER["Longitude_Of_2nd_Point",60],UNIT["Meter",1]]','+ellps=WGS84 +datum=WGS84 +units=m'); -- -- World Azimuthal Equidistant -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (54032,'ESRI',54032,'PROJCS["World_Azimuthal_Equidistant",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- NAD 1927 StatePlane Guam FIPS 5400 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (65061,'ESRI',65061,'PROJCS["NAD_1927_StatePlane_Guam_FIPS_5400",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Polyconic"],PARAMETER["False_Easting",164041.6666666667],PARAMETER["False_Northing",164041.6666666667],PARAMETER["Central_Meridian",-144.7487507055556],PARAMETER["Latitude_Of_Origin",13.47246635277778],UNIT["Foot_US",0.30480060960121924]]','+proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000.00000000001 +y_0=50000.00000000001 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Guam FIPS 5400 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (65161,'ESRI',65161,'PROJCS["NAD_1983_StatePlane_Guam_FIPS_5400",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Polyconic"],PARAMETER["False_Easting",50000],PARAMETER["False_Northing",50000],PARAMETER["Central_Meridian",-144.7487507055556],PARAMETER["Latitude_Of_Origin",13.47246635277778],UNIT["Meter",1]]','+proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000 +y_0=50000 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- Canada Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102001,'ESRI',102001,'PROJCS["Canada_Albers_Equal_Area_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Standard_Parallel_1",50],PARAMETER["Standard_Parallel_2",70],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=aea +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- Canada Lambert Conformal Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102002,'ESRI',102002,'PROJCS["Canada_Lambert_Conformal_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Standard_Parallel_1",50],PARAMETER["Standard_Parallel_2",70],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=lcc +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- USA Contiguous Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102003,'ESRI',102003,'PROJCS["USA_Contiguous_Albers_Equal_Area_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Standard_Parallel_1",29.5],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1]]','+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- USA Contiguous Lambert Conformal Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102004,'ESRI',102004,'PROJCS["USA_Contiguous_Lambert_Conformal_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Standard_Parallel_1",33],PARAMETER["Standard_Parallel_2",45],PARAMETER["Latitude_Of_Origin",39],UNIT["Meter",1]]','+proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- USA Contiguous Equidistant Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102005,'ESRI',102005,'PROJCS["USA_Contiguous_Equidistant_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Standard_Parallel_1",33],PARAMETER["Standard_Parallel_2",45],PARAMETER["Latitude_Of_Origin",39],UNIT["Meter",1]]','+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- Alaska Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102006,'ESRI',102006,'PROJCS["Alaska_Albers_Equal_Area_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-154],PARAMETER["Standard_Parallel_1",55],PARAMETER["Standard_Parallel_2",65],PARAMETER["Latitude_Of_Origin",50],UNIT["Meter",1]]','+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- Hawaii Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102007,'ESRI',102007,'PROJCS["Hawaii_Albers_Equal_Area_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-157],PARAMETER["Standard_Parallel_1",8],PARAMETER["Standard_Parallel_2",18],PARAMETER["Latitude_Of_Origin",13],UNIT["Meter",1]]','+proj=aea +lat_1=8 +lat_2=18 +lat_0=13 +lon_0=-157 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- North America Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102008,'ESRI',102008,'PROJCS["North_America_Albers_Equal_Area_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Standard_Parallel_1",20],PARAMETER["Standard_Parallel_2",60],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- North America Lambert Conformal Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102009,'ESRI',102009,'PROJCS["North_America_Lambert_Conformal_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Standard_Parallel_1",20],PARAMETER["Standard_Parallel_2",60],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=lcc +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- North America Equidistant Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102010,'ESRI',102010,'PROJCS["North_America_Equidistant_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-96],PARAMETER["Standard_Parallel_1",20],PARAMETER["Standard_Parallel_2",60],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=60 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- Africa Sinusoidal -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102011,'ESRI',102011,'PROJCS["Africa_Sinusoidal",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Sinusoidal"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],UNIT["Meter",1]]','+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Asia Lambert Conformal Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102012,'ESRI',102012,'PROJCS["Asia_Lambert_Conformal_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER["Standard_Parallel_1",30],PARAMETER["Standard_Parallel_2",62],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=lcc +lat_1=30 +lat_2=62 +lat_0=0 +lon_0=105 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Europe Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102013,'ESRI',102013,'PROJCS["Europe_Albers_Equal_Area_Conic",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",10],PARAMETER["Standard_Parallel_1",43],PARAMETER["Standard_Parallel_2",62],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=aea +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m'); -- -- Europe Lambert Conformal Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102014,'ESRI',102014,'PROJCS["Europe_Lambert_Conformal_Conic",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",10],PARAMETER["Standard_Parallel_1",43],PARAMETER["Standard_Parallel_2",62],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m'); -- -- South America Lambert Conformal Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102015,'ESRI',102015,'PROJCS["South_America_Lambert_Conformal_Conic",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-60],PARAMETER["Standard_Parallel_1",-5],PARAMETER["Standard_Parallel_2",-42],PARAMETER["Latitude_Of_Origin",-32],UNIT["Meter",1]]','+proj=lcc +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m'); -- -- North Pole Azimuthal Equidistant -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102016,'ESRI',102016,'PROJCS["North_Pole_Azimuthal_Equidistant",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Latitude_Of_Origin",90],UNIT["Meter",1]]','+proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- North Pole Lambert Azimuthal Equal Area -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102017,'ESRI',102017,'PROJCS["North_Pole_Lambert_Azimuthal_Equal_Area",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Azimuthal_Equal_Area"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Latitude_Of_Origin",90],UNIT["Meter",1]]','+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- North Pole Stereographic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102018,'ESRI',102018,'PROJCS["North_Pole_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",90],UNIT["Meter",1]]','+proj=stere +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- South Pole Azimuthal Equidistant -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102019,'ESRI',102019,'PROJCS["South_Pole_Azimuthal_Equidistant",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=aeqd +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- South Pole Lambert Azimuthal Equal Area -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102020,'ESRI',102020,'PROJCS["South_Pole_Lambert_Azimuthal_Equal_Area",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Azimuthal_Equal_Area"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- South Pole Stereographic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102021,'ESRI',102021,'PROJCS["South_Pole_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",-90],UNIT["Meter",1]]','+proj=stere +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Africa Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102022,'ESRI',102022,'PROJCS["Africa_Albers_Equal_Area_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",25],PARAMETER["Standard_Parallel_1",20],PARAMETER["Standard_Parallel_2",-23],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=aea +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Africa Equidistant Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102023,'ESRI',102023,'PROJCS["Africa_Equidistant_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",25],PARAMETER["Standard_Parallel_1",20],PARAMETER["Standard_Parallel_2",-23],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=-23 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Africa Lambert Conformal Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102024,'ESRI',102024,'PROJCS["Africa_Lambert_Conformal_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",25],PARAMETER["Standard_Parallel_1",20],PARAMETER["Standard_Parallel_2",-23],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=lcc +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Asia North Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102025,'ESRI',102025,'PROJCS["Asia_North_Albers_Equal_Area_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",95],PARAMETER["Standard_Parallel_1",15],PARAMETER["Standard_Parallel_2",65],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=aea +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Asia North Equidistant Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102026,'ESRI',102026,'PROJCS["Asia_North_Equidistant_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",95],PARAMETER["Standard_Parallel_1",15],PARAMETER["Standard_Parallel_2",65],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=15 +lat_2=65 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Asia North Lambert Conformal Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102027,'ESRI',102027,'PROJCS["Asia_North_Lambert_Conformal_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",95],PARAMETER["Standard_Parallel_1",15],PARAMETER["Standard_Parallel_2",65],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=lcc +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Asia South Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102028,'ESRI',102028,'PROJCS["Asia_South_Albers_Equal_Area_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",125],PARAMETER["Standard_Parallel_1",7],PARAMETER["Standard_Parallel_2",-32],PARAMETER["Latitude_Of_Origin",-15],UNIT["Meter",1]]','+proj=aea +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Asia South Equidistant Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102029,'ESRI',102029,'PROJCS["Asia_South_Equidistant_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",125],PARAMETER["Standard_Parallel_1",7],PARAMETER["Standard_Parallel_2",-32],PARAMETER["Latitude_Of_Origin",-15],UNIT["Meter",1]]','+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=7 +lat_2=-32 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Asia South Lambert Conformal Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102030,'ESRI',102030,'PROJCS["Asia_South_Lambert_Conformal_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",125],PARAMETER["Standard_Parallel_1",7],PARAMETER["Standard_Parallel_2",-32],PARAMETER["Latitude_Of_Origin",-15],UNIT["Meter",1]]','+proj=lcc +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m'); -- -- Europe Equidistant Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102031,'ESRI',102031,'PROJCS["Europe_Equidistant_Conic",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",10],PARAMETER["Standard_Parallel_1",43],PARAMETER["Standard_Parallel_2",62],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=43 +lat_2=62 +x_0=0 +y_0=0 +ellps=intl +units=m'); -- -- South America Equidistant Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102032,'ESRI',102032,'PROJCS["South_America_Equidistant_Conic",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-60],PARAMETER["Standard_Parallel_1",-5],PARAMETER["Standard_Parallel_2",-42],PARAMETER["Latitude_Of_Origin",-32],UNIT["Meter",1]]','+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=-5 +lat_2=-42 +x_0=0 +y_0=0 +ellps=aust_SA +units=m'); -- -- South America Albers Equal Area Conic -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102033,'ESRI',102033,'PROJCS["South_America_Albers_Equal_Area_Conic",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-60],PARAMETER["Standard_Parallel_1",-5],PARAMETER["Standard_Parallel_2",-42],PARAMETER["Latitude_Of_Origin",-32],UNIT["Meter",1]]','+proj=aea +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m'); -- -- S-JTSK Krovak -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102065,'ESRI',102065,'PROJCS["S-JTSK_Krovak",GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Krovak"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",24.83333333333333],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",1],PARAMETER["Y_Scale",1],PARAMETER["XY_Plane_Rotation",0],UNIT["Meter",1]]','+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- S-JTSK Ferro Krovak East North -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102066,'ESRI',102066,'PROJCS["S-JTSK_Ferro_Krovak_East_North",GEOGCS["GCS_S_JTSK_Ferro",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Ferro",-17.66666666666667],UNIT["Degree",0.017453292519943295]],PROJECTION["Krovak"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",42.5],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",-1],PARAMETER["Y_Scale",1],PARAMETER["XY_Plane_Rotation",90],UNIT["Meter",1]]','+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m'); -- -- S-JTSK Krovak East North -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102067,'ESRI',102067,'PROJCS["S-JTSK_Krovak_East_North",GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Krovak"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",24.83333333333333],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",-1],PARAMETER["Y_Scale",1],PARAMETER["XY_Plane_Rotation",90],UNIT["Meter",1]]','+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m'); -- -- Monte Mario Italy 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102091,'ESRI',102091,'PROJCS["Monte_Mario_Italy_1",GEOGCS["GCS_Monte_Mario",DATUM["D_Monte_Mario",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +units=m'); -- -- Monte Mario Italy 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102092,'ESRI',102092,'PROJCS["Monte_Mario_Italy_2",GEOGCS["GCS_Monte_Mario",DATUM["D_Monte_Mario",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2520000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999600 +x_0=2520000 +y_0=0 +ellps=intl +units=m'); -- -- NGO 1948 Norway Zone 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102101,'ESRI',102101,'PROJCS["NGO_1948_Norway_Zone_1",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",6.05625],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=6.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 Norway Zone 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102102,'ESRI',102102,'PROJCS["NGO_1948_Norway_Zone_2",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",8.389583333333333],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=8.389583333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 Norway Zone 3 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102103,'ESRI',102103,'PROJCS["NGO_1948_Norway_Zone_3",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",10.72291666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 Norway Zone 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102104,'ESRI',102104,'PROJCS["NGO_1948_Norway_Zone_4",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",13.22291666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 Norway Zone 5 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102105,'ESRI',102105,'PROJCS["NGO_1948_Norway_Zone_5",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",16.88958333333333],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=16.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 Norway Zone 6 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102106,'ESRI',102106,'PROJCS["NGO_1948_Norway_Zone_6",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",20.88958333333333],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=20.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 Norway Zone 7 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102107,'ESRI',102107,'PROJCS["NGO_1948_Norway_Zone_7",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",24.88958333333333],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=24.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 Norway Zone 8 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102108,'ESRI',102108,'PROJCS["NGO_1948_Norway_Zone_8",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",29.05625],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",58],UNIT["Meter",1]]','+proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- RGF 1993 Lambert 93 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102110,'ESRI',102110,'PROJCS["RGF_1993_Lambert_93",GEOGCS["GCS_RGF_1993",DATUM["D_RGF_1993",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",6600000],PARAMETER["Central_Meridian",3],PARAMETER["Standard_Parallel_1",44],PARAMETER["Standard_Parallel_2",49],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1]]','+proj=lcc +lat_1=44 +lat_2=49 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m'); -- -- Old Hawaiian UTM Zone 4N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102114,'ESRI',102114,'PROJCS["Old_Hawaiian_UTM_Zone_4N",GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=4 +ellps=clrk66 +units=m'); -- -- Old Hawaiian UTM Zone 5N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102115,'ESRI',102115,'PROJCS["Old_Hawaiian_UTM_Zone_5N",GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=5 +ellps=clrk66 +units=m'); -- -- NAD 1927 Michigan GeoRef Feet US -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102120,'ESRI',102120,'PROJCS["NAD_1927_Michigan_GeoRef_Feet_US",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",8355401.583],PARAMETER["False_Northing",-14284780.538],PARAMETER["Scale_Factor",0.9996],PARAMETER["Azimuth",337.255555555556],PARAMETER["Longitude_Of_Center",-86],PARAMETER["Latitude_Of_Center",45.30916666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192'); -- -- NAD 1983 Michigan GeoRef Feet US -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102121,'ESRI',102121,'PROJCS["NAD_1983_Michigan_GeoRef_Feet_US",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",8355401.583],PARAMETER["False_Northing",-14284780.538],PARAMETER["Scale_Factor",0.9996],PARAMETER["Azimuth",337.255555555556],PARAMETER["Longitude_Of_Center",-86],PARAMETER["Latitude_Of_Center",45.30916666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1927 Michigan GeoRef Meters -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102122,'ESRI',102122,'PROJCS["NAD_1927_Michigan_GeoRef_Meters",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",2546731.496],PARAMETER["False_Northing",-4354009.816],PARAMETER["Scale_Factor",0.9996],PARAMETER["Azimuth",337.255555555556],PARAMETER["Longitude_Of_Center",-86],PARAMETER["Latitude_Of_Center",45.30916666666666],UNIT["Meter",1]]','+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=clrk66 +datum=NAD27 +units=m'); -- -- NAD 1983 Michigan GeoRef Meters -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102123,'ESRI',102123,'PROJCS["NAD_1983_Michigan_GeoRef_Meters",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",2546731.496],PARAMETER["False_Northing",-4354009.816],PARAMETER["Scale_Factor",0.9996],PARAMETER["Azimuth",337.255555555556],PARAMETER["Longitude_Of_Center",-86],PARAMETER["Latitude_Of_Center",45.30916666666666],UNIT["Meter",1]]','+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m'); -- -- NGO 1948 UTM Zone 32N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102132,'ESRI',102132,'PROJCS["NGO_1948_UTM_Zone_32N",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",9],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=32 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 UTM Zone 33N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102133,'ESRI',102133,'PROJCS["NGO_1948_UTM_Zone_33N",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=33 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 UTM Zone 34N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102134,'ESRI',102134,'PROJCS["NGO_1948_UTM_Zone_34N",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",21],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=34 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- NGO 1948 UTM Zone 35N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102135,'ESRI',102135,'PROJCS["NGO_1948_UTM_Zone_35N",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=35 +a=6377492.018 +b=6356173.508712696 +units=m'); -- -- Hong Kong 1980 Grid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102140,'ESRI',102140,'PROJCS["Hong_Kong_1980_Grid",GEOGCS["GCS_Hong_Kong_1980",DATUM["D_Hong_Kong_1980",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",836694.0500000001],PARAMETER["False_Northing",819069.8000000001],PARAMETER["Central_Meridian",114.1785555555556],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",22.31213333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1.000000 +x_0=836694.05 +y_0=819069.8 +ellps=intl +units=m'); -- -- Hong Kong 1980 UTM Zone 49N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102141,'ESRI',102141,'PROJCS["Hong_Kong_1980_UTM_Zone_49N",GEOGCS["GCS_Hong_Kong_1980",DATUM["D_Hong_Kong_1980",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",111],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=49 +ellps=intl +units=m'); -- -- Hong Kong 1980 UTM Zone 50N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102142,'ESRI',102142,'PROJCS["Hong_Kong_1980_UTM_Zone_50N",GEOGCS["GCS_Hong_Kong_1980",DATUM["D_Hong_Kong_1980",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",117],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=50 +ellps=intl +units=m'); -- -- Tokyo UTM Zone 51N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102151,'ESRI',102151,'PROJCS["Tokyo_UTM_Zone_51N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",123],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=51 +ellps=bessel +units=m'); -- -- Tokyo UTM Zone 52N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102152,'ESRI',102152,'PROJCS["Tokyo_UTM_Zone_52N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",129],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=52 +ellps=bessel +units=m'); -- -- Tokyo UTM Zone 53N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102153,'ESRI',102153,'PROJCS["Tokyo_UTM_Zone_53N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",135],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=53 +ellps=bessel +units=m'); -- -- Tokyo UTM Zone 54N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102154,'ESRI',102154,'PROJCS["Tokyo_UTM_Zone_54N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",141],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=54 +ellps=bessel +units=m'); -- -- Tokyo UTM Zone 55N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102155,'ESRI',102155,'PROJCS["Tokyo_UTM_Zone_55N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",147],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=55 +ellps=bessel +units=m'); -- -- Tokyo UTM Zone 56N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102156,'ESRI',102156,'PROJCS["Tokyo_UTM_Zone_56N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",153],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=56 +ellps=bessel +units=m'); -- -- Datum 73 Hayford Gauss IGeoE -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102160,'ESRI',102160,'PROJCS["Datum_73_Hayford_Gauss_IGeoE",GEOGCS["GCS_Datum_73",DATUM["D_Datum_73",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200180.598],PARAMETER["False_Northing",299913.01],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200180.598 +y_0=299913.01 +ellps=intl +units=m'); -- -- Datum 73 Hayford Gauss IPCC -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102161,'ESRI',102161,'PROJCS["Datum_73_Hayford_Gauss_IPCC",GEOGCS["GCS_Datum_73",DATUM["D_Datum_73",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",180.598],PARAMETER["False_Northing",-86.99],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m'); -- -- Graciosa Base SW 1948 UTM Zone 26N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102162,'ESRI',102162,'PROJCS["Graciosa_Base_SW_1948_UTM_Zone_26N",GEOGCS["GCS_Graciosa_Base_SW_1948",DATUM["D_Graciosa_Base_SW_1948",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=26 +ellps=intl +units=m'); -- -- Lisboa Bessel Bonne -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102163,'ESRI',102163,'PROJCS["Lisboa_Bessel_Bonne",GEOGCS["GCS_Datum_Lisboa_Bessel",DATUM["D_Datum_Lisboa_Bessel",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Bonne"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Standard_Parallel_1",39.66666666666666],UNIT["Meter",1]]','+ellps=bessel +units=m'); -- -- Lisboa Hayford Gauss IGeoE -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102164,'ESRI',102164,'PROJCS["Lisboa_Hayford_Gauss_IGeoE",GEOGCS["GCS_Datum_Lisboa_Hayford",DATUM["D_Datum_Lisboa_Hayford",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl +units=m'); -- -- Lisboa Hayford Gauss IPCC -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102165,'ESRI',102165,'PROJCS["Lisboa_Hayford_Gauss_IPCC",GEOGCS["GCS_Datum_Lisboa_Hayford",DATUM["D_Datum_Lisboa_Hayford",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=0 +y_0=0 +ellps=intl +units=m'); -- -- Observ Meteorologico 1939 UTM Zone 25N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102166,'ESRI',102166,'PROJCS["Observ_Meteorologico_1939_UTM_Zone_25N",GEOGCS["GCS_Observ_Meteorologico_1939",DATUM["D_Observ_Meteorologico_1939",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-33],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=25 +ellps=intl +units=m'); -- -- Porto Santo 1936 UTM Zone 28N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102167,'ESRI',102167,'PROJCS["Porto_Santo_1936_UTM_Zone_28N",GEOGCS["GCS_Porto_Santo_1936",DATUM["D_Porto_Santo_1936",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=28 +ellps=intl +units=m'); -- -- Sao Braz UTM Zone 26N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102168,'ESRI',102168,'PROJCS["Sao_Braz_UTM_Zone_26N",GEOGCS["GCS_Sao_Braz",DATUM["D_Sao_Braz",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-27],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=26 +ellps=intl +units=m'); -- -- Selvagem Grande 1938 UTM Zone 28N -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102169,'ESRI',102169,'PROJCS["Selvagem_Grande_1938_UTM_Zone_28N",GEOGCS["GCS_Selvagem_Grande_1938",DATUM["D_Selvagem_Grande_1938",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-15],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]','+proj=utm +zone=28 +ellps=intl +units=m'); -- -- Nord Maroc Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102191,'ESRI',102191,'PROJCS["Nord_Maroc_Degree",GEOGCS["GCS_Merchich_Degree",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",-5.4],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",33.3],UNIT["Meter",1]]','+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Sud Maroc Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102192,'ESRI',102192,'PROJCS["Sud_Maroc_Degree",GEOGCS["GCS_Merchich_Degree",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",-5.4],PARAMETER["Standard_Parallel_1",29.7],PARAMETER["Scale_Factor",0.9996155960000001],PARAMETER["Latitude_Of_Origin",29.7],UNIT["Meter",1]]','+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Sahara Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102193,'ESRI',102193,'PROJCS["Sahara_Degree",GEOGCS["GCS_Merchich_Degree",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1200000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",-5.4],PARAMETER["Standard_Parallel_1",26.1],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",26.1],UNIT["Meter",1]]','+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- NAD 1983 HARN StatePlane Alabama East FIPS 0101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102229,'ESRI',102229,'PROJCS["NAD_1983_HARN_StatePlane_Alabama_East_FIPS_0101",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-85.83333333333333],PARAMETER["Scale_Factor",0.99996],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Alabama West FIPS 0102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102230,'ESRI',102230,'PROJCS["NAD_1983_HARN_StatePlane_Alabama_West_FIPS_0102",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane California I FIPS 0401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102241,'ESRI',102241,'PROJCS["NAD_1983_HARN_StatePlane_California_I_FIPS_0401",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-122],PARAMETER["Standard_Parallel_1",40],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane California II FIPS 0402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102242,'ESRI',102242,'PROJCS["NAD_1983_HARN_StatePlane_California_II_FIPS_0402",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-122],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane California III FIPS 0403 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102243,'ESRI',102243,'PROJCS["NAD_1983_HARN_StatePlane_California_III_FIPS_0403",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Meter",1]]','+proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane California IV FIPS 0404 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102244,'ESRI',102244,'PROJCS["NAD_1983_HARN_StatePlane_California_IV_FIPS_0404",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-119],PARAMETER["Standard_Parallel_1",36],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane California V FIPS 0405 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102245,'ESRI',102245,'PROJCS["NAD_1983_HARN_StatePlane_California_V_FIPS_0405",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-118],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Meter",1]]','+proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane California VI FIPS 0406 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102246,'ESRI',102246,'PROJCS["NAD_1983_HARN_StatePlane_California_VI_FIPS_0406",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Arizona East FIPS 0201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102248,'ESRI',102248,'PROJCS["NAD_1983_HARN_StatePlane_Arizona_East_FIPS_0201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Arizona Central FIPS 0202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102249,'ESRI',102249,'PROJCS["NAD_1983_HARN_StatePlane_Arizona_Central_FIPS_0202",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Arizona West FIPS 0203 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102250,'ESRI',102250,'PROJCS["NAD_1983_HARN_StatePlane_Arizona_West_FIPS_0203",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Arkansas North FIPS 0301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102251,'ESRI',102251,'PROJCS["NAD_1983_HARN_StatePlane_Arkansas_North_FIPS_0301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Arkansas South FIPS 0302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102252,'ESRI',102252,'PROJCS["NAD_1983_HARN_StatePlane_Arkansas_South_FIPS_0302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",-92],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Colorado North FIPS 0501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102253,'ESRI',102253,'PROJCS["NAD_1983_HARN_StatePlane_Colorado_North_FIPS_0501",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Colorado Central FIPS 0502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102254,'ESRI',102254,'PROJCS["NAD_1983_HARN_StatePlane_Colorado_Central_FIPS_0502",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Colorado South FIPS 0503 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102255,'ESRI',102255,'PROJCS["NAD_1983_HARN_StatePlane_Colorado_South_FIPS_0503",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Connecticut FIPS 0600 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102256,'ESRI',102256,'PROJCS["NAD_1983_HARN_StatePlane_Connecticut_FIPS_0600",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",304800.6096],PARAMETER["False_Northing",152400.3048],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Delaware FIPS 0700 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102257,'ESRI',102257,'PROJCS["NAD_1983_HARN_StatePlane_Delaware_FIPS_0700",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38],UNIT["Meter",1]]','+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Florida East FIPS 0901 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102258,'ESRI',102258,'PROJCS["NAD_1983_HARN_StatePlane_Florida_East_FIPS_0901",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Florida West FIPS 0902 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102259,'ESRI',102259,'PROJCS["NAD_1983_HARN_StatePlane_Florida_West_FIPS_0902",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Florida North FIPS 0903 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102260,'ESRI',102260,'PROJCS["NAD_1983_HARN_StatePlane_Florida_North_FIPS_0903",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29],UNIT["Meter",1]]','+proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Hawaii 1 FIPS 5101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102261,'ESRI',102261,'PROJCS["NAD_1983_HARN_StatePlane_Hawaii_1_FIPS_5101",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Hawaii 2 FIPS 5102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102262,'ESRI',102262,'PROJCS["NAD_1983_HARN_StatePlane_Hawaii_2_FIPS_5102",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Hawaii 3 FIPS 5103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102263,'ESRI',102263,'PROJCS["NAD_1983_HARN_StatePlane_Hawaii_3_FIPS_5103",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-158],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Meter",1]]','+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Hawaii 4 FIPS 5104 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102264,'ESRI',102264,'PROJCS["NAD_1983_HARN_StatePlane_Hawaii_4_FIPS_5104",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Meter",1]]','+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Hawaii 5 FIPS 5105 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102265,'ESRI',102265,'PROJCS["NAD_1983_HARN_StatePlane_Hawaii_5_FIPS_5105",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Meter",1]]','+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Georgia East FIPS 1001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102266,'ESRI',102266,'PROJCS["NAD_1983_HARN_StatePlane_Georgia_East_FIPS_1001",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Georgia West FIPS 1002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102267,'ESRI',102267,'PROJCS["NAD_1983_HARN_StatePlane_Georgia_West_FIPS_1002",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30],UNIT["Meter",1]]','+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Idaho East FIPS 1101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102268,'ESRI',102268,'PROJCS["NAD_1983_HARN_StatePlane_Idaho_East_FIPS_1101",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Idaho Central FIPS 1102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102269,'ESRI',102269,'PROJCS["NAD_1983_HARN_StatePlane_Idaho_Central_FIPS_1102",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-114],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Idaho West FIPS 1103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102270,'ESRI',102270,'PROJCS["NAD_1983_HARN_StatePlane_Idaho_West_FIPS_1103",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Illinois East FIPS 1201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102271,'ESRI',102271,'PROJCS["NAD_1983_HARN_StatePlane_Illinois_East_FIPS_1201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Illinois West FIPS 1202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102272,'ESRI',102272,'PROJCS["NAD_1983_HARN_StatePlane_Illinois_West_FIPS_1202",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Indiana East FIPS 1301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102273,'ESRI',102273,'PROJCS["NAD_1983_HARN_StatePlane_Indiana_East_FIPS_1301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000],PARAMETER["False_Northing",250000],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Indiana West FIPS 1302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102274,'ESRI',102274,'PROJCS["NAD_1983_HARN_StatePlane_Indiana_West_FIPS_1302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000],PARAMETER["False_Northing",250000],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Kansas North FIPS 1501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102277,'ESRI',102277,'PROJCS["NAD_1983_HARN_StatePlane_Kansas_North_FIPS_1501",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Kansas South FIPS 1502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102278,'ESRI',102278,'PROJCS["NAD_1983_HARN_StatePlane_Kansas_South_FIPS_1502",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",400000],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Kentucky North FIPS 1601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102279,'ESRI',102279,'PROJCS["NAD_1983_HARN_StatePlane_Kentucky_North_FIPS_1601",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1]]','+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Kentucky South FIPS 1602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102280,'ESRI',102280,'PROJCS["NAD_1983_HARN_StatePlane_Kentucky_South_FIPS_1602",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Louisiana North FIPS 1701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102281,'ESRI',102281,'PROJCS["NAD_1983_HARN_StatePlane_Louisiana_North_FIPS_1701",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1]]','+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Louisiana South FIPS 1702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102282,'ESRI',102282,'PROJCS["NAD_1983_HARN_StatePlane_Louisiana_South_FIPS_1702",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.5],UNIT["Meter",1]]','+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Maine East FIPS 1801 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102283,'ESRI',102283,'PROJCS["NAD_1983_HARN_StatePlane_Maine_East_FIPS_1801",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Maine West FIPS 1802 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102284,'ESRI',102284,'PROJCS["NAD_1983_HARN_StatePlane_Maine_West_FIPS_1802",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Maryland FIPS 1900 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102285,'ESRI',102285,'PROJCS["NAD_1983_HARN_StatePlane_Maryland_FIPS_1900",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Massachusetts Mainland FIPS 2001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102286,'ESRI',102286,'PROJCS["NAD_1983_HARN_StatePlane_Massachusetts_Mainland_FIPS_2001",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",750000],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41],UNIT["Meter",1]]','+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Massachusetts Island FIPS 2002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102287,'ESRI',102287,'PROJCS["NAD_1983_HARN_StatePlane_Massachusetts_Island_FIPS_2002",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41],UNIT["Meter",1]]','+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Michigan North FIPS 2111 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102288,'ESRI',102288,'PROJCS["NAD_1983_HARN_StatePlane_Michigan_North_FIPS_2111",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",8000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Meter",1]]','+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Michigan Central FIPS 2112 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102289,'ESRI',102289,'PROJCS["NAD_1983_HARN_StatePlane_Michigan_Central_FIPS_2112",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Meter",1]]','+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Michigan South FIPS 2113 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102290,'ESRI',102290,'PROJCS["NAD_1983_HARN_StatePlane_Michigan_South_FIPS_2113",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Meter",1]]','+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Minnesota North FIPS 2201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102291,'ESRI',102291,'PROJCS["NAD_1983_HARN_StatePlane_Minnesota_North_FIPS_2201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-93.09999999999999],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1]]','+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Minnesota Central FIPS 2202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102292,'ESRI',102292,'PROJCS["NAD_1983_HARN_StatePlane_Minnesota_Central_FIPS_2202",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45],UNIT["Meter",1]]','+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Minnesota South FIPS 2203 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102293,'ESRI',102293,'PROJCS["NAD_1983_HARN_StatePlane_Minnesota_South_FIPS_2203",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-94],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43],UNIT["Meter",1]]','+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Mississippi East FIPS 2301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102294,'ESRI',102294,'PROJCS["NAD_1983_HARN_StatePlane_Mississippi_East_FIPS_2301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Mississippi West FIPS 2302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102295,'ESRI',102295,'PROJCS["NAD_1983_HARN_StatePlane_Mississippi_West_FIPS_2302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Missouri East FIPS 2401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102296,'ESRI',102296,'PROJCS["NAD_1983_HARN_StatePlane_Missouri_East_FIPS_2401",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Missouri Central FIPS 2402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102297,'ESRI',102297,'PROJCS["NAD_1983_HARN_StatePlane_Missouri_Central_FIPS_2402",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Missouri West FIPS 2403 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102298,'ESRI',102298,'PROJCS["NAD_1983_HARN_StatePlane_Missouri_West_FIPS_2403",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",850000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-94.5],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.16666666666666],UNIT["Meter",1]]','+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Montana FIPS 2500 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102300,'ESRI',102300,'PROJCS["NAD_1983_HARN_StatePlane_Montana_FIPS_2500",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45],PARAMETER["Standard_Parallel_2",49],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Meter",1]]','+proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Nebraska FIPS 2600 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102304,'ESRI',102304,'PROJCS["NAD_1983_HARN_StatePlane_Nebraska_FIPS_2600",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100],PARAMETER["Standard_Parallel_1",40],PARAMETER["Standard_Parallel_2",43],PARAMETER["Latitude_Of_Origin",39.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Nevada East FIPS 2701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102307,'ESRI',102307,'PROJCS["NAD_1983_HARN_StatePlane_Nevada_East_FIPS_2701",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",8000000],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1]]','+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Nevada Central FIPS 2702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102308,'ESRI',102308,'PROJCS["NAD_1983_HARN_StatePlane_Nevada_Central_FIPS_2702",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",6000000],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1]]','+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Nevada West FIPS 2703 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102309,'ESRI',102309,'PROJCS["NAD_1983_HARN_StatePlane_Nevada_West_FIPS_2703",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",4000000],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1]]','+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane New Hampshire FIPS 2800 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102310,'ESRI',102310,'PROJCS["NAD_1983_HARN_StatePlane_New_Hampshire_FIPS_2800",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane New Jersey FIPS 2900 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102311,'ESRI',102311,'PROJCS["NAD_1983_HARN_StatePlane_New_Jersey_FIPS_2900",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane New Mexico East FIPS 3001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102312,'ESRI',102312,'PROJCS["NAD_1983_HARN_StatePlane_New_Mexico_East_FIPS_3001",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",165000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane New Mexico Central FIPS 3002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102313,'ESRI',102313,'PROJCS["NAD_1983_HARN_StatePlane_New_Mexico_Central_FIPS_3002",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane New Mexico West FIPS 3003 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102314,'ESRI',102314,'PROJCS["NAD_1983_HARN_StatePlane_New_Mexico_West_FIPS_3003",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",830000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31],UNIT["Meter",1]]','+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane New York East FIPS 3101 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102315,'ESRI',102315,'PROJCS["NAD_1983_HARN_StatePlane_New_York_East_FIPS_3101",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane New York Central FIPS 3102 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102316,'ESRI',102316,'PROJCS["NAD_1983_HARN_StatePlane_New_York_Central_FIPS_3102",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane New York West FIPS 3103 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102317,'ESRI',102317,'PROJCS["NAD_1983_HARN_StatePlane_New_York_West_FIPS_3103",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",350000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40],UNIT["Meter",1]]','+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane New York Long Island FIPS 3104 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102318,'ESRI',102318,'PROJCS["NAD_1983_HARN_StatePlane_New_York_Long_Island_FIPS_3104",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane North Dakota North FIPS 3301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102320,'ESRI',102320,'PROJCS["NAD_1983_HARN_StatePlane_North_Dakota_North_FIPS_3301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47],UNIT["Meter",1]]','+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane North Dakota South FIPS 3302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102321,'ESRI',102321,'PROJCS["NAD_1983_HARN_StatePlane_North_Dakota_South_FIPS_3302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Ohio North FIPS 3401 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102322,'ESRI',102322,'PROJCS["NAD_1983_HARN_StatePlane_Ohio_North_FIPS_3401",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Ohio South FIPS 3402 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102323,'ESRI',102323,'PROJCS["NAD_1983_HARN_StatePlane_Ohio_South_FIPS_3402",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38],UNIT["Meter",1]]','+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Oklahoma North FIPS 3501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102324,'ESRI',102324,'PROJCS["NAD_1983_HARN_StatePlane_Oklahoma_North_FIPS_3501",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35],UNIT["Meter",1]]','+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Oklahoma South FIPS 3502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102325,'ESRI',102325,'PROJCS["NAD_1983_HARN_StatePlane_Oklahoma_South_FIPS_3502",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Oregon North FIPS 3601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102326,'ESRI',102326,'PROJCS["NAD_1983_HARN_StatePlane_Oregon_North_FIPS_3601",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Oregon South FIPS 3602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102327,'ESRI',102327,'PROJCS["NAD_1983_HARN_StatePlane_Oregon_South_FIPS_3602",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Rhode Island FIPS 3800 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102330,'ESRI',102330,'PROJCS["NAD_1983_HARN_StatePlane_Rhode_Island_FIPS_3800",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Meter",1]]','+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane South Dakota North FIPS 4001 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102334,'ESRI',102334,'PROJCS["NAD_1983_HARN_StatePlane_South_Dakota_North_FIPS_4001",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane South Dakota South FIPS 4002 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102335,'ESRI',102335,'PROJCS["NAD_1983_HARN_StatePlane_South_Dakota_South_FIPS_4002",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Tennessee FIPS 4100 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102336,'ESRI',102336,'PROJCS["NAD_1983_HARN_StatePlane_Tennessee_FIPS_4100",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-86],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Texas North FIPS 4201 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102337,'ESRI',102337,'PROJCS["NAD_1983_HARN_StatePlane_Texas_North_FIPS_4201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34],UNIT["Meter",1]]','+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Texas North Central FIPS 4202 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102338,'ESRI',102338,'PROJCS["NAD_1983_HARN_StatePlane_Texas_North_Central_FIPS_4202",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",2000000],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Meter",1]]','+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Texas Central FIPS 4203 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102339,'ESRI',102339,'PROJCS["NAD_1983_HARN_StatePlane_Texas_Central_FIPS_4203",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",3000000],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Meter",1]]','+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Texas South Central FIPS 4204 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102340,'ESRI',102340,'PROJCS["NAD_1983_HARN_StatePlane_Texas_South_Central_FIPS_4204",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",4000000],PARAMETER["Central_Meridian",-99],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333334],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Meter",1]]','+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Texas South FIPS 4205 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102341,'ESRI',102341,'PROJCS["NAD_1983_HARN_StatePlane_Texas_South_FIPS_4205",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000],PARAMETER["False_Northing",5000000],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Meter",1]]','+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Utah North FIPS 4301 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102342,'ESRI',102342,'PROJCS["NAD_1983_HARN_StatePlane_Utah_North_FIPS_4301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Utah Central FIPS 4302 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102343,'ESRI',102343,'PROJCS["NAD_1983_HARN_StatePlane_Utah_Central_FIPS_4302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",2000000],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Utah South FIPS 4303 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102344,'ESRI',102344,'PROJCS["NAD_1983_HARN_StatePlane_Utah_South_FIPS_4303",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",3000000],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Vermont FIPS 4400 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102345,'ESRI',102345,'PROJCS["NAD_1983_HARN_StatePlane_Vermont_FIPS_4400",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-72.5],PARAMETER["Scale_Factor",0.9999642857142858],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Virginia North FIPS 4501 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102346,'ESRI',102346,'PROJCS["NAD_1983_HARN_StatePlane_Virginia_North_FIPS_4501",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",2000000],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Virginia South FIPS 4502 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102347,'ESRI',102347,'PROJCS["NAD_1983_HARN_StatePlane_Virginia_South_FIPS_4502",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000],PARAMETER["False_Northing",1000000],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Washington North FIPS 4601 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102348,'ESRI',102348,'PROJCS["NAD_1983_HARN_StatePlane_Washington_North_FIPS_4601",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47],UNIT["Meter",1]]','+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Washington South FIPS 4602 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102349,'ESRI',102349,'PROJCS["NAD_1983_HARN_StatePlane_Washington_South_FIPS_4602",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane West Virginia North FIPS 4701 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102350,'ESRI',102350,'PROJCS["NAD_1983_HARN_StatePlane_West_Virginia_North_FIPS_4701",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Meter",1]]','+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane West Virginia South FIPS 4702 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102351,'ESRI',102351,'PROJCS["NAD_1983_HARN_StatePlane_West_Virginia_South_FIPS_4702",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37],UNIT["Meter",1]]','+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Wisconsin North FIPS 4801 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102352,'ESRI',102352,'PROJCS["NAD_1983_HARN_StatePlane_Wisconsin_North_FIPS_4801",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Meter",1]]','+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Wisconsin Central FIPS 4802 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102353,'ESRI',102353,'PROJCS["NAD_1983_HARN_StatePlane_Wisconsin_Central_FIPS_4802",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1]]','+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Wisconsin South FIPS 4803 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102354,'ESRI',102354,'PROJCS["NAD_1983_HARN_StatePlane_Wisconsin_South_FIPS_4803",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42],UNIT["Meter",1]]','+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Wyoming East FIPS 4901 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102355,'ESRI',102355,'PROJCS["NAD_1983_HARN_StatePlane_Wyoming_East_FIPS_4901",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Wyoming East Central FIPS 4902 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102356,'ESRI',102356,'PROJCS["NAD_1983_HARN_StatePlane_Wyoming_East_Central_FIPS_4902",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Wyoming West Central FIPS 4903 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102357,'ESRI',102357,'PROJCS["NAD_1983_HARN_StatePlane_Wyoming_West_Central_FIPS_4903",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Wyoming West FIPS 4904 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102358,'ESRI',102358,'PROJCS["NAD_1983_HARN_StatePlane_Wyoming_West_FIPS_4904",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000],PARAMETER["False_Northing",100000],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1]]','+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m'); -- -- NAD 1983 HARN StatePlane Puerto Rico Virgin Islands FIPS 5200 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102361,'ESRI',102361,'PROJCS["NAD_1983_HARN_StatePlane_Puerto_Rico_Virgin_Islands_FIPS_5200",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000],PARAMETER["False_Northing",200000],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333334],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Meter",1]]','+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m'); -- -- Nord Algerie Ancienne Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102491,'ESRI',102491,'PROJCS["Nord_Algerie_Ancienne_Degree",GEOGCS["GCS_Voirol_1875_Degree",DATUM["D_Voirol_1875",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",2.7],PARAMETER["Standard_Parallel_1",36],PARAMETER["Scale_Factor",0.999625544],PARAMETER["Latitude_Of_Origin",36],UNIT["Meter",1]]','+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Sud Algerie Ancienne Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102492,'ESRI',102492,'PROJCS["Sud_Algerie_Ancienne_Degree",GEOGCS["GCS_Voirol_1875_Degree",DATUM["D_Voirol_1875",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",300000],PARAMETER["Central_Meridian",2.7],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",33.3],UNIT["Meter",1]]','+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- NTF France I degrees -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102581,'ESRI',102581,'PROJCS["NTF_France_I_degrees",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",1200000],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",49.5],PARAMETER["Scale_Factor",0.999877341],PARAMETER["Latitude_Of_Origin",49.5],UNIT["Meter",1]]','+proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=2.337229166666667 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- NTF France II degrees -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102582,'ESRI',102582,'PROJCS["NTF_France_II_degrees",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",2200000],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",46.8],PARAMETER["Scale_Factor",0.99987742],PARAMETER["Latitude_Of_Origin",46.8],UNIT["Meter",1]]','+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- NTF France III degrees -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102583,'ESRI',102583,'PROJCS["NTF_France_III_degrees",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000],PARAMETER["False_Northing",3200000],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",44.1],PARAMETER["Scale_Factor",0.999877499],PARAMETER["Latitude_Of_Origin",44.1],UNIT["Meter",1]]','+proj=lcc +lat_1=44.1 +lat_0=44.1 +lon_0=2.337229166666667 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- NTF France IV degrees -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102584,'ESRI',102584,'PROJCS["NTF_France_IV_degrees",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",234.358],PARAMETER["False_Northing",4185861.369],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",42.165],PARAMETER["Scale_Factor",0.99994471],PARAMETER["Latitude_Of_Origin",42.165],UNIT["Meter",1]]','+proj=lcc +lat_1=42.165 +lat_0=42.165 +lon_0=2.337229166666667 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356514.999904194 +units=m'); -- -- Nord Algerie Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102591,'ESRI',102591,'PROJCS["Nord_Algerie_Degree",GEOGCS["GCS_Voirol_Unifie_1960_Degree",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500135],PARAMETER["False_Northing",300090],PARAMETER["Central_Meridian",2.7],PARAMETER["Standard_Parallel_1",36],PARAMETER["Scale_Factor",0.999625544],PARAMETER["Latitude_Of_Origin",36],UNIT["Meter",1]]','+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m'); -- -- Sud Algerie Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102592,'ESRI',102592,'PROJCS["Sud_Algerie_Degree",GEOGCS["GCS_Voirol_Unifie_1960_Degree",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500135],PARAMETER["False_Northing",300090],PARAMETER["Central_Meridian",2.7],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",33.3],UNIT["Meter",1]]','+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m'); -- -- NAD 1983 StatePlane Alabama East FIPS 0101 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102629,'ESRI',102629,'PROJCS["NAD_1983_StatePlane_Alabama_East_FIPS_0101_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-85.83333333333333],PARAMETER["Scale_Factor",0.99996],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alabama West FIPS 0102 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102630,'ESRI',102630,'PROJCS["NAD_1983_StatePlane_Alabama_West_FIPS_0102_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",30],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 1 FIPS 5001 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102631,'ESRI',102631,'PROJCS["NAD_1983_StatePlane_Alaska_1_FIPS_5001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",16404166.66666666],PARAMETER["False_Northing",-16404166.66666666],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",-36.86989764583333],PARAMETER["Longitude_Of_Center",-133.6666666666667],PARAMETER["Latitude_Of_Center",57],UNIT["Foot_US",0.30480060960121924]]','+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=-36.86989764583333 +k=0.9999 +x_0=4999999.999999999 +y_0=-4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 2 FIPS 5002 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102632,'ESRI',102632,'PROJCS["NAD_1983_StatePlane_Alaska_2_FIPS_5002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-142],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 3 FIPS 5003 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102633,'ESRI',102633,'PROJCS["NAD_1983_StatePlane_Alaska_3_FIPS_5003_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-146],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 4 FIPS 5004 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102634,'ESRI',102634,'PROJCS["NAD_1983_StatePlane_Alaska_4_FIPS_5004_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-150],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 5 FIPS 5005 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102635,'ESRI',102635,'PROJCS["NAD_1983_StatePlane_Alaska_5_FIPS_5005_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-154],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 6 FIPS 5006 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102636,'ESRI',102636,'PROJCS["NAD_1983_StatePlane_Alaska_6_FIPS_5006_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-158],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 7 FIPS 5007 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102637,'ESRI',102637,'PROJCS["NAD_1983_StatePlane_Alaska_7_FIPS_5007_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-162],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 8 FIPS 5008 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102638,'ESRI',102638,'PROJCS["NAD_1983_StatePlane_Alaska_8_FIPS_5008_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-166],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 9 FIPS 5009 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102639,'ESRI',102639,'PROJCS["NAD_1983_StatePlane_Alaska_9_FIPS_5009_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-170],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Alaska 10 FIPS 5010 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102640,'ESRI',102640,'PROJCS["NAD_1983_StatePlane_Alaska_10_FIPS_5010_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-176],PARAMETER["Standard_Parallel_1",51.83333333333334],PARAMETER["Standard_Parallel_2",53.83333333333334],PARAMETER["Latitude_Of_Origin",51],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=51.83333333333334 +lat_2=53.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane California I FIPS 0401 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102641,'ESRI',102641,'PROJCS["NAD_1983_StatePlane_California_I_FIPS_0401_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-122],PARAMETER["Standard_Parallel_1",40],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane California II FIPS 0402 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102642,'ESRI',102642,'PROJCS["NAD_1983_StatePlane_California_II_FIPS_0402_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-122],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane California III FIPS 0403 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102643,'ESRI',102643,'PROJCS["NAD_1983_StatePlane_California_III_FIPS_0403_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane California IV FIPS 0404 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102644,'ESRI',102644,'PROJCS["NAD_1983_StatePlane_California_IV_FIPS_0404_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-119],PARAMETER["Standard_Parallel_1",36],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane California V FIPS 0405 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102645,'ESRI',102645,'PROJCS["NAD_1983_StatePlane_California_V_FIPS_0405_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-118],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane California VI FIPS 0406 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102646,'ESRI',102646,'PROJCS["NAD_1983_StatePlane_California_VI_FIPS_0406_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Arizona East FIPS 0201 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102648,'ESRI',102648,'PROJCS["NAD_1983_StatePlane_Arizona_East_FIPS_0201_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",699998.5999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Arizona Central FIPS 0202 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102649,'ESRI',102649,'PROJCS["NAD_1983_StatePlane_Arizona_Central_FIPS_0202_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",699998.5999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Arizona West FIPS 0203 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102650,'ESRI',102650,'PROJCS["NAD_1983_StatePlane_Arizona_West_FIPS_0203_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",699998.5999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Arkansas North FIPS 0301 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102651,'ESRI',102651,'PROJCS["NAD_1983_StatePlane_Arkansas_North_FIPS_0301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Arkansas South FIPS 0302 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102652,'ESRI',102652,'PROJCS["NAD_1983_StatePlane_Arkansas_South_FIPS_0302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",1312333.333333333],PARAMETER["Central_Meridian",-92],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Colorado North FIPS 0501 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102653,'ESRI',102653,'PROJCS["NAD_1983_StatePlane_Colorado_North_FIPS_0501_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Colorado Central FIPS 0502 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102654,'ESRI',102654,'PROJCS["NAD_1983_StatePlane_Colorado_Central_FIPS_0502_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Colorado South FIPS 0503 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102655,'ESRI',102655,'PROJCS["NAD_1983_StatePlane_Colorado_South_FIPS_0503_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Connecticut FIPS 0600 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102656,'ESRI',102656,'PROJCS["NAD_1983_StatePlane_Connecticut_FIPS_0600_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",999999.999996],PARAMETER["False_Northing",499999.999998],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Delaware FIPS 0700 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102657,'ESRI',102657,'PROJCS["NAD_1983_StatePlane_Delaware_FIPS_0700_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Florida East FIPS 0901 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102658,'ESRI',102658,'PROJCS["NAD_1983_StatePlane_Florida_East_FIPS_0901_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Florida West FIPS 0902 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102659,'ESRI',102659,'PROJCS["NAD_1983_StatePlane_Florida_West_FIPS_0902_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Florida North FIPS 0903 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102660,'ESRI',102660,'PROJCS["NAD_1983_StatePlane_Florida_North_FIPS_0903_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Hawaii 1 FIPS 5101 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102661,'ESRI',102661,'PROJCS["NAD_1983_StatePlane_Hawaii_1_FIPS_5101_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Hawaii 2 FIPS 5102 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102662,'ESRI',102662,'PROJCS["NAD_1983_StatePlane_Hawaii_2_FIPS_5102_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Hawaii 3 FIPS 5103 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102663,'ESRI',102663,'PROJCS["NAD_1983_StatePlane_Hawaii_3_FIPS_5103_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-158],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Hawaii 4 FIPS 5104 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102664,'ESRI',102664,'PROJCS["NAD_1983_StatePlane_Hawaii_4_FIPS_5104_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.9999900000000001],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Hawaii 5 FIPS 5105 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102665,'ESRI',102665,'PROJCS["NAD_1983_StatePlane_Hawaii_5_FIPS_5105_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Georgia East FIPS 1001 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102666,'ESRI',102666,'PROJCS["NAD_1983_StatePlane_Georgia_East_FIPS_1001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Georgia West FIPS 1002 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102667,'ESRI',102667,'PROJCS["NAD_1983_StatePlane_Georgia_West_FIPS_1002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Idaho East FIPS 1101 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102668,'ESRI',102668,'PROJCS["NAD_1983_StatePlane_Idaho_East_FIPS_1101_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Idaho Central FIPS 1102 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102669,'ESRI',102669,'PROJCS["NAD_1983_StatePlane_Idaho_Central_FIPS_1102_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-114],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Idaho West FIPS 1103 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102670,'ESRI',102670,'PROJCS["NAD_1983_StatePlane_Idaho_West_FIPS_1103_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=799999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Illinois East FIPS 1201 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102671,'ESRI',102671,'PROJCS["NAD_1983_StatePlane_Illinois_East_FIPS_1201_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984249.9999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Illinois West FIPS 1202 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102672,'ESRI',102672,'PROJCS["NAD_1983_StatePlane_Illinois_West_FIPS_1202_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Indiana East FIPS 1301 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102673,'ESRI',102673,'PROJCS["NAD_1983_StatePlane_Indiana_East_FIPS_1301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",328083.3333333333],PARAMETER["False_Northing",820208.3333333333],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Indiana West FIPS 1302 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102674,'ESRI',102674,'PROJCS["NAD_1983_StatePlane_Indiana_West_FIPS_1302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2952750],PARAMETER["False_Northing",820208.3333333333],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000.0000000001 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Iowa North FIPS 1401 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102675,'ESRI',102675,'PROJCS["NAD_1983_StatePlane_Iowa_North_FIPS_1401_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921249.999999999],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",42.06666666666667],PARAMETER["Standard_Parallel_2",43.26666666666667],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.06666666666667 +lat_2=43.26666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Iowa South FIPS 1402 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102676,'ESRI',102676,'PROJCS["NAD_1983_StatePlane_Iowa_South_FIPS_1402_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",40.61666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.61666666666667 +lat_2=41.78333333333333 +lat_0=40 +lon_0=-93.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Kansas North FIPS 1501 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102677,'ESRI',102677,'PROJCS["NAD_1983_StatePlane_Kansas_North_FIPS_1501_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Kansas South FIPS 1502 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102678,'ESRI',102678,'PROJCS["NAD_1983_StatePlane_Kansas_South_FIPS_1502_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",1312333.333333333],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Kentucky North FIPS 1601 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102679,'ESRI',102679,'PROJCS["NAD_1983_StatePlane_Kentucky_North_FIPS_1601_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Kentucky South FIPS 1602 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102680,'ESRI',102680,'PROJCS["NAD_1983_StatePlane_Kentucky_South_FIPS_1602_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0000000002 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Louisiana North FIPS 1701 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102681,'ESRI',102681,'PROJCS["NAD_1983_StatePlane_Louisiana_North_FIPS_1701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Louisiana South FIPS 1702 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102682,'ESRI',102682,'PROJCS["NAD_1983_StatePlane_Louisiana_South_FIPS_1702_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Maine East FIPS 1801 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102683,'ESRI',102683,'PROJCS["NAD_1983_StatePlane_Maine_East_FIPS_1801_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984249.9999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Maine West FIPS 1802 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102684,'ESRI',102684,'PROJCS["NAD_1983_StatePlane_Maine_West_FIPS_1802_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2952750],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Maryland FIPS 1900 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102685,'ESRI',102685,'PROJCS["NAD_1983_StatePlane_Maryland_FIPS_1900_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Massachusetts Mainland FIPS 2001 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102686,'ESRI',102686,'PROJCS["NAD_1983_StatePlane_Massachusetts_Mainland_FIPS_2001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",2460625],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Massachusetts Island FIPS 2002 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102687,'ESRI',102687,'PROJCS["NAD_1983_StatePlane_Massachusetts_Island_FIPS_2002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Michigan North FIPS 2111 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102688,'ESRI',102688,'PROJCS["NAD_1983_StatePlane_Michigan_North_FIPS_2111_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",26246666.66666666],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-87],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Michigan Central FIPS 2112 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102689,'ESRI',102689,'PROJCS["NAD_1983_StatePlane_Michigan_Central_FIPS_2112_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",19685000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000.000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Michigan South FIPS 2113 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102690,'ESRI',102690,'PROJCS["NAD_1983_StatePlane_Michigan_South_FIPS_2113_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",13123333.33333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Minnesota North FIPS 2201 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102691,'ESRI',102691,'PROJCS["NAD_1983_StatePlane_Minnesota_North_FIPS_2201_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-93.09999999999999],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Minnesota Central FIPS 2202 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102692,'ESRI',102692,'PROJCS["NAD_1983_StatePlane_Minnesota_Central_FIPS_2202_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Minnesota South FIPS 2203 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102693,'ESRI',102693,'PROJCS["NAD_1983_StatePlane_Minnesota_South_FIPS_2203_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Mississippi East FIPS 2301 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102694,'ESRI',102694,'PROJCS["NAD_1983_StatePlane_Mississippi_East_FIPS_2301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984249.9999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Mississippi West FIPS 2302 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102695,'ESRI',102695,'PROJCS["NAD_1983_StatePlane_Mississippi_West_FIPS_2302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Missouri East FIPS 2401 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102696,'ESRI',102696,'PROJCS["NAD_1983_StatePlane_Missouri_East_FIPS_2401_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",820208.3333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Missouri Central FIPS 2402 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102697,'ESRI',102697,'PROJCS["NAD_1983_StatePlane_Missouri_Central_FIPS_2402_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Missouri West FIPS 2403 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102698,'ESRI',102698,'PROJCS["NAD_1983_StatePlane_Missouri_West_FIPS_2403_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2788708.333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-94.5],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.16666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Montana FIPS 2500 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102700,'ESRI',102700,'PROJCS["NAD_1983_StatePlane_Montana_FIPS_2500_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45],PARAMETER["Standard_Parallel_2",49],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Nebraska FIPS 2600 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102704,'ESRI',102704,'PROJCS["NAD_1983_StatePlane_Nebraska_FIPS_2600_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100],PARAMETER["Standard_Parallel_1",40],PARAMETER["Standard_Parallel_2",43],PARAMETER["Latitude_Of_Origin",39.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Nevada East FIPS 2701 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102707,'ESRI',102707,'PROJCS["NAD_1983_StatePlane_Nevada_East_FIPS_2701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",26246666.66666666],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=7999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Nevada Central FIPS 2702 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102708,'ESRI',102708,'PROJCS["NAD_1983_StatePlane_Nevada_Central_FIPS_2702_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",19685000],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000.0000000002 +y_0=6000000.000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Nevada West FIPS 2703 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102709,'ESRI',102709,'PROJCS["NAD_1983_StatePlane_Nevada_West_FIPS_2703_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=799999.9999999999 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane New Hampshire FIPS 2800 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102710,'ESRI',102710,'PROJCS["NAD_1983_StatePlane_New_Hampshire_FIPS_2800_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984249.9999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane New Jersey FIPS 2900 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102711,'ESRI',102711,'PROJCS["NAD_1983_StatePlane_New_Jersey_FIPS_2900_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",492124.9999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane New Mexico East FIPS 3001 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102712,'ESRI',102712,'PROJCS["NAD_1983_StatePlane_New_Mexico_East_FIPS_3001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",541337.4999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane New Mexico Central FIPS 3002 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102713,'ESRI',102713,'PROJCS["NAD_1983_StatePlane_New_Mexico_Central_FIPS_3002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane New Mexico West FIPS 3003 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102714,'ESRI',102714,'PROJCS["NAD_1983_StatePlane_New_Mexico_West_FIPS_3003_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2723091.666666666],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=829999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane New York East FIPS 3101 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102715,'ESRI',102715,'PROJCS["NAD_1983_StatePlane_New_York_East_FIPS_3101_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",492124.9999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane New York Central FIPS 3102 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102716,'ESRI',102716,'PROJCS["NAD_1983_StatePlane_New_York_Central_FIPS_3102_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",820208.3333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane New York West FIPS 3103 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102717,'ESRI',102717,'PROJCS["NAD_1983_StatePlane_New_York_West_FIPS_3103_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1148291.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane New York Long Island FIPS 3104 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102718,'ESRI',102718,'PROJCS["NAD_1983_StatePlane_New_York_Long_Island_FIPS_3104_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",984249.9999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-74],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane North Carolina FIPS 3200 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102719,'ESRI',102719,'PROJCS["NAD_1983_StatePlane_North_Carolina_FIPS_3200_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.002616666],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79],PARAMETER["Standard_Parallel_1",34.33333333333334],PARAMETER["Standard_Parallel_2",36.16666666666666],PARAMETER["Latitude_Of_Origin",33.75],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2199999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane North Dakota North FIPS 3301 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102720,'ESRI',102720,'PROJCS["NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane North Dakota South FIPS 3302 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102721,'ESRI',102721,'PROJCS["NAD_1983_StatePlane_North_Dakota_South_FIPS_3302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Ohio North FIPS 3401 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102722,'ESRI',102722,'PROJCS["NAD_1983_StatePlane_Ohio_North_FIPS_3401_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Ohio South FIPS 3402 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102723,'ESRI',102723,'PROJCS["NAD_1983_StatePlane_Ohio_South_FIPS_3402_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Oklahoma North FIPS 3501 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102724,'ESRI',102724,'PROJCS["NAD_1983_StatePlane_Oklahoma_North_FIPS_3501_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Oklahoma South FIPS 3502 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102725,'ESRI',102725,'PROJCS["NAD_1983_StatePlane_Oklahoma_South_FIPS_3502_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-98],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Oregon North FIPS 3601 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102726,'ESRI',102726,'PROJCS["NAD_1983_StatePlane_Oregon_North_FIPS_3601_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",8202083.333333332],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Oregon South FIPS 3602 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102727,'ESRI',102727,'PROJCS["NAD_1983_StatePlane_Oregon_South_FIPS_3602_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921249.999999999],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Pennsylvania North FIPS 3701 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102728,'ESRI',102728,'PROJCS["NAD_1983_StatePlane_Pennsylvania_North_FIPS_3701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",40.88333333333333],PARAMETER["Standard_Parallel_2",41.95],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Pennsylvania South FIPS 3702 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102729,'ESRI',102729,'PROJCS["NAD_1983_StatePlane_Pennsylvania_South_FIPS_3702_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",39.93333333333333],PARAMETER["Standard_Parallel_2",40.96666666666667],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Rhode Island FIPS 3800 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102730,'ESRI',102730,'PROJCS["NAD_1983_StatePlane_Rhode_Island_FIPS_3800_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",328083.3333333333],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane South Carolina FIPS 3900 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102733,'ESRI',102733,'PROJCS["NAD_1983_StatePlane_South_Carolina_FIPS_3900_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1999996],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Standard_Parallel_2",34.83333333333334],PARAMETER["Latitude_Of_Origin",31.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=32.5 +lat_2=34.83333333333334 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane South Dakota North FIPS 4001 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102734,'ESRI',102734,'PROJCS["NAD_1983_StatePlane_South_Dakota_North_FIPS_4001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane South Dakota South FIPS 4002 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102735,'ESRI',102735,'PROJCS["NAD_1983_StatePlane_South_Dakota_South_FIPS_4002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Tennessee FIPS 4100 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102736,'ESRI',102736,'PROJCS["NAD_1983_StatePlane_Tennessee_FIPS_4100_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-86],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Texas North FIPS 4201 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102737,'ESRI',102737,'PROJCS["NAD_1983_StatePlane_Texas_North_FIPS_4201_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Texas North Central FIPS 4202 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102738,'ESRI',102738,'PROJCS["NAD_1983_StatePlane_Texas_North_Central_FIPS_4202_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000.0000000001 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Texas Central FIPS 4203 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102739,'ESRI',102739,'PROJCS["NAD_1983_StatePlane_Texas_Central_FIPS_4203_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",9842499.999999998],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Texas South Central FIPS 4204 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102740,'ESRI',102740,'PROJCS["NAD_1983_StatePlane_Texas_South_Central_FIPS_4204_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-99],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333334],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000.0000000001 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Texas South FIPS 4205 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102741,'ESRI',102741,'PROJCS["NAD_1983_StatePlane_Texas_South_FIPS_4205_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",984249.9999999999],PARAMETER["False_Northing",16404166.66666666],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Utah North FIPS 4301 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102742,'ESRI',102742,'PROJCS["NAD_1983_StatePlane_Utah_North_FIPS_4301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Utah Central FIPS 4302 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102743,'ESRI',102743,'PROJCS["NAD_1983_StatePlane_Utah_Central_FIPS_4302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Utah South FIPS 4303 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102744,'ESRI',102744,'PROJCS["NAD_1983_StatePlane_Utah_South_FIPS_4303_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",9842499.999999998],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Vermont FIPS 4400 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102745,'ESRI',102745,'PROJCS["NAD_1983_StatePlane_Vermont_FIPS_4400_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-72.5],PARAMETER["Scale_Factor",0.9999642857142858],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Virginia North FIPS 4501 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102746,'ESRI',102746,'PROJCS["NAD_1983_StatePlane_Virginia_North_FIPS_4501_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",11482916.66666666],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Virginia South FIPS 4502 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102747,'ESRI',102747,'PROJCS["NAD_1983_StatePlane_Virginia_South_FIPS_4502_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",11482916.66666666],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Washington North FIPS 4601 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102748,'ESRI',102748,'PROJCS["NAD_1983_StatePlane_Washington_North_FIPS_4601_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Washington South FIPS 4602 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102749,'ESRI',102749,'PROJCS["NAD_1983_StatePlane_Washington_South_FIPS_4602_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane West Virginia North FIPS 4701 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102750,'ESRI',102750,'PROJCS["NAD_1983_StatePlane_West_Virginia_North_FIPS_4701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane West Virginia South FIPS 4702 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102751,'ESRI',102751,'PROJCS["NAD_1983_StatePlane_West_Virginia_South_FIPS_4702_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-81],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Wisconsin North FIPS 4801 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102752,'ESRI',102752,'PROJCS["NAD_1983_StatePlane_Wisconsin_North_FIPS_4801_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Wisconsin Central FIPS 4802 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102753,'ESRI',102753,'PROJCS["NAD_1983_StatePlane_Wisconsin_Central_FIPS_4802_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Wisconsin South FIPS 4803 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102754,'ESRI',102754,'PROJCS["NAD_1983_StatePlane_Wisconsin_South_FIPS_4803_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-90],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Wyoming East FIPS 4901 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102755,'ESRI',102755,'PROJCS["NAD_1983_StatePlane_Wyoming_East_FIPS_4901_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Wyoming East Central FIPS 4902 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102756,'ESRI',102756,'PROJCS["NAD_1983_StatePlane_Wyoming_East_Central_FIPS_4902_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=399999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Wyoming West Central FIPS 4903 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102757,'ESRI',102757,'PROJCS["NAD_1983_StatePlane_Wyoming_West_Central_FIPS_4903_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1968500],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Wyoming West FIPS 4904 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102758,'ESRI',102758,'PROJCS["NAD_1983_StatePlane_Wyoming_West_FIPS_4904_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.30480060960121924]]','+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Puerto Rico Virgin Islands FIPS 5200 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102761,'ESRI',102761,'PROJCS["NAD_1983_StatePlane_Puerto_Rico_Virgin_Islands_FIPS_5200_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",656166.6666666665],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333334],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Foot_US",0.30480060960121924]]','+proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- NAD 1983 StatePlane Guam FIPS 5400 Feet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (102766,'ESRI',102766,'PROJCS["NAD_1983_StatePlane_Guam_FIPS_5400_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Polyconic"],PARAMETER["False_Easting",164041.6666666666],PARAMETER["False_Northing",164041.6666666666],PARAMETER["Central_Meridian",-144.7487507055556],PARAMETER["Latitude_Of_Origin",13.47246635277778],UNIT["Foot_US",0.30480060960121924]]','+proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=49999.99999999999 +y_0=49999.99999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192'); -- -- Belge Lambert 1972 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (103300,'ESRI',103300,'PROJCS["Belge_Lambert_1972",GEOGCS["GCS_Belge_1972",DATUM["D_Belge_1972",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",150000.01256],PARAMETER["False_Northing",5400088.4378],PARAMETER["Central_Meridian",4.367486666666666],PARAMETER["Standard_Parallel_1",49.8333339],PARAMETER["Standard_Parallel_2",51.16666733333333],PARAMETER["Latitude_Of_Origin",90],PARAMETER["Azimuth",0.008138472222222222],UNIT["Meter",1]]','+proj=lcc +lat_1=49.8333339 +lat_2=51.16666733333333 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +units=m'); -- -- GCS Airy 1830 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4001,'EPSG',4001,'GEOGCS["GCS_Airy_1830",DATUM["D_Airy_1830",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=airy'); -- -- GCS Airy Modified -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4002,'EPSG',4002,'GEOGCS["GCS_Airy_Modified",DATUM["D_Airy_Modified",SPHEROID["Airy_Modified",6377340.189,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377340.189 +b=6356034.447938534'); -- -- GCS Australian -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4003,'EPSG',4003,'GEOGCS["GCS_Australian",DATUM["D_Australian",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=aust_SA'); -- -- GCS Bessel 1841 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4004,'EPSG',4004,'GEOGCS["GCS_Bessel_1841",DATUM["D_Bessel_1841",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Bessel Modified -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4005,'EPSG',4005,'GEOGCS["GCS_Bessel_Modified",DATUM["D_Bessel_Modified",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377492.018 +b=6356173.508712696'); -- -- GCS Bessel Namibia -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4006,'EPSG',4006,'GEOGCS["GCS_Bessel_Namibia",DATUM["D_Bessel_Namibia",SPHEROID["Bessel_Namibia",6377483.865,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bess_nam'); -- -- GCS Clarke 1858 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4007,'EPSG',4007,'GEOGCS["GCS_Clarke_1858",DATUM["D_Clarke_1858",SPHEROID["Clarke_1858",6378293.639,294.260676369]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378293.639 +b=6356617.98149216'); -- -- GCS Clarke 1866 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4008,'EPSG',4008,'GEOGCS["GCS_Clarke_1866",DATUM["D_Clarke_1866",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Clarke 1866 Michigan -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4009,'EPSG',4009,'GEOGCS["GCS_Clarke_1866_Michigan",DATUM["D_Clarke_1866_Michigan",SPHEROID["Clarke_1866_Michigan",6378450.047,294.978684677]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378450.047 +b=6356826.620025999'); -- -- GCS Clarke 1880 Benoit -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4010,'EPSG',4010,'GEOGCS["GCS_Clarke_1880_Benoit",DATUM["D_Clarke_1880_Benoit",SPHEROID["Clarke_1880_Benoit",6378300.79,293.466234571]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378300.79 +b=6356566.430000036'); -- -- GCS Clarke 1880 IGN -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4011,'EPSG',4011,'GEOGCS["GCS_Clarke_1880_IGN",DATUM["D_Clarke_1880_IGN",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Clarke 1880 RGS -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4012,'EPSG',4012,'GEOGCS["GCS_Clarke_1880_RGS",DATUM["D_Clarke_1880_RGS",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Clarke 1880 Arc -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4013,'EPSG',4013,'GEOGCS["GCS_Clarke_1880_Arc",DATUM["D_Clarke_1880_Arc",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.145 +b=6356514.966395495'); -- -- GCS Clarke 1880 SGA -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4014,'EPSG',4014,'GEOGCS["GCS_Clarke_1880_SGA",DATUM["D_Clarke_1880_SGA",SPHEROID["Clarke_1880_SGA",6378249.2,293.46598]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.996941779'); -- -- GCS Everest def 1967 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4016,'EPSG',4016,'GEOGCS["GCS_Everest_def_1967",DATUM["D_Everest_Def_1967",SPHEROID["Everest_Definition_1967",6377298.556,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=evrstSS'); -- -- GCS Everest Modified -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4018,'EPSG',4018,'GEOGCS["GCS_Everest_Modified",DATUM["D_Everest_Modified",SPHEROID["Everest_1830_Modified",6377304.063,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377304.063 +b=6356103.038993155'); -- -- GCS GRS 1980 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4019,'EPSG',4019,'GEOGCS["GCS_GRS_1980",DATUM["D_GRS_1980",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS Helmert 1906 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4020,'EPSG',4020,'GEOGCS["GCS_Helmert_1906",DATUM["D_Helmert_1906",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=helmert'); -- -- GCS Indonesian -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4021,'EPSG',4021,'GEOGCS["GCS_Indonesian",DATUM["D_Indonesian",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378160 +b=6356774.50408554'); -- -- GCS International 1924 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4022,'EPSG',4022,'GEOGCS["GCS_International_1924",DATUM["D_International_1924",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS International 1967 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4023,'ESRI',4023,'GEOGCS["GCS_International_1967",DATUM["D_International_1967",SPHEROID["International_1967",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=aust_SA'); -- -- GCS Krasovsky 1940 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4024,'EPSG',4024,'GEOGCS["GCS_Krasovsky_1940",DATUM["D_Krasovsky_1940",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=krass'); -- -- GCS NWL 9D -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4025,'EPSG',4025,'GEOGCS["GCS_NWL_9D",DATUM["D_NWL_9D",SPHEROID["NWL_9D",6378145,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS66'); -- -- GCS Plessis 1817 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4027,'EPSG',4027,'GEOGCS["GCS_Plessis_1817",DATUM["D_Plessis_1817",SPHEROID["Plessis_1817",6376523,308.64]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6376523 +b=6355862.933255573'); -- -- GCS Struve 1860 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4028,'EPSG',4028,'GEOGCS["GCS_Struve_1860",DATUM["D_Struve_1860",SPHEROID["Struve_1860",6378298.3,294.73]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378298.3 +b=6356657.142669562'); -- -- GCS War Office -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4029,'EPSG',4029,'GEOGCS["GCS_War_Office",DATUM["D_War_Office",SPHEROID["War_Office",6378300.583,296]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378300.583 +b=6356752.270219594'); -- -- GCS GEM 10C -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4031,'EPSG',4031,'GEOGCS["GCS_GEM_10C",DATUM["D_GEM_10C",SPHEROID["GEM_10C",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS OSU 86F -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4032,'EPSG',4032,'GEOGCS["GCS_OSU_86F",DATUM["D_OSU_86F",SPHEROID["OSU_86F",6378136.2,298.25722]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378136.2 +b=6356751.516671966'); -- -- GCS OSU 91A -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4033,'EPSG',4033,'GEOGCS["GCS_OSU_91A",DATUM["D_OSU_91A",SPHEROID["OSU_91A",6378136.3,298.25722]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378136.3 +b=6356751.616336684'); -- -- GCS Clarke 1880 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4034,'EPSG',4034,'GEOGCS["GCS_Clarke_1880",DATUM["D_Clarke_1880",SPHEROID["Clarke_1880",6378249.138,293.466307656]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.138 +b=6356514.959419348'); -- -- GCS Sphere -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4035,'EPSG',4035,'GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6371000 +b=6371000'); -- -- GCS GRS 1967 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4036,'EPSG',4036,'GEOGCS["GCS_GRS_1967",DATUM["D_GRS_1967",SPHEROID["GRS_1967",6378160,298.247167427]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS67'); -- -- GCS Everest 1830 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4042,'EPSG',4042,'GEOGCS["GCS_Everest_1830",DATUM["D_Everest_1830",SPHEROID["Everest_1830",6377299.36,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377299.36 +b=6356098.35162804'); -- -- GCS Everest def 1962 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4044,'EPSG',4044,'GEOGCS["GCS_Everest_def_1962",DATUM["D_Everest_Def_1962",SPHEROID["Everest_Definition_1962",6377301.243,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377301.243 +b=6356100.230165385'); -- -- GCS Everest def 1975 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4045,'EPSG',4045,'GEOGCS["GCS_Everest_def_1975",DATUM["D_Everest_Def_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377299.151 +b=6356098.145120132'); -- -- GCS Greek -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4120,'EPSG',4120,'GEOGCS["GCS_Greek",DATUM["D_Greek",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS GGRS 1987 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4121,'EPSG',4121,'GEOGCS["GCS_GGRS_1987",DATUM["D_GGRS_1987",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS ATS 1977 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4122,'EPSG',4122,'GEOGCS["GCS_ATS_1977",DATUM["D_ATS_1977",SPHEROID["ATS_1977",6378135,298.257]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378135 +b=6356750.304921594'); -- -- GCS KKJ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4123,'EPSG',4123,'GEOGCS["GCS_KKJ",DATUM["D_KKJ",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS RT 1990 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4124,'EPSG',4124,'GEOGCS["GCS_RT_1990",DATUM["D_RT_1990",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Samboja -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4125,'EPSG',4125,'GEOGCS["GCS_Samboja",DATUM["D_Samboja",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS LKS 1994 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4126,'EPSG',4126,'GEOGCS["GCS_LKS_1994",DATUM["D_Lithuania_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS Tete -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4127,'EPSG',4127,'GEOGCS["GCS_Tete",DATUM["D_Tete",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Madzansua -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4128,'EPSG',4128,'GEOGCS["GCS_Madzansua",DATUM["D_Madzansua",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Observatario -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4129,'EPSG',4129,'GEOGCS["GCS_Observatario",DATUM["D_Observatario",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Moznet -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4130,'EPSG',4130,'GEOGCS["GCS_Moznet",DATUM["D_Moznet",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS84'); -- -- GCS Indian 1960 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4131,'EPSG',4131,'GEOGCS["GCS_Indian_1960",DATUM["D_Indian_1960",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377276.345 +b=6356075.413140239'); -- -- GCS FD 1958 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4132,'EPSG',4132,'GEOGCS["GCS_FD_1958",DATUM["D_FD_1958",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Estonia 1992 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4133,'EPSG',4133,'GEOGCS["GCS_Estonia_1992",DATUM["D_Estonia_1992",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS PDO 1993 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4134,'EPSG',4134,'GEOGCS["GCS_PDO_1993",DATUM["D_PDO_1993",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Old Hawaiian -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4135,'EPSG',4135,'GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS St Lawrence Island -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4136,'EPSG',4136,'GEOGCS["GCS_St_Lawrence_Island",DATUM["D_St_Lawrence_Island",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS St Paul Island -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4137,'EPSG',4137,'GEOGCS["GCS_St_Paul_Island",DATUM["D_St_Paul_Island",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS St George Island -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4138,'EPSG',4138,'GEOGCS["GCS_St_George_Island",DATUM["D_St_George_Island",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Puerto Rico -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4139,'EPSG',4139,'GEOGCS["GCS_Puerto_Rico",DATUM["D_Puerto_Rico",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS North American 1983 CSRS98 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4140,'EPSG',4140,'GEOGCS["GCS_North_American_1983_CSRS98",DATUM["D_North_American_1983_CSRS98",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS Israel -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4141,'EPSG',4141,'GEOGCS["GCS_Israel",DATUM["D_Israel",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS Locodjo 1965 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4142,'EPSG',4142,'GEOGCS["GCS_Locodjo_1965",DATUM["D_Locodjo_1965",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Abidjan 1987 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4143,'EPSG',4143,'GEOGCS["GCS_Abidjan_1987",DATUM["D_Abidjan_1987",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Kalianpur 1937 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4144,'EPSG',4144,'GEOGCS["GCS_Kalianpur_1937",DATUM["D_Kalianpur_1937",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377276.345 +b=6356075.413140239'); -- -- GCS Kalianpur 1962 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4145,'EPSG',4145,'GEOGCS["GCS_Kalianpur_1962",DATUM["D_Kalianpur_1962",SPHEROID["Everest_Definition_1962",6377301.243,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377301.243 +b=6356100.230165385'); -- -- GCS Kalianpur 1975 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4146,'EPSG',4146,'GEOGCS["GCS_Kalianpur_1975",DATUM["D_Kalianpur_1975",SPHEROID["Everest_Definition_1975",6377299.151,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377299.151 +b=6356098.145120132'); -- -- GCS Hanoi 1972 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4147,'EPSG',4147,'GEOGCS["GCS_Hanoi_1972",DATUM["D_Hanoi_1972",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=krass'); -- -- GCS Hartebeesthoek 1994 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4148,'EPSG',4148,'GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS84'); -- -- GCS CH1903 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4149,'EPSG',4149,'GEOGCS["GCS_CH1903",DATUM["D_CH1903",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS CH1903+ -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4150,'EPSG',4150,'GEOGCS["GCS_CH1903+",DATUM["D_CH1903+",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Swiss TRF 1995 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4151,'EPSG',4151,'GEOGCS["GCS_Swiss_TRF_1995",DATUM["D_Swiss_TRF_1995",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS North American 1983 HARN -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4152,'EPSG',4152,'GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS Rassadiran -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4153,'EPSG',4153,'GEOGCS["GCS_Rassadiran",DATUM["D_Rassadiran",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS European 1950 ED77 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4154,'EPSG',4154,'GEOGCS["GCS_European_1950_ED77",DATUM["D_European_1950_ED77",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Dabola -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4155,'ESRI',4155,'GEOGCS["GCS_Dabola",DATUM["D_Dabola",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS S JTSK -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4156,'ESRI',4156,'GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Bissau -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4165,'ESRI',4165,'GEOGCS["GCS_Bissau",DATUM["D_Bissau",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Pulkovo 1995 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4200,'EPSG',4200,'GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=krass'); -- -- GCS Adindan -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4201,'EPSG',4201,'GEOGCS["GCS_Adindan",DATUM["D_Adindan",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Australian 1966 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4202,'EPSG',4202,'GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=aust_SA'); -- -- GCS Australian 1984 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4203,'EPSG',4203,'GEOGCS["GCS_Australian_1984",DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=aust_SA'); -- -- GCS Ain el Abd 1970 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4204,'EPSG',4204,'GEOGCS["GCS_Ain_el_Abd_1970",DATUM["D_Ain_el_Abd_1970",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Afgooye -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4205,'EPSG',4205,'GEOGCS["GCS_Afgooye",DATUM["D_Afgooye",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=krass'); -- -- GCS Agadez -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4206,'EPSG',4206,'GEOGCS["GCS_Agadez",DATUM["D_Agadez",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Lisbon -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4207,'EPSG',4207,'GEOGCS["GCS_Lisbon",DATUM["D_Lisbon",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Aratu -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4208,'EPSG',4208,'GEOGCS["GCS_Aratu",DATUM["D_Aratu",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Arc 1950 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4209,'EPSG',4209,'GEOGCS["GCS_Arc_1950",DATUM["D_Arc_1950",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.145 +b=6356514.966395495'); -- -- GCS Arc 1960 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4210,'EPSG',4210,'GEOGCS["GCS_Arc_1960",DATUM["D_Arc_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Batavia -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4211,'EPSG',4211,'GEOGCS["GCS_Batavia",DATUM["D_Batavia",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Barbados 1938 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4212,'EPSG',4212,'GEOGCS["GCS_Barbados_1938",DATUM["D_Barbados_1938",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Beduaram -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4213,'EPSG',4213,'GEOGCS["GCS_Beduaram",DATUM["D_Beduaram",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Beijing 1954 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4214,'EPSG',4214,'GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=krass'); -- -- GCS Belge 1950 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4215,'EPSG',4215,'GEOGCS["GCS_Belge_1950",DATUM["D_Belge_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Bermuda 1957 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4216,'EPSG',4216,'GEOGCS["GCS_Bermuda_1957",DATUM["D_Bermuda_1957",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Bern 1898 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4217,'ESRI',4217,'GEOGCS["GCS_Bern_1898",DATUM["D_Bern_1898",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Bogota -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4218,'EPSG',4218,'GEOGCS["GCS_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Bukit Rimpah -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4219,'EPSG',4219,'GEOGCS["GCS_Bukit_Rimpah",DATUM["D_Bukit_Rimpah",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Camacupa -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4220,'EPSG',4220,'GEOGCS["GCS_Camacupa",DATUM["D_Camacupa",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Campo Inchauspe -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4221,'EPSG',4221,'GEOGCS["GCS_Campo_Inchauspe",DATUM["D_Campo_Inchauspe",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Cape -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4222,'EPSG',4222,'GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.145 +b=6356514.966395495'); -- -- GCS Carthage -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4223,'EPSG',4223,'GEOGCS["GCS_Carthage",DATUM["D_Carthage",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Chua -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4224,'EPSG',4224,'GEOGCS["GCS_Chua",DATUM["D_Chua",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Corrego Alegre -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4225,'EPSG',4225,'GEOGCS["GCS_Corrego_Alegre",DATUM["D_Corrego_Alegre",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Cote d Ivoire -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4226,'EPSG',4226,'GEOGCS["GCS_Cote_d_Ivoire",DATUM["D_Cote_d_Ivoire",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Deir ez Zor -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4227,'EPSG',4227,'GEOGCS["GCS_Deir_ez_Zor",DATUM["D_Deir_ez_Zor",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Douala -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4228,'EPSG',4228,'GEOGCS["GCS_Douala",DATUM["D_Douala",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Egypt 1907 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4229,'EPSG',4229,'GEOGCS["GCS_Egypt_1907",DATUM["D_Egypt_1907",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=helmert'); -- -- GCS European 1950 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4230,'EPSG',4230,'GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS European 1987 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4231,'EPSG',4231,'GEOGCS["GCS_European_1987",DATUM["D_European_1987",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Fahud -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4232,'EPSG',4232,'GEOGCS["GCS_Fahud",DATUM["D_Fahud",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Gandajika 1970 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4233,'EPSG',4233,'GEOGCS["GCS_Gandajika_1970",DATUM["D_Gandajika_1970",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Garoua -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4234,'EPSG',4234,'GEOGCS["GCS_Garoua",DATUM["D_Garoua",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Guyane Francaise -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4235,'EPSG',4235,'GEOGCS["GCS_Guyane_Francaise",DATUM["D_Guyane_Francaise",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Hu Tzu Shan -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4236,'EPSG',4236,'GEOGCS["GCS_Hu_Tzu_Shan",DATUM["D_Hu_Tzu_Shan",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Hungarian 1972 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4237,'EPSG',4237,'GEOGCS["GCS_Hungarian_1972",DATUM["D_Hungarian_1972",SPHEROID["GRS_1967",6378160,298.247167427]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS67'); -- -- GCS Indonesian 1974 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4238,'EPSG',4238,'GEOGCS["GCS_Indonesian_1974",DATUM["D_Indonesian_1974",SPHEROID["Indonesian",6378160,298.247]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378160 +b=6356774.50408554'); -- -- GCS Indian 1954 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4239,'EPSG',4239,'GEOGCS["GCS_Indian_1954",DATUM["D_Indian_1954",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377276.345 +b=6356075.413140239'); -- -- GCS Indian 1975 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4240,'EPSG',4240,'GEOGCS["GCS_Indian_1975",DATUM["D_Indian_1975",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377276.345 +b=6356075.413140239'); -- -- GCS Jamaica 1875 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4241,'EPSG',4241,'GEOGCS["GCS_Jamaica_1875",DATUM["D_Jamaica_1875",SPHEROID["Clarke_1880",6378249.138,293.466307656]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.138 +b=6356514.959419348'); -- -- GCS Jamaica 1969 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4242,'EPSG',4242,'GEOGCS["GCS_Jamaica_1969",DATUM["D_Jamaica_1969",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Kalianpur 1880 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4243,'EPSG',4243,'GEOGCS["GCS_Kalianpur_1880",DATUM["D_Kalianpur_1880",SPHEROID["Everest_1830",6377299.36,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377299.36 +b=6356098.35162804'); -- -- GCS Kandawala -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4244,'EPSG',4244,'GEOGCS["GCS_Kandawala",DATUM["D_Kandawala",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377276.345 +b=6356075.413140239'); -- -- GCS Kertau -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4245,'EPSG',4245,'GEOGCS["GCS_Kertau",DATUM["D_Kertau",SPHEROID["Everest_1830_Modified",6377304.063,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377304.063 +b=6356103.038993155'); -- -- GCS Kuwait Oil Company -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4246,'EPSG',4246,'GEOGCS["GCS_Kuwait_Oil_Company",DATUM["D_Kuwait_Oil_Company",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS La Canoa -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4247,'EPSG',4247,'GEOGCS["GCS_La_Canoa",DATUM["D_La_Canoa",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Provisional S American 1956 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4248,'EPSG',4248,'GEOGCS["GCS_Provisional_S_American_1956",DATUM["D_Provisional_S_American_1956",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Lake -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4249,'EPSG',4249,'GEOGCS["GCS_Lake",DATUM["D_Lake",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Leigon -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4250,'EPSG',4250,'GEOGCS["GCS_Leigon",DATUM["D_Leigon",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Liberia 1964 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4251,'EPSG',4251,'GEOGCS["GCS_Liberia_1964",DATUM["D_Liberia_1964",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Lome -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4252,'EPSG',4252,'GEOGCS["GCS_Lome",DATUM["D_Lome",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Luzon 1911 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4253,'EPSG',4253,'GEOGCS["GCS_Luzon_1911",DATUM["D_Luzon_1911",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Hito XVIII 1963 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4254,'EPSG',4254,'GEOGCS["GCS_Hito_XVIII_1963",DATUM["D_Hito_XVIII_1963",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Herat North -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4255,'EPSG',4255,'GEOGCS["GCS_Herat_North",DATUM["D_Herat_North",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Mahe 1971 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4256,'EPSG',4256,'GEOGCS["GCS_Mahe_1971",DATUM["D_Mahe_1971",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Makassar -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4257,'EPSG',4257,'GEOGCS["GCS_Makassar",DATUM["D_Makassar",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS ETRF 1989 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4258,'EPSG',4258,'GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS84'); -- -- GCS Malongo 1987 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4259,'EPSG',4259,'GEOGCS["GCS_Malongo_1987",DATUM["D_Malongo_1987",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Manoca -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4260,'EPSG',4260,'GEOGCS["GCS_Manoca",DATUM["D_Manoca",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Merchich -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4261,'EPSG',4261,'GEOGCS["GCS_Merchich",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Massawa -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4262,'EPSG',4262,'GEOGCS["GCS_Massawa",DATUM["D_Massawa",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Minna -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4263,'EPSG',4263,'GEOGCS["GCS_Minna",DATUM["D_Minna",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Mhast -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4264,'EPSG',4264,'GEOGCS["GCS_Mhast",DATUM["D_Mhast",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Monte Mario -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4265,'EPSG',4265,'GEOGCS["GCS_Monte_Mario",DATUM["D_Monte_Mario",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Mporaloko -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4266,'EPSG',4266,'GEOGCS["GCS_Mporaloko",DATUM["D_Mporaloko",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS North American 1927 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4267,'EPSG',4267,'GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66 +datum=NAD27'); -- -- GCS North American Michigan -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4268,'EPSG',4268,'GEOGCS["GCS_North_American_Michigan",DATUM["D_North_American_Michigan",SPHEROID["Clarke_1866_Michigan",6378450.047,294.978684677]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378450.047 +b=6356826.620025999'); -- -- GCS North American 1983 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4269,'EPSG',4269,'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80 +datum=NAD83'); -- -- GCS Nahrwan 1967 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4270,'EPSG',4270,'GEOGCS["GCS_Nahrwan_1967",DATUM["D_Nahrwan_1967",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Naparima 1972 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4271,'EPSG',4271,'GEOGCS["GCS_Naparima_1972",DATUM["D_Naparima_1972",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS New Zealand 1949 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4272,'EPSG',4272,'GEOGCS["GCS_New_Zealand_1949",DATUM["D_New_Zealand_1949",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS NGO 1948 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4273,'EPSG',4273,'GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377492.018 +b=6356173.508712696'); -- -- GCS Datum 73 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4274,'EPSG',4274,'GEOGCS["GCS_Datum_73",DATUM["D_Datum_73",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS NTF -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4275,'EPSG',4275,'GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS NSWC 9Z 2 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4276,'EPSG',4276,'GEOGCS["GCS_NSWC_9Z_2",DATUM["D_NSWC_9Z_2",SPHEROID["NWL_9D",6378145,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS66'); -- -- GCS OSGB 1936 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4277,'EPSG',4277,'GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=airy'); -- -- GCS OSGB 1970 SN -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4278,'EPSG',4278,'GEOGCS["GCS_OSGB_1970_SN",DATUM["D_OSGB_1970_SN",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=airy'); -- -- GCS OS SN 1980 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4279,'EPSG',4279,'GEOGCS["GCS_OS_SN_1980",DATUM["D_OS_SN_1980",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=airy'); -- -- GCS Padang 1884 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4280,'EPSG',4280,'GEOGCS["GCS_Padang_1884",DATUM["D_Padang_1884",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Palestine 1923 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4281,'EPSG',4281,'GEOGCS["GCS_Palestine_1923",DATUM["D_Palestine_1923",SPHEROID["Clarke_1880_Benoit",6378300.79,293.466234571]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378300.79 +b=6356566.430000036'); -- -- GCS Pointe Noire -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4282,'EPSG',4282,'GEOGCS["GCS_Pointe_Noire",DATUM["D_Pointe_Noire",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS GDA 1994 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4283,'EPSG',4283,'GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS Pulkovo 1942 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4284,'EPSG',4284,'GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=krass'); -- -- GCS Qatar -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4285,'EPSG',4285,'GEOGCS["GCS_Qatar",DATUM["D_Qatar",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Qatar 1948 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4286,'EPSG',4286,'GEOGCS["GCS_Qatar_1948",DATUM["D_Qatar_1948",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=helmert'); -- -- GCS Qornoq -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4287,'EPSG',4287,'GEOGCS["GCS_Qornoq",DATUM["D_Qornoq",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Loma Quintana -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4288,'EPSG',4288,'GEOGCS["GCS_Loma_Quintana",DATUM["D_Loma_Quintana",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Amersfoort -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4289,'EPSG',4289,'GEOGCS["GCS_Amersfoort",DATUM["D_Amersfoort",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS South American 1969 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4291,'EPSG',4291,'GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=aust_SA'); -- -- GCS Sapper Hill 1943 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4292,'EPSG',4292,'GEOGCS["GCS_Sapper_Hill_1943",DATUM["D_Sapper_Hill_1943",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Schwarzeck -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4293,'EPSG',4293,'GEOGCS["GCS_Schwarzeck",DATUM["D_Schwarzeck",SPHEROID["Bessel_Namibia",6377483.865,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bess_nam'); -- -- GCS Segora -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4294,'EPSG',4294,'GEOGCS["GCS_Segora",DATUM["D_Segora",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Serindung -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4295,'EPSG',4295,'GEOGCS["GCS_Serindung",DATUM["D_Serindung",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Sudan -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4296,'EPSG',4296,'GEOGCS["GCS_Sudan",DATUM["D_Sudan",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Tananarive 1925 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4297,'EPSG',4297,'GEOGCS["GCS_Tananarive_1925",DATUM["D_Tananarive_1925",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Timbalai 1948 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4298,'EPSG',4298,'GEOGCS["GCS_Timbalai_1948",DATUM["D_Timbalai_1948",SPHEROID["Everest_Definition_1967",6377298.556,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=evrstSS'); -- -- GCS TM65 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4299,'EPSG',4299,'GEOGCS["GCS_TM65",DATUM["D_TM65",SPHEROID["Airy_Modified",6377340.189,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377340.189 +b=6356034.447938534'); -- -- GCS TM75 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4300,'EPSG',4300,'GEOGCS["GCS_TM75",DATUM["D_TM75",SPHEROID["Airy_Modified",6377340.189,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377340.189 +b=6356034.447938534'); -- -- GCS Tokyo -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4301,'EPSG',4301,'GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Trinidad 1903 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4302,'EPSG',4302,'GEOGCS["GCS_Trinidad_1903",DATUM["D_Trinidad_1903",SPHEROID["Clarke_1858",6378293.639,294.260676369]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378293.639 +b=6356617.98149216'); -- -- GCS Trucial Coast 1948 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4303,'EPSG',4303,'GEOGCS["GCS_Trucial_Coast_1948",DATUM["D_Trucial_Coast_1948",SPHEROID["Helmert_1906",6378200,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=helmert'); -- -- GCS Voirol 1875 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4304,'EPSG',4304,'GEOGCS["GCS_Voirol_1875",DATUM["D_Voirol_1875",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Voirol Unifie 1960 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4305,'EPSG',4305,'GEOGCS["GCS_Voirol_Unifie_1960",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Grad",0.015707963267948967]]','+proj=longlat +ellps=clrk80'); -- -- GCS Bern 1938 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4306,'EPSG',4306,'GEOGCS["GCS_Bern_1938",DATUM["D_Bern_1938",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Nord Sahara 1959 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4307,'EPSG',4307,'GEOGCS["GCS_Nord_Sahara_1959",DATUM["D_Nord_Sahara_1959",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS RT38 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4308,'EPSG',4308,'GEOGCS["GCS_RT38",DATUM["D_Stockholm_1938",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Yacare -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4309,'EPSG',4309,'GEOGCS["GCS_Yacare",DATUM["D_Yacare",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Yoff -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4310,'EPSG',4310,'GEOGCS["GCS_Yoff",DATUM["D_Yoff",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Zanderij -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4311,'EPSG',4311,'GEOGCS["GCS_Zanderij",DATUM["D_Zanderij",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS MGI -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4312,'EPSG',4312,'GEOGCS["GCS_MGI",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Belge 1972 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4313,'EPSG',4313,'GEOGCS["GCS_Belge_1972",DATUM["D_Belge_1972",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Deutsche Hauptdreiecksnetz -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4314,'EPSG',4314,'GEOGCS["GCS_Deutsche_Hauptdreiecksnetz",DATUM["D_Deutsche_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Conakry 1905 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4315,'EPSG',4315,'GEOGCS["GCS_Conakry_1905",DATUM["D_Conakry_1905",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Dealul Piscului 1933 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4316,'EPSG',4316,'GEOGCS["GCS_Dealul_Piscului_1933",DATUM["D_Dealul_Piscului_1933",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Dealul Piscului 1970 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4317,'EPSG',4317,'GEOGCS["GCS_Dealul_Piscului_1970",DATUM["D_Dealul_Piscului_1970",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=krass'); -- -- GCS NGN -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4318,'EPSG',4318,'GEOGCS["GCS_NGN",DATUM["D_NGN",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS84'); -- -- GCS KUDAMS -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4319,'EPSG',4319,'GEOGCS["GCS_KUDAMS",DATUM["D_Kuwait_Utility",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS WGS 1972 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4322,'EPSG',4322,'GEOGCS["GCS_WGS_1972",DATUM["D_WGS_1972",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS72'); -- -- GCS WGS 1972 BE -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4324,'EPSG',4324,'GEOGCS["GCS_WGS_1972_BE",DATUM["D_WGS_1972_BE",SPHEROID["WGS_1972",6378135,298.26]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS72'); -- -- GCS WGS 1984 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4326,'EPSG',4326,'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS84 +datum=WGS84'); -- -- GCS Montserrat 1958 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4404,'ESRI',4404,'GEOGCS["GCS_Montserrat_1958",DATUM["D_Montserrat_1958",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Anguilla 1957 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4600,'EPSG',4600,'GEOGCS["GCS_Anguilla_1957",DATUM["D_Anguilla_1957",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Antigua 1943 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4601,'EPSG',4601,'GEOGCS["GCS_Antigua_1943",DATUM["D_Antigua_1943",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Dominica 1945 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4602,'EPSG',4602,'GEOGCS["GCS_Dominica_1945",DATUM["D_Dominica_1945",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Grenada 1953 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4603,'EPSG',4603,'GEOGCS["GCS_Grenada_1953",DATUM["D_Grenada_1953",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS St Kitts 1955 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4605,'EPSG',4605,'GEOGCS["GCS_St_Kitts_1955",DATUM["D_St_Kitts_1955",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS St Lucia 1955 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4606,'EPSG',4606,'GEOGCS["GCS_St_Lucia_1955",DATUM["D_St_Lucia_1955",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS St Vincent 1945 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4607,'EPSG',4607,'GEOGCS["GCS_St_Vincent_1945",DATUM["D_St_Vincent_1945",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS NAD 1927 Definition 1976 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4608,'EPSG',4608,'GEOGCS["GCS_NAD_1927_Definition_1976",DATUM["D_NAD_1927_Definition_1976",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS NAD 1927 CGQ77 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4609,'EPSG',4609,'GEOGCS["GCS_NAD_1927_CGQ77",DATUM["D_NAD_1927_CGQ77",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Bern 1898 Bern -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4801,'EPSG',4801,'GEOGCS["GCS_Bern_1898_Bern",DATUM["D_Bern_1898",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Bern",7.439583333333333],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel +pm=7.439583333333333'); -- -- GCS Bogota Bogota -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4802,'EPSG',4802,'GEOGCS["GCS_Bogota_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388,297]],PRIMEM["Bogota",-74.08091666666667],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl +pm=-74.08091666666667'); -- -- GCS Lisbon Lisbon -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4803,'EPSG',4803,'GEOGCS["GCS_Lisbon_Lisbon",DATUM["D_Lisbon",SPHEROID["International_1924",6378388,297]],PRIMEM["Lisbon",-9.131906111111112],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl +pm=-9.131906111111112'); -- -- GCS Makassar Jakarta -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4804,'EPSG',4804,'GEOGCS["GCS_Makassar_Jakarta",DATUM["D_Makassar",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Jakarta",106.8077194444444],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel +pm=106.8077194444444'); -- -- GCS MGI Ferro -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4805,'EPSG',4805,'GEOGCS["GCS_MGI_Ferro",DATUM["D_MGI",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Ferro",-17.66666666666667],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel +pm=-17.66666666666667'); -- -- GCS Monte Mario Rome -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4806,'EPSG',4806,'GEOGCS["GCS_Monte_Mario_Rome",DATUM["D_Monte_Mario",SPHEROID["International_1924",6378388,297]],PRIMEM["Rome",12.45233333333333],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl +pm=12.45233333333333'); -- -- GCS NTF Paris -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4807,'EPSG',4807,'GEOGCS["GCS_NTF_Paris",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]]','+proj=longlat +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667'); -- -- GCS Padang 1884 Jakarta -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4808,'EPSG',4808,'GEOGCS["GCS_Padang_1884_Jakarta",DATUM["D_Padang_1884",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Jakarta",106.8077194444444],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel +pm=106.8077194444444'); -- -- GCS Belge 1950 Brussels -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4809,'EPSG',4809,'GEOGCS["GCS_Belge_1950_Brussels",DATUM["D_Belge_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Brussels",4.367975],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl +pm=4.367975'); -- -- GCS Tananarive 1925 Paris -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4810,'EPSG',4810,'GEOGCS["GCS_Tananarive_1925_Paris",DATUM["D_Tananarive_1925",SPHEROID["International_1924",6378388,297]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]]','+proj=longlat +ellps=intl +pm=2.337229166666667'); -- -- GCS Voirol 1875 Paris -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4811,'EPSG',4811,'GEOGCS["GCS_Voirol_1875_Paris",DATUM["D_Voirol_1875",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]]','+proj=longlat +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667'); -- -- GCS Voirol Unifie 1960 Paris -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4812,'EPSG',4812,'GEOGCS["GCS_Voirol_Unifie_1960_Paris",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]]','+proj=longlat +ellps=clrk80 +pm=2.337229166666667'); -- -- GCS Batavia Jakarta -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4813,'EPSG',4813,'GEOGCS["GCS_Batavia_Jakarta",DATUM["D_Batavia",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Jakarta",106.8077194444444],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel +pm=106.8077194444444'); -- -- GCS RT38 Stockholm -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4814,'EPSG',4814,'GEOGCS["GCS_RT38_Stockholm",DATUM["D_Stockholm_1938",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Stockholm",18.05827777777778],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel +pm=18.05827777777778'); -- -- GCS Greek Athens -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4815,'EPSG',4815,'GEOGCS["GCS_Greek_Athens",DATUM["D_Greek",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Athens",23.7163375],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel +pm=23.7163375'); -- -- GCS Carthage Paris -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4816,'EPSG',4816,'GEOGCS["GCS_Carthage_Paris",DATUM["D_Carthage",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]]','+proj=longlat +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667'); -- -- GCS NGO 1948 Oslo -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4817,'EPSG',4817,'GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377492.018 +b=6356173.508712696 +pm=10.72291666666667'); -- -- GCS S JTSK Ferro -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4818,'ESRI',4818,'GEOGCS["GCS_S_JTSK_Ferro",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Ferro",-17.66666666666667],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel +pm=-17.66666666666667'); -- -- GCS ATF Paris -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4901,'EPSG',4901,'GEOGCS["GCS_ATF_Paris",DATUM["D_ATF",SPHEROID["Plessis_1817",6376523,308.64]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]]','+proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.337229166666667'); -- -- GCS Nord de Guerre Paris -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4902,'EPSG',4902,'GEOGCS["GCS_Nord_de_Guerre_Paris",DATUM["D_Nord_de_Guerre",SPHEROID["Plessis_1817",6376523,308.64]],PRIMEM["Paris",2.337229166666667],UNIT["Grad",0.015707963267948967]]','+proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.337229166666667'); -- -- GCS Madrid 1870 Madrid -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (4903,'EPSG',4903,'GEOGCS["GCS_Madrid_1870_Madrid",DATUM["D_Madrid_1870",SPHEROID["Struve_1860",6378298.3,294.73]],PRIMEM["Madrid",-3.687938888888889],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378298.3 +b=6356657.142669562 +pm=-3.687938888888889'); -- -- GCS WGS 1966 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37001,'ESRI',37001,'GEOGCS["GCS_WGS_1966",DATUM["D_WGS_1966",SPHEROID["WGS_1966",6378145,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=WGS66'); -- -- GCS Fischer 1960 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37002,'ESRI',37002,'GEOGCS["GCS_Fischer_1960",DATUM["D_Fischer_1960",SPHEROID["Fischer_1960",6378166,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378166 +b=6356784.283607107'); -- -- GCS Fischer 1968 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37003,'ESRI',37003,'GEOGCS["GCS_Fischer_1968",DATUM["D_Fischer_1968",SPHEROID["Fischer_1968",6378150,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378150 +b=6356768.337244385'); -- -- GCS Fischer Modified -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37004,'ESRI',37004,'GEOGCS["GCS_Fischer_Modified",DATUM["D_Fischer_Modified",SPHEROID["Fischer_Modified",6378155,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=fschr60m'); -- -- GCS Hough 1960 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37005,'ESRI',37005,'GEOGCS["GCS_Hough_1960",DATUM["D_Hough_1960",SPHEROID["Hough_1960",6378270,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378270 +b=6356794.343434343'); -- -- GCS Everest Modified 1969 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37006,'ESRI',37006,'GEOGCS["GCS_Everest_Modified_1969",DATUM["D_Everest_Modified_1969",SPHEROID["Everest_Modified_1969",6377295.664,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377295.664 +b=6356094.667915204'); -- -- GCS Walbeck -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37007,'ESRI',37007,'GEOGCS["GCS_Walbeck",DATUM["D_Walbeck",SPHEROID["Walbeck",6376896,302.78]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6376896 +b=6355834.846687363'); -- -- GCS Sphere ARC INFO -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37008,'ESRI',37008,'GEOGCS["GCS_Sphere_ARC_INFO",DATUM["D_Sphere_ARC_INFO",SPHEROID["Sphere_ARC_INFO",6370997,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6370997 +b=6370997'); -- -- GCS European 1979 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37201,'ESRI',37201,'GEOGCS["GCS_European_1979",DATUM["D_European_1979",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Everest Bangladesh -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37202,'ESRI',37202,'GEOGCS["GCS_Everest_Bangladesh",DATUM["D_Everest_Bangladesh",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377276.345 +b=6356075.413140239'); -- -- GCS Everest India Nepal -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37203,'ESRI',37203,'GEOGCS["GCS_Everest_India_Nepal",DATUM["D_Everest_India_Nepal",SPHEROID["Everest_Definition_1962",6377301.243,300.8017255]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6377301.243 +b=6356100.230165385'); -- -- GCS Hjorsey 1955 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37204,'ESRI',37204,'GEOGCS["GCS_Hjorsey_1955",DATUM["D_Hjorsey_1955",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Hong Kong 1963 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37205,'ESRI',37205,'GEOGCS["GCS_Hong_Kong_1963",DATUM["D_Hong_Kong_1963",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Oman -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37206,'ESRI',37206,'GEOGCS["GCS_Oman",DATUM["D_Oman",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS South Asia Singapore -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37207,'ESRI',37207,'GEOGCS["GCS_South_Asia_Singapore",DATUM["D_South_Asia_Singapore",SPHEROID["Fischer_Modified",6378155,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=fschr60m'); -- -- GCS Ayabelle -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37208,'ESRI',37208,'GEOGCS["GCS_Ayabelle",DATUM["D_Ayabelle",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Point 58 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37211,'ESRI',37211,'GEOGCS["GCS_Point_58",DATUM["D_Point_58",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Beacon E 1945 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37212,'ESRI',37212,'GEOGCS["GCS_Beacon_E_1945",DATUM["D_Beacon_E_1945",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Tern Island 1961 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37213,'ESRI',37213,'GEOGCS["GCS_Tern_Island_1961",DATUM["D_Tern_Island_1961",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Astro 1952 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37214,'ESRI',37214,'GEOGCS["GCS_Astro_1952",DATUM["D_Astro_1952",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Bellevue IGN -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37215,'ESRI',37215,'GEOGCS["GCS_Bellevue_IGN",DATUM["D_Bellevue_IGN",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Canton 1966 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37216,'ESRI',37216,'GEOGCS["GCS_Canton_1966",DATUM["D_Canton_1966",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Chatham Island 1971 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37217,'ESRI',37217,'GEOGCS["GCS_Chatham_Island_1971",DATUM["D_Chatham_Island_1971",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS DOS 1968 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37218,'ESRI',37218,'GEOGCS["GCS_DOS_1968",DATUM["D_DOS_1968",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Easter Island 1967 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37219,'ESRI',37219,'GEOGCS["GCS_Easter_Island_1967",DATUM["D_Easter_Island_1967",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Guam 1963 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37220,'ESRI',37220,'GEOGCS["GCS_Guam_1963",DATUM["D_Guam_1963",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS GUX 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37221,'ESRI',37221,'GEOGCS["GCS_GUX_1",DATUM["D_GUX_1",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Johnston Island 1961 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37222,'ESRI',37222,'GEOGCS["GCS_Johnston_Island_1961",DATUM["D_Johnston_Island_1961",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Carthage Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37223,'ESRI',37223,'GEOGCS["GCS_Carthage_Degree",DATUM["D_Carthage",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Midway 1961 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37224,'ESRI',37224,'GEOGCS["GCS_Midway_1961",DATUM["D_Midway_1961",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Pitcairn 1967 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37226,'ESRI',37226,'GEOGCS["GCS_Pitcairn_1967",DATUM["D_Pitcairn_1967",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Santo DOS 1965 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37227,'ESRI',37227,'GEOGCS["GCS_Santo_DOS_1965",DATUM["D_Santo_DOS_1965",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Viti Levu 1916 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37228,'ESRI',37228,'GEOGCS["GCS_Viti_Levu_1916",DATUM["D_Viti_Levu_1916",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Wake Eniwetok 1960 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37229,'ESRI',37229,'GEOGCS["GCS_Wake_Eniwetok_1960",DATUM["D_Wake_Eniwetok_1960",SPHEROID["Hough_1960",6378270,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378270 +b=6356794.343434343'); -- -- GCS Wake Island 1952 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37230,'ESRI',37230,'GEOGCS["GCS_Wake_Island_1952",DATUM["D_Wake_Island_1952",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Anna 1 1965 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37231,'ESRI',37231,'GEOGCS["GCS_Anna_1_1965",DATUM["D_Anna_1_1965",SPHEROID["Australian",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=aust_SA'); -- -- GCS Gan 1970 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37232,'ESRI',37232,'GEOGCS["GCS_Gan_1970",DATUM["D_Gan_1970",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS ISTS 073 1969 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37233,'ESRI',37233,'GEOGCS["GCS_ISTS_073_1969",DATUM["D_ISTS_073_1969",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Kerguelen Island 1949 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37234,'ESRI',37234,'GEOGCS["GCS_Kerguelen_Island_1949",DATUM["D_Kerguelen_Island_1949",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Reunion -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37235,'ESRI',37235,'GEOGCS["GCS_Reunion",DATUM["D_Reunion",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Ascension Island 1958 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37237,'ESRI',37237,'GEOGCS["GCS_Ascension_Island_1958",DATUM["D_Ascension_Island_1958",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS DOS 71 4 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37238,'ESRI',37238,'GEOGCS["GCS_DOS_71_4",DATUM["D_DOS_71_4",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Cape Canaveral -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37239,'ESRI',37239,'GEOGCS["GCS_Cape_Canaveral",DATUM["D_Cape_Canaveral",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Fort Thomas 1955 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37240,'ESRI',37240,'GEOGCS["GCS_Fort_Thomas_1955",DATUM["D_Fort_Thomas_1955",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Graciosa Base SW 1948 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37241,'ESRI',37241,'GEOGCS["GCS_Graciosa_Base_SW_1948",DATUM["D_Graciosa_Base_SW_1948",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS ISTS 061 1968 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37242,'ESRI',37242,'GEOGCS["GCS_ISTS_061_1968",DATUM["D_ISTS_061_1968",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS LC5 1961 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37243,'ESRI',37243,'GEOGCS["GCS_LC5_1961",DATUM["D_LC5_1961",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Observ Meteorologico 1939 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37245,'ESRI',37245,'GEOGCS["GCS_Observ_Meteorologico_1939",DATUM["D_Observ_Meteorologico_1939",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Pico de Las Nieves -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37246,'ESRI',37246,'GEOGCS["GCS_Pico_de_Las_Nieves",DATUM["D_Pico_de_Las_Nieves",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Porto Santo 1936 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37247,'ESRI',37247,'GEOGCS["GCS_Porto_Santo_1936",DATUM["D_Porto_Santo_1936",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Sao Braz -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37249,'ESRI',37249,'GEOGCS["GCS_Sao_Braz",DATUM["D_Sao_Braz",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Selvagem Grande 1938 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37250,'ESRI',37250,'GEOGCS["GCS_Selvagem_Grande_1938",DATUM["D_Selvagem_Grande_1938",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Tristan 1968 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37251,'ESRI',37251,'GEOGCS["GCS_Tristan_1968",DATUM["D_Tristan_1968",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Samoa 1962 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37252,'ESRI',37252,'GEOGCS["GCS_Samoa_1962",DATUM["D_Samoa_1962",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Camp Area -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37253,'ESRI',37253,'GEOGCS["GCS_Camp_Area",DATUM["D_Camp_Area",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Deception Island -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37254,'ESRI',37254,'GEOGCS["GCS_Deception_Island",DATUM["D_Deception_Island",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Gunung Segara -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37255,'ESRI',37255,'GEOGCS["GCS_Gunung_Segara",DATUM["D_Gunung_Segara",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS S42 Hungary -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37257,'ESRI',37257,'GEOGCS["GCS_S42_Hungary",DATUM["D_S42_Hungary",SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=krass'); -- -- GCS Kusaie 1951 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37259,'ESRI',37259,'GEOGCS["GCS_Kusaie_1951",DATUM["D_Kusaie_1951",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Alaskan Islands -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (37260,'ESRI',37260,'GEOGCS["GCS_Alaskan_Islands",DATUM["D_Alaskan_Islands",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66'); -- -- GCS Assumed Geographic 1 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104000,'ESRI',104000,'GEOGCS["GCS_Assumed_Geographic_1",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk66 +datum=NAD27'); -- -- GCS Estonia 1937 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104101,'ESRI',104101,'GEOGCS["GCS_Estonia_1937",DATUM["D_Estonia_1937",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Hermannskogel -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104102,'ESRI',104102,'GEOGCS["GCS_Hermannskogel",DATUM["D_Hermannskogel",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Sierra Leone 1960 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104103,'ESRI',104103,'GEOGCS["GCS_Sierra_Leone_1960",DATUM["D_Sierra_Leone_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- GCS Hong Kong 1980 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104104,'ESRI',104104,'GEOGCS["GCS_Hong_Kong_1980",DATUM["D_Hong_Kong_1980",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS Datum Lisboa Bessel -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104105,'ESRI',104105,'GEOGCS["GCS_Datum_Lisboa_Bessel",DATUM["D_Datum_Lisboa_Bessel",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=bessel'); -- -- GCS Datum Lisboa Hayford -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104106,'ESRI',104106,'GEOGCS["GCS_Datum_Lisboa_Hayford",DATUM["D_Datum_Lisboa_Hayford",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=intl'); -- -- GCS RGF 1993 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104107,'ESRI',104107,'GEOGCS["GCS_RGF_1993",DATUM["D_RGF_1993",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS NZGD 2000 -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104108,'ESRI',104108,'GEOGCS["GCS_NZGD_2000",DATUM["D_NZGD_2000",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=GRS80'); -- -- GCS Merchich Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104261,'ESRI',104261,'GEOGCS["GCS_Merchich_Degree",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Voirol 1875 Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104304,'ESRI',104304,'GEOGCS["GCS_Voirol_1875_Degree",DATUM["D_Voirol_1875",SPHEROID["Clarke_1880_IGN",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +a=6378249.2 +b=6356514.999904194'); -- -- GCS Voirol Unifie 1960 Degree -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (104305,'ESRI',104305,'GEOGCS["GCS_Voirol_Unifie_1960_Degree",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]','+proj=longlat +ellps=clrk80'); -- -- British Columbia Albers -- INSERT INTO "spatial_ref_sys" (srid, auth_name, auth_srid, srtext, proj4text) VALUES (42102, 'BC', 42102, 'PROJCS["BC_Albers",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["False_Easting",1000000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",-126],PARAMETER["Standard_Parallel_1",50],PARAMETER["Standard_Parallel_2",58.5],PARAMETER["Latitude_Of_Origin",45],UNIT["Meter",1]]','+proj=aea +ellps=GRS80 +datum=NAD83 +lat_0=45.0 +lon_0=-126.0 +lat_1=58.5 +lat_2=50.0 +x_0=1000000 +y_0=0'); COMMIT; postgis-0.8.1/examples/0040775000077300001440000000000010000570751014442 5ustar postgisuserspostgis-0.8.1/examples/ogc_test_suite/0040775000077300001440000000000010000570751017462 5ustar postgisuserspostgis-0.8.1/examples/ogc_test_suite/1_schema.sql0100664000077300001440000003553507645322100021677 0ustar postgisusers-- FILE: sqltsch.sql 10/01/98 -- -- 1 2 3 4 5 6 7 8 --345678901234567890123456789012345678901234567890123456789012345678901234567890 --////////////////////////////////////////////////////////////////////////////// -- -- Copyright 1998, Open GIS Consortium, Inc. -- -- The material in this document details an Open GIS Consortium Test Suite in -- accordance with a license that your organization has signed. Please refer -- to http://www.opengis.org/testing/ to obtain a copy of the general license -- (it is part of the Conformance Testing Agreement). -- --////////////////////////////////////////////////////////////////////////////// -- -- OpenGIS Simple Features for SQL (Types and Functions) Test Suite Software -- -- This file "sqltsch.sql" is part 1 of a two part standardized test -- suite in SQL script form. The other file that is required for this test -- suite, "sqltque.sql", one additional script is provided ("sqltcle.sql") that -- performs cleanup operations between test runs, and other documents that -- describe the OGC Conformance Test Program are available via the WWW at -- http://www.opengis.org/testing/index.htm -- -- NOTE CONCERNING INFORMATION ON CONFORMANCE TESTING AND THIS TEST SUITE -- ---------------------------------------------------------------------- -- -- Organizations wishing to submit product for conformance testing should -- access the above WWW site to discover the proper procedure for obtaining -- a license to use the OpenGIS(R) certification mark associated with this -- test suite. -- -- -- NOTE CONCERNING TEST SUITE ADAPTATION -- ------------------------------------- -- -- OGC recognizes that many products will have to adapt this test suite to -- make it work properly. OGC has documented the allowable adaptations within -- this test suite where possible. Other information about adaptations may be -- discovered in the Test Suite Guidelines document for this test suite. -- -- PLEASE NOTE THE OGC REQUIRES THAT ADAPTATIONS ARE FULLY DOCUMENTED USING -- LIBERAL COMMENT BLOCKS CONFORMING TO THE FOLLOWING FORMAT: -- -- -- !#@ ADAPTATION BEGIN -- explanatory text goes here -- --------------------- -- -- BEGIN ORIGINAL SQL -- --------------------- -- original sql goes here -- --------------------- -- -- END ORIGINAL SQL -- --------------------- -- -- BEGIN ADAPTED SQL -- --------------------- -- adated sql goes here -- --------------------- -- -- END ADAPTED SQL -- --------------------- -- -- !#@ ADAPTATION END -- --////////////////////////////////////////////////////////////////////////////// -- -- BEGIN TEST SUITE CODE -- --////////////////////////////////////////////////////////////////////////////// -- -- Create the neccessary feature and geometry tables(views) and metadata tables -- (views) to load and query the "Blue Lake" test data for OpenGIS Simple -- Features for SQL (Types and Functions) test. -- -- Required feature tables (views) are: -- Lakes -- Road Segments -- Divided Routes -- Buildings -- Forests -- Bridges -- Named Places -- Streams -- Ponds -- Map Neatlines -- -- Please refer to the Test Suite Guidelines for this test suite for further -- information concerning this test data. -- --////////////////////////////////////////////////////////////////////////////// -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- CREATE SPATIAL_REF_SYS METADATA TABLE -- --////////////////////////////////////////////////////////////////////////////// -- -- -- *** ADAPTATION ALERT **** -- Implementations do not need to execute this statement if they already -- create the spatial_ref_sys table or view via another mechanism. -- The size of the srtext VARCHAR exceeds that allowed on some systems. -- -- POSTGIS: This is already defined by postgis.sql so we comment it out. --CREATE TABLE spatial_ref_sys ( -- srid INTEGER NOT NULL PRIMARY KEY, -- auth_name VARCHAR(256), -- auth_srid INTEGER, -- srtext VARCHAR(2048) -- srtext VARCHAR(2000) --); -- INSERT INTO spatial_ref_sys (SRID,AUTH_NAME,AUTH_SRID,SRTEXT) VALUES (101, 'POSC', 32214, 'PROJCS["UTM_ZONE_14N", GEOGCS["World Geodetic System 72", DATUM["WGS_72", SPHEROID["NWL_10D", 6378135, 298.26]], PRIMEM["Greenwich", 0], UNIT["Meter", 1.0]], PROJECTION["Transverse_Mercator"], PARAMETER["False_Easting", 500000.0], PARAMETER["False_Northing", 0.0], PARAMETER["Central_Meridian", -99.0], PARAMETER["Scale_Factor", 0.9996], PARAMETER["Latitude_of_origin", 0.0], UNIT["Meter", 1.0]]' ); -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- CREATE FEATURE SCHEMA -- -- *** ADAPTATION ALERT *** -- The following schema is created using CREATE TABLE statements. -- Furthermore, it DOES NOT create the GEOMETRY_COLUMNS metadata table. -- Implementer's should replace the CREATE TABLES below with the mechanism -- that it uses to create feature tables and the GEOMETRY_COLUMNS table/view -- --////////////////////////////////////////////////////////////////////////////// -- -------------------------------------------------------------------------------- -- -- Create feature tables -- -------------------------------------------------------------------------------- -- -- Lakes -- -- -- -- POSTGIS: We break the schema creation into two steps, first create the -- POSTGIS: attribute table, second use the AddGeometryColumn() function -- POSTGIS: to create and register the geometry column. CREATE TABLE lakes ( fid INTEGER NOT NULL PRIMARY KEY, name VARCHAR(64) -- shore POLYGON ); SELECT AddGeometryColumn('ogc','lakes','shore','101','POLYGON','2'); -- -- Road Segments -- -- -- -- CREATE TABLE road_segments ( fid INTEGER NOT NULL PRIMARY KEY, name VARCHAR(64), aliases VARCHAR(64), num_lanes INTEGER -- centerline LINESTRING ); SELECT AddGeometryColumn('ogc','road_segments','centerline','101','LINESTRING','2'); -- -- Divided Routes -- -- -- -- CREATE TABLE divided_routes ( fid INTEGER NOT NULL PRIMARY KEY, name VARCHAR(64), num_lanes INTEGER -- centerlines MULTILINESTRING ); SELECT AddGeometryColumn('ogc','divided_routes','centerlines','101','MULTILINESTRING','2'); -- -- Forests -- -- -- -- CREATE TABLE forests ( fid INTEGER NOT NULL PRIMARY KEY, name VARCHAR(64) -- boundary MULTIPOLYGON ); SELECT AddGeometryColumn('ogc','forests','boundary','101','MULTIPOLYGON','2'); -- -- Bridges -- -- -- -- CREATE TABLE bridges ( fid INTEGER NOT NULL PRIMARY KEY, name VARCHAR(64) -- position POINT ); SELECT AddGeometryColumn('ogc','bridges','position','101','POINT','2'); -- -- Streams -- -- -- -- CREATE TABLE streams ( fid INTEGER NOT NULL PRIMARY KEY, name VARCHAR(64) -- centerline LINESTRING ); SELECT AddGeometryColumn('ogc','streams','centerline','101','LINESTRING','2'); -- -- Buildings -- --*** ADAPTATION ALERT *** -- A view could be used to provide the below semantics without multiple geometry -- columns in a table. In other words, create two tables. One table would -- contain the POINT position and the other would create the POLYGON footprint. -- Then create a view with the semantics of the buildings table below. -- -- -- CREATE TABLE buildings ( fid INTEGER NOT NULL PRIMARY KEY, address VARCHAR(64) -- position POINT -- footprint POLYGON ); SELECT AddGeometryColumn('ogc','buildings','position','101','POINT','2'); SELECT AddGeometryColumn('ogc','buildings','footprint','101','POLYGON','2'); -- -- Ponds -- -- -- -- CREATE TABLE ponds ( fid INTEGER NOT NULL PRIMARY KEY, name VARCHAR(64), type VARCHAR(64) -- shores MULTIPOYLGON ); SELECT AddGeometryColumn('ogc','ponds','shores','101','MULTIPOLYGON','2'); -- -- Named Places -- -- -- -- CREATE TABLE named_places ( fid INTEGER NOT NULL PRIMARY KEY, name VARCHAR(64) -- boundary POLYGON ); SELECT AddGeometryColumn('ogc','named_places','boundary','101','POLYGON','2'); -- -- Map Neatline -- -- -- -- CREATE TABLE map_neatlines ( fid INTEGER NOT NULL PRIMARY KEY -- neatline POLYGON ); SELECT AddGeometryColumn('ogc','map_neatlines','neatline','101','POLYGON','2'); -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- POPULATE GEOMETRY AND FEATURE TABLES -- -- *** ADAPTATION ALERT *** -- This script DOES NOT make any inserts into a GEOMTERY_COLUMNS table/view. -- Implementers should insert whatever makes this happen in their implementation -- below. Furthermore, the inserts below may be replaced by whatever mechanism -- may be provided by implementers to insert rows in feature tables such that -- metadata (and other mechanisms) are updated properly. -- --////////////////////////////////////////////////////////////////////////////// -- --============================================================================== -- Lakes -- -- We have one lake, Blue Lake. It is a polygon with a hole. Its geometry is -- described in WKT format as: -- 'POLYGON( (52 18, 66 23, 73 9, 48 6, 52 18), -- (59 18, 67 18, 67 13, 59 13, 59 18) )' --============================================================================== -- -- INSERT INTO lakes VALUES (101, 'Blue Lake', PolygonFromText('POLYGON((52 18,66 23,73 9,48 6,52 18),(59 18,67 18,67 13,59 13,59 18))', 101) ); -- --================== -- Road segments -- -- We have five road segments. Their geometries are all linestrings. -- The geometries are described in WKT format as: -- name 'Route 5', fid 102 -- 'LINESTRING( 0 18, 10 21, 16 23, 28 26, 44 31 )' -- name 'Route 5', fid 103 -- 'LINESTRING( 44 31, 56 34, 70 38 )' -- name 'Route 5', fid 104 -- 'LINESTRING( 70 38, 72 48 )' -- name 'Main Street', fid 105 -- 'LINESTRING( 70 38, 84 42 )' -- name 'Dirt Road by Green Forest', fid 106 -- 'LINESTRING( 28 26, 28 0 )' -- --================== -- -- INSERT INTO road_segments VALUES(102, 'Route 5', NULL, 2, LineStringFromText('LINESTRING( 0 18, 10 21, 16 23, 28 26, 44 31 )' ,101) ); INSERT INTO road_segments VALUES(103, 'Route 5', 'Main Street', 4, LineStringFromText('LINESTRING( 44 31, 56 34, 70 38 )' ,101) ); INSERT INTO road_segments VALUES(104, 'Route 5', NULL, 2, LineStringFromText('LINESTRING( 70 38, 72 48 )' ,101) ); INSERT INTO road_segments VALUES(105, 'Main Street', NULL, 4, LineStringFromText('LINESTRING( 70 38, 84 42 )' ,101) ); INSERT INTO road_segments VALUES(106, 'Dirt Road by Green Forest', NULL, 1, LineStringFromText('LINESTRING( 28 26, 28 0 )',101) ); -- --================== -- DividedRoutes -- -- We have one divided route. Its geometry is a multilinestring. -- The geometry is described in WKT format as: -- 'MULTILINESTRING( (10 48, 10 21, 10 0), (16 0, 10 23, 16 48) )' -- --================== -- INSERT INTO divided_routes VALUES(119, 'Route 75', 4, MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))', 101) ); -- --================== -- Forests -- -- We have one forest. Its geometry is a multipolygon. -- The geometry is described in WKT format as: -- 'MULTIPOLYGON( ( (28 26, 28 0, 84 0, 84 42, 28 26), -- (52 18, 66 23, 73 9, 48 6, 52 18) ), -- ( (59 18, 67 18, 67 13, 59 13, 59 18) ) )' -- --================== -- INSERT INTO forests VALUES(109, 'Green Forest', MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))', 101) ); -- --================== -- Bridges -- -- We have one bridge. Its geometry is a point. -- The geometry is described in WKT format as: -- 'POINT( 44 31 )' -- --================== -- INSERT INTO bridges VALUES(110, 'Cam Bridge', PointFromText('POINT( 44 31 )', 101) ); -- --================== -- Streams -- -- We have two streams. Their geometries are linestrings. -- The geometries are described in WKT format as: -- 'LINESTRING( 38 48, 44 41, 41 36, 44 31, 52 18 )' -- 'LINESTRING( 76 0, 78 4, 73 9 )' -- --================== -- INSERT INTO streams VALUES(111, 'Cam Stream', LineStringFromText('LINESTRING( 38 48, 44 41, 41 36, 44 31, 52 18 )', 101) ); INSERT INTO streams VALUES(112, NULL, LineStringFromText('LINESTRING( 76 0, 78 4, 73 9 )', 101) ); -- --================== -- Buildings -- -- We have two buildings. Their geometries are points and polygons. -- The geometries are described in WKT format as: -- address '123 Main Street' fid 113 -- 'POINT( 52 30 )' and -- 'POLYGON( ( 50 31, 54 31, 54 29, 50 29, 50 31) )' -- address '215 Main Street' fid 114 -- 'POINT( 64 33 )' and -- 'POLYGON( ( 66 34, 62 34, 62 32, 66 32, 66 34) )' -- --================== -- INSERT INTO buildings VALUES(113, '123 Main Street', PointFromText('POINT( 52 30 )', 101), PolygonFromText('POLYGON( ( 50 31, 54 31, 54 29, 50 29, 50 31) )', 101) ); INSERT INTO buildings VALUES(114, '215 Main Street', PointFromText('POINT( 64 33 )', 101), PolygonFromText('POLYGON( ( 66 34, 62 34, 62 32, 66 32, 66 34) )', 101) ); -- --================== -- Ponds -- -- We have one pond. Its geometry is a multipolygon. -- The geometry is described in WKT format as: -- 'MULTIPOLYGON( ( ( 24 44, 22 42, 24 40, 24 44) ), ( ( 26 44, 26 40, 28 42, 26 44) ) )' -- --================== -- INSERT INTO ponds VALUES(120, NULL, 'Stock Pond', MultiPolygonFromText('MULTIPOLYGON( ( ( 24 44, 22 42, 24 40, 24 44) ), ( ( 26 44, 26 40, 28 42, 26 44) ) )', 101) ); -- --================== -- Named Places -- -- We have two named places. Their geometries are polygons. -- The geometries are described in WKT format as: -- name 'Ashton' fid 117 -- 'POLYGON( ( 62 48, 84 48, 84 30, 56 30, 56 34, 62 48) )' -- address 'Goose Island' fid 118 -- 'POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )' -- --================== -- INSERT INTO named_places VALUES(117, 'Ashton', PolygonFromText('POLYGON( ( 62 48, 84 48, 84 30, 56 30, 56 34, 62 48) )', 101) ); INSERT INTO named_places VALUES(118, 'Goose Island', PolygonFromText('POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )', 101) ); -- --================== -- Map Neatlines -- -- We have one map neatline. Its geometry is a polygon. -- The geometry is described in WKT format as: -- 'POLYGON( ( 0 0, 0 48, 84 48, 84 0, 0 0 ) )' -- --================== -- INSERT INTO map_neatlines VALUES(115, PolygonFromText('POLYGON( ( 0 0, 0 48, 84 48, 84 0, 0 0 ) )', 101) ); -- -- -- -- end sqltsch.sql postgis-0.8.1/examples/ogc_test_suite/2_queries.sql0100664000077300001440000007271707743637050022134 0ustar postgisusers-- FILE: sqltque.sql 10/01/98 -- -- 1 2 3 4 5 6 7 8 --345678901234567890123456789012345678901234567890123456789012345678901234567890 --////////////////////////////////////////////////////////////////////////////// -- -- Copyright 1998, Open GIS Consortium, Inc. -- -- The material in this document details an Open GIS Consortium Test Suite in -- accordance with a license that your organization has signed. Please refer -- to http://www.opengis.org/testing/ to obtain a copy of the general license -- (it is part of the Conformance Testing Agreement). -- --////////////////////////////////////////////////////////////////////////////// -- -- OpenGIS Simple Features for SQL (Types and Functions) Test Suite Software -- -- This file "sqltque.sql" is part 2 of a two part standardized test -- suite in SQL script form. The other file that is required for this test -- suite, "sqltsch.sql", one additional script is provided ("sqltcle.sql") that -- performs cleanup operations between test runs, and other documents that -- describe the OGC Conformance Test Program are available via the WWW at -- http://www.opengis.org/testing/index.htm -- -- NOTE CONCERNING INFORMATION ON CONFORMANCE TESTING AND THIS TEST SUITE -- ---------------------------------------------------------------------- -- -- Organizations wishing to submit product for conformance testing should -- access the above WWW site to discover the proper procedure for obtaining -- a license to use the OpenGIS(R) certification mark associated with this -- test suite. -- -- -- NOTE CONCERNING TEST SUITE ADAPTATION -- ------------------------------------- -- -- OGC recognizes that many products will have to adapt this test suite to -- make it work properly. OGC has documented the allowable adaptations within -- this test suite where possible. Other information about adaptations may be -- discovered in the Test Suite Guidelines document for this test suite. -- -- PLEASE NOTE THE OGC REQUIRES THAT ADAPTATIONS ARE FULLY DOCUMENTED USING -- LIBERAL COMMENT BLOCKS CONFORMING TO THE FOLLOWING FORMAT: -- -- -- !#@ ADAPTATION BEGIN -- explanatory text goes here -- --------------------- -- -- BEGIN ORIGINAL SQL -- --------------------- -- original sql goes here -- --------------------- -- -- END ORIGINAL SQL -- --------------------- -- -- BEGIN ADAPTED SQL -- --------------------- -- adated sql goes here -- --------------------- -- -- END ADAPTED SQL -- --------------------- -- -- !#@ ADAPTATION END -- --////////////////////////////////////////////////////////////////////////////// -- -- BEGIN TEST SUITE CODE -- --////////////////////////////////////////////////////////////////////////////// -- -- Please refer to the Test Suite Guidelines for this test suite for further -- information concerning the test data. The actual data is created by -- executing "sqltsch.sql" -- --////////////////////////////////////////////////////////////////////////////// -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING THE TABLE/VIEW STRUCTURE -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T1 -- GEOMETRY_COLUMNS table/view is created/updated properly -- For this test we will check to see that all of the feature tables are -- represented by entries in the GEOMETRY_COLUMNS table/view -- -- ANSWER: lakes, road_segments, divided_routes, buildings, forests, bridges, -- named_places, streams, ponds, map_neatlines -- *** ADAPTATION ALERT *** -- Since there are no quotes around the table names in the CREATE TABLEs, -- they will be converted to upper case in many DBMSs, and therefore, the -- answer to this query may be: -- ANSWER: LAKES, ROAD_SEGMENTS, DIVIDED_ROUTES, BUILDINGS, FORESTS, BRIDGES, -- NAMED_PLACES, STREAMS, PONDS, MAP_NEATLINES -- *** ADAPTATION ALERT *** -- If the implementer made the adaptation concerning the buildings table -- in sqltsch.sql, then the answer here may differ slightly. -- -- --================================ -- SELECT f_table_name FROM geometry_columns; -- -- --================================ -- Conformance Item T2 -- GEOMETRY_COLUMNS table/view is created/updated properly -- For this test we will check to see that the correct geometry columns for the -- streams table is represented in the GEOMETRY_COLUMNS table/view -- -- ANSWER: centerline -- *** ADAPTATION ALERT *** -- Since there are no quotes around the table name, streams, in it's CREATE TABLE, -- it will be converted to upper case in many DBMSs, and therefore, the WHERE -- clause may have to be f_table_name = 'STREAMS'. -- --================================ -- SELECT f_geometry_column FROM geometry_columns WHERE f_table_name = 'streams'; -- -- --================================ -- Conformance Item T3 -- GEOMETRY_COLUMNS table/view is created/updated properly -- For this test we will check to see that the correct coordinate dimension -- for the streams table is represented in the GEOMETRY_COLUMNS table/view -- -- ANSWER: 2 -- *** ADAPTATION ALERT *** -- Since there are no quotes around the table name, streams, in it's CREATE TABLE, -- it will be converted to upper case in many DBMSs, and therefore, the WHERE -- clause may have to be f_table_name = 'STREAMS'. -- --================================ -- SELECT coord_dimension FROM geometry_columns WHERE f_table_name = 'streams'; -- -- --================================ -- Conformance Item T4 -- GEOMETRY_COLUMNS table/view is created/updated properly -- For this test we will check to see that the correct value of srid for -- the streams table is represented in the GEOMETRY_COLUMNS table/view -- -- ANSWER: 101 -- *** ADAPTATION ALERT *** -- Since there are no quotes around the table name, streams, in it's CREATE TABLE, -- it will be converted to upper case in many DBMSs, and therefore, the WHERE -- clause may have to be f_table_name = 'STREAMS'. -- --================================ -- SELECT srid FROM geometry_columns WHERE f_table_name = 'streams'; -- -- --================================ -- Conformance Item T5 -- SPATIAL_REF_SYS table/view is created/updated properly -- For this test we will check to see that the correct value of srtext is -- represented in the SPATIAL_REF_SYS table/view -- -- ANSWER: 'PROJCS["UTM_ZONE_14N", GEOGCS["World Geodetic System 72", -- DATUM["WGS_72", SPHEROID["NWL_10D", 6378135, 298.26]], -- PRIMEM["Greenwich", 0], UNIT["Meter", 1.0]], -- PROJECTION["Traverse_Mercator"], PARAMETER["False_Easting", 500000.0], -- PARAMETER["False_Northing", 0.0], PARAMETER["Central_Meridian", -99.0], -- PARAMETER["Scale_Factor", 0.9996], PARAMETER["Latitude_of_origin", 0.0], -- UNIT["Meter", 1.0]]' -- --================================ -- SELECT srtext FROM SPATIAL_REF_SYS WHERE SRID = 101; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.10.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T6 -- Dimension(g Geometry) : Integer -- For this test we will determine the dimension of Blue Lake. -- -- ANSWER: 2 -- --================================ -- SELECT Dimension(shore) FROM lakes WHERE name = 'Blue Lake'; -- -- --================================ -- Conformance Item T7 -- GeometryType(g Geometry) : String -- For this test we will determine the type of Route 75. -- -- ANSWER: 9 (which corresponds to 'MULTILINESTRING') -- --================================ -- SELECT GeometryType(centerlines) FROM divided_routes WHERE name = 'Route 75'; -- --================================ -- Conformance Item T8 -- AsText(g Geometry) : String -- For this test we will determine the WKT representation of Goose Island. -- -- ANSWER: 'POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )' -- --================================ -- SELECT AsText(boundary) FROM named_places WHERE name = 'Goose Island'; -- --================================ -- Conformance Item T9 -- AsBinary(g Geometry) : Blob -- For this test we will determine the WKB representation of Goose Island. -- We will test by applying AsText to the result of PolygonFromText to the -- result of AsBinary. -- -- ANSWER: 'POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )' -- --================================ -- SELECT AsText(PolygonFromWKB(AsBinary(boundary))) FROM named_places WHERE name = 'Goose Island'; -- --================================ -- Conformance Item T10 -- SRID(g Geometry) : Integer -- For this test we will determine the SRID of Goose Island. -- -- ANSWER: 101 -- --================================ -- SELECT SRID(boundary) FROM named_places WHERE name = 'Goose Island'; -- --================================ -- Conformance Item T11 -- IsEmpty(g Geometry) : Integer -- For this test we will determine whether the geometry of a -- segment of Route 5 is empty. -- -- ANSWER: 0 -- *** Adaptation Alert *** -- If the implementer provides IsEmpty as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: FALSE or 'f' -- --================================ -- SELECT IsEmpty(centerline) FROM road_segments WHERE name = 'Route 5' AND aliases = 'Main Street'; -- --================================ -- Conformance Item T12 -- IsSimple(g Geometry) : Integer -- For this test we will determine whether the geometry of a -- segment of Blue Lake is simple. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides IsSimple as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT IsSimple(shore) FROM lakes WHERE name = 'Blue Lake'; -- --================================ -- Conformance Item T13 -- Boundary(g Geometry) : Geometry -- For this test we will determine the boundary of Goose Island. -- NOTE: The boundary result is as defined in 3.12.3.2 of 96-015R1. -- -- ANSWER: 'LINESTRING( 67 13, 67 18, 59 18, 59 13, 67 13 )' -- --================================ -- SELECT AsText(Boundary(boundary)) FROM named_places WHERE name = 'Goose Island'; -- --================================ -- Conformance Item T14 -- Envelope(g Geometry) : Geometry -- For this test we will determine the envelope of Goose Island. -- -- ANSWER: 'POLYGON( ( 59 13, 59 18, 67 18, 67 13, 59 13) )' -- --================================ -- SELECT AsText(Envelope(boundary)) FROM named_places WHERE name = 'Goose Island'; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.11.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T15 -- X(p Point) : Double Precision -- For this test we will determine the X coordinate of Cam Bridge. -- -- ANSWER: 44.00 -- --================================ -- SELECT X(position) FROM bridges WHERE name = 'Cam Bridge'; -- --================================ -- Conformance Item T16 -- Y(p Point) : Double Precision -- For this test we will determine the Y coordinate of Cam Bridge. -- -- ANSWER: 31.00 -- --================================ -- SELECT Y(position) FROM bridges WHERE name = 'Cam Bridge'; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.12.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T17 -- StartPoint(c Curve) : Point -- For this test we will determine the start point of road segment 102. -- -- ANSWER: 'POINT( 0 18 )' -- --================================ -- SELECT AsText(StartPoint(centerline)) FROM road_segments WHERE fid = 102; -- --================================ -- Conformance Item T18 -- EndPoint(c Curve) : Point -- For this test we will determine the end point of road segment 102. -- -- ANSWER: 'POINT( 44 31 )' -- --================================ -- SELECT AsText(EndPoint(centerline)) FROM road_segments WHERE fid = 102; -- --================================ -- Conformance Item T19 -- IsClosed(c Curve) : Integer -- For this test we will determine the boundary of Goose Island. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides IsClosed as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT IsClosed(Boundary(boundary)) FROM named_places WHERE name = 'Goose Island'; -- --================================ -- Conformance Item T20 -- IsRing(c Curve) : Integer -- For this test we will determine the boundary of Goose Island. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides IsRing as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT IsRing(Boundary(boundary)) FROM named_places WHERE name = 'Goose Island'; -- --================================ -- Conformance Item T21 -- Length(c Curve) : Double Precision -- For this test we will determine the length of road segment 106. -- -- ANSWER: 26.00 (meters) -- --================================ -- SELECT Length(centerline) FROM road_segments WHERE fid = 106; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.13.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T22 -- NumPoints(l LineString) : Integer -- For this test we will determine the number of points in road segment 102. -- -- ANSWER: 5 -- --================================ -- SELECT NumPoints(centerline) FROM road_segments WHERE fid = 102; -- --================================ -- Conformance Item T23 -- PointN(l LineString, n Integer) : Point -- For this test we will determine the 1st point in road segment 102. -- -- ANSWER: 'POINT( 0 18 )' -- --================================ -- SELECT AsText(PointN(centerline, 1)) FROM road_segments WHERE fid = 102; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.14.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T24 -- Centroid(s Surface) : Point -- For this test we will determine the centroid of Goose Island. -- -- ANSWER: 'POINT( 63 15.5 )' -- --================================ -- SELECT AsText(Centroid(boundary)) FROM named_places WHERE name = 'Goose Island'; -- --================================ -- Conformance Item T25 -- PointOnSurface(s Surface) : Point -- For this test we will determine a point on Goose Island. -- NOTE: For this test we will have to uses the Contains function -- (which we don't test until later). -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Contains as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Contains(boundary, PointOnSurface(boundary)) FROM named_places WHERE name = 'Goose Island'; -- --================================ -- Conformance Item T26 -- Area(s Surface) : Double Precision -- For this test we will determine the area of Goose Island. -- -- ANSWER: 40.00 (square meters) -- --================================ -- SELECT Area(boundary) FROM named_places WHERE name = 'Goose Island'; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.15.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T27 -- ExteriorRing(p Polygon) : LineString -- For this test we will determine the exteroir ring of Blue Lake. -- -- ANSWER: 'LINESTRING(52 18, 66 23, 73 9, 48 6, 52 18)' -- --================================ -- SELECT AsText(ExteriorRing(shore)) FROM lakes WHERE name = 'Blue Lake'; -- --================================ -- Conformance Item T28 -- NumInteriorRings(p Polygon) : Integer -- For this test we will determine the number of interior rings of Blue Lake. -- -- ANSWER: 1 -- --================================ -- SELECT NumInteriorRings(shore) FROM lakes WHERE name = 'Blue Lake'; -- --================================ -- Conformance Item T29 -- InteriorRingN(p Polygon, n Integer) : LineString -- For this test we will determine the first interior ring of Blue Lake. -- -- ANSWER: 'LINESTRING(59 18, 67 18, 67 13, 59 13, 59 18)' -- --================================ -- SELECT AsText(InteriorRingN(shore, 1)) FROM lakes WHERE name = 'Blue Lake'; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.16.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T30 -- NumGeometries(g GeometryCollection) : Integer -- For this test we will determine the number of geometries in Route 75. -- -- ANSWER: 2 -- --================================ -- SELECT NumGeometries(centerlines) FROM divided_routes WHERE name = 'Route 75'; -- --================================ -- Conformance Item T31 -- GeometryN(g GeometryCollection, n Integer) : Geometry -- For this test we will determine the second geometry in Route 75. -- -- ANSWER: 'LINESTRING( 16 0, 16 23, 16 48 )' -- --================================ -- SELECT AsText(GeometryN(centerlines, 2)) FROM divided_routes WHERE name = 'Route 75'; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.17.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T32 -- IsClosed(mc MultiCurve) : Integer -- For this test we will determine if the geometry of Route 75 is closed. -- -- ANSWER: 0 -- *** Adaptation Alert *** -- If the implementer provides IsClosed as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: FALSE or 'f' -- --================================ -- SELECT IsClosed(centerlines) FROM divided_routes WHERE name = 'Route 75'; -- --================================ -- Conformance Item T33 -- Length(mc MultiCurve) : Double Precision -- For this test we will determine the length of Route 75. -- NOTE: This makes no semantic sense in our example... -- -- ANSWER: 96.00 (meters) -- --================================ -- SELECT Length(centerlines) FROM divided_routes WHERE name = 'Route 75'; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.18.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T34 -- Centroid(ms MultiSurface) : Point -- For this test we will determine the centroid of the ponds. -- -- ANSWER: 'POINT( 25 42 )' -- --================================ -- SELECT AsText(Centroid(shores)) FROM ponds WHERE fid = 120; -- --================================ -- Conformance Item T35 -- PointOnSurface(ms MultiSurface) : Point -- For this test we will determine a point on the ponds. -- NOTE: For this test we will have to uses the Contains function -- (which we don't test until later). -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Contains as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Contains(shores, PointOnSurface(shores)) FROM ponds WHERE fid = 120; -- --================================ -- Conformance Item T36 -- Area(ms MultiSurface) : Double Precision -- For this test we will determine the area of the ponds. -- -- ANSWER: 8.00 (square meters) -- --================================ -- SELECT Area(shores) FROM ponds WHERE fid = 120; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.19.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T37 -- Equals(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine if the geometry of Goose Island is equal -- to the same geometry as consructed from it's WKT representation. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Equals as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Equals(boundary, PolygonFromText('POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )',1)) FROM named_places WHERE name = 'Goose Island'; -- --================================ -- Conformance Item T38 -- Disjoint(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine if the geometry of Route 75 is disjoint -- from the geometry of Ashton. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Disjoint as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Disjoint(centerlines, boundary) FROM divided_routes, named_places WHERE divided_routes.name = 'Route 75' AND named_places.name = 'Ashton'; -- --================================ -- Conformance Item T39 -- Touch(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine if the geometry of Cam Stream touches -- the geometry of Blue Lake. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Touch as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Touches(centerline, shore) FROM streams, lakes WHERE streams.name = 'Cam Stream' AND lakes.name = 'Blue Lake'; -- --================================ -- Conformance Item T40 -- Within(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine if the geometry of the house at 215 Main Street -- is within Ashton. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Within as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Within(footprint, boundary) FROM named_places, buildings WHERE named_places.name = 'Ashton' AND buildings.address = '215 Main Street'; -- --================================ -- Conformance Item T41 -- Overlap(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine if the geometry of Green Forest overlaps -- the geometry of Ashton. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Overlap as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Overlaps(forests.boundary, named_places.boundary) FROM forests, named_places WHERE forests.name = 'Green Forest' AND named_places.name = 'Ashton'; -- --================================ -- Conformance Item T42 -- Cross(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine if the geometry of road segment 102 crosses -- the geometry of Route 75. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Cross as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Crosses(road_segments.centerline, divided_routes.centerlines) FROM road_segments, divided_routes WHERE road_segments.fid = 102 AND divided_routes.name = 'Route 75'; -- --================================ -- Conformance Item T43 -- Intersects(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine if the geometry of road segment 102 intersects -- the geometry of Route 75. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Intersects as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Intersects(road_segments.centerline, divided_routes.centerlines) FROM road_segments, divided_routes WHERE road_segments.fid = 102 AND divided_routes.name = 'Route 75'; -- --================================ -- Conformance Item T44 -- Contains(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine if the geometry of Green Forest contains -- the geometry of Ashton. -- -- ANSWER: 0 -- *** Adaptation Alert *** -- If the implementer provides Contains as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: FALSE or 'f' -- --================================ -- SELECT Contains(forests.boundary, named_places.boundary) FROM forests, named_places WHERE forests.name = 'Green Forest' AND named_places.name = 'Ashton'; -- --================================ -- Conformance Item T45 -- Relate(g1 Geometry, g2 Geometry, PatternMatrix String) : Integer -- For this test we will determine if the geometry of Green Forest relates to -- the geometry of Ashton using the pattern "TTTTTTTTT". -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Relate as a boolean function, instead of as -- an INTEGER function, then: -- ANSWER: TRUE or 't' -- --================================ -- SELECT Relate(forests.boundary, named_places.boundary, 'TTTTTTTTT') FROM forests, named_places WHERE forests.name = 'Green Forest' AND named_places.name = 'Ashton'; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.20.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T46 -- Distance(g1 Geometry, g2 Geometry) : Double Precision -- For this test we will determine the distance between Cam Bridge and Ashton. -- -- ANSWER: 12 (meters) -- --================================ -- SELECT Distance(position, boundary) FROM bridges, named_places WHERE bridges.name = 'Cam Bridge' AND named_places.name = 'Ashton'; -- -- -- --////////////////////////////////////////////////////////////////////////////// -- -- QUERIES TESTING FUNCTIONS IN SECTION 3.2.21.2 -- --////////////////////////////////////////////////////////////////////////////// -- --================================ -- Conformance Item T47 -- Intersection(g1 Geometry, g2 Geometry) : Geometry -- For this test we will determine the intersection between Cam Stream and -- Blue Lake. -- -- ANSWER: 'POINT( 52 18 )' -- --================================ -- SELECT AsText(Intersection(centerline, shore)) FROM streams, lakes WHERE streams.name = 'Cam Stream' AND lakes.name = 'Blue Lake'; -- --================================ -- Conformance Item T48 -- Difference(g1 Geometry, g2 Geometry) : Geometry -- For this test we will determine the difference between Ashton and -- Green Forest. -- -- ANSWER: 'POLYGON( ( 56 34, 62 48, 84 48, 84 42, 56 34) )' -- NOTE: The order of the vertices here is arbitrary. -- --================================ -- SELECT AsText(Difference(named_places.boundary, forests.boundary)) FROM named_places, forests WHERE named_places.name = 'Ashton' AND forests.name = 'Green Forest'; -- --================================ -- Conformance Item T49 -- Union(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine the union of Blue Lake and Goose Island -- -- ANSWER: 'POLYGON((52 18,66 23,73 9,48 6,52 18))' -- NOTE: The outer ring of BLue Lake is the answer. -- --================================ -- SELECT AsText(GeomUnion(shore, boundary)) FROM lakes, named_places WHERE lakes.name = 'Blue Lake' AND named_places.name = 'Goose Island'; -- --================================ -- Conformance Item T50 -- SymmetricDifference(g1 Geometry, g2 Geometry) : Integer -- For this test we will determine the symmetric difference of Blue Lake -- and Goose Island -- -- ANSWER: 'POLYGON((52 18,66 23,73 9,48 6,52 18))' -- NOTE: The outer ring of BLue Lake is the answer. -- --================================ -- SELECT AsText(SymmetricDifference(shore, boundary)) FROM lakes, named_places WHERE lakes.name = 'Blue Lake' AND named_places.name = 'Goose Island'; -- --================================ -- Conformance Item T51 -- Buffer(g Geometry, d Double Precision) : Geometry -- For this test we will make a 15 meter buffer about Cam Bridge. -- NOTE: This test we count the number of buildings contained in -- the buffer that is generated. This test only works because -- we have a single bridge record, two building records, and -- we selected the buffer size such that only one of the buildings -- is contained in the buffer. -- -- ANSWER: 1 -- *** Adaptation Alert *** -- If the implementer provides Contains as a boolean function, instead of as -- an INTEGER function, then the WHERE clause should be: -- WHERE Contains(Buffer(bridges.position, 15.0), buildings.footprint) = 'TRUE'; -- - or - -- WHERE Contains(Buffer(bridges.position, 15.0), buildings.footprint) = 't'; -- --================================ -- SELECT count(*) FROM buildings, bridges WHERE Contains(Buffer(bridges.position, 15.0), buildings.footprint); -- --================================ -- Conformance Item T52 -- ConvexHull(g Geometry) : Geometry -- For this test we will determine the convex hull of Blue Lake -- -- ANSWER: 'POLYGON((52 18,66 23,73 9,48 6,52 18))' -- NOTE: The outer ring of BLue Lake is the answer. -- --================================ -- SELECT AsText(ConvexHull(shore)) FROM lakes WHERE lakes.name = 'Blue Lake'; -- -- -- -- end sqltque.sql postgis-0.8.1/examples/ogc_test_suite/3_cleanup.sql0100664000077300001440000000077207645322100022063 0ustar postgisusers-- FILE: sqltcle.sql 10/01/98 -- -- *** ADAPTATION ALERT *** -- OGC will not examine this script for adaptations. -- Please add any other cleanup to this script. -- DROP TABLE spatial_ref_sys; DROP TABLE lakes; DROP TABLE road_segments; DROP TABLE divided_routes; DROP TABLE forests; DROP TABLE bridges; DROP TABLE streams; DROP TABLE buildings; DROP TABLE ponds; DROP TABLE named_places; DROP TABLE map_neatlines; DROP TABLE route_segments; DROP TABLE routes; DROP TABLE map_components; DROP TABLE maps; postgis-0.8.1/examples/ogc_test_suite/README0100664000077300001440000000067407760540237020365 0ustar postgisusers - All tests must be run in a database named 'ogc' in order for the AddGeometryColumn() function calls to work. createdb ogc createlang plpgsql ogc psql ogc < postgis.sql psql -a -f 1_schema.sql ogc >& 1_output.txt psql -a -f 2_queries.sql ogc >& 2_output.txt psql -a -f 3_cleanup.sql ogc >& 3_output.txt - Load the test files in order. File 2 has the actual tests, with the correct answers for each test in the comments. postgis-0.8.1/examples/wkb_reader/0040775000077300001440000000000010000570751016547 5ustar postgisuserspostgis-0.8.1/examples/wkb_reader/Makefile0100664000077300001440000000041007324616013020206 0ustar postgisusers# # Edit the following variables to point to your PostgreSQL # client libraries and include files # PG_INC=/usr/include/pgsql PG_LIB=/usr/lib # # Below should be fine # CFLAGS=-I$(PG_INC) -L$(PG_LIB) -lpq all: readwkb readwkb: readwkb.c clean: @rm -f readwkb postgis-0.8.1/examples/wkb_reader/README0100664000077300001440000000166107314701322017434 0ustar postgisusersThis is a very simple example of using binary cursors to move binary data from the server to the client. We convert the GEOMETRY to the OpenGIS Well Known Binary (WKB) format before sending it to the client. The WKB format contains information about the endian of the data, so it can be used for transfer between servers and clients that are not the same endian (ie. between i386 and sparc) See http://www.opengis.org/techno/specs/99-049.rtf page 3-24 for the WKB specification. 3d geometries are encoded as in OGR by adding 32768 to the type. Points are then 24 bytes (X,Y,Z) instead of 16 bytes (X,Y). You can force 3d geometries to be returned as 2d geometries by using the force_2d() function. For example: select wkb_ndr(force_2d(geom)) from mytable; If the client is running on a i386, you should use wkb_ndr() and on a sparc you should use wkb_xdr() so you do not causes an endian shift on both the server and client. postgis-0.8.1/examples/wkb_reader/printwkb.inc0100664000077300001440000002423607314701322021112 0ustar postgisusers // DO NOT USE THESE decoding function (except for debugging purposes) // The code is NOT maintained and is thrown together // unsupported debugging function. // given a wkb input thats a geometrycollection, returns its size and prints out // its contents // // Its really messy - dont even think about using this for anything // // you shouldnt call this function; just call decode_wkb() and it will // call this function void decode_wkb_collection(char *wkb,int *size); void swap_char(char *a,char *b) { char c; c = *a; *a=*b; *b=c; } void flip_endian_double(char *d) { swap_char(d+7, d); swap_char(d+6, d+1); swap_char(d+5, d+2); swap_char(d+4, d+3); } void flip_endian_int32(char *i) { swap_char (i+3,i); swap_char (i+2,i+1); } void decode_wkb_collection(char *wkb,int *size) { int offset =0; bool flipbytes; int total_size=0,sub_size; int numb_sub,t; bool first_one = TRUE; if (wkb[0] ==0 ) //big endian { if (BYTE_ORDER == LITTLE_ENDIAN) flipbytes= 1; else flipbytes= 0; } else //little { if (BYTE_ORDER == LITTLE_ENDIAN) flipbytes= 0; else flipbytes= 1; } memcpy(&numb_sub, wkb+5,4); if (flipbytes) flip_endian_int32( (char *) & numb_sub) ; printf("GEOMETRYCOLLECTION(\n"); offset = 9; for (t=0;t 1000 ) { is3d = 1; type = type - 32768; } //printf(" Type = %i (is3d = %i)\n", type, is3d); if (type == 1) //POINT() { printf("POINT("); if (is3d) { memcpy(&x, &wkb[5], 8); memcpy(&y, &wkb[5+8], 8); memcpy(&z, &wkb[5+16], 8); if (flipbytes) { flip_endian_double( (char *) & x) ; flip_endian_double( (char *) & y) ; flip_endian_double( (char *) & z) ; } printf("%g %g %g)",x,y,z ); } else { memcpy(&x, &wkb[5], 8); memcpy(&y, &wkb[5+8], 8); if (flipbytes) { flip_endian_double( (char *) & x) ; flip_endian_double( (char *) & y) ; } printf("%g %g)", x,y); } printf("\n"); if (is3d) *size = 29; else *size = 21; return; } if (type == 2) { printf("LINESTRING("); memcpy(&n1, &wkb[5],4); if (flipbytes) flip_endian_int32( (char *) & n1) ; // printf(" --- has %i sub points\n",n1); first_one = TRUE; for (t=0; t #include #include #include #include #include "libpq-fe.h" // some type def'n -- hopefully they are the same on your machine! typedef signed int int32; /* == 32 bits */ typedef unsigned int uint32; /* == 32 bits */ typedef char bool; #define TRUE 1 #define FALSE 0 /* example set-up create table tt (interesting bool,comments varchar(100), the_geom geometry); insert into tt values ( false, 'simple point', 'POINT( 10 10)' ); insert into tt values ( false, 'simple line' , 'LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)'); insert into tt values( true, 'polygon w/ hole','POLYGON( (0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 7 5, 7 7 , 5 7 , 5 5))'); dont forget to set the port, dbname, host, and user (below) so the postgres connection will work Also, change the "declare cursor" command so it returns the columns you want, and converts the geometry into wkb. */ // This is modified from the postgres documentation for client programs (example programs) void decode_wkb(char *wkb, int *size); //we need to know the endian of the client machine. This is // taken from postgres's os.h file #if defined(__i386) && !defined(__i386__) #define __i386__ #endif #if defined(__sparc) && !defined(__sparc__) #define __sparc__ #endif #ifndef BIG_ENDIAN #define BIG_ENDIAN 4321 #endif #ifndef LITTLE_ENDIAN #define LITTLE_ENDIAN 1234 #endif #ifndef BYTE_ORDER #ifdef __sparc__ #define BYTE_ORDER BIG_ENDIAN #endif #ifdef __i386__ #define BYTE_ORDER LITTLE_ENDIAN #endif #endif //really messy debugging function for printing out wkb // not included inside this .c because its a messy pile of doggy-do // // it does assume "BYTE_ORDER" and "LITTLE_ENDIAN" are defined in the same // way as in postgres.h #include "printwkb.inc" void exit_nicely(PGconn *conn) { PQfinish(conn); exit(1); } void dump_bytes( char *a, int numb) { int t; for (t=0; t 0 ) b.append(","); b.append(points[p].getValue()); } b.append(")"); return b.toString(); } public int numPoints() { return points.length; } public Point getPoint(int idx) { if ( idx >= 0 & idx < points.length ) { return points[idx]; } else { return null; } } } postgis-0.8.1/jdbc/org/postgis/LinearRing.java0100664000077300001440000000312107536210076020707 0ustar postgisuserspackage org.postgis; import java.io.*; import java.sql.*; import org.postgresql.util.*; /** * This represents the LinearRing GIS datatype. This type is used to * construct the polygon types, but is not * stored or retrieved directly from the database. */ public class LinearRing extends Geometry { /** * The points in the ring. */ public Point[] points; public LinearRing(Point[] points) { this.points = points; dimension = points[0].dimension; } /** * This is called to construct a LinearRing from the * PostGIS string representation of a ring. * * @param value Definition of this ring in the PostGIS * string format. */ public LinearRing(String value) throws SQLException { PGtokenizer t = new PGtokenizer(PGtokenizer.removePara(value.trim()),','); int npoints = t.getSize(); points = new Point[npoints]; for( int p = 0; p < npoints; p++ ) { points[p] = new Point(t.getToken(p)); } dimension = points[0].dimension; } /** * @return the LinearRing in the syntax expected by PostGIS */ public String toString() { StringBuffer b = new StringBuffer("("); for ( int p = 0; p < points.length; p++ ) { if( p > 0 ) b.append(","); b.append(points[p].getValue()); } b.append(")"); return b.toString(); } /** * @return the LinearRing in the string syntax expected by PostGIS */ public String getValue() { return toString(); } public int numPoints() { return points.length; } public Point getPoint(int idx) { if ( idx >= 0 & idx < points.length ) { return points[idx]; } else { return null; } } } postgis-0.8.1/jdbc/org/postgis/MultiLineString.java0100664000077300001440000000252007314701322021741 0ustar postgisuserspackage org.postgis; import org.postgresql.util.*; import java.sql.*; import java.util.*; public class MultiLineString extends Geometry { LineString[] lines; public MultiLineString() { type = MULTILINESTRING; } public MultiLineString(LineString[] lines) { this(); this.lines = lines; dimension = lines[0].dimension; } public MultiLineString(String value) throws SQLException { this(); value = value.trim(); if ( value.indexOf("MULTILINESTRING") == 0 ) { PGtokenizer t = new PGtokenizer(PGtokenizer.removePara(value.substring(15).trim()),','); int nlines = t.getSize(); lines = new LineString[nlines]; for( int p = 0; p < nlines; p++) { lines[p] = new LineString(t.getToken(p)); } dimension = lines[0].dimension; } else { throw new SQLException("postgis.multilinestringgeometry"); } } public String toString() { return "MULTILINESTRING " + getValue(); } public String getValue() { StringBuffer b = new StringBuffer("("); for( int p = 0; p < lines.length; p++ ) { if( p > 0 ) b.append(","); b.append(lines[p].getValue()); } b.append(")"); return b.toString(); } public int numLines() { return lines.length; } public LineString getLine(int idx) { if( idx >= 0 & idx < lines.length ) { return lines[idx]; } else { return null; } } } postgis-0.8.1/jdbc/org/postgis/MultiPoint.java0100664000077300001440000000244307314701322020760 0ustar postgisuserspackage org.postgis; import org.postgresql.util.*; import java.sql.*; import java.util.*; public class MultiPoint extends Geometry { Point[] points; public MultiPoint() { type = MULTIPOINT; } public MultiPoint(Point[] points) { this(); this.points = points; dimension = points[0].dimension; } public MultiPoint(String value) throws SQLException { this(); value = value.trim(); if ( value.indexOf("MULTIPOINT") == 0 ) { PGtokenizer t = new PGtokenizer(PGtokenizer.removePara(value.substring(10).trim()),','); int npoints = t.getSize(); points = new Point[npoints]; for( int p = 0; p < npoints; p++) { points[p] = new Point(t.getToken(p)); } dimension = points[0].dimension; } else { throw new SQLException("postgis.multipointgeometry"); } } public String toString() { return "MULTIPOINT " + getValue(); } public String getValue() { StringBuffer b = new StringBuffer("("); for( int p = 0; p < points.length; p++ ) { if( p > 0 ) b.append(","); b.append(points[p].getValue()); } b.append(")"); return b.toString(); } public int numPoints() { return points.length; } public Point getPoint(int idx) { if ( idx >= 0 & idx < points.length ) { return points[idx]; } else { return null; } } } postgis-0.8.1/jdbc/org/postgis/MultiPolygon.java0100664000077300001440000000253607314701322021321 0ustar postgisuserspackage org.postgis; import org.postgresql.util.*; import java.sql.*; import java.util.*; public class MultiPolygon extends Geometry { Polygon[] polygons; public MultiPolygon() { type = MULTIPOLYGON; } public MultiPolygon(Polygon[] polygons) { this(); this.polygons = polygons; dimension = polygons[0].dimension; } public MultiPolygon(String value) throws SQLException { this(); value = value.trim(); if ( value.indexOf("MULTIPOLYGON") == 0 ) { PGtokenizer t = new PGtokenizer(PGtokenizer.removePara(value.substring(12).trim()),','); int npolygons = t.getSize(); polygons = new Polygon[npolygons]; for( int p = 0; p < npolygons; p++) { polygons[p] = new Polygon(t.getToken(p)); } dimension = polygons[0].dimension; } else { throw new SQLException("postgis.multipolygongeometry"); } } public String toString() { return "MULTIPOLYGON " + getValue(); } public String getValue() { StringBuffer b = new StringBuffer("("); for( int p = 0; p < polygons.length; p++ ) { if( p > 0 ) b.append(","); b.append(polygons[p].getValue()); } b.append(")"); return b.toString(); } public int numPolygons() { return polygons.length; } public Polygon getPolygon(int idx) { if ( idx >= 0 & idx < polygons.length ) { return polygons[idx]; } else { return null; } } } postgis-0.8.1/jdbc/org/postgis/PGbox3d.java0100664000077300001440000000246607556013606020140 0ustar postgisuserspackage org.postgis; import org.postgresql.util.*; import java.sql.*; /* * Updates Oct 2002 * - data members made private * - getLLB() and getURT() methods added */ public class PGbox3d extends PGobject { /** * The lower left bottom corner of the box. */ private Point llb; /** * The upper right top corner of the box. */ private Point urt; public PGbox3d() {} public PGbox3d(Point llb, Point urt) { this.llb = llb; this.urt = urt; } public PGbox3d(String value) throws SQLException { setValue(value); } public void setValue(String value) throws SQLException { value = value.trim(); if( value.startsWith("BOX3D") ) { value = value.substring(5); } PGtokenizer t = new PGtokenizer(PGtokenizer.removePara(value.trim()),','); llb = new Point(t.getToken(0)); urt = new Point(t.getToken(1)); } public String getValue() { return "BOX3D (" + llb.getValue() + "," + urt.getValue() + ")"; } public String toString() { return getValue(); } public Object clone() { PGbox3d obj = new PGbox3d(llb,urt); obj.setType(type); return obj; } /**Returns the lower left bottom corner of the box as a Point object*/ public Point getLLB() { return llb; } /**Returns the upper right top corner of the box as a Point object*/ public Point getURT() { return urt; } } postgis-0.8.1/jdbc/org/postgis/PGgeometry.java0100664000077300001440000000314107556013606020743 0ustar postgisuserspackage org.postgis; import org.postgresql.util.PGobject; import org.postgresql.util.PGtokenizer; import java.sql.*; /* * Updates Oct 2002 * - setValue() method now cheaks if the geometry has a SRID. If present, * it is removed and only the wkt is used to create the new geometry */ public class PGgeometry extends PGobject { Geometry geom; public PGgeometry() { } public PGgeometry(Geometry geom) { this.geom = geom; } public PGgeometry(String value) throws SQLException { setValue(value); } public void setValue(String value) throws SQLException { value = value.trim(); if( value.startsWith("SRID")) { //break up geometry into srid and wkt PGtokenizer t = new PGtokenizer(value,';'); value = t.getToken(1); } if( value.startsWith("MULTIPOLYGON")) { geom = new MultiPolygon(value); } else if( value.startsWith("MULTILINESTRING")) { geom = new MultiLineString(value); } else if( value.startsWith("MULTIPOINT")) { geom = new MultiPoint(value); } else if( value.startsWith("POLYGON")) { geom = new Polygon(value); } else if( value.startsWith("LINESTRING")) { geom = new LineString(value); } else if( value.startsWith("POINT")) { geom = new Point(value); } else { throw new SQLException("Unknown type: " + value); } } public Geometry getGeometry() { return geom; } public int getGeoType() { return geom.type; } public String toString() { return geom.toString(); } public String getValue() { return geom.toString(); } public Object clone() { PGgeometry obj = new PGgeometry(geom); obj.setType(type); return obj; } } postgis-0.8.1/jdbc/org/postgis/Point.java0100664000077300001440000000363307314701322017747 0ustar postgisuserspackage org.postgis; import org.postgresql.util.*; import java.sql.*; import java.util.*; public class Point extends Geometry { /** * The X coordinate of the point. */ public double x; /** * The Y coordinate of the point. */ public double y; /** * The Z coordinate of the point. */ public double z; public Point() { type = POINT; } public Point(double x, double y, double z) { this(); this.x = x; this.y = y; this.z = z; dimension = 3; } public Point(double x, double y) { this(); this.x = x; this.y = y; this.z = 0.0; dimension = 2; } public Point(String value) throws SQLException { this(); value = value.trim(); if ( value.indexOf("POINT") == 0 ) { value = value.substring(5).trim(); } PGtokenizer t = new PGtokenizer(PGtokenizer.removePara(value),' '); try { if ( t.getSize() == 3 ) { x = Double.valueOf(t.getToken(0)).doubleValue(); y = Double.valueOf(t.getToken(1)).doubleValue(); z = Double.valueOf(t.getToken(2)).doubleValue(); dimension = 3; } else { x = Double.valueOf(t.getToken(0)).doubleValue(); y = Double.valueOf(t.getToken(1)).doubleValue(); z = 0.0; dimension = 2; } } catch(NumberFormatException e) { throw new PSQLException("postgis.Point",e.toString()); } } public String toString() { return "POINT (" + getValue() + ")"; } public String getValue() { if ( dimension == 3 ) { return x+" "+y+" "+z; } else { return x+" "+y; } } public double getX() { return x; } public double getY() { return y; } public double getZ() { return z; } public void setX(double x) { this.x = x; } public void setY(double y) { this.y = y; } public void setZ(double z) { this.z = z; } public void setX(int x) { this.x = (double)x; } public void setY(int y) { this.y = (double)y; } public void setZ(int z) { this.z = (double)z; } } postgis-0.8.1/jdbc/org/postgis/Polygon.java0100664000077300001440000000232507314701322020302 0ustar postgisuserspackage org.postgis; import org.postgresql.util.*; import java.sql.*; import java.util.*; public class Polygon extends Geometry { LinearRing[] rings; public Polygon() { type = POLYGON; } public Polygon(LinearRing[] rings) { this(); this.rings = rings; dimension = rings[0].dimension; } public Polygon(String value) throws SQLException { this(); value = value.trim(); if ( value.indexOf("POLYGON") == 0 ) { value = value.substring(7).trim(); } PGtokenizer t = new PGtokenizer(PGtokenizer.removePara(value),','); int nrings = t.getSize(); rings = new LinearRing[nrings]; for( int r = 0; r < nrings; r++) { rings[r] = new LinearRing(t.getToken(r)); } dimension = rings[0].dimension; } public String toString() { return "POLYGON " + getValue(); } public String getValue() { StringBuffer b = new StringBuffer("("); for( int r = 0; r < rings.length; r++ ) { if( r > 0 ) b.append(","); b.append(rings[r].toString()); } b.append(")"); return b.toString(); } public int numRings() { return rings.length; } public LinearRing getRing(int idx) { if( idx >= 0 & idx < rings.length ) { return rings[idx]; } else { return null; } } } postgis-0.8.1/jdbc/Makefile0100664000077300001440000000151307644713075015205 0ustar postgisusersJAVAC = javac JAVA = java JAR = jar CLASSPATH = /home/pramsey/geotools/extbin/postgis/lib/postgresql.jar: all: ogis \ pgobjs \ test jar: $(JAR) -cf postgis.jar org/postgis/*.java org/postgis/*.class README ogis: $(JAVAC) -classpath $(CLASSPATH) \ org/postgis/Geometry.java \ org/postgis/Point.java \ org/postgis/MultiPoint.java \ org/postgis/LineString.java \ org/postgis/MultiLineString.java \ org/postgis/LinearRing.java \ org/postgis/Polygon.java \ org/postgis/MultiPolygon.java pgobjs: $(JAVAC) -classpath $(CLASSPATH) \ org/postgis/PGgeometry.java \ org/postgis/PGbox3d.java test: $(JAVAC) -classpath $(CLASSPATH) examples/Test.java $(JAVA) -classpath $(CLASSPATH) examples/Test jtest: $(JAVAC) -classpath $(CLASSPATH) examples/TestServer.java $(JAVA) -classpath $(CLASSPATH) examples/TestServer postgis-0.8.1/jdbc/README0100664000077300001440000000113407460032111014401 0ustar postgisusersTo use the PostGIS types, you must: - have the postgis.jar in your CLASSPATH - have a PostgreSQL JDBC Connection instance Connection conn = new Connection(); ((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry"); ((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d"); To build the examples: - put the jar file containing the PostgreSQL JDBC under postgis/original/jars/postgresql.jar The file might be named jdbc7.1-1.2.jar originally - edit the file TestServer.java to adjust the connection information, run the test with 'make jtest' postgis-0.8.1/jdbc/examples/0040775000077300001440000000000010000570751015344 5ustar postgisuserspostgis-0.8.1/jdbc/examples/Test.java0100664000077300001440000000356607314701322017141 0ustar postgisuserspackage examples; import org.postgis.*; public class Test { public static void main(String[] args) { String mlng_str = "MULTILINESTRING ((10 10 0,20 10 0,20 20 0,20 10 0,10 10 0),(5 5 0,5 6 0,6 6 0,6 5 0,5 5 0))"; String mplg_str = "MULTIPOLYGON (((10 10 0,20 10 0,20 20 0,20 10 0,10 10 0),(5 5 0,5 6 0,6 6 0,6 5 0,5 5 0)),((10 10 0,20 10 0,20 20 0,20 10 0,10 10 0),(5 5 0,5 6 0,6 6 0,6 5 0,5 5 0)))"; String plg_str = "POLYGON ((10 10 0,20 10 0,20 20 0,20 10 0,10 10 0),(5 5 0,5 6 0,6 6 0,6 5 0,5 5 0))"; String lng_str = "LINESTRING (10 10 20,20 20 20, 50 50 50, 34 34 34)"; String ptg_str = "POINT(10 10 20)"; String pt_str = "10 10 20"; String lr_str = "(10 10 20,34 34 34, 23 19 23 , 10 10 11)"; try { System.out.println("LinearRing Test:"); System.out.println(lr_str); LinearRing lr = new LinearRing(lr_str); System.out.println(lr.toString()); System.out.println("Point Test:"); System.out.println(ptg_str); Point ptg = new Point(ptg_str); System.out.println(ptg.toString()); System.out.println("LineString Test:"); System.out.println(lng_str); LineString lng = new LineString(lng_str); System.out.println(lng.toString()); System.out.println("Polygon Test:"); System.out.println(plg_str); Polygon plg = new Polygon(plg_str); System.out.println(plg.toString()); System.out.println("MultiPolygon Test:"); System.out.println(mplg_str); MultiPolygon mplg = new MultiPolygon(mplg_str); System.out.println(mplg.toString()); System.out.println("MultiLineString Test:"); System.out.println(mlng_str); MultiLineString mlng = new MultiLineString(mlng_str); System.out.println(mlng.toString()); System.out.println("PG Test:"); System.out.println(mlng_str); PGgeometry pgf = new PGgeometry(mlng_str); System.out.println(pgf.toString()); } catch(Exception e) { e.printStackTrace(); } } } postgis-0.8.1/jdbc/examples/TestServer.java0100664000077300001440000000375507460032111020323 0ustar postgisuserspackage examples; import java.sql.*; import java.util.*; import java.lang.*; import org.postgis.*; public class TestServer { public static void main(String[] args) { Connection conn; String dbname = "tb"; String dbuser = "dblasby"; String dbpass = ""; String dbhost = "ox"; String dbport = "5555"; String dbtable = "jdbc_test"; String dropSQL = "drop table " + dbtable; String createSQL = "create table " + dbtable + " (geom geometry, id int4)"; String insertPointSQL = "insert into " + dbtable + " values ('POINT (10 10 10)',1)"; String insertPolygonSQL = "insert into " + dbtable + " values ('POLYGON ((0 0 0,0 10 0,10 10 0,10 0 0,0 0 0))',2)"; try { System.out.println("Creating JDBC connection..."); Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://" + dbhost + ":" + dbport + "/" + dbname; conn = DriverManager.getConnection(url, dbuser, dbpass); System.out.println("Adding geometric type entries..."); ((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry"); ((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d"); Statement s = conn.createStatement(); System.out.println("Creating table with geometric types..."); //table might not yet exist try { s.execute(dropSQL); } catch(Exception e) { e.printStackTrace(); } s.execute(createSQL); System.out.println("Inserting point..."); s.execute(insertPointSQL); System.out.println("Inserting polygon..."); s.execute(insertPolygonSQL); System.out.println("Done."); s = conn.createStatement(); System.out.println("Querying table..."); ResultSet r = s.executeQuery("select asText(geom),id from " + dbtable); while( r.next() ) { Object obj = r.getObject(1); int id = r.getInt(2); System.out.println("Row " + id + ":"); System.out.println(obj.toString()); } s.close(); conn.close(); } catch( Exception e ) { e.printStackTrace(); } } } postgis-0.8.1/loader/0040775000077300001440000000000010000570751014072 5ustar postgisuserspostgis-0.8.1/loader/.cvsignore0100664000077300001440000000002407754517432016106 0ustar postgisuserspgsql2shp shp2pgsql postgis-0.8.1/loader/Makefile0100664000077300001440000000265007763703460015553 0ustar postgisusers# # PostGIS Loader Makefile # SHELL = /bin/sh subdir = contrib/postgis/loader EXE = ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN) EXE = .exe endif # Root of the pgsql source tree ifeq (${PGSQL_SRC},) top_builddir = ../../.. include $(top_builddir)/src/Makefile.global libdir := $(libdir)/contrib else top_builddir = ${PGSQL_SRC} include $(top_builddir)/src/Makefile.global libdir := ${PWD} endif OBJS = shpopen.o dbfopen.o getopt.o #--------------------------------------------------------------- # Test the version string and set the USE_VERSION macro # appropriately. # ifneq ($(findstring 7.1,$(VERSION)),) USE_VERSION=71 else ifneq ($(findstring 7.2,$(VERSION)),) USE_VERSION=72 else USE_VERSION=73 endif endif #--------------------------------------------------------------- override CFLAGS := -g -I.. -I$(srcdir) -I$(top_builddir)/src/interfaces/libpq $(CFLAGS) -DFRONTEND -DSYSCONFDIR='"$(sysconfdir)"' -DUSE_VERSION=$(USE_VERSION) all: shp2pgsql$(EXE) pgsql2shp$(EXE) pgsql2shp$(EXE): $(OBJS) pgsql2shp.o $(CC) $(CFLAGS) $(OBJS) pgsql2shp.o $(libpq) $(LDFLAGS) -o $@ shp2pgsql$(EXE): $(OBJS) shp2pgsql.o $(CC) $(CFLAGS) $(OBJS) shp2pgsql.o $(LDFLAGS) -o $@ install: all $(INSTALL_PROGRAM) pgsql2shp$(EXE) $(bindir)/pgsql2shp$(EXE) $(INSTALL_PROGRAM) shp2pgsql$(EXE) $(bindir)/shp2pgsql$(EXE) clean: @rm -f $(OBJS) shp2pgsql.o pgsql2shp.o shp2pgsql$(EXE) pgsql2shp$(EXE) postgis-0.8.1/loader/README.pgsql2shp0100664000077300001440000000263507465062064016715 0ustar postgisuserspgsql2shp - Convert PostGIS Table to Shape ~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VERSION: 0.7 (2025/05/04) MORE INFORMATION: http://postgis.refractions.net INTRODUCTION: This program takes PostGIS spatial tables and outputs ESRI shape files. This application uses functionality from shapelib 1.2.9 by Frank Warmerdam to write to ESRI Shape files. INSTALLATION: To build pgsql2shp just run 'make'. Copy the binary wherever you like. :) USAGE: pgsql2shp []
The is the name of the database to connect to. The
is the table to read spatial data from. Options: -d: set the dump file to be 3 dimensional, the default is 2d only. -f : Use this option to specify the specific name of the file to create. If not specified the file will be named after the table you dumped with shpafile extensions on it. -h : allows you to specify what machine the database is on. The default machine if not specifid is the localhost. -p : allows you to specify a which database port to connect to. The default if not given is port 5432. -P : Connect to the database with the specified password. -u : Connect to the database as the specified user. -g Specify the geometry column to be exported. EXAMPLES: pgsql2shp -f myfile -p 5555 my_db roads_table postgis-0.8.1/loader/README.shp2pgsql0100664000077300001440000000453007465062064016711 0ustar postgisusersshp2pgsql - Convert Shape file to PostGIS ~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VERSION: 0.7 (2025/05/04) MORE INFORMATION: http://postgis.refractions.net INTRODUCTION: This program takes in ESRI shape files and output formatted text suitable for uploading to the PostGIS/PostgreSQL spatial database using the psql terminal monitor. This application uses functionality from shapelib 1.2.9 by Frank Warmerdam to read from ESRI Shape files. INSTALLATION: To build shp2pgsql just run 'make'. Copy the binary wherever you like. :) USAGE: shp2pgsql [] The is the name of the shape file, without any extension information. For example, 'roads' would be the name of the shapefile comprising the 'roads.shp', 'roads.shx', and 'roads.dbf' files. The is the name of the database table you want the data stored in in the database. Within that table, the geometry will be placed in the 'geo_value' column by default. The is the name of the database you are going to put the the data into. The options are as follows: (-a || -c || -d) these options are mutually exclusive. -a Append mode. Do not delete the target table or try to create a new table, simple insert the data into the existing table. A table will have to exist for this to work, it is usually used after a create mode as been run once.(mutually exclusive with -c and -d) -c Create mode. This is the default mode is no other is specified. Create a new table and upload the data into that table. (mutually exclusive with -a and -d) -d Delete mode. Delete the database table named , then create a new one with that name before uploading the data into the new empty database table.(mutually exclusive with -a and -c) -D Dump. When inserting the data into the table use 'dump' format. Dump format is used by PostgreSQL for large data dumps and uploads. Use this mode if your upload dataset is very large. (you may still specify -a,-c or -d in conjunction with -D) EXAMPLES: Loading directly: shp2pgsql -c roads1 roads_table my_db | psql -d my_db shp2pgsql -a roads2 roads_table my_db | psql -d my_db Saving to an intermiate file using the 'dump' format: shp2pgsql -D roads1 roads_table my_db > roads.sql psql -d my_db -f roads.sql postgis-0.8.1/loader/dbfopen.c0100664000077300001440000015002407762724760015700 0ustar postgisusers/****************************************************************************** * $Id: dbfopen.c,v 1.6 2025/12/01 20:52:00 strk Exp $ * * Project: Shapelib * Purpose: Implementation of .dbf access API documented in dbf_api.html. * Author: Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999, Frank Warmerdam * * This software is available under the following "MIT Style" license, * or at the option of the licensee under the LGPL (see LICENSE.LGPL). This * option is discussed in more detail in shapelib.html. * * -- * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************** * * $Log: dbfopen.c,v $ * Revision 1.6 2025/12/01 20:52:00 strk * shapelib put in sync with gdal cvs * * Revision 1.52 2025/07/08 15:20:03 warmerda * avoid warnings about downcasting to unsigned char * * Revision 1.51 2025/07/08 13:50:15 warmerda * DBFIsAttributeNULL check for pszValue==NULL - bug 360 * * Revision 1.50 2025/04/21 18:58:25 warmerda * ensure current record is flushed at same time as header is updated * * Revision 1.49 2025/04/21 18:30:37 warmerda * added header write/update public methods * * Revision 1.48 2025/03/10 14:51:27 warmerda * DBFWrite* calls now return FALSE if they have to truncate * * Revision 1.47 2025/11/20 03:32:22 warmerda * Ensure field name in DBFGetFieldIndex() is properly terminated. * * Revision 1.46 2025/10/09 13:10:21 warmerda * Added check that width is positive. * * Revision 1.45 2025/09/29 00:00:08 warmerda * added FTLogical and logical attribute read/write calls * * Revision 1.44 2025/05/07 13:46:11 warmerda * Added DBFWriteAttributeDirectly(). * * Revision 1.43 2025/02/13 19:39:21 warmerda * Fix casting issues in DBFCloneEmpty(). * * Revision 1.42 2025/01/15 14:36:07 warmerda * updated email address * * Revision 1.41 2025/01/15 14:31:49 warmerda * compute rather than copying nHeaderLength in DBFCloneEmpty() * * Revision 1.40 2025/01/09 04:32:35 warmerda * fixed to read correct amount of header * * Revision 1.39 2025/12/11 22:41:03 warmerda * improve io related error checking when reading header * * Revision 1.38 2025/11/28 16:07:31 warmerda * Cleanup to avoid compiler warnings as suggested by Richard Hash. * * Revision 1.37 2025/07/04 05:18:09 warmerda * do last fix properly * * Revision 1.36 2025/07/04 05:16:09 warmerda * fixed fieldname comparison in DBFGetFieldIndex * * Revision 1.35 2025/06/22 02:10:06 warmerda * fixed NULL shape support with help from Jim Matthews * * Revision 1.33 2025/05/31 19:20:13 warmerda * added DBFGetFieldIndex() * * Revision 1.32 2025/05/31 18:15:40 warmerda * Added support for NULL fields in DBF files * * Revision 1.31 2025/05/23 13:36:52 warmerda * added use of SHPAPI_CALL * * Revision 1.30 2025/12/05 14:43:38 warmerda * DBReadAttribute() white space trimming bug fix * * Revision 1.29 2025/10/05 14:36:44 warmerda * fix bug with writing very wide numeric fields * * Revision 1.28 2025/09/25 14:18:07 warmerda * Added some casts of strlen() return result to fix warnings on some * systems, as submitted by Daniel. * * Revision 1.27 2025/09/25 14:15:51 warmerda * added DBFGetNativeFieldType() * * Revision 1.26 2025/07/07 13:39:45 warmerda * removed unused variables, and added system include files * * Revision 1.25 2025/05/29 18:19:13 warmerda * avoid use of uchar, and adding casting fix * * Revision 1.24 2025/05/23 13:38:27 warmerda * Added error checks on return results of fread() and fseek(). * * Revision 1.23 2025/05/23 13:25:49 warmerda * Avoid crashing if field or record are out of range in dbfread*attribute(). * * Revision 1.22 2025/12/15 13:47:24 warmerda * Added stdlib.h to ensure that atof() is prototyped. * * Revision 1.21 2025/12/13 17:25:46 warmerda * Added support for upper case .DBF extention. * * Revision 1.20 2025/11/30 16:32:11 warmerda * Use atof() instead of sscanf(). * * Revision 1.19 2025/11/05 14:12:04 warmerda * updated license terms * * Revision 1.18 2025/07/27 00:53:28 warmerda * ensure that whole old field value clear on write of string * * Revision 1.1 2025/07/05 18:58:07 warmerda * New * * Revision 1.17 2025/06/11 19:14:12 warmerda * Fixed some memory leaks. * * Revision 1.16 2025/06/11 19:04:11 warmerda * Remoted some unused variables. * * Revision 1.15 2025/05/11 03:19:28 warmerda * added new Tuple api, and improved extension handling - add from candrsn * * Revision 1.14 2025/05/04 15:01:48 warmerda * Added 'F' support. * * Revision 1.13 2025/03/23 17:38:59 warmerda * DBFAddField() now actually does return the new field number, or -1 if * it fails. * * Revision 1.12 2025/03/06 02:54:46 warmerda * Added logic to convert shapefile name to dbf filename in DBFOpen() * for convenience. * * Revision 1.11 2024/12/31 15:30:34 warmerda * Improved the interchangability of numeric and string attributes. Add * white space trimming option for attributes. * * Revision 1.10 2025/12/03 16:36:44 warmerda * Use r+b instead of rb+ for binary access. * * Revision 1.9 2025/12/03 15:34:23 warmerda * Updated copyright message. * * Revision 1.8 2025/12/04 15:40:15 warmerda * Added newline character after field definitions. * * Revision 1.7 2025/03/06 14:02:10 warmerda * Ensure bUpdated is initialized. * * Revision 1.6 2025/02/12 04:54:41 warmerda * Ensure that DBFWriteAttribute() returns TRUE if it succeeds. * * Revision 1.5 2025/10/21 03:15:12 warmerda * Changed to use binary file access, and ensure that the * field name field is zero filled, and limited to 10 chars. * * Revision 1.4 2025/08/24 18:10:42 warmerda * Added use of SfRealloc() to avoid pre-ANSI realloc() functions such * as on the Sun. * * Revision 1.3 2025/08/04 03:15:16 warmerda * Fixed up header. * * Revision 1.2 2025/08/04 03:14:43 warmerda * Added header. */ static char rcsid[] = "$Id: dbfopen.c,v 1.6 2025/12/01 20:52:00 strk Exp $"; #include "shapefil.h" #include #include #include #include #ifndef FALSE # define FALSE 0 # define TRUE 1 #endif static int nStringFieldLen = 0; static char * pszStringField = NULL; /************************************************************************/ /* SfRealloc() */ /* */ /* A realloc cover function that will access a NULL pointer as */ /* a valid input. */ /************************************************************************/ static void * SfRealloc( void * pMem, int nNewSize ) { if( pMem == NULL ) return( (void *) malloc(nNewSize) ); else return( (void *) realloc(pMem,nNewSize) ); } /************************************************************************/ /* DBFWriteHeader() */ /* */ /* This is called to write out the file header, and field */ /* descriptions before writing any actual data records. This */ /* also computes all the DBFDataSet field offset/size/decimals */ /* and so forth values. */ /************************************************************************/ static void DBFWriteHeader(DBFHandle psDBF) { unsigned char abyHeader[XBASE_FLDHDR_SZ]; int i; if( !psDBF->bNoHeader ) return; psDBF->bNoHeader = FALSE; /* -------------------------------------------------------------------- */ /* Initialize the file header information. */ /* -------------------------------------------------------------------- */ for( i = 0; i < XBASE_FLDHDR_SZ; i++ ) abyHeader[i] = 0; abyHeader[0] = 0x03; /* memo field? - just copying */ /* write out a dummy date */ abyHeader[1] = 95; /* YY */ abyHeader[2] = 7; /* MM */ abyHeader[3] = 26; /* DD */ /* record count preset at zero */ abyHeader[8] = (unsigned char) (psDBF->nHeaderLength % 256); abyHeader[9] = (unsigned char) (psDBF->nHeaderLength / 256); abyHeader[10] = (unsigned char) (psDBF->nRecordLength % 256); abyHeader[11] = (unsigned char) (psDBF->nRecordLength / 256); /* -------------------------------------------------------------------- */ /* Write the initial 32 byte file header, and all the field */ /* descriptions. */ /* -------------------------------------------------------------------- */ fseek( psDBF->fp, 0, 0 ); fwrite( abyHeader, XBASE_FLDHDR_SZ, 1, psDBF->fp ); fwrite( psDBF->pszHeader, XBASE_FLDHDR_SZ, psDBF->nFields, psDBF->fp ); /* -------------------------------------------------------------------- */ /* Write out the newline character if there is room for it. */ /* -------------------------------------------------------------------- */ if( psDBF->nHeaderLength > 32*psDBF->nFields + 32 ) { char cNewline; cNewline = 0x0d; fwrite( &cNewline, 1, 1, psDBF->fp ); } } /************************************************************************/ /* DBFFlushRecord() */ /* */ /* Write out the current record if there is one. */ /************************************************************************/ static void DBFFlushRecord( DBFHandle psDBF ) { int nRecordOffset; if( psDBF->bCurrentRecordModified && psDBF->nCurrentRecord > -1 ) { psDBF->bCurrentRecordModified = FALSE; nRecordOffset = psDBF->nRecordLength * psDBF->nCurrentRecord + psDBF->nHeaderLength; fseek( psDBF->fp, nRecordOffset, 0 ); fwrite( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); } } /************************************************************************/ /* DBFUpdateHeader() */ /************************************************************************/ void SHPAPI_CALL DBFUpdateHeader( DBFHandle psDBF ) { unsigned char abyFileHeader[32]; if( psDBF->bNoHeader ) DBFWriteHeader( psDBF ); DBFFlushRecord( psDBF ); fseek( psDBF->fp, 0, 0 ); fread( abyFileHeader, 32, 1, psDBF->fp ); abyFileHeader[4] = (unsigned char) (psDBF->nRecords % 256); abyFileHeader[5] = (unsigned char) ((psDBF->nRecords/256) % 256); abyFileHeader[6] = (unsigned char) ((psDBF->nRecords/(256*256)) % 256); abyFileHeader[7] = (unsigned char) ((psDBF->nRecords/(256*256*256)) % 256); fseek( psDBF->fp, 0, 0 ); fwrite( abyFileHeader, 32, 1, psDBF->fp ); fflush( psDBF->fp ); } /************************************************************************/ /* DBFOpen() */ /* */ /* Open a .dbf file. */ /************************************************************************/ DBFHandle SHPAPI_CALL DBFOpen( const char * pszFilename, const char * pszAccess ) { DBFHandle psDBF; unsigned char *pabyBuf; int nFields, nHeadLen, nRecLen, iField, i; char *pszBasename, *pszFullname; /* -------------------------------------------------------------------- */ /* We only allow the access strings "rb" and "r+". */ /* -------------------------------------------------------------------- */ if( strcmp(pszAccess,"r") != 0 && strcmp(pszAccess,"r+") != 0 && strcmp(pszAccess,"rb") != 0 && strcmp(pszAccess,"rb+") != 0 && strcmp(pszAccess,"r+b") != 0 ) return( NULL ); if( strcmp(pszAccess,"r") == 0 ) pszAccess = "rb"; if( strcmp(pszAccess,"r+") == 0 ) pszAccess = "rb+"; /* -------------------------------------------------------------------- */ /* Compute the base (layer) name. If there is any extension */ /* on the passed in filename we will strip it off. */ /* -------------------------------------------------------------------- */ pszBasename = (char *) malloc(strlen(pszFilename)+5); strcpy( pszBasename, pszFilename ); for( i = strlen(pszBasename)-1; i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' && pszBasename[i] != '\\'; i-- ) {} if( pszBasename[i] == '.' ) pszBasename[i] = '\0'; pszFullname = (char *) malloc(strlen(pszBasename) + 5); sprintf( pszFullname, "%s.dbf", pszBasename ); psDBF = (DBFHandle) calloc( 1, sizeof(DBFInfo) ); psDBF->fp = fopen( pszFullname, pszAccess ); if( psDBF->fp == NULL ) { sprintf( pszFullname, "%s.DBF", pszBasename ); psDBF->fp = fopen(pszFullname, pszAccess ); } free( pszBasename ); free( pszFullname ); if( psDBF->fp == NULL ) { free( psDBF ); return( NULL ); } psDBF->bNoHeader = FALSE; psDBF->nCurrentRecord = -1; psDBF->bCurrentRecordModified = FALSE; /* -------------------------------------------------------------------- */ /* Read Table Header info */ /* -------------------------------------------------------------------- */ pabyBuf = (unsigned char *) malloc(500); if( fread( pabyBuf, 32, 1, psDBF->fp ) != 1 ) { fclose( psDBF->fp ); free( pabyBuf ); free( psDBF ); return NULL; } psDBF->nRecords = pabyBuf[4] + pabyBuf[5]*256 + pabyBuf[6]*256*256 + pabyBuf[7]*256*256*256; psDBF->nHeaderLength = nHeadLen = pabyBuf[8] + pabyBuf[9]*256; psDBF->nRecordLength = nRecLen = pabyBuf[10] + pabyBuf[11]*256; psDBF->nFields = nFields = (nHeadLen - 32) / 32; psDBF->pszCurrentRecord = (char *) malloc(nRecLen); /* -------------------------------------------------------------------- */ /* Read in Field Definitions */ /* -------------------------------------------------------------------- */ pabyBuf = (unsigned char *) SfRealloc(pabyBuf,nHeadLen); psDBF->pszHeader = (char *) pabyBuf; fseek( psDBF->fp, 32, 0 ); if( fread( pabyBuf, nHeadLen-32, 1, psDBF->fp ) != 1 ) { fclose( psDBF->fp ); free( pabyBuf ); free( psDBF ); return NULL; } psDBF->panFieldOffset = (int *) malloc(sizeof(int) * nFields); psDBF->panFieldSize = (int *) malloc(sizeof(int) * nFields); psDBF->panFieldDecimals = (int *) malloc(sizeof(int) * nFields); psDBF->pachFieldType = (char *) malloc(sizeof(char) * nFields); for( iField = 0; iField < nFields; iField++ ) { unsigned char *pabyFInfo; pabyFInfo = pabyBuf+iField*32; if( pabyFInfo[11] == 'N' || pabyFInfo[11] == 'F' ) { psDBF->panFieldSize[iField] = pabyFInfo[16]; psDBF->panFieldDecimals[iField] = pabyFInfo[17]; } else { psDBF->panFieldSize[iField] = pabyFInfo[16] + pabyFInfo[17]*256; psDBF->panFieldDecimals[iField] = 0; } psDBF->pachFieldType[iField] = (char) pabyFInfo[11]; if( iField == 0 ) psDBF->panFieldOffset[iField] = 1; else psDBF->panFieldOffset[iField] = psDBF->panFieldOffset[iField-1] + psDBF->panFieldSize[iField-1]; } return( psDBF ); } /************************************************************************/ /* DBFClose() */ /************************************************************************/ void SHPAPI_CALL DBFClose(DBFHandle psDBF) { /* -------------------------------------------------------------------- */ /* Write out header if not already written. */ /* -------------------------------------------------------------------- */ if( psDBF->bNoHeader ) DBFWriteHeader( psDBF ); DBFFlushRecord( psDBF ); /* -------------------------------------------------------------------- */ /* Update last access date, and number of records if we have */ /* write access. */ /* -------------------------------------------------------------------- */ if( psDBF->bUpdated ) DBFUpdateHeader( psDBF ); /* -------------------------------------------------------------------- */ /* Close, and free resources. */ /* -------------------------------------------------------------------- */ fclose( psDBF->fp ); if( psDBF->panFieldOffset != NULL ) { free( psDBF->panFieldOffset ); free( psDBF->panFieldSize ); free( psDBF->panFieldDecimals ); free( psDBF->pachFieldType ); } free( psDBF->pszHeader ); free( psDBF->pszCurrentRecord ); free( psDBF ); if( pszStringField != NULL ) { free( pszStringField ); pszStringField = NULL; nStringFieldLen = 0; } } /************************************************************************/ /* DBFCreate() */ /* */ /* Create a new .dbf file. */ /************************************************************************/ DBFHandle SHPAPI_CALL DBFCreate( const char * pszFilename ) { DBFHandle psDBF; FILE *fp; char *pszFullname, *pszBasename; int i; /* -------------------------------------------------------------------- */ /* Compute the base (layer) name. If there is any extension */ /* on the passed in filename we will strip it off. */ /* -------------------------------------------------------------------- */ pszBasename = (char *) malloc(strlen(pszFilename)+5); strcpy( pszBasename, pszFilename ); for( i = strlen(pszBasename)-1; i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' && pszBasename[i] != '\\'; i-- ) {} if( pszBasename[i] == '.' ) pszBasename[i] = '\0'; pszFullname = (char *) malloc(strlen(pszBasename) + 5); sprintf( pszFullname, "%s.dbf", pszBasename ); free( pszBasename ); /* -------------------------------------------------------------------- */ /* Create the file. */ /* -------------------------------------------------------------------- */ fp = fopen( pszFullname, "wb" ); if( fp == NULL ) return( NULL ); fputc( 0, fp ); fclose( fp ); fp = fopen( pszFullname, "rb+" ); if( fp == NULL ) return( NULL ); free( pszFullname ); /* -------------------------------------------------------------------- */ /* Create the info structure. */ /* -------------------------------------------------------------------- */ psDBF = (DBFHandle) malloc(sizeof(DBFInfo)); psDBF->fp = fp; psDBF->nRecords = 0; psDBF->nFields = 0; psDBF->nRecordLength = 1; psDBF->nHeaderLength = 33; psDBF->panFieldOffset = NULL; psDBF->panFieldSize = NULL; psDBF->panFieldDecimals = NULL; psDBF->pachFieldType = NULL; psDBF->pszHeader = NULL; psDBF->nCurrentRecord = -1; psDBF->bCurrentRecordModified = FALSE; psDBF->pszCurrentRecord = NULL; psDBF->bNoHeader = TRUE; return( psDBF ); } /************************************************************************/ /* DBFAddField() */ /* */ /* Add a field to a newly created .dbf file before any records */ /* are written. */ /************************************************************************/ int SHPAPI_CALL DBFAddField(DBFHandle psDBF, const char * pszFieldName, DBFFieldType eType, int nWidth, int nDecimals ) { char *pszFInfo; int i; /* -------------------------------------------------------------------- */ /* Do some checking to ensure we can add records to this file. */ /* -------------------------------------------------------------------- */ if( psDBF->nRecords > 0 ) return( -1 ); if( !psDBF->bNoHeader ) return( -1 ); if( eType != FTDouble && nDecimals != 0 ) return( -1 ); if( nWidth < 1 ) return -1; /* -------------------------------------------------------------------- */ /* SfRealloc all the arrays larger to hold the additional field */ /* information. */ /* -------------------------------------------------------------------- */ psDBF->nFields++; psDBF->panFieldOffset = (int *) SfRealloc( psDBF->panFieldOffset, sizeof(int) * psDBF->nFields ); psDBF->panFieldSize = (int *) SfRealloc( psDBF->panFieldSize, sizeof(int) * psDBF->nFields ); psDBF->panFieldDecimals = (int *) SfRealloc( psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields ); psDBF->pachFieldType = (char *) SfRealloc( psDBF->pachFieldType, sizeof(char) * psDBF->nFields ); /* -------------------------------------------------------------------- */ /* Assign the new field information fields. */ /* -------------------------------------------------------------------- */ psDBF->panFieldOffset[psDBF->nFields-1] = psDBF->nRecordLength; psDBF->nRecordLength += nWidth; psDBF->panFieldSize[psDBF->nFields-1] = nWidth; psDBF->panFieldDecimals[psDBF->nFields-1] = nDecimals; if( eType == FTLogical ) psDBF->pachFieldType[psDBF->nFields-1] = 'L'; else if( eType == FTString ) psDBF->pachFieldType[psDBF->nFields-1] = 'C'; else psDBF->pachFieldType[psDBF->nFields-1] = 'N'; /* -------------------------------------------------------------------- */ /* Extend the required header information. */ /* -------------------------------------------------------------------- */ psDBF->nHeaderLength += 32; psDBF->bUpdated = FALSE; psDBF->pszHeader = (char *) SfRealloc(psDBF->pszHeader,psDBF->nFields*32); pszFInfo = psDBF->pszHeader + 32 * (psDBF->nFields-1); for( i = 0; i < 32; i++ ) pszFInfo[i] = '\0'; if( (int) strlen(pszFieldName) < 10 ) strncpy( pszFInfo, pszFieldName, strlen(pszFieldName)); else strncpy( pszFInfo, pszFieldName, 10); pszFInfo[11] = psDBF->pachFieldType[psDBF->nFields-1]; if( eType == FTString ) { pszFInfo[16] = (unsigned char) (nWidth % 256); pszFInfo[17] = (unsigned char) (nWidth / 256); } else { pszFInfo[16] = (unsigned char) nWidth; pszFInfo[17] = (unsigned char) nDecimals; } /* -------------------------------------------------------------------- */ /* Make the current record buffer appropriately larger. */ /* -------------------------------------------------------------------- */ psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord, psDBF->nRecordLength); return( psDBF->nFields-1 ); } /************************************************************************/ /* DBFReadAttribute() */ /* */ /* Read one of the attribute fields of a record. */ /************************************************************************/ static void *DBFReadAttribute(DBFHandle psDBF, int hEntity, int iField, char chReqType ) { int nRecordOffset; unsigned char *pabyRec; void *pReturnField = NULL; static double dDoubleField; /* -------------------------------------------------------------------- */ /* Verify selection. */ /* -------------------------------------------------------------------- */ if( hEntity < 0 || hEntity >= psDBF->nRecords ) return( NULL ); if( iField < 0 || iField >= psDBF->nFields ) return( NULL ); /* -------------------------------------------------------------------- */ /* Have we read the record? */ /* -------------------------------------------------------------------- */ if( psDBF->nCurrentRecord != hEntity ) { DBFFlushRecord( psDBF ); nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength; if( fseek( psDBF->fp, nRecordOffset, 0 ) != 0 ) { fprintf( stderr, "fseek(%d) failed on DBF file.\n", nRecordOffset ); return NULL; } if( fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ) != 1 ) { fprintf( stderr, "fread(%d) failed on DBF file.\n", psDBF->nRecordLength ); return NULL; } psDBF->nCurrentRecord = hEntity; } pabyRec = (unsigned char *) psDBF->pszCurrentRecord; /* -------------------------------------------------------------------- */ /* Ensure our field buffer is large enough to hold this buffer. */ /* -------------------------------------------------------------------- */ if( psDBF->panFieldSize[iField]+1 > nStringFieldLen ) { nStringFieldLen = psDBF->panFieldSize[iField]*2 + 10; pszStringField = (char *) SfRealloc(pszStringField,nStringFieldLen); } /* -------------------------------------------------------------------- */ /* Extract the requested field. */ /* -------------------------------------------------------------------- */ strncpy( pszStringField, ((const char *) pabyRec) + psDBF->panFieldOffset[iField], psDBF->panFieldSize[iField] ); pszStringField[psDBF->panFieldSize[iField]] = '\0'; pReturnField = pszStringField; /* -------------------------------------------------------------------- */ /* Decode the field. */ /* -------------------------------------------------------------------- */ if( chReqType == 'N' ) { dDoubleField = atof(pszStringField); pReturnField = &dDoubleField; } /* -------------------------------------------------------------------- */ /* Should we trim white space off the string attribute value? */ /* -------------------------------------------------------------------- */ #ifdef TRIM_DBF_WHITESPACE else { char *pchSrc, *pchDst; pchDst = pchSrc = pszStringField; while( *pchSrc == ' ' ) pchSrc++; while( *pchSrc != '\0' ) *(pchDst++) = *(pchSrc++); *pchDst = '\0'; while( pchDst != pszStringField && *(--pchDst) == ' ' ) *pchDst = '\0'; } #endif return( pReturnField ); } /************************************************************************/ /* DBFReadIntAttribute() */ /* */ /* Read an integer attribute. */ /************************************************************************/ int SHPAPI_CALL DBFReadIntegerAttribute( DBFHandle psDBF, int iRecord, int iField ) { double *pdValue; pdValue = (double *) DBFReadAttribute( psDBF, iRecord, iField, 'N' ); if( pdValue == NULL ) return 0; else return( (int) *pdValue ); } /************************************************************************/ /* DBFReadDoubleAttribute() */ /* */ /* Read a double attribute. */ /************************************************************************/ double SHPAPI_CALL DBFReadDoubleAttribute( DBFHandle psDBF, int iRecord, int iField ) { double *pdValue; pdValue = (double *) DBFReadAttribute( psDBF, iRecord, iField, 'N' ); if( pdValue == NULL ) return 0.0; else return( *pdValue ); } /************************************************************************/ /* DBFReadStringAttribute() */ /* */ /* Read a string attribute. */ /************************************************************************/ const char SHPAPI_CALL1(*) DBFReadStringAttribute( DBFHandle psDBF, int iRecord, int iField ) { return( (const char *) DBFReadAttribute( psDBF, iRecord, iField, 'C' ) ); } /************************************************************************/ /* DBFReadLogicalAttribute() */ /* */ /* Read a logical attribute. */ /************************************************************************/ const char SHPAPI_CALL1(*) DBFReadLogicalAttribute( DBFHandle psDBF, int iRecord, int iField ) { return( (const char *) DBFReadAttribute( psDBF, iRecord, iField, 'L' ) ); } /************************************************************************/ /* DBFIsAttributeNULL() */ /* */ /* Return TRUE if value for field is NULL. */ /* */ /* Contributed by Jim Matthews. */ /************************************************************************/ int SHPAPI_CALL DBFIsAttributeNULL( DBFHandle psDBF, int iRecord, int iField ) { const char *pszValue; pszValue = DBFReadStringAttribute( psDBF, iRecord, iField ); if( pszValue == NULL ) return TRUE; switch(psDBF->pachFieldType[iField]) { case 'N': case 'F': /* NULL numeric fields have value "****************" */ return pszValue[0] == '*'; case 'D': /* NULL date fields have value "00000000" */ return strncmp(pszValue,"00000000",8) == 0; case 'L': /* NULL boolean fields have value "?" */ return pszValue[0] == '?'; default: /* empty string fields are considered NULL */ return strlen(pszValue) == 0; } } /************************************************************************/ /* DBFGetFieldCount() */ /* */ /* Return the number of fields in this table. */ /************************************************************************/ int SHPAPI_CALL DBFGetFieldCount( DBFHandle psDBF ) { return( psDBF->nFields ); } /************************************************************************/ /* DBFGetRecordCount() */ /* */ /* Return the number of records in this table. */ /************************************************************************/ int SHPAPI_CALL DBFGetRecordCount( DBFHandle psDBF ) { return( psDBF->nRecords ); } /************************************************************************/ /* DBFGetFieldInfo() */ /* */ /* Return any requested information about the field. */ /************************************************************************/ DBFFieldType SHPAPI_CALL DBFGetFieldInfo( DBFHandle psDBF, int iField, char * pszFieldName, int * pnWidth, int * pnDecimals ) { if( iField < 0 || iField >= psDBF->nFields ) return( FTInvalid ); if( pnWidth != NULL ) *pnWidth = psDBF->panFieldSize[iField]; if( pnDecimals != NULL ) *pnDecimals = psDBF->panFieldDecimals[iField]; if( pszFieldName != NULL ) { int i; strncpy( pszFieldName, (char *) psDBF->pszHeader+iField*32, 11 ); pszFieldName[11] = '\0'; for( i = 10; i > 0 && pszFieldName[i] == ' '; i-- ) pszFieldName[i] = '\0'; } if ( psDBF->pachFieldType[iField] == 'L' ) return( FTLogical); else if( psDBF->pachFieldType[iField] == 'N' || psDBF->pachFieldType[iField] == 'F' || psDBF->pachFieldType[iField] == 'D' ) { if( psDBF->panFieldDecimals[iField] > 0 ) return( FTDouble ); else return( FTInteger ); } else { return( FTString ); } } /************************************************************************/ /* DBFWriteAttribute() */ /* */ /* Write an attribute record to the file. */ /************************************************************************/ static int DBFWriteAttribute(DBFHandle psDBF, int hEntity, int iField, void * pValue ) { int nRecordOffset, i, j, nRetResult = TRUE; unsigned char *pabyRec; char szSField[400], szFormat[20]; /* -------------------------------------------------------------------- */ /* Is this a valid record? */ /* -------------------------------------------------------------------- */ if( hEntity < 0 || hEntity > psDBF->nRecords ) return( FALSE ); if( psDBF->bNoHeader ) DBFWriteHeader(psDBF); /* -------------------------------------------------------------------- */ /* Is this a brand new record? */ /* -------------------------------------------------------------------- */ if( hEntity == psDBF->nRecords ) { DBFFlushRecord( psDBF ); psDBF->nRecords++; for( i = 0; i < psDBF->nRecordLength; i++ ) psDBF->pszCurrentRecord[i] = ' '; psDBF->nCurrentRecord = hEntity; } /* -------------------------------------------------------------------- */ /* Is this an existing record, but different than the last one */ /* we accessed? */ /* -------------------------------------------------------------------- */ if( psDBF->nCurrentRecord != hEntity ) { DBFFlushRecord( psDBF ); nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength; fseek( psDBF->fp, nRecordOffset, 0 ); fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); psDBF->nCurrentRecord = hEntity; } pabyRec = (unsigned char *) psDBF->pszCurrentRecord; psDBF->bCurrentRecordModified = TRUE; psDBF->bUpdated = TRUE; /* -------------------------------------------------------------------- */ /* Translate NULL value to valid DBF file representation. */ /* */ /* Contributed by Jim Matthews. */ /* -------------------------------------------------------------------- */ if( pValue == NULL ) { switch(psDBF->pachFieldType[iField]) { case 'N': case 'F': /* NULL numeric fields have value "****************" */ memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]), '*', psDBF->panFieldSize[iField] ); break; case 'D': /* NULL date fields have value "00000000" */ memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]), '0', psDBF->panFieldSize[iField] ); break; case 'L': /* NULL boolean fields have value "?" */ memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]), '?', psDBF->panFieldSize[iField] ); break; default: /* empty string fields are considered NULL */ memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]), '\0', psDBF->panFieldSize[iField] ); break; } return TRUE; } /* -------------------------------------------------------------------- */ /* Assign all the record fields. */ /* -------------------------------------------------------------------- */ switch( psDBF->pachFieldType[iField] ) { case 'D': case 'N': case 'F': if( psDBF->panFieldDecimals[iField] == 0 ) { int nWidth = psDBF->panFieldSize[iField]; if( sizeof(szSField)-2 < nWidth ) nWidth = sizeof(szSField)-2; sprintf( szFormat, "%%%dd", nWidth ); sprintf(szSField, szFormat, (int) *((double *) pValue) ); if( (int)strlen(szSField) > psDBF->panFieldSize[iField] ) { szSField[psDBF->panFieldSize[iField]] = '\0'; nRetResult = FALSE; } strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), szSField, strlen(szSField) ); } else { int nWidth = psDBF->panFieldSize[iField]; if( sizeof(szSField)-2 < nWidth ) nWidth = sizeof(szSField)-2; sprintf( szFormat, "%%%d.%df", nWidth, psDBF->panFieldDecimals[iField] ); sprintf(szSField, szFormat, *((double *) pValue) ); if( (int) strlen(szSField) > psDBF->panFieldSize[iField] ) { szSField[psDBF->panFieldSize[iField]] = '\0'; nRetResult = FALSE; } strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), szSField, strlen(szSField) ); } break; case 'L': if (psDBF->panFieldSize[iField] >= 1 && (*(char*)pValue == 'F' || *(char*)pValue == 'T')) *(pabyRec+psDBF->panFieldOffset[iField]) = *(char*)pValue; break; default: if( (int) strlen((char *) pValue) > psDBF->panFieldSize[iField] ) { j = psDBF->panFieldSize[iField]; nRetResult = FALSE; } else { memset( pabyRec+psDBF->panFieldOffset[iField], ' ', psDBF->panFieldSize[iField] ); j = strlen((char *) pValue); } strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), (char *) pValue, j ); break; } return( nRetResult ); } /************************************************************************/ /* DBFWriteAttributeDirectly() */ /* */ /* Write an attribute record to the file, but without any */ /* reformatting based on type. The provided buffer is written */ /* as is to the field position in the record. */ /************************************************************************/ int DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity, int iField, void * pValue ) { int nRecordOffset, i, j; unsigned char *pabyRec; /* -------------------------------------------------------------------- */ /* Is this a valid record? */ /* -------------------------------------------------------------------- */ if( hEntity < 0 || hEntity > psDBF->nRecords ) return( FALSE ); if( psDBF->bNoHeader ) DBFWriteHeader(psDBF); /* -------------------------------------------------------------------- */ /* Is this a brand new record? */ /* -------------------------------------------------------------------- */ if( hEntity == psDBF->nRecords ) { DBFFlushRecord( psDBF ); psDBF->nRecords++; for( i = 0; i < psDBF->nRecordLength; i++ ) psDBF->pszCurrentRecord[i] = ' '; psDBF->nCurrentRecord = hEntity; } /* -------------------------------------------------------------------- */ /* Is this an existing record, but different than the last one */ /* we accessed? */ /* -------------------------------------------------------------------- */ if( psDBF->nCurrentRecord != hEntity ) { DBFFlushRecord( psDBF ); nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength; fseek( psDBF->fp, nRecordOffset, 0 ); fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); psDBF->nCurrentRecord = hEntity; } pabyRec = (unsigned char *) psDBF->pszCurrentRecord; /* -------------------------------------------------------------------- */ /* Assign all the record fields. */ /* -------------------------------------------------------------------- */ if( (int)strlen((char *) pValue) > psDBF->panFieldSize[iField] ) j = psDBF->panFieldSize[iField]; else { memset( pabyRec+psDBF->panFieldOffset[iField], ' ', psDBF->panFieldSize[iField] ); j = strlen((char *) pValue); } strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), (char *) pValue, j ); psDBF->bCurrentRecordModified = TRUE; psDBF->bUpdated = TRUE; return( TRUE ); } /************************************************************************/ /* DBFWriteDoubleAttribute() */ /* */ /* Write a double attribute. */ /************************************************************************/ int SHPAPI_CALL DBFWriteDoubleAttribute( DBFHandle psDBF, int iRecord, int iField, double dValue ) { return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) ); } /************************************************************************/ /* DBFWriteIntegerAttribute() */ /* */ /* Write a integer attribute. */ /************************************************************************/ int SHPAPI_CALL DBFWriteIntegerAttribute( DBFHandle psDBF, int iRecord, int iField, int nValue ) { double dValue = nValue; return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) ); } /************************************************************************/ /* DBFWriteStringAttribute() */ /* */ /* Write a string attribute. */ /************************************************************************/ int SHPAPI_CALL DBFWriteStringAttribute( DBFHandle psDBF, int iRecord, int iField, const char * pszValue ) { return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) pszValue ) ); } /************************************************************************/ /* DBFWriteNULLAttribute() */ /* */ /* Write a string attribute. */ /************************************************************************/ int SHPAPI_CALL DBFWriteNULLAttribute( DBFHandle psDBF, int iRecord, int iField ) { return( DBFWriteAttribute( psDBF, iRecord, iField, NULL ) ); } /************************************************************************/ /* DBFWriteLogicalAttribute() */ /* */ /* Write a logical attribute. */ /************************************************************************/ int SHPAPI_CALL DBFWriteLogicalAttribute( DBFHandle psDBF, int iRecord, int iField, const char lValue) { return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) (&lValue) ) ); } /************************************************************************/ /* DBFWriteTuple() */ /* */ /* Write an attribute record to the file. */ /************************************************************************/ int SHPAPI_CALL DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple ) { int nRecordOffset, i; unsigned char *pabyRec; /* -------------------------------------------------------------------- */ /* Is this a valid record? */ /* -------------------------------------------------------------------- */ if( hEntity < 0 || hEntity > psDBF->nRecords ) return( FALSE ); if( psDBF->bNoHeader ) DBFWriteHeader(psDBF); /* -------------------------------------------------------------------- */ /* Is this a brand new record? */ /* -------------------------------------------------------------------- */ if( hEntity == psDBF->nRecords ) { DBFFlushRecord( psDBF ); psDBF->nRecords++; for( i = 0; i < psDBF->nRecordLength; i++ ) psDBF->pszCurrentRecord[i] = ' '; psDBF->nCurrentRecord = hEntity; } /* -------------------------------------------------------------------- */ /* Is this an existing record, but different than the last one */ /* we accessed? */ /* -------------------------------------------------------------------- */ if( psDBF->nCurrentRecord != hEntity ) { DBFFlushRecord( psDBF ); nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength; fseek( psDBF->fp, nRecordOffset, 0 ); fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); psDBF->nCurrentRecord = hEntity; } pabyRec = (unsigned char *) psDBF->pszCurrentRecord; memcpy ( pabyRec, pRawTuple, psDBF->nRecordLength ); psDBF->bCurrentRecordModified = TRUE; psDBF->bUpdated = TRUE; return( TRUE ); } /************************************************************************/ /* DBFReadTuple() */ /* */ /* Read one of the attribute fields of a record. */ /************************************************************************/ const char SHPAPI_CALL1(*) DBFReadTuple(DBFHandle psDBF, int hEntity ) { int nRecordOffset; unsigned char *pabyRec; static char *pReturnTuple = NULL; static int nTupleLen = 0; /* -------------------------------------------------------------------- */ /* Have we read the record? */ /* -------------------------------------------------------------------- */ if( hEntity < 0 || hEntity >= psDBF->nRecords ) return( NULL ); if( psDBF->nCurrentRecord != hEntity ) { DBFFlushRecord( psDBF ); nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength; fseek( psDBF->fp, nRecordOffset, 0 ); fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); psDBF->nCurrentRecord = hEntity; } pabyRec = (unsigned char *) psDBF->pszCurrentRecord; if ( nTupleLen < psDBF->nRecordLength) { nTupleLen = psDBF->nRecordLength; pReturnTuple = (char *) SfRealloc(pReturnTuple, psDBF->nRecordLength); } memcpy ( pReturnTuple, pabyRec, psDBF->nRecordLength ); return( pReturnTuple ); } /************************************************************************/ /* DBFCloneEmpty() */ /* */ /* Read one of the attribute fields of a record. */ /************************************************************************/ DBFHandle SHPAPI_CALL DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename ) { DBFHandle newDBF; newDBF = DBFCreate ( pszFilename ); if ( newDBF == NULL ) return ( NULL ); newDBF->pszHeader = (char *) malloc ( 32 * psDBF->nFields ); memcpy ( newDBF->pszHeader, psDBF->pszHeader, 32 * psDBF->nFields ); newDBF->nFields = psDBF->nFields; newDBF->nRecordLength = psDBF->nRecordLength; newDBF->nHeaderLength = 32 * (psDBF->nFields+1); newDBF->panFieldOffset = (int *) malloc ( sizeof(int) * psDBF->nFields ); memcpy ( newDBF->panFieldOffset, psDBF->panFieldOffset, sizeof(int) * psDBF->nFields ); newDBF->panFieldSize = (int *) malloc ( sizeof(int) * psDBF->nFields ); memcpy ( newDBF->panFieldSize, psDBF->panFieldSize, sizeof(int) * psDBF->nFields ); newDBF->panFieldDecimals = (int *) malloc ( sizeof(int) * psDBF->nFields ); memcpy ( newDBF->panFieldDecimals, psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields ); newDBF->pachFieldType = (char *) malloc ( sizeof(int) * psDBF->nFields ); memcpy ( newDBF->pachFieldType, psDBF->pachFieldType, sizeof(int) * psDBF->nFields ); newDBF->bNoHeader = TRUE; newDBF->bUpdated = TRUE; DBFWriteHeader ( newDBF ); DBFClose ( newDBF ); newDBF = DBFOpen ( pszFilename, "rb+" ); return ( newDBF ); } /************************************************************************/ /* DBFGetNativeFieldType() */ /* */ /* Return the DBase field type for the specified field. */ /* */ /* Value can be one of: 'C' (String), 'D' (Date), 'F' (Float), */ /* 'N' (Numeric, with or without decimal), */ /* 'L' (Logical), */ /* 'M' (Memo: 10 digits .DBT block ptr) */ /************************************************************************/ char SHPAPI_CALL DBFGetNativeFieldType( DBFHandle psDBF, int iField ) { if( iField >=0 && iField < psDBF->nFields ) return psDBF->pachFieldType[iField]; return ' '; } /************************************************************************/ /* str_to_upper() */ /************************************************************************/ static void str_to_upper (char *string) { int len; short i = -1; len = strlen (string); while (++i < len) if (isalpha(string[i]) && islower(string[i])) string[i] = (char) toupper ((int)string[i]); } /************************************************************************/ /* DBFGetFieldIndex() */ /* */ /* Get the index number for a field in a .dbf file. */ /* */ /* Contributed by Jim Matthews. */ /************************************************************************/ int SHPAPI_CALL DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName) { char name[12], name1[12], name2[12]; int i; strncpy(name1, pszFieldName,11); name1[11] = '\0'; str_to_upper(name1); for( i = 0; i < DBFGetFieldCount(psDBF); i++ ) { DBFGetFieldInfo( psDBF, i, name, NULL, NULL ); strncpy(name2,name,11); str_to_upper(name2); if(!strncmp(name1,name2,10)) return(i); } return(-1); } postgis-0.8.1/loader/getopt.c0100664000077300001440000004547607553564420015574 0ustar postgisusers /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include #include "getopt.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg = 0; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns EOF, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* XXX 1003.2 says this must be 1 before any call. */ int optind = 0; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ #define BAD_OPTION '\0' int optopt = BAD_OPTION; /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return EOF with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ #include #define my_index strchr #define my_strlen strlen #else /* Avoid depending on library functions or files whose names are inconsistent. */ #if __STDC__ || defined(PROTO) extern int strcmp (const char *s1, const char *s2); extern int strncmp(const char *s1, const char *s2, int n); static int my_strlen(const char *s); static char *my_index (const char *str, int chr); #endif static int my_strlen (str) const char *str; { int n = 0; while (*str++) n++; return n; } static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } #endif /* GNU C library. */ extern char *getenv(const char *name); /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. To perform the swap, we first reverse the order of all elements. So all options now come before all non options, but they are in the wrong order. So we put back the options and non options in original order by reversing them again. For example: original input: a b c -x -y reverse all: -y -x c b a reverse options: -x -y c b a reverse non options: -x -y a b c */ #if __STDC__ || defined(PROTO) static void exchange (char **argv); #endif static void exchange (argv) char **argv; { char *temp, **first, **last; /* Reverse all the elements [first_nonopt, optind) */ first = &argv[first_nonopt]; last = &argv[optind-1]; while (first < last) { temp = *first; *first = *last; *last = temp; first++; last--; } /* Put back the options in order */ first = &argv[first_nonopt]; first_nonopt += (optind - last_nonopt); last = &argv[first_nonopt - 1]; while (first < last) { temp = *first; *first = *last; *last = temp; first++; last--; } /* Put back the non options in order */ first = &argv[first_nonopt]; last_nonopt = optind; last = &argv[last_nonopt-1]; while (first < last) { temp = *first; *first = *last; *last = temp; first++; last--; } } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns `EOF'. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return BAD_OPTION after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return BAD_OPTION. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { int option_index; optarg = 0; /* Initialize the internal data when the first call is made. Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ if (optind == 0) { first_nonopt = last_nonopt = optind = 1; nextchar = NULL; /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (getenv ("POSIXLY_CORRECT") != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; } if (nextchar == NULL || *nextchar == '\0') { if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Now skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && (argv[optind][0] != '-' || argv[optind][1] == '\0') #ifdef GETOPT_COMPAT && (longopts == NULL || argv[optind][0] != '+' || argv[optind][1] == '\0') #endif /* GETOPT_COMPAT */ ) optind++; last_nonopt = optind; } /* Special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return EOF; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if ((argv[optind][0] != '-' || argv[optind][1] == '\0') #ifdef GETOPT_COMPAT && (longopts == NULL || argv[optind][0] != '+' || argv[optind][1] == '\0') #endif /* GETOPT_COMPAT */ ) { if (ordering == REQUIRE_ORDER) return EOF; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Start decoding its characters. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } if (longopts != NULL && ((argv[optind][0] == '-' && (argv[optind][1] == '-' || long_only)) #ifdef GETOPT_COMPAT || argv[optind][0] == '+' #endif /* GETOPT_COMPAT */ )) { const struct option *p; char *s = nextchar; int exact = 0; int ambig = 0; const struct option *pfound = NULL; int indfound = 0; while (*s && *s != '=') s++; /* Test all options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, s - nextchar)) { if (s - nextchar == my_strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (opterr) fprintf (stderr, "%s: option `%s' is ambiguous\n", argv[0], argv[optind]); nextchar += my_strlen (nextchar); optind++; return BAD_OPTION; } if (pfound != NULL) { option_index = indfound; optind++; if (*s) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = s + 1; else { if (opterr) { if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, "%s: option `--%s' doesn't allow an argument\n", argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, "%s: option `%c%s' doesn't allow an argument\n", argv[0], argv[optind - 1][0], pfound->name); } nextchar += my_strlen (nextchar); return BAD_OPTION; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (opterr) fprintf (stderr, "%s: option `%s' requires an argument\n", argv[0], argv[optind - 1]); nextchar += my_strlen (nextchar); return optstring[0] == ':' ? ':' : BAD_OPTION; } } nextchar += my_strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' #ifdef GETOPT_COMPAT || argv[optind][0] == '+' #endif /* GETOPT_COMPAT */ || my_index (optstring, *nextchar) == NULL) { if (opterr) { if (argv[optind][1] == '-') /* --option */ fprintf (stderr, "%s: unrecognized option `--%s'\n", argv[0], nextchar); else /* +option or -option */ fprintf (stderr, "%s: unrecognized option `%c%s'\n", argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; optind++; return BAD_OPTION; } } /* Look at and handle the next option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (opterr) { #if 0 if (c < 040 || c >= 0177) fprintf (stderr, "%s: unrecognized option, character code 0%o\n", argv[0], c); else fprintf (stderr, "%s: unrecognized option `-%c'\n", argv[0], c); #else /* 1003.2 specifies the format of this message. */ fprintf (stderr, "%s: illegal option -- %c\n", argv[0], c); #endif } optopt = c; return BAD_OPTION; } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = 0; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (opterr) { #if 0 fprintf (stderr, "%s: option `-%c' requires an argument\n", argv[0], c); #else /* 1003.2 specifies the format of this message. */ fprintf (stderr, "%s: option requires an argument -- %c\n", argv[0], c); #endif } optopt = c; if (optstring[0] == ':') c = ':'; else c = BAD_OPTION; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } int getopt_long (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 0); } /* #endif _LIBC or not __GNU_LIBRARY__. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == EOF) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case BAD_OPTION: break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ postgis-0.8.1/loader/getopt.h0100664000077300001440000001043007365076751015565 0ustar postgisusers/* Declarations for getopt. Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GETOPT_H #define _GETOPT_H 1 #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns EOF, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { #if __STDC__ const char *name; #else char *name; #endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ #define no_argument 0 #define required_argument 1 #define optional_argument 2 #if __STDC__ || defined(PROTO) #if defined(__GNU_LIBRARY__) /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ extern int getopt (int argc, char *const *argv, const char *shortopts); #endif /* not __GNU_LIBRARY__ */ extern int getopt_long (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int getopt_long_only (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); /* Internal only. Users should not call this directly. */ extern int _getopt_internal (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind, int long_only); #else /* not __STDC__ */ extern int getopt (); extern int getopt_long (); extern int getopt_long_only (); extern int _getopt_internal (); #endif /* not __STDC__ */ #ifdef __cplusplus } #endif #endif /* _GETOPT_H */ postgis-0.8.1/loader/pgsql2shp.c0100664000077300001440000017160307773304557016214 0ustar postgisusers/********************************************************************** * $Id: pgsql2shp.c,v 1.40 2024/12/27 13:30:23 strk Exp $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: pgsql2shp.c,v $ * Revision 1.40 2024/12/27 13:30:23 strk * Added schema specification support * * Revision 1.39 2025/12/19 18:55:46 strk * substituted setenv() calls with putenv() for Solaris support * * Revision 1.38 2025/12/04 19:11:56 strk * code cleanup (removed useless and leaking malloc calls) * * Revision 1.37 2025/11/26 18:54:22 strk * fixed bug in HexDecoder, made WKB parsing the default * * Revision 1.36 2025/11/26 18:14:11 strk * binary cursor implemented * * Revision 1.35 2025/11/26 17:21:00 strk * Made HEXWKB parsing settable at compile time * * Revision 1.34 2025/11/26 16:40:41 strk * Handled NULLS in wkb parsing, reduced functions args * * Revision 1.33 2025/11/26 15:45:53 strk * wkb support for all geom types * * Revision 1.32 2025/11/26 14:31:20 strk * WKB start to work * * Revision 1.31 2025/11/25 17:28:03 strk * hardly trying to get WKB parsing work * * Revision 1.30 2025/11/24 17:36:28 strk * Removed useless BYTE_ORDER checks * * Revision 1.29 2025/11/21 23:51:14 pramsey * Added Cygwin endian definition include to fix windows compile. * * Revision 1.28 2025/11/20 18:01:26 strk * patch from m.spring@gmx.de * * Revision 1.27 2025/11/20 15:27:20 strk * Removed some useless strdups. * Removed pgtype 22 (int2vector) from the list of integer DBF field types. * Added pgtype 1700 (numeric) in DBF doubles list. * * Revision 1.26 2025/11/18 14:58:47 strk * default row buffer lenght set to 100 * * Revision 1.25 2025/11/18 14:39:26 strk * Some more structuring. Initialization routine moved out of main loop. * Preparing dumper for WKB parsing. * * Revision 1.24 2025/11/16 00:27:46 strk * Huge code re-organization. More structured code, more errors handled, * cursor based iteration, less code lines. * * Revision 1.23 2025/11/14 22:04:51 strk * Used environment vars to pass libpq connection options (less error prone, * easier to read). Printed clearer error message on query error. * * Revision 1.22 2025/09/10 22:44:56 jeffloun * got rid of warning... * * Revision 1.21 2025/09/10 22:40:11 jeffloun * changed it to make the field names in the dbf file capital letters * * Revision 1.20 2025/09/10 21:36:04 jeffloun * fixed a bug in is_clockwise... * * Revision 1.19 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * Revision 1.18 2025/02/04 21:39:20 pramsey * Added CVS substitution strings for logging. * **********************************************************************/ #include #include #include #include #include #include #include "libpq-fe.h" #include "shapefil.h" #include "getopt.h" #ifdef __CYGWIN__ #include #endif #define POINTTYPE 1 #define LINETYPE 2 #define POLYGONTYPE 3 #define MULTIPOINTTYPE 4 #define MULTILINETYPE 5 #define MULTIPOLYGONTYPE 6 #define COLLECTIONTYPE 7 #define BBOXONLYTYPE 99 /* * Verbosity: * set to 1 to see record fetching progress * set to 2 to see also shapefile creation progress */ #define VERBOSE 1 /* Define this to try WKB parsing */ #define USE_WKB /* Define this to use HEX encoding instead of bytea encoding */ #define HEXWKB typedef unsigned long int uint32; typedef unsigned char byte; /* Global data */ PGconn *conn; int rowbuflen; char *geo_col_name, *table, *shp_file, *schema; int type_ary[256]; char *main_scan_query; DBFHandle dbf; SHPHandle shp; int geotype; int is3d; int binary; #ifdef USE_WKB SHPObject * (*shape_creator)(byte *, int); #else SHPObject * (*shape_creator)(char *, int, SHPHandle, int); #endif /* Prototypes */ int getMaxFieldSize(PGconn *conn, char *table, char *fname); int parse_commandline(int ARGC, char **ARGV); void usage(int exitstatus); char *getTableOID(char *table); int addRecord(PGresult *res, int residx, int row); int initShapefile(char *shp_file, PGresult *res); int initialize(void); int getGeometryOID(PGconn *conn); int getGeometryType(char *schema, char *table, char *geo_col_name); SHPObject *create_lines(char *str,int shape_id, SHPHandle shp,int dims); SHPObject *create_multilines(char *str,int shape_id, SHPHandle shp,int dims); SHPObject *create_points(char *str,int shape_id, SHPHandle shp,int dims); SHPObject *create_multipoints(char *str,int shape_id, SHPHandle shp,int dims); SHPObject *create_polygons(char *str,int shape_id, SHPHandle shp,int dims); SHPObject *create_multipolygons(char *str,int shape_id, SHPHandle shp,int dims); int parse_points(char *str, int num_points, double *x,double *y,double *z); int num_points(char *str); int num_lines(char *str); char *scan_to_same_level(char *str); int points_per_sublist( char *str, int *npoints, long max_lists); int reverse_points(int num_points,double *x,double *y,double *z); int is_clockwise(int num_points,double *x,double *y,double *z); /* WKB functions */ SHPObject * create_polygon3D_WKB(byte *wkb, int shape_id); SHPObject * create_polygon2D_WKB(byte *wkb, int shape_id); SHPObject * create_multipoint2D_WKB(byte *wkb, int shape_id); SHPObject * create_multipoint3D_WKB(byte *wkb, int shape_id); SHPObject * create_point2D_WKB(byte *wkb, int shape_id); SHPObject * create_point3D_WKB(byte *wkb, int shape_id); SHPObject * create_multiline3D_WKB (byte *wkb, int shpid); SHPObject * create_multiline2D_WKB (byte *wkb, int shpid); SHPObject * create_line2D_WKB(byte *wkb, int shape_id); SHPObject * create_line3D_WKB(byte *wkb, int shape_id); SHPObject * create_multipolygon2D_WKB(byte *wkb, int shpid); SHPObject * create_multipolygon3D_WKB(byte *wkb, int shpid); byte getbyte(byte *c); void skipbyte(byte **c); byte popbyte(byte **c); uint32 popint(byte **c); uint32 getint(byte *c); void skipint(byte **c); double popdouble(byte **c); double getdouble(byte *c); void skipdouble(byte **c); void dump_wkb(byte *wkb); byte * HexDecode(byte *hex); #define WKB3DOFFSET 0x80000000 static void exit_nicely(PGconn *conn){ PQfinish(conn); exit(1); } //main //USAGE: pgsql2shp []
//OPTIONS: // -d Set the dump file to 3 dimensions, if this option is not used // all dumping will be 2d only. // -f Use this option to specify the name of the file // to create. // -h Allows you to specify connection to a database on a // machine other than the localhost. // -p Allows you to specify a database port other than 5432. // -P Connect to the database with the specified password. // -u Connect to the database as the specified user. // -g Specify the geometry column to be exported. int main(int ARGC, char **ARGV){ char *query=NULL; int row; PGresult *res; char fetchquery[256]; dbf=NULL; shp=NULL; geotype=-1; shape_creator = NULL; table = NULL; schema = NULL; geo_col_name = NULL; shp_file = NULL; main_scan_query = NULL; rowbuflen=100; is3d = 0; binary = 0; if ( getenv("ROWBUFLEN") ) rowbuflen=atoi(getenv("ROWBUFLEN")); if ( ! parse_commandline(ARGC, ARGV) ) { printf("\n**ERROR** invalid option or command parameters\n\n"); usage(2); exit_nicely(conn); } /* Use table name as shapefile name */ if(shp_file == NULL) shp_file = table; /* Make a connection to the specified database, and exit on failure */ conn = PQconnectdb(""); if (PQstatus(conn) == CONNECTION_BAD) { fprintf(stderr, "%s", PQerrorMessage(conn)); exit_nicely(conn); } #ifdef DEBUG debug = fopen("/tmp/trace.out", "w"); PQtrace(conn, debug); #endif /* DEBUG */ /* Initialize shapefile and database infos */ fprintf(stdout, "Initializing... "); fflush(stdout); if ( ! initialize() ) exit_nicely(conn); fprintf(stdout, "Done.\n"); /* * Begin the transaction * (a cursor can only be defined inside a transaction block) */ res=PQexec(conn, "BEGIN"); if ( ! res || PQresultStatus(res) != PGRES_COMMAND_OK ) { fprintf(stderr, "%s", PQerrorMessage(conn)); exit_nicely(conn); } PQclear(res); /* * Declare a cursor for the main scan query * as set by the initializer function. */ query = (char *)malloc(strlen(main_scan_query)+256); if ( binary ) { sprintf(query, "DECLARE cur BINARY CURSOR FOR %s", main_scan_query); } else { sprintf(query, "DECLARE cur CURSOR FOR %s", main_scan_query); } //fprintf(stderr, "MAINSCAN: %s\n", main_scan_query); res = PQexec(conn, query); free(query); if ( ! res || PQresultStatus(res) != PGRES_COMMAND_OK ) { fprintf(stderr, "%s", PQerrorMessage(conn)); exit_nicely(conn); } PQclear(res); /* Set the fetch query */ sprintf(fetchquery, "FETCH %d FROM cur", rowbuflen); fprintf(stdout, "Dumping: "); fflush(stdout); /* * Main scan */ row=0; while(1) { int i; /* Fetch next record buffer from cursor */ #if VERBOSE fprintf(stdout, "X"); fflush(stdout); #endif res = PQexec(conn, fetchquery); if ( ! res || PQresultStatus(res) != PGRES_TUPLES_OK ) { fprintf(stderr, "%s", PQerrorMessage(conn)); exit_nicely(conn); } /* No more rows, break the loop */ if ( ! PQntuples(res) ) { PQclear(res); break; } for(i=0; i 2 printf("End of result, clearing..."); fflush(stdout); #endif PQclear(res); #if VERBOSE > 2 printf("Done.\n"); #endif } printf(" [%d rows].\n", row); DBFClose(dbf); if (shp) SHPClose(shp); exit_nicely(conn); #ifdef DEBUG fclose(debug); #endif /* DEBUG */ return 0; } //reads points into x,y,z co-ord arrays int parse_points(char *str, int num_points, double *x,double *y,double *z){ int keep_going; int num_found= 0; char *end_of_double; if ( (str == NULL) || (str[0] == 0) ){ return 0; //either null string or empty string } //look ahead for the "(" str = strchr(str,'(') ; if ( (str == NULL) || (str[1] == 0) ){ // str[0] = '('; return 0; //either didnt find "(" or its at the end of the string } str++; //move forward one char keep_going = 1; while (keep_going == 1){ //attempt to get the point //scanf is slow, so we use strtod() x[num_found] = (double)strtod(str,&end_of_double); if (end_of_double == str){ return 0; //error occured (nothing parsed) } str = end_of_double; y[num_found] = strtod(str,&end_of_double); if (end_of_double == str){ return 0; //error occured (nothing parsed) } str = end_of_double; z[num_found] = strtod(str,&end_of_double); //will be zero if error occured str = end_of_double; num_found++; str=strpbrk(str,",)"); // look for a "," or ")" if (str != NULL && str[0] == ','){ str++; } keep_going = (str != NULL) && (str[0] != ')'); } return num_found; } //returns how many points are in the first list in str // // 1. scan ahead looking for "(" // 2. find "," until hit a ")" // 3. return number of points found // // NOTE: doesnt actually parse the points, so if the // str contains an invalid geometry, this could give // back the wrong answer. // // "(1 2 3, 4 5 6),(7 8, 9 10, 11 12 13)" => 2 (2nd list is not included) int num_points(char *str){ int keep_going; int points_found = 1; //no "," if only one point (and last point) if ( (str == NULL) || (str[0] == 0) ) { return 0; //either null string or empty string } //look ahead for the "(" str = strchr(str,'(') ; if ( (str == NULL) || (str[1] == 0) ) // str[0] = '('; { return 0; //either didnt find "(" or its at the end of the string } keep_going = 1; while (keep_going) { str=strpbrk(str,",)"); // look for a "," or ")" keep_going = (str != NULL); if (keep_going) // found a , or ) { if (str[0] == ')') { //finished return points_found; } else //str[0] = "," { points_found++; str++; //move 1 char forward } } } return points_found; // technically it should return an error. } //number of sublist in a string. // Find the number of lines in a Multiline // OR // The number of rings in a Polygon // OR // The number of polygons in a multipolygon // ( (..),(..),(..) ) -> 3 // ( ( (..),(..) ), ( (..) )) -> 2 // ( ) -> 0 // scan through the list, for every "(", depth (nesting) increases by 1 // for every ")", depth (nesting) decreases by 1 // if find a "(" at depth 1, then there is a sub list // // example: // "(((..),(..)),((..)))" //depth 12333223332112333210 // + + increase here int num_lines(char *str){ int current_depth = 0; int numb_lists = 0; while ( (str != NULL) && (str[0] != 0) ) { str=strpbrk(str,"()"); //look for "(" or ")" if (str != NULL) { if (str[0] == '(') { current_depth++; if (current_depth == 2) numb_lists ++; } if (str[0] == ')') { current_depth--; if (current_depth == 0) return numb_lists ; } str++; } } return numb_lists ; // probably should give an error } //simple scan-forward to find the next "(" at the same level // ( (), (),(), ),(... // + return this location char *scan_to_same_level(char *str){ //scan forward in string looking for at "(" at the same level // as the one its already pointing at int current_depth = 0; int first_one=1; while ( (str != NULL) && (str[0] != 0) ) { str=strpbrk(str,"()"); if (str != NULL) { if (str[0] == '(') { if (!(first_one)) { if (current_depth == 0) return str; } else first_one = 0; //ignore the first opening "(" current_depth++; } if (str[0] == ')') { current_depth--; } str++; } } return str ; // probably should give an error } // Find out how many points are in each sublist, put the result in the array npoints[] // (for at most max_list sublists) // // ( (L1),(L2),(L3) ) --> npoints[0] = points in L1, // npoints[1] = points in L2, // npoints[2] = points in L3 // // We find these by, again, scanning through str looking for "(" and ")" // to determine the current depth. We dont actually parse the points. int points_per_sublist( char *str, int *npoints, long max_lists){ //scan through, noting depth and ","s int current_depth = 0; int current_list =-1 ; while ( (str != NULL) && (str[0] != 0) ) { str=strpbrk(str,"(),"); //find "(" or ")" or "," if (str != NULL) { if (str[0] == '(') { current_depth++; if (current_depth == 2) { current_list ++; if (current_list >=max_lists) return 1; // too many sub lists found npoints[current_list] = 1; } // might want to return an error if depth>2 } if (str[0] == ')') { current_depth--; if (current_depth == 0) return 1 ; } if (str[0] == ',') { if (current_depth==2) { npoints[current_list] ++; } } str++; } } return 1 ; // probably should give an error } SHPObject * create_multilines(char *str,int shape_id, SHPHandle shp,int dims) { int lines,i,j,max_points,index; int *points; int *part_index; int notnull; double *x; double *y; double *z; double *totx; double *toty; double *totz; SHPObject *obj; notnull=1; lines = num_lines(str); points = (int *)malloc(sizeof(int) * lines); if(points_per_sublist(str, points, lines) ==0){ printf("error - points_per_sublist failed"); } max_points = 0; for(j=0;j 0){ obj = SHPCreateObject(SHPT_ARC,shape_id,lines,part_index,NULL,max_points,totx,toty,totz,NULL); }else{ obj = SHPCreateObject(SHPT_NULL,shape_id,lines,part_index,NULL,max_points,totx,toty,totz,NULL); } }else{ if(notnull > 0){ obj = SHPCreateObject(SHPT_ARCZ,shape_id,lines,part_index,NULL,max_points,totx,toty,totz,NULL); }else{ obj = SHPCreateObject(SHPT_NULL,shape_id,lines,part_index,NULL,max_points,totx,toty,totz,NULL); } } free(part_index); free(points); free(totx); free(toty); free(totz); return obj; } SHPObject * create_multiline3D_WKB (byte *wkb, int shape_id) { SHPObject *obj; double *x=NULL, *y=NULL, *z=NULL; int nparts=0, *part_index=NULL, totpoints=0, nlines=0; int li; // skip byteOrder and type skipbyte(&wkb); skipint(&wkb); /* * Scan all lines in multiline */ nlines=popint(&wkb); // num_wkbLineStrings #if VERBOSE > 2 printf("Multiline with %d lines\n", nlines); #endif part_index = (int *)malloc(sizeof(int)*(nlines)); for (li=0; li 2 printf("Line %d has %d points\n", li, npoints); #endif x = realloc(x, sizeof(double)*(totpoints+npoints)); y = realloc(y, sizeof(double)*(totpoints+npoints)); z = realloc(z, sizeof(double)*(totpoints+npoints)); /* wkb now points at first point */ for (pn=0; pn 2 printf("Multiline with %d lines\n", nlines); #endif part_index = (int *)malloc(sizeof(int)*(nlines)); for (li=0; li 2 printf("Line %d has %d points\n", li, npoints); #endif x = realloc(x, sizeof(double)*(totpoints+npoints)); y = realloc(y, sizeof(double)*(totpoints+npoints)); /* wkb now points at first point */ for (pn=0; pn 0){ obj = SHPCreateObject(SHPT_ARC,shape_id,1,part_index,NULL,points,x,y,z,NULL); }else{ obj = SHPCreateObject(SHPT_NULL,shape_id,1,part_index,NULL,points,x,y,z,NULL); } }else{ if(notnull > 0){ obj = SHPCreateObject(SHPT_ARCZ,shape_id,1,part_index,NULL,points,x,y,z,NULL); }else{ obj = SHPCreateObject(SHPT_NULL,shape_id,1,part_index,NULL,points,x,y,z,NULL); } } free(part_index); free(x); free(y); free(z); return obj; } SHPObject * create_line3D_WKB (byte *wkb, int shape_id) { double *x=NULL, *y=NULL, *z=NULL; uint32 npoints=0, pn; SHPObject *obj; // skip byteOrder and type skipbyte(&wkb); skipint(&wkb); npoints = popint(&wkb); #if VERBOSE > 2 printf("Line has %lu points\n", npoints); #endif x = malloc(sizeof(double)*(npoints)); y = malloc(sizeof(double)*(npoints)); z = malloc(sizeof(double)*(npoints)); /* wkb now points at first point */ for (pn=0; pn 2 printf("Line has %lu points\n", npoints); #endif x = malloc(sizeof(double)*(npoints)); y = malloc(sizeof(double)*(npoints)); /* wkb now points at first point */ for (pn=0; pn 0){ obj = SHPCreateSimpleObject(SHPT_POINT,1,x,y,z); }else{ obj = SHPCreateSimpleObject(SHPT_NULL,1,x,y,z); } }else{ if(notnull > 0){ obj = SHPCreateSimpleObject(SHPT_POINTZ,1,x,y,z); }else{ obj = SHPCreateSimpleObject(SHPT_NULL,1,x,y,z); } } free(x); free(y); free(z); return obj; } SHPObject * create_multipoints(char *str,int shape_id, SHPHandle shp,int dims) { int points; double *x, *y, *z; SHPObject *obj; int notnull; notnull=1; points = num_points(str); x = (double *)malloc(sizeof(double)*points); y = (double *)malloc(sizeof(double)*points); z = (double *)malloc(sizeof(double)*points); notnull = parse_points(str,points,x,y,z); if(dims == 0){ if(notnull > 0){ obj = SHPCreateSimpleObject(SHPT_MULTIPOINT ,points,x,y,z); }else{ obj = SHPCreateSimpleObject(SHPT_NULL ,points,x,y,z); } }else{ if(notnull > 0){ obj = SHPCreateSimpleObject(SHPT_MULTIPOINTZ ,points,x,y,z); }else{ obj = SHPCreateSimpleObject(SHPT_NULL ,points,x,y,z); } } free(x); free(y); free(z); return obj; } SHPObject * create_multipoint3D_WKB(byte *wkb, int shape_id) { SHPObject *obj; double *x=NULL, *y=NULL, *z=NULL; int npoints; int pn; // skip byteOrder and type skipbyte(&wkb); skipint(&wkb); npoints = popint(&wkb); x = (double *)malloc(sizeof(double)*npoints); y = (double *)malloc(sizeof(double)*npoints); z = (double *)malloc(sizeof(double)*npoints); for (pn=0; pn 0){ obj = SHPCreateObject(SHPT_POLYGON,shape_id,rings,part_index,NULL,max_points,totx,toty,totz,NULL); }else{ obj = SHPCreateObject(SHPT_NULL,shape_id,rings,part_index,NULL,max_points,totx,toty,totz,NULL); } }else{ if(notnull > 0){ obj = SHPCreateObject(SHPT_POLYGONZ,shape_id,rings,part_index,NULL,max_points,totx,toty,totz,NULL); }else{ obj = SHPCreateObject(SHPT_NULL,shape_id,rings,part_index,NULL,max_points,totx,toty,totz,NULL); } } free(part_index); free(points); free(totx); free(toty); free(totz); return obj; } SHPObject * create_polygon2D_WKB(byte *wkb, int shape_id) { SHPObject *obj; int ri, nrings, totpoints=0, *part_index=NULL; double *x=NULL, *y=NULL, *z=NULL; // skip byteOrder and type skipbyte(&wkb); skipint(&wkb); /* * Scan all rings */ nrings = popint(&wkb); #if VERBOSE > 2 printf("Polygon with %d rings\n", nrings); #endif part_index = (int *)malloc(sizeof(int)*nrings); for (ri=0; ri 2 printf("Forcing CW\n"); #endif reverse_points(npoints, x+totpoints, y+totpoints, NULL); } } else { if ( is_clockwise(npoints, x+totpoints, y+totpoints, NULL) ) { #if VERBOSE > 2 printf("Forcing CCW\n"); #endif reverse_points(npoints, x+totpoints, y+totpoints, NULL); } } part_index[ri] = totpoints; totpoints += npoints; } obj = SHPCreateObject(SHPT_POLYGON, shape_id, nrings, part_index, NULL, totpoints, x, y, z, NULL); free(part_index); free(x); free(y); return obj; } SHPObject * create_polygon3D_WKB(byte *wkb, int shape_id) { SHPObject *obj; int ri, nrings, totpoints=0, *part_index=NULL; double *x=NULL, *y=NULL, *z=NULL; // skip byteOrder and type skipbyte(&wkb); skipint(&wkb); /* * Scan all rings */ nrings = popint(&wkb); #if VERBOSE > 2 printf("Polygon with %d rings\n", nrings); #endif part_index = (int *)malloc(sizeof(int)*nrings); for (ri=0; ri 2 printf("Forcing CW\n"); #endif reverse_points(npoints, x+totpoints, y+totpoints, z+totpoints); } } else { if ( is_clockwise(npoints, x+totpoints, y+totpoints, z+totpoints) ) { #if VERBOSE > 2 printf("Forcing CCW\n"); #endif reverse_points(npoints, x+totpoints, y+totpoints, z+totpoints); } } part_index[ri] = totpoints; totpoints += npoints; } obj = SHPCreateObject(SHPT_POLYGONZ, shape_id, nrings, part_index, NULL, totpoints, x, y, z, NULL); free(part_index); free(x); free(y); free(z); return obj; } SHPObject * create_multipolygons(char *str,int shape_id, SHPHandle shp,int dims) { int polys,rings,i,j,k,max_points; int index,indexk,index2part,tot_rings,final_max_points; int *points; int *part_index; int *final_part_index; int notnull; char *temp; char *temp_addr; double *x; double *y; double *z; double *totx; double *toty; double *totz; double *finalx; double *finaly; double *finalz; SHPObject *obj; points=0; notnull = 1; polys = num_lines(str); //the number of rings in the polygon final_max_points =0; temp_addr = (char *)malloc(strlen(str) +1 ); temp = temp_addr; //keep original pointer to free the mem later strcpy(temp,str); tot_rings=0; index2part=0; indexk=0; for(i=0;i2 && str[0] =='(' && str[1] == '(' && str[2] =='('){ str++; } rings = num_lines(str); points = (int *)malloc(sizeof(int) * rings); if(points_per_sublist(str, points, rings) ==0){ printf("error - points_per_sublist failed"); } max_points = 0; for(j=0;j 0){ obj = SHPCreateObject(SHPT_POLYGON,shape_id,tot_rings,final_part_index,NULL,final_max_points,finalx,finaly,finalz,NULL); }else{ obj = SHPCreateObject(SHPT_NULL,shape_id,tot_rings,final_part_index,NULL,final_max_points,finalx,finaly,finalz,NULL); } }else{ if(notnull > 0){ obj = SHPCreateObject(SHPT_POLYGONZ,shape_id,tot_rings,final_part_index,NULL,final_max_points,finalx,finaly,finalz,NULL); }else{ obj = SHPCreateObject(SHPT_NULL,shape_id,tot_rings,final_part_index,NULL,final_max_points,finalx,finaly,finalz,NULL); } } free(final_part_index); free(finalx); free(finaly); free(finalz); return obj; } SHPObject * create_multipolygon2D_WKB(byte *wkb, int shape_id) { SHPObject *obj; uint32 nrings, nparts; uint32 npolys; uint32 totpoints=0; int *part_index=NULL; uint32 pi; double *x=NULL, *y=NULL, *z=NULL; // skip byteOrder and type //printf("byteOrder is %d\n", popbyte(&wkb)); //printf("Type is %d", popint(&wkb)); skipbyte(&wkb); skipint(&wkb); /* * Scan all polygons in multipolygon */ nparts = 0; npolys = popint(&wkb); // num_wkbPolygons #if VERBOSE > 2 printf("Multipolygon with %lu polygons\n", npolys); #endif /* * Now wkb points to a WKBPolygon structure */ for (pi=0; pi 2 printf("Polygon %lu has %lu rings\n", pi, nrings); #endif // wkb now points at first ring totpoints=0; for (ri=0; ri 2 printf("Ring %lu has %lu points\n", ri, npoints); #endif x = realloc(x, sizeof(double)*(totpoints+npoints)); y = realloc(y, sizeof(double)*(totpoints+npoints)); /* wkb now points at first point */ for (pn=0; pn 3 printf("Point%lu (%f,%f)\n", pn, x[totpoints+pn], y[totpoints+pn]); #endif } /* * First ring should be clockwise, * other rings should be counter-clockwise */ if ( !ri ) { if (!is_clockwise(npoints, x+totpoints, y+totpoints, NULL)) { #if VERBOSE > 2 printf("Forcing CW\n"); #endif reverse_points(npoints, x+totpoints, y+totpoints, NULL); } } else { if (is_clockwise(npoints, x+totpoints, y+totpoints, NULL)) { #if VERBOSE > 2 printf("Forcing CCW\n"); #endif reverse_points(npoints, x+totpoints, y+totpoints, NULL); } } part_index[nparts+ri] = totpoints; totpoints += npoints; } #if VERBOSE > 2 printf("End of rings\n"); #endif nparts += nrings; } #if VERBOSE > 2 printf("End of polygons\n"); #endif obj = SHPCreateObject(SHPT_POLYGON, shape_id, nparts, part_index, NULL, totpoints, x, y, z, NULL); #if VERBOSE > 2 printf("Object created\n"); #endif free(part_index); free(x); free(y); return obj; } SHPObject * create_multipolygon3D_WKB(byte *wkb, int shape_id) { SHPObject *obj; int nrings, nparts; uint32 npolys; int totpoints=0; int *part_index=NULL; int pi; double *x=NULL, *y=NULL, *z=NULL; // skip byteOrder and type //printf("byteOrder is %d\n", popbyte(&wkb)); //printf("Type is %d", popint(&wkb)); skipbyte(&wkb); skipint(&wkb); /* * Scan all polygons in multipolygon */ nparts = 0; npolys = popint(&wkb); // num_wkbPolygons #if VERBOSE > 2 printf("Multipolygon with %lu polygons\n", npolys); #endif /* * Now wkb points to a WKBPolygon structure */ for (pi=0; pi 2 printf("Polygon %d has %d rings\n", pi, nrings); #endif // wkb now points at first ring totpoints=0; for (ri=0; ri 2 printf("Ring %d has %d points\n", ri, npoints); #endif x = realloc(x, sizeof(double)*(totpoints+npoints)); y = realloc(y, sizeof(double)*(totpoints+npoints)); z = realloc(z, sizeof(double)*(totpoints+npoints)); /* wkb now points at first point */ for (pn=0; pn 3 printf("Point%d (%f,%f)\n", pn, x[totpoints+pn], y[totpoints+pn]); #endif } /* * First ring should be clockwise, * other rings should be counter-clockwise */ if ( !ri ) { if (!is_clockwise(npoints, x+totpoints, y+totpoints, NULL)) { #if VERBOSE > 2 printf("Forcing CW\n"); #endif reverse_points(npoints, x+totpoints, y+totpoints, NULL); } } else { if (is_clockwise(npoints, x+totpoints, y+totpoints, NULL)) { #if VERBOSE > 2 printf("Forcing CCW\n"); #endif reverse_points(npoints, x+totpoints, y+totpoints, NULL); } } part_index[nparts+ri] = totpoints; totpoints += npoints; } #if VERBOSE > 2 printf("End of rings\n"); #endif nparts += nrings; } #if VERBOSE > 2 printf("End of polygons\n"); #endif obj = SHPCreateObject(SHPT_POLYGON, shape_id, nparts, part_index, NULL, totpoints, x, y, z, NULL); #if VERBOSE > 2 printf("Object created\n"); #endif free(part_index); free(x); free(y); free(z); return obj; } //Reverse the clockwise-ness of the point list... int reverse_points(int num_points,double *x,double *y,double *z){ int i,j; double temp; j = num_points -1; for(i=0; i 0 ){ return 0; //counter-clockwise }else{ return 1; //clockwise } } /* * Returns OID integer on success * Returns -1 on error. */ int getGeometryOID(PGconn *conn) { PGresult *res1; char *temp_int; int OID; res1=PQexec(conn, "select OID from pg_type where typname = 'geometry'"); if ( ! res1 || PQresultStatus(res1) != PGRES_TUPLES_OK ) { fprintf(stderr, "OID query error: %s", PQerrorMessage(conn)); return -1; } if(PQntuples(res1) <= 0 ) { fprintf(stderr, "Geometry type unknown " "(have you enabled postgis?)\n"); return -1; } temp_int = (char *)PQgetvalue(res1, 0, 0); OID = atoi(temp_int); PQclear(res1); return OID; } /* * Passed result is a 1 row result. * Return 1 on success. * Return 0 on failure. */ int addRecord(PGresult *res, int residx, int row) { int j; int nFields = PQnfields(res); int flds = 0; /* number of dbf field */ char *val; for (j=0; j 1 fprintf(stdout, "i"); fflush(stdout); #endif if (!DBFWriteIntegerAttribute(dbf, row, flds, temp)) { fprintf(stderr, "error(int) - Record could not be created\n"); return 0; } flds++; continue; } /* Double attribute */ if (type_ary[j] == 2) { double temp; if ( PQgetisnull(res, residx, j) ) { temp = 0; } else { val = PQgetvalue(res, residx, j); temp = atof(val); } #if VERBOSE > 1 fprintf(stdout, "d"); fflush(stdout); #endif if (!DBFWriteDoubleAttribute(dbf, row, flds, temp)) { fprintf(stderr, "error(double) - Record could " "not be created\n"); return 0; } flds++; continue; } /* Default (not geometry) attribute */ if (type_ary[j] != 9) { if ( PQgetisnull(res, residx, j) ) { val = ""; } else { val = PQgetvalue(res, residx, j); } #if VERBOSE > 1 fprintf(stdout, "s"); fflush(stdout); #endif if(!DBFWriteStringAttribute(dbf, row, flds, val)) { printf("error(string) - Record could not be " "created\n"); return 0; } flds++; continue; } /* If we arrived here it is a geometry attribute */ // Handle NULL shapes if ( PQgetisnull(res, residx, j) ) { obj=SHPCreateSimpleObject(SHPT_NULL,0,NULL,NULL,NULL); if ( SHPWriteObject(shp,-1,obj) == -1) { fprintf(stderr, "Error writing null shape %d\n", row); SHPDestroyObject(obj); return 0; } SHPDestroyObject(obj); continue; } #ifdef USE_WKB if ( ! binary ) { #ifndef HEXWKB { int junk; char *v = PQgetvalue(res, residx, j); val = PQunescapeBytea(v, &junk); //printf("Unescaped %d bytes\n", junk); } #else char *v = PQgetvalue(res, residx, j); val = HexDecode(v); #endif // HEXWKB #if VERBOSE > 2 dump_wkb(val); #endif // VERBOSE > 2 } else // binary { val = (char *)PQgetvalue(res, residx, j); } #else // ndef USE_WKB val = PQgetvalue(res, residx, j); #endif // USE_WKB #if VERBOSE > 1 fprintf(stdout, "g"); fflush(stdout); #endif #ifdef USE_WKB obj = shape_creator(val, row); #else obj = shape_creator(val, row, shp, is3d); #endif if ( ! obj ) { fprintf(stderr, "Error creating shape for record %d " "(geotype is %d)\n", row, geotype); return 0; } if ( SHPWriteObject(shp,-1,obj) == -1) { fprintf(stderr, "Error writing shape %d\n", row); SHPDestroyObject(obj); return 0; } SHPDestroyObject(obj); #ifdef USE_WKB if ( ! binary ) free(val); #endif } #if VERBOSE > 2 printf("Finished adding record %d\n", row); #endif return 1; } /* * Return allocate memory. Free after use. */ char * getTableOID(char *table) { PGresult *res3; char *query; char *ret; query = (char *)malloc(strlen(table)+256); sprintf(query, "SELECT oid FROM pg_class WHERE relname = '%s'", table); res3 = PQexec(conn, query); free(query); if ( ! res3 || PQresultStatus(res3) != PGRES_TUPLES_OK ) { fprintf(stderr, "%s", PQerrorMessage(conn)); exit_nicely(conn); } if(PQntuples(res3) == 1 ){ ret = strdup(PQgetvalue(res3, 0, 0)); }else if(PQntuples(res3) == 0 ){ fprintf(stderr, "ERROR: Cannot determine relation OID.\n"); return NULL; }else{ ret = strdup(PQgetvalue(res3, 0, 0)); fprintf(stderr, "Warning: Multiple relations detected, the program will only dump the first relation.\n"); } return ret; } /* * Return geometry type as defined at top file. * Return -1 on error * Return 0 on unknown or unsupported geometry type */ int getGeometryType(char *schema, char *table, char *geo_col_name) { char query[1024]; PGresult *res; char *geo_str; // the geometry type string //get what kind of Geometry type is in the table if ( schema ) { sprintf(query, "SELECT DISTINCT geometrytype(\"%s\") " "FROM \"%s\".\"%s\" WHERE NOT geometrytype(\"%s\") " "IS NULL", geo_col_name, schema, table, geo_col_name); } else { sprintf(query, "SELECT DISTINCT geometrytype(\"%s\") " "FROM \"%s\" WHERE NOT geometrytype(\"%s\") IS NULL", geo_col_name, table, geo_col_name); } //printf("\n\n-->%s\n\n",query); res = PQexec(conn, query); if ( ! res || PQresultStatus(res) != PGRES_TUPLES_OK ) { fprintf(stderr, "%s", PQerrorMessage(conn)); return -1; } if(PQntuples(res) == 1 ){ geo_str = (char *)malloc(strlen(PQgetvalue(res, 0, 0))+1); memcpy(geo_str, (char *)PQgetvalue(res, 0, 0),strlen(PQgetvalue(res,0,0))+1); }else if(PQntuples(res) > 1 ){ fprintf(stderr, "ERROR: Cannot have multiple geometry types in a shapefile.\nUse option -t(unimplemented currently,sorry...) to specify what type of geometry you want dumped\n\n"); return -1; }else{ printf("ERROR: Cannot determine geometry type of table.\n"); return -1; } if ( ! strncmp(geo_str, "MULTILIN", 8) ) return MULTILINETYPE; if ( ! strncmp(geo_str, "MULTIPOL", 8) ) return MULTIPOLYGONTYPE; if ( ! strncmp(geo_str, "MULTIPOI", 8) ) return MULTIPOINTTYPE; if ( ! strncmp(geo_str, "LINESTRI", 8) ) return LINETYPE; if ( ! strncmp(geo_str, "POLYGON", 7) ) return POLYGONTYPE; if ( ! strncmp(geo_str, "POINT", 5) ) return POINTTYPE; fprintf(stderr, "type '%s' is not Supported at this time.\n", geo_str); fprintf(stderr, "The DBF file will be created but not the shx " "or shp files.\n"); return 0; } void usage(status) { printf("USAGE: pgsql2shp [] [.]
\n"); printf("\n"); printf("OPTIONS:\n"); printf(" -d Set the dump file to 3 dimensions, if this option is not used\n"); printf(" all dumping will be 2d only.\n"); printf(" -f Use this option to specify the name of the file\n"); printf(" to create.\n"); printf(" -h Allows you to specify connection to a database on a\n"); printf(" machine other than the default.\n"); printf(" -p Allows you to specify a database port other than the default.\n"); printf(" -P Connect to the database with the specified password.\n"); printf(" -u Connect to the database as the specified user.\n"); printf(" -g Specify the geometry column to be exported.\n"); printf(" -b Use a binary cursor.\n"); printf("\n"); exit (status); } /* Parse command line parameters */ int parse_commandline(int ARGC, char **ARGV) { int c, curindex; char buf[256], *ptr; buf[255] = '\0'; // just in case... /* Parse command line */ while ((c = getopt(ARGC, ARGV, "bf:h:du:p:P:g:")) != EOF){ switch (c) { case 'b': binary = 1; break; case 'f': shp_file = optarg; break; case 'h': //setenv("PGHOST", optarg, 1); snprintf(buf, 255, "PGHOST=%s", optarg); putenv(strdup(buf)); break; case 'd': is3d = 1; break; case 'u': //setenv("PGUSER", optarg, 1); snprintf(buf, 255, "PGUSER=%s", optarg); putenv(strdup(buf)); break; case 'p': //setenv("PGPORT", optarg, 1); snprintf(buf, 255, "PGPORT=%s", optarg); putenv(strdup(buf)); break; case 'P': //setenv("PGPASSWORD", optarg, 1); snprintf(buf, 255, "PGPASSWORD=%s", optarg); putenv(strdup(buf)); break; case 'g': geo_col_name = optarg; break; case '?': return 0; default: return 0; } } curindex=0; for ( ; optind < ARGC; optind++){ if(curindex ==0){ //setenv("PGDATABASE", ARGV[optind], 1); snprintf(buf, 255, "PGDATABASE=%s", ARGV[optind]); putenv(strdup(buf)); }else if(curindex == 1){ table = ARGV[optind]; if ( (ptr=strchr(table, '.')) ) { *ptr = '\0'; schema = table; table = ptr+1; } } curindex++; } if(curindex != 2) return 0; return 1; } /* * Initialize shapefile files, main scan query, * type array. */ int initialize() { PGresult *res; char *query; int i; char buf[256]; int tmpint; int geo_oid; // geometry oid int geom_fld = -1; char *mainscan_flds[256]; int mainscan_nflds=0; int size; /* Query user attributes name, type and size */ size = strlen(table); if ( schema ) size += strlen(schema); size += 256; query = (char *)malloc(size); if ( ! query ) return 0; // out of virtual memory if ( schema ) { sprintf(query, "SELECT a.attname, a.atttypid, a.attlen FROM " "pg_attribute a, pg_class c, pg_namespace n WHERE " "n.nspname = '%s' AND a.attrelid = c.oid AND " "a.attnum > 0 AND c.relname = '%s'", schema, table); } else { sprintf(query, "SELECT a.attname, a.atttypid, a.attlen FROM " "pg_attribute a, pg_class c WHERE " "a.attrelid = c.oid and a.attnum > 0 AND " "c.relname = '%s'", table); } /* Exec query */ //fprintf(stderr, "Attribute query:\n%s\n", query); res = PQexec(conn, query); free(query); if ( ! res || PQresultStatus(res) != PGRES_TUPLES_OK ) { fprintf(stderr, "%s", PQerrorMessage(conn)); return 0; } if (! PQntuples(res)) { fprintf(stderr, "Table %s does not exist\n", table); PQclear(res); return 0; } /* Create the dbf file */ dbf = DBFCreate(shp_file); if ( ! dbf ) { fprintf(stderr, "Could not create dbf file\n"); return 0; } /* Get geometry oid */ geo_oid = getGeometryOID(conn); if ( geo_oid == -1 ) { PQclear(res); return 0; } /* * Scan the result setting fields to be returned in mainscan * query, filling the type_ary, and creating .dbf and .shp files. */ for (i=0; i 47 ) byt = (((*hexptr)-48)<<4); else if ( *hexptr > 64 && *hexptr < 71 ) byt = (((*hexptr)-55)<<4); else { fprintf(stderr, "Malformed WKB\n"); exit(1); } hexptr++; //printf("%c", *hexptr); if ( *hexptr < 58 && *hexptr > 47 ) byt |= ((*hexptr)-48); else if ( *hexptr > 64 && *hexptr < 71 ) byt |= ((*hexptr)-55); else { fprintf(stderr, "Malformed WKB\n"); exit(1); } hexptr++; //printf("(%d)", byt); *retptr = (byte)byt; retptr++; } //printf(" Done.\n"); return ret; } /********************************************************************* * * The following functions might go in a wkb lib * * Right now they work on a binary representation, they * might work on an exadecimal representation of it as returned * by text cursors by postgis. * *********************************************************************/ void dump_wkb(byte *wkb) { int byteOrder; int type; printf("\n-----\n"); byteOrder = popbyte(&wkb); if ( byteOrder == 0 ) printf("ByteOrder: XDR\n"); else if ( byteOrder == 1 ) printf("ByteOrder: NDR\n"); else printf("ByteOrder: unknown (%d)\n", byteOrder); type = popint(&wkb); if ( type&WKB3DOFFSET ) printf ("Is 3D\n"); type &= ~WKB3DOFFSET; // strip 3d flag printf ("Type: %x\n", type); printf("-----\n"); } void skipbyte(byte **c) { *c+=1; } byte getbyte(byte *c) { return *((char*)c); } // #define popbyte(x) *x++ byte popbyte(byte **c) { return *((byte*)*c++); } uint32 popint(byte **c) { int ret = *((uint32*)*c); *c+=4; return ret; } void skipint(byte **c) { *c+=4; } uint32 getint(byte *c) { return *((uint32*)c); } double popdouble(byte **c) { double ret; ret = *((double*)*c); *c+=8; return ret; } void skipdouble(byte **c) { *c+=8; } double getdouble(byte *c) { return *((double*)c); } postgis-0.8.1/loader/shapefil.h0100664000077300001440000004046207762724760016067 0ustar postgisusers#ifndef _SHAPEFILE_H_INCLUDED #define _SHAPEFILE_H_INCLUDED /****************************************************************************** * $Id: shapefil.h,v 1.4 2025/12/01 20:52:00 strk Exp $ * * Project: Shapelib * Purpose: Primary include file for Shapelib. * Author: Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999, Frank Warmerdam * * This software is available under the following "MIT Style" license, * or at the option of the licensee under the LGPL (see LICENSE.LGPL). This * option is discussed in more detail in shapelib.html. * * -- * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************** * * $Log: shapefil.h,v $ * Revision 1.4 2025/12/01 20:52:00 strk * shapelib put in sync with gdal cvs * * Revision 1.27 2025/04/21 18:30:37 warmerda * added header write/update public methods * * Revision 1.26 2025/09/29 00:00:08 warmerda * added FTLogical and logical attribute read/write calls * * Revision 1.25 2025/05/07 13:46:30 warmerda * added DBFWriteAttributeDirectly(). * * Revision 1.24 2025/04/10 16:59:54 warmerda * added SHPRewindObject * * Revision 1.23 2025/01/15 14:36:07 warmerda * updated email address * * Revision 1.22 2025/01/15 14:32:00 warmerda * try to improve SHPAPI_CALL docs * * Revision 1.21 2025/11/01 16:29:55 warmerda * move pabyRec into SHPInfo for thread safety * * Revision 1.20 2025/07/20 13:06:02 warmerda * fixed SHPAPI attribute for SHPTreeFindLikelyShapes * * Revision 1.19 2025/05/31 19:20:13 warmerda * added DBFGetFieldIndex() * * Revision 1.18 2025/05/31 18:15:40 warmerda * Added support for NULL fields in DBF files * * Revision 1.17 2025/05/23 13:36:52 warmerda * added use of SHPAPI_CALL * * Revision 1.16 2025/09/25 14:15:59 warmerda * added DBFGetNativeFieldType() * * Revision 1.15 2025/02/16 16:03:51 warmerda * added null shape support * * Revision 1.14 2025/11/05 14:12:05 warmerda * updated license terms * * Revision 1.13 2025/06/02 18:24:21 warmerda * added trimming code * * Revision 1.12 2025/06/02 17:56:12 warmerda * added quad'' subnode support for trees * * Revision 1.11 2025/05/18 19:11:11 warmerda * Added example searching capability * * Revision 1.10 2025/05/18 17:49:38 warmerda * added initial quadtree support * * Revision 1.9 2025/05/11 03:19:28 warmerda * added new Tuple api, and improved extension handling - add from candrsn * * Revision 1.8 2025/03/23 17:22:27 warmerda * Added extern "C" protection for C++ users of shapefil.h. * * Revision 1.7 2024/12/31 15:31:07 warmerda * Added the TRIM_DBF_WHITESPACE and DISABLE_MULTIPATCH_MEASURE options. * * Revision 1.6 2025/12/03 15:48:15 warmerda * Added SHPCalculateExtents(). * * Revision 1.5 2025/11/09 20:57:16 warmerda * Altered SHPGetInfo() call. * * Revision 1.4 2025/11/09 20:19:33 warmerda * Added 3D support, and use of SHPObject. * * Revision 1.3 2025/08/23 02:24:05 warmerda * Added support for reading bounds. * * Revision 1.2 2025/08/04 03:17:39 warmerda * Added header. * */ #include #ifdef USE_DBMALLOC #include #endif #ifdef __cplusplus extern "C" { #endif /************************************************************************/ /* Configuration options. */ /************************************************************************/ /* -------------------------------------------------------------------- */ /* Should the DBFReadStringAttribute() strip leading and */ /* trailing white space? */ /* -------------------------------------------------------------------- */ #define TRIM_DBF_WHITESPACE /* -------------------------------------------------------------------- */ /* Should we write measure values to the Multipatch object? */ /* Reportedly ArcView crashes if we do write it, so for now it */ /* is disabled. */ /* -------------------------------------------------------------------- */ #define DISABLE_MULTIPATCH_MEASURE /* -------------------------------------------------------------------- */ /* SHPAPI_CALL */ /* */ /* The following two macros are present to allow forcing */ /* various calling conventions on the Shapelib API. */ /* */ /* To force __stdcall conventions (needed to call Shapelib */ /* from Visual Basic and/or Dephi I believe) the makefile could */ /* be modified to define: */ /* */ /* /DSHPAPI_CALL=__stdcall */ /* */ /* If it is desired to force export of the Shapelib API without */ /* using the shapelib.def file, use the following definition. */ /* */ /* /DSHAPELIB_DLLEXPORT */ /* */ /* To get both at once it will be necessary to hack this */ /* include file to define: */ /* */ /* #define SHPAPI_CALL __declspec(dllexport) __stdcall */ /* #define SHPAPI_CALL1 __declspec(dllexport) * __stdcall */ /* */ /* The complexity of the situtation is partly caused by the */ /* peculiar requirement of Visual C++ that __stdcall appear */ /* after any "*"'s in the return value of a function while the */ /* __declspec(dllexport) must appear before them. */ /* -------------------------------------------------------------------- */ #ifdef SHAPELIB_DLLEXPORT # define SHPAPI_CALL __declspec(dllexport) # define SHPAPI_CALL1(x) __declspec(dllexport) x #endif #ifndef SHPAPI_CALL # define SHPAPI_CALL #endif #ifndef SHPAPI_CALL1 # define SHPAPI_CALL1(x) x SHPAPI_CALL #endif /************************************************************************/ /* SHP Support. */ /************************************************************************/ typedef struct { FILE *fpSHP; FILE *fpSHX; int nShapeType; /* SHPT_* */ int nFileSize; /* SHP file */ int nRecords; int nMaxRecords; int *panRecOffset; int *panRecSize; double adBoundsMin[4]; double adBoundsMax[4]; int bUpdated; unsigned char *pabyRec; int nBufSize; } SHPInfo; typedef SHPInfo * SHPHandle; /* -------------------------------------------------------------------- */ /* Shape types (nSHPType) */ /* -------------------------------------------------------------------- */ #define SHPT_NULL 0 #define SHPT_POINT 1 #define SHPT_ARC 3 #define SHPT_POLYGON 5 #define SHPT_MULTIPOINT 8 #define SHPT_POINTZ 11 #define SHPT_ARCZ 13 #define SHPT_POLYGONZ 15 #define SHPT_MULTIPOINTZ 18 #define SHPT_POINTM 21 #define SHPT_ARCM 23 #define SHPT_POLYGONM 25 #define SHPT_MULTIPOINTM 28 #define SHPT_MULTIPATCH 31 /* -------------------------------------------------------------------- */ /* Part types - everything but SHPT_MULTIPATCH just uses */ /* SHPP_RING. */ /* -------------------------------------------------------------------- */ #define SHPP_TRISTRIP 0 #define SHPP_TRIFAN 1 #define SHPP_OUTERRING 2 #define SHPP_INNERRING 3 #define SHPP_FIRSTRING 4 #define SHPP_RING 5 /* -------------------------------------------------------------------- */ /* SHPObject - represents on shape (without attributes) read */ /* from the .shp file. */ /* -------------------------------------------------------------------- */ typedef struct { int nSHPType; int nShapeId; /* -1 is unknown/unassigned */ int nParts; int *panPartStart; int *panPartType; int nVertices; double *padfX; double *padfY; double *padfZ; double *padfM; double dfXMin; double dfYMin; double dfZMin; double dfMMin; double dfXMax; double dfYMax; double dfZMax; double dfMMax; } SHPObject; /* -------------------------------------------------------------------- */ /* SHP API Prototypes */ /* -------------------------------------------------------------------- */ SHPHandle SHPAPI_CALL SHPOpen( const char * pszShapeFile, const char * pszAccess ); SHPHandle SHPAPI_CALL SHPCreate( const char * pszShapeFile, int nShapeType ); void SHPAPI_CALL SHPGetInfo( SHPHandle hSHP, int * pnEntities, int * pnShapeType, double * padfMinBound, double * padfMaxBound ); SHPObject SHPAPI_CALL1(*) SHPReadObject( SHPHandle hSHP, int iShape ); int SHPAPI_CALL SHPWriteObject( SHPHandle hSHP, int iShape, SHPObject * psObject ); void SHPAPI_CALL SHPDestroyObject( SHPObject * psObject ); void SHPAPI_CALL SHPComputeExtents( SHPObject * psObject ); SHPObject SHPAPI_CALL1(*) SHPCreateObject( int nSHPType, int nShapeId, int nParts, int * panPartStart, int * panPartType, int nVertices, double * padfX, double * padfY, double * padfZ, double * padfM ); SHPObject SHPAPI_CALL1(*) SHPCreateSimpleObject( int nSHPType, int nVertices, double * padfX, double * padfY, double * padfZ ); int SHPAPI_CALL SHPRewindObject( SHPHandle hSHP, SHPObject * psObject ); void SHPAPI_CALL SHPClose( SHPHandle hSHP ); void SHPAPI_CALL SHPWriteHeader( SHPHandle hSHP ); const char SHPAPI_CALL1(*) SHPTypeName( int nSHPType ); const char SHPAPI_CALL1(*) SHPPartTypeName( int nPartType ); /* -------------------------------------------------------------------- */ /* Shape quadtree indexing API. */ /* -------------------------------------------------------------------- */ /* this can be two or four for binary or quad tree */ #define MAX_SUBNODE 4 typedef struct shape_tree_node { /* region covered by this node */ double adfBoundsMin[4]; double adfBoundsMax[4]; /* list of shapes stored at this node. The papsShapeObj pointers or the whole list can be NULL */ int nShapeCount; int *panShapeIds; SHPObject **papsShapeObj; int nSubNodes; struct shape_tree_node *apsSubNode[MAX_SUBNODE]; } SHPTreeNode; typedef struct { SHPHandle hSHP; int nMaxDepth; int nDimension; SHPTreeNode *psRoot; } SHPTree; SHPTree SHPAPI_CALL1(*) SHPCreateTree( SHPHandle hSHP, int nDimension, int nMaxDepth, double *padfBoundsMin, double *padfBoundsMax ); void SHPAPI_CALL SHPDestroyTree( SHPTree * hTree ); int SHPAPI_CALL SHPWriteTree( SHPTree *hTree, const char * pszFilename ); SHPTree SHPAPI_CALL SHPReadTree( const char * pszFilename ); int SHPAPI_CALL SHPTreeAddObject( SHPTree * hTree, SHPObject * psObject ); int SHPAPI_CALL SHPTreeAddShapeId( SHPTree * hTree, SHPObject * psObject ); int SHPAPI_CALL SHPTreeRemoveShapeId( SHPTree * hTree, int nShapeId ); void SHPAPI_CALL SHPTreeTrimExtraNodes( SHPTree * hTree ); int SHPAPI_CALL1(*) SHPTreeFindLikelyShapes( SHPTree * hTree, double * padfBoundsMin, double * padfBoundsMax, int * ); int SHPAPI_CALL SHPCheckBoundsOverlap( double *, double *, double *, double *, int ); /************************************************************************/ /* DBF Support. */ /************************************************************************/ typedef struct { FILE *fp; int nRecords; int nRecordLength; int nHeaderLength; int nFields; int *panFieldOffset; int *panFieldSize; int *panFieldDecimals; char *pachFieldType; char *pszHeader; int nCurrentRecord; int bCurrentRecordModified; char *pszCurrentRecord; int bNoHeader; int bUpdated; } DBFInfo; typedef DBFInfo * DBFHandle; typedef enum { FTString, FTInteger, FTDouble, FTLogical, FTInvalid } DBFFieldType; #define XBASE_FLDHDR_SZ 32 DBFHandle SHPAPI_CALL DBFOpen( const char * pszDBFFile, const char * pszAccess ); DBFHandle SHPAPI_CALL DBFCreate( const char * pszDBFFile ); int SHPAPI_CALL DBFGetFieldCount( DBFHandle psDBF ); int SHPAPI_CALL DBFGetRecordCount( DBFHandle psDBF ); int SHPAPI_CALL DBFAddField( DBFHandle hDBF, const char * pszFieldName, DBFFieldType eType, int nWidth, int nDecimals ); DBFFieldType SHPAPI_CALL DBFGetFieldInfo( DBFHandle psDBF, int iField, char * pszFieldName, int * pnWidth, int * pnDecimals ); int SHPAPI_CALL DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName); int SHPAPI_CALL DBFReadIntegerAttribute( DBFHandle hDBF, int iShape, int iField ); double SHPAPI_CALL DBFReadDoubleAttribute( DBFHandle hDBF, int iShape, int iField ); const char SHPAPI_CALL1(*) DBFReadStringAttribute( DBFHandle hDBF, int iShape, int iField ); const char SHPAPI_CALL1(*) DBFReadLogicalAttribute( DBFHandle hDBF, int iShape, int iField ); int SHPAPI_CALL DBFIsAttributeNULL( DBFHandle hDBF, int iShape, int iField ); int SHPAPI_CALL DBFWriteIntegerAttribute( DBFHandle hDBF, int iShape, int iField, int nFieldValue ); int SHPAPI_CALL DBFWriteDoubleAttribute( DBFHandle hDBF, int iShape, int iField, double dFieldValue ); int SHPAPI_CALL DBFWriteStringAttribute( DBFHandle hDBF, int iShape, int iField, const char * pszFieldValue ); int SHPAPI_CALL DBFWriteNULLAttribute( DBFHandle hDBF, int iShape, int iField ); int SHPAPI_CALL DBFWriteLogicalAttribute( DBFHandle hDBF, int iShape, int iField, const char lFieldValue); int SHPAPI_CALL DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity, int iField, void * pValue ); const char SHPAPI_CALL1(*) DBFReadTuple(DBFHandle psDBF, int hEntity ); int SHPAPI_CALL DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple ); DBFHandle SHPAPI_CALL DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename ); void SHPAPI_CALL DBFClose( DBFHandle hDBF ); void SHPAPI_CALL DBFUpdateHeader( DBFHandle hDBF ); char SHPAPI_CALL DBFGetNativeFieldType( DBFHandle hDBF, int iField ); #ifdef __cplusplus } #endif #endif /* ndef _SHAPEFILE_H_INCLUDED */ postgis-0.8.1/loader/shp2pgsql.c0100664000077300001440000011506507775350175016213 0ustar postgisusers/********************************************************************** * $Id: shp2pgsql.c,v 1.45 2025/01/02 20:11:41 strk Exp $ * * Author: Jeff Lounsbury, jeffloun@refractions.net * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net * Copyright 2001-2003 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of hte GNU General Public Licence. See the COPYING file. * ********************************************************************** * $Log: shp2pgsql.c,v $ * Revision 1.45 2025/01/02 20:11:41 strk * always call setval with no schema specification. drop 'database' argument using the empty string to the AddGeometryColumn call * * Revision 1.44 2024/12/30 13:31:53 strk * made shp2pgsql looser about numeric precisions * * Revision 1.43 2024/12/30 12:37:46 strk * Fixed segfault bug reported by Randy George, removed explicit sequence drop * * Revision 1.42 2025/12/01 14:27:58 strk * added simple malloc wrapper * * Revision 1.41 2025/09/29 16:15:22 pramsey * Patch from strk: * - "\t" always preceeded the first value of a dump_format query * if NULL * * - field values where quoted with (") in dump_format when * called with -k ( did I introduce that? ) * * - Appropriate calls to DBF[..]ReadAttributes based on * cached attribute types. * * - Assured that *all* shapes are NULL before exiting with * an error ( I did not check that NULL shapes in the midle * of the shapefiles are handled, but previous code did * not check that either ... ) * * Revision 1.40 2025/09/19 00:37:33 jeffloun * fixed a bug that actually tests the first 2 point for pip instead of just thinking I was testing the first two. * * Revision 1.39 2025/08/17 19:00:14 pramsey * Change sequence handling to respect versions prior to 7.3. Patch from * strk. * * Revision 1.38 2025/08/05 16:28:05 jeffloun * Removed the setval for the sequence if the value was going to be 0. * This avoids a warning that occirs when you try to set it to 0. * * Revision 1.37 2025/08/01 23:22:44 jeffloun * Altered the loader to use a (gid serial) type instead of just a (gid int4). * Also the gid is now declared as a primary key. * * Revision 1.36 2025/07/01 18:30:55 pramsey * Added CVS revision headers. * * Revision 1.35 2025/06/18 16:30:56 pramsey * It seems that invalid geometries where in the shapefile (as far as shapelib * let shp2pgsql know). LINEZ objects with less then 2 vertices. I've * patched shp2pgsql to recognized such an inconsistence and use a NULL * geometry for that record printing a warning on stderr. * * * Revision 1.34 2025/04/14 18:01:42 pramsey * Patch for optional case sensitivity respect. From strk. * * Revision 1.33 2025/04/01 23:02:50 jeffloun * * Fixed a bug which dropped the last Z value of each line in 3d lines. * * Revision 1.32 2025/03/07 16:39:53 pramsey * M-handling patch and some Z-recognition too. * From strk@freek.keybit.net. * * Revision 1.31 2025/02/15 00:27:14 jeffloun * added more type checking into the create table statment. * Now uses int8, and numeric types if the columns definitions are too big * * Revision 1.30 2025/02/14 20:07:26 jeffloun * changed the PIP function to loop from i=0 to 1 #include #include #include "getopt.h" typedef struct {double x, y, z;} Point; typedef struct Ring{ Point *list; //list of points struct Ring *next; int n; //number of points in list } Ring; int dump_format = 0; //0=insert statements, 1 = dump int quoteidentifiers = 0; char opt; char *col_names; DBFFieldType *types; /* Fields type, width and precision */ int *widths; int *precisions; int Insert_attributes(DBFHandle hDBFHandle, int row); char *make_good_string(char *str); int ring_check(SHPObject* obj, char *table, char *sr_id, int rings, DBFHandle hDBFHandle); char *protect_quotes_string(char *str); int PIP( Point P, Point* V, int n ); void *safe_malloc(size_t size); void *safe_malloc(size_t size) { void *ret = malloc(size); if ( ! ret ) { fprintf(stderr, "Out of virtual memory\n"); exit(1); } return ret; } #define malloc(x) safe_malloc(x) char *make_good_string(char *str){ //find all the tabs and make them \s // // 1. find # of tabs // 2. make new string // // we dont escape already escaped tabs char *result; char *str2; char *start,*end; int num_tabs = 0; (str2) = (str); while ((str2 = strchr(str2, '\t')) ) { if ( (str2 == str) || (str2[-1] != '\\') ) //the previous char isnt a '\' num_tabs ++; str2++; } if (num_tabs == 0) return str; result =(char *) malloc ( strlen(str) + num_tabs+1); memset(result,0, strlen(str) + num_tabs+1 ); start = str; while((end = strchr((start),'\t'))) { if ( (end == str) || (end[-1] != '\\' ) ) //the previous char isnt a '\' { strncat(result, start, (end-start)); strcat(result,"\\\t"); start = end +1; } else { strncat(result, start, (end-start)); strcat(result,"\t"); start = end +1; } } strcat(result,start); return result; } char *protect_quotes_string(char *str){ //find all quotes and make them \quotes //find all '\' and make them '\\' // // 1. find # of characters // 2. make new string char *result; char *str2; char *start, *end1, *end2 = NULL; int num_chars = 0; str2 = str; while ((str2 = strchr((str2), '\'')) ) { //if ( (str2 == str) || (str2[-1] != '\\') ) //the previous char isnt a '\' num_chars ++; str2++; } str2 = str; while ((str2 = strchr((str2), '\\')) ) { num_chars ++; str2++; } if (num_chars == 0) return str; result =(char *) malloc ( strlen(str) + num_chars+1); memset(result,0, strlen(str) + num_chars+1 ); start = str; while((end1 = strchr((start),'\''))||(end2 = strchr((start),'\\'))) { if(end1){ strncat(result, start, (end1-start)); strcat(result, "\\\'"); start = end1+1; }else{ strncat(result, start, (end2-start)); strcat(result, "\\\\"); start = end2+1; } end1 = 0; } strcat(result,start); return result; } // PIP(): crossing number test for a point in a polygon // input: P = a point, // V[] = vertex points of a polygon V[n+1] with V[n]=V[0] // returns: 0 = outside, 1 = inside int PIP( Point P, Point* V, int n ){ int cn = 0; // the crossing number counter int i; // loop through all edges of the polygon for (i=0; i P.y)) // an upward crossing || ((V[i].y > P.y) && (V[i+1].y <= P.y))) { // a downward crossing double vt = (float)(P.y - V[i].y) / (V[i+1].y - V[i].y); if (P.x < V[i].x + vt * (V[i+1].x - V[i].x)) // P.x < intersect ++cn; // a valid crossing of y=P.y right of P.x } } return (cn&1); // 0 if even (out), and 1 if odd (in) } //This function basically deals with the polygon case. //it sorts the polys in order of outer,inner,inner, so that inners always come after outers they are within //return value is the number of rings seen so far, used to keep id's unique. int ring_check(SHPObject* obj, char *table, char *sr_id, int rings,DBFHandle hDBFHandle){ Point pt,pt2; Ring *Poly; Ring *temp; Ring **Outer; //pointer to a list of outer polygons Ring **Inner; //pointer to a list of inner polygons int out_index,in_index,indet_index; //indexes to the lists **Outer and **Inner int in,temp2; int u,i,N,n; int next_ring; //the index of the panPartStart list double area; //initialize all counters/indexes out_index=0; in_index=0; indet_index=0; area=0; n=0; i=0; N = obj->nVertices; if(obj->nParts >1){ next_ring = 1;//if there is more than one part, set the next_ring index to one }else{ next_ring = -99; } //allocate initial pointer memory Outer = (Ring**)malloc(sizeof(Ring*)*obj->nParts); Inner = (Ring**)malloc(sizeof(Ring*)*obj->nParts); Poly = (Ring*)malloc(sizeof(Ring)); Poly->list = (Point*)malloc(sizeof(Point)*N); Poly->next = NULL; for (u=0;upanPartStart[next_ring] )) || u==N-1){ //check if a ring is clockwise(outer) or not(inner) by getting positive(inner) or negative(outer) area. //'area' is actually twice actual polygon area so divide by 2, not that it matters but in case we use it latter... area = area/2.0; if(area < 0.0 || obj->nParts ==1){ //An outer ring so fill in the last point then put it in the 'Outer' list Poly->list[n].x = obj->padfX[u]; //the polygon is ended with it's first co-ordinates reused Poly->list[n].y = obj->padfY[u]; Poly->list[n].z = obj->padfZ[u]; Poly->n = n+1; Outer[out_index] = Poly; out_index++; if(u != N-1){ //dont make another ring if we are finished //allocate memory to start building the next ring Poly = (Ring*)malloc(sizeof(Ring)); //temp2 is the number of points in the list of the next ring //determined so that we can allocate the right amount of mem 6 lines down if((next_ring + 1) == obj->nParts){ temp2 = N; }else{ temp2 = obj->panPartStart[next_ring+1] - obj->panPartStart[next_ring]; } Poly->list = (Point*)malloc(sizeof(Point)*temp2); Poly->next = NULL;//make sure to make to initiale next to null or you never know when the list ends //this never used to be here and was a pain in the ass bug to find... } n=0;//set your count of what point you are at in the current ring back to 0 }else{ Poly->list[n].x = obj->padfX[u]; //the polygon ends with it's first co-ordinates reused Poly->list[n].y = obj->padfY[u]; Poly->list[n].z = obj->padfZ[u]; Poly->n = n+1; Inner[in_index] = Poly; in_index++; Poly = (Ring*)malloc(sizeof(Ring)); temp2 = N; if((next_ring + 1) == obj->nParts){ }else{ temp2 = obj->panPartStart[next_ring+1] - obj->panPartStart[next_ring]; } Poly->list = (Point*)malloc(sizeof(Point)*temp2); Poly->next = NULL; n=0; } area=0.0; if((next_ring + 1) == obj->nParts){ }else{ next_ring++; } }else{ Poly->list[n].x = obj->padfX[u]; Poly->list[n].y = obj->padfY[u]; Poly->list[n].z = obj->padfZ[u]; n++; area += (obj->padfX[u] * obj->padfY[u+1]) - (obj->padfY[u] * obj->padfX[u+1]); //calculate the area } } //Put the inner rings into the list of the outer rings of which they are within for(u=0; u < in_index; u++){ pt.x = Inner[u]->list[0].x; pt.y = Inner[u]->list[0].y; pt2.x = Inner[u]->list[1].x; pt2.y = Inner[u]->list[1].y; for(i=0;i< out_index; i++){ in = PIP(pt,Outer[i]->list,Outer[i]->n); if(in==1 || (PIP(pt2,Outer[i]->list,Outer[i]->n) == 1)){ Poly = Outer[i]; while(Poly->next != NULL){ Poly = Poly->next; } Poly->next = Inner[u]; break; } } //if the ring wasn't within any outer rings, assume it is a new outer ring if(i == out_index){ Outer[out_index] = Inner[u]; out_index++; } } //start spitting out the sql for ordered entities now. if (dump_format){ if(opt != 'a'){ printf("%i\t",rings); } }else{ if ( quoteidentifiers ){ if(opt == 'a'){ printf("\nInsert into \"%s\" %s values(",table,col_names); }else{ printf("\nInsert into \"%s\" %s values('%i',",table,col_names,rings); } }else{ if(opt == 'a'){ printf("\nInsert into %s %s values(",table,col_names); }else{ printf("\nInsert into %s %s values('%i',",table,col_names,rings); } } } rings++; Insert_attributes(hDBFHandle,rings-1); if (dump_format){ printf("\tSRID=%s ;MULTIPOLYGON(",sr_id ); }else{ printf(",GeometryFromText('MULTIPOLYGON("); } for(u=0; u < out_index; u++){ Poly = Outer[u]; if(u==0){ printf("("); }else{ printf(",("); } if(obj->nSHPType == 5){ while(Poly != NULL){ for(i=0;in;i++){ if(i==0){ if(Poly != Outer[u]){ printf(","); } printf("(%.15g %.15g ",Poly->list[i].x,Poly->list[i].y); }else{ printf(",%.15g %.15g ",Poly->list[i].x,Poly->list[i].y); } } printf(")"); Poly = Poly->next; } printf(")"); }else{ while(Poly != NULL){ for(i=0;in;i++){ if(i==0){ if(Poly != Outer[u]){ printf(","); } printf("(%.15g %.15g %.15g ",Poly->list[i].x,Poly->list[i].y,Poly->list[i].z); }else{ printf(",%.15g %.15g %.15g ",Poly->list[i].x,Poly->list[i].y,Poly->list[i].z); } } printf(")"); Poly = Poly->next; } printf(")"); } } if (dump_format){ printf(")\n"); }else{ printf(")',%s) );",sr_id); } for(u=0; u < out_index; u++){ Poly = Outer[u]; while(Poly != NULL){ temp = Poly; Poly = Poly->next; free(temp->list); free(temp); } } free(Outer); free(Inner); free(Poly); return rings; } //Insert the attributes from the correct row of dbf file int Insert_attributes(DBFHandle hDBFHandle, int row) { int i,num_fields; char val[1024]; num_fields = DBFGetFieldCount( hDBFHandle ); for( i = 0; i < num_fields; i++ ) { if(DBFIsAttributeNULL( hDBFHandle, row, i)) { if(dump_format) { if(i) printf("\t"); printf("\\N"); } else { if(i) printf(","); printf("NULL"); } } else /* Attribute NOT NULL */ { switch (types[i]) { case FTString: if ( -1 == snprintf(val, 1024, "%s", DBFReadStringAttribute(hDBFHandle, row, i)) ) { fprintf(stderr, "Warning: field %d name trucated\n", i); val[1023] = '\0'; } break; case FTInteger: sprintf(val, "%d", DBFReadIntegerAttribute(hDBFHandle, row, i)); break; case FTDouble: sprintf(val, "%f", DBFReadDoubleAttribute(hDBFHandle, row, i)); break; default: fprintf(stderr, "Error: field %d has invalid or unknown field type (%d)\n", i, types[i]); exit(1); } if (dump_format) { if ( i ) printf("\t"); printf("%s",make_good_string(val)); } else { if ( i ) printf(","); printf("'%s'",protect_quotes_string(val)); } } } return 1; } // main() //see description at the top of this file int main (int ARGC, char **ARGV){ SHPHandle hSHPHandle; DBFHandle hDBFHandle; int num_fields,num_records,begin,trans,field_precision, field_width; int num_entities, phnshapetype,next_ring,errflg,c; double padminbound[8], padmaxbound[8]; int u,j,z,tot_rings,curindex; SHPObject *obj=NULL; char name[32]; char *sr_id,*shp_file,*table; char **names; DBFFieldType type = -1; extern char *optarg; extern int optind; opt = ' '; errflg =0; j=0; sr_id =shp_file = table = NULL; while ((c = getopt(ARGC, ARGV, "kcdaDs:")) != EOF){ switch (c) { case 'c': if (opt == ' ') opt ='c'; else errflg =1;; break; case 'd': if (opt == ' ') opt ='d'; else errflg =1;; break; case 'a': if (opt == ' ') opt ='a'; else errflg =1;; break; case 'D': dump_format =1; break; case 's': sr_id = optarg; break; case 'k': quoteidentifiers = 1; break; case '?': errflg=1; } } if(sr_id == NULL){ sr_id = "-1"; } if(opt == ' '){ opt = 'c'; } curindex=0; for ( ; optind < ARGC; optind++){ if(curindex ==0){ shp_file = ARGV[optind]; }else if(curindex == 1){ table = ARGV[optind]; } curindex++; } /* * Third argument (if present) is supported for compatibility * with old shp2pgsql versions taking also database name. */ if(curindex < 2 || curindex > 3){ errflg = 1; } if (errflg==1) { printf("\n**ERROR** invalid option or command parameters\n"); printf("\n"); printf("USAGE: shp2pgsql []
\n"); printf("\n"); printf("OPTIONS:\n"); printf(" -s Set the SRID field. If not specified it defaults to -1.\n"); printf("\n"); printf(" (-d|a|c) These are mutually exclusive options:\n"); printf(" -d Drops the table , then recreates it and populates\n"); printf(" it with current shape file data.\n"); printf(" -a Appends shape file into current table, must be\n"); printf(" exactly the same table schema.\n"); printf(" -c Creates a new table and populates it, this is the\n"); printf(" default if you do not specify any options.\n"); printf("\n"); printf(" -D Use postgresql dump format (defaults to sql insert\n"); printf(" statments.\n"); printf("\n"); printf(" -k Keep postgresql identifiers case.\n"); exit (2); } //Open the shp and dbf files hSHPHandle = SHPOpen( shp_file, "rb" ); hDBFHandle = DBFOpen( shp_file, "rb" ); if (hSHPHandle == NULL || hDBFHandle == NULL){ fprintf(stderr, "shape is null\n"); exit(-1); } if(opt == 'd') { //-------------------------Drop the table-------------------------------- printf("select DropGeometryColumn('','%s','the_geom');", table); if ( quoteidentifiers ){ printf("\ndrop table \"%s\";\n",table); }else{ printf("\ndrop table %s;\n",table); } } /* * Get col names and types to fully specify them in inserts */ num_fields = DBFGetFieldCount( hDBFHandle ); num_records = DBFGetRecordCount(hDBFHandle); names = malloc(num_fields*sizeof(char*)); types = (DBFFieldType *)malloc(num_fields*sizeof(char*)); widths = malloc(num_fields*sizeof(int)); precisions = malloc(num_fields*sizeof(int)); col_names = malloc(num_fields * sizeof(char) * 32); if(opt != 'a'){ strcpy(col_names, "(gid," ); }else{ strcpy(col_names, "(" ); } for(j=0;jpachFieldType[j] == 'D' ) /* Date field */ { printf ("varchar(8)");//date data-type is not supported in API so check for it explicity before the api call. } else { if(type == FTString){ printf ("varchar"); }else if(type == FTInteger){ if( field_width > 18 ){ printf ("numeric(%d,0)",field_width); }else if( field_width > 9){ printf ("int8"); }else{ printf ("int4"); } }else if(type == FTDouble){ if( field_width > 18 ){ //printf ("numeric(%d,%d)",field_width, field_precision); printf ("numeric"); }else{ printf ("float8"); } }else{ printf ("Invalid type in DBF file"); } } } printf (");\n"); //finished creating the table } SHPGetInfo( hSHPHandle, &num_entities, &phnshapetype, &padminbound[0], &padmaxbound[0]); j=num_entities; while(obj == NULL && j--) { obj = SHPReadObject(hSHPHandle,j); } if ( obj == NULL) { fprintf(stderr, "Shapefile contains %d NULL object(s)\n", num_entities); exit(-1); } trans=0; //create the geometry column with an addgeometry call to dave's function if(opt != 'a'){ printf("select AddGeometryColumn('','%s','the_geom','%s',",table,sr_id); if( obj->nSHPType == 1 ){ //2d point printf("'POINT',2);\n"); }else if( obj->nSHPType == 21){ // PointM printf("'POINT',2);\n"); }else if( obj->nSHPType == 23){ // PolyLineM printf("'MULTILINESTRING',2);\n"); }else if( obj->nSHPType == 25){ // PolygonM printf("'MULTIPOLYGON',2);\n"); }else if( obj->nSHPType == 28){ // MultiPointM printf("'MULTIPOINT',2);\n"); }else if( obj->nSHPType == 3){ //2d arcs/lines printf("'MULTILINESTRING',2);\n"); }else if( obj->nSHPType == 5){ //2d polygons printf("'MULTIPOLYGON',2);\n"); }else if( obj->nSHPType == 8){ //2d multipoint printf("'MULTIPOINT',2);\n"); }else if( obj->nSHPType == 11){ //3d points printf("'POINT',3);\n"); }else if( obj->nSHPType == 13){ //3d arcs/lines printf("'MULTILINESTRING',3);\n"); }else if( obj->nSHPType == 15){ //3d polygons printf("'MULTIPOLYGON',3);\n"); }else if( obj->nSHPType == 18){ //3d multipoints printf("'MULTIPOINT',3);\n"); }else{ printf("'GEOMETRY',3);\n"); } } if (dump_format){ printf("COPY \"%s\" %s FROM stdin;\n",table, col_names); } if (obj->nVertices == 0){ if (dump_format){ printf("\\N"); Insert_attributes(hDBFHandle,j);//add the attributes of each shape to the insert statement SHPDestroyObject(obj); }else{ printf("NULL"); Insert_attributes(hDBFHandle,j);//add the attributes of each shape to the insert statement SHPDestroyObject(obj); } } else { //Determine what type of shape is in the file and do appropriate processing if(( obj->nSHPType == 5 ) || ( obj->nSHPType == 25 )){ //--------------------------------------------------------------------------------- //---------POLYGONS---------------------------------------------------------------- // sorts of all the rings so that they are outer,inner,iner,outer,inner... // with the inner ones coming after the outer ones they are within spatially tot_rings = 0; //go through each entity and call ring_check() to sort the rings and print out the sql statement // keep track of total number of inserts in tot_rings so // you can pass it to the function for the next entity for (j=0;jnSHPType == 1 || obj->nSHPType == 21 ){ //--------------------------------------------------------------------- //----------POINTS----------------------------------------------------- for (j=0;jnVertices; u++){ if (u>0){ printf(",%.15g %.15g",obj->padfX[u],obj->padfY[u]); }else{ printf("%.15g %.15g",obj->padfX[u],obj->padfY[u]); } } if (dump_format){ printf(")\n"); } else{ printf(")',%s) );\n",sr_id); } SHPDestroyObject(obj); } if (!(dump_format) ){ printf("end;"); //End the last transaction } }else if( obj->nSHPType == 3 || obj->nSHPType == 23 ){ //------------------------------------------------------------------------ //--------ARCs / LINES---------------------------------------------------- begin=0;//initialize the begin flag for (j=0;jnParts >1){ next_ring = 1;//if there is more than one part, set the next_ring index to one }else{ next_ring = -99; } Insert_attributes(hDBFHandle,j); //add the attributes of each shape to the insert statement /* Invalid (MULTI)Linestring */ if ( obj->nVertices < 2 ) { fprintf(stderr, "MULTILINESTRING %d as %d vertices, set to NULL\n", j, obj->nVertices); if (dump_format){ printf("\t\\N\n"); }else{ printf(",NULL);\n"); } SHPDestroyObject(obj); continue; } if (dump_format){ printf("\tSRID=%s;MULTILINESTRING(",sr_id); }else{ printf(",GeometryFromText('MULTILINESTRING ("); } //for each vertice write out the coordinates in the insert statement, when there is a new line //you must end the brackets and start new ones etc. for (u=0;unVertices; u++){ //check if the next vertice is the start of a new line //printf("\n\nu+1 = %d, next_ring = %d index = %d\n",u+1,next_ring,obj->panPartStart[next_ring]); if(next_ring==-99 && obj->nVertices ==1){ printf("(%.15g %.15g )",obj->padfX[u],obj->padfY[u]); }else if((next_ring != -99)&& (begin==1) && (u+1 == obj->panPartStart[next_ring]) ){ printf("(%.15g %.15g )",obj->padfX[u],obj->padfY[u]); next_ring++; begin=1; }else if(((next_ring != -99) && (u+1 == obj->panPartStart[next_ring] )) || u==(obj->nVertices-1) ){ printf(",%.15g %.15g ",obj->padfX[u],obj->padfY[u]); printf(")"); next_ring++; begin=1;//flag the fact that you area at a new line next time through the loop }else{ if (u==0 || begin==1){ //if you are at the begging of a new line add comma and brackets if(u!=0) printf(","); printf("(%.15g %.15g ",obj->padfX[u],obj->padfY[u]); begin=0; }else{ printf(",%.15g %.15g ",obj->padfX[u],obj->padfY[u]); } } } if (dump_format) { printf(")\n"); } else printf(")',%s) );\n",sr_id); SHPDestroyObject(obj); } if (!(dump_format) ) printf("end;");//end the last transaction }else if( obj->nSHPType == 8 || obj->nSHPType == 28 ){ //--------------------------------------------------------------------- //----------MULTIPOINTS------------------------------------------------ for (j=0;jnVertices; u++){ if (u>0){ printf(",%.15g %.15g",obj->padfX[u],obj->padfY[u]); }else{ printf("%.15g %.15g",obj->padfX[u],obj->padfY[u]); } } if (dump_format){ printf(")\n"); } else{ printf(")',%s) );\n",sr_id); } SHPDestroyObject(obj); } if (!(dump_format) ){ printf("end;"); //End the last transaction } }else if( obj->nSHPType == 11 ){ //--------------------------------------------------------------------- //----------POINTZ----------------------------------------------------- for (j=0;jnVertices; u++){ if (u>0){ printf(",%.15g %.15g %.15g",obj->padfX[u],obj->padfY[u],obj->padfZ[u]); }else{ printf("%.15g %.15g %.15g",obj->padfX[u],obj->padfY[u],obj->padfZ[u]); } } if (dump_format){ printf(")\n"); } else{ printf(")',%s) );\n",sr_id); } SHPDestroyObject(obj); } if (!(dump_format) ){ printf("end;"); //End the last transaction } }else if( obj->nSHPType == 13 ){ //--------------------------------------------------------------------- //------Linez(3D lines)-------------------------------------------- begin=0;//initialize the begin flag for (j=0;jnParts >1){ next_ring = 1;//if there is more than one part, set the next_ring index to one }else{ next_ring = -99; } Insert_attributes(hDBFHandle,j);//add the attributes of each shape to the insert statement /* Invalid (MULTI)Linestring */ if ( obj->nVertices < 2 ) { fprintf(stderr, "MULTILINESTRING %d as %d vertices, set to NULL\n", j, obj->nVertices); if (dump_format){ printf("\t\\N\n"); }else{ printf(",NULL);\n"); } SHPDestroyObject(obj); continue; } if (dump_format){ printf("\tSRID=%s;MULTILINESTRING(",sr_id); }else{ printf(",GeometryFromText('MULTILINESTRING ("); } //for each vertice write out the coordinates in the insert statement, when there is a new line //you must end the brackets and start new ones etc. for (u=0;unVertices; u++){ //check if the next vertice is the start of a new line if(((next_ring != -99) && (u+1 == obj->panPartStart[next_ring] )) || u==(obj->nVertices-1) ){ printf(",%.15g %.15g %.15g ",obj->padfX[u],obj->padfY[u],obj->padfZ[u]); printf(")"); next_ring++; begin =1;//flag the fact that you area at a new line next time through the loop }else{ if (u==0 || begin==1){ if(u!=0) printf(","); printf("(%.15g %.15g %.15g ",obj->padfX[u],obj->padfY[u],obj->padfZ[u]); begin=0; }else{ printf(",%.15g %.15g %.15g ",obj->padfX[u],obj->padfY[u],obj->padfZ[u]); } } } if (dump_format){ printf(")\n"); }else{ printf(")',%s));\n",sr_id); } SHPDestroyObject(obj); } if (!(dump_format) ) printf("end;");//close last transaction }else if( obj->nSHPType == 15 ){ //--------------------------------------------------------------------------------- //---------POLYGONZ (3D POLYGONS)-------------------------------------------------- // sorts of all the rings so that they are outer,inner,iner,outer,inner... // with the inner ones coming after the outer ones they are within spatially tot_rings = 0; //go through each entity and call ring_check() to sort the rings and print out the sql statement // keep track of total number of inserts in tot_rings so // you can pass it to the function for the next entity for (j=0;jnSHPType == 18 ){ //--------------------------------------------------------------------------- //------MULTIPOINTZ (3D MULTIPOINTS)----------------------------------------- for (j=0;jnVertices; u++){ if (u>0){ printf(",%.15g %.15g %.15g",obj->padfX[u],obj->padfY[u],obj->padfZ[u]); }else{ printf("%.15g %.15g %.15g",obj->padfX[u],obj->padfY[u],obj->padfZ[u]); } } if (dump_format) { printf(")\n"); } else printf(")',%s));\n",sr_id); SHPDestroyObject(obj); } if (!(dump_format) ) printf("end;");//end the last transaction }else{ printf ("\n\n**** Type is NOT SUPPORTED, type id = %d ****\n\n",obj->nSHPType); //print out what type the file is and that it is not supported }//end the if statement for shape types } if ((dump_format) ) { printf("\\.\n"); } free(col_names); if(opt != 'a'){ printf("\nALTER TABLE ONLY %s ADD CONSTRAINT %s_pkey PRIMARY KEY (gid);\n",table,table); if(j > 1){ printf("SELECT setval ('%s_gid_seq', %i, true);\n", table, j-1); } } return(1); }//end main() postgis-0.8.1/loader/shpopen.c0100664000077300001440000021104107762724760015734 0ustar postgisusers/****************************************************************************** * $Id: shpopen.c,v 1.5 2025/12/01 20:52:00 strk Exp $ * * Project: Shapelib * Purpose: Implementation of core Shapefile read/write functions. * Author: Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999, 2001, Frank Warmerdam * * This software is available under the following "MIT Style" license, * or at the option of the licensee under the LGPL (see LICENSE.LGPL). This * option is discussed in more detail in shapelib.html. * * -- * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************** * * $Log: shpopen.c,v $ * Revision 1.5 2025/12/01 20:52:00 strk * shapelib put in sync with gdal cvs * * Revision 1.43 2025/12/01 16:20:08 warmerda * be careful of zero vertex shapes * * Revision 1.42 2025/12/01 14:58:27 warmerda * added degenerate object check in SHPRewindObject() * * Revision 1.41 2025/07/08 15:22:43 warmerda * avoid warning * * Revision 1.40 2025/04/21 18:30:37 warmerda * added header write/update public methods * * Revision 1.39 2025/08/26 06:46:56 warmerda * avoid c++ comments * * Revision 1.38 2025/05/07 16:43:39 warmerda * Removed debugging printf. * * Revision 1.37 2025/04/10 17:35:22 warmerda * fixed bug in ring reversal code * * Revision 1.36 2025/04/10 16:59:54 warmerda * added SHPRewindObject * * Revision 1.35 2025/12/07 15:10:44 warmerda * fix if .shx fails to open * * Revision 1.34 2025/11/01 16:29:55 warmerda * move pabyRec into SHPInfo for thread safety * * Revision 1.33 2025/07/03 12:18:15 warmerda * Improved cleanup if SHX not found, provied by Riccardo Cohen. * * Revision 1.32 2025/06/22 01:58:07 warmerda * be more careful about establishing initial bounds in face of NULL shapes * * Revision 1.31 2025/05/31 19:35:29 warmerda * added support for writing null shapes * * Revision 1.30 2025/05/28 12:46:29 warmerda * Add some checking on reasonableness of record count when opening. * * Revision 1.29 2025/05/23 13:36:52 warmerda * added use of SHPAPI_CALL * * Revision 1.28 2025/02/06 22:25:06 warmerda * fixed memory leaks when SHPOpen() fails * * Revision 1.27 2025/07/18 15:21:33 warmerda * added better enforcement of -1 for append in SHPWriteObject * * Revision 1.26 2025/02/16 16:03:51 warmerda * added null shape support * * Revision 1.25 2025/12/15 13:47:07 warmerda * Fixed record size settings in .shp file (was 4 words too long) * Added stdlib.h. * * Revision 1.24 2025/11/05 14:12:04 warmerda * updated license terms * * Revision 1.23 2025/07/27 00:53:46 warmerda * added support for rewriting shapes * * Revision 1.22 2025/06/11 19:19:11 warmerda * Cleanup pabyRec static buffer on SHPClose(). * * Revision 1.21 2025/06/02 14:57:56 kshih * Remove unused variables * * Revision 1.20 2025/04/19 21:04:17 warmerda * Fixed syntax error. * * Revision 1.19 2025/04/19 21:01:57 warmerda * Force access string to binary in SHPOpen(). * * Revision 1.18 2025/04/01 18:48:07 warmerda * Try upper case extensions if lower case doesn't work. * * Revision 1.17 2024/12/31 15:29:39 warmerda * Disable writing measure values to multipatch objects if * DISABLE_MULTIPATCH_MEASURE is defined. * * Revision 1.16 2025/12/16 05:14:33 warmerda * Added support to write MULTIPATCH. Fixed reading Z coordinate of * MULTIPATCH. Fixed record size written for all feature types. * * Revision 1.15 2025/12/03 16:35:29 warmerda * r+b is proper binary access string, not rb+. * * Revision 1.14 2025/12/03 15:47:56 warmerda * Fixed setting of nVertices in SHPCreateObject(). * * Revision 1.13 2025/12/03 15:33:54 warmerda * Made SHPCalculateExtents() separately callable. * * Revision 1.12 2025/11/11 20:01:50 warmerda * Fixed bug writing ArcM/Z, and PolygonM/Z for big endian machines. * * Revision 1.11 2025/11/09 20:56:44 warmerda * Fixed up handling of file wide bounds. * * Revision 1.10 2025/11/09 20:18:51 warmerda * Converted to support 3D shapefiles, and use of SHPObject. * * Revision 1.9 2025/02/24 15:09:05 warmerda * Fixed memory leak. * * Revision 1.8 2025/12/04 15:40:29 warmerda * Fixed byte swapping of record number, and record length fields in the * .shp file. * * Revision 1.7 2025/10/21 03:15:58 warmerda * Added support for binary file access, the magic cookie 9997 * and tried to improve the int32 selection logic for 16bit systems. * * Revision 1.6 2025/09/04 04:19:41 warmerda * Added fix for file bounds. * * Revision 1.5 2025/08/25 15:16:44 warmerda * Fixed a couple of problems with big endian systems ... one with bounds * and the other with multipart polygons. * * Revision 1.4 2025/08/24 18:10:17 warmerda * Switch to use SfRealloc() to avoid problems with pre-ANSI realloc() * functions (such as on the Sun). * * Revision 1.3 2025/08/23 02:23:15 warmerda * Added support for reading bounds, and fixed up problems in setting the * file wide bounds. * * Revision 1.2 2025/08/04 03:16:57 warmerda * Added header. * */ static char rcsid[] = "$Id: shpopen.c,v 1.5 2025/12/01 20:52:00 strk Exp $"; #include "shapefil.h" #include #include #include #include #include typedef unsigned char uchar; #if UINT_MAX == 65535 typedef long int32; #else typedef int int32; #endif #ifndef FALSE # define FALSE 0 # define TRUE 1 #endif #define ByteCopy( a, b, c ) memcpy( b, a, c ) #ifndef MAX # define MIN(a,b) ((ab) ? a : b) #endif static int bBigEndian; /************************************************************************/ /* SwapWord() */ /* */ /* Swap a 2, 4 or 8 byte word. */ /************************************************************************/ static void SwapWord( int length, void * wordP ) { int i; uchar temp; for( i=0; i < length/2; i++ ) { temp = ((uchar *) wordP)[i]; ((uchar *)wordP)[i] = ((uchar *) wordP)[length-i-1]; ((uchar *) wordP)[length-i-1] = temp; } } /************************************************************************/ /* SfRealloc() */ /* */ /* A realloc cover function that will access a NULL pointer as */ /* a valid input. */ /************************************************************************/ static void * SfRealloc( void * pMem, int nNewSize ) { if( pMem == NULL ) return( (void *) malloc(nNewSize) ); else return( (void *) realloc(pMem,nNewSize) ); } /************************************************************************/ /* SHPWriteHeader() */ /* */ /* Write out a header for the .shp and .shx files as well as the */ /* contents of the index (.shx) file. */ /************************************************************************/ void SHPWriteHeader( SHPHandle psSHP ) { uchar abyHeader[100]; int i; int32 i32; double dValue; int32 *panSHX; /* -------------------------------------------------------------------- */ /* Prepare header block for .shp file. */ /* -------------------------------------------------------------------- */ for( i = 0; i < 100; i++ ) abyHeader[i] = 0; abyHeader[2] = 0x27; /* magic cookie */ abyHeader[3] = 0x0a; i32 = psSHP->nFileSize/2; /* file size */ ByteCopy( &i32, abyHeader+24, 4 ); if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); i32 = 1000; /* version */ ByteCopy( &i32, abyHeader+28, 4 ); if( bBigEndian ) SwapWord( 4, abyHeader+28 ); i32 = psSHP->nShapeType; /* shape type */ ByteCopy( &i32, abyHeader+32, 4 ); if( bBigEndian ) SwapWord( 4, abyHeader+32 ); dValue = psSHP->adBoundsMin[0]; /* set bounds */ ByteCopy( &dValue, abyHeader+36, 8 ); if( bBigEndian ) SwapWord( 8, abyHeader+36 ); dValue = psSHP->adBoundsMin[1]; ByteCopy( &dValue, abyHeader+44, 8 ); if( bBigEndian ) SwapWord( 8, abyHeader+44 ); dValue = psSHP->adBoundsMax[0]; ByteCopy( &dValue, abyHeader+52, 8 ); if( bBigEndian ) SwapWord( 8, abyHeader+52 ); dValue = psSHP->adBoundsMax[1]; ByteCopy( &dValue, abyHeader+60, 8 ); if( bBigEndian ) SwapWord( 8, abyHeader+60 ); dValue = psSHP->adBoundsMin[2]; /* z */ ByteCopy( &dValue, abyHeader+68, 8 ); if( bBigEndian ) SwapWord( 8, abyHeader+68 ); dValue = psSHP->adBoundsMax[2]; ByteCopy( &dValue, abyHeader+76, 8 ); if( bBigEndian ) SwapWord( 8, abyHeader+76 ); dValue = psSHP->adBoundsMin[3]; /* m */ ByteCopy( &dValue, abyHeader+84, 8 ); if( bBigEndian ) SwapWord( 8, abyHeader+84 ); dValue = psSHP->adBoundsMax[3]; ByteCopy( &dValue, abyHeader+92, 8 ); if( bBigEndian ) SwapWord( 8, abyHeader+92 ); /* -------------------------------------------------------------------- */ /* Write .shp file header. */ /* -------------------------------------------------------------------- */ fseek( psSHP->fpSHP, 0, 0 ); fwrite( abyHeader, 100, 1, psSHP->fpSHP ); /* -------------------------------------------------------------------- */ /* Prepare, and write .shx file header. */ /* -------------------------------------------------------------------- */ i32 = (psSHP->nRecords * 2 * sizeof(int32) + 100)/2; /* file size */ ByteCopy( &i32, abyHeader+24, 4 ); if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); fseek( psSHP->fpSHX, 0, 0 ); fwrite( abyHeader, 100, 1, psSHP->fpSHX ); /* -------------------------------------------------------------------- */ /* Write out the .shx contents. */ /* -------------------------------------------------------------------- */ panSHX = (int32 *) malloc(sizeof(int32) * 2 * psSHP->nRecords); for( i = 0; i < psSHP->nRecords; i++ ) { panSHX[i*2 ] = psSHP->panRecOffset[i]/2; panSHX[i*2+1] = psSHP->panRecSize[i]/2; if( !bBigEndian ) SwapWord( 4, panSHX+i*2 ); if( !bBigEndian ) SwapWord( 4, panSHX+i*2+1 ); } fwrite( panSHX, sizeof(int32) * 2, psSHP->nRecords, psSHP->fpSHX ); free( panSHX ); /* -------------------------------------------------------------------- */ /* Flush to disk. */ /* -------------------------------------------------------------------- */ fflush( psSHP->fpSHP ); fflush( psSHP->fpSHX ); } /************************************************************************/ /* SHPOpen() */ /* */ /* Open the .shp and .shx files based on the basename of the */ /* files or either file name. */ /************************************************************************/ SHPHandle SHPAPI_CALL SHPOpen( const char * pszLayer, const char * pszAccess ) { char *pszFullname, *pszBasename; SHPHandle psSHP; uchar *pabyBuf; int i; double dValue; /* -------------------------------------------------------------------- */ /* Ensure the access string is one of the legal ones. We */ /* ensure the result string indicates binary to avoid common */ /* problems on Windows. */ /* -------------------------------------------------------------------- */ if( strcmp(pszAccess,"rb+") == 0 || strcmp(pszAccess,"r+b") == 0 || strcmp(pszAccess,"r+") == 0 ) pszAccess = "r+b"; else pszAccess = "rb"; /* -------------------------------------------------------------------- */ /* Establish the byte order on this machine. */ /* -------------------------------------------------------------------- */ i = 1; if( *((uchar *) &i) == 1 ) bBigEndian = FALSE; else bBigEndian = TRUE; /* -------------------------------------------------------------------- */ /* Initialize the info structure. */ /* -------------------------------------------------------------------- */ psSHP = (SHPHandle) calloc(sizeof(SHPInfo),1); psSHP->bUpdated = FALSE; /* -------------------------------------------------------------------- */ /* Compute the base (layer) name. If there is any extension */ /* on the passed in filename we will strip it off. */ /* -------------------------------------------------------------------- */ pszBasename = (char *) malloc(strlen(pszLayer)+5); strcpy( pszBasename, pszLayer ); for( i = strlen(pszBasename)-1; i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' && pszBasename[i] != '\\'; i-- ) {} if( pszBasename[i] == '.' ) pszBasename[i] = '\0'; /* -------------------------------------------------------------------- */ /* Open the .shp and .shx files. Note that files pulled from */ /* a PC to Unix with upper case filenames won't work! */ /* -------------------------------------------------------------------- */ pszFullname = (char *) malloc(strlen(pszBasename) + 5); sprintf( pszFullname, "%s.shp", pszBasename ); psSHP->fpSHP = fopen(pszFullname, pszAccess ); if( psSHP->fpSHP == NULL ) { sprintf( pszFullname, "%s.SHP", pszBasename ); psSHP->fpSHP = fopen(pszFullname, pszAccess ); } if( psSHP->fpSHP == NULL ) { free( psSHP ); free( pszBasename ); free( pszFullname ); return( NULL ); } sprintf( pszFullname, "%s.shx", pszBasename ); psSHP->fpSHX = fopen(pszFullname, pszAccess ); if( psSHP->fpSHX == NULL ) { sprintf( pszFullname, "%s.SHX", pszBasename ); psSHP->fpSHX = fopen(pszFullname, pszAccess ); } if( psSHP->fpSHX == NULL ) { fclose( psSHP->fpSHP ); free( psSHP ); free( pszBasename ); free( pszFullname ); return( NULL ); } free( pszFullname ); free( pszBasename ); /* -------------------------------------------------------------------- */ /* Read the file size from the SHP file. */ /* -------------------------------------------------------------------- */ pabyBuf = (uchar *) malloc(100); fread( pabyBuf, 100, 1, psSHP->fpSHP ); psSHP->nFileSize = (pabyBuf[24] * 256 * 256 * 256 + pabyBuf[25] * 256 * 256 + pabyBuf[26] * 256 + pabyBuf[27]) * 2; /* -------------------------------------------------------------------- */ /* Read SHX file Header info */ /* -------------------------------------------------------------------- */ fread( pabyBuf, 100, 1, psSHP->fpSHX ); if( pabyBuf[0] != 0 || pabyBuf[1] != 0 || pabyBuf[2] != 0x27 || (pabyBuf[3] != 0x0a && pabyBuf[3] != 0x0d) ) { fclose( psSHP->fpSHP ); fclose( psSHP->fpSHX ); free( psSHP ); return( NULL ); } psSHP->nRecords = pabyBuf[27] + pabyBuf[26] * 256 + pabyBuf[25] * 256 * 256 + pabyBuf[24] * 256 * 256 * 256; psSHP->nRecords = (psSHP->nRecords*2 - 100) / 8; psSHP->nShapeType = pabyBuf[32]; if( psSHP->nRecords < 0 || psSHP->nRecords > 256000000 ) { /* this header appears to be corrupt. Give up. */ fclose( psSHP->fpSHP ); fclose( psSHP->fpSHX ); free( psSHP ); return( NULL ); } /* -------------------------------------------------------------------- */ /* Read the bounds. */ /* -------------------------------------------------------------------- */ if( bBigEndian ) SwapWord( 8, pabyBuf+36 ); memcpy( &dValue, pabyBuf+36, 8 ); psSHP->adBoundsMin[0] = dValue; if( bBigEndian ) SwapWord( 8, pabyBuf+44 ); memcpy( &dValue, pabyBuf+44, 8 ); psSHP->adBoundsMin[1] = dValue; if( bBigEndian ) SwapWord( 8, pabyBuf+52 ); memcpy( &dValue, pabyBuf+52, 8 ); psSHP->adBoundsMax[0] = dValue; if( bBigEndian ) SwapWord( 8, pabyBuf+60 ); memcpy( &dValue, pabyBuf+60, 8 ); psSHP->adBoundsMax[1] = dValue; if( bBigEndian ) SwapWord( 8, pabyBuf+68 ); /* z */ memcpy( &dValue, pabyBuf+68, 8 ); psSHP->adBoundsMin[2] = dValue; if( bBigEndian ) SwapWord( 8, pabyBuf+76 ); memcpy( &dValue, pabyBuf+76, 8 ); psSHP->adBoundsMax[2] = dValue; if( bBigEndian ) SwapWord( 8, pabyBuf+84 ); /* z */ memcpy( &dValue, pabyBuf+84, 8 ); psSHP->adBoundsMin[3] = dValue; if( bBigEndian ) SwapWord( 8, pabyBuf+92 ); memcpy( &dValue, pabyBuf+92, 8 ); psSHP->adBoundsMax[3] = dValue; free( pabyBuf ); /* -------------------------------------------------------------------- */ /* Read the .shx file to get the offsets to each record in */ /* the .shp file. */ /* -------------------------------------------------------------------- */ psSHP->nMaxRecords = psSHP->nRecords; psSHP->panRecOffset = (int *) malloc(sizeof(int) * MAX(1,psSHP->nMaxRecords) ); psSHP->panRecSize = (int *) malloc(sizeof(int) * MAX(1,psSHP->nMaxRecords) ); pabyBuf = (uchar *) malloc(8 * MAX(1,psSHP->nRecords) ); fread( pabyBuf, 8, psSHP->nRecords, psSHP->fpSHX ); for( i = 0; i < psSHP->nRecords; i++ ) { int32 nOffset, nLength; memcpy( &nOffset, pabyBuf + i * 8, 4 ); if( !bBigEndian ) SwapWord( 4, &nOffset ); memcpy( &nLength, pabyBuf + i * 8 + 4, 4 ); if( !bBigEndian ) SwapWord( 4, &nLength ); psSHP->panRecOffset[i] = nOffset*2; psSHP->panRecSize[i] = nLength*2; } free( pabyBuf ); return( psSHP ); } /************************************************************************/ /* SHPClose() */ /* */ /* Close the .shp and .shx files. */ /************************************************************************/ void SHPAPI_CALL SHPClose(SHPHandle psSHP ) { /* -------------------------------------------------------------------- */ /* Update the header if we have modified anything. */ /* -------------------------------------------------------------------- */ if( psSHP->bUpdated ) SHPWriteHeader( psSHP ); /* -------------------------------------------------------------------- */ /* Free all resources, and close files. */ /* -------------------------------------------------------------------- */ free( psSHP->panRecOffset ); free( psSHP->panRecSize ); fclose( psSHP->fpSHX ); fclose( psSHP->fpSHP ); if( psSHP->pabyRec != NULL ) { free( psSHP->pabyRec ); } free( psSHP ); } /************************************************************************/ /* SHPGetInfo() */ /* */ /* Fetch general information about the shape file. */ /************************************************************************/ void SHPAPI_CALL SHPGetInfo(SHPHandle psSHP, int * pnEntities, int * pnShapeType, double * padfMinBound, double * padfMaxBound ) { int i; if( pnEntities != NULL ) *pnEntities = psSHP->nRecords; if( pnShapeType != NULL ) *pnShapeType = psSHP->nShapeType; for( i = 0; i < 4; i++ ) { if( padfMinBound != NULL ) padfMinBound[i] = psSHP->adBoundsMin[i]; if( padfMaxBound != NULL ) padfMaxBound[i] = psSHP->adBoundsMax[i]; } } /************************************************************************/ /* SHPCreate() */ /* */ /* Create a new shape file and return a handle to the open */ /* shape file with read/write access. */ /************************************************************************/ SHPHandle SHPAPI_CALL SHPCreate( const char * pszLayer, int nShapeType ) { char *pszBasename, *pszFullname; int i; FILE *fpSHP, *fpSHX; uchar abyHeader[100]; int32 i32; double dValue; /* -------------------------------------------------------------------- */ /* Establish the byte order on this system. */ /* -------------------------------------------------------------------- */ i = 1; if( *((uchar *) &i) == 1 ) bBigEndian = FALSE; else bBigEndian = TRUE; /* -------------------------------------------------------------------- */ /* Compute the base (layer) name. If there is any extension */ /* on the passed in filename we will strip it off. */ /* -------------------------------------------------------------------- */ pszBasename = (char *) malloc(strlen(pszLayer)+5); strcpy( pszBasename, pszLayer ); for( i = strlen(pszBasename)-1; i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' && pszBasename[i] != '\\'; i-- ) {} if( pszBasename[i] == '.' ) pszBasename[i] = '\0'; /* -------------------------------------------------------------------- */ /* Open the two files so we can write their headers. */ /* -------------------------------------------------------------------- */ pszFullname = (char *) malloc(strlen(pszBasename) + 5); sprintf( pszFullname, "%s.shp", pszBasename ); fpSHP = fopen(pszFullname, "wb" ); if( fpSHP == NULL ) return( NULL ); sprintf( pszFullname, "%s.shx", pszBasename ); fpSHX = fopen(pszFullname, "wb" ); if( fpSHX == NULL ) return( NULL ); free( pszFullname ); free( pszBasename ); /* -------------------------------------------------------------------- */ /* Prepare header block for .shp file. */ /* -------------------------------------------------------------------- */ for( i = 0; i < 100; i++ ) abyHeader[i] = 0; abyHeader[2] = 0x27; /* magic cookie */ abyHeader[3] = 0x0a; i32 = 50; /* file size */ ByteCopy( &i32, abyHeader+24, 4 ); if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); i32 = 1000; /* version */ ByteCopy( &i32, abyHeader+28, 4 ); if( bBigEndian ) SwapWord( 4, abyHeader+28 ); i32 = nShapeType; /* shape type */ ByteCopy( &i32, abyHeader+32, 4 ); if( bBigEndian ) SwapWord( 4, abyHeader+32 ); dValue = 0.0; /* set bounds */ ByteCopy( &dValue, abyHeader+36, 8 ); ByteCopy( &dValue, abyHeader+44, 8 ); ByteCopy( &dValue, abyHeader+52, 8 ); ByteCopy( &dValue, abyHeader+60, 8 ); /* -------------------------------------------------------------------- */ /* Write .shp file header. */ /* -------------------------------------------------------------------- */ fwrite( abyHeader, 100, 1, fpSHP ); /* -------------------------------------------------------------------- */ /* Prepare, and write .shx file header. */ /* -------------------------------------------------------------------- */ i32 = 50; /* file size */ ByteCopy( &i32, abyHeader+24, 4 ); if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); fwrite( abyHeader, 100, 1, fpSHX ); /* -------------------------------------------------------------------- */ /* Close the files, and then open them as regular existing files. */ /* -------------------------------------------------------------------- */ fclose( fpSHP ); fclose( fpSHX ); return( SHPOpen( pszLayer, "r+b" ) ); } /************************************************************************/ /* _SHPSetBounds() */ /* */ /* Compute a bounds rectangle for a shape, and set it into the */ /* indicated location in the record. */ /************************************************************************/ static void _SHPSetBounds( uchar * pabyRec, SHPObject * psShape ) { ByteCopy( &(psShape->dfXMin), pabyRec + 0, 8 ); ByteCopy( &(psShape->dfYMin), pabyRec + 8, 8 ); ByteCopy( &(psShape->dfXMax), pabyRec + 16, 8 ); ByteCopy( &(psShape->dfYMax), pabyRec + 24, 8 ); if( bBigEndian ) { SwapWord( 8, pabyRec + 0 ); SwapWord( 8, pabyRec + 8 ); SwapWord( 8, pabyRec + 16 ); SwapWord( 8, pabyRec + 24 ); } } /************************************************************************/ /* SHPComputeExtents() */ /* */ /* Recompute the extents of a shape. Automatically done by */ /* SHPCreateObject(). */ /************************************************************************/ void SHPAPI_CALL SHPComputeExtents( SHPObject * psObject ) { int i; /* -------------------------------------------------------------------- */ /* Build extents for this object. */ /* -------------------------------------------------------------------- */ if( psObject->nVertices > 0 ) { psObject->dfXMin = psObject->dfXMax = psObject->padfX[0]; psObject->dfYMin = psObject->dfYMax = psObject->padfY[0]; psObject->dfZMin = psObject->dfZMax = psObject->padfZ[0]; psObject->dfMMin = psObject->dfMMax = psObject->padfM[0]; } for( i = 0; i < psObject->nVertices; i++ ) { psObject->dfXMin = MIN(psObject->dfXMin, psObject->padfX[i]); psObject->dfYMin = MIN(psObject->dfYMin, psObject->padfY[i]); psObject->dfZMin = MIN(psObject->dfZMin, psObject->padfZ[i]); psObject->dfMMin = MIN(psObject->dfMMin, psObject->padfM[i]); psObject->dfXMax = MAX(psObject->dfXMax, psObject->padfX[i]); psObject->dfYMax = MAX(psObject->dfYMax, psObject->padfY[i]); psObject->dfZMax = MAX(psObject->dfZMax, psObject->padfZ[i]); psObject->dfMMax = MAX(psObject->dfMMax, psObject->padfM[i]); } } /************************************************************************/ /* SHPCreateObject() */ /* */ /* Create a shape object. It should be freed with */ /* SHPDestroyObject(). */ /************************************************************************/ SHPObject SHPAPI_CALL1(*) SHPCreateObject( int nSHPType, int nShapeId, int nParts, int * panPartStart, int * panPartType, int nVertices, double * padfX, double * padfY, double * padfZ, double * padfM ) { SHPObject *psObject; int i, bHasM, bHasZ; psObject = (SHPObject *) calloc(1,sizeof(SHPObject)); psObject->nSHPType = nSHPType; psObject->nShapeId = nShapeId; /* -------------------------------------------------------------------- */ /* Establish whether this shape type has M, and Z values. */ /* -------------------------------------------------------------------- */ if( nSHPType == SHPT_ARCM || nSHPType == SHPT_POINTM || nSHPType == SHPT_POLYGONM || nSHPType == SHPT_MULTIPOINTM ) { bHasM = TRUE; bHasZ = FALSE; } else if( nSHPType == SHPT_ARCZ || nSHPType == SHPT_POINTZ || nSHPType == SHPT_POLYGONZ || nSHPType == SHPT_MULTIPOINTZ || nSHPType == SHPT_MULTIPATCH ) { bHasM = TRUE; bHasZ = TRUE; } else { bHasM = FALSE; bHasZ = FALSE; } /* -------------------------------------------------------------------- */ /* Capture parts. Note that part type is optional, and */ /* defaults to ring. */ /* -------------------------------------------------------------------- */ if( nSHPType == SHPT_ARC || nSHPType == SHPT_POLYGON || nSHPType == SHPT_ARCM || nSHPType == SHPT_POLYGONM || nSHPType == SHPT_ARCZ || nSHPType == SHPT_POLYGONZ || nSHPType == SHPT_MULTIPATCH ) { psObject->nParts = MAX(1,nParts); psObject->panPartStart = (int *) malloc(sizeof(int) * psObject->nParts); psObject->panPartType = (int *) malloc(sizeof(int) * psObject->nParts); psObject->panPartStart[0] = 0; psObject->panPartType[0] = SHPP_RING; for( i = 0; i < nParts; i++ ) { psObject->panPartStart[i] = panPartStart[i]; if( panPartType != NULL ) psObject->panPartType[i] = panPartType[i]; else psObject->panPartType[i] = SHPP_RING; } } /* -------------------------------------------------------------------- */ /* Capture vertices. Note that Z and M are optional, but X and */ /* Y are not. */ /* -------------------------------------------------------------------- */ if( nVertices > 0 ) { psObject->padfX = (double *) calloc(sizeof(double),nVertices); psObject->padfY = (double *) calloc(sizeof(double),nVertices); psObject->padfZ = (double *) calloc(sizeof(double),nVertices); psObject->padfM = (double *) calloc(sizeof(double),nVertices); assert( padfX != NULL ); assert( padfY != NULL ); for( i = 0; i < nVertices; i++ ) { psObject->padfX[i] = padfX[i]; psObject->padfY[i] = padfY[i]; if( padfZ != NULL && bHasZ ) psObject->padfZ[i] = padfZ[i]; if( padfM != NULL && bHasM ) psObject->padfM[i] = padfM[i]; } } /* -------------------------------------------------------------------- */ /* Compute the extents. */ /* -------------------------------------------------------------------- */ psObject->nVertices = nVertices; SHPComputeExtents( psObject ); return( psObject ); } /************************************************************************/ /* SHPCreateSimpleObject() */ /* */ /* Create a simple (common) shape object. Destroy with */ /* SHPDestroyObject(). */ /************************************************************************/ SHPObject SHPAPI_CALL1(*) SHPCreateSimpleObject( int nSHPType, int nVertices, double * padfX, double * padfY, double * padfZ ) { return( SHPCreateObject( nSHPType, -1, 0, NULL, NULL, nVertices, padfX, padfY, padfZ, NULL ) ); } /************************************************************************/ /* SHPWriteObject() */ /* */ /* Write out the vertices of a new structure. Note that it is */ /* only possible to write vertices at the end of the file. */ /************************************************************************/ int SHPAPI_CALL SHPWriteObject(SHPHandle psSHP, int nShapeId, SHPObject * psObject ) { int nRecordOffset, i, nRecordSize=0; uchar *pabyRec; int32 i32; psSHP->bUpdated = TRUE; /* -------------------------------------------------------------------- */ /* Ensure that shape object matches the type of the file it is */ /* being written to. */ /* -------------------------------------------------------------------- */ assert( psObject->nSHPType == psSHP->nShapeType || psObject->nSHPType == SHPT_NULL ); /* -------------------------------------------------------------------- */ /* Ensure that -1 is used for appends. Either blow an */ /* assertion, or if they are disabled, set the shapeid to -1 */ /* for appends. */ /* -------------------------------------------------------------------- */ assert( nShapeId == -1 || (nShapeId >= 0 && nShapeId < psSHP->nRecords) ); if( nShapeId != -1 && nShapeId >= psSHP->nRecords ) nShapeId = -1; /* -------------------------------------------------------------------- */ /* Add the new entity to the in memory index. */ /* -------------------------------------------------------------------- */ if( nShapeId == -1 && psSHP->nRecords+1 > psSHP->nMaxRecords ) { psSHP->nMaxRecords =(int) ( psSHP->nMaxRecords * 1.3 + 100); psSHP->panRecOffset = (int *) SfRealloc(psSHP->panRecOffset,sizeof(int) * psSHP->nMaxRecords ); psSHP->panRecSize = (int *) SfRealloc(psSHP->panRecSize,sizeof(int) * psSHP->nMaxRecords ); } /* -------------------------------------------------------------------- */ /* Initialize record. */ /* -------------------------------------------------------------------- */ pabyRec = (uchar *) malloc(psObject->nVertices * 4 * sizeof(double) + psObject->nParts * 8 + 128); /* -------------------------------------------------------------------- */ /* Extract vertices for a Polygon or Arc. */ /* -------------------------------------------------------------------- */ if( psObject->nSHPType == SHPT_POLYGON || psObject->nSHPType == SHPT_POLYGONZ || psObject->nSHPType == SHPT_POLYGONM || psObject->nSHPType == SHPT_ARC || psObject->nSHPType == SHPT_ARCZ || psObject->nSHPType == SHPT_ARCM || psObject->nSHPType == SHPT_MULTIPATCH ) { int32 nPoints, nParts; int i; nPoints = psObject->nVertices; nParts = psObject->nParts; _SHPSetBounds( pabyRec + 12, psObject ); if( bBigEndian ) SwapWord( 4, &nPoints ); if( bBigEndian ) SwapWord( 4, &nParts ); ByteCopy( &nPoints, pabyRec + 40 + 8, 4 ); ByteCopy( &nParts, pabyRec + 36 + 8, 4 ); nRecordSize = 52; /* * Write part start positions. */ ByteCopy( psObject->panPartStart, pabyRec + 44 + 8, 4 * psObject->nParts ); for( i = 0; i < psObject->nParts; i++ ) { if( bBigEndian ) SwapWord( 4, pabyRec + 44 + 8 + 4*i ); nRecordSize += 4; } /* * Write multipatch part types if needed. */ if( psObject->nSHPType == SHPT_MULTIPATCH ) { memcpy( pabyRec + nRecordSize, psObject->panPartType, 4*psObject->nParts ); for( i = 0; i < psObject->nParts; i++ ) { if( bBigEndian ) SwapWord( 4, pabyRec + nRecordSize ); nRecordSize += 4; } } /* * Write the (x,y) vertex values. */ for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfX + i, pabyRec + nRecordSize, 8 ); ByteCopy( psObject->padfY + i, pabyRec + nRecordSize + 8, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize + 8 ); nRecordSize += 2 * 8; } /* * Write the Z coordinates (if any). */ if( psObject->nSHPType == SHPT_POLYGONZ || psObject->nSHPType == SHPT_ARCZ || psObject->nSHPType == SHPT_MULTIPATCH ) { ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } /* * Write the M values, if any. */ if( psObject->nSHPType == SHPT_POLYGONM || psObject->nSHPType == SHPT_ARCM #ifndef DISABLE_MULTIPATCH_MEASURE || psObject->nSHPType == SHPT_MULTIPATCH #endif || psObject->nSHPType == SHPT_POLYGONZ || psObject->nSHPType == SHPT_ARCZ ) { ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } } /* -------------------------------------------------------------------- */ /* Extract vertices for a MultiPoint. */ /* -------------------------------------------------------------------- */ else if( psObject->nSHPType == SHPT_MULTIPOINT || psObject->nSHPType == SHPT_MULTIPOINTZ || psObject->nSHPType == SHPT_MULTIPOINTM ) { int32 nPoints; int i; nPoints = psObject->nVertices; _SHPSetBounds( pabyRec + 12, psObject ); if( bBigEndian ) SwapWord( 4, &nPoints ); ByteCopy( &nPoints, pabyRec + 44, 4 ); for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfX + i, pabyRec + 48 + i*16, 8 ); ByteCopy( psObject->padfY + i, pabyRec + 48 + i*16 + 8, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 ); if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 + 8 ); } nRecordSize = 48 + 16 * psObject->nVertices; if( psObject->nSHPType == SHPT_MULTIPOINTZ ) { ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } if( psObject->nSHPType == SHPT_MULTIPOINTZ || psObject->nSHPType == SHPT_MULTIPOINTM ) { ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } } /* -------------------------------------------------------------------- */ /* Write point. */ /* -------------------------------------------------------------------- */ else if( psObject->nSHPType == SHPT_POINT || psObject->nSHPType == SHPT_POINTZ || psObject->nSHPType == SHPT_POINTM ) { ByteCopy( psObject->padfX, pabyRec + 12, 8 ); ByteCopy( psObject->padfY, pabyRec + 20, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + 12 ); if( bBigEndian ) SwapWord( 8, pabyRec + 20 ); nRecordSize = 28; if( psObject->nSHPType == SHPT_POINTZ ) { ByteCopy( psObject->padfZ, pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; } if( psObject->nSHPType == SHPT_POINTZ || psObject->nSHPType == SHPT_POINTM ) { ByteCopy( psObject->padfM, pabyRec + nRecordSize, 8 ); if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } /* -------------------------------------------------------------------- */ /* Not much to do for null geometries. */ /* -------------------------------------------------------------------- */ else if( psObject->nSHPType == SHPT_NULL ) { nRecordSize = 12; } else { /* unknown type */ assert( FALSE ); } /* -------------------------------------------------------------------- */ /* Establish where we are going to put this record. If we are */ /* rewriting and existing record, and it will fit, then put it */ /* back where the original came from. Otherwise write at the end. */ /* -------------------------------------------------------------------- */ if( nShapeId == -1 || psSHP->panRecSize[nShapeId] < nRecordSize-8 ) { if( nShapeId == -1 ) nShapeId = psSHP->nRecords++; psSHP->panRecOffset[nShapeId] = nRecordOffset = psSHP->nFileSize; psSHP->panRecSize[nShapeId] = nRecordSize-8; psSHP->nFileSize += nRecordSize; } else { nRecordOffset = psSHP->panRecOffset[nShapeId]; } /* -------------------------------------------------------------------- */ /* Set the shape type, record number, and record size. */ /* -------------------------------------------------------------------- */ i32 = nShapeId+1; /* record # */ if( !bBigEndian ) SwapWord( 4, &i32 ); ByteCopy( &i32, pabyRec, 4 ); i32 = (nRecordSize-8)/2; /* record size */ if( !bBigEndian ) SwapWord( 4, &i32 ); ByteCopy( &i32, pabyRec + 4, 4 ); i32 = psObject->nSHPType; /* shape type */ if( bBigEndian ) SwapWord( 4, &i32 ); ByteCopy( &i32, pabyRec + 8, 4 ); /* -------------------------------------------------------------------- */ /* Write out record. */ /* -------------------------------------------------------------------- */ if( fseek( psSHP->fpSHP, nRecordOffset, 0 ) != 0 || fwrite( pabyRec, nRecordSize, 1, psSHP->fpSHP ) < 1 ) { printf( "Error in fseek() or fwrite().\n" ); free( pabyRec ); return -1; } free( pabyRec ); /* -------------------------------------------------------------------- */ /* Expand file wide bounds based on this shape. */ /* -------------------------------------------------------------------- */ if( psSHP->adBoundsMin[0] == 0.0 && psSHP->adBoundsMax[0] == 0.0 && psSHP->adBoundsMin[1] == 0.0 && psSHP->adBoundsMax[1] == 0.0 ) { if( psObject->nSHPType == SHPT_NULL || psObject->nVertices == 0 ) { psSHP->adBoundsMin[0] = psSHP->adBoundsMax[0] = 0.0; psSHP->adBoundsMin[1] = psSHP->adBoundsMax[1] = 0.0; psSHP->adBoundsMin[2] = psSHP->adBoundsMax[2] = 0.0; psSHP->adBoundsMin[3] = psSHP->adBoundsMax[3] = 0.0; } else { psSHP->adBoundsMin[0] = psSHP->adBoundsMax[0] = psObject->padfX[0]; psSHP->adBoundsMin[1] = psSHP->adBoundsMax[1] = psObject->padfY[0]; psSHP->adBoundsMin[2] = psSHP->adBoundsMax[2] = psObject->padfZ[0]; psSHP->adBoundsMin[3] = psSHP->adBoundsMax[3] = psObject->padfM[0]; } } for( i = 0; i < psObject->nVertices; i++ ) { psSHP->adBoundsMin[0] = MIN(psSHP->adBoundsMin[0],psObject->padfX[i]); psSHP->adBoundsMin[1] = MIN(psSHP->adBoundsMin[1],psObject->padfY[i]); psSHP->adBoundsMin[2] = MIN(psSHP->adBoundsMin[2],psObject->padfZ[i]); psSHP->adBoundsMin[3] = MIN(psSHP->adBoundsMin[3],psObject->padfM[i]); psSHP->adBoundsMax[0] = MAX(psSHP->adBoundsMax[0],psObject->padfX[i]); psSHP->adBoundsMax[1] = MAX(psSHP->adBoundsMax[1],psObject->padfY[i]); psSHP->adBoundsMax[2] = MAX(psSHP->adBoundsMax[2],psObject->padfZ[i]); psSHP->adBoundsMax[3] = MAX(psSHP->adBoundsMax[3],psObject->padfM[i]); } return( nShapeId ); } /************************************************************************/ /* SHPReadObject() */ /* */ /* Read the vertices, parts, and other non-attribute information */ /* for one shape. */ /************************************************************************/ SHPObject SHPAPI_CALL1(*) SHPReadObject( SHPHandle psSHP, int hEntity ) { SHPObject *psShape; /* -------------------------------------------------------------------- */ /* Validate the record/entity number. */ /* -------------------------------------------------------------------- */ if( hEntity < 0 || hEntity >= psSHP->nRecords ) return( NULL ); /* -------------------------------------------------------------------- */ /* Ensure our record buffer is large enough. */ /* -------------------------------------------------------------------- */ if( psSHP->panRecSize[hEntity]+8 > psSHP->nBufSize ) { psSHP->nBufSize = psSHP->panRecSize[hEntity]+8; psSHP->pabyRec = (uchar *) SfRealloc(psSHP->pabyRec,psSHP->nBufSize); } /* -------------------------------------------------------------------- */ /* Read the record. */ /* -------------------------------------------------------------------- */ fseek( psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0 ); fread( psSHP->pabyRec, psSHP->panRecSize[hEntity]+8, 1, psSHP->fpSHP ); /* -------------------------------------------------------------------- */ /* Allocate and minimally initialize the object. */ /* -------------------------------------------------------------------- */ psShape = (SHPObject *) calloc(1,sizeof(SHPObject)); psShape->nShapeId = hEntity; memcpy( &psShape->nSHPType, psSHP->pabyRec + 8, 4 ); if( bBigEndian ) SwapWord( 4, &(psShape->nSHPType) ); /* ==================================================================== */ /* Extract vertices for a Polygon or Arc. */ /* ==================================================================== */ if( psShape->nSHPType == SHPT_POLYGON || psShape->nSHPType == SHPT_ARC || psShape->nSHPType == SHPT_POLYGONZ || psShape->nSHPType == SHPT_POLYGONM || psShape->nSHPType == SHPT_ARCZ || psShape->nSHPType == SHPT_ARCM || psShape->nSHPType == SHPT_MULTIPATCH ) { int32 nPoints, nParts; int i, nOffset; /* -------------------------------------------------------------------- */ /* Get the X/Y bounds. */ /* -------------------------------------------------------------------- */ memcpy( &(psShape->dfXMin), psSHP->pabyRec + 8 + 4, 8 ); memcpy( &(psShape->dfYMin), psSHP->pabyRec + 8 + 12, 8 ); memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 ); memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 ); if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) ); /* -------------------------------------------------------------------- */ /* Extract part/point count, and build vertex and part arrays */ /* to proper size. */ /* -------------------------------------------------------------------- */ memcpy( &nPoints, psSHP->pabyRec + 40 + 8, 4 ); memcpy( &nParts, psSHP->pabyRec + 36 + 8, 4 ); if( bBigEndian ) SwapWord( 4, &nPoints ); if( bBigEndian ) SwapWord( 4, &nParts ); psShape->nVertices = nPoints; psShape->padfX = (double *) calloc(nPoints,sizeof(double)); psShape->padfY = (double *) calloc(nPoints,sizeof(double)); psShape->padfZ = (double *) calloc(nPoints,sizeof(double)); psShape->padfM = (double *) calloc(nPoints,sizeof(double)); psShape->nParts = nParts; psShape->panPartStart = (int *) calloc(nParts,sizeof(int)); psShape->panPartType = (int *) calloc(nParts,sizeof(int)); for( i = 0; i < nParts; i++ ) psShape->panPartType[i] = SHPP_RING; /* -------------------------------------------------------------------- */ /* Copy out the part array from the record. */ /* -------------------------------------------------------------------- */ memcpy( psShape->panPartStart, psSHP->pabyRec + 44 + 8, 4 * nParts ); for( i = 0; i < nParts; i++ ) { if( bBigEndian ) SwapWord( 4, psShape->panPartStart+i ); } nOffset = 44 + 8 + 4*nParts; /* -------------------------------------------------------------------- */ /* If this is a multipatch, we will also have parts types. */ /* -------------------------------------------------------------------- */ if( psShape->nSHPType == SHPT_MULTIPATCH ) { memcpy( psShape->panPartType, psSHP->pabyRec + nOffset, 4*nParts ); for( i = 0; i < nParts; i++ ) { if( bBigEndian ) SwapWord( 4, psShape->panPartType+i ); } nOffset += 4*nParts; } /* -------------------------------------------------------------------- */ /* Copy out the vertices from the record. */ /* -------------------------------------------------------------------- */ for( i = 0; i < nPoints; i++ ) { memcpy(psShape->padfX + i, psSHP->pabyRec + nOffset + i * 16, 8 ); memcpy(psShape->padfY + i, psSHP->pabyRec + nOffset + i * 16 + 8, 8 ); if( bBigEndian ) SwapWord( 8, psShape->padfX + i ); if( bBigEndian ) SwapWord( 8, psShape->padfY + i ); } nOffset += 16*nPoints; /* -------------------------------------------------------------------- */ /* If we have a Z coordinate, collect that now. */ /* -------------------------------------------------------------------- */ if( psShape->nSHPType == SHPT_POLYGONZ || psShape->nSHPType == SHPT_ARCZ || psShape->nSHPType == SHPT_MULTIPATCH ) { memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 ); memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 ); if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) ); for( i = 0; i < nPoints; i++ ) { memcpy( psShape->padfZ + i, psSHP->pabyRec + nOffset + 16 + i*8, 8 ); if( bBigEndian ) SwapWord( 8, psShape->padfZ + i ); } nOffset += 16 + 8*nPoints; } /* -------------------------------------------------------------------- */ /* If we have a M measure value, then read it now. We assume */ /* that the measure can be present for any shape if the size is */ /* big enough, but really it will only occur for the Z shapes */ /* (options), and the M shapes. */ /* -------------------------------------------------------------------- */ if( psSHP->panRecSize[hEntity]+8 >= nOffset + 16 + 8*nPoints ) { memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 ); memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 ); if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) ); for( i = 0; i < nPoints; i++ ) { memcpy( psShape->padfM + i, psSHP->pabyRec + nOffset + 16 + i*8, 8 ); if( bBigEndian ) SwapWord( 8, psShape->padfM + i ); } } } /* ==================================================================== */ /* Extract vertices for a MultiPoint. */ /* ==================================================================== */ else if( psShape->nSHPType == SHPT_MULTIPOINT || psShape->nSHPType == SHPT_MULTIPOINTM || psShape->nSHPType == SHPT_MULTIPOINTZ ) { int32 nPoints; int i, nOffset; memcpy( &nPoints, psSHP->pabyRec + 44, 4 ); if( bBigEndian ) SwapWord( 4, &nPoints ); psShape->nVertices = nPoints; psShape->padfX = (double *) calloc(nPoints,sizeof(double)); psShape->padfY = (double *) calloc(nPoints,sizeof(double)); psShape->padfZ = (double *) calloc(nPoints,sizeof(double)); psShape->padfM = (double *) calloc(nPoints,sizeof(double)); for( i = 0; i < nPoints; i++ ) { memcpy(psShape->padfX+i, psSHP->pabyRec + 48 + 16 * i, 8 ); memcpy(psShape->padfY+i, psSHP->pabyRec + 48 + 16 * i + 8, 8 ); if( bBigEndian ) SwapWord( 8, psShape->padfX + i ); if( bBigEndian ) SwapWord( 8, psShape->padfY + i ); } nOffset = 48 + 16*nPoints; /* -------------------------------------------------------------------- */ /* Get the X/Y bounds. */ /* -------------------------------------------------------------------- */ memcpy( &(psShape->dfXMin), psSHP->pabyRec + 8 + 4, 8 ); memcpy( &(psShape->dfYMin), psSHP->pabyRec + 8 + 12, 8 ); memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 ); memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 ); if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) ); /* -------------------------------------------------------------------- */ /* If we have a Z coordinate, collect that now. */ /* -------------------------------------------------------------------- */ if( psShape->nSHPType == SHPT_MULTIPOINTZ ) { memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 ); memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 ); if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) ); for( i = 0; i < nPoints; i++ ) { memcpy( psShape->padfZ + i, psSHP->pabyRec + nOffset + 16 + i*8, 8 ); if( bBigEndian ) SwapWord( 8, psShape->padfZ + i ); } nOffset += 16 + 8*nPoints; } /* -------------------------------------------------------------------- */ /* If we have a M measure value, then read it now. We assume */ /* that the measure can be present for any shape if the size is */ /* big enough, but really it will only occur for the Z shapes */ /* (options), and the M shapes. */ /* -------------------------------------------------------------------- */ if( psSHP->panRecSize[hEntity]+8 >= nOffset + 16 + 8*nPoints ) { memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 ); memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 ); if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) ); if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) ); for( i = 0; i < nPoints; i++ ) { memcpy( psShape->padfM + i, psSHP->pabyRec + nOffset + 16 + i*8, 8 ); if( bBigEndian ) SwapWord( 8, psShape->padfM + i ); } } } /* ==================================================================== */ /* Extract vertices for a point. */ /* ==================================================================== */ else if( psShape->nSHPType == SHPT_POINT || psShape->nSHPType == SHPT_POINTM || psShape->nSHPType == SHPT_POINTZ ) { int nOffset; psShape->nVertices = 1; psShape->padfX = (double *) calloc(1,sizeof(double)); psShape->padfY = (double *) calloc(1,sizeof(double)); psShape->padfZ = (double *) calloc(1,sizeof(double)); psShape->padfM = (double *) calloc(1,sizeof(double)); memcpy( psShape->padfX, psSHP->pabyRec + 12, 8 ); memcpy( psShape->padfY, psSHP->pabyRec + 20, 8 ); if( bBigEndian ) SwapWord( 8, psShape->padfX ); if( bBigEndian ) SwapWord( 8, psShape->padfY ); nOffset = 20 + 8; /* -------------------------------------------------------------------- */ /* If we have a Z coordinate, collect that now. */ /* -------------------------------------------------------------------- */ if( psShape->nSHPType == SHPT_POINTZ ) { memcpy( psShape->padfZ, psSHP->pabyRec + nOffset, 8 ); if( bBigEndian ) SwapWord( 8, psShape->padfZ ); nOffset += 8; } /* -------------------------------------------------------------------- */ /* If we have a M measure value, then read it now. We assume */ /* that the measure can be present for any shape if the size is */ /* big enough, but really it will only occur for the Z shapes */ /* (options), and the M shapes. */ /* -------------------------------------------------------------------- */ if( psSHP->panRecSize[hEntity]+8 >= nOffset + 8 ) { memcpy( psShape->padfM, psSHP->pabyRec + nOffset, 8 ); if( bBigEndian ) SwapWord( 8, psShape->padfM ); } /* -------------------------------------------------------------------- */ /* Since no extents are supplied in the record, we will apply */ /* them from the single vertex. */ /* -------------------------------------------------------------------- */ psShape->dfXMin = psShape->dfXMax = psShape->padfX[0]; psShape->dfYMin = psShape->dfYMax = psShape->padfY[0]; psShape->dfZMin = psShape->dfZMax = psShape->padfZ[0]; psShape->dfMMin = psShape->dfMMax = psShape->padfM[0]; } return( psShape ); } /************************************************************************/ /* SHPTypeName() */ /************************************************************************/ const char SHPAPI_CALL1(*) SHPTypeName( int nSHPType ) { switch( nSHPType ) { case SHPT_NULL: return "NullShape"; case SHPT_POINT: return "Point"; case SHPT_ARC: return "Arc"; case SHPT_POLYGON: return "Polygon"; case SHPT_MULTIPOINT: return "MultiPoint"; case SHPT_POINTZ: return "PointZ"; case SHPT_ARCZ: return "ArcZ"; case SHPT_POLYGONZ: return "PolygonZ"; case SHPT_MULTIPOINTZ: return "MultiPointZ"; case SHPT_POINTM: return "PointM"; case SHPT_ARCM: return "ArcM"; case SHPT_POLYGONM: return "PolygonM"; case SHPT_MULTIPOINTM: return "MultiPointM"; case SHPT_MULTIPATCH: return "MultiPatch"; default: return "UnknownShapeType"; } } /************************************************************************/ /* SHPPartTypeName() */ /************************************************************************/ const char SHPAPI_CALL1(*) SHPPartTypeName( int nPartType ) { switch( nPartType ) { case SHPP_TRISTRIP: return "TriangleStrip"; case SHPP_TRIFAN: return "TriangleFan"; case SHPP_OUTERRING: return "OuterRing"; case SHPP_INNERRING: return "InnerRing"; case SHPP_FIRSTRING: return "FirstRing"; case SHPP_RING: return "Ring"; default: return "UnknownPartType"; } } /************************************************************************/ /* SHPDestroyObject() */ /************************************************************************/ void SHPAPI_CALL SHPDestroyObject( SHPObject * psShape ) { if( psShape == NULL ) return; if( psShape->padfX != NULL ) free( psShape->padfX ); if( psShape->padfY != NULL ) free( psShape->padfY ); if( psShape->padfZ != NULL ) free( psShape->padfZ ); if( psShape->padfM != NULL ) free( psShape->padfM ); if( psShape->panPartStart != NULL ) free( psShape->panPartStart ); if( psShape->panPartType != NULL ) free( psShape->panPartType ); free( psShape ); } /************************************************************************/ /* SHPRewindObject() */ /* */ /* Reset the winding of polygon objects to adhere to the */ /* specification. */ /************************************************************************/ int SHPAPI_CALL SHPRewindObject( SHPHandle hSHP, SHPObject * psObject ) { int iOpRing, bAltered = 0; /* -------------------------------------------------------------------- */ /* Do nothing if this is not a polygon object. */ /* -------------------------------------------------------------------- */ if( psObject->nSHPType != SHPT_POLYGON && psObject->nSHPType != SHPT_POLYGONZ && psObject->nSHPType != SHPT_POLYGONM ) return 0; if( psObject->nVertices == 0 || psObject->nParts == 0 ) return 0; /* -------------------------------------------------------------------- */ /* Process each of the rings. */ /* -------------------------------------------------------------------- */ for( iOpRing = 0; iOpRing < psObject->nParts; iOpRing++ ) { int bInner, iVert, nVertCount, nVertStart, iCheckRing; double dfSum, dfTestX, dfTestY; /* -------------------------------------------------------------------- */ /* Determine if this ring is an inner ring or an outer ring */ /* relative to all the other rings. For now we assume the */ /* first ring is outer and all others are inner, but eventually */ /* we need to fix this to handle multiple island polygons and */ /* unordered sets of rings. */ /* -------------------------------------------------------------------- */ dfTestX = psObject->padfX[psObject->panPartStart[iOpRing]]; dfTestY = psObject->padfY[psObject->panPartStart[iOpRing]]; bInner = FALSE; for( iCheckRing = 0; iCheckRing < psObject->nParts; iCheckRing++ ) { int iEdge; if( iCheckRing == iOpRing ) continue; nVertStart = psObject->panPartStart[iCheckRing]; if( iCheckRing == psObject->nParts-1 ) nVertCount = psObject->nVertices - psObject->panPartStart[iCheckRing]; else nVertCount = psObject->panPartStart[iCheckRing+1] - psObject->panPartStart[iCheckRing]; for( iEdge = 0; iEdge < nVertCount; iEdge++ ) { int iNext; if( iEdge < nVertCount-1 ) iNext = iEdge+1; else iNext = 0; if( (psObject->padfY[iEdge+nVertStart] < dfTestY && psObject->padfY[iNext+nVertStart] >= dfTestY) || (psObject->padfY[iNext+nVertStart] < dfTestY && psObject->padfY[iEdge+nVertStart] >= dfTestY) ) { if( psObject->padfX[iEdge+nVertStart] + (dfTestY - psObject->padfY[iEdge+nVertStart]) / (psObject->padfY[iNext+nVertStart] - psObject->padfY[iEdge+nVertStart]) * (psObject->padfX[iNext+nVertStart] - psObject->padfX[iEdge+nVertStart]) < dfTestX ) bInner = !bInner; } } } /* -------------------------------------------------------------------- */ /* Determine the current order of this ring so we will know if */ /* it has to be reversed. */ /* -------------------------------------------------------------------- */ nVertStart = psObject->panPartStart[iOpRing]; if( iOpRing == psObject->nParts-1 ) nVertCount = psObject->nVertices - psObject->panPartStart[iOpRing]; else nVertCount = psObject->panPartStart[iOpRing+1] - psObject->panPartStart[iOpRing]; dfSum = 0.0; for( iVert = nVertStart; iVert < nVertStart+nVertCount-1; iVert++ ) { dfSum += psObject->padfX[iVert] * psObject->padfY[iVert+1] - psObject->padfY[iVert] * psObject->padfX[iVert+1]; } dfSum += psObject->padfX[iVert] * psObject->padfY[nVertStart] - psObject->padfY[iVert] * psObject->padfX[nVertStart]; /* -------------------------------------------------------------------- */ /* Reverse if necessary. */ /* -------------------------------------------------------------------- */ if( (dfSum < 0.0 && bInner) || (dfSum > 0.0 && !bInner) ) { int i; bAltered++; for( i = 0; i < nVertCount/2; i++ ) { double dfSaved; /* Swap X */ dfSaved = psObject->padfX[nVertStart+i]; psObject->padfX[nVertStart+i] = psObject->padfX[nVertStart+nVertCount-i-1]; psObject->padfX[nVertStart+nVertCount-i-1] = dfSaved; /* Swap Y */ dfSaved = psObject->padfY[nVertStart+i]; psObject->padfY[nVertStart+i] = psObject->padfY[nVertStart+nVertCount-i-1]; psObject->padfY[nVertStart+nVertCount-i-1] = dfSaved; /* Swap Z */ if( psObject->padfZ ) { dfSaved = psObject->padfZ[nVertStart+i]; psObject->padfZ[nVertStart+i] = psObject->padfZ[nVertStart+nVertCount-i-1]; psObject->padfZ[nVertStart+nVertCount-i-1] = dfSaved; } /* Swap M */ if( psObject->padfM ) { dfSaved = psObject->padfM[nVertStart+i]; psObject->padfM[nVertStart+i] = psObject->padfM[nVertStart+nVertCount-i-1]; psObject->padfM[nVertStart+nVertCount-i-1] = dfSaved; } } } } return bAltered; } postgis-0.8.1/loader/wkb.h0100664000077300001440000000465607761630503015052 0ustar postgisusers/* * OGC WellKnownBinaryGeometry */ /* * 3d geometries are encode as in OGR by adding WKB3DOFFSET to the type. */ #define WKB3DOFFSET 0x80000000 typedef unsigned char byte; typedef unsigned long int uint32; typedef struct Point_t { double x; double y; double z; } Point; typedef struct LinearRing_t { uint32 numPoints; Point points[1]; // [numPoints] } LinearRing; enum wkbGeometryType { wkbPoint = 1, wkbLineString = 2, wkbPolygon = 3, wkbMultiPoint = 4, wkbMultiLineString = 5, wkbMultiPolygon = 6, wkbGeometryCollection = 7 }; enum wkbByteOrder { wkbXDR = 0, // Big Endian wkbNDR = 1 // Little Endian }; typedef struct WKBPoint_t { byte byteOrder; uint32 wkbType; // 1 Point point; } WKBPoint; typedef struct WKBLineString_t { byte byteOrder; uint32 wkbType; // 2 uint32 numPoints; Point points[1]; // [numPoints] } WKBLineString; typedef struct WKBPolygon_t { byte byteOrder; uint32 wkbType; // 3 uint32 numRings; LinearRing rings[1]; // [numRings] } WKBPolygon; typedef struct WKBMultiPoint_t { byte byteOrder; uint32 wkbType; // 4 uint32 num_wkbPoints; WKBPoint WKBPoints[1]; // [num_wkbPoints]; } WKBMultiPoint; typedef struct WKBMultiLineString_t { byte byteOrder; uint32 wkbType; // 5 uint32 num_wkbLineStrings; WKBLineString WKBLineStrings[1]; // [num_wkbLineStrings]; } WKBMultiLineString; typedef struct WKBMultiPolygon_t { byte byteOrder; uint32 wkbType; // 6 uint32 num_wkbPolygons; WKBPolygon wkbPolygons[1]; // [num_wkbPolygons]; } WKBMultiPolygon; typedef struct WKBGeometryCollection_t { byte byteOrder; uint32 wkbType; // 7 uint32 num_wkbGeometries; char wkbGeometries[1]; // WKBGeometry [num_wkbGeometries]; } WKBGeometryCollection; #if 0 typedef struct WKBGeometry_t { union { WKBPoint point; WKBLineString linestring; WKBPolygon polygon; WKBGeometryCollection collection; WKBMultiPoint mpoint; WKBMultiLineString mlinestring; WKBMultiPolygon mpolygon; }; } WKBGeometry; #endif typedef struct WKBGeometry_t { byte byteOrder; uint32 wkbType; } WKBGeometry; /* Functions prototype */ char getbyte(char *c); void skipbyte(char **c); char popbyte(char **c); int popint(char **c); int getint(char *c); void skipint(char **c); double popdouble(char **c); double getdouble(char *c); void skipdouble(char **c); void dump_wkb(char *wkb);