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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 04 December 2017 17:32

ceucile
Participant occasionnel
Date d'inscription: 5 Dec 2006
Messages: 48

[Oracle] Fonction spatiale pour repositionner des points trop proches?

Bonjour,

J'ai déjà exploré quelques unes des potentialités qu'offrent certains packages de fonctions spatiales d'Oracle, donc je sais qu'il y a moult possibilités de triturer nos données spatiales!

Mais quelqu'un saurait-il si je peux demander à tous mes objets ponctuels de se décaler s'ils sont à moins d'une certaine distance (spécifiée) les uns des autres?...

Vous remerciant par avance pour toute aide que vous pourriez m'apporter.


Ceucile

Hors ligne

 

#2 Mon 04 December 2017 20:34

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: [Oracle] Fonction spatiale pour repositionner des points trop proches?

ceucile a écrit:

Mais quelqu'un saurait-il si je peux demander à tous mes objets ponctuels de se décaler s'ils sont à moins d'une certaine distance (spécifiée) les uns des autres?...


Oui vous pouvez.

Plus sérieusement, si j'ai bien compris  votre question, et d'une manière très naïve,
je vous conseillerais d'accrocher vos points sur une grille régulière,
avec une taille de cellule égale à la distance minimum.

Dernière modification par tumasgiu (Mon 04 December 2017 20:45)

Hors ligne

 

#3 Tue 05 December 2017 10:02

ceucile
Participant occasionnel
Date d'inscription: 5 Dec 2006
Messages: 48

Re: [Oracle] Fonction spatiale pour repositionner des points trop proches?

C'est quelque chose que je ne maitrise pas du tout mais je vais creuser cette piste, merci beaucoup

Hors ligne

 

#4 Tue 05 December 2017 14:53

ceucile
Participant occasionnel
Date d'inscription: 5 Dec 2006
Messages: 48

Re: [Oracle] Fonction spatiale pour repositionner des points trop proches?

Alors en fait je suis en train de parcourir les différents packages disponibles dans Oracle
https://docs.oracle.com/database/121/SP … m#SPATL180

Et je ne vois rien qui me permettrait de faire quelque chose du style accrocher mes points à une grille. Quelqu'un peut-il m'aider?

Dans cette voie là ou une autre...


Petite précision : le but pour moi est de créer une vue qui me permettrait à l'échelle du 100000ème par exemple de pouvoir visualiser mes points de manière décalée, bien que certains soient positionnés à des adresses trés proches, et je souhaite garder cette précision

Encore merci!

Hors ligne

 

#5 Tue 05 December 2017 15:44

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: [Oracle] Fonction spatiale pour repositionner des points trop proches?

Oui désolé, j'ai réflechi en Postgis.

Apparemment çà n'est pas une fonction native de Oracle SDO.

Il y a peut être cette implémentation qui peut vous servir :
http://www.spatialdbadvisor.com/oracle_ … dvisor.com

Pour ce qui est de conserver la précision, j'ajouterais un champ ponctuel supplémentaire pour pouvoir avoir à la fois le point originel
et une version "simplifiée" pour la visualisation.

Hors ligne

 

#6 Tue 05 December 2017 15:56

ceucile
Participant occasionnel
Date d'inscription: 5 Dec 2006
Messages: 48

Re: [Oracle] Fonction spatiale pour repositionner des points trop proches?

Justement j'étais en train de parcourir ce site...

Je suis tombée la-dessus également
https://spatialdbadvisor.com/oracle_spa … ect-oracle

Difficile pour moi de raccorcher les wagons mais je vais essayer d'en faire qq chose...

Merci beaucoup

Hors ligne

 

#7 Tue 12 December 2017 11:40

ceucile
Participant occasionnel
Date d'inscription: 5 Dec 2006
Messages: 48

Re: [Oracle] Fonction spatiale pour repositionner des points trop proches?

Pour information j'ai réussi à m'en sortir en créant une fonction qui renvoit la géométrie modifiée de l'objet à déplacer s'il est trop proche d'un autre
Elle se compose comme suit

A chaque appel de la fonction sur une géométrie :
1) Détermination d'un curseur qui récupère les points à moins de 300m du point en cours avec la fonction SDO_NN, ordonnés avec leur identifiant
2) Détermination d'un point moyen entre tous ces points avec la fonction SDO_AGGR_CENTROID, autour duquel les points à répartir vont se positionner sur un cercle imaginaire
3) Division du cercle imaginaire de 360° par le nombre de points trouvés pour déterminer l'angle séparant chaque point
4) Boucle sur ce curseur en affectant le bon angle au point en cours (si c'est le 2ème sur une liste de 5 points proches alors l'angle affecté est (360/5)*2=144°
5) Déplacement du point en cours avec la fonction SDO_UTIL.POINT_AT_BEARING sur la base du point moyen trouvé en 2) et de l'angle trouvé en 4)
6) Renvoie de la géométrie issue en point 5)

Merci tout de même pour les pistes, ça m'a permis de bien creuser

Hors ligne

 

#8 Tue 12 December 2017 14:56

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: [Oracle] Fonction spatiale pour repositionner des points trop proches?

Merci de votre retour.

Si un de vos points se trouvent dans deux "nuages" différents, ne risque t'il pas d'apparaitre deux fois ?

Hors ligne

 

#9 Fri 19 January 2018 11:00

ceucile
Participant occasionnel
Date d'inscription: 5 Dec 2006
Messages: 48

Re: [Oracle] Fonction spatiale pour repositionner des points trop proches?

Trés bonne remarque.

J'ai en effet depuis détecté des cas particuliers comme celui-ci, j'essaie en ce moment-même de contourner ces différentes situations
Même souci si 2 points de nuages différents sont décalés, mais qui au bout du compte se retrouvent eux-mêmes trop proches...

Cependant concernant votre interrogation je ne pense pas que ça pose problème car chaque point possède un identifiant, c'est donc le dernier repositionnement qui sera retenu je pense
Je n'ai pas le cas dans mon jeu de données mais je vais tester

Dernière modification par ceucile (Fri 19 January 2018 11:07)

Hors ligne

 

Pied de page des forums

Powered by FluxBB