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

#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: 1538

Re: [oracle] recupérer les coordonnées du centoide d'un polygone

xav a écrit:

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

 

Pied de page des forums

Powered by FluxBB