[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