O serviço WFS do GeoServer já pode gerar o GeoJSON a partir de fontes de dados de recursos complexos através do app-schema. No entanto, a saída pode não ser agradável em alguns casos, devido a isso as seguintes melhorias foram realizadas:
- A alternância de propriedade/elemento típica do GML é preservada, causando estruturas profundamente aninhadas e feias. Nem todo mundo gosta de escrever um “container.xx” para atingir o valor x, com a versão 2.16.x a saída ignora um dos contêineres e expõe uma estrutura direta “container.x”
- Os atributos XML agora são transformados em propriedades JSON simples e prefixados com uma “@”
- Os tipos de recurso e dados não são mais perdidos nas traduções, preservados pelos atributos “@feaureType” e “@dataType”
- Recursos aninhados completos são codificados como GeoJSON novamente, mantendo seus identificadores
Aqui está um exemplo do arquivo de saída no formato GeoJSON da versão 2.16.x:
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "id": "0001000001", "geometry": { "type": "Point", "coordinates": [51.0684, 1.4298] }, "properties": { "@featureType": "Borehole", "identifier": { "value": "BSS000AAAA", "@codeSpace": "http://www.ietf.org/rfc/rfc2616" }, "bholeHeadworks": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [51.0684, 1.4298] }, "properties": { "@featureType": "BoreCollar", "collarElevation": { "value": -32, "@srsName": "http://www.opengis.net/def/crs/EPSG/0/5720", "@srsDimension": "1", "@uomLabels": "m" } } } ],
Fonte: GeoServer Blog