[Gfoss] openlayer+postgis...la resa dei conti

beppe beppenapo a gmail.com
Ven 27 Nov 2009 00:22:37 CET


Noto con vero piacere che, dopo il mio accorato appello, molta gente si
è mossa a compassione ... scherzi a parte ringrazio tutti!
Grazie al vostro aiuto, openlayer continua a non volere stampare 'sto
dannato layer, ma almeno ho fatto grossi passi in avanti:
1.OpenLayer visualizza la porzione giusta di territorio (basta Africa,
Corsica o Nuova Zelanda!)
2. il mapfile è stato configurato in maniera (spero) corretta usando
EPSG:4326, ed ora riesco "addirittura" a visualizzarlo in qgis (usando
il plugin "MapFile tool").
3. le chiamate getcapabilities e getfeature restituiscono valori "quasi"
corretti

Problemi:
1. il "quasi" è riferito alla sezione "featuretype" della chiamata
getcapabilities, che mi da strani valori sul bounding box (credo!)
<FeatureType>
<Name>confini_com</Name>
<Title>confini_com</Title>
<SRS>EPSG:4326</SRS>
<LatLongBoundingBox minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07"
maxy="2.5e+07"/>
</FeatureType> 

se nel map file cambio il valore dell'epsg del layer postgis da 4326
(quello impostato da me) a 3003 (quello "originale" del layer), la bb mi
stampa:
<LatLongBoundingBox minx="-163.828" miny="-1.1161e+13" maxx="155.081"
maxy="1.1161e+13"/>
ma la chiamata getfeature genera:
<gml:boundedBy>
<gml:null>missing</gml:null>
</gml:boundedBy>
</wfs:FeatureCollection>

2. Se imposto epsg:4326 come proiezione generale del mapfile e richiamo
mapserver con "mode=map" mi da pagina bianca, se invece uso epsg:3003
stampa correttamente il layer ma addio getcapabilities e getfeature.

3. In ogni caso, qualsiasi magheggio io provi, openlayer non funge

Ho la sensazione che ci sia un problema di riproiezione che, tanto per
cambiare, mi sfugge!!!

Vi posto il map file e il pezzo di codice di openlayer...sentitevi
liberi di mandarmi in @§£& ... io mi sono già offeso abbastanza!

-beppe-

------------mapfile---------------
MAP

  NAME "Progetto prova"
  EXTENT #-205201.65625 5738005 -189123.625 5763243.5
  			653890.824038 5121367.412500 673982.300962 5139410.087500  			
  PROJECTION
    "init=epsg:4326"
  END
  SIZE 800 600
  SHAPEPATH "."
  IMAGETYPE aggpng24

  WEB
    METADATA
      wfs_title          "Progetto prova"
      wfs_onlineresource "http://localhost/vervo_data/ol_prove/map.map&"
      #wfs_srs            "EPSG:4326 EPSG:900913 EPSG:3003"
      wfs_srs            "EPSG:4326"
    END
  END

OUTPUTFORMAT
  NAME "aggpng24"
  DRIVER "AGG/PNG"
  IMAGEMODE RGB
END

LAYER
    NAME 'confini_com'
    TYPE POLYGON
    CONNECTIONTYPE postgis
    CONNECTION "dbname='vervo' host=localhost port=5432 user='beppe'
password='xxxxxxx'"
    DATA 'confini_com FROM public.dati_amm_terr using unique
"id_dati_amm" using SRID=3003'
  PROJECTION
    "init=epsg:3003"
  END
  DUMP TRUE
  METADATA
    "wfs_title" "confini_com"
    "wfs_featureid" "id_dati_amm"
  END

    CLASS
       NAME 'confini_com' 
       STYLE
         SYMBOL 0 
         SIZE 2 
         OUTLINECOLOR 0 0 0
         COLOR 11 54 104
       END
    END
END

END

---------------openlayer-------------------
        var lat=46.231
        var lon=11.232
        var zoom=10
        
        var map;
        function init() {
          map = new OpenLayers.Map ("map", {
           controls:[
             new OpenLayers.Control.Navigation(),
             new OpenLayers.Control.PanZoomBar(),
             new OpenLayers.Control.LayerSwitcher(),
	     new OpenLayers.Control.Permalink(),
	     new OpenLayers.Control.MousePosition(),
             new OpenLayers.Control.Attribution()],
        maxExtent: new
OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
        maxResolution: 156543.0399,
        numZoomLevels: 19,
        units: 'm',
        projection: new OpenLayers.Projection("EPSG:4326"),
        //displayProjection: new OpenLayers.Projection("EPSG:4326")
            } );
        layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
	map.addLayer(layerMapnik);
           	
       	var wfs = new OpenLayers.Layer.WFS("Comuni",
"http://localhost/cgi-bin/mapserv?map=/var/www/vervo_data/ol_prove/map.map&",
          	{ typename: 'confini_com'});
	map.addLayer(wfs);
    
	var lonLat = new OpenLayers.LonLat(lon, lat).transform(new
OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
            map.setCenter (lonLat, zoom);
        }



Maggiori informazioni sulla lista Gfoss