Converting KML files to shapefiles with extra data
GIS data comes in tons of different formats (and some formats that are the same, but with different CRSs, etc.), and often you have to convert one to the other. The ogr2ogr tool that comes with GDAL is basically the GIS version of this, except actually useful.
However, when you have a KML file with ExtendedData tags like this:
<ExtendedData>
<SchemaData schemaUrl="#FED_35_final">
<SimpleData name="FEDNUM">35032</SimpleData>
<SimpleData name="ED_NAMEE">Guelph</SimpleData>
<SimpleData name="ED_NAMEF">Guelph</SimpleData>
</SchemaData>
</ExtendedData>
and you try to convert it to a shapefile, it may not work. The reason is
that you need to have GDAL built with LibKML support. If you do, you’ll
see something like this in the output of ogrinfo --formats:
-> "LIBKML" (read/write)
-> "KML" (read/write)
If not, you’ll just see the entry for “KML”.
Note that here “KML” refers to GDAL’s builtin KML support, which should
always be there, but does not support extended data attributes. The Arch
packages for GDAL don’t have LibKML support enabled, and it turns out
that GDAL needs to have a more recent version of LibKML. So I adapted
an existing AUR package to make
libkml-git and put it on the AUR.
To get
GDAL to use it, simply build one of the GDAL packages on the AUR and
edit the PKGBUILD to add --with-libkml and libkml to the
depends field.
Hopefully that’s helpful to someone down the road.