--- /usr/src/tinyows/src/fe/fe_spatial_ops.c 2011-08-04 04:42:07.000000000 -0400 +++ /usr/src/tinyows-svn-trom05/src/fe/fe_spatial_ops.c 2011-08-17 15:48:11.616953579 -0400 @@ -406,18 +406,34 @@ static buffer *fe_bbox_layer(ows *o, buffer *typename, buffer *sql, buffer *propertyname, buffer *envelope) { int srid = -1; - bool transform = false; + /* bool transform = false;*/ + assert(typename); assert(propertyname); assert(envelope); assert(sql); assert(o); - buffer_add_str(sql, "(_ST_Intersects("); + srid = ows_srs_get_srid_from_layer(o, typename); + /* buffer_add_str(sql, "(_ST_Intersects(");*/ + /*c*/ buffer_add_str(sql, " (SELECT ST_Transform("); + /*c*/ buffer_copy(sql, envelope); + /*c*/ buffer_add_str(sql,", "); + /*c*/ buffer_add_int(sql,srid); + /*c*/ buffer_add_str(sql, ") as "); + /*c*/ buffer_add(sql,'"'); + /*c*/ buffer_add_str(sql,"the_geom"); + /*c*/ buffer_add(sql,'"'); + /*c*/ buffer_add_str(sql, ") as B ON ST_Intersects(A."); + /*c*/ buffer_add(sql, '"'); + /*c*/ buffer_copy(sql, propertyname); + /*c*/ buffer_add(sql, '"'); + /*c*/ buffer_add_str(sql,", B.the_geom)"); + /* if (o->request->request.wfs->srs) { srid = o->request->request.wfs->srs->srid; - transform = true; + *transform = true;* } if (transform) buffer_add_str(sql, "ST_Transform("); @@ -429,12 +445,19 @@ if (transform) { buffer_add(sql, ','); buffer_add_int(sql, srid); + **buffer_add(sql, ')'); } - buffer_add(sql, ')'); + *buffer_add(sql, ')');* buffer_add_str(sql, ","); + **buffer_add_str(sql, "ST_Transform("); buffer_copy(sql, envelope); - buffer_add_str(sql, ") AND "); + **buffer_add_str(sql, ", srid("); + **buffer_add(sql, '"'); + **buffer_copy(sql, propertyname); + **buffer_add(sql, '"'); + **buffer_add_str(sql,"))) AND "); + *buffer_add_str(sql, ") AND ");* if (transform) buffer_add_str(sql, "ST_Transform("); buffer_add(sql, '"'); @@ -444,13 +467,20 @@ if (transform) { buffer_add(sql, ','); buffer_add_int(sql, srid); + **buffer_add(sql, ')'); } - buffer_add(sql, ')'); + *buffer_add(sql, ')');* - buffer_add_str(sql, " && "); + *buffer_add_str(sql, " && ");* + buffer_add_str(sql, " && ST_Transform("); buffer_copy(sql, envelope); - buffer_add_str(sql, ")"); - + *buffer_add_str(sql, ")");* + **buffer_add_str(sql, ", srid("); + **buffer_add(sql,'"'); + **buffer_copy(sql, propertyname); + **buffer_add(sql, '"'); + **buffer_add_str(sql, ")))"); + */ return sql; }