我正在使用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
类中的数据存储区/层定义边界框。到目前为止,我在创建数据存储区时找不到任何定义方法。
提前致谢
答案 0 :(得分:0)
我找到了答案。我换了两节课。第一个是xxxFeatureSource
,它扩展了ContentFeatureSource
(它位于ContentDataStore插件中),第二个是DataStoreFileResource
。
在xxxFeatureSource
中,我覆盖了ReferencedEnvelope getBoundsInternal()
方法并实现了计算我的boundingBox的代码。
在DataStoreFileResource
我添加了这一行;
ftInfo.setLatLonBoundingBox( bounds );
进入void handlePut()
方法,就在ftInfo.setNativeBoundingBox( bounds )
之后。
现在我可以通过GeoServer rest api添加我的DataStore后使用getCapabilities方法。
希望它也有助于其他人。