[postgis-users] Re: [postgis-users] Re: [postgis-users] Postgis too slow

shpr@libero.it shpr at libero.it
Thu May 23 07:30:36 PDT 2002


ok, what I just say is not possible, but then how can I do this with 
PHP Mapscript? What is the equivalent of itemquery in PHP mapscript? I 
doesn't find it?
In other words, how can I find an object and calculate its extension 
under PHP mapscript?
I thinks that is one of the main functionality that a GIS should have, 
but I didn't find any PHP Mapscript applications that have it. Moreover 
I didn't find applications under mapserver that resolve this problem.

Any idea?
Is there a way with ASP or JAVAServlet tecnologies?

Thanks
Stefano. 

> ok, I don't still try if this is the problem, but I think so.
> 
> If I develop, for example, a java servlet that extract the oid (is 
> possible? I think so) and then I create a filter query only on this 
> attribute, do you think that this can work faster?
> 
> Stefano.
> 
> 
> > OK, I am now pretty sure the problem was (2) in my previous email. Y
ou
> r
> > mapfile layer definition is below. What you are doing is emulating a
n
> > item query by using the FILTER parameter. This is *bad*. It will *no
t*
> > work, because the spatial parameter is way too big, and your attribu
te
> > indexes will never ever get used. The pgsql query optimizer just doe
s
> > not know how to handle this combination of spatial and attribute
> > indexes. 
> > 
> > To verify that this is the problem, either (1) change your EXTENT so
> > that it is a very *small* box which contains just your one test road
 a
> nd
> > very little else. Now see how fast it runs. Or (2) remove the FILTER
> > entirely (don't to 1=2, *remove* it) and zoom into a small area. Now
 p
> an
> > around the dataset. That should demonstrate the native spatial query
> > speed.
> > 
> > You are not going to be able to do this query with the standard CGI
> > interface. You are going to have to use PHP MapScript and use PHP di
re
> ct
> > connection to pgsql to do the attribute query and find the extent of
 t
> he
> > resultant lines, then set the extent of your map appropriately, then
> > render. If you have simple queries, you can use the itemquery in the
 C
> GI
> > interface, but your query is too complex for that.
> > 
> > This is map postgis layer:
> > 
> > LAYER
> > STATUS OFF
> >   NAME "stradeQ"
> > CONNECTIONTYPE postgis
> > CONNECTION "user=postgres password=postgres dbname=market host=serve
r
> > port=5432"
> >   DATA "the_geom from streets"
> > TYPE LINE
> > FILTER "(upper(st_nm_base) Like upper('%
street%')) AND (l_area_id Like
> > '%value%')
> > AND ('%number%'='' or '%number%' between l_refaddr and l_nrefaddr or
> > '%number%'
> > between r_refaddr and r_nrefaddr) "
> > 
> > CLASS
> >   SYMBOL 0
> >   OUTLINECOLOR 25 25 0
> > END
> > TEMPLATE market.html
> > END
> > 
> > 
> > -- 
> >       __
> >      /
> >      | Paul Ramsey
> >      | Refractions Research
> >      | Email: pramsey at refractions.net
> >      | Phone: (250) 885-0632
> >      \_
> > 
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
> > 


More information about the postgis-users mailing list