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 27 October 2010 19:55

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

[MapServer] Récuperer les valeurs d'un attribut d'un shp

Bonjour à tous

Je cherche à savoir s'il est possible de récupérer les valeurs d'un attribut d'une couche pour un extent donné grâce à un Mapscript sous PHP Mapserver  (en utilisant itemNquery par exemple)? Et ceci sans passer par une base de données.


  Par exemple, voici un exemple des attribut de ma couche zonage.shp :
ID      ZONE     Geometry
1          AT           ...
2          VTR         ...
3          KM           ...
4          ZED         ...
...

Il faut considerer que je ne connais pas les valeurs de ZONE (AT, VTR,...), car je veux faire une procédure qui me permet de réaliser ceci sur n'importe quel shp. Par contre, je sais qu'il y a un identifiant ID (1,2,3,...).
Je cherche à faire une requête géographique me permettant de connaitre la liste des ZONE qui font parties de la zone d'intérêt.
par exemple avoir un $selection avec les  valeurs [AT;KM].

Il n'y a pas de clic sur la carte ou quoi que ce soit. Je lance mon script et défini la couche, l'extent, et les données nécessaires en entrée.

J'ai essayé de faire du ITEMNQUERY avec qitem=ID et qstring=1 et l'extent souhaité, j'arrive à récupérer la valeur de [ZONE] (AT).
Mais je récupère ça de manière unitaire dans un template à part, ce qui rend difficile de faire des itérations.
De plus, la requête est très longue...

Quelqu'un aurait une (autre/bonne) idée?

Thomas

Hors ligne

 

#2 Thu 28 October 2010 09:19

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

Re: [MapServer] Récuperer les valeurs d'un attribut d'un shp

Bonjour,

Tu charges le mapfile dans lequel il y a une couche zonage dont les données pointes vers les données zonage.shp. Tu charges cette couche. Tu peux faire une boucle sur les features avec getFeature() pour récupérer les features. Tu as aussi getItems() qui pourrait te servir mais la description est trop flou.

Si tu utilises $shape = $layer->getFeature() tu peux utiliser la méthode $shape->values["ZONE"];

Voilà grosso modo.

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 Thu 28 October 2010 11:30

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

Re: [MapServer] Récuperer les valeurs d'un attribut d'un shp

Merci Yves.

Test en cours...

Dernière modification par thomas.milon (Thu 28 October 2010 11:31)

Hors ligne

 

#4 Thu 28 October 2010 11:50

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

Re: [MapServer] Récuperer les valeurs d'un attribut d'un shp

La fonction getfeature pourrait bien être utile en effet. Mais il faut définir un ShapeIndex -> à quoi cela correspond? Est-ce un index automatique généré par mapServer?

Je crée mes objet $map, $layer,... grâce à mon mapscript. Je le charge (draw) et le sauve.
Après quoi, j'ai testé de rentrer :
$layer->open
$shape = $layer->getFeature();
$shape->values["ZONE"];
echo $layer;

Mais il m'envoie un Warning : Wrong parameter count for ms_layer_obj::getfeature()


alors je teste en ajoutant un paramètre
$shape = $layer->getFeature(1);
ou $shape = $layer->getFeature("1");
ou $shape = $layer->getFeature("ZONE");
ou $shape = $layer->getFeature("NomDuShape");

Bien sûr, il aime pas et me balance une erreur posgis (msPOSTGISLayerGetShape(): msPOSTGISLayerGetShape called on unopened layer (layerinfo = NULL)) ?????
NB : pour définir l'extent, je fais une requête sur une base posgis . Sans le getfeature, la requête passe sans problème.

Hors ligne

 

#5 Fri 05 November 2010 09:39

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

Re: [MapServer] Récuperer les valeurs d'un attribut d'un shp

Finalement, j'ai entré les shp sous posgis et utilisé du SQL.

Hors ligne

 

Pied de page des forums

Powered by FluxBB