Closed pigreco closed 1 year ago
Ciao Totò, non è quello che ti serve, ma ti puoi estrarre con OGR i valori di dominio associati alla chiave:
ogr2ogr -f "CSV" test.csv test.gdb UNICA_SEZ557070 -resolveDomains
Da quello che capisco, sta a te farti uno script per estrarre tutto, con le singole coppie chiave valore.
Ho scritto in lista gdal-dev, qui risposta
https://lists.osgeo.org/pipermail/gdal-dev/2023-January/056752.html
qui risposta
https://lists.osgeo.org/pipermail/gdal-dev/2023-January/056752.html
L'output in JSON consente di fare magie
ogrinfo -json test.gdb UNICA_SEZ557070 | jq -r '.domains|keys[]' | while IFS="" read -r domain;do ogrinfo -json test.gdb | jq -r '.domains.'"$domain"'.codedValues' | mlr --j2c reshape -r '.' -o k,v >"$domain".csv;done
In questo zip gli esempi di output dei tre domini presenti: t.zip
Usando arcPy: idea presa da qui
script adattato al caso in esame:
import arcpy
arcpy.env.workspace = "D:\cus_sardegna\DBGT_10K_22_V01_original.gdb"
gdb = arcpy.env.workspace
output_path = "D:\cus_sardegna\\tabelle_domini.gdb"
print(output_path)
print("gdb")
arcpy.env.overwriteOutput = True
domains = arcpy.da.ListDomains(gdb)
print('sono arrivato a stampare i domini')
#stampo lista dei domini
#print(domains)
print(len(domains))
count = 1
for domain in domains:
print('-----------dominio numero : %s/%s ---------------' %(count, len(domains)))
count = count+1
domain_name = domain.name
print(domain.name)
# print(domain.codedValues)
coded_value_list = domain.codedValues
print(coded_value_list)
out_table_name = domain_name.lower()
print('il nome della tabella diuscita è:')
print(out_table_name)
output_complete_path = '%s\\%s' %(output_path, out_table_name)
print(output_complete_path)
arcpy.DomainToTable_management(gdb, domain_name, output_complete_path, "code", "descript")
con output su gdb, poi esportato in tabelle dbf e quindi convertite in csv con lo script:
#!/bin/bash
for i in *.dbf;do
filename=$(basename "$i")
filename="${filename%.*}"
# converte da dbf a csv
ogr2ogr -f "CSV" "$filename".csv "$filename".dbf
done;
infine, ho mergiato tutti i file usando QGIS HIHIHIH
Ricetta fatta e pubblicata
https://tansignari.opendatasicilia.it/ricette/bash/estrarre_domini_da_filegdb/
Database ESRI da oltre 5 GB caratterizzato da centinaia di tabelle (tabelle semplici e tabelle con geometria) con ulteriori tabelle usate come dominio di campo. Queste ultime però non sono presenti direttamente come tabelle nel gdb ma sono impostate come domini e quindi non c'è modo di esportarle se non dopo averle convertite in tabelle. Non riesco a trovare un modo veloce per convertirle in semplici tabelle dbf, dovrei farlo una ad una ma solo oltre 200. QGIS vede e legge questi domini, quindi deduco che deve esserci un modo con![image](https://user-images.githubusercontent.com/7631137/212921956-8ed5c844-6fc8-4e89-a3d7-f0ef59f16114.png)
ogr
di esportarle, ma non trovo nulla on line :-(