Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Fri 16 October 2020 10:26

preliator
Membre
Date d'inscription: 17 Nov 2018
Messages: 357

Grosse bdd géométrique et QGis

Bonjour,

Je dispose d'une bdd Postgis (nommée "STAGE") dans laquelle j'ai importé la base de données Sirene v3. (https://public.opendatasoft.com/explore … nitelegale) de 33 millions d'entrées. Etant au format CSV, je me suis servie des colonnes de Lat et Long pour créer une colonne "geom" de type geometry pour chaque ligne.

Je souhaite manipuler cette bdd sur QGis, uniquement sur une commune. Après avoir crée une table "sirene_marseille" sur Postgre, filtrée sur la ville, je rencontre une très grande lenteur de QGis pour se connecter à ma BDD. Voici ce que j'obtiens durant 5 bonnes minutes :
https://zupimages.net/viewer.php?id=20/42/ofd5.png

Je rencontre ce problème, directement après avoir crée la géométrie de ma base Sirene.

Existe t-il une alternative pour stocker une grosse bdd geometrique dans Postgis, tout en étant traitable sur QGis ?

Merci.

Hors ligne

 

#2 Fri 16 October 2020 10:39

Nicolas Ribot
Moderateur
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1269

Re: Grosse bdd géométrique et QGis

Bonjour,

Oui c'est possible de stocker de gros volumes et de s'en servir dans Postgis.
(J'utilise, avec un client, une BD de 2.5 To, avec des tables de 100M de parcelles ou 49M de batiments, et on peut s'en servir dans QGIS. Il y a aussi une fibre 200MB/s entre le client et internet, ca aide bien aussi smile

Coté table postgis, assurez-vous d'avoir un index spatial a jour sur la colonne geo. QGIS s'en sert pour filtrer les données à afficher: zoomez d'abord sur la commune, puis chargez la couche postgis: seules les geoms intersectant la commune seront chargées => très rapide.

Ensuite, coté QGIS, il faut faire attention aux propriétés de la connexion PostGIS:
Editez la connexion postgis que vous utilisez, et vérifiez que vous avez cocher la case "ne pas vérifier le type des colonnes "geometry"" (j'ai une version en anglais: l'intitulé français ne doit pas etre exactement celui-là.)

Si cette case est décochée, QGIS va scanner chaque colonne geometry qui n'a pas un type précis (typemod point, linestring, multipolygon, etc) pour déterminer un type éventuel unique de geometry. Ca prend juste des plombes sur les grosses tables.

Si vous ne voyez plus votre table apres avoir fait ca, pensez à typer la colonne geometry: QGIS ne sait afficher que des colonnes homogènes en type et en SRID. Si la colonne geo est de type geometry, et pas geometry(POINT, 2154), ou geometry(POINT, 4326), alterez la colonne pour changer son type, par ex:

Code:

alter table toto alter column geom type geometry(POINT, 4326) using st_setSRID(geom, 4326);

Enfin, L'outil gestionnaire de BD de QGIS sait lister ces tables sans type précis et les afficher dans QGIS.

Nico

Hors ligne

 

#3 Fri 16 October 2020 11:55

preliator
Membre
Date d'inscription: 17 Nov 2018
Messages: 357

Re: Grosse bdd géométrique et QGis

Un grand merci à vous, je n'ai pas précisé que je travaille en local, sur mon pc. A présent, l'affichage des couches est instantanée. Si cela peut aider d'autres personnes, voici les modifications que j'ai apportées :

Edition de la connexion de la bdd (je n'ai pas trouvé "ne pas vérifier le type des colonnes "geometry". Ces cases cochées semblent faire partir de l'option que vous m'avez citée). Par défaut, rien n'est coché : https://zupimages.net/viewer.php?id=20/42/3qst.png

A partir de la, les couches s'affichent instantanément ! Cependant, la couche en question n'apparait pas. Il faut modifier sa geometry dans Postgis :

Code:

alter table sirene alter column geom type geometry(POINT, 2154) using st_setSRID(geom, 2154);

Cependant, je n'arrive pas à comprendre comment filtrer automatiquement les éléments de ma bdd sur l'emprise d'une commune. Après avoir lancé la requête ci-dessus, j'ai crée un index spatial sur ma colonne geom, comme ceci :

Code:

create index sirene_index on public.sirene using gist(geom);

Quand je zoome sur une commune et que je double clic sur ma bdd pour la charger dans QGis, c'est l'entièreté de la couche qui se charge dans QGis (dans mon cas, à l'échelle nationale) ; j'ai d'ailleurs été bluffé de la rapidité d'affichage des 33 millions d'entités sur QGis par ailleurs smile

Dernière modification par preliator (Fri 16 October 2020 11:58)

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |