I am converting GeoJSON files to other formats (including KML) using ogr2ogr
.
As you may know, there is no field in a GeoJSON file to specify the name of the layer, causing every conversion to have the name OGRGeoJSON
. For example the following GeoJSON file:
{ "type": "FeatureCollection",
"features": [
{ "type": "Feature",
"geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
"properties": {"prop0": "value0"}
}
]
}
is converted as follows in KML:
<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document><Folder><name>OGRGeoJSON</name>
<Schema name="OGRGeoJSON" id="OGRGeoJSON">
<SimpleField name="Name" type="string"></SimpleField>
<SimpleField name="Description" type="string"></SimpleField>
<SimpleField name="prop0" type="string"></SimpleField>
</Schema>
<Placemark>
<ExtendedData><SchemaData schemaUrl="#OGRGeoJSON">
<SimpleData name="prop0">value0</SimpleData>
</SchemaData></ExtendedData>
<Point><coordinates>102.0,0.5</coordinates></Point>
</Placemark>
</Folder></Document></kml>
I've read this blog post from 2007 explaining why this occurs and I know that GeoJSON does not have the concept of layer name in its specifications.
I would like to know if there is a simple way to rename the layer on the fly using OGR, or if I should generate the output with ogr2ogr
and programmatically change the output layer name, depending on the output file format with another program since, as far as I know, the OGR API does not have a function to rename the layer.
Best Answer
In the current ogr2ogr documentation it outlines the
-nln
property, which allows for specifying an alternate layer name. I don't know how new this is so you may need to download a new version, but it does work.Using the above command on your example geojson produced the following results:
Good luck!