我正在研究OpenLayers v3.4以及GeoServer。 我正在尝试从我已经上传到GeoServer的形状文件中收集正确的边界框/范围数据。
我在这里从服务器收集图层。
var vectorLayer = new ol.layer.Tile({
source: new ol.source.TileWMS({
preload: Infinity,
url: 'http://localhost:8080/geoserver/Newcastle/wms',
serverType: 'geoserver',
params: {
'LAYERS': "Newcastle:Newcastle_Coverage", 'TILED': true
}
})
});
map.addLayer(vectorLayer);
我原本以为我可以从图层调用范围。
var extent = vectorLayer.extent;
但是,唉,这个程度总是“未定义”,这对我来说完全没用。 然后,我尝试直接从XML服务器下载中使用WMSCapabilities函数收集数据。
var featurePrefix = '***';
var featureType = '***';
var url = 'http://localhost:8080/geoserver/wms?request=GetCapabilities&service=WMS&version=1.1.1';
var parser = new ol.format.WMSCapabilities();
$.ajax(url).then(function (response) {
//window.alert("word");
var result = parser.read(response);
console.log(result);
window.alert(result);
var Layers = result.Capability.Layer.Layer;
var extent;
for (var i = 0, len = Layers.length; i < len; i++) {
var layerobj = Layers[i];
window.alert(layerobj.Name);
if (layerobj.Name == "Newcastle:Newcastle_Coverage")
{
extent = layerobj.BoundingBox[0].extent;
}
}
});
这在某种程度上起作用,它确实返回数据的已定义CRS的边界框。在这种情况下,它的EPSG:28356(MGA56)。我知道它的MGA56,因为我上传了它并告诉它它是什么。
我需要的是获取我不知道的形状文件的CRS细节。我怎么知道它的MGA55还是MGA54等我无法找到获取这些特定信息的方法。
答案 0 :(得分:1)
我认为使用EX_GeographicBoundingBox更容易,你知道它总是在EPSG中:4326
请参阅:https://github.com/MapStory/story-tools/blob/master/examples/common.js#L368:L379以获取示例