
Convertir KML y KMZ a SHP en QGIS conservando atributos y colores
Al trabajar con archivos KML o KMZ en QGIS, me encontré con un problema bastante común: al convertirlos directamente a Shapefile, parte de la información puede perderse o quedar almacenada de una forma poco útil. En algunos casos, todos los atributos aparecen dentro de una sola columna llamada
description, mientras que los colores y estilos originales dejan de visualizarse.Para resolverlo preparé una herramienta en Python para QGIS que automatiza la conversión y trata de conservar tanto las geometrías como los atributos y la información necesaria para reconstruir los colores originales.
Descargar la herramienta
La herramienta está pensada para ejecutarse directamente dentro de QGIS, utilizando PyQGIS. No es necesario instalar Python por separado.
- Descargar conversor universal KML/KMZ → SHP para QGIS
Cómo utilizarla
1. Abrir QGIS
Abre QGIS normalmente. No es necesario cargar previamente el archivo
.kmlo.kmzque quieres convertir.2. Abrir la consola de Python
Dentro de QGIS entra a Complementos → Consola de Python y después selecciona Mostrar editor.
3. Abrir el script
Desde el editor abre el archivo
KMZ_KML_a_SHP_Universal_QGIS.py. También puedes copiar su contenido completo y pegarlo directamente en el editor.4. Ejecutar
Presiona Ejecutar script. La herramienta solicitará primero el archivo KML/KMZ y posteriormente una carpeta donde guardar los resultados.
Qué problema resuelve
Uno de los problemas que encontré es que algunos KML almacenan sus atributos dentro del campo
descriptionutilizando una tabla HTML. QGIS puede mostrar toda esa información como un único texto en lugar de convertirla en columnas.- description-kml.htmlHTML
<tr> <td>FID</td> <td>28</td> </tr> <tr> <td>UGA</td> <td>33</td> </tr> <tr> <td>Politica</td> <td>Aprovechamiento-Restauración</td> </tr> <tr> <td>area_ha</td> <td>107.968646</td> </tr> En una importación convencional, lo anterior puede aparecer completo dentro de una sola columna llamada
description. La herramienta intenta detectar automáticamente la estructura y convertirla en campos reales.FID UGA Politica area_ha 28 33 Aprovechamiento-Restauración 107.968646 Los nombres de los campos no están escritos de forma fija dentro de la herramienta. Se detectan a partir del contenido del archivo.
Por ejemplo, si otro KML contiene
Municipio,Localidad,Poblacion,CategoriayObservacion, la herramienta intentará crear automáticamente esas columnas.Cómo funciona
- flujo.txtTEXT
KML / KMZ ↓ Lectura de documentos KML ↓ Detección de Placemark ↓ Lectura de geometrías ↓ Detección de MultiGeometry ↓ Extracción de atributos ↓ description HTML → columnas ↓ ExtendedData → columnas ↓ Lectura de Style / StyleMap ↓ Conversión de colores KML ↓ Validación de entidades ↓ GeoPackage ↓ Shapefile + QML Geometrías compatibles
La herramienta está diseñada para reconocer las geometrías vectoriales más comunes utilizadas dentro de KML y KMZ.
- Point para puntos.
- LineString para líneas.
- Polygon para polígonos.
- MultiGeometry para objetos formados por varias geometrías.
Geometrías multipartes
Un aspecto importante es que un solo
Placemarkpuede contener varios polígonos. Eso no significa necesariamente que deban generarse varias filas en la tabla.- multigeometry.txtTEXT
Placemark ├── Polygon ├── Polygon └── Polygon En ese caso puede tratarse de una sola entidad multipartes, formada por tres áreas físicamente separadas pero asociadas al mismo registro.
Conservación de atributos
La herramienta intenta recuperar información almacenada mediante diferentes mecanismos utilizados por KML.
descriptioncon tablas HTML.ExtendedData.Datayvalue.SchemaData.SimpleData.
- extended-data.xmlXML
<ExtendedData> <Data name="Municipio"> <value>Pachuca de Soto</value> </Data> </ExtendedData> Esto permite que la herramienta pueda utilizarse con archivos generados por distintas aplicaciones y no únicamente con un esquema específico de atributos.
Conservación de colores
Otro problema importante durante la conversión es la simbología. Un archivo KMZ puede visualizar correctamente diferentes colores, pero al exportarlo directamente a SHP QGIS puede mostrar todas las entidades con un solo color.
KML almacena normalmente los colores utilizando el formato
AABBGGRR, mientras que QGIS trabaja de otra forma. La herramienta interpreta esos valores y los transforma para poder reconstruir el estilo.Componente Significado AA Transparencia BB Azul GG Verde RR Rojo Además de generar el estilo QML, los componentes de color se almacenan dentro de la tabla de atributos.
- campos-color.txtTEXT
FILL_R FILL_G FILL_B FILL_A LINE_R LINE_G LINE_B LINE_A LINE_W Así, aunque posteriormente se pierda el archivo
.qml, los valores necesarios para reconstruir la simbología continúan dentro de los datos.Style y StyleMap
Los colores de un KML no siempre se encuentran directamente dentro de cada
Placemark. Es común que se utilicen referencias a estilos compartidos.- style-map.txtTEXT
Placemark ↓ styleUrl ↓ StyleMap ↓ Style ↓ PolyStyle / LineStyle La herramienta intenta seguir estas referencias para identificar el estilo correspondiente a cada objeto.
Style.StyleMap.styleUrl.- Estilos definidos directamente dentro del
Placemark. PolyStyle.LineStyle.IconStyle.
Archivos que genera
Si el archivo original se llama
UGA_Pach0726.kmz, el resultado puede incluir los siguientes archivos:- salida.txtTEXT
UGA_Pach0726_FINAL.gpkg UGA_Pach0726_FINAL.shp UGA_Pach0726_FINAL.dbf UGA_Pach0726_FINAL.shx UGA_Pach0726_FINAL.prj UGA_Pach0726_FINAL.cpg UGA_Pach0726_FINAL.qml GeoPackage
Recomiendo utilizar el archivo
.gpkgcomo versión maestra. GeoPackage es más moderno que Shapefile y maneja mejor nombres de campos, textos extensos y diferentes capas.Shapefile
El SHP se genera principalmente para mantener compatibilidad con sistemas que todavía requieren este formato.
QML
El archivo
.qmlalmacena la configuración de simbología de QGIS. Es necesario porque el formato Shapefile no guarda internamente los colores y estilos de representación de la misma forma que KML o KMZ.Archivos con diferentes tipos de geometría
Un mismo KML puede contener puntos, líneas y polígonos. Como Shapefile no permite mezclar diferentes tipos de geometría dentro de una misma capa, la herramienta puede separarlos.
- geometrias-mixtas.txtTEXT
ARCHIVO_FINAL_POINT.shp ARCHIVO_FINAL_LINE.shp ARCHIVO_FINAL_POLYGON.shp En GeoPackage, en cambio, es posible conservar varias capas dentro del mismo archivo.
- geopackage.txtTEXT
ARCHIVO_FINAL.gpkg ├── POINT ├── LINE └── POLYGON ¿Es realmente universal?
La herramienta está diseñada para ser reutilizable y no depender de nombres concretos de archivos, campos o capas.
No exige que existan campos llamados
FID,UGA,Politicaoarea_ha. Los campos y estructuras se intentan detectar automáticamente. Esto permite utilizar el mismo script con otros KML y KMZ provenientes de diferentes proyectos.Limitaciones
GroundOverlay
Los
GroundOverlaynormalmente representan imágenes georreferenciadas, como mapas escaneados, ortofotos o imágenes satelitales. No son geometrías vectoriales convencionales y no deben convertirse directamente a SHP.Modelos 3D
Los elementos
Model, archivos COLLADA.daey otras estructuras 3D requieren un tratamiento diferente. Shapefile no puede conservar toda la información de un modelo tridimensional.NetworkLink
Un
NetworkLinkpuede apuntar a información almacenada en otro archivo o incluso en un servidor externo. Si los datos no están incluidos físicamente dentro del KMZ, es posible que no puedan procesarse.SuperOverlay
Los
SuperOverlayse utilizan principalmente para grandes mosaicos de imágenes y estructuras jerárquicas. No corresponden directamente a capas vectoriales tradicionales.gx:Track y gx:MultiTrack
Google Earth permite almacenar recorridos asociados a tiempo y elevación mediante
gx:Trackygx:MultiTrack. Algunas variantes requieren un procesamiento especial para conservar correctamente la secuencia temporal.gx:Tour
Los recorridos animados
gx:Tourpertenecen a funciones de presentación de Google Earth y no representan una capa vectorial convencional.Recursos externos
Algunos estilos utilizan iconos, imágenes o recursos alojados fuera del KMZ. Si esos archivos no están disponibles, puede no ser posible reproducir exactamente la apariencia original.
KML dañados
La herramienta intenta tolerar algunos problemas comunes de XML y namespaces, pero un archivo severamente dañado puede requerir reparación manual antes de procesarlo.
Limitaciones propias de Shapefile
Nombres de campos
Shapefile utiliza un formato DBF antiguo y tradicionalmente limita los nombres de campos aproximadamente a 10 caracteres.
- campos-shp.txtTEXT
DescripcionGeneral → DescripGen Observaciones → Observacio Identificador → Identifica La herramienta intenta generar nombres compatibles y evitar duplicados.
Textos largos
Los campos de texto del DBF también tienen limitaciones. Cuando un texto es demasiado extenso puede ser necesario dividirlo en varias columnas para evitar pérdida de información.
- texto-largo.txtTEXT
OBSERV_1 OBSERV_2 OBSERV_3 Por esta razón vuelvo a recomendar conservar siempre el GeoPackage como archivo maestro.
Simbología
El archivo
.shpno almacena directamente la simbología de QGIS. La herramienta genera un.qmly además conserva los componentes de color dentro de los atributos para poder reconstruir posteriormente la representación.Mi recomendación de uso
Formato Uso recomendado Motivo KML/KMZ Fuente original Conservar siempre el archivo recibido o generado originalmente. GeoPackage Archivo maestro de trabajo Tiene menos limitaciones y conserva mejor la información. Shapefile Compatibilidad y entrega Útil cuando otro sistema exige específicamente SHP. QML Simbología en QGIS Permite reconstruir los colores del Shapefile. - flujo-recomendado.txtTEXT
KML / KMZ ORIGINAL ↓ GEOPACKAGE MAESTRO ↓ SHAPEFILE PARA COMPATIBILIDAD Consideraciones finales
Esta herramienta surgió a partir de un problema práctico: tener un KMZ que visualmente parecía contener toda la información, pero que al convertirlo de manera convencional perdía atributos, estilos o partes de sus geometrías.
El objetivo fue automatizar tareas que de otra manera tendría que realizar manualmente: separar
description, crear campos, interpretarMultiGeometry, recuperar estilos y preparar archivos compatibles con QGIS.- Evitar crear cada campo manualmente.
- Recuperar atributos almacenados dentro de HTML.
- Mantener entidades multipartes.
- Conservar la información de color.
- Generar automáticamente GeoPackage y Shapefile.
- Reducir la necesidad de uniones o reprocesamientos posteriores.
No pretende sustituir todas las herramientas de conversión existentes en QGIS, sino servir como una alternativa para KML y KMZ donde una exportación convencional no conserva correctamente toda la información.
- Descargar herramienta KML/KMZ → SHP Universal
“La idea no fue solamente convertir un archivo, sino conservar la mayor cantidad posible de su estructura, atributos y representación para poder seguir trabajando con él dentro de un SIG.”