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

GEODATA DAYS 2024

#1 Wed 03 November 2010 09:38

thomas.milon
Participant occasionnel
Date d'inscription: 9 Mar 2008
Messages: 13

[WMS - WFS] Récupération des info XML issus d'un getcapabilities

Bonjour à tous,

Je voulais savoir s'il existe un script permettant de récupérer les noeud XML issus d'un getcapabilities pour une couche wms ou wfs?

L'objectif est de pouvoir récupérer le nombre et le nom des couches disponibles.
ex : http://ws.carmencarto.fr/WMS/105/ONF_Fo … sion=1.0.0

J'utilise du php mapscript et ne suis pas un expert en php (ni en Mapserver ^^)

J'ai testé avec simpleXML et DOMdocument, mais n'ai pas réussi grand chose. Tout les exemples que j'ai trouvé concernant ces "outils" sont sur des fichiers xml et non sur des flux issus d'un webservice.
Une autre piste, cURL. Quelqu'un l'a-t-il testé?

Merci d'avance

Thomas

Hors ligne

 

#2 Wed 03 November 2010 09:59

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: [WMS - WFS] Récupération des info XML issus d'un getcapabilities

Bonjour,

Les GetCapabilities sont des fichiers XML donc tu dois pouvoir passer par simpleXML et DOMdocument. Il me semble l'avoir fait dans une autre vie avec simpleXML en PHP.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Wed 03 November 2010 10:47

thomas.milon
Participant occasionnel
Date d'inscription: 9 Mar 2008
Messages: 13

Re: [WMS - WFS] Récupération des info XML issus d'un getcapabilities

Ok, je vais tester de nouveau.

Si vous avez d'autres pistes, n'hésitez pas ^^!

Merci

Hors ligne

 

#4 Fri 05 November 2010 09:42

thomas.milon
Participant occasionnel
Date d'inscription: 9 Mar 2008
Messages: 13

Re: [WMS - WFS] Récupération des info XML issus d'un getcapabilities

Effectivement, avec simplexml, j'ai commencé à avoir quelques résultats.

un début de script (fait pour le rss normalement)

Code:

  try{  
       if(!@$fluxrss=simplexml_load_file('http://cartorisque.prim.net/wms/france?request=getcapabilities&service=wms&version=1.0.0')){  
           throw new Exception('Flux introuvable');  
       }  
                  //code à venir  
      if(empty($fluxrss->Service->Name))  
       throw new Exception('Flux invalide');  
       
    echo '<h3>'.$fluxrss->Service->Name.'</h3>  
   <p>'.$fluxrss->Service->Title.'</p>';
   
    
         $i = 0;  
         $nb_affichage = 10;  
         echo '<ul>';  
         foreach($fluxrss->Capability->Layer->Layer->Layer->Name as $item){  
             echo '<li>'.(string)$item.'</li>';  
            if(++$i>=$nb_affichage)  
                break;  
        }  
         echo '</ul>';  
    
    }
    
   catch(Exception $e){  
       echo $e->getMessage();  
   }

ça me donne la première couche pour l'instant.
Affaire à suivre

Hors ligne

 

#5 Fri 05 November 2010 11:41

tiolebucheron
Participant actif
Lieu: Rouen
Date d'inscription: 26 Mar 2006
Messages: 147

Re: [WMS - WFS] Récupération des info XML issus d'un getcapabilities

Bonjour
Je te propose ce que j'ai fait
Cette méthode permet de récupérer dans le xml ($content) le contenu des sous noeuds. C'est à adapter.
bon courage

tio

Code:

function get_info_xml($content,$typename){
    $res = array();
    $info = array();
    $dom = new DOMDocument( "1.0", "ISO-8859-15" );
    $dom->preserveWhiteSpace = FALSE;
    $dom->loadXML($content);

    // Suppression du nom de la couche, de la forme géographique
    foreach ($dom->getElementsByTagNameNS('http://mapserver.gis.umn.edu/mapserver', '*') as $element) {
        if (($element->nodeType == XML_ELEMENT_NODE) && ( $element->localName != $typename ) ){
            if ($element->localName=="msGeometry"){
                $res[$element->localName] =$dom->saveXML($element);
            }
            else {
                $res[$element->localName] = $element->nodeValue;
            }
        }
        if (( $element->localName == $typename ) && (!empty($res))) {
            array_push($info,$res);
        }
    }
    if (!empty($res)) {array_push($info,$res);}
    return $info;
}

Hors ligne

 

Pied de page des forums

Powered by FluxBB