当前位置: 代码迷 >> 综合 >> C# MapWinGIS load MBTiles(数据由TileMill软件生成)
  详细解决方案

C# MapWinGIS load MBTiles(数据由TileMill软件生成)

热度:95   发布时间:2023-12-17 03:36:38.0

希望可以帮到道路上的人,也希望大家可以多多交流,互相学习(私信可交流或者评论留言)。

背景需求:开发中遇到影像比较大,影像地图刷新效果不佳


1.用MapWinGIS加载WMS(geoserver)无果,始终加载看不见图像,map是地图控件,希望有人研究成功可私信交流或者留言,如果不能及时回复请耐心等待。

/// <summary>/// 加载wms/// </summary>private void AddWmsLayer(){try{int layerHandle = -1;WmsLayer wmsLayer = new WmsLayer();Extents extents = new Extents();//Set the wmsLayer properties, taken from geoserver.extents.SetBounds(-180, -90, 0, 0, 90, 0);wmsLayer.BaseUrl = "http://localhost:8098/geoserver/gx/wms";wmsLayer.BoundingBox = extents;wmsLayer.Contrast = (float)1.0;wmsLayer.DoCaching = false;wmsLayer.Epsg = 4326;wmsLayer.Format = @"image/png";wmsLayer.Gamma = (float)1.0;wmsLayer.Layers = "gx:googleTest";wmsLayer.Name = "googleTest";wmsLayer.Opacity = 255;wmsLayer.UseCache = false;wmsLayer.Id = 1;wmsLayer.UseTransparentColor = false;wmsLayer.Key = "1";wmsLayer.Version = tkWmsVersion.wvAuto;wmsLayer.TransparentColor = 255;wmsLayer.UseTransparentColor = true;// If everything is correct, AddLayer() does the job.layerHandle = map.AddLayer(wmsLayer, true);map.ZoomToLayer(layerHandle);}catch (Exception ex){throw;}}

2.MapWInGIS加载MBTiles

google.mbtiles是自己做的一个切片包。

   /// <summary>/// 添加MBTiles文件/// </summary>/// <param name="mdFileName">MBTiles文件绝对路径</param>private void AddMbTiles(string mdFileName){try{ImageClass image = new ImageClass();image.Open(mdFileName);map.AddLayer(image,true);}catch (Exception ex){throw;}}

通过这段代码结果如图所示:

效果评价:

数据大小:切片包有将近10G(1-18级)

卡顿测试:我的电脑上两头级别的刷新很快,中上级别稍微卡顿不会太卡,高级别刷新很快

希望可以帮到道路上的人,也希望大家可以多多交流,互相学习(私信可交流或者评论留言)。

QQ群(GIS开发交流、数据共享、软件使用):993836992

  相关解决方案