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é ?

Annonce

#1 Thu 29 August 2024 18:02

Marc Gauthier
Participant occasionnel
Date d'inscription: 28 Sep 2009
Messages: 15

POSTGIS : équivalent de largest-overlap de Mapshaper

Suite à l'article https://www.icem7.fr/cartographie/les-l … n-en-2024/ j'essaye avec POSTGIS mais mes essais avec ST_Intersection sont très très lent : plusieurs minutes contre quelques secondes avec Mapshaper.
Avez-vous des pistes pour avoir de bonnes performances ?

Hors ligne

 

#2 Fri 30 August 2024 11:18

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3180
Site web

Re: POSTGIS : équivalent de largest-overlap de Mapshaper

Bonjour,

Vous pouvez nous en dire plus ? Intersection de quoi avec quoi ?


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#3 Sat 31 August 2024 08:04

Marc Gauthier
Participant occasionnel
Date d'inscription: 28 Sep 2009
Messages: 15

Re: POSTGIS : équivalent de largest-overlap de Mapshaper

J'essaye de reproduire l'article avec :
- une grille H3 qui couvre la France métropolitaine (24 883 features);
- les communes françaises 2022 (34 955 features).

Le ST_Intersection ne se termine pas après une heure.
J'explore un ST_Intersects pour ne faire le ST_Intersection que sur les géométries avec au moins un point en commun.

Hors ligne

 

#4 Sat 31 August 2024 14:27

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 421

Re: POSTGIS : équivalent de largest-overlap de Mapshaper

Est-ce que vous avez bien un index sur la géométrie ? Sans, les calculs sont très longs.

Hors ligne

 

#5 Sun 01 September 2024 07:38

Marc Gauthier
Participant occasionnel
Date d'inscription: 28 Sep 2009
Messages: 15

Re: POSTGIS : équivalent de largest-overlap de Mapshaper

J'avais oublié d'ajouter les index, le gain est impressionnant .
Merci pour ce rappel !

Code:

-- intersection entre la grille et les communes avec calcul de la surface commune
DROP TABLE IF EXISTS fra_h3_res6_com2022;
CREATE TABLE fra_h3_res6_com2022 AS
SELECT a.*, b.codgeo, ST_AREA(ST_INTERSECTION(a.geometry, b.geometry)) AS surface
FROM fra_h3_res6 a, a_com2022 b
WHERE ST_INTERSECTS(a.geometry, b.geometry)
ORDER BY h3, surface DESC;
-- sélection de la commune avec la plus grande surface
DROP TABLE IF EXISTS fra_h3_res6_com2022_codgeo;
CREATE TABLE fra_h3_res6_com2022_codgeo AS
SELECT DISTINCT ON (h3) *
FROM fra_h3_res6_com2022
ORDER BY h3, surface DESC
;

Dernière modification par Marc Gauthier (Sun 01 September 2024 12:06)

Hors ligne

 

Pied de page des forums

Powered by FluxBB