KML naar shapefile omzetten: QGIS, ogr2ogr of online

Om KML naar een shapefile om te zetten, opent u de KML in QGIS, klikt u met de rechtermuisknop op de laag, kiest u "Export > Save Features As" en kiest u ESRI Shapefile. Op de opdrachtregel voert u ogr2ogr -f "ESRI Shapefile" uit met één geometrietype per uitvoer. Of sleep de .kml naar KML naar shapefile converteren van FileReshape, dat in uw browser werkt zonder het bestand te uploaden, punten, lijnen en polygonen splitst en .prj- en .cpg-bestanden toevoegt.

Wat er verandert als KML een shapefile wordt

KML, het formaat van Google Earth en Google My Maps, en de shapefile slaan geografische gegevens op heel verschillende manieren op, en elke conversiemethode krijgt met dezelfde verschillen te maken. Als u ze vooraf kent, wordt u niet verrast door het resultaat.

Eén geometrietype per bestand. Een KML-bestand kan punten, lijnen en polygonen in één map door elkaar bevatten. Een shapefile kan maar één geometrietype bevatten, dus een gemengde KML moet meerdere shapefiles worden, één per type.

Korte veldnamen. De .dbf-attributentabel staat veldnamen van maximaal 10 tekens toe, dus Description wordt Descriptio. Tekstwaarden van meer dan 254 tekens, zoals lange HTML-beschrijvingen, worden afgekapt.

Geen stijlen. Kleuren, lijndiktes en pictogrammen horen bij KML, maar niet bij een shapefile, dus die gaan verloren. Als de opmaak belangrijk is, moet u die in uw GIS-programma opnieuw maken.

Coördinatenstelsel. KML is altijd lengte- en breedtegraad in WGS84. De shapefile kan in WGS84 blijven, met een .prj-bestand dat dat vermeldt, of worden geherprojecteerd naar een stelsel zoals een UTM-zone als u afstanden en oppervlakten in meters nodig hebt. Een shapefile heeft ook zijn .shp-, .shx- en .dbf-onderdelen bij elkaar nodig, en een .cpg-bestand vertelt programma's de tekstcodering.

KML naar shapefile omzetten in QGIS

QGIS is gratis en opensource en leest KML via GDAL. Het is de beste keuze als u de gegevens ook wilt controleren, bewerken, opnieuw opmaken of herprojecteren. Als een KML meerdere mappen of gemengde geometrietypen heeft, toont QGIS mogelijk een venster waarin ze als aparte lagen worden vermeld; voeg de lagen toe die u nodig hebt en exporteer ze elk afzonderlijk.

In het venster "Save Vector Layer" kunt u ook het coördinatenstelsel van de uitvoer en de codering instellen. Kies UTF-8, zodat namen met letters als é, ø of ü goed blijven. Herhaal de export voor elke laag als de KML punten, lijnen en polygonen bevatte.

  1. Open QGIS en sleep het .kml-bestand naar de kaart, of gebruik "Layer > Add Layer > Add Vector Layer".
  2. Klik in het paneel "Layers" met de rechtermuisknop op de laag en kies "Export > Save Features As".
  3. Zet "Format" op ESRI Shapefile, kies een bestandsnaam en zo nodig een ander CRS.
  4. Klik op OK en controleer de nieuwe shapefilelaag en de attributentabel.

KML naar shapefile omzetten met ogr2ogr

ogr2ogr is de opdrachtregelconverter van GDAL. Gebruik hem voor grote bestanden, voor batchtaken met veel KML-bestanden en in scripts. Begin met ogrinfo om te zien welke lagen de KML heeft; met de KML-drivers van GDAL wordt elke KML-map meestal als een eigen laag gelezen.

Omdat een shapefile maar één geometrietype bevat, schrijft u elk type naar een eigen shapefile. Met het speciale OGR SQL-veld OGR_GEOMETRY kunt u met -where of -sql op type filteren. De optie -nlt bepaalt het geometrietype van de uitvoerlaag, en -nlt PROMOTE_TO_MULTI is handig als een laag enkelvoudige en meerdelige lijnen of polygonen door elkaar bevat. Slaat u het filteren over, dan krijgt de shapefile het type van het eerste object, en objecten van andere typen geven fouten.

Of ExtendedData-velden kolommen worden, hangt af van de KML-driver in uw GDAL-versie. De LIBKML-driver leest ze; controleer met ogrinfo --formats welke drivers u hebt. Netwerklinks, die naar KML op een webserver verwijzen, kunt u het best eerst downloaden en als lokale KML opslaan.

# Toon de lagen (mappen) en hun geometrietypen
ogrinfo -so -al places.kml

# Eén shapefile per geometrietype
ogr2ogr -f "ESRI Shapefile" places_points.shp places.kml -where "OGR_GEOMETRY='POINT' OR OGR_GEOMETRY='MULTIPOINT'" -explodecollections -nlt POINT -lco ENCODING=UTF-8
ogr2ogr -f "ESRI Shapefile" places_lines.shp places.kml -where "OGR_GEOMETRY='LINESTRING' OR OGR_GEOMETRY='MULTILINESTRING'" -nlt PROMOTE_TO_MULTI -lco ENCODING=UTF-8
ogr2ogr -f "ESRI Shapefile" places_polygons.shp places.kml -where "OGR_GEOMETRY='POLYGON' OR OGR_GEOMETRY='MULTIPOLYGON'" -nlt PROMOTE_TO_MULTI -lco ENCODING=UTF-8

# Optioneel: herprojecteer naar UTM-zone 33N in plaats van WGS84 te behouden
ogr2ogr -f "ESRI Shapefile" -t_srs EPSG:32633 places_utm.shp places_points.shp

KML online naar shapefile omzetten met FileReshape

KML naar shapefile converteren van FileReshape doet hetzelfde werk in uw browser, zonder dat u software hoeft te installeren. De converter gebruikt GDAL dat voor het web is gecompileerd, en de KML wordt van uw eigen schijf gelezen en niet geüpload, dus hij is veilig voor klantgegevens. Het resultaat is een .zip met .shp-, .shx-, .dbf-, .prj- en .cpg-bestanden voor elke shapefile.

De converter lost de gebruikelijke problemen voor u op. Punten, lijnen en polygonen worden naar aparte shapefiles geschreven, bijvoorbeeld Sights_points.shp en Routes_lines.shp, en elke KML-map wordt een eigen shapefile die naar de map is genoemd. Veldnamen worden ingekort tot 10 tekens. Standaard blijft de uitvoer in WGS84 met een .prj-bestand, en u kunt een ander stelsel kiezen, zoals een UTM-zone. Hoogten blijven behouden in 3D-shapefiles. De attributentabel wordt in UTF-8 geschreven, met een bijpassend .cpg-bestand.

Ken de grenzen. Kleuren en pictogrammen worden niet overgenomen. De naam en beschrijving van de plaatsmarkering blijven behouden, maar extra velden die als KML ExtendedData zijn opgeslagen, worden door de browserversie van GDAL niet gelezen. Netwerklinks die naar gegevens op het web verwijzen, worden niet gevolgd; de converter meldt hoeveel hij er heeft overgeslagen. Haal bij een KMZ eerst de KML eruit met de tool KMZ naar KML converteren. De grens voor de grootte is het geheugen van uw browser, en bestanden tot ongeveer 200 MB werken normaal gesproken.

  1. Open KML naar shapefile converteren en sleep uw .kml-bestand naar het vak, of klik om het te kiezen.
  2. Kies eventueel een coördinatenstelsel voor de uitvoer, bijvoorbeeld een UTM-zone.
  3. Klik op “Converteren naar Shapefile” en download de .zip met de shapefiles, pak die uit en voeg de .shp-bestanden toe aan uw GIS.

Welke methode kunt u het best kiezen?

Gebruik de browserconverter voor een eenmalig bestand als u alleen een shapefile nodig hebt om door te sturen of in een ander programma te openen. Gebruik QGIS als u het resultaat op een kaart wilt controleren, attributen wilt bewerken, de opmaak opnieuw wilt maken of ExtendedData-velden wilt behouden. Gebruik ogr2ogr voor zeer grote bestanden, om veel bestanden tegelijk om te zetten of voor geautomatiseerde workflows. Accepteert de ontvanger GeoPackage, overweeg dat formaat dan: het kent geen grens van 10 tekens voor veldnamen en kan meerdere lagen in één bestand bevatten.

Veelgestelde vragen

Waarom krijg ik meerdere shapefiles uit één KML?

Een shapefile kan maar één geometrietype opslaan. Als uw KML punten, lijnen en polygonen door elkaar bevat, of meerdere mappen heeft, wordt elk type of elke map een eigen shapefile, zodat er geen gegevens wegvallen.

Blijven de kleuren en pictogrammen uit Google Earth behouden?

Nee. Een shapefile heeft geen plek voor stijlen, dus kleuren, lijndiktes en pictogrammen gaan met elke methode verloren. Maak de opmaak van de laag opnieuw in QGIS of uw GIS-programma.

Kan ik een KMZ-bestand naar een shapefile omzetten?

Ja. Een KMZ is een gezipte KML. QGIS en ogr2ogr kunnen hem meestal direct lezen. Gebruik bij FileReshape eerst de tool KMZ naar KML converteren en zet daarna de KML om naar een shapefile.

Wordt mijn KML geüpload als ik hem online omzet met FileReshape?

Nee. De conversie draait in uw browser en het bestand blijft op uw computer.

Waarom heet het veld Description Descriptio?

Veldnamen in een shapefile zijn door het .dbf-formaat beperkt tot 10 tekens, dus langere namen worden ingekort. Geef velden vóór het omzetten een andere naam, of gebruik GeoPackage als lange namen belangrijk zijn.