Para sistematizar a importação do continente, podem-se usar as seguintes scripts:
Sacar índices, gerar uma script para sacar os zips e sacar os zips:
#!/bin/bash
wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_Norte_Atom.xml
wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_Centro_Atom.xml
wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_AML_Atom.xml
wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_Alentejo_Atom.xml
wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_Algarve_Atom.xml
awk '/Addresses_[0-9]+_EPSG3763.zip/ {print $3}' *.xml | sed 's/href=/wget /' > saca.sh
mkdir zips; cd zips; bash ../saca.sh
A script cria uma pasta zips com 278 zips (um para cada concelho do continente).
Para o restante processamento, usa-se o GDAL e uma base de dados PostgreSQL, onde é criada uma tabela moradas.
Nessa pasta, corre-se a seguinte script que processa concelho a concelho. Para cada concelho, são acrescentados os respetivos endereços à tabela moradas.
Script processa.sh:
#!/bin/bash
for filename in *.zip
do
base="${filename%.*}"
unzip $filename
echo "${filename%.*}"
GML_ATTRIBUTES_TO_OGR_FIELDS=YES GML_SKIP_RESOLVE_ELEMS=NONE ogr2ogr -f PostgreSQL PG:https://wiki.openstreetmap.org/wiki/Tag:'service=osm' GMLAS:$base.gml -nlt CONVERT_TO_LINEAR
psql service=osm -f insere.sql
rm $base.gml
done
A script processa.sh recorre a uma script SQL insere.sql, que é a seguinte:
