#1 Fri 30 April 2010 08:42
- icadedt
- Participant assidu
- Lieu: ici et là
- Date d'inscription: 21 Jul 2006
- Messages: 478
openlayers fonction getfeatureinfo sur couche ponctuelle
Bonjour, avec la fonction getfeatureinfo de mapserver , on peut recuperer des infos des objets sur lesquls on clicque
le probleme vient quand on essaye de pointer sur un objet d'une couche de type ponctuel, l'info ne remonte pas tant qu'on a pas visé exactement sur le centroide de l'objet, ce qui est tres difficile surtout si le zoom est petit !!!!!
ma question est la suivante: est -il possible de parametrer le getfeatureinfo pour qu'il accepte une zone de tolérance?
une requete spatiale du genre intersects...
faut il parametrer ca dans le mapfile ou dans openlayers?
Code:
map.events.register('click', map, function(e) {
var params = {
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
BBOX: map.getExtent().toBBOX(),
X: e.xy.x,
Y: e.xy.y,
INFO_FORMAT: 'text/plain',
QUERY_LAYERS: 'mespoints',
FEATURE_COUNT: 1,
Layers: 'mespoints',
Styles: '',
Srs: 'EPSG:4326',
WIDTH: map.size.w,
HEIGHT: map.size.h,
format: 'image/png',
VERSION: '1.0.0'
};
OpenLayers.loadURL("http://localhost:8081/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/test/mapfilepostgisWMS.map", params, this, setHTML)
OpenLayers.Event.stop(e);
});mon mapfile:
Code:
# Edit this file to customize for your map interface
# (Created with PyQgis MapServer Export plugin)
MAP
NAME MyMap
# Map image size
SIZE 600 400
UNITS meters
EXTENT -97.960008 40.009933 -81.249600 50.645179
PROJECTION
"init=epsg:900913" ##recommended
END
SYMBOL
NAME 'circle'
TYPE ellipse
FILLED true
POINTS 1 1 END
STYLE 2 1 END
END
SYMBOLSET "symbols/symbols35.sym"
SYMBOL
NAME 'imageGIFouJPEG'
TYPE PIXMAP
IMAGE "symbols/Ducky.png"
END
TRANSPARENT ON
# Background color for the map canvas -- change as desired
IMAGECOLOR 255 255 255
IMAGEQUALITY 95
IMAGETYPE PNG
OUTPUTFORMAT
NAME 'PNG'
DRIVER 'GD/PNG'
MIMETYPE 'image/png'
#IMAGEMODE PC256
EXTENSION 'png'
END
# Legend
LEGEND
IMAGECOLOR 255 255 255
STATUS ON
KEYSIZE 18 12
LABEL
TYPE BITMAP
SIZE MEDIUM
COLOR 0 0 89
END
END
# Web interface definition. Only the template parameter
# is required to display a map. See MapServer documentation
WEB
# Set IMAGEPATH to the path where MapServer should
# write its output.
IMAGEPATH '/tmp/'
# Set IMAGEURL to the url that points to IMAGEPATH
# as defined in your web server configuration
IMAGEURL '/tmp/'
# WMS server settings
METADATA
'wms_title' 'MyMap'
'wms_onlineresource' 'http://localhost:8081/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/test/mapfilepostgisWMS.map&'
'wms_srs' 'EPSG:4326'
END
#Scale range at which web interface will operate
# Template and header/footer settings
# Only the template parameter is required to display a map. See MapServer documentation
END
#================================================================================================================================================
#================================================================================================================================================
#================================================================================================================================================
LAYER
TEMPLATE "void" # mettre ca , indispensable pour utiliser GetFeatureInfo
NAME 'states_ugl'
TYPE POLYGON
CONNECTIONTYPE postgis
CONNECTION 'host=localhost user=postgres password=azertyuiop dbname=postgistest'
DATA 'the_geom from states_ugl using unique gid using srid=-1'
FILTER ("STATE" not similar to 'Michiga%' or "STATE" ='Michigan')
METADATA
wms_title 'states_ugl_titre'
wms_name 'states_ugl_titre_name'
wms_include_items "all" # "STATE,gid" # pour GetFeatureInfo
wms_feature_info_mime_type "text/plain"
wms_srs 'EPSG:4326'
END
STATUS ON
TRANSPARENCY 100 #alpha
PROJECTION
"init=epsg:4326" ##recommended
END
CLASS
NAME 'states_ugl'
STYLE
SYMBOL 'circle'
SIZE 5
OUTLINECOLOR 40 100 78
COLOR 20 150 100
ANTIALIAS TRUE
END
END
END
#================================================================================================================================================
#================================================================================================================================================
#================================================================================================================================================
LAYER # test couche ponctuelle
TEMPLATE "void" # mettre ca , indispensable pour utiliser GetFeatureInfo
TYPE POINT
STATUS DEFAULT #doit etre à DEFAULT si visible
TRANSPARENCY 99 # mettre à 99 et pas 100 sinon le fond des png devient visible
CONNECTION "host=localhost dbname=postgistest user=postgres password=azertyuiop port=5432"
CONNECTIONTYPE POSTGIS
DATA 'geom from point1 using unique gid using srid=-1'
NAME "mespoints"
PROJECTION
"init=epsg:4326" ##recommended
END
METADATA
wms_title 'point1'
wms_name 'point1'
wms_include_items "all" # pour GetFeatureInfo
wms_feature_info_mime_type "text/plain"
wms_srs 'EPSG:4326'
END
CLASS
STATUS ON
#EXPRESSION ( [gid] >= 0 and [gid] < 10000000000 )
STYLE
ANTIALIAS TRUE #antialiasing
COLOR 255 100 100
SIZE [gid] # symbole ponctuel proportionnel carte thematique
MINSIZE 0
#MAXSIZE 1300
SYMBOL "circle" # imageGIFouJPEG #"tent"
SIZE 10
OUTLINECOLOR 255 100 20
#color -1 -1 -1
OUTLINECOLOR 20 20 20
END
LABEL
Wrap ' ' # caractere ou chaine consdere pour sauter à la ligne dans label quand concat champ (TEXT())
color 132 31 31
ANTIALIAS TRUE #antialiasing
END #end label
END #end class
CLASS
STATUS OFF
EXPRESSION ( [gid] >= 10 )
STYLE
ANTIALIAS TRUE #antialiasing
SIZE 45
#MINSIZE 100
#MAXSIZE 1300
SYMBOL "circle"
OUTLINECOLOR 20 20 20
END
LABEL
Wrap ' ' # caractere ou chaine consdere pour sauter à la ligne dans label quand concat champ (TEXT())
color 132 31 31
ANTIALIAS TRUE #antialiasing
END #end label
END #end class
END #end layer
ENDd'avance merci
Dernière modification par icadedt (Fri 30 April 2010 08:43)
Hors ligne
#2 Tue 04 May 2010 09:34
- icadedt
- Participant assidu
- Lieu: ici et là
- Date d'inscription: 21 Jul 2006
- Messages: 478
Re: openlayers fonction getfeatureinfo sur couche ponctuelle
j'ai trouvé
il faut jouer sur le paramètre "TOLERANCE" dans la partie layer du mapfile et jouer aussi sur " FEATURE_COUNT" dans openlayers:
map.events.register('click', map, function(e) {
document.getElementById('docs').innerHTML = "Patientez SVP...";
var params = {
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
BBOX: map.getExtent().toBBOX(),
X: e.xy.x,
Y: e.xy.y,
INFO_FORMAT: 'text/html',
QUERY_LAYERS: 'states_ugl,mespoints',
FEATURE_COUNT: 1,
Layers: 'mespoints,states_ugl',
Styles: '',
Srs: 'EPSG:4326',
WIDTH: map.size.w,
HEIGHT: map.size.h,
format: 'image/png',
VERSION: '1.0.0'
};
OpenLayers.loadURL("http://localhost:8081/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/test/mapfilepostgisWMS.map", params, this, setHTML)
OpenLayers.Event.stop(e);
});
Dernière modification par icadedt (Tue 04 May 2010 09:40)
Hors ligne


