[Spanish] Problema con GetFeatureInfo. Muy lento al consultar mediante VirtualSpatialData

Emilio Gómez Fernández egofer at terra.es
Wed Dec 9 06:30:51 EST 2009


Hola a todos,

A ver si alguien me puede arrojar algo de luz al problema que me ocupa 
estos últimos días.

Tengo montado un servidor cartográfico mediante Mapserver + Openlayers + 
Geoext. De momento todo funciona bien, el problema que tengo es que 
cuando hago un GetFeatureInfo a la base de datos Mapserver me tarda 
demasiado (unos 20-25 segundos) en devolver la información de los 
elementos (en total no se muestran más de 15 elementos en el mapa 
distribuidos en 7 capa sconsultables). La url sería la siguiente:

http://localhost/cgi-bin/mapserv.exe?map=../htdocs/mapa.map&&service=WMS&version=1.1.0&request=GetFeatureInfo&layers=actividad0,actividad1,actividad2,actividad3,actividad4,actividad5,actividad6&query_layers=actividad0,actividad1,actividad2,actividad3,actividad4,actividad5,actividad6&styles=,,,,,,&bbox=-16.795006%2C28.065467%2C-16.656303%2C28.130885&srs=EPSG%3A4326&feature_count=10&x=370&y=322&height=432&width=808&info_format=text%2Fhtml

Comentar que consulto a una base de datos SQL Server 2005 mediante ODBC 
a través de VirtualSpatialData OGR, ya que aquella contiene datos 
geográficos no explícitos. La configuración de los parámetros del 
OGRVRTDataSource es la siguiente para cada capa (únicamente cambia la 
SQL mínimamente):

<OGRVRTDataSource>
        <OGRVRTLayer name='actividad6'>
        <SrcDataSource>ODBC:@AdejeDB</SrcDataSource>
        <SrcSQL>SELECT e.matricula AS matricula, t.longitud AS longitud, 
t.latitud AS latitud, e.id_equipo AS id_equipo, e.denominacion AS 
denominacion, t.fecha_hora_ultima_posicion AS hora_posicion, 
t.fecha_hora_salida_parque AS hora_salida FROM (SELECT * FROM 
posiciones_gps_tr AS p WHERE p.grupo_actividad=6 AND p.obsoleta=0) AS t, 
equipos AS e WHERE e.id_ayuntamiento=1 AND t.oid_equipo=e.oid ORDER BY 
t.OID_equipo</SrcSQL>
        <FID>id_equipo</FID>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <GeometryField encoding='PointFromColumns' x='longitud' 
y='latitud'/>
        </OGRVRTLayer>
</OGRVRTDataSource>


Tanto la base de datos SQL Server como la versión de Mapserver (v. 
4.10.2) me vienen dados por lo que ahí no puedo tocar nada. Vengo 
dándole vueltas y no encuentro la forma de acelerar la query. Probando 
las SQL en la base de datos no tardan casi nada, porque se ejecutan 
sobre tablas con pocos registros. Pienso que pueda ser al conectar a la 
BD mediante ODBC+OGR, porque testeando el archivo Virtual Data con 
ogrinfo en consola tarda unos 3 seg. por capa en devolver resultados 
(3x7=21 seg.).

Indiscutiblemente accediendo a través de OGR tiene que ser más lento 
pero no se si esto es normal y si hay alguna forma de acelerarlo. A ver 
si alguien puede echarme un mano.

Saludos.

Emilio Gómez Fernández






More information about the Spanish mailing list