Files
geo/cron/traite_osm.sh
pierre 2f5946a184 feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD)
  * DEV: Clés TEST Pierre (mode test)
  * REC: Clés TEST Client (mode test)
  * PROD: Clés LIVE Client (mode live)
- Ajout de la gestion des bases de données immeubles/bâtiments
  * Configuration buildings_database pour DEV/REC/PROD
  * Service BuildingService pour enrichissement des adresses
- Optimisations pages et améliorations ergonomie
- Mises à jour des dépendances Composer
- Nettoyage des fichiers obsolètes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 18:26:27 +01:00

147 lines
6.5 KiB
Bash

#!/bin/bash
ladate=$(date +%Y%m%d-%H%M)
lheure=$(date +%H:%M:%S)
mybase=osm
myuser=osm_maj_user
mypass=d66,OsmMaj.User
log=osm.log
rm -f $log
touch $log
echo "To: contact@d6soft.fr" >> $log
echo "From: contact@d6soft.fr" >> $log
echo "Subject: [Import] OSM dva-maria - $ladate" >> $log
continent=australia-oceania
country=new-caledonia
cd /var/osm
echo "Demarrage du telechargement de la Nouvelle-Caledonie a $lheure" >> $log
rm -f ${country}-latest.osm.pbf
rm -f ${country}.o5m
rm -f ${country}-streets.csv
rm -f streets.csv
lheure=$(date +%H:%M:%S)
echo "Debut du telechargement de la Nouvelle-Caledonie a $lheure" >> $log
wget http://download.geofabrik.de/${continent}/${country}-latest.osm.pbf -O ${country}-latest.osm.pbf
if [ "$?" -ne "0" ] ; then
echo "!!!! Désolé, le téléchargement deNouvelle-Caledonie semble ne pas fonctionner. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $log
# exit 1
else
lheure=$(date +%H:%M:%S)
echo "Telechargement de la Nouvelle-Caledonie terminee a $lheure" >> $log
osmconvert -v ${country}-latest.osm.pbf --all-to-nodes --drop-relations --max-objects=99999999 --out-o5m > ${country}.o5m
lheure=$(date +%H:%M:%S)
echo "Generation du fichier .o5m terminee a $lheure" >> $log
osmconvert ${country}.o5m --csv="@id @lat @lon name place addr:street addr:housenumber addr:city addr:village addr:town" --csv-headline --csv-separator=, -o=${country}-streets.csv
lheure=$(date +%H:%M:%S)
echo "Conversion en .csv terminee a $lheure" >> $log
awk -F, '$4 != "" || $5 != "" || $6 != "" || $8 != ""' ${country}-streets.csv > streets.csv
lheure=$(date +%H:%M:%S)
echo "Filtrage du csv termine a $lheure" >> $log
table="${country//-/_}"
rm -f cde.sql
touch cde.sql
echo "USE $mybase;" >> cde.sql
echo "DROP TABLE IF EXISTS $table;" >> cde.sql
echo "CREATE TABLE $table (rowid int(11) NOT NULL AUTO_INCREMENT, osm_id int(11) DEFAULT NULL, osm_lat varchar(10) DEFAULT NULL, osm_lng varchar(10) DEFAULT NULL, osm_name varchar(60) DEFAULT NULL, osm_place varchar(60) DEFAULT NULL, osm_street varchar(60) DEFAULT NULL, osm_number varchar(10) DEFAULT NULL, osm_city varchar(60) DEFAULT NULL, osm_date_creat timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (rowid)) ENGINE=InnoDB DEFAULT CHARSET=utf8;" >> cde.sql
echo "ALTER TABLE $table ADD INDEX osm_lat (osm_lat ASC), ADD INDEX osm_lng (osm_lng ASC);" >> cde.sql
echo "LOAD DATA LOCAL INFILE 'streets.csv' INTO TABLE $table CHARACTER SET 'UTF8mb4' FIELDS TERMINATED BY ',' IGNORE 1 LINES (osm_id, osm_lat, osm_lng, osm_name, osm_place, osm_street, osm_number, osm_city);" >> cde.sql
mariadb --local-infile=1 -u$myuser -p$mypass $mybase < cde.sql
lheure=$(date +%H:%M:%S)
echo "Importation sql de la Nouvelle-Caledonie dans la table $table terminee a $lheure" >> $log
rm -f ${country}-latest.osm.pbf
rm -f ${country}.o5m
rm -f ${country}-streets.csv
rm -f streets.csv
fi
continent=europe
country=france
cd /var/osm
echo "Demarrage du telechargement des regions a $lheure" >> $log
for region in alsace aquitaine auvergne basse-normandie bourgogne bretagne centre champagne-ardenne corse franche-comte guadeloupe guyane haute-normandie ile-de-france languedoc-roussillon limousin lorraine martinique mayotte midi-pyrenees nord-pas-de-calais pays-de-la-loire picardie poitou-charentes provence-alpes-cote-d-azur reunion rhone-alpes
do
rm -f ${country}-${region}-latest.osm.pbf
rm -f ${country}-${region}.o5m
rm -f ${country}-${region}-streets.csv
rm -f *.csv
lheure=$(date +%H:%M:%S)
echo "Debut du telechargement de la region $region a $lheure" >> $log
wget http://download.geofabrik.de/${continent}/${country}/${region}-latest.osm.pbf -O ${country}-${region}-latest.osm.pbf
if [ "$?" -ne "0" ] ; then
echo "!!!! Désolé, le téléchargement de la carte $region semble ne pas fonctionner. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $log
# exit 1
else
lheure=$(date +%H:%M:%S)
echo "Telechargement de la region $region terminee a $lheure" >> $log
osmconvert -v ${country}-${region}-latest.osm.pbf --all-to-nodes --drop-relations --max-objects=99999999 --out-o5m > ${country}-${region}.o5m
lheure=$(date +%H:%M:%S)
echo "Generation du fichier .o5m terminee a $lheure" >> $log
osmconvert ${country}-${region}.o5m --csv="@id @lat @lon name place addr:street addr:housenumber addr:city addr:village addr:town" --csv-headline --csv-separator=, -o=${country}-${region}-streets.csv
lheure=$(date +%H:%M:%S)
echo "Conversion en .csv terminee a $lheure" >> $log
awk -F, '$4 != "" || $5 != "" || $6 != "" || $8 != ""' ${country}-${region}-streets.csv > streets.csv
lheure=$(date +%H:%M:%S)
echo "Filtrage du csv termine a $lheure" >> $log
split -l 1000 streets.csv streets_1000_
table="${region//-/_}"
rm -f cde.sql
touch cde.sql
echo "USE $mybase;" >> cde.sql
echo "DROP TABLE IF EXISTS $table;" >> cde.sql
echo "CREATE TABLE $table (rowid int(11) NOT NULL AUTO_INCREMENT, osm_id int(11) DEFAULT NULL, osm_lat varchar(10) DEFAULT NULL, osm_lng varchar(10) DEFAULT NULL, osm_name varchar(60) DEFAULT NULL, osm_place varchar(60) DEFAULT NULL, osm_street varchar(60) DEFAULT NULL, osm_number varchar(10) DEFAULT NULL, osm_city varchar(60) DEFAULT NULL, osm_date_creat timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (rowid)) ENGINE=InnoDB DEFAULT CHARSET=utf8;" >> cde.sql
echo "ALTER TABLE $table ADD INDEX osm_lat (osm_lat ASC), ADD INDEX osm_lng (osm_lng ASC);" >> cde.sql
mysql --local-infile=1 -u$myuser -p$mypass $mybase < cde.sql
lheure=$(date +%H:%M:%S)
echo "Creation sql de la region $region $a dans la table $table terminee a $lheure" >> $log
for a in $(find . -name "streets_1000_*" | sort);
do
rm -f cde.sql
touch cde.sql
echo "USE $mybase;" >> cde.sql
echo "LOAD DATA LOCAL INFILE '${a}' INTO TABLE $table CHARACTER SET 'UTF8mb4' FIELDS TERMINATED BY ',' IGNORE 1 LINES (osm_id, osm_lat, osm_lng, osm_name, osm_place, osm_street, osm_number, osm_city);" >> cde.sql
mariadb --local-infile=1 -u$myuser -p$mypass $mybase < cde.sql
lheure=$(date +%H:%M:%S)
echo "Importation sql de %a pour la region $region $a dans la table $table terminee a $lheure" >> $log
done
rm -f ${country}-${region}-latest.osm.pbf
rm -f ${country}-${region}.o5m
rm -f ${country}-${region}-streets.csv
rm -f streets_1000_*
rm -f *.csv
fi
done
lheure=$(date +%H:%M:%S)
echo "Fin des traitements OSM a $lheure" >> $log
ssmtp support@unikoffice.com < $log