无法加载类别“ ExternalGraphicFactory”的服务

时间:2018-09-25 10:40:59

标签: geotools

我在Inteliji IDE中使用带有JavaFx的geotools-18.5。 当我想从svg或png图像创建PointSymbolizer时。

tar xzf files/test.tar.gz && zip files/test.zip $(tar tf files/test.tar.gz) && rm -r -- $(tar tf files/test.tar.gz)

我构建代码正常,但是在运行时,我收到警告:

  

警告:无法加载类别“ ExternalGraphicFactory”的服务。   提供者org.geotools.renderer.style.ImageGraphicFactory不能为   实例化。

有人可以帮助我吗?

这里是完整代码:

StyleBuilder builder = new StyleBuilder();
ExternalGraphic extGraphic = builder.createExternalGraphic("file:/home/cuongnv/test.svg", "svg");

1 个答案:

答案 0 :(得分:0)

您错误地设置了图像哑剧类型,应该是:

ExternalGraphic extGraphic = builder.createExternalGraphic("file:/stuff/ian/geoserver/data/styles/burg02.svg", "image/svg"); // svg

所有方法都会起作用。

编辑

如果仍然有问题,请尝试将此代码添加到createStyle模块的末尾,并查看生成的SVG(可能在GeoServer中进行测试)。

SLDTransformer styleTransform = new SLDTransformer();
StyledLayerDescriptor sld = sf.createStyledLayerDescriptor();
UserLayer layer = sf.createUserLayer();
layer.setLayerFeatureConstraints(new FeatureTypeConstraint[] {null});
sld.addStyledLayer(layer);
layer.addUserStyle(style);

try {
  String xml = styleTransform.transform(sld);
  System.out.println(xml);
} catch (TransformerException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}