Pages: 1
- Sujet précédent - [Oracle] Fonction spatiale pour repositionner des points trop proches? - Sujet suivant
#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: 1159
Re: [Oracle] Fonction spatiale pour repositionner des points trop proches?
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: 1159
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: 1159
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
Pages: 1
- Sujet précédent - [Oracle] Fonction spatiale pour repositionner des points trop proches? - Sujet suivant