Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Tue 08 February 2022 18:24
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Ogr2Ogr GeoJson > Spatialite très lent
Salut à tous,
Je tente de scripter l'importation de gros fichiers GeoJson dans une base Spatialite avec OGR2OGR.
Mais je ne comprends pas pourquoi l'import est très lent.
D'autant plus que depuis QGis, via le gestionnaire de BDD, l'import manuel des mêmes GeoJson est très rapide.
Exemple avec un GeoJson de 63000 entités points :
QGis : < 5s
OGR2OGR : > 10 min
Voici mon script .bat (je suis sur Windows) :
Code:
"C:\OSGeo4W\bin\ogr2ogr.exe" -update -skipfailures -f SQLite mabase.sqlite -dsco SPATIALITE=YES -lco GEOMETRY_NAME=geom -lco SPATIAL_INDEX=NO "D:\monchemin\monfichier.geojson"
Après avoir lancé le script, je vois le poids de mabase.sqlite augmenter Ko par Ko, très lentement, et un fichier "mabase.sqlite-journal" apparaitre et disparaitre constamment dans le même répertoire.
J'ai mis "-lco SPATIAL_INDEX=NO" pour que l'index spatial ne soit pas calculé à l'importation (je le lance manuellement plus tard, via un script Python/SQL).
Est-ce que quelqu'un a une idée de la cause possible de cette lenteur ?
Sylvain M.
Hors ligne
#2 Tue 08 February 2022 18:41
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: Ogr2Ogr GeoJson > Spatialite très lent
Sans la balise code, c'est peut-être plus lisible dans l'ensemble :
"C:\OSGeo4W\bin\ogr2ogr.exe" -update -skipfailures -f SQLite mabase.sqlite -dsco SPATIALITE=YES -lco GEOMETRY_NAME=geom -lco SPATIAL_INDEX=NO "D:\monchemin\monfichier.geojson"
J'ai essayé sans l'option "spatialite", le problème est le même :
"C:\OSGeo4W\bin\ogr2ogr.exe" -update -skipfailures -f SQLite mabase.sqlite "D:\monchemin\monfichier.geojson"
(que la base sqlite existe ou non avant)
Dernière modification par Sylvain M. (Tue 08 February 2022 18:43)
Sylvain M.
Hors ligne
#3 Tue 08 February 2022 21:52
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: Ogr2Ogr GeoJson > Spatialite très lent
Précision du soir : le problème est le même avec la donnée source convertie en SHP.
Ogr2Ogr convertit bien le GeoJson en SHP (< 2s !), mais même problème si j'essaie d'intégrer ce SHP en base Spatialite (SQlite)...
Comme le but était de faire des scripts SQL derrière, je vais passer par mon serveur PostGreSQL, mais c'est dommage que ça ne marche pas avec une base Spatialite
Sylvain M.
Hors ligne
#4 Wed 09 February 2022 10:20
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: Ogr2Ogr GeoJson > Spatialite très lent
Salut,
plusieurs élements pour augmenter les performances :
* Réduire le nombre de transaction (begin commit) en rajoutant l'option -gt 65536
* OGR_SQLITE_SYNCHRONOUS=FALSE dans les layer creation option. C'est l'équivalent d'UNLOGGED dans PostgreSQL
Attention à l'intégrité des données dans ce cas.
* Augmenter la taille du cache dédié au moteur SQLITE avec l'option de conf OGR_SQLITE_CACHE.
Source : https://gdal.org/drivers/vector/sqlite.html
Dernière modification par tumasgiu (Wed 09 February 2022 10:22)
Hors ligne
#5 Wed 09 February 2022 10:29
Re: Ogr2Ogr GeoJson > Spatialite très lent
Pour compléter le commetnaire de tumasgiu o/ tu as des configurations spécifiques pour SQLite, elle commence par PRAGMA :
https://www.tutorialspoint.com/sqlite/sqlite_pragma.htm
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#6 Wed 09 February 2022 12:27
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: Ogr2Ogr GeoJson > Spatialite très lent
Super : merci @tumasgiu et @Yves
J'avais testé "-gt 65536", mais sans que ça ne change la donne.
Je vais donc tester "OGR_SQLITE_SYNCHRONOUS=FALSE" et "OGR_SQLITE_CACHE" après avoir essayé de comprendre, ainsi que de découvrir ce fameux "PRAGMA" que je ne connais pas encore, mais dont j'ai souvent vu le nom dans mes lectures diagnonales (je crois qu'il va falloir aller plus loin que la diagonale ! )
Suis sur autre chose là, mais je vous tiens au courant !
Sylvain M.
Hors ligne