Я пытаюсь использовать GeoTools для записи SLD на лету для приложения, которое я разрабатываю.Но, как ни старайся, я не могу получить вывод SLD.
Начиная с SLD, который выглядит следующим образом:
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NamedLayer>
<Name>named_layer</Name>
<UserStyle>
<Name>style</Name>
<IsDefault>true</IsDefault>
<FeatureTypeStyle>
<Rule>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#00aa00</CssParameter>
</Fill>
<Stroke>
<CssParameter name="stroke">#000000</CssParameter>
<CssParameter name="stroke-width">0.15</CssParameter>
</Stroke>
</Mark>
<Size>8</Size>
</Graphic>
</PointSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
Я использую следующий код:
package com.example.sld;
import org.geotools.sld.SLDConfiguration;
import org.geotools.sld.bindings.SLD;
import org.geotools.styling.StyledLayerDescriptor;
import org.geotools.xml.Configuration;
import org.geotools.xml.Encoder;
import org.geotools.xml.Parser;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.io.InputStream;
public class TestStyle {
private String style;
public TestStyle() {
Configuration config = new SLDConfiguration();
Parser parser = new Parser(config);
InputStream is = getClass().getResourceAsStream("test-sld.xml");
StyledLayerDescriptor sld = null;
try {
sld = (StyledLayerDescriptor) parser.parse(is);
} catch (SAXException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Configuration configuration = new SLDConfiguration();
Encoder encoder = new Encoder(configuration);
encoder.setOmitXMLDeclaration(true);
try {
this.style = encoder.encodeAsString(sld, SLD.STYLEDLAYERDESCRIPTOR);
} catch (IOException e) {
e.printStackTrace();
}
this.style = new String();
}
}
SLD анализирует ОК.Я могу проверить его структуру в моем отладчике, и он читается правильно.Но при кодировании результирующий SLD пуст:
<sld:StyledLayerDescriptor xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:sld="http://www.opengis.net/sld" xmlns:xlink="http://www.w3.org/1999/xlink"/>
Что я делаю не так?
(Версия GeoTools - 20.1, следуя инструкциям здесь: http://docs.geotools.org/latest/userguide/library/xml/style.html#encoder)
Заранее спасибо