Pages: 1
- Sujet précédent - [oracle] recupérer les coordonnées du centoide d'un polygone - Sujet suivant
#1 Tue 29 June 2010 16:41
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
[oracle] recupérer les coordonnées du centoide d'un polygone
Bonjour,
j'ai besoin de récupérer les coordonnées x et y du centroide d'un polygone sous oracle locator.
j'arrive avec la requête suivante :
select
SDO_GEOM.SDO_POINTONSURFACE(h.GEOMETRIE,1)
from HAB_PHASE h
where h.IDENTIFIANT_PROJET=190706
à trouver le centroide (enfin le point toujours à l'intérieur du polygone) mais je ne récupère pas de texte mais un objet point oracle que je n'arrive pas à retraiter pour avoir uniquement les coordonnées x et y.
quelqu'un sait-il comment je peux faire pour obtenir uniquement le x et le y dans un format texte (ou numérique) ?
Merci d'avance et bonne fin de journée
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne
#2 Tue 29 June 2010 17:46
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: [oracle] recupérer les coordonnées du centoide d'un polygone
Bonjour,
j'ai besoin de récupérer les coordonnées x et y du centroide d'un polygone sous oracle locator.
j'arrive avec la requête suivante :
select
SDO_GEOM.SDO_POINTONSURFACE(h.GEOMETRIE,1)
from HAB_PHASE h
where h.IDENTIFIANT_PROJET=190706
à trouver le centroide (enfin le point toujours à l'intérieur du polygone) mais je ne récupère pas de texte mais un objet point oracle que je n'arrive pas à retraiter pour avoir uniquement les coordonnées x et y.
quelqu'un sait-il comment je peux faire pour obtenir uniquement le x et le y dans un format texte (ou numérique) ?
Merci d'avance et bonne fin de journée
Bonsoir
Attention, pointOnSurface n'est pas le centroid. souvent oui, mais pas pour les polygones convexes dont le centroid est a l'exterieur de la surface !
Pour avoir les coordonnées x et y, il faut utiliser les accesseurs du type Point, renvoyé par pointOnSurface, puis les accesseurs X, Y (Z) pour avoir la valeur sous forme de nombre:
select
SDO_GEOM.SDO_POINTONSURFACE(h.GEOMETRIE,1).sdo_point.x as x,
SDO_GEOM.SDO_POINTONSURFACE(h.GEOMETRIE,1).sdo_point.x as y,
from HAB_PHASE h
where h.IDENTIFIANT_PROJET=190706
Une sous requete permettrait de ne calculer le point qu'une fois (bien que le planner oracle doive optimiser cela)
Nicolas
Hors ligne
#3 Tue 29 June 2010 17:49
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Re: [oracle] recupérer les coordonnées du centoide d'un polygone
Merci beaucoup de la reponse, ca fonctione tout comme je sohaitais
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne
#4 Fri 02 July 2010 11:02
- saispasfau
- Participant actif
- Date d'inscription: 28 Nov 2006
- Messages: 62
Re: [oracle] recupérer les coordonnées du centoide d'un polygone
Bonjour.
Voici la syntaxe pour récupérer les coordonnées du centroïde du polygone :
Code:
select sdo_geom.sdo_centroid(h.geometrie,m.diminfo).sdo_point.x, sdo_geom.sdo_centroid(h.geometrie,m.diminfo).sdo_point.y from HAB_PHASE h, user_sdo_geom_metadata m where m.table_name = 'HAB_PHASE' and h.IDENTIFIANT_PROJET=190706 ;
A+
Saispasfau.
Hors ligne
Pages: 1
- Sujet précédent - [oracle] recupérer les coordonnées du centoide d'un polygone - Sujet suivant