PIE截图方法的优化

因为我们组的项目要通过截图获取数据,所以要经常使用截图工具,之前截图都是根据教程(https://www.cnblogs.com/PIESat/p/10243308.html)用的地图显示范围截图,而用地图显示范围截图有一个很大的缺陷,那就是它只能获取设备的框架(dT.DeviceFrame),也就是mapcontrol的整个范围。有时候你想要截图的范围并不是整个界面,所以这样就很不方便,这里把技术员小姐姐教我的方法介绍给大家,这个方法能截出自定义的范围,达到自己想要的效果:

                //获取截取影像的范围
                IEnvelope envelopshp = new Envelope();
                envelopshp = feature.envelop;
                //实例化输出png对象,并设置输出属性                             
                PIE.Carto.ExportPNG export = new PIE.Carto.ExportPNG();

                //确定导出png的宽度和高度
                export.Width = 512;   //(int)dT.DeviceFrame.Width;  自由设置                 
                export.Height = 512;//(int)dT.DeviceFrame.Height;  自由设置
                 // 创建一个矩形区域,将矩形范围设置为截图范围
                RectangleF rectangle = new RectangleF((float)envelopshp.XMin, (float)envelopshp.YMax, 512, 512);

                //png导出
                export.ExportFileName = PNGpath;
                export.StartExporting();
                //根据矩形范围来截取
                MC_cut2.ActiveView.Output(export as PIE.Carto.IExport, 96, rectangle, envelopshp, null);

                //空间释放
                export.FinishExporting();
                ((IDisposable)export).Dispose();
                export = null;

 

这就是通过一个矩形区域存入截图范围,且利用矩形区域截图的过程,这样就用不用把截图范围局限在mapcontrol整个界面了,最后一定要记得释放空间,要有释放空间的好习惯,这样不仅更加规范,而且也不会影响后续的处理。

至于如何将截图数据转换为GeoTiff,关键在于两个地方,一就是要有截图的四至坐标,二就是根据栅格的读取(https://www.cnblogs.com/PIESat/p/10169156.html),利用截图的四至坐标进行六参数转换,从而读为GeoTiff。

 

posted @ 2019-08-23 21:07  阳小羊🐏  阅读(230)  评论(1编辑  收藏  举报