首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建数据存储/层时,Geoserver动态设置数据存储/层的边界框/ referencedEnvelope

创建数据存储/层时,Geoserver动态设置数据存储/层的边界框/ referencedEnvelope
EN

Stack Overflow用户
提问于 2016-06-08 11:25:30
回答 1查看 681关注 0票数 0

我正在使用geoserver。我扩展了ContentDataStore插件,将csv数据类型作为层添加。我实际上使用的是geoserver rest apiHTTPUtils.put方法。当我这样做时,数据存储将在没有定义边界框的情况下被创建,这与在geoserver web application上手动创建数据存储不同。因此,当我尝试使用wms-getCapabilities方法时,我会得到一个异常,因为没有定义边界框。

代码语言:javascript
复制
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类中的数据存储/层定义边界框。到目前为止,我无法在创建数据存储时找到任何定义方法。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-09 08:38:38

我找到了答案。我换了两个班。第一个是xxxFeatureSource,它扩展了ContentFeatureSource (它在ContentDataStore插件中),第二个是DataStoreFileResource

xxxFeatureSource中,我重写了ReferencedEnvelope getBoundsInternal()方法并实现了计算我的boundingBox的代码。

DataStoreFileResource中,我添加了这一行;

代码语言:javascript
复制
ftInfo.setLatLonBoundingBox( bounds );

进入void handlePut()方法,就在ftInfo.setNativeBoundingBox( bounds )之后。

现在,我可以在通过getCapabilities rest添加DataStore之后使用GeoServer方法。

希望它也能帮助别人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37701162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档