I configured symbol systems for some polygon features in ArcMap, which include symbols with fill patterns and some symbols with slanted lines. I exported these symbol systems as LYR files, then converted them to QML using a QGIS conversion plugin. After importing the QML into QGIS and exporting the symbol systems as SLD files, I attempted to import the SLD files into GeoServer. However, I encountered following error message as shown in the screenshot below:
java.lang.RuntimeException: Parsing failed for href: javanet URiSyntaxException: Illegal character in authority at index 6: ttf://ESRI Cartography
[![enter image description here][1]][1]
After placing the relevant ESRI fonts in the 'style' folder of the symbol system workspace and modifying the configuration file syntax to eliminate syntax validation errors, the symbols are still not displaying correctly, as shown in the screenshot below.
[![enter image description here][2]][2]
[![enter image description here][3]][3]
The correct style for the legend is as follows:
I have also installed the ESRI font on the system where GeoServer is located, and through GeoServer's REST interface, I can see that the font is available, as shown in the screenshot below.
I'd like to know how I can correctly display the symbols configured in ArcMap. If replicating ArcGIS symbols isn't possible, what are the ways to achieve these symbols?
I attempted to modify the SLD and enabled Mark Factory Precedence for the corresponding workspace in the WMS service, but still couldn't achieve the desired symbols. The code is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:se="http://www.opengis.net/se" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1.0" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd">
<NamedLayer>
<se:Name>p6_治理恢复</se:Name>
<UserStyle>
<se:Name>p6_治理恢复</se:Name>
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>耕地恢复</se:Name>
<se:Description>
<se:Title>耕地恢复</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>tblx</ogc:PropertyName>
<ogc:Literal>耕地恢复</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#f8d072</se:SvgParameter>
</se:Fill>
</se:PolygonSymbolizer>
<se:PolygonSymbolizer>
<se:Fill>
<se:GraphicFill>
<se:Graphic>
<se:Mark>
<se:WellKnownName>ttf://ESRI Cartography#0xc8</se:WellKnownName>
<se:Fill>
<CssParameter name="fill">#FF0000</CssParameter>
</se:Fill>
</se:Mark>
</se:Graphic>
</se:GraphicFill>
</se:Fill>
</se:PolygonSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
2023/9/18 Additional information provided for the question.
This is the result when I comment out the 'filter' field in the SLD.
This is the display result of the point symbol I created.
Although the point symbol is displayed, the result is different from what is seen in QGIS.