Geojson-Polygone mit der WGS84-Koordinate zusammenführen


9

Ich habe eine Geojson-Datei mit einigen benachbarten Polygonen und möchte sie zu einer zusammenführen. Ich weiß, dass es sich um eine wiederkehrende Frage handelt, aber ich kann keine Informationen für Polygone mit Längen- und Breitengradkoordinaten wie in diesem Geojson finden:

{
"type": "FeatureCollection",
"features": [{
    "type": "Feature",
    "id": "16966",
    "properties": {
        "Name": "BEYNES"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.874862143378, 48.834371283832],
                [1.8656030688715, 48.831612507285],
                [1.8515105581603, 48.834338209867],
                [1.8466221791684, 48.828669687135],
                [1.8415374906793, 48.828818416443],
                [1.8392188748285, 48.830163082204],
                [1.8419058888315, 48.843509743804],
                [1.8472716401406, 48.849200964455],
                [1.8375210341485, 48.856814659389],
                [1.8383984699903, 48.87125874614],
                [1.8572939822902, 48.871944300476],
                [1.874663272221, 48.877028568925],
                [1.8831026195664, 48.874535338148],
                [1.9127169447188, 48.860849357594],
                [1.9030441003473, 48.846352529476],
                [1.8932786620468, 48.847377864779],
                [1.8885787644301, 48.846659731042],
                [1.8820915893247, 48.834609966105],
                [1.874862143378, 48.834371283832]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "19484",
    "properties": {
        "Name": "VILLIERS-LE-MAHIEU"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.7780400297013, 48.832305931728],
                [1.7734339848429, 48.83177307884],
                [1.7611156919393, 48.841036344684],
                [1.7664174460888, 48.850202460021],
                [1.7590182348483, 48.858733519882],
                [1.7586155859222, 48.868766940337],
                [1.7751309254077, 48.872615718624],
                [1.7866538204874, 48.862012015338],
                [1.7869427495986, 48.855458134055],
                [1.7916969548512, 48.854399942691],
                [1.7780400297013, 48.832305931728]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "19635",
    "properties": {
        "Name": "THOIRY"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.7916969548512, 48.854399942691],
                [1.7869427495986, 48.855458134055],
                [1.7866538204874, 48.862012015338],
                [1.7751309254077, 48.872615718624],
                [1.7890825137274, 48.88596098882],
                [1.809924587051, 48.885828200975],
                [1.8232153433812, 48.876452907166],
                [1.8120930366694, 48.869687419516],
                [1.8059996841005, 48.860128943481],
                [1.7916969548512, 48.854399942691]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "22025",
    "properties": {
        "Name": "SAINT-GERMAIN-DE-LA-GRANGE"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.9130661363292, 48.819937951319],
                [1.9012689316149, 48.821961792363],
                [1.8902265103296, 48.83135783825],
                [1.8813533302838, 48.831553995346],
                [1.8820915893247, 48.834609966105],
                [1.8885787644301, 48.846659731042],
                [1.8932786620468, 48.847377864779],
                [1.918172631346, 48.835751243515],
                [1.9217370910726, 48.82612360123],
                [1.9178385858043, 48.820341013587],
                [1.9130661363292, 48.819937951319]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "22141",
    "properties": {
        "Name": "MARCQ"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.8248465610939, 48.850691703059],
                [1.8126901224641, 48.853063092402],
                [1.8059996841005, 48.860128943481],
                [1.8120930366694, 48.869687419516],
                [1.8232153433812, 48.876452907166],
                [1.832123740674, 48.878689723796],
                [1.8383984699903, 48.87125874614],
                [1.8375210341485, 48.856814659389],
                [1.8246539514431, 48.853792824064],
                [1.8248465610939, 48.850691703059]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "23142",
    "properties": {
        "Name": "PLAISIR"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.9859353011511, 48.799648360798],
                [1.9700422200803, 48.799863243499],
                [1.9568703127355, 48.789270428369],
                [1.9412379043212, 48.791543482649],
                [1.9149109434793, 48.802631449948],
                [1.9130661363292, 48.819937951319],
                [1.9178385858043, 48.820341013587],
                [1.9217370910726, 48.82612360123],
                [1.9308900413011, 48.82617879826],
                [1.9432582596776, 48.836964867387],
                [1.9687926794162, 48.834831269347],
                [1.9700860589995, 48.83487839014],
                [1.9668984852354, 48.821791311587],
                [1.9864791162903, 48.799688951127],
                [1.9859353011511, 48.799648360798]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "25041",
    "properties": {
        "Name": "NEAUPHLE-LE-CHATEAU"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.9149109434793, 48.802631449948],
                [1.898492103809, 48.809622894015],
                [1.8936915762635, 48.808670122548],
                [1.8889579820032, 48.809057956502],
                [1.9012689316149, 48.821961792363],
                [1.9130661363292, 48.819937951319],
                [1.9149109434793, 48.802631449948]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "25042",
    "properties": {
        "Name": "VICQ"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.8479013041869, 48.812707864194],
                [1.8290034942099, 48.811265015475],
                [1.8111878056542, 48.814965840962],
                [1.8138162274863, 48.821557956532],
                [1.8061163949282, 48.830053068487],
                [1.8260692281346, 48.8296929387],
                [1.8327204785815, 48.833814514469],
                [1.8392188748285, 48.830163082204],
                [1.8415374906793, 48.828818416443],
                [1.8479013041869, 48.812707864194]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "28635",
    "properties": {
        "Name": "ANDELU"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.8232153433812, 48.876452907166],
                [1.809924587051, 48.885828200975],
                [1.7890825137274, 48.88596098882],
                [1.7831043145867, 48.891413707227],
                [1.8056581682382, 48.898808951748],
                [1.8355241961203, 48.88517153445],
                [1.832123740674, 48.878689723796],
                [1.8232153433812, 48.876452907166]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "29431",
    "properties": {
        "Name": "GOUPILLIERES"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.7586155859222, 48.868766940337],
                [1.7399133540032, 48.871449653856],
                [1.7412768098614, 48.874270196957],
                [1.7500295563815, 48.875450216663],
                [1.7522176666426, 48.87802738985],
                [1.7483369243043, 48.879497893862],
                [1.7704322974105, 48.896069058229],
                [1.7831043145867, 48.891413707227],
                [1.7890825137274, 48.88596098882],
                [1.7751309254077, 48.872615718624],
                [1.7586155859222, 48.868766940337]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "30394",
    "properties": {
        "Name": "SAULX-MARCHAIS"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.8392188748285, 48.830163082204],
                [1.8327204785815, 48.833814514469],
                [1.8339180317868, 48.843621026126],
                [1.8248465610939, 48.850691703059],
                [1.8246539514431, 48.853792824064],
                [1.8375210341485, 48.856814659389],
                [1.8472716401406, 48.849200964455],
                [1.8419058888315, 48.843509743804],
                [1.8392188748285, 48.830163082204]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "34743",
    "properties": {
        "Name": "OSMOY"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.7164466657999, 48.854920532859],
                [1.7052218923542, 48.860142271734],
                [1.7018533752573, 48.865673293225],
                [1.7198777076843, 48.872271383422],
                [1.7292022608762, 48.871219483604],
                [1.7274882838909, 48.859337782823],
                [1.7164466657999, 48.854920532859]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "35495",
    "properties": {
        "Name": "FLEXANVILLE"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.7400314884878, 48.837820948808],
                [1.7329083268502, 48.84610157804],
                [1.7189195066054, 48.848587971564],
                [1.7164466657999, 48.854920532859],
                [1.7274882838909, 48.859337782823],
                [1.7292022608762, 48.871219483604],
                [1.7314395279166, 48.873968471423],
                [1.7399133540032, 48.871449653856],
                [1.7586155859222, 48.868766940337],
                [1.7590182348483, 48.858733519882],
                [1.7664174460888, 48.850202460021],
                [1.7611156919393, 48.841036344684],
                [1.7400314884878, 48.837820948808]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "36858",
    "properties": {
        "Name": "THIVERVAL-GRIGNON"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.9687926794162, 48.834831269347],
                [1.9432582596776, 48.836964867387],
                [1.9308900413011, 48.82617879826],
                [1.9217370910726, 48.82612360123],
                [1.918172631346, 48.835751243515],
                [1.8932786620468, 48.847377864779],
                [1.9030441003473, 48.846352529476],
                [1.9127169447188, 48.860849357594],
                [1.9217113433858, 48.85832247492],
                [1.9613817024309, 48.851891899558],
                [1.970646933861, 48.840972240396],
                [1.9687926794162, 48.834831269347]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "37629",
    "properties": {
        "Name": "NEAUPHLE-LE-VIEUX"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.8726237069958, 48.798651240921],
                [1.8711691241023, 48.799177186792],
                [1.8417552547252, 48.800622726785],
                [1.8479013041869, 48.812707864194],
                [1.8415374906793, 48.828818416443],
                [1.8466221791684, 48.828669687135],
                [1.8515105581603, 48.834338209867],
                [1.8656030688715, 48.831612507285],
                [1.874862143378, 48.834371283832],
                [1.8658960165459, 48.822530967257],
                [1.8689494730467, 48.8130077893],
                [1.8850727051194, 48.805432976807],
                [1.8858999508989, 48.804316374995],
                [1.8758215111851, 48.805049510395],
                [1.8726237069958, 48.798651240921]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "38841",
    "properties": {
        "Name": "MONTAINVILLE"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.8383984699903, 48.87125874614],
                [1.832123740674, 48.878689723796],
                [1.8355241961203, 48.88517153445],
                [1.8585137392849, 48.890942160516],
                [1.8687589726649, 48.885193372296],
                [1.874663272221, 48.877028568925],
                [1.8572939822902, 48.871944300476],
                [1.8383984699903, 48.87125874614]
            ]
        ]
    }
}, {
    "type": "Feature",
    "id": "43121",
    "properties": {
        "Name": "VILLIERS-SAINT-FREDERIC"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [1.8850727051194, 48.805432976807],
                [1.8689494730467, 48.8130077893],
                [1.8658960165459, 48.822530967257],
                [1.874862143378, 48.834371283832],
                [1.8820915893247, 48.834609966105],
                [1.8813533302838, 48.831553995346],
                [1.8902265103296, 48.83135783825],
                [1.9012689316149, 48.821961792363],
                [1.8889579820032, 48.809057956502],
                [1.8936915762635, 48.808670122548],
                [1.8940011070565, 48.805632849681],
                [1.8850727051194, 48.805432976807]
            ]
        ]
    }
}]

}}

rohe Polygone

Gibt es eine Möglichkeit, ein Master-Polygon mit der externen Form aller Polygone zu erstellen?

Antworten:


12

Sie können Mapshaper dafür verwenden und dann über die Befehlszeile auflösen:

mapshaper --dissolve -i your_data.geojson

2
Tolles Werkzeug. Wenn Sie Syntaxfehler bekommen, versuchen Sie es wiemapshaper -i your_data.geojson --dissolve
Kyle Hotchkiss

4

Mit QGis ist das ganz einfach.

  1. Öffnen Sie QGis
  2. Ziehen Sie die Geojson-Datei per Drag & Drop auf qgis
  3. Verwenden Sie das Werkzeug "Auflösen" im Vektormenü (es befindet sich in einem Untermenü). Verwenden Sie die Option "Alle auflösen" aus der Dropdown-Liste
  4. Dadurch wird ein Shapefile erstellt (aktivieren Sie das Kontrollkästchen für die Ausgabe auf der Karte).
  5. Diese können Sie dann erneut als Geojson-Datei speichern, indem Sie im Ebenenbereich mit der rechten Maustaste darauf klicken und "Speichern unter" und dann "Geojson als Format" auswählen

"Auflösen" ist der Name der gewünschten Operation. Dies kann Ihnen auch weitere Hinweise zum Googeln geben.


1
danke til_b für deinen vorschlag, ich benutze den jayarem, aber deiner sieht auch gut aus, ist aber weniger skalierbar
henri_1310

Ja, es ist weniger skalierbar. Ich wusste vorher nichts über Mapshaper - also habe ich auch neue Sachen gelernt!
til_b

Vielen Dank, dass Sie mich auf das Überblendungswerkzeug hingewiesen haben. Ich bin Ihren Schritten gefolgt und habe fast das bekommen, was ich wollte, bis auf den Fehler unten. Es wurde die gewünschte Ebene ausgegeben, außer dass Merkmal 44 ausgeschnitten wurde. Irgendwelche Vorschläge, wie man herausfindet, was genau ungültig war? Die Fehlermeldung: Feature (44) hat eine ungültige Geometrie und wurde übersprungen. Bitte korrigieren Sie die Geometrie oder ändern Sie die Verarbeitungseinstellung in die Option "Ungültige Eingabefunktionen ignorieren".
Carpiediem

1
Verstanden. Toolbox>
Vektorgeometrie

2

Für den Fall, dass man algorithmisch arbeiten möchte, hier ein Python-Snippet:

#!/usr/bin/env python

from json import load, JSONEncoder
from argparse import ArgumentParser, FileType
from re import compile
import sys

from shapely.geometry import Polygon, mapping
from shapely.ops import cascaded_union


parser = ArgumentParser(description="Group (merge) the GeoJSON geometries of same vehicles with different day index.")

defaults = dict(outfile=sys.stdout)

parser.set_defaults(**defaults)

parser.add_argument('infile', type=FileType('r'), help='GeoJSON file whose vehicles will be merged')

parser.add_argument('-o', '--outfile', dest='outfile', type=FileType('wb', 0), help='Outfile')


if __name__ == '__main__':
    args = parser.parse_args()
    infile = args.infile
    outfile = args.outfile

    file = load(infile)

    polygons = []

    for feat in file['features']:
        polygon = Polygon([ (coor[0], coor[1]) for coor in  feat['geometry']['coordinates'][0] ])
        polygons.append(polygon)

    new_geometry = mapping(cascaded_union(polygons)) # This line merges the polygones

    new_feature = dict(type='Feature', id="", properties=dict(Name=""),geometry=dict(type=new_geometry['type'], coordinates=new_geometry['coordinates']))

    outjson = dict(type='FeatureCollection', features=[new_feature])

    encoder = JSONEncoder(separators=(',', ':'))
    encoded = encoder.iterencode(outjson)

    output = outfile

    for token in encoded:
        output.write(token)

Dies gibt die folgende Ausgabe für die obige Eingabe zurück

Bild

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": "",
      "properties": {
        "Name": ""
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              1.7780400297013,
              48.832305931728
            ],
            [
              1.7734339848429,
              48.83177307884
            ],
            [
              1.7611156919393,
              48.841036344684
            ],
            [
              1.7400314884878,
              48.837820948808
            ],
            [
              1.7329083268502,
              48.84610157804
            ],
            [
              1.7189195066054,
              48.848587971564
            ],
            [
              1.7164466657999,
              48.854920532859
            ],
            [
              1.7052218923542,
              48.860142271734
            ],
            [
              1.7018533752573,
              48.865673293225
            ],
            [
              1.7198777076843,
              48.872271383422
            ],
            [
              1.7292022608762,
              48.871219483604
            ],
            [
              1.7314395279166,
              48.873968471423
            ],
            [
              1.7399133540032,
              48.871449653856
            ],
            [
              1.7412768098614,
              48.874270196957
            ],
            [
              1.7500295563815,
              48.875450216663
            ],
            [
              1.7522176666426,
              48.87802738985
            ],
            [
              1.7483369243043,
              48.879497893862
            ],
            [
              1.7704322974105,
              48.896069058229
            ],
            [
              1.7831043145867,
              48.891413707227
            ],
            [
              1.8056581682382,
              48.898808951748
            ],
            [
              1.8355241961203,
              48.88517153445
            ],
            [
              1.8585137392849,
              48.890942160516
            ],
            [
              1.8687589726649,
              48.885193372296
            ],
            [
              1.874663272221,
              48.877028568925
            ],
            [
              1.8831026195664,
              48.874535338148
            ],
            [
              1.9127169447188,
              48.860849357594
            ],
            [
              1.9217113433858,
              48.85832247492
            ],
            [
              1.9613817024309,
              48.851891899558
            ],
            [
              1.970646933861,
              48.840972240396
            ],
            [
              1.9687926794162,
              48.834831269347
            ],
            [
              1.9700860589995,
              48.83487839014
            ],
            [
              1.9668984852354,
              48.821791311587
            ],
            [
              1.9864791162903,
              48.799688951127
            ],
            [
              1.9859353011511,
              48.799648360798
            ],
            [
              1.9700422200803,
              48.799863243499
            ],
            [
              1.9568703127355,
              48.789270428369
            ],
            [
              1.9412379043212,
              48.791543482649
            ],
            [
              1.9149109434793,
              48.802631449948
            ],
            [
              1.898492103809,
              48.809622894015
            ],
            [
              1.8936915762635,
              48.808670122548
            ],
            [
              1.8940011070565,
              48.805632849681
            ],
            [
              1.8850727051194,
              48.805432976807
            ],
            [
              1.8858999508989,
              48.804316374995
            ],
            [
              1.8758215111851,
              48.805049510395
            ],
            [
              1.8726237069958,
              48.798651240921
            ],
            [
              1.8711691241023,
              48.799177186792
            ],
            [
              1.8417552547252,
              48.800622726785
            ],
            [
              1.8479013041869,
              48.812707864194
            ],
            [
              1.8290034942099,
              48.811265015475
            ],
            [
              1.8111878056542,
              48.814965840962
            ],
            [
              1.8138162274863,
              48.821557956532
            ],
            [
              1.8061163949282,
              48.830053068487
            ],
            [
              1.8260692281346,
              48.8296929387
            ],
            [
              1.8327204785815,
              48.833814514469
            ],
            [
              1.8339180317868,
              48.843621026126
            ],
            [
              1.8248465610939,
              48.850691703059
            ],
            [
              1.8126901224641,
              48.853063092402
            ],
            [
              1.8059996841005,
              48.860128943481
            ],
            [
              1.7916969548512,
              48.854399942691
            ],
            [
              1.7780400297013,
              48.832305931728
            ]
          ]
        ]
      }
    }
  ]
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.