为什么uDig的渲染图看起来比我的好很多

时间:2019-09-06 13:22:24

标签: java gis geotools

我使用uDig设置了图层样式,并将样式导出为SLD文件。然后,我使用Geotools将相同的样式应用于代码中的图层(相同的shapefile)。但是,uDig绘制的地图看起来比我的要好得多。

我的项目使用的是geotools版本21.2,Java 1.8,并且我正在使用Geotools的JMapPane渲染地图。注意到uDig版本看起来比我的更好,我尝试深入研究uDig源代码以查看形状文件的呈现方式。我发现形状文件是通过ShapefileFeatureRenderer在uDig中呈现的,所以我认为。然后,我复制并粘贴了渲染器的初始化代码,并将其应用到我的项目中,但没有发现任何区别。

renderer = new StreamingRenderer();
HashMap<String, Object> rendererHints = new HashMap<String, Object>();
rendererHints.put("optimizedDataLoadingEnabled", true); //$NON-NLS-1$
renderer.setRendererHints(rendererHints);
            // renderer.removeRenderListener(StreamingRenderer.DEFAULT_LISTENER);
renderer.addRenderListener(listener);

            // JG - these may be overriden by the preferences before use?
RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
renderer.setJava2DHints(hints)
mapPane.setRenderer(renderer);

如何使我的地图渲染与uDig一样好(uDig的渲染在下面的屏幕快照的左侧)? side by side

我希望有人指出正确的方向。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为您应该将默认渲染器保留在原处,只需添加其提示即可,例如:

renderer = frame.getMapPane().getRenderer();
Map<Object, Object> rendererHints = renderer.getRendererHints();
rendererHints.put("optimizedDataLoadingEnabled", true); 
renderer.setRendererHints(rendererHints);
RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
    RenderingHints.VALUE_ANTIALIAS_ON);
renderer.setJava2DHints(hints);

如果这样做不可行,则可能需要查看设置GeoServer渲染的提示,例如here