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

Annonce

Printemps des cartes 2024

#1 Wed 12 June 2013 12:00

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Question complexité geom

Bonjour à tous,

j'avais posé des questions il y a quelque temps sur l'optimisation de temps de calcul pour des tests d'intersection (cf http://georezo.net/forum/viewtopic.php?id=83189).

Le map dicing avait été la solution qui m'a bien aidé.

A présent, j'ai une table de références qui a une étendue bien plus grande (à l'échelle d'un département).
J'ai crée quelque parcelles et testé si elle faisait intersection avec ces tables et si oui, de récupérer le geom d'intersection.
Les tests ont donné des temps de calcul très rapides (< 0.01s).

Mais pour faire les tests à fond, il faudrait que je teste en mettant des parcelles un peu partout, non ? Ce qui paraît fastidieux et très long.

Dans le doute, je voulais mieux comprendre ce qui joue sur les temps de calcul d'intersection.
Il était évoqué les polygones dégénérés (type croissant de lune).

Est-ce dû à un grand nombre de points couplé à une grande superficie ?
Pour les détecter, comment faîtes-vous ?
        - En SQL, avec une fonction qui donne les nb de points du polygone, la superficie, ...
        - En QGIS, une fonction qui aide à les voir ?


Est-il conseillé dans tous les cas, d'appliquer un map dicing (100*100) ?

Merci d'avance, bon appétit.

Dernière modification par sigdu80 (Wed 12 June 2013 12:03)

Hors ligne

 

#2 Thu 13 June 2013 13:46

Cornet Jérémie
Participant assidu
Lieu: Nouméa
Date d'inscription: 6 Apr 2008
Messages: 229

Re: Question complexité geom

Bonjour,
Le temps de calcul est énorme car les index géométriques (GIST) ne peuvent ici être exploités à fond.
En effet, l'index géométrique est le rectangle englobant de la géométrie. Du coup, vu que tes géométries étaient extrêmement découpées, le rectangle englobant ne permettait pas vraiment de faire un pré-filtrage.

Donc le map dicing est inutile si tes polygones sont classiques (ce qui est généralement le cas pour des couches parcellaires).

Est-ce dû à un grand nombre de points couplé à une grande superficie ?


Non, c'est vraiment du à la forme qui rend l'index géométrique beaucoup moins utile.
Pour répérer les polygones qui risquent de poser problème, un critère sur la surface et un critère sur la forme (le rapport périmètre/racine(surface) par exemple).

Hors ligne

 

#3 Thu 13 June 2013 18:15

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Re: Question complexité geom

Bonjour Jérémie,

D'accord, merci.
Les polygones sont parfois atypiques car ce sont des geom d'informations, pas forcément des couches parcellaires.

Voilà, cela me permet de détecter si je dois faire un map dicing sur certains polygones !
Par exemple, le geom qui m'a posé problème dans l'autre sujet a un rapport de 304 !
D'autre sont entre 70 et 20, ce qui doit être acceptable non ?

As-tu une idée d'un seuil limite du rapport "périmètre/racine carrée(surface)" au dessus duquel c'est aberrant et du coup qu'il faudrait faire un map dicing ?

Bonne fin de journée, merci encore.

Hors ligne

 

#4 Fri 14 June 2013 19:40

Cornet Jérémie
Participant assidu
Lieu: Nouméa
Date d'inscription: 6 Apr 2008
Messages: 229

Re: Question complexité geom

Tu as des choses intéressantes sur les indices de forme dans cette discussion :
http://georezo.net/forum/viewtopic.php?id=61969

Sinon, je viens de penser à un truc tout bête mais puisque tu cherches en fait à caractériser l'efficacité de l'index géométrique, un bête rapport

Code:

surface du polygone / surface du rectangle englobant

te donnera un indice entre 0 et 1 immédiatement compréhensible.
Cependant, n'oublie pas de prendre en compte la surface qui a aussi son importance. Un polygone très complexe mais "tout petit" par rapport aux polygones à intersecter ne rallongera pas trop le calcul (puisque l'index permettra de préfiltrer efficacement).

Dernière modification par Cornet Jérémie (Fri 14 June 2013 19:43)

Hors ligne

 

#5 Mon 17 June 2013 18:10

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Re: Question complexité geom

Bonjour Jérémie,

merci encore.


Chaque formule donne des indications intéressantes et différentes.

1) bien noté pour l'indice de concavité : surface(geom) / surface(bbox(geom)).
Cette indice permet de voir si la bbox fait gagner du temps dans le pré-filtrage.

2) périmètre(geom) / racineCarré(surface(geom))
Cette formule met en avant des geoms très étendus mais ayant peu de surface.


Une 3ème chose auquel je pense serait de voir les plus grandes aires des bbox des geoms.

Un map dicing serait à adopter pour les plus grandes aires de bbox des geoms qui ont leur indice de la formule du point 2), assez élevé  (encore faut-il que ces geoms-là soit répartie sur plus qu'une case de la grille pour que le map dicing apporte quelque chose évidemment).
Après, faire du cas par cas en utilisant le point 2) et surtout le point 1).


Que penses-tu de cela ?

Dernière modification par sigdu80 (Mon 17 June 2013 18:20)

Hors ligne

 

Pied de page des forums

Powered by FluxBB