Solução de shell OSGeo4W
IMHO, a maneira mais simples de extrair as propriedades da tabela de atributos ( esquema ) consiste em abrir o shell OSGeo4W (porque você está no Windows OS), alterar o diretório para sua pasta de dados e simplesmente digitar algo como:
ogrinfo -so inputLayerName.shp inputLayerName
Ele mostrará as informações resumidas, como projeção, esquema , contagem de recursos e extensões. Então, como você tem vários shapefiles, pode fazer um FOR
ciclo como o seguinte:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf >> properties.txt
Isso retorna um arquivo txt com as propriedades de todos os shapefiles em um diretório (porque o redirecionamento de saída >>
anexa cada saída única ao properties.txt
arquivo).
Como alternativa, se você estiver interessado em um arquivo de propriedades para cada shapefile:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf > %~nf_properties.txt
Sobre a padronização, existem várias técnicas. Sugiro que você use a RESIZE
opção de criação de camada após a mesclagem para redimensionar os campos para o tamanho ideal (por exemplo, os campos de texto com tamanho excessivo serão reduzidos). Por exemplo:
ogr2ogr -lco RESIZE=yes merge_resized.shp merge.shp
Solução de script de processamento
Abra a caixa de ferramentas Processing no QGIS, crie um novo script (clique em Scripts
-> Tools
-> Create new script
) e digite:
##ogrinfo (summary only)=name
##input=vector
##output=output file
import os, subprocess
head, tail = os.path.split(input)
inputname = os.path.splitext(tail)[0]
cmd = 'ogrinfo -so ' + input + ' ' + inputname + ' > ' + output
subprocess.check_call(cmd, shell=True)
Salve como quiser, por exemplo ogrinfo_so.py
. Em seguida, um novo script ogrinfo (summary only)
aparecerá na caixa de ferramentas Processando -> Scripts
-> User script
grupo. Pode ser executado como está ou no modo batch.
A mesma operação é possível para redimensionar o comprimento do campo, conforme descrito anteriormente:
##Resize fields=name
##input=vector
##output=output vector
import subprocess
cmd = 'ogr2ogr -lco RESIZE=YES ' + output + ' ' + input
subprocess.check_call(cmd, shell=True)
Um novo script chamado Resize fields
estará disponível na caixa de ferramentas Processando -> Scripts
-> User scripts
grupo. Aproveite!