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