WMS Reflector
Check out the two Geoserver-provided images below:
**Exhibit A** |
![](http://geo.openplans.org:8080/geoserver/wms?service=WMS&request=GetMap&version=1.1.1&format=image/png&width=256&height=108&srs=EPSG:4326&layers=topp:states&styles=population&bbox=-138.4239531951185,19.168145657378737,-53.27731780488149,55.15955634262126) |
**Exhibit B** |
![](http://geo.openplans.org:8080/geoserver/wms/reflect?layers=topp:states&width=256) |
They may look very similar, but they have two important differences. First, the scaling of the second map is better for conveying the data. The second and more important difference you won’t be able to see unless you view this page’s source. The markup that produced Exhibit A involved the burdensome URLs you may be used to:
<img src="http://geo.openplans.org:8080/geoserver/wms?service=WMS &request=GetMap &version=1.1.1 &format=image/png &width=256 &height=108 &srs=EPSG:4326 &layers=topp:states &styles=population &bbox=-138.4239531951185,19.168145657378737,-53.27731780488149,55.15955634262126" />
Exhibit B, on the other hand, uses a far more concise URL for the image source:
<img src="http://geo.openplans.org:8080/geoserver/wms/reflect? layers=topp:states&width=256" />
How is this possible? Exhibit B uses the new WMS Reflector, written by Justin DeOliveira and augmented by Arne Krepp for 1.6.0 for RC1. The URL asks the reflector (wms/reflect
) to display the feature “topp:states” (layers=topp:states
) and that the width should be 256 pixels (width=256
). The rest of the parameters are filled in either by sensible but overridable defaults–such as format=image/png
–or with values calculated on the fly. The bounding box, for example, was inferred from the bounds of the content instead of being explicitly defined.
Less Pain
The WMS Reflector is designed to make it easier to play around with Geoserver without having to waste time tweaking cumbersome URLs. Before, writing a WMS request by hand was almost impossible, since you had to manually make sure that the ratio between the width and height parameters was the same as the ratio for the bounding box. You also had to know what a spatial reference system is, what version of WMS you wanted to use, and so on.
None of this should be weighing on the user who just wants to get Geoserver to show them a map. The WMS Reflector frees them from this kind of micromanagement. As seen in Exhibit B above, all you need to do is supply either a height or a width attribute and the rest–the bounding box, the other dimension–are automagically tailored to the data.
Overriding the Defaults
With the WMS Reflector handling the sizing and bounding box issues, it’s easier to play with Geoserver’s different output formats. The default request returns a PNG image of a map. But the following URL gets you a PDF
http://geo.openplans.org:8080/geoserver/wms/reflect?format=application/pdf&layers=topp:states
Once again, with the Reflector, the URL contains just what needs to be said, and no more. You can even use the Reflector to quickly make navigable OpenLayers maps using the format=application/openlayers
option.
If you are interested in learning more about the WFS Reflector and the parameters it supplies and derives, take a look at Arne’s documentation, which provides more details and examples.
Vulnerability
- GeoServer 2.26.1 Release
- GeoServer 2.25.4 Release
- GeoServer 2.26.0 Release
- CVE-2024-36401 Remote Code Execution (RCE) vulnerability in evaluating property name expressions
- GeoServer 2.25.2 Release
- GeoServer 2.24.4 Release
- GeoServer 2.23.6 Release
- GeoServer 2.25.1 Release
- GeoServer 2.25.0 Release
- GeoServer 2.23.5 Release