Geoserver 在创建时动态设置 datastore/layer 的边界框/referencedEnvelope
Geoserver dynamically set bounding box / referencedEnvelope of datastore/layer when creating
我正在使用 geoserver
。我扩展了 ContentDataStore
插件以将 csv 数据类型添加为图层。我实际上正在使用 geoserver rest api
、HTTPUtils.put
方法。当我这样做时,创建数据存储时没有定义边界框,这与在 geoserver web application
上手动创建时不同。因此,当我尝试使用 wms-getCapabilities
方法时出现异常,因为没有定义边界框。
The getCapabilities query is below:
localhost:8090/geoserver/wms?Service=WMS&Version=1.1.1&Request=GetCapabilities
The inner exception is below:
Caused by: java.lang.NullPointerException
at org.geoserver.wms.capabilities.GetCapabilitiesTransformer$CapabilitiesTranslator.handleLatLonBBox(GetCapabilitiesTransformer.java:1349)
at org.geoserver.wms.capabilities.GetCapabilitiesTransformer$CapabilitiesTranslator.handleLayer(GetCapabilitiesTransformer.java:901)
at org.geoserver.wms.capabilities.GetCapabilitiesTransformer$CapabilitiesTranslator.handleLayerTree(GetCapabilitiesTransformer.java:826)
... 90 more
有没有办法为 xxxDataStore or xxxDataStoreFactory
类 中的 datastore/layer 定义边界框。到目前为止,我在创建数据存储区时找不到任何定义方法。
提前致谢
我找到了答案。我改了2类。第一个是 xxxFeatureSource
扩展 ContentFeatureSource
(它在 ContentDataStore 插件中),第二个是 DataStoreFileResource
.
在 xxxFeatureSource
中,我重写了 ReferencedEnvelope getBoundsInternal()
方法并实现了计算边界框的代码。
在DataStoreFileResource
中我添加了这一行;
ftInfo.setLatLonBoundingBox( bounds );
进入 void handlePut()
方法,就在 ftInfo.setNativeBoundingBox( bounds )
.
之后
现在我可以在通过 GeoServer rest 添加我的 DataStore 后使用 getCapabilities 方法 api。
希望对其他人也有帮助。
我正在使用 geoserver
。我扩展了 ContentDataStore
插件以将 csv 数据类型添加为图层。我实际上正在使用 geoserver rest api
、HTTPUtils.put
方法。当我这样做时,创建数据存储时没有定义边界框,这与在 geoserver web application
上手动创建时不同。因此,当我尝试使用 wms-getCapabilities
方法时出现异常,因为没有定义边界框。
The getCapabilities query is below:
localhost:8090/geoserver/wms?Service=WMS&Version=1.1.1&Request=GetCapabilities
The inner exception is below:
Caused by: java.lang.NullPointerException
at org.geoserver.wms.capabilities.GetCapabilitiesTransformer$CapabilitiesTranslator.handleLatLonBBox(GetCapabilitiesTransformer.java:1349)
at org.geoserver.wms.capabilities.GetCapabilitiesTransformer$CapabilitiesTranslator.handleLayer(GetCapabilitiesTransformer.java:901)
at org.geoserver.wms.capabilities.GetCapabilitiesTransformer$CapabilitiesTranslator.handleLayerTree(GetCapabilitiesTransformer.java:826)
... 90 more
有没有办法为 xxxDataStore or xxxDataStoreFactory
类 中的 datastore/layer 定义边界框。到目前为止,我在创建数据存储区时找不到任何定义方法。
提前致谢
我找到了答案。我改了2类。第一个是 xxxFeatureSource
扩展 ContentFeatureSource
(它在 ContentDataStore 插件中),第二个是 DataStoreFileResource
.
在 xxxFeatureSource
中,我重写了 ReferencedEnvelope getBoundsInternal()
方法并实现了计算边界框的代码。
在DataStoreFileResource
中我添加了这一行;
ftInfo.setLatLonBoundingBox( bounds );
进入 void handlePut()
方法,就在 ftInfo.setNativeBoundingBox( bounds )
.
现在我可以在通过 GeoServer rest 添加我的 DataStore 后使用 getCapabilities 方法 api。
希望对其他人也有帮助。