Pages: 1
- Sujet précédent - [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs - Sujet suivant
#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
Merci d'avance !
Hors ligne
#2 Mon 20 July 2009 11:44
Re: [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs
Bonjour,
Utiliser un kml dans ce cas est une erreur 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
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
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.
MapServer est ce que j'appel un serveur carto
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.
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
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
Hors ligne
#7 Mon 20 July 2009 14:23
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
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 ?
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
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
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
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
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
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
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&SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=poly&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&SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=poly&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
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
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"), 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
Pages: 1
- Sujet précédent - [OpenLayers] Stratégie d'affichage pour un grand nombre de vecteurs - Sujet suivant