[Portugal] Criar uma rotina no postgres

Jorge Gustavo Rocha jgr di.uminho.pt
Quarta-Feira, 14 de Setembro de 2016 - 16:15:12 PDT


Olá Paulo,

O Jorge já apontou o caminho no email anterior. Acrescento alguns 
exemplos. Na verdade, usam o POstgresql mas não são scripts do 
Postgresql. São scripts normais em shell (bash).

No linux tenho algumas scripts que usam o osm2pgsql e ogr2ogr. Para 
pores estes dois exemplos a correr automaticamente, acrescentas no cron 
algo do género:

# m h  dom mon dow   command
17 04 * * * /home/osm/bin/sacaportugal.shp.sh
23 05 * * * /home/osm/bin/sacaportugal.osm.sh

(podes editar o cron com: crontab -e)

Exemplo: Sacar o OSM e por em Postgresql (sacaportugal.osm.sh)

#!/bin/bash
mkdir -p ~/tmp/portugal.osm
cd ~/tmp/portugal.osm
find . -type f -mtime +7 -name '*'.osm.bz2 -exec rm -f \{\} \;
data=`date +%Y%m%d%H%M`
planeta=portugal.$data.osm.bz2
wget http://download.geofabrik.de/europe/portugal-latest.osm.bz2 -O $planeta
osm2pgsql -E 3763 -s -U osm -d osmpt -c --extra-attributes -S 
/usr/share/osm2pgsql/osmpt.style $planeta
psql -U osm osmpt -c "ALTER TABLE planet_osm_line SET SCHEMA planet;"
psql -U osm osmpt -c "ALTER TABLE planet_osm_point SET SCHEMA planet;"
psql -U osm osmpt -c "ALTER TABLE planet_osm_polygon SET SCHEMA planet;"
psql -U osm osmpt -c "ALTER TABLE planet_osm_roads SET SCHEMA planet;"
psql -U osm osmpt -c "drop table planet_osm_nodes;"
psql -U osm osmpt -c "drop table planet_osm_ways;"
psql -U osm osmpt -c "drop table planet_osm_rels;"

Outro exemplo: reconverter shapefiles (sacaportugal.shp.sh)

#!/bin/bash
rm -rf ~/tmp/portugal.shp
mkdir -p ~/tmp/portugal.shp
cd ~/tmp/portugal.shp
wget http://download.geofabrik.de/europe/portugal-latest.shp.zip
unzip portugal-latest.shp.zip
ogr2ogr -overwrite -skipfailures -f "ESRI Shapefile" edificios.shp 
-s_srs EPSG:4326 -t_srs EPSG:3763 -nln edificios buildings.shp -lco 
ENCODING=UTF-8
ogr2ogr -overwrite -skipfailures -f "ESRI Shapefile" usodosolo.shp 
-s_srs EPSG:4326 -t_srs EPSG:3763 -nln usodosolo landuse.shp -lco 
ENCODING=UTF-8
ogr2ogr -overwrite -skipfailures -f "ESRI Shapefile" natureza.shp -s_srs 
EPSG:4326 -t_srs EPSG:3763 -nln natureza natural.shp -lco ENCODING=UTF-8
ogr2ogr -overwrite -skipfailures -f "ESRI Shapefile" lugares.shp -s_srs 
EPSG:4326 -t_srs EPSG:3763 -nln lugares places.shp -lco ENCODING=UTF-8
ogr2ogr -overwrite -skipfailures -f "ESRI Shapefile" pontos.shp -s_srs 
EPSG:4326 -t_srs EPSG:3763 -nln pontos points.shp -lco ENCODING=UTF-8
ogr2ogr -overwrite -skipfailures -f "ESRI Shapefile" viaferrea.shp 
-s_srs EPSG:4326 -t_srs EPSG:3763 -nln viaferrea railways.shp -lco 
ENCODING=UTF-8
ogr2ogr -overwrite -skipfailures -f "ESRI Shapefile" vias.shp -s_srs 
EPSG:4326 -t_srs EPSG:3763 -nln vias roads.shp -lco ENCODING=UTF-8
ogr2ogr -overwrite -skipfailures -f "ESRI Shapefile" agua.shp -s_srs 
EPSG:4326 -t_srs EPSG:3763 -nln agua waterways.shp -lco ENCODING=UTF-8

rm buildings.* landuse.* natural.* places.* points.* railways.* roads.* 
waterways.*
rm portugal-latest.shp.zip

zip edificios.zip edificios.*
zip usodosolo.zip usodosolo.*
zip natureza.zip natureza.*
zip lugares.zip lugares.*
zip pontos.zip pontos.*
zip viaferrea.zip viaferrea.*
zip vias.zip vias.*
zip agua.zip agua.*
mv *.zip /home/osm/wordpress/wp-content/uploads/

cd ..
zip portugal.3763.shp.zip portugal.shp/*
mv portugal.3763.shp.zip /home/osm/wordpress/wp-content/uploads/

Espero que ajude.

Bom trabalho,

J. Gustavo

Às 22:55 de 14-09-2016, Paulo Mendes (Sapo TLM) escreveu:
>
>
>
>
> Boa noite!
>
> Gostaria e saber se é possivel criar uma rotina no postgres que possa
> fazer a exportação automática de varias tabelas geográficas para
> shapefile e que essa rotina seja executada a determinada hora do dia!
>
> Obrigado
>
> Paulo Mendes
>
>
> Enviado do meu dispositivo Samsung
>
>
> _______________________________________________
> Portugal mailing list
> Portugal  lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/portugal
>

J. Gustavo
-- 
Jorge Gustavo Rocha
Departamento de Informática
Universidade do Minho
4710-057 Braga
Tel: +351 253604480
Fax: +351 253604471
Móvel: +351 910333888
skype: nabocudnosor


Mais informações acerca da lista Portugal