我有一个地理服务器实例,我想在其中添加许多样式。具体来说,它们是来自不同实例的样式。
我意识到我可以通过 API 来完成此操作,但我认为将样式文件从一个 data_dir 批量复制到另一个 data_dir 会更容易。
我将样式文件复制到新实例工作区的样式文件夹中,该文件夹的路径为:
/opt/geoserver/data_dir/workspaces/lc2-workspace/styles
示例样式的 XML 文件如下所示:
<style>
<id>StyleInfoImpl--7d85fe9e:18bd86044f6:-61df</id>
<name>lc2-style-99-system_load_factor</name>
<workspace>
<id>WorkspaceInfoImpl--6761a99c:189e51b8074:-7ff6</id>
</workspace>
<format>sld</format>
<languageVersion>
<version>1.1.0</version>
</languageVersion>
<filename>lc2-style-99-system_load_factor.sld</filename>
<dateCreated>2023-11-16 14:27:47.940 UTC</dateCreated>
<dateModified>2023-11-16 14:27:47.955 UTC</dateModified>
</style>
(每个都有一个关联的 .sld 文件)
工作区的workspace.xml文件如下所示:
<workspace>
<id>WorkspaceInfoImpl--6761a99c:189e51b8074:-7ff6</id>
<name>lc2-workspace</name>
<isolated>false</isolated>
<dateCreated>2023-08-11 14:59:36.44 UTC</dateCreated>
</workspace>
但它们根本不会出现在“样式”选项卡中。
我尝试重新启动该服务(而不是停止并启动运行它的 docker compose 服务),并且我还尝试在 GUI 的“服务器状态”选项卡中单击“配置和目录”的“重新加载”,但它们仍然不会出现在“Styĺes”选项卡中,并且当通过 WMS 请求请求时,它们会返回 404。
我是不是运气不好,必须通过 API 来完成?在我看来,只要 XML 文件中有正确的标签,您就应该能够像这样在数据目录之间进行批量复制。
他们不会!您需要通过 GUI 或 REST 界面告诉 GeoServer 您想要基于 SLD 文件添加新样式。然后,GeoServer 可以创建用于存储配置的必要 XML 文件。