我正在使用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类中的数据存储/层定义边界框。到目前为止,我无法在创建数据存储时找到任何定义方法。
提前感谢
发布于 2016-06-09 08:38:38
我找到了答案。我换了两个班。第一个是xxxFeatureSource,它扩展了ContentFeatureSource (它在ContentDataStore插件中),第二个是DataStoreFileResource。
在xxxFeatureSource中,我重写了ReferencedEnvelope getBoundsInternal()方法并实现了计算我的boundingBox的代码。
在DataStoreFileResource中,我添加了这一行;
ftInfo.setLatLonBoundingBox( bounds );进入void handlePut()方法,就在ftInfo.setNativeBoundingBox( bounds )之后。
现在,我可以在通过getCapabilities rest添加DataStore之后使用GeoServer方法。
希望它也能帮助别人。
https://stackoverflow.com/questions/37701162
复制相似问题