Commit 4cb41235 authored by Lionel VIDALLER's avatar Lionel VIDALLER
Browse files

fix housenumber bug caused by non-integer 'numero' in address file

parent a17503f8
#!/usr/bin/env python #!/usr/bin/env python
# coding: utf-8 # coding: utf-8
# In[1]:
import sys import sys
import pandas as pd import pandas as pd
import osmium import osmium
# In[2]:
#fichier_bal = './bal_extrait.csv'
fichier_bal = sys.argv[1]+'/bal_200046977.csv' fichier_bal = sys.argv[1]+'/bal_200046977.csv'
fichier_codes = './correspondance-code-insee-code-postal-gl.csv' fichier_codes = './correspondance-code-insee-code-postal-gl.csv'
fichier_pbf = sys.argv[1]+'/'+sys.argv[2] fichier_pbf = sys.argv[1]+'/'+sys.argv[2]
...@@ -22,18 +15,24 @@ fichier_pbf = sys.argv[1]+'/'+sys.argv[2] ...@@ -22,18 +15,24 @@ fichier_pbf = sys.argv[1]+'/'+sys.argv[2]
start_id = 1000 start_id = 1000
# In[3]:
df = pd.read_csv(fichier_bal,sep=';',header=0,index_col='cle_producteur',decimal='.',encoding='utf-8') df = pd.read_csv(fichier_bal,sep=';',header=0,index_col='cle_producteur',decimal='.',encoding='utf-8')
df = df.drop(['x', 'y'], axis=1) df = df.drop(['x', 'y'], axis=1)
if df['numero'].isnull().sum() > 0:
dk = df['numero']
index_with_nan = dk.index[dk.isnull()]
dk.drop(index_with_nan,0, inplace=True)
# remplacement des valeurs nulles à '' dans 'numero' # remplacement des valeurs nulles à '' dans 'numero'
df.loc[df['numero'].isnull(), 'numero'] = '' df.loc[df['numero'].isnull(), 'numero'] = ''
df = df.astype({'numero': str}) df = df.astype({'numero': str})
# les entiers ont été transformés en flottant (.0) dans l'opération, suppression de la décimale
df['numero'] = df['numero'].str[:-2] # teste si les valeurs non nulles sont des entiers
if dk.astype(str).str.match("^[0-9]+.0$").all():
# si oui, les entiers ont été transformés en flottant (.0) dans l'opération, suppression de la décimale
df['numero'] = df['numero'].str[:-2]
df['numero'] = df['numero'].replace('99999', '') df['numero'] = df['numero'].replace('99999', '')
# remplacement des valeurs nulles à '' dans 'suffixe' # remplacement des valeurs nulles à '' dans 'suffixe'
...@@ -48,39 +47,17 @@ df['addr:housenumber'] = df.numero.str.cat(df.suffixe,sep='') ...@@ -48,39 +47,17 @@ df['addr:housenumber'] = df.numero.str.cat(df.suffixe,sep='')
df.rename(columns={'voie_nom': 'addr:street', 'commune_nom': 'addr:city', 'long': 'lon', 'date_der_maj': 'timestamp'}, inplace=True) df.rename(columns={'voie_nom': 'addr:street', 'commune_nom': 'addr:city', 'long': 'lon', 'date_der_maj': 'timestamp'}, inplace=True)
df.dtypes
# In[4]:
df
# In[5]:
df_codes = pd.read_csv(fichier_codes,sep=';',header=0,index_col=False,decimal='.',encoding='utf-8') df_codes = pd.read_csv(fichier_codes,sep=';',header=0,index_col=False,decimal='.',encoding='utf-8')
del df_codes['Commune'] del df_codes['Commune']
df_codes.rename(columns={'Code INSEE': 'insee', 'Code Postal': 'addr:postcode'}, inplace=True) df_codes.rename(columns={'Code INSEE': 'insee', 'Code Postal': 'addr:postcode'}, inplace=True)
df_codes = df_codes.astype({'addr:postcode': str}) df_codes = df_codes.astype({'addr:postcode': str})
df_codes.dtypes
# In[6]:
df = pd.merge(df, df_codes, on='insee') df = pd.merge(df, df_codes, on='insee')
df.head()
# In[7]:
# écriture du fichier osm.pbf
writer = osmium.SimpleWriter(fichier_pbf) writer = osmium.SimpleWriter(fichier_pbf)
i = 0 i = 0
...@@ -103,12 +80,3 @@ for index, row in df.iterrows(): ...@@ -103,12 +80,3 @@ for index, row in df.iterrows():
i += 1 i += 1
writer.close() writer.close()
# In[ ]:
# In[ ]:
...@@ -9,13 +9,17 @@ chown postgres:postgres /data/$PGDIR && \ ...@@ -9,13 +9,17 @@ chown postgres:postgres /data/$PGDIR && \
export PGDATA=/data/$PGDIR && \ export PGDATA=/data/$PGDIR && \
sudo -u postgres /usr/lib/postgresql/12/bin/initdb -D /data/$PGDIR && \ sudo -u postgres /usr/lib/postgresql/12/bin/initdb -D /data/$PGDIR && \
echo "host all all 0.0.0.0/0 trust" >> /data/$PGDIR/pg_hba.conf
echo "listen_addresses='*'" >> /data/$PGDIR/postgresql.conf
sudo -u postgres /usr/lib/postgresql/12/bin/pg_ctl -D /data/$PGDIR start && \ sudo -u postgres /usr/lib/postgresql/12/bin/pg_ctl -D /data/$PGDIR start && \
sudo -u postgres psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='nominatim'" | grep -q 1 || sudo -u postgres createuser -s nominatim && \ sudo -u postgres psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='nominatim'" | grep -q 1 || sudo -u postgres createuser -s nominatim && \
sudo -u postgres psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='www-data'" | grep -q 1 || sudo -u postgres createuser -SDR www-data && \ sudo -u postgres psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='www-data'" | grep -q 1 || sudo -u postgres createuser -SDR www-data && \
sudo -u postgres psql postgres -c "DROP DATABASE IF EXISTS nominatim" && \ sudo -u postgres psql postgres -c "DROP DATABASE IF EXISTS nominatim" && \
useradd -m -p password1234 nominatim && \ useradd -m -p password1234 nominatim && \
chown -R nominatim:nominatim ./src && \ chown -R nominatim:nominatim ./src && \
sudo -u nominatim ./src/build/utils/setup.php --osm-file $OSMFILE --all --threads $THREADS && \ sudo -u nominatim ./src/build/utils/setup.php --osm-file $OSMFILE --all --threads $THREADS --osm2pgsql-cache 1000 && \
sudo -u nominatim ./src/build/utils/check_import_finished.php && \ sudo -u nominatim ./src/build/utils/check_import_finished.php && \
sudo -u postgres /usr/lib/postgresql/12/bin/pg_ctl -D /data/$PGDIR stop && \ sudo -u postgres /usr/lib/postgresql/12/bin/pg_ctl -D /data/$PGDIR stop && \
sudo chown -R postgres:postgres /data/$PGDIR sudo chown -R postgres:postgres /data/$PGDIR
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment