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 Mon 20 July 2009 11:20

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

[OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

Je tente d'afficher sur ma carte l'emprise de toutes les dalles SRTM3, c'est-Ă -dire des carrĂ©s d'un degrĂ© par un degrĂ© Ă  l'Ă©chelle du globe. Pour ça j'ai créé un fichier kml qui est assez volumineux (4,4 Mo). Je n'ai pas besoin d'afficher cette couche sur une vue globale mais mĂȘme lorsque je ne l'affiche sur une zone relativement restreinte, c'est trĂšs lent (je pense qu'il charge beaucoup plus que la zone en question).

Bref je dĂ©bute un peu et je voudrais savoir si il y a une meilleure stratĂ©gie Ă  adopter pour obtenir le rĂ©sultat que j'attends avec de bonnes performances. Je ne sais pas si on peut faire le mĂȘme genre de chose qu'avec des tuiles raster ou si il faut que j'affiche mon vecteur autrement ou encore si utiliser un fichier kml est une erreur.

Voici mon code :

Code:

var map;
function init()
{
    var options = {resolutions: [1.40625, 0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125]};
    
    map = new OpenLayers.Map('map', options);
    
    var wms = new OpenLayers.Layer.WMS("OpenLayers WMS",
        "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'
        });
    
    var test_kml = new OpenLayers.Layer.Vector("test_kml", {
        maxResolution: 0.17578125, minResolution: 0.0439453125,
        strategies: [new OpenLayers.Strategy.BBOX()],
        protocol: new OpenLayers.Protocol.HTTP({ url: "./test.kml",
            format: new OpenLayers.Format.KML({format: OpenLayers.Format.KML})})});
    
    map.addLayers([wms, test_kml]);
    
    map.zoomToMaxExtent();
    
    map.addControl(new OpenLayers.Control.LayerSwitcher());
}

J'attends vos suggestions smile
Merci d'avance !

Hors ligne

 

#2 Mon 20 July 2009 11:44

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

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

Utiliser un kml dans ce cas est une erreur smile En effet OpenLayer va charger tout le fichier  puis filtrer les donnĂ©es. Dans ton cas il vaut mieux utiliser un service WFS oĂč tu pourras filtrer les donnĂ©es cĂŽtĂ© serveur.

Autre solution, appeler un script php qui va renvoyer les donnĂ©es au format GeoJSON (plus facile et certainement plus efficace que d'Ă©crire un fichier kml Ă  la volĂ©) en ayant pris soin de filtrer les donnĂ©es. Si tes donnĂ©es sont dans une base spatiale cela sera plus simple grĂące Ă  une requĂȘte spatiale.

Tout dépend si tu as un serveur cartographique ou non wink

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 Mon 20 July 2009 13:45

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Merci pour ta réponse !

Je viens d'aller voir ce qu'est un service WFS et le GeoJSON. Comment mettre en place ces solutions ? Quand tu parles de serveur cartographique, c'est un serveur sur lequel est installé une solution qui permet de gérer des données géographiques en plus des services traditionnels, c'est ça ? Je n'ai que Mapserver de compilé sur mon serveur pour ce qui est des données géo.

Bref je suis sûr que ce serait beaucoup mieux de filtrer les données mais pour l'instant je ne vois pas comment m'y prendre.

Pour ce qui est de WFS, dois-je installer quelque chose pour m'en servir avec OpenLayers ?

Pour le format GeoJSON, je n'ai pas trÚs bien compris l'idée. Mon fichier kml n'est pas généré à la volée, il est déjà créé et est lu par OpenLayers. Du coup je ne suis pas sûr de saisir.

Hors ligne

 

#4 Mon 20 July 2009 13:45

vdb
Participant actif
Lieu: Chambéry
Date d'inscription: 21 Jun 2006
Messages: 56

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

Si le but est simplement d'afficher ces emprises, une layer WMS est
idéale. Cela implique d'avoir un serveur carto (mapserver, geoserver,
mapguide ...).
S'il faut également récupérer de l'information au survol ou au clic
sur les emprises, le plus simple est probablement de passer par des
requetes WMS getFeatureInfo (cf le controle du mĂȘme nom dans
Openlayers).

Il existe également d'autres solutions impliquant des composants
serveurs tels que MapFish, ou un serveur WFS ...

Cordialement,
F.

Hors ligne

 

#5 Mon 20 July 2009 13:51

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

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

scpsc a écrit:

Merci pour ta réponse !

Je viens d'aller voir ce qu'est un service WFS et le GeoJSON. Comment mettre en place ces solutions ? Quand tu parles de serveur cartographique, c'est un serveur sur lequel est installé une solution qui permet de gérer des données géographiques en plus des services traditionnels, c'est ça ? Je n'ai que Mapserver de compilé sur mon serveur pour ce qui est des données géo.


MapServer est ce que j'appel un serveur carto wink

scpsc a écrit:

Bref je suis sûr que ce serait beaucoup mieux de filtrer les données mais pour l'instant je ne vois pas comment m'y prendre.

Pour ce qui est de WFS, dois-je installer quelque chose pour m'en servir avec OpenLayers ?


Non WFS est un format d'échange.

scpsc a écrit:

Pour le format GeoJSON, je n'ai pas trÚs bien compris l'idée. Mon fichier kml n'est pas généré à la volée, il est déjà créé et est lu par OpenLayers. Du coup je ne suis pas sûr de saisir.


GeoJSON est "comme" le WFS  : c'est un format d'Ă©change. Mais structurĂ© diffĂ©remment. Je te conseil d'utiliser MapServer en tant que serveur WFS si tes donnĂ©es Ă  envoyer ne sont pas trop importante puisqu'il semble que tu ais tout ce dont il faut wink

La doc de MapServer t'expliquera comment configurer MapServer en tant que service WFS !

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

 

#6 Mon 20 July 2009 14:06

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Je commence Ă  comprendre :p

Par contre, par rapport à ce que suggÚre vdb, d'aprÚs ce que je comprends en effectuant quelques recherches, WMS permet d'obtenir une image. Du coup est-ce que c'est l'étape suivante qui me permettra d'afficher mes infos filtrées par le serveur WFS ou alors ce sont deux solutions différentes ?

Enfin je comprendrai sûrement mieux aprÚs avoir lu la doc.

Merci beaucoup, je reviens vers vous en cas de problĂšme wink

Hors ligne

 

#7 Mon 20 July 2009 14:23

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

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

WFS et WMS sont deux services différents mais complémentaire. WMS vous obtenez une carte, WFS vous obtenez les données. L'avantage du WMS est que vous pouvez gérer et afficher un grand nombre de données. L'avantage avec le WFS est que vous pouvez gérer la sémiologie cÎté client et faire des filtres à la volée.

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

 

#8 Wed 22 July 2009 16:54

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

Je suis en train de tester pour comprendre comment me servir d'un serveur WFS et je bloque.
J'ai compilé mapserver 5.4.1, avec j'espÚre tout ce qu'il faut pour que ça fonctionne en tant que serveur WFS.

Voici mon mapfile :

Code:

MAP
    NAME "WFS-server"
    SIZE 774 387
    EXTENT -180 -89.9778 179.9778 90
    UNITS DD
    SHAPEPATH "data"
    IMAGECOLOR 255 255 255
    
    WEB
        IMAGEPATH "/var/www/html/tmp"
        IMAGEURL "/tmp/"
        METADATA
            "wfs_title" "WFS server"
            "wfs_onlineresource" "http://*adresse_IP*/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&"
            "wfs-srs" "epsg:4326"
        END
    END
    
    PROJECTION
        "init=epsg:4326"
    END
    
    LAYER
            NAME ASTER_GDEM
        STATUS ON
        METADATA
            "wfs_title"        "aster_gdem"
            "gml_featureid"        "ID"
            "gml_include_items"    "all"
        END
        PROJECTION
            "init=epsg:4326"
        END
        DUMP TRUE
            TYPE POLYGON
        DATA aster_gdem
            CLASS
            COLOR 50 50 50
            OUTLINECOLOR 0 0 0
            END
    END # layer
END # map

Il interroge des shapefiles (aster_gdem.*) dans le répertoire data/.

Et voici le code de ma page web :

Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>test WFS</title>
    <script src="./OpenLayers-2.8/OpenLayers.js"></script>
    <script type="text/javascript">
        var map;
        function init()
        {
            var options = {resolutions: [1.40625, 0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125],
                controls: [new OpenLayers.Control.PanZoom(),new OpenLayers.Control.LayerSwitcher()]
                };
            
            map = new OpenLayers.Map('map', options);
            
            var wms = new OpenLayers.Layer.WMS("OpenLayers WMS",
                "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'
                });
            
            var test_WFS = new OpenLayers.Layer.WFS("test WFS",
                "http://*adresse_IP*/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&",
                {typename: 'aster_gdem'},
                {}
                );
            
            map.addLayers([wms, test_WFS]);
            
            map.zoomToMaxExtent();
        }
    </script>
</head>
<body onload="init()">
    <div id="map" style="width: 512px;height: 256px;border: 1px solid #d1d1d1;"></div>
</body>
</html>

Je me suis inspiré du lien que vous avez fourni ainsi que d'un tuto que j'ai trouvé ici. Je n'ai pas compris quoi mettre exactement pour l'option "typename" de ma couche WFS.

Malheureusement mes vecteurs ne s'affichent pas et je progresse tout doucement. Votre aide me ferais sans doute gagner beaucoup de temps.

Lorsque je teste directement l'url "http://*adresse_IP*/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&", j'ai un message d'erreur qui pourrait expliquer que ça ne marche pas :

msProcessProjection(): Projection library error. no system list, errno: 2

J'ai vérifié que PROJ.4 était bien installée, c'est le cas (je trouve bien libproj.*) et un mapserv_5.4.1 -v me donne :

MapServer version 5.4.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=THREADS INPUT=TIFF INPUT=EPPL7 INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE

Merci d'avance !

Hors ligne

 

#9 Wed 22 July 2009 17:39

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

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

J'ai eu le mĂȘme problĂšme pour un serveur WMS. Je me demande si ce n'est pas un bug de MapServer. Des dev de MS sont ils dans les parages pour confirmer ? smile

Merci,

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

 

#10 Thu 23 July 2009 14:23

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

J'ai enfin compris comment résoudre le problÚme avec PROJ.4 : en plus de la librairie libproj utilisée pour compiler mapserver, il faut installer le package proj pour avoir tout ce qu'il faut, c'est-à-dire quelques fichiers qui sont installés dans /usr/share/proj/ dont un fichier epsg qui permet à MapServer de comprendre la nomenclature epsg.

J'ai maintenant un autre message d'erreur wink

mapserv(): Web application error. Traditional BROWSE mode requires a TEMPLATE in the WEB section, but none was provided.

Pourtant il n'y a pas "TEMPLATE" dans le tuto que j'ai lu ni sur l'exemple du site officiel. J'ai essayé de trafiquer un faux TEMPLATE mais ça n'affiche rien d'intéressant, pas de XML à l'horizon sad

Bref il y a encore quelque chose qui m'échappe !

Hors ligne

 

#11 Wed 19 August 2009 13:13

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Je me permets de relancer la communauté du forum : quelqu'un a-t-il une idée qui pourrait m'aider ?

Merci !

Hors ligne

 

#12 Wed 19 August 2009 13:18

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

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

La requĂȘte que tu utilises pour interroger MapServer doit ĂȘtre incorrecte, peux tu la poster ici ?

Généralement, ce message apparait quand tu interroges MapServer en mode CGI sans avoir founie les paramÚtres nécessaire. Par contre ce n'est pas ce que tu souhaites.

Merci,

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

 

#13 Wed 19 August 2009 13:28

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

Voici la requĂȘte que j'utilise : http://adresse-ip/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&

Merci !

Hors ligne

 

#14 Wed 19 August 2009 13:37

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

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Ben voilà la réponse est là, tu n'envoies aucun paramÚtres. Si tu veux interroger ton serveur WFS, il faut passer quelques paramÚtres :

http://adresse-ip/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities

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

 

#15 Wed 19 August 2009 13:39

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

En effet, ça fonctionne mieux comme ça wink

Il me reste à voir comment filtrer et afficher le secteur qui m'intéresse sans devoir charger toute ma couche vecteur.

Merci beaucoup pour ton aide !

Hors ligne

 

#16 Wed 19 August 2009 13:49

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

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

VoilĂ  la liste des paramĂštres :

Code:

REQUEST=GetFeature&TYPENAME=maCouche&FILTER=XXXXBBOX=000,000,000,000

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

 

#17 Thu 20 August 2009 13:13

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

J'avance petit Ă  petit et j'ai Ă  nouveau une question !

Comme je n'obtenais pas l'affichage de mes vecteurs en faisant la requĂȘte WFS au sein de mon code OpenLayers, je me suis mis Ă  tester le flux XML qui est gĂ©nĂ©rĂ© et je me suis rendu compte que le format n'allait pas.

La requĂȘte est la suivante : http://adresse-ip/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=poly&BBOX=40,10,70,30

J'ai un peu modifié ce que tu m'as fourni, Yves, parce que je ne trouvais pas comment utiliser FILTER. Voici le résultat :

Code:

<?xml version="1.0" encoding="ISO-8859-1"?>
<wfs:FeatureCollection xmlns:ms="http://mapserver.gis.umn.edu/mapserver" xmlns:gml="http://www.opengis.net/gml" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mapserver.gis.umn.edu/mapserver http://adresse-ip/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&amp;SERVICE=WFS&amp;VERSION=1.1.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=poly&amp;OUTPUTFORMAT=text/xml; subtype=gml/3.1.1  http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
      <gml:boundedBy>
          <gml:Envelope srsName="EPSG:4326">
              <gml:lowerCorner>54.773809 16.453694</gml:lowerCorner>
              <gml:upperCorner>62.669312 22.333324</gml:upperCorner>
          </gml:Envelope>
      </gml:boundedBy>
    <gml:featureMember>
      <ms:POLY gml:id="POLY.1">
        <gml:boundedBy>
            <gml:Envelope srsName="EPSG:4326">
                <gml:lowerCorner>54.773809 16.453694</gml:lowerCorner>
                <gml:upperCorner>62.669312 22.333324</gml:upperCorner>
            </gml:Envelope>
        </gml:boundedBy>
        <ms:msGeometry>
          <gml:Polygon srsName="EPSG:4326">
            <gml:exterior>
              <gml:LinearRing>
                <gml:posList srsDimension="2">56.033730 21.577371 62.669312 22.333324 62.585317 17.125652 56.873677 16.453694 54.773809 19.729488 56.033730 21.577371 </gml:posList>
              </gml:LinearRing>
            </gml:exterior>
          </gml:Polygon>
        </ms:msGeometry>
        <ms:ID>1</ms:ID>
      </ms:POLY>
    </gml:featureMember>
</wfs:FeatureCollection>

Or je ne parviens pas à afficher ce fichier XML avec OpenLayers en créant une couche toute simple :
var test_XML = new OpenLayers.Layer.GML("test_XML", "poly.xml");

Par contre, j'y parviens avec un fichier que j'ai trouvĂ© sur le net. J'ai donc adaptĂ© mon fichier XML en prenant comme modĂšle ce fichier et Ă  ce moment-lĂ  ma couche s'affiche bien, donc il me semble que j'ai un soucis de format. Par contre je ne sais pas si c'est dĂ» Ă  mes donnĂ©es initiales (je teste avec des shapefiles créées avec MAPublisher ou ENVI) ou alors Ă  ma requĂȘte ou encore au serveur WFS (ce qui m'Ă©tonnerait).

Pour afficher ma couche, j'ai modifié les deux occurences de :

Code:

<gml:Envelope srsName="EPSG:4326">
       <gml:lowerCorner>54.773809 16.453694</gml:lowerCorner>
       <gml:upperCorner>62.669312 22.333324</gml:upperCorner>
</gml:Envelope>

et également :

Code:

<gml:posList srsDimension="2">56.033730 21.577371 62.669312 22.333324 62.585317 17.125652 56.873677 16.453694 54.773809 19.729488 56.033730 21.577371 </gml:posList>

pour obtenir le fichier suivant :

Code:

<?xml version="1.0" encoding="ISO-8859-1"?>
<wfs:FeatureCollection xmlns:ms="http://mapserver.gis.umn.edu/mapserver" xmlns:gml="http://www.opengis.net/gml" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mapserver.gis.umn.edu/mapserver http://adresse-ip/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&amp;SERVICE=WFS&amp;VERSION=1.1.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=poly&amp;OUTPUTFORMAT=text/xml; subtype=gml/3.1.1  http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
      <gml:boundedBy>
          <gml:Envelope srsName="EPSG:4326">
              <gml:coordinates>54.773809,16.453694 62.669312,22.333324</gml:coordinates>
          </gml:Envelope>
      </gml:boundedBy>
    <gml:featureMember>
      <ms:POLY gml:id="POLY.1">
        <gml:boundedBy>
            <gml:Envelope srsName="EPSG:4326">
                <gml:coordinates>54.773809,16.453694 62.669312,22.333324</gml:coordinates>
            </gml:Envelope>
        </gml:boundedBy>
        <ms:msGeometry>
          <gml:Polygon srsName="EPSG:4326">
            <gml:exterior>
              <gml:LinearRing>
                <gml:coordinates>56.033730,21.577371 62.669312,22.333324 62.585317,17.125652 56.873677,16.453694 54.773809,19.729488 56.033730,21.577371 </gml:coordinates>
              </gml:LinearRing>
            </gml:exterior>
          </gml:Polygon>
        </ms:msGeometry>
        <ms:ID>1</ms:ID>
      </ms:POLY>
    </gml:featureMember>
</wfs:FeatureCollection>

Comment faire pour que mon flux généré utilise <gml:coordinates> plutÎt que <gml:lowerCorner>, <gml:upperCorner> et <gml:posList srsDimension="2"> ?

Merci !

Dernière modification par scpsc (Thu 20 August 2009 13:15)

Hors ligne

 

#18 Thu 20 August 2009 13:23

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

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

Le paramĂštre FILTER est optionnel, comme BBOX, etc.

Tu utilises un constructeur GML pour une source en WFS, c'est donc normal que tu n'obtiennes pas ce que je tu veux wink

Utilises le constructeur WFS plutĂŽt !

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

 

#19 Thu 20 August 2009 13:33

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Merci pour ta réponse et ton aide précieuse !

En utilisant WFS Ă  la place de GML (var test_XML = new OpenLayers.Layer.WFS("test_XML", "poly.xml")wink, j'ai le mĂȘme soucis : si j'importe les donnĂ©es de mon fichier XML initial, rien ne s'affiche mais ça marche avec le fichier modifiĂ©. D'ailleurs les vecteurs s'affichent en ne modifiant que la ligne <gml:posList srsDimension="2">, j'avais modifiĂ© plus que nĂ©cessaire. J'ai tout de mĂȘme l'impression que mon problĂšme vient de lĂ  mais comme je patauge un peu... :p

Dernière modification par scpsc (Thu 20 August 2009 13:33)

Hors ligne

 

#20 Thu 20 August 2009 15:32

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

J'ai trouvĂ© : c'est un problĂšme de version de GML. En explicitant le format dans la requĂȘte, j'obtiens ce que je veux :

http://adresse-ip/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=poly&BBOX=40,10,70,30&OUTPUTFORMAT=GML2


Ceci dit, peut-ĂȘtre aussi que OpenLayers lit le GML3, je vais regarder.

Hors ligne

 

#21 Fri 21 August 2009 10:39

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Bonjour,

Je suis une nouvelle fois coincĂ© : je n'arrive pas Ă  faire fonctionner ma requĂȘte avec OpenLayers. J'ai testĂ© deux solutions trouvĂ©es ici et ici. Dans l'exemple du second lien, il a l'air de manquer quelques "&" et une virgule que j'ai rajoutĂ©s mais sans succĂšs.

Voici mon code OpenLayers au complet :

Code:

var map, wms, test_WFS;
        function init()
        {
            map = new OpenLayers.Map('map', {
                controls: [new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoom(),
                    new OpenLayers.Control.LayerSwitcher()
                    ]
                });
            
            wms = new OpenLayers.Layer.WMS("OpenLayers WMS",
                "http://labs.metacarta.com/wms/vmap0",
                {layers:'basic'
                });
            
//            test_WFS = new OpenLayers.Layer.WFS("test WFS",
//                "http://adresse-ip/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map&",
//                {service:'WFS', version:'1.1.0', request:'GetFeature', bbox:'70,35,75,37', typeName:'aster_gdem', outputFormat:'GML2'},
//                {}
//                );
            
            test_WFS = new OpenLayers.Layer.GML("test WFS", [
                "http://adresse-ip/cgi-bin/mapserv_5.4.1",
                "?map=/var/www/html/WFS_server/test.map",
                "&SERVICE=WFS",
                "&VERSION=1.1.0",
                "&REQUEST=GetFeature",
                "&BBOX=70,35,75,37",
                "&TYPENAME=aster_gdem",
                "&OUTPUTFORMAT=GML2"].join(",")
                );
            
            map.addLayers([wms, test_WFS]);
            
            map.zoomToMaxExtent();
        }

C'est vraiment chaud de trouver de la doc pour rĂ©diger ce genre de requĂȘtes sur le net ! A part quelques exemples comme ceux que j'ai copiĂ©s, je ne trouve rien d'intĂ©ressant


Merci d'avance !

Hors ligne

 

#22 Mon 24 August 2009 12:31

scpsc
Participant occasionnel
Date d'inscription: 6 Jul 2009
Messages: 20

Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs

Ca y est, ça marche ! Je donne la solution, ça peut servir :

Code:

test_WFS = new OpenLayers.Layer.Vector(test WFS", {
    strategies: [new OpenLayers.Strategy.BBOX()],
    protocol: new OpenLayers.Protocol.WFS({
        url: "http://adresse-ip/cgi-bin/mapserv_5.4.1?map=/var/www/html/WFS_server/test.map",
        featureType: "ma_couche",
        featureNS: "http://mapserver.gis.umn.edu/mapserver"
    })
});

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo