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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 30 May 2012 11:33

vlad
Participant occasionnel
Date d'inscription: 7 Nov 2011
Messages: 28

Openlayers, geoserver, postgis

Bonjour,

Parfait débutant dans le monde de la géomatique , je souhaite réaliser un projet de carto en ligne.
La collectivité travaille avec des shape. Personnellement, j'ai testé geoserver, j'ai vu comment ajouté la couche, modifié le sld et toute la base mais j'ai vu qu'il y avait la possibilité de mettre des calques sur openlayers afin d'afficher différentes informations.

Ma question est: Faut-il mettre les couches shape dans une base de données genre postgis pour réaliser ceci ou cela peut-il être fait à partir des couches shape? Sachant que je suis le seul à manipuler les logiciels carto et que je ne suis pas doué en langage de programmation.

Merci d'avance pour la réponse même si la question est stupide wink


Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD

Hors ligne

 

#2 Wed 30 May 2012 13:36

Alexandre David
Participant occasionnel
Lieu: Saint-Etienne
Date d'inscription: 27 Sep 2011
Messages: 16

Re: Openlayers, geoserver, postgis

Bonjour,

Vous pouvez directement importer vos shapes dans Geoserver sans passer par une BD.

AD

Hors ligne

 

#3 Wed 30 May 2012 14:04

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Openlayers, geoserver, postgis

Il n'y a pas de questions stupides ! C'est même grâce à des questions comme celle là que d'autres débutants vont progresser wink

Hors ligne

 

#4 Wed 30 May 2012 14:04

vlad
Participant occasionnel
Date d'inscription: 7 Nov 2011
Messages: 28

Re: Openlayers, geoserver, postgis

Bonjour,

En effet, je peux importer directement les shape, ça pas de problèmes, je l'ai déjà réalisé, ma question portait sur l'utilisation de calques dans l'affichage openlayers. A savoir si cette utilisation était limité par l'utilisation d'une base de données ou pas.

Si vous savez comment avoir ces différents calques, pouvez vous me l'indiquer, s'il vous plait.

Merci


Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD

Hors ligne

 

#5 Wed 30 May 2012 14:16

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

Re: Openlayers, geoserver, postgis

Bonjour,

Il y a deux cas où l'on doit placer ses données dans une base de données au lieu du format fichier (comme le shapefile) :
1. on édite la données (à plusieurs)
2. on a un jeu de données de gros volume et dans ce cas l'accès à la données stocké dans nue BdD est plus rapide.

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 Wed 30 May 2012 15:02

vlad
Participant occasionnel
Date d'inscription: 7 Nov 2011
Messages: 28

Re: Openlayers, geoserver, postgis

Bonjour,

Donc il n'est pas utile dans créer une vu que je suis seul à bosser dessus et que je ne fais que des tests.

Pour les calques je suppose que l'on peut avoir ça avec un code python/ogc en demandant l'affichage de plusieurs couches.
Mon but étant de créer une carte où je peux choisir d'activer ou désactiver les couches tout en ayant créer au préalable le sld lié à chaque couche.

Je ne pense pas que le WFS soit nécessaire ici, le WMS y répondant.

Merci


Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD

Hors ligne

 

#7 Wed 30 May 2012 15:12

Alexandre David
Participant occasionnel
Lieu: Saint-Etienne
Date d'inscription: 27 Sep 2011
Messages: 16

Re: Openlayers, geoserver, postgis

Regardez du coté de l'API Open-Layer.

http://openlayers.org/dev/examples/lite.html

Cet exemple permet de charger un WMS sur l'API.
Si c'est ce qu'il vous faut, copiez-collez le code source sur un éditeur de texte (Notepad++) et remplacez le lien http de

Code:

layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                    "http://vmap0.tiles.osgeo.org/wms/vmap0",
                    {layers: 'basic'} );

par le lien de votre page Geoserver correspondant à l'affichage de votre shape.

Si ce n'est pas le bon exemple, regardez toujours sur http://openlayers.org/dev/examples/ quelque chose qui peut se rapprocher de votre besoin.


Cordialement,

AD

Hors ligne

 

#8 Wed 30 May 2012 15:41

vlad
Participant occasionnel
Date d'inscription: 7 Nov 2011
Messages: 28

Re: Openlayers, geoserver, postgis

J'ai testé votre lien et j'ai trouvé un exemple de ce que je voulais: http://openlayers.org/dev/examples/SLDSelect.html

Ma question se porte maintenant sur un aspect technique qui peut vous paraitre simple. Ce code est à insérer où? Dans le sld? Sur une page web créé exprès pour cette carte?

Je voudrais un fond qui ne bouge pas et pleins de calques que l'on peut enlever grâce à de simples boutons radios. (il me semble que ces boutons nécessitent une requête à une base de données et donc postgis :s)

J'avoue que je m’emmêle les pinceaux avec tout ça.

Merci,

Vlad


Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD

Hors ligne

 

#9 Wed 30 May 2012 15:56

Alexandre David
Participant occasionnel
Lieu: Saint-Etienne
Date d'inscription: 27 Sep 2011
Messages: 16

Re: Openlayers, geoserver, postgis

Geoserver n'est utilisé ici que comme endroit pour stocker vos layers à afficher sur votre application.
Le code est donc indépendant du serveur cartographique et peut être stocké à n'importe quel endroit sur votre machine.
Vous faites simplement appelle à vos couches et à l'API Open-Layer sur votre page wab.

Concernant vos boutons radios, le plus simple serait de tout faire en JavaScript et de ne pas créer des requêtes SQL. Allez voir ce qui se fait sur le web.

AD

Hors ligne

 

#10 Wed 30 May 2012 18:37

geodev
Participant occasionnel
Date d'inscription: 19 May 2012
Messages: 12

Re: Openlayers, geoserver, postgis

Bonsoir,

Je vais peut être paraitre trivial mais il me semble que ce code qui permet de créer plusieurs calques (ou couches) est à insérer dans le fichier javascript (le .js), coté client.

J'espere avoir pu éclairer.

Francis.

Hors ligne

 

#11 Wed 30 May 2012 18:58

geodev
Participant occasionnel
Date d'inscription: 19 May 2012
Messages: 12

Re: Openlayers, geoserver, postgis

Bonsoir,

Je vais peut être paraitre trivial mais il me semble que ce code qui permet de créer plusieurs calques (ou couches) est à insérer dans le fichier javascript (le .js), coté client.

Alexandre David a écrit:

Code:

layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                    "http://vmap0.tiles.osgeo.org/wms/vmap0",
                    {layers: 'basic'} );


Dans ce code javascript, on crée une nouvelle couche (au sens OL du terme) WMS, elle portera le nom 'basic'.
On peut en créer autant qu'on veut par ce biais. La bibliothèque OL permet de les manipuler, de les ranger, etc...
J'espere avoir pu éclairer.

Francis.

Hors ligne

 

#12 Thu 31 May 2012 10:37

vlad
Participant occasionnel
Date d'inscription: 7 Nov 2011
Messages: 28

Re: Openlayers, geoserver, postgis

Bonjour,

J'ai modifié le code de la page mise en exemple pour tester:

Code:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Test</title>
    
    <script src="OpenLayers-2.11\OpenLayers.js"></script>
    <script type="text/javascript">
    function init(){
        OpenLayers.ProxyHost= "proxy.cgi?url=";
        map = new OpenLayers.Map('map', {allOverlays: true, controls: []});
        var url = "http://localhost:8080/geoserver/web/";
        layers = {
            com: new OpenLayers.Layer.WMS("com", url,
                {layers: 'topp:com', styles: '',format: 'image/gif', transparent: 'TRUE'},
                {singleTile: true}),
            ville: new OpenLayers.Layer.WMS("ville", url,
                {layers: 'topp:ville', styles: '',format: 'image/gif', transparent: 'TRUE'},
                {singleTile: true}),
            fond: new OpenLayers.Layer.WMS("fond", url,
                {layers: 'topp:fond', styles: '',format: 'image/gif', transparent: 'TRUE'},
                {singleTile: true}),
            hydro: new OpenLayers.Layer.WMS("hydro", url,
                {layers: 'topp:hydro', styles: '',format: 'image/gif', transparent: 'TRUE'},
                {singleTile: true})
            };

            map.setCenter(new OpenLayers.LonLat(146.65748632815,-42.230763671875), 7);

            map.addControl(new OpenLayers.Control.LayerSwitcher());



    </script>
  </head>
  <body onload="init()">
  </body>
</html>

Mais quand je l'enregistre en js, je ne peux l'ouvrir dans mon navigateur et quand je l'enregistre en html, je n'ai pas de carte.
J'avoue que je ne comprends pas.
Je ne fais que demander les couches qui sont dans le geoserver, je n'ai pas fais de boutons spéciales ou autres ...

Vlad

Dernière modification par vlad (Thu 31 May 2012 10:42)


Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD

Hors ligne

 

#13 Thu 31 May 2012 10:48

geodev
Participant occasionnel
Date d'inscription: 19 May 2012
Messages: 12

Re: Openlayers, geoserver, postgis

Ce fichier doit être enregistrer en html pas en js. Un navigateur ne sait interpréter que les balises html.

Je pense qu'avant de vous lancer dans un tel projet, quelques bases de programmation web seraient nécessaire. Par exemple, la ligne du proxy ne me semble pas nécessaire.  Par ailleurs, la balise meta viewport est destiné au appareil de type Iphone. Le fichier OpenLayers.js se trouve t il bien à l'endroit indiqué?

Hors ligne

 

#14 Thu 31 May 2012 11:06

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

Re: Openlayers, geoserver, postgis

Bonjour,

Regarde bien le code que tu as écris, les tutos sur GeoTribu et prend le temps de comprendre ce que tu fais avec ces tutos. Car là .... tu initialises un objet Map et basta, tout le reste (url, layers) ne sont pas utilisé.

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 Thu 31 May 2012 13:33

vlad
Participant occasionnel
Date d'inscription: 7 Nov 2011
Messages: 28

Re: Openlayers, geoserver, postgis

Bonjour,

J'ai compris le problème du fait que je n'ajoutais pas les cartes, j'ai donc modifié le code de façon à traiter les cartes individuellement

Code:

<script src="OpenLayers-2.11\OpenLayers.js"></script>
    <script type="text/javascript">
        var map;
    function init(){
        map = new OpenLayers.Map('map');
        var url = "http://localhost:8080/geoserver/plan/wms";
        
        var com: new OpenLayers.Layer.WMS("com", url,
            {layers: 'com', styles: '',format: 'image/gif', transparent: 'TRUE'},
            {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
        var ville: new OpenLayers.Layer.WMS("ville", url,
            {layers: 'ville', styles: '',format: 'image/gif', transparent: 'TRUE'},
            {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
        var fond: new OpenLayers.Layer.WMS("fond", url,
            {layers: 'fond', styles: '',format: 'image/gif', transparent: 'TRUE'},
            {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
        var hydro: new OpenLayers.Layer.WMS("hydro", url,
            {layers: 'hydro', styles: '',format: 'image/gif', transparent: 'TRUE'},
            {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false})
        };
            
        map.addLayer(layers[com, ville, fond, hydro]);
        
        map.setCenter(new OpenLayers.LonLat(146.65748632815,-42.230763671875), 7);

        map.addControl(new OpenLayers.Control.LayerSwitcher());
    };

    </script>

Problème: toujours la page blanche


Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD

Hors ligne

 

#16 Thu 31 May 2012 14:10

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

Re: Openlayers, geoserver, postgis

Bonjour,

vlad a écrit:

Bonjour,

J'ai compris le problème du fait que je n'ajoutais pas les cartes, j'ai donc modifié le code de façon à traiter les cartes individuellement


C'est bien !

vlad a écrit:

Code:

<script src="OpenLayers-2.11\OpenLayers.js"></script>
    <script type="text/javascript">
        var map;
    function init(){
        map = new OpenLayers.Map('map');
        var url = "http://localhost:8080/geoserver/plan/wms";
        
        var com: new OpenLayers.Layer.WMS("com", url,
            {layers: 'com', styles: '',format: 'image/gif', transparent: 'TRUE'},
            {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
        var ville: new OpenLayers.Layer.WMS("ville", url,
            {layers: 'ville', styles: '',format: 'image/gif', transparent: 'TRUE'},
            {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
        var fond: new OpenLayers.Layer.WMS("fond", url,
            {layers: 'fond', styles: '',format: 'image/gif', transparent: 'TRUE'},
            {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
        var hydro: new OpenLayers.Layer.WMS("hydro", url,
            {layers: 'hydro', styles: '',format: 'image/gif', transparent: 'TRUE'},
            {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false})
        };
            
        map.addLayer(layers[com, ville, fond, hydro]);
        
        map.setCenter(new OpenLayers.LonLat(146.65748632815,-42.230763671875), 7);

        map.addControl(new OpenLayers.Control.LayerSwitcher());
    };

    </script>

Problème: toujours la page blanche


Mais là c'est pire.

tu créés un objet js appelé map via un constructeur OpenLayers.Map:
        map = new OpenLayers.Map('map');

le signe = permet d'assigner l'objet à une variable que tu peux réutiliser plus tard.

À cet objet map tu veux lui ajouter des couches. Quand tu regardes l'API d'OpenLayers tu as deux méthodes qui permettent de faire cela : this.addLayers(array) et this.addLayer(OpenLayers.layers). Le premier prend un tableau, le deuxième un objet layer d'OL. Le tableau est un ensemble d'objet OpenLayers.layers. Donc il faut créer tes couches via cet objet :

Code:

  var com = new OpenLayers.Layer.WMS("com", url,
            {layers: 'com', styles: '',format: 'image/gif', transparent: 'TRUE'},
            {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),

Ce faisant tu créés une variable "com" qui est bien un objet OpenLayers.Layer. Au final tu dois avoir 4 objets différents mais qui sont tous des objets OpenLayers.Layer. tu peux donc les ajouter à ton objet map par deux manières :

Code:

map.addLayers([com, ville,fond,hydro]);

ou :

Code:

map.addLayer(com);
map.addLayer(ville);
map.addLayer(fond);
map.addLayer(hydro);

Il est inutile et incorrecte de créer des choses comme ceci:
var hydro: new OpenLayers.Layer.WMS([..])

Le signe ":" est utilisé dans un json ou un objet par exemple : {layers: 'com', styles: '', format: 'image/gif', transparent: 'TRUE'} => un objet n'est pas un tableau (l'inverse est vrai aussi).

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 31 May 2012 16:14

vlad
Participant occasionnel
Date d'inscription: 7 Nov 2011
Messages: 28

Re: Openlayers, geoserver, postgis

Bonjour,

En effet, je me suis rendu compte de ce problème après avoir posté et je n'ai pas eu le temps de le corriger.
J'ai utilisé le = mais ça ne fonctionnait pas non plus.

J'ai donc fais et réalisé toutes les corrections et pas d'affichage, je me demande si c'est parce qu'il faut demander à openlayers tous ses paramètres comme lorsque l'on demande de prévisualiser une couche.

Voici le code:

Code:

<!DOCTYPE html>
<html>
  <head>
    <title>Test</title>
    <script src="OpenLayers-2.11\OpenLayers.js"></script>
    <script type="text/javascript">

    function init(){
    var map; 
    var com;
    var ville;
    var hydro;
                
            map = new OpenLayers.Map('map');
                
                var url = "http://localhost:8080/geoserver/plan/wms";
                    
                var com = new OpenLayers.Layer.WMS('plan:com', url,
                    {layers: 'com', styles: '',format: 'image/gif', transparent: 'TRUE'},
                    {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
                var ville = new OpenLayers.Layer.WMS('plan:ville', url,
                    {layers: 'ville', styles: '',format: 'image/gif', transparent: 'TRUE'},
                    {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
                var fond = new OpenLayers.Layer.WMS('plan:fond', url,
                    {layers: 'fond', styles: '',format: 'image/gif', transparent: 'TRUE'},
                    {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
                var hydro = new OpenLayers.Layer.WMS('plan:hydro', url,
                    {layers: 'hydro', styles: '',format: 'image/gif', transparent: 'TRUE'},
                    {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false})
                
                map.addLayer([com, ville, fond, hydro]);
                
                map.setCenter(new OpenLayers.LonLat(146.65748632815,-42.230763671875), 7);

                // build up all controls
                map.addControl(new OpenLayers.Control.PanZoomBar({
                    position: new OpenLayers.Pixel(2, 15)
                }));
                map.addControl(new OpenLayers.Control.Navigation());
                map.addControl(new OpenLayers.Control.Scale();
                map.addControl(new OpenLayers.Control.MousePosition());
                map.zoomToMaxExtent();
    }
    </script>
  </head>
  <body onload="init()">
  </body>
</html>

Autre chose, lorsque je tente le code, la boite de dialogue me dit que geoserver n'arrive pas à trouver format.wms.atom.xml, svg.xml,... pour la class:org.geoserver.web.demo.MappreviewPage.

Je ne comprends rien à ce charabia, en gros il trouve pas les fichiers parce qu'il cherche pas au bonne endroit (enfin, que je me suis planté en lui demandant d'y chercher) ?
Pourtant j'ai vérifié l'url en prévisualisant une couche et en chargeant le code source.

Dernière modification par vlad (Thu 31 May 2012 16:51)


Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD

Hors ligne

 

#18 Thu 31 May 2012 17:42

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

Re: Openlayers, geoserver, postgis

Bonjour,

Si tu utilises un tableau il faut utiliser la méthode addLayers :

map.addLayerS([com, ville, fond, hydro]);


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 Fri 01 June 2012 12:26

vlad
Participant occasionnel
Date d'inscription: 7 Nov 2011
Messages: 28

Re: Openlayers, geoserver, postgis

Bonjour,

J'ai corrigé le problème énoncé mais j'ai toujours pas d'affichage.
J'ai vérifié avec plusieurs tutoriels et je ne vois pas où je peux m'être trompé.

Code:

<!DOCTYPE html>
<html>
  <head>
    <title>Test</title>
    <script src="OpenLayers-2.11\OpenLayers.js"></script>
    <script type="text/javascript">

    function init(){
    var map; 
    var com;
    var ville;
    var hydro;
                
            map = new OpenLayers.Map('map');
                
                var url = "http://localhost:8080/geoserver/plan/wms";
                    
                var com = new OpenLayers.Layer.WMS("OpenLayers WMS", url,
                    {layers: 'com', styles: '',format: 'image/gif', transparent: 'TRUE'},
                    {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
                var villes = new OpenLayers.Layer.WMS("OpenLayers WMS", url,
                    {layers: 'villes', styles: '',format: 'image/gif', transparent: 'TRUE'},
                    {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
                var fond = new OpenLayers.Layer.WMS("OpenLayers WMS", url,
                    {layers: 'fond', styles: '',format: 'image/gif', transparent: 'TRUE'},
                    {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
                var hydro = new OpenLayers.Layer.WMS("OpenLayers WMS", url,
                    {layers: 'hydro', styles: '',format: 'image/gif', transparent: 'TRUE'},
                    {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false})
                
                map.addLayers([com, ville, fond, hydro]);
                
            map.setCenter(new OpenLayers.LonLat(146.65748632815,-42.230763671875), 7);

            map.addControl(new OpenLayers.Control.PanZoomBar({
                position: new OpenLayers.Pixel(2, 15)
            }));
            map.addControl(new OpenLayers.Control.Navigation());
            map.addControl(new OpenLayers.Control.Scale();
            map.addControl(new OpenLayers.Control.MousePosition());
            map.zoomToMaxExtent();
    }
    </script>
  </head>
  <body onload="init()">
   <div id="map"  style="width: 600px; height: 300px"></div>
  </body>
</html>

Avec firebug, il me dit que var et init ne sont pas définis ( O_O )
Incompréhensible (pour moi)

Autre question: qui n'a plus de rapport avec le sujet: j'ai tenté d'installer QGisServer et apache, tout va bien, je suis le tuto mais quand je lance la page avec mon projet: pas de connections avec localhost, j'ai bien mis le localhost en port:80 e j'ai même tenté avec le port:8080.

Vlad


Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD

Hors ligne

 

#20 Fri 01 June 2012 13:15

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

Re: Openlayers, geoserver, postgis

Bonjour,

Place le contenu à partir de la balise <script type="text/javascript"> jusqu'à </script> après le <div id="map" ...

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

 

#21 Fri 01 June 2012 14:19

vlad
Participant occasionnel
Date d'inscription: 7 Nov 2011
Messages: 28

Re: Openlayers, geoserver, postgis

Bonjour,

J'ai tenté et ça ne marche pas, j'ai mis le script après <div id="map"  style="width: 600px; height: 300px"> et après <div id="map"  style="width: 600px; height: 300px"></div>.
Le mettre dans le body ce n'est pas une bonne idée je pense. les scripts sont habituellement dans le head, non?


EDIT


Du coup j'ai décidé de n'afficher qu'une seule carte, j'ai vérifié l'url, j'ai vérifié que j'avais pas fais de fautes bêtes du genre oublié un s quelque part.
Ça ne marche pas non plus.

erreur rapport firebug:

Code:

missing ; before statement

map.addLayers([com]);

test2.html (line 17, col 7)
    
init is not defined

voici le code:

Code:

<!DOCTYPE html>
<html>
  <head>
    <title>Test</title>
    <script src="openlayers-2.11/lib/OpenLayers.js"></script>
       <script type="text/javascript">

    function init(){
    var map, com;
                
            map = new OpenLayers.Map('map');
                    
                var com = new OpenLayers.Layer.WMS("OpenLayers WMS", "http://localhost:8080/geoserver/plan/wms",
                    {layers: 'com', styles: '',format: 'image/gif', transparent: 'TRUE'},
                    {singleTile: true, 'opacity': 1.0, 'isBaseLayer': false}),
                
                map.addLayers([com]);
                
            map.setCenter(new OpenLayers.LonLat(146.65748632815,-42.230763671875), 7);

            map.addControl(new OpenLayers.Control.PanZoomBar({
                position: new OpenLayers.Pixel(2, 15)
            }));
            
            map.zoomToMaxExtent();;
    }
    </script>
    
  </head>
  <body onload="init()">
   <div id="map"  style="width: 600px; height: 300px"></div>
  </body>
</html>

Je ne comprends vraiment pas je vais chercher à le simplifier le plus possible.

Vlad

EDIT

Merci pour l'aide les gens big_smile
Pour ceux que cela intéresse, j'ai modifié mon code et cela fonctionne.
Alors voici mon code:

Code:

<!DOCTYPE html>
<html>
  <head>
        <head>
        <title>OpenLayers map preview</title>
        
        <link rel="stylesheet" type="text/css" href="http://localhost:8080/geoserver/openlayers/theme/default/style.css"/>
        
        <script src="http://localhost:8080/geoserver/openlayers/OpenLayers.js" type="text/javascript"></script>
        <script type="text/javascript">

    var map;
    var layer1,options;
     function setHTML(response) { 
        document.getElementById('nodelist').innerHTML = response.responseText;
    };

    OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;
    OpenLayers.DOTS_PER_INCH = 25.4 / 0.28;


    function init(){
        var bounds = new OpenLayers.Bounds(
                    545365, 2579199,
                    613063, 2629321
                );
        var options = {
            controls: [],
            maxExtent: bounds,
            maxResolution: 264.4453125,
            projection: "EPSG:2154",
            units: 'm'
        };
        map = new OpenLayers.Map('map', options);

        layer1 = new OpenLayers.Layer.WMS(
            "Com",
            "http://localhost:8080/geoserver/plan/wms",
            {
                width: '800',
                srs: 'EPSG:2154',
                layers: 'com',
                height: '450',
                styles: '',
                transparent: true,
                format: 'image/png'
            },
            {isBaseLayer: false,singleTile: true, ratio: 1} 
        );
        layer2 = new OpenLayers.Layer.WMS(
            "Perimetre_sc", 
            "http://localhost:8080/geoserver/plan/wms",
            {
                width: '800',
                srs: 'EPSG:2154',
                layers: 'perimetre_sc',
                height: '450',
                styles: '',
                transparent: true,
                format: 'image/png'
            },
            {isBaseLayer:false,singleTile: true, ratio: 1} 
        );
        layer3 = new OpenLayers.Layer.WMS(
            "Des", "http://localhost:8080/geoserver/plan/wms",
            {
                width: '800',
                srs: 'EPSG:2154',
                layers: 'des',
                height: '450',
                styles: '',
                format: 'image/png'
            },
            {singleTile: true, ratio: 1} 
        );
        layer4 = new OpenLayers.Layer.WMS(
            "Villes", "http://localhost:8080/geoserver/plan/wms",
            {
                width: '800',
                srs: 'EPSG:4326',
                layers: 'villes',
                height: '450',
                styles: '',
                transparent: true,
                format: 'image/png'
            },
            {isBaseLayer:false,singleTile: true, ratio: 1} 
        );


        map.addLayers([layer1,layer2,layer3,layer4]);

       // setup controls and initial zooms
        map.addControl(new OpenLayers.Control.PanZoomBar());
        map.addControl(new OpenLayers.Control.Navigation());
        map.addControl(new OpenLayers.Control.Scale($('scale')));
        map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
        map.addControl(new OpenLayers.Control.LayerSwitcher());
        //map.addControl(new OpenLayers.Control.OverviewMap());
        map.zoomToExtent(bounds);

        // support GetFeatureInfo


    }
</script>`
    </head>
   <body onload='init();'>
    <div id='map' style='width: 500px; height: 500px;'>
</div>
</body>
</html>

Il faut mettre les var au dessus de function sinon cela ne fonctionne pas.

De plus, le fichier html doit être mis dans le dossier www dans geoserver. Personnellement j'ai installé geoserver comme un logiciel, le chemin était donc : C:/programfiles/geoserver-2.1.4/data_dir/www

J'éspère que cela va aider les néophytes comme moi.

Faites attention à la projection et pour les valeurs du bounds, utilisez la previsualisation de Geoserver pour vous aider.

Bon courage

Vlad

Dernière modification par vlad (Wed 06 June 2012 12:23)


Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD

Hors ligne

 

Pied de page des forums

Powered by FluxBB