7 votos

Cómo hacer geoserver return JSON para WMS GetFeatureInfo?

Me gustaría conseguir los resultados de un WMS petición GetFeatureInfo como un JSON en lugar de la tabla que viene por defecto. Fuera de la caja, las únicas opciones para la respuesta de un WMS GetFeatureInfo son la tabla, XML y texto.

19voto

Anthony Cramp Puntos 126

Actualización El 'hack' dadas a continuación sólo es necesario para Geoserver versiones 2.2.x y abajo. Con la versión 2.3.0 y hacia arriba, Geoserver puede devolver JSON para WMS petición GetFeatureInfo de forma nativa.

Final de la Actualización


Hay una característica de la solicitud para que este en geoserver bug tracker.

El uso personalizado de GetFeatureInfo Plantillas, es posible generar una respuesta Json de Geoserver.

Usted puede seguir estos pasos:

1]Ir a la carpeta siguiente

GEOSERVER_DATA_DIR/áreas de trabajo/{área de trabajo}/{datos}/{featuretype}/

2] Crear 3 de texto vacío archivos con los siguientes nombres: encabezado.ftl, el contenido.ftl y pie de página.ftl

3] Abrir el contenido.ftl archivo, y copia de los siguientes libre marcador de código:

[
<#list features as feature>
{ "Type": "${type.name}"
<#list feature.attributes as attribute>
    <#if !attribute.isGeometry>
    , "${attribute.name}": "${attribute.value}"
    </#if>
</#list>
}
</#list> ,{}
]

4] Guardar el archivo y ahora que el WMS petición getFeatureInfo. Verás que la respuesta está en JSON.

Nota: es necesario recordar que esta será la envoltura de los valores numéricos de las comillas como una cadena. Por lo tanto, usted podría tener que tomar el cuidado de él en el código de cliente.

2voto

dr_jts Puntos 61

Esta capacidad la que existe ahora en GeoServer 2.2.4.

He aquí cómo solicitar la salida JSON:

http://docs.geoserver.org/stable/en/user/services/wms/reference.html#getfeatureinfo

0voto

user39950 Puntos 11

Hice este código json ftl plantilla, basado en un post:

Este es el código de la cabecera.ftl

[

Este es el código para el contenido.ftl:

{
"layer": "${type.name}",
"features": 
[
    <#list features as feature>
    {
        <#list feature.attributes as attribute>
            <#if !attribute.isGeometry>
                "${attribute.name?capitalize?js_string}": "${attribute.value?js_string}"<#if attribute_has_next>,</#if>
            </#if>
        </#list>
    }
    <#if feature_has_next>,</#if>
    </#list>
]
},

Y este es para el pie de página.ftl:

]

Eso es! Los analizadores se ignora la última coma en cada objeto json.

Esto me funciona a mi.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X