Hi, I was experimenting with Mapserver WMS and WFS and even I feel ashamed to advertise OGC services here I still put some links here below.
My source data is Finland.osm file imported into PostGIS with -k option for getting all the tags. Sea and borders layers are from Vmap0. Images are rendered on-demand, and data can be selected by editing the &tag= and &value parameters. A supermarketmap http://188.64.1.61/cgi-bin/mapserv?map=/usr/map/osm-mapserver_i.map&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=1059&HEIGHT=687&LAYERS=sea,borders,POI_free_query&TRANSPARENT=TRUE&FORMAT=image%2Fpng&BBOX=-574187,6558020,1615375,7978444&SRS=EPSG:3067&STYLES=&tag=shop&value=supermarket A fuelstationmap http://188.64.1.61/cgi-bin/mapserv?map=/usr/map/osm-mapserver_i.map&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=1059&HEIGHT=687&LAYERS=sea,borders,POI_free_query&TRANSPARENT=TRUE&FORMAT=image%2Fpng&BBOX=-574187,6558020,1615375,7978444&SRS=EPSG:3067&STYLES=&tag=amenity&value=fuel Just edit tag and value keys and you should see what ever map you like. Same system works for lines, here is a fixed maxspeedmap where only the maxpeed value has been made selectable. http://188.64.1.61/cgi-bin/mapserv?map=/usr/map/osm-mapserver_i.map&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=1059&HEIGHT=687&LAYERS=sea,borders,maxspeed_query&TRANSPARENT=TRUE&FORMAT=image%2Fpng&BBOX=-574187,6558020,1615375,7978444&SRS=EPSG:3067&STYLES=&maxspeed=100 URLs are ugly but worse is to come. The previous was showing the default styles from the server, but user can send own styles with the requests. Thin brown lines http://188.64.1.61/cgi-bin/mapserv?map=/usr/map/osm-mapserver_i.map&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=1059&HEIGHT=687&LAYERS=sea,borders,maxspeed_query&TRANSPARENT=TRUE&FORMAT=image%2Fpng&BBOX=-574187,6558020,1615375,7978444&SRS=EPSG:3067&STYLES=&maxspeed=100&SLD_BODY=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%3CStyledLayerDescriptor+version%3D%221.0.0%22%3E%3CNamedLayer%3E%3CName%3Emaxspeed_query%3C%2FName%3E%3CUserStyle%3E%3CFeatureTypeStyle%3E%3CRule%3E%3CLineSymbolizer%3E%3CStroke%3E%3CCssParameter+name%3D%22stroke%22%3E%23E6550D%3C%2FCssParameter%3E%3CCssParameter+name%3D%22stroke-opacity%22%3E1.00%3C%2FCssParameter%3E%3CCssParameter+name%3D%22stroke-width%22%3E1.00%3C%2FCssParameter%3E%3C%2FStroke%3E%3C%2FLineSymbolizer%3E%3C%2FRule%3E%3C%2FFeatureTypeStyle%3E%3C%2FUserStyle%3E%3C%2FNamedLayer%3E%3C%2FStyledLayerDescriptor%3E Wider green lines http://188.64.1.61/cgi-bin/mapserv?map=/usr/map/osm-mapserver_i.map&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=1059&HEIGHT=687&LAYERS=sea,borders,maxspeed_query&TRANSPARENT=TRUE&FORMAT=image%2Fpng&BBOX=-574187,6558020,1615375,7978444&SRS=EPSG:3067&STYLES=&maxspeed=100&SLD_BODY=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%3CStyledLayerDescriptor+version%3D%221.0.0%22%3E%3CNamedLayer%3E%3CName%3Emaxspeed_query%3C%2FName%3E%3CUserStyle%3E%3CFeatureTypeStyle%3E%3CRule%3E%3CLineSymbolizer%3E%3CStroke%3E%3CCssParameter+name%3D%22stroke%22%3E%2331A354%3C%2FCssParameter%3E%3CCssParameter+name%3D%22stroke-opacity%22%3E1.00%3C%2FCssParameter%3E%3CCssParameter+name%3D%22stroke-width%22%3E2.00%3C%2FCssParameter%3E%3C%2FStroke%3E%3C%2FLineSymbolizer%3E%3C%2FRule%3E%3C%2FFeatureTypeStyle%3E%3C%2FUserStyle%3E%3C%2FNamedLayer%3E%3C%2FStyledLayerDescriptor%3E Search parameters "stroke" and "stroke-width" and play with them for getting more styles. Or send getStyles request and look how the default style is made http://188.64.1.61/cgi-bin/mapserv?map=/usr/map/osm-mapserver_i.map&REQUEST=GetStyles&SERVICE=WMS&VERSION=1.1.1&layers=maxspeed_query If you are not interested in getting the data, use WFS request and server will send vectors in gml format. It is GML3 in the following examples using WFS version 1.1.0. Change version to 1.0.0 and output will be GML2. Get 10 toilets http://188.64.1.61/cgi-bin/mapserv?map=/usr/map/osm-mapserver_i.map&service=wfs&version=1.1.0&request=getfeature&typename=POI_free_query&maxfeatures=10&tag=amenity&value=toilets Get 100 restaurants http://188.64.1.61/cgi-bin/mapserv?map=/usr/map/osm-mapserver_i.map&service=wfs&version=1.1.0&request=getfeature&typename=POI_free_query&maxfeatures=100&tag=amenity&value=restaurant Again, edit tags and values and the data will change. All the combinations that exist are supported. Increasing maxfeatures will give more results. WFS spatial filters are supported. Feel free to read about them and test. One thing that I do not know yet is how to make attribute queries with the standard WFS filters. Tags comes from the PostGIS hstore column and that datatype is a bit odd to query. And this is what is needed in the MapServer mapfile for publishing the free poi query layer as WMS and WFS. LAYER TYPE POINT STATUS ON PROJECTION "init=epsg:3067" #UTM because Web Mercator makes Finland ugly END NAME "POI_free_query" INCLUDE "/usr/map/connection.map" DATA "way from (select (way),osm_id,tags from osm_point where (tags @>'%tag%=>%value%')) as foo using unique osm_id using srid=3067" #I feel that more recent MapServer versions demand validation #pattern for the variables but this one works even without METADATA "wfs_title" "free_tag_query" "gml_featureid" "osm_id" "gml_include_items" "osm_id,tags" END DUMP TRUE #DEBUG 5 TEMPLATE "/usr/templates/mstemplate.html" CLASS STYLE SIZE 10 SYMBOL "citycircle" COLOR "#FF6767" OUTLINECOLOR 0 0 0 END STYLE SIZE 2 SYMBOL "citycircle" COLOR "#000000" END END END -Jukka Rahkonen- _______________________________________________ dev mailing list [email protected] http://lists.openstreetmap.org/listinfo/dev

