zoukankan      html  css  js  c++  java
  • 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。

     

  • 相关阅读:
    编程技术网站汇总
    SQL中select与set的区别-转载
    JQuery 了解
    Html--表单练习
    SqlServer--聚合函数
    SqlServer--模糊查询-通配符
    SqlServer-- NULL空值处理
    Sql--order by、desc降序、top
    Nginx+Tomcat+Memcached集群
    配置Nginx服务
  • 原文地址:https://www.cnblogs.com/YangXiaoYAng/p/11402658.html
Copyright © 2011-2022 走看看