I'm having some difficulty understanding the error I am getting from my mapserver/postgis program. I have the following map file:
MAP # start of map file
NAME "sample"
EXTENT 82299.5 5002.78 655979.76 657599.55
SIZE 800 400
PROJECTION
"init=epsg:27700"
END
LAYER # layer info
CONNECTIONTYPE postgis
NAME "roads
CONNECTION "user=username
password=**** dbname=databasename host=hostdb.com port=5432"
DATA "the_geom from public.\"MLSOA\""
STATUS ON
TYPE LINE
CLASS
STYLE
COLOR 0 0 0
END
END
END
END # end of map file
I then call this using the following command:
http://mysite.com/mapserv.cgi?map=/home/username/webapps/htdocs/mapfile_pg.map&layer=roads&mode=map
which gives me the following error:
msDrawMap(): Image handling error. Failed to draw layer named 'roads'.
sPostGISLayerWhichShapes(): Query error. Error (ERROR: find_srid()
- couldnt find the corresponding SRID - is the geometry registered in the
GEOMETRY_COLUMNS table? Is there an uppercase/lowercase missmatch? )
executing query: select encode(ST_AsBinary(ST_Force_2D("the_geom"),'NDR'),'hex')
as geom,"oid" from public."MLSOA" where the_geom && GeomFromText
('POLYGON((-180.225563909774 -90,-180.225563909774
90,180.225563909774 90,180.225563909774 -90,-180.225563909774
-90))',find_srid('','public."MLSOA"','the_geom'))
I asked a question on GIS.SE earlier today about a problem I was having connecting to the DB, and @unicoletti helpfully solved my earlier problem about the database name. However I have now tried all the options that I understand could be causing this current error and have not figured out the problem.
Things that I have tried:
- Checking that the the table is registered in
GEOMETRY_COLUMNS
(it is, as I could not manually add it as it was there already). - Adding in a projection to the Mapserver file
- Running
SELECT Probe_Geometry_Columns()
to updateGEOMETRY_COLUMNS
- Creating an index using the following command:
CREATE INDEX table_the_geom ON "MLSOA" USING GIST ( the_geom ); CLUSTER table_the_geom ON public."MLSOA";
Are there any other things that could be causing this error? I'm using PostGreSQL 8.3, PostGIS 1.5.3 and Mapserver 6.0.1. and these programs are all running on a Linux server.
Answer
The sub-query that throws the error (Find_SRID
) is incorrect:
select find_srid('','public."MLSOA"','the_geom')
Do you really need to specify the public
schema in your query? Normally this is part of your search_path
variable, so you normally don't need it. Try using this in your MAP file:
DATA "the_geom from \"MLSOA\" using unique gid using srid=27700"
(Note: update gid
with your integer/serial primary key column name, if it is different)
No comments:
Post a Comment