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

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

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


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

MapWinGIS是一个开源的GIS组件,其中包括了一个用于地图显示的控件MapWinGIS。它可以加载多种格式的地图数据,包括矢量数据、栅格数据和在线地图服务等,并提供了一系列的GIS操作功能。以下是使用C#代码加载瓦片地图的示例: 首先需要添加MapWinGIS组件的引用,然后在代码中创建一个AxMap控件对象,并设置控件的属性。具体代码如下: ``` using MapWinGIS; public partial class Form1 : Form { private AxMap axMap1; public Form1() { InitializeComponent(); axMap1 = new AxMap(); axMap1.Dock = DockStyle.Fill; this.Controls.Add(axMap1); // 设置地图属性 axMap1.SendMouseDown = true; axMap1.ShowRedrawTime = true; axMap1.TileProvider = tkTileProvider.OpenStreetMap; axMap1.TileProviderLanguage = tkTileProviderLanguage.English; } } ``` 上面代码中,我们创建了一个AxMap控件对象,并将其添加到Form中。然后设置了一些地图属性,包括瓦片提供者、语言等。其中,tkTileProvider.OpenStreetMap表示使用OpenStreetMap作为瓦片提供者,tkTileProviderLanguage.English表示使用英语作为语言。 接下来,我们可以使用以下代码实现地图的加载和显示: ``` axMap1.Clear(); // 清空地图 axMap1.GrabProjectionFromData = true; // 从数据中获取投影信息 axMap1.Projection = tkMapProjection.PROJECTION_WGS84; // 设置投影 axMap1.CurrentZoom = 10; // 设置缩放级别 axMap1.KnownExtents = tkKnownExtents.keUSA; // 设置地图范围 axMap1.Redraw(); // 刷新地图显示 ``` 以上代码中,我们首先清空了地图,然后从数据中获取投影信息并设置投影。接着设置了缩放级别和地图范围,并刷新了地图显示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值