ebody: geoJSON mit weiteren Daten ergänzen

Hallo,

kann man eine geoJSON Datei mit weiteren, anderen Datensätzen füllen?

Beispiel:

{ "type": "FeatureCollection",
  "features": [
    { "type": "Feature",
      "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
      "properties": {"prop0": "value0"}
    },
    { "type": "Feature",
      "geometry": {
        "type": "LineString",
        "coordinates": [
          [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
        ]
      },
      "properties": {
        "prop0": "value0",
        "prop1": 0.0
      }
    }
  ]
}

Diese Daten möchte ich jetzt noch einfügen:

{
"person":
    {
    "name": "mustermann",
    "vorname": "max",
    "alter": "38"
    }
}

Zusammengefügt:

{
"person":
    {
    "name": "mustermann",
    "vorname": "max",
    "alter": "38"
    }
},
{ "type": "FeatureCollection",
  "features": [
    { "type": "Feature",
      "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
      "properties": {"prop0": "value0"}
    },
    { "type": "Feature",
      "geometry": {
        "type": "LineString",
        "coordinates": [
          [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
        ]
      },
      "properties": {
        "prop0": "value0",
        "prop1": 0.0
      }
    }
  ]
}

Hintergrund ist, dass ich Daten habe die nur einmalig vorkommen und im Zusammenhang mit den Geo Daten stehen. Ich möchte vermeiden die Personen Daten immer wieder unter "properties": {} von jedem Geo Datensatz einzufügen.

Wenn ich die Daten auslese soll klar sein zu welcher Person sie gehören, damit ich die Daten zusammenhängend anzeigen kann.

Gruß ebody

  1. Hallo ebody,

    ganz so geht es nicht. Dieser JSON String codiert zwei Objekte hintereinander. Da fehlt eine Datenstruktur, die sie zusammenfasst. Entweder ein Array, oder ein weiteres Objekt. Oder du hängst das person-Objekt als Eigenschaft in die FeatureCollection.

    Also z.B. so:

    { "person": {
        "name": "mustermann", 
        "vorname": "max",
        "alter": "38"
      },
      "type": "FeatureCollection",
      "features": [
      ...
      ]
    }
    

    Dafür müsstest Du den JSON-String für die FeatureCollection aber ein bisschen zerpflücken und neu zusammensetzen. Wenn Du das nicht willst, kannst Du aus den beiden JSON-Teilstrings auch ein Array bauen.

       const personString = '{ "person": ... ';
       const featString = '{ "type": "FeatureCollection", ... }';
    
       const gruppe = "[" + personString + ", " + featString + "]";
    

    dann hättest Du ein Array aus den beiden Teilobjekten.

    Wie schrieb Jörg heute noch? Wenn Du Programmierer oder Anwälte fragst, was richtig ist, beginnt die Antwort immer mit "Kommt darauf an...".

    Rolf

    --
    sumpsi - posui - obstruxi