Created
September 10, 2020 03:36
-
-
Save kylefelipe/100915a541da20159dd114d814a14fc6 to your computer and use it in GitHub Desktop.
Import all KMZ files from a directory to qgis project
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os, sys, shutil | |
from qgis.PyQt.QtWidgets import QFileDialog | |
getFolder = QFileDialog().getExistingDirectory() | |
arquivos = [] | |
def renameFile(filePath, newFileName): | |
"""Funcao que renomeia o arquivo extraido""" | |
newName = f"{filePath}{os.sep}{newFileName.split('.')[0]}.kml" | |
oldName = f"{filePath}{os.sep}doc.kml" | |
arquivos.append(newName) | |
os.rename(oldName, newName) | |
for path, dir, files in os.walk(getFolder): | |
for file in files: | |
if file[-3:] == 'kmz': | |
expandFile = f"{path}{os.sep}{file}" | |
arquivos.append(expandFile) | |
# arqshutil.unpack_archive extrai o arquivo doc.kml do kmz | |
# shutil.unpack_archive(expandFile, path, 'zip') | |
# renameFile(path, expandFile.split(os.sep)[-1]) | |
# adicionando cada camada do KML ao projeto | |
for kml in arquivos: | |
layer_name = kml.split(os.sep)[-1] | |
vLayer = QgsVectorLayer(kml, layer_name, "ogr") | |
# pegando as sub camadas do kml e adicionando ao projeto | |
subLayers = vLayer.dataProvider().subLayers() | |
for subLayer in subLayers: | |
# print(subLayer) | |
name = subLayer.split('!!::!!')[1] | |
uri = f"{kml}|layername={name}" | |
# print(uri) | |
sub_vLayer = QgsVectorLayer(uri, name, 'ogr') | |
QgsProject.instance().addMapLayer(sub_vLayer) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment