Skip to content

Instantly share code, notes, and snippets.

@FelipeSBarros
Last active March 5, 2020 00:29
Show Gist options
  • Save FelipeSBarros/feffbfcfa0b4bcd8dd7af5a090488f2f to your computer and use it in GitHub Desktop.
Save FelipeSBarros/feffbfcfa0b4bcd8dd7af5a090488f2f to your computer and use it in GitHub Desktop.
import os, glob
from zipfile import ZipFile
from osgeo import ogr
# Definindo path
diretorio = "/media/felipe/DATA/Repos/Potential for natural regeneration/RawData/MattFagan"
# Listing existing GPKGs
gpkgs = os.listdir(diretorio)
# loop trhu each gpkg
for gpkg in gpkgs:
# gpkg = gpkgs[0]
# Montando metadados do arquivo
metadado = f"""{'-'*15}METADADOS{'-'*15}"""
metadado += f"""\n\nArquivo: {gpkg}"""
metadado += f"""\n\nConteúdo:"""
# Caminho até o gpkg base_dados
camada = os.path.join(diretorio, gpkg)
print( camada )
# Testing if gpkg is valid
if os.path.isfile( camada ):
print( "Camada Existente!" )
features = QgsVectorLayer( camada, "", "ogr")
layer = features.dataProvider().subLayers()
nome = layer[0].split( "!!::!!" )[1]
metadado += f"""\nLayer Name: {nome}"""
# Adicionando todas as camadas usando o OSGEO
metadado += f"""\nSRC = {features.crs().authid()}"""
metadado += f"""\nFeatures Count = {features.featureCount()}"""
metadado += f"""\nField Count = { len( features.fields() ) }"""
metadado += f"""\nGeometry type = { QgsWkbTypes.displayString(features.wkbType()) }"""
# Write to an ESRI Shapefile format dataset using UTF-8 text encoding
error = QgsVectorFileWriter.writeAsVectorFormat(features,
os.path.join(diretorio, "shp/") + nome,
"UTF-8",
driverName="ESRI Shapefile")
if error[0] == QgsVectorFileWriter.NoError:
print("success again!")
toZip = glob.glob(
os.path.join(diretorio, "shp/") + nome + "*" )
with zipfile.ZipFile(diretorio + "/" + nome + '.zip', 'w') as myzip:
for file in toZip:
myzip.write(file)
myzip.close()
else:
print( "SAVING ERROR" )
else:
print( "LOADING ERROR" )
metadado += f"""\nERROR!!!!"""
MetaName = "Metadados_" + gpkg.split(".")[0] + ".txt"
path_Metadados = os.path.join(diretorio, MetaName)
with open(path_Metadados, 'w') as meta:
meta.write(metadado)
print("Metadado gerado com sucesso.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment