我正在尝试将地图从 WMS 获取到 MapsUI 地图上的图层。但是,WMS 图层不会出现在地图上。我有一个简单的视图,只有一个 MapControl (mapControl)
//create wms layer
public async Task CreateLayerAsync()
{
var layer = new ImageLayer("NOAA WMS")
{
DataSource = await CreateWmsProviderAsync(),
Style = new RasterStyle()
};
mapControl.Map?.Layers.Add(layer);
}
private static async Task<WmsProvider> CreateWmsProviderAsync()
{
const string wmsUrl = "https://mapservices.weather.noaa.gov/eventdriven/services/radar/radar_base_reflectivity_time/ImageServer/WMSServer";
var provider = await WmsProvider.CreateAsync(wmsUrl);
provider.ContinueOnError = true;
provider.TimeOut = 20000;
provider.CRS = "EPSG:84";
provider.AddLayer("0");
provider.SetImageFormat(provider.OutputFormats[1]);
return provider;
}
WMS GetCapability 文档的链接位于:https://mapservices.weather.noaa.gov/eventdriven/services/radar/radar_base_reflectivity_time/ImageServer/WMSServer?request=GetCapativity&service=WMS。
有什么想法吗?这是我第一次深入研究 GIS 和地图渲染,因此任何指点都将不胜感激。
如果您将此地图显示在经常使用的 osm 切片图层之上,您需要像这样设置 CRS:
provider.CRS = "EPSG:3857";
如果您想显示 NOAA 图层而不显示其他图层,您可以使用
provider.CRS = "EPSG:4326";
。而不是 EPSG:84