-- Should also check the precision grid (future expansion).\r
--\r
-----------------------------------------------------------------------\r
-CREATE OR REPLACE FUNCTION AddGeometryColumn(catalog_name varchar,schema_name varchar,table_name varchar,column_name varchar,new_srid integer,new_type varchar,new_dim integer, use_typmod boolean DEFAULT true)\r
+CREATE OR REPLACE FUNCTION AddGeometryColumn(catalog_name varchar,schema_name varchar,table_name varchar,column_name varchar,new_srid_in integer,new_type varchar,new_dim integer, use_typmod boolean DEFAULT true)\r
RETURNS text\r
AS\r
$$\r
sr varchar;\r
real_schema name;\r
sql text;\r
+ new_srid integer;\r
\r
BEGIN\r
\r
\r
\r
-- Verify SRID\r
- IF ( new_srid != 0 AND new_srid != -1) THEN\r
+ IF ( new_srid_in > 0 ) THEN\r
+ IF new_srid_in >= 999000 THEN\r
+ RAISE EXCEPTION 'AddGeometryColumns() - SRID must be < 999000';\r
+ END IF;\r
+ new_srid := new_srid_in;\r
SELECT SRID INTO sr FROM spatial_ref_sys WHERE SRID = new_srid;\r
IF NOT FOUND THEN\r
RAISE EXCEPTION 'AddGeometryColumns() - invalid SRID';\r
RETURN 'fail';\r
END IF;\r
+ ELSE\r
+ new_srid := ST_SRID('POINT EMPTY'::geometry);\r
+ IF ( new_srid_in != new_srid ) THEN\r
+ RAISE NOTICE 'SRID value % converted to the officially unknown SRID value %', new_srid_in, new_srid;\r
+ END IF;\r
END IF;\r
\r
\r
3
COMMIT
4
-features.big_parcels.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2
+features.big_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2
P1P2|POLYGON((21 6,9 6,9 14,9 22,21 22,35 22,35 14,35 6,21 6))
P3P4|MULTIPOLYGON(((47 14,47 6,35 6,35 14,35 22,47 22,47 14)),((25 30,17 30,17 40,31 40,31 30,25 30)))
F3F6|POLYGON((21 14,21 6,9 6,9 14,9 22,21 22,21 14))
P1|F3F6
5
-features.big_signs.the_geom SRID:-1 TYPE:MULTIPOINT DIMS:2
+features.big_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2
S1S2|MULTIPOINT(21 14,35 14)
BEGIN
POINT/POINT INTERSECTS
3
COMMIT
4
-features.big_parcels.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2
+features.big_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2
P1P2|POLYGON((21 6,9 6,9 14,9 22,21 22,35 22,35 14,35 6,21 6))
P3P4|MULTIPOLYGON(((47 14,47 6,35 6,35 14,35 22,47 22,47 14)),((25 30,17 30,17 40,31 40,31 30,25 30)))
F3F6|POLYGON((21 14,21 6,9 6,9 14,9 22,21 22,21 14))
P1|F3F6
5
-features.big_signs.the_geom SRID:-1 TYPE:MULTIPOINT DIMS:2
+features.big_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2
S1S2|MULTIPOINT(21 14,35 14)
BEGIN
P1|1|POLYGON((21 14,21 6,9 6,9 14,9 22,21 22,21 14))
2
3
COMMIT
-features.land_parcels.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2
-features.city_streets.the_geom SRID:-1 TYPE:MULTILINESTRING DIMS:2
-features.traffic_signs.the_geom SRID:-1 TYPE:MULTIPOINT DIMS:2
+features.land_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2
+features.city_streets.the_geom SRID:0 TYPE:MULTILINESTRING DIMS:2
+features.traffic_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2
ERROR: TopoGeom 4 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 3
ERROR: TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 4
ERROR: TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 5
2
3
COMMIT
-features.land_parcels.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2
-features.city_streets.the_geom SRID:-1 TYPE:MULTILINESTRING DIMS:2
-features.traffic_signs.the_geom SRID:-1 TYPE:MULTIPOINT DIMS:2
+features.land_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2
+features.city_streets.the_geom SRID:0 TYPE:MULTILINESTRING DIMS:2
+features.traffic_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2
ERROR: TopoGeom 4 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 3
ERROR: TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 4
ERROR: TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 5