[Geoserver-users] WMS Artifacts When Rendering Small Polygons

Hi List,

I'm fairly new to Geoserver, and I'm very impressed by how easy it is to get up and running quickly.

I've been playing with serving data from Geoserver's WMS. I'm using the stand alone Geoserver 1.7.0-RC4 on linux with jdk 1.6.0_06 and native jai.

I've been noticing some strange image rendering behavior when generating WMS images of radar data. This data contains many polygons (~80,000) and is in a custom orthographic projection. The polygons near the center of the data are much smaller than the ones near the perimeter (since it is radial data).

Many of the small polygons are not rendered or are rendered in a way that leaves a strange pattern. You can see this in http://inws.wrh.noaa.gov/scratch/sutula/wms1.png. That image was generated with the following WMS request:

http://localhost:8080/geoserver/wms?WIDTH=800&HEIGHT=740&LAYERS=topp:states,topp%3ABRO_20080723_1807&STYLES=&SRS=EPSG%3A500001&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT_OPTIONS=antialias%3Anone&BBOX=-268876.70491178706,-160532.58400467926,134399.955480083,212498.32685780057

Strangely, if I make the output image half the size, the data does not appear at all as seen in http://inws.wrh.noaa.gov/scratch/sutula/wms2.png. That was generated with:

http://localhost:8080/geoserver/wms?WIDTH=400&HEIGHT=370&LAYERS=topp:states,topp%3ABRO_20080723_1807&STYLES=&SRS=EPSG%3A500001&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT_OPTIONS=antialias%3Anone&BBOX=-268876.70491178706,-160532.58400467926,134399.955480083,212498.32685780057

My sld has no scale dependence and only specifies a fill color and opacity for different values. The behavior happens with or without anti aliasing enabled.

Any ideas what is going on here?

Thank you,
Aaron

Aaron Sutula ha scritto:

Hi List,

I'm fairly new to Geoserver, and I'm very impressed by how easy it is to get up and running quickly.

I've been playing with serving data from Geoserver's WMS. I'm using the stand alone Geoserver 1.7.0-RC4 on linux with jdk 1.6.0_06 and native jai.

I've been noticing some strange image rendering behavior when generating WMS images of radar data. This data contains many polygons (~80,000) and is in a custom orthographic projection. The polygons near the center of the data are much smaller than the ones near the perimeter (since it is radial data).

Many of the small polygons are not rendered or are rendered in a way that leaves a strange pattern. You can see this in http://inws.wrh.noaa.gov/scratch/sutula/wms1.png. That image was generated with the following WMS request:

http://localhost:8080/geoserver/wms?WIDTH=800&HEIGHT=740&LAYERS=topp:states,topp%3ABRO_20080723_1807&STYLES=&SRS=EPSG%3A500001&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT_OPTIONS=antialias%3Anone&BBOX=-268876.70491178706,-160532.58400467926,134399.955480083,212498.32685780057

Strangely, if I make the output image half the size, the data does not appear at all as seen in http://inws.wrh.noaa.gov/scratch/sutula/wms2.png. That was generated with:

http://localhost:8080/geoserver/wms?WIDTH=400&HEIGHT=370&LAYERS=topp:states,topp%3ABRO_20080723_1807&STYLES=&SRS=EPSG%3A500001&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT_OPTIONS=antialias%3Anone&BBOX=-268876.70491178706,-160532.58400467926,134399.955480083,212498.32685780057

My sld has no scale dependence and only specifies a fill color and opacity for different values. The behavior happens with or without anti aliasing enabled.

Any ideas what is going on here?

Absolutely none, very odd :slight_smile:
Any chance you can send me, by private mail, that dataset and the
sld you used?

Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

Andrea Aime ha scritto:

Aaron Sutula ha scritto:

Hi List,

I'm fairly new to Geoserver, and I'm very impressed by how easy it is to get up and running quickly.

I've been playing with serving data from Geoserver's WMS. I'm using the stand alone Geoserver 1.7.0-RC4 on linux with jdk 1.6.0_06 and native jai.

I've been noticing some strange image rendering behavior when generating WMS images of radar data. This data contains many polygons (~80,000) and is in a custom orthographic projection. The polygons near the center of the data are much smaller than the ones near the perimeter (since it is radial data).

Many of the small polygons are not rendered or are rendered in a way that leaves a strange pattern. You can see this in http://inws.wrh.noaa.gov/scratch/sutula/wms1.png. That image was generated with the following WMS request:

http://localhost:8080/geoserver/wms?WIDTH=800&HEIGHT=740&LAYERS=topp:states,topp%3ABRO_20080723_1807&STYLES=&SRS=EPSG%3A500001&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT_OPTIONS=antialias%3Anone&BBOX=-268876.70491178706,-160532.58400467926,134399.955480083,212498.32685780057

Strangely, if I make the output image half the size, the data does not appear at all as seen in http://inws.wrh.noaa.gov/scratch/sutula/wms2.png. That was generated with:

http://localhost:8080/geoserver/wms?WIDTH=400&HEIGHT=370&LAYERS=topp:states,topp%3ABRO_20080723_1807&STYLES=&SRS=EPSG%3A500001&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT_OPTIONS=antialias%3Anone&BBOX=-268876.70491178706,-160532.58400467926,134399.955480083,212498.32685780057

My sld has no scale dependence and only specifies a fill color and opacity for different values. The behavior happens with or without anti aliasing enabled.

Any ideas what is going on here?

Absolutely none, very odd :slight_smile:
Any chance you can send me, by private mail, that dataset and the
sld you used?

Hi,
so I looked into the sld and data you sent me. The strange
pattern you see is formed because the rendered cells have a very tiny space between each other.

To verify that, you can do two things:
* the first one is to notice the cells seem to have a slightly
   lighter border than then inside of the cell
* the second is to add &bgcolor=0x000000 and notice how the
   artifact changes from white to black

What is happening is that close to the center of the vortex
the cells are so tiny that each of them contributes very
few to the current pixel, and the background somehow wins
(it's a by product of how antialiasing is computed afaik).

I checked the shapefile rendering it with uDig (which uses
an older version of the same renderer GeoServer is using)
and I can confirm two things:
- the cells are actually adjacent, the issue is with
   how drawing is performed. I checked that the same
   numbers get into the java2d pipeline, what happens
   after that is beyond my control
- if you add a stroke around the cells the effect is
   much less visible.

Oh, I don't know if you really need the fill to be translucent,
but beware, translucent rendering is expensive, remove the
opacity=0.7 directives if you don't really need them.

Hope this helps
Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.