MapTools.org

[maplab-users] Limited length to layer connection string?

Mike Leahy mgleahy@fes.uwaterloo.ca
Sun, 9 Nov 2003 23:15:11 -0500
Hello list,

I've run into a bit of trouble with my work today...  I'm using MapServer/PHP-
Mapscript, with our data in PostgreSQL/PostGIS on a WinXP/IIS platform.  So 
far everything has been working fine.  I have modified a map-project generated 
using MapLab to load map settings from information stored in PHP session 
variables rather than a static map file.  

The lastest of my work has focused on developing a web interface to allow 
users to evaluate education quality vs. social well-being with options to 
specify weights and preferences for various indicators, and then display those 
indicators as attributes of a spatial data layer.  Basically, I end up with 
quite lengthy query strings.  When I try to run the map viewer I'll get an 
error report from Windows saying the "PHP Script Interpreter has encoutered a 
problem and needs to close", etc...  The final result in the web page is "The 
specified CGI application misbehaved by not returning a complete set of HTTP 
headers. The headers it did return are:".  Not much to go on there...and for 
the longest time I thought it was the complexity of the formulas.  I 
eventually figured out from playing around with it before emailing the list 
that it was simply the length of the query string itself.

I've got a workaround for this...I just create a view in postgresql with the 
gis table joined to the indicators, but I don't like this approach, as I may 
end up with the database littered with views for which I'll have to find some 
way of cleaning up...has anyone else run into this problem?  Does anyone know 
if there is a solution and/or is there a possiblity of getting the PHP-
MapScript DLL fixed for this?

The following is an example of a query that works fine; sig_provincias is a 
GIS table with provinces, being joined to a query with a sample formula using 
a variable from the table tbl_ind_provincias:

the_geom from (select sig_provincias.oid, sig_provincias.the_geom, 
sig_provincias.nomb_prov, indicators.* from sig_provincias left join (select 
cod_provincia, (case when pob_edu_p > 0 then 1 else 1 end) as test_indicator 
from tbl_ind_provincias) as indicators on codigo_pro = cod_provincia where 
codigo_pro = '1502' or codigo_pro = '1503' or codigo_pro = '1504' or 
codigo_pro = '1505' or codigo_pro = '1506' or codigo_pro = '1507' or 
codigo_pro = '1508' or codigo_pro = '1501' or codigo_pro = '1509') as tbl1 
using unique oid using srid=4326;

This next one is the same query, but with an additional province code added to 
the where clause...this one will cause the error I mention above...

the_geom from (select sig_provincias.oid, sig_provincias.the_geom, 
sig_provincias.nomb_prov, indicators.* from sig_provincias left join (select 
cod_provincia, (case when pob_edu_p > 0 then 1 else 1 end) as test_indicator 
from tbl_ind_provincias) as indicators on codigo_pro = cod_provincia where 
codigo_pro = '1502' or codigo_pro = '1503' or codigo_pro = '1504' or 
codigo_pro = '1505' or codigo_pro = '1506' or codigo_pro = '1507' or 
codigo_pro = '1508' or codigo_pro = '1501' or codigo_pro = '1509' or 
codigo_pro = '1510') as tbl1 using unique oid using srid=4326;

Many thanks for your help.

Kind regards,
Mike

----------------------------------------
This mail sent through www.mywaterloo.ca


This archive was generated by Pipermail.