Cómo convertir KML a shapefile: QGIS, ogr2ogr o en línea

Para convertir KML a shapefile, abra el KML en QGIS, haga clic con el botón derecho en la capa, elija Exportar > Guardar objetos como y escoja ESRI Shapefile. En la línea de comandos, ejecute ogr2ogr -f "ESRI Shapefile" con un tipo de geometría por salida. O suelte el .kml en el convertidor Convertir KML a shapefile de FileReshape, que funciona en su navegador sin subir el archivo, separa puntos, líneas y polígonos y añade archivos .prj y .cpg.

Qué cambia cuando un KML se convierte en shapefile

KML, el formato de Google Earth y Google My Maps, y el shapefile guardan los datos geográficos de formas muy distintas, y todos los métodos de conversión tienen que resolver las mismas diferencias. Conocerlas de antemano le evita sorpresas en el resultado.

Un tipo de geometría por archivo. Un archivo KML puede mezclar puntos, líneas y polígonos en una misma carpeta. Un shapefile solo puede contener un tipo de geometría, así que un KML mezclado tiene que convertirse en varios shapefiles, uno por tipo.

Nombres de campo cortos. La tabla de atributos .dbf admite nombres de campo de hasta 10 caracteres, así que Description pasa a ser Descriptio. Los valores de texto de más de 254 caracteres, como las descripciones HTML largas, se cortan.

Sin estilos. Los colores, los grosores de línea y los iconos forman parte del KML, pero no del shapefile, así que se pierden. Si el estilo importa, tendrá que recrearlo en su programa SIG.

Sistema de coordenadas. KML siempre usa longitud y latitud WGS84. El shapefile puede quedarse en WGS84 con un archivo .prj que lo indique, o reproyectarse a un sistema como una zona UTM si necesita distancias y áreas en metros. Un shapefile también necesita que sus partes .shp, .shx y .dbf se mantengan juntas, y un archivo .cpg indica a los programas la codificación del texto.

Convertir KML a shapefile en QGIS

QGIS es gratuito y de código abierto, y lee KML a través de GDAL. Es la mejor opción cuando también quiere comprobar, editar o cambiar el estilo de los datos, o reproyectarlos. Cuando un KML tiene varias carpetas o tipos de geometría mezclados, QGIS puede mostrar un cuadro de diálogo que los presenta como capas separadas; añada las que necesite y exporte cada una de ellas.

En el cuadro de diálogo para guardar la capa vectorial también puede fijar el sistema de coordenadas de la salida y la codificación. Elija UTF-8 para que se conserven los nombres con letras como é, ø o ü. Repita la exportación para cada capa si el KML tenía puntos, líneas y polígonos.

  1. Abra QGIS y arrastre el archivo .kml al mapa, o use Capa > Añadir capa > Añadir capa vectorial.
  2. Haga clic con el botón derecho en la capa del panel Capas y elija Exportar > Guardar objetos como («Save Features As»).
  3. Ponga «Formato» en ESRI Shapefile, elija un nombre de archivo y, si hace falta, otro SRC.
  4. Haga clic en «Aceptar» y compruebe la nueva capa de shapefile y su tabla de atributos.

Convertir KML a shapefile con ogr2ogr

ogr2ogr es el convertidor de línea de comandos de GDAL. Úselo para archivos grandes, para trabajos por lotes con muchos archivos KML y en scripts. Empiece con ogrinfo para ver qué capas tiene el KML; con los controladores KML de GDAL, cada carpeta del KML suele leerse como una capa propia.

Como un shapefile solo contiene un tipo de geometría, escriba cada tipo en su propio shapefile. El campo especial OGR_GEOMETRY de OGR SQL le permite filtrar por tipo con -where o -sql. La opción -nlt fija el tipo de geometría de la capa de salida, y -nlt PROMOTE_TO_MULTI es útil cuando una capa mezcla líneas o polígonos simples y de varias partes. Si omite el filtrado, el shapefile recibe el tipo de la primera entidad y las entidades de otros tipos provocan errores.

Que los campos de ExtendedData se conviertan en columnas depende del controlador KML de su versión de GDAL. El controlador LIBKML los lee; compruebe qué controladores tiene con ogrinfo --formats. Los vínculos de red, que apuntan a un KML en un servidor web, conviene descargarlos y guardarlos antes como KML local.

# Listar las capas (carpetas) y sus tipos de geometría
ogrinfo -so -al places.kml

# Un shapefile por tipo de geometría
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

# Opcional: reproyectar a la zona UTM 33N en lugar de mantener WGS84
ogr2ogr -f "ESRI Shapefile" -t_srs EPSG:32633 places_utm.shp places_points.shp

Convertir KML a shapefile en línea con FileReshape

El convertidor Convertir KML a shapefile de FileReshape hace el mismo trabajo en su navegador, sin instalar ningún programa. Usa GDAL compilado para la web, y el KML se lee de su propio disco y no se sube, así que es seguro para datos de clientes. El resultado es un .zip con archivos .shp, .shx, .dbf, .prj y .cpg para cada shapefile.

El convertidor resuelve por usted los problemas habituales. Los puntos, las líneas y los polígonos se escriben en shapefiles separados, por ejemplo Sights_points.shp y Routes_lines.shp, y cada carpeta del KML se convierte en su propio shapefile con el nombre de la carpeta. Los nombres de campo se cortan a 10 caracteres. De forma predeterminada, la salida se queda en WGS84 con un archivo .prj, y puede elegir otro sistema, como una zona UTM. Las altitudes se conservan como shapefiles 3D. La tabla de atributos se escribe en UTF-8 con el archivo .cpg correspondiente.

Conozca sus límites. Los colores y los iconos no se trasladan. El nombre y la descripción del marcador se conservan, pero la versión de GDAL para el navegador no lee los campos adicionales guardados como ExtendedData de KML. Los vínculos de red que apuntan a datos en la web no se siguen; el convertidor indica cuántos ha omitido. Para un KMZ, extraiga primero el KML con la herramienta Convertir KMZ a KML. El límite de tamaño es la memoria de su navegador, y los archivos de hasta unos 200 MB suelen funcionar.

  1. Abra el convertidor Convertir KML a shapefile y suelte su archivo .kml, o haga clic para elegirlo.
  2. Si lo desea, elija un «Sistema de coordenadas de salida», por ejemplo una zona UTM.
  3. Haga clic en «Convertir a Shapefile» y descargue el .zip con los shapefiles; después descomprímalo y añada los archivos .shp a su SIG.

¿Qué método debería elegir?

Use el convertidor en el navegador para un archivo puntual cuando solo necesite un shapefile para enviarlo o abrirlo en otro programa. Use QGIS cuando quiera comprobar el resultado en un mapa, editar atributos, rehacer el estilo o conservar los campos de ExtendedData. Use ogr2ogr para archivos muy grandes, para convertir muchos archivos a la vez o para flujos de trabajo automatizados. Si el destinatario acepta GeoPackage, considérelo como alternativa: no tiene el límite de 10 caracteres en los nombres de campo y puede contener varias capas en un solo archivo.

Preguntas frecuentes

¿Por qué obtengo varios shapefiles de un solo KML?

Un shapefile solo puede guardar un tipo de geometría. Cuando su KML mezcla puntos, líneas y polígonos, o tiene varias carpetas, cada tipo o carpeta se convierte en su propio shapefile para que no se pierda ningún dato.

¿Se conservan los colores e iconos de Google Earth?

No. Un shapefile no tiene sitio para los estilos, así que los colores, los grosores de línea y los iconos se pierden con cualquier método. Vuelva a aplicar el estilo a la capa en QGIS o en su programa SIG.

¿Puedo convertir un archivo KMZ a shapefile?

Sí. Un KMZ es un KML comprimido en zip. QGIS y ogr2ogr normalmente pueden leerlo directamente. Con FileReshape, use primero la herramienta Convertir KMZ a KML y después convierta el KML a shapefile.

¿Se sube mi KML cuando lo convierto en línea con FileReshape?

No. La conversión se hace en su navegador y el archivo se queda en su ordenador.

¿Por qué el campo Description se llama Descriptio?

El formato .dbf limita los nombres de campo de un shapefile a 10 caracteres, así que los nombres más largos se cortan. Cambie el nombre de los campos antes de convertir, o use GeoPackage si los nombres largos son importantes.