gpt4 book ai didi

java - 为什么 uDig 的渲染 map 看起来比我的好很多

转载 作者:太空宇宙 更新时间:2023-11-04 09:24:59 24 4
gpt4 key购买 nike

我使用 uDig 设置图层样式并将样式导出为 SLD 文件。然后,我使用 Geotools 将相同的样式应用于代码中的图层(相同的 shapefile)。不过,uDig 的 map 渲染看起来比我的好得多。

我的项目使用 geotools 版本 21.2、Java 1.8,我正在使用 Geotools 的 JMapPane 渲染 map 。 。注意到 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);

如何使我的 map 渲染与 uDig 的一样好(uDig 的渲染位于下面屏幕截图的左侧)? side by side

我希望有人能够为我指明如何解决这个问题的正确方向。任何帮助将不胜感激。

最佳答案

我认为你应该保留默认渲染器并简单地添加它的提示,例如:

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

关于java - 为什么 uDig 的渲染 map 看起来比我的好很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57822880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com