[Problema] Crear capa con sentencia SQL y parametros.

105 views
Skip to first unread message

Guille Galiano

unread,
Dec 12, 2015, 4:21:35 PM12/12/15
to GeoServer en Español
Hola a todos! Antes de nada gracias por el foro.
He intentado crear una capa vectorial desde Postgis mediante una sentencia SQL:
SELECT poligonos.cod_sensor, poligonos.geom, prom.fecha_hora, prom.hum_amb, prom.temp_amb, prom.lum, prom.hum_suelo, prom.temp_suelo
FROM poligonos,
                (SELECT cod_sensor, MIN(fecha_hora) as fecha_hora,
AVG(hum_amb)AS hum_amb,AVG(temp_amb) as temp_amb, AVG(lum) as lum, AVG(hum_suelo) as hum_suelo, AVG(temp_suelo) as temp_suelo
                 FROM datos_sensores 
                 WHERE datos_sensores.fecha_hora >= %time_min% AND datos_sensores.fecha_hora < %time_max% 
                 GROUP BY cod_sensor) as prom
WHERE poligonos.cod_sensor = prom.cod_sensor
ORDER BY poligonos.cod_sensor

Como se ve he añadido los dos parámetros (%time_min% %time_max%) a los cuales añado un valor por defecto '20150901' y '20151001' respectivamente. Con su correspondiente expresion regular.
Mi problema viene al una vez guardada la vista SQL el encuadre nativo de la capa me da un valor 0 en todas las coordenadas, y por lo tanto en el mapa no me aparece nada.
Yo tengo la teoría de que no se realiza bien la sentencia SQL y no encuentra ninguna selección en los datos y por tanto al no haber selección no hay un posible encuadre. 
El mismo caso lo he probado sin definir los parámetros en la sentencia SQL:
SELECT poligonos.cod_sensor, poligonos.geom, prom.fecha_hora, prom.hum_amb, prom.temp_amb, prom.lum, prom.hum_suelo, prom.temp_suelo
FROM poligonos,
                (SELECT cod_sensor, MIN(fecha_hora) as fecha_hora,
AVG(hum_amb)AS hum_amb,AVG(temp_amb) as temp_amb, AVG(lum) as lum, AVG(hum_suelo) as hum_suelo, AVG(temp_suelo) as temp_suelo
                 FROM datos_sensores 
                 WHERE datos_sensores.fecha_hora >= '20150901' AND datos_sensores.fecha_hora < '20151023' 
                 GROUP BY cod_sensor) as prom
WHERE poligonos.cod_sensor = prom.cod_sensor
ORDER BY poligonos.cod_sensor

Y en este caso si que me muestra los datos de esa selección concreta y realiza el encuadre adecuado. 
No sé si alguien ha tenido algún problema parecido o sabe la causa del problema.
Cualquier ayuda será buena.
Un saludo a todos.



geoserver.PNG
sql.PNG

Gabriel Roldan

unread,
Dec 12, 2015, 5:57:44 PM12/12/15
to geoser...@googlegroups.com

La causa es tal cual lo dedujiste y la solución es establecer las coordenadas del encuadre nativo a mano. El cálculo del encuadre nativo desde las interfaz gráfica es sólo una ayuda. Muchas veces conviene ponerlo a mano incluso cuando no hay parámetros dinámicos de modo que quede a la máxima extensión posible de los datos que contendrá la capa, de lo contrario si se agregan features fuera del encuadre original, podrían ser omitidos en consultas al WMS ya que estas permanecen como metadatos de la capa y pueden ser utilizadas por el WMS para acotar las consultas.

En definitiva, en este caso poné el encuadre a mano y listo.

Saludos,

Gabriel

--
--
Has recibido este mensaje por estar suscripto al grupo "GeoServer en Español" de Google Groups.
Para escribir a este grupo, envía un e-mail a geoser...@googlegroups.com
Para dejar el grupo, envía un e-mail a geoserver-es...@googlegroups.com
Para más opciones, visita la página del grupo en http://groups.google.com/group/geoserver-es?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "GeoServer en Español" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a geoserver-es...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages