zoukankan      html  css  js  c++  java
  • 翻译:A Picturebox Control to Display Both Remote Sensing and Regular Digital Images

    一个可以显示普通图片和遥感影像的PictureBox

    原文:http://www.codeproject.com/Articles/162595/A-Picturebox-Control-to-Display-Both-Remote-Sensin

    引言

      数字图像分析领域长期以来关注从遥感影像中提取有用的土地利用要素,比如建筑物、道路甚至设施,现在许多软件和Web Service(例如Google earth ,Google Map,ArcMap和Bing Maps)成功的应用遥感影像中的信息帮助解决一系列的公众问题比如navigation,城市规划和环境工程。然而,和一般的数字图像相比,遥感数据通常是多波段的而且数据类型多样(有Byte,integer,float和Double)。由于遥感影像的特殊性,普通的图像浏览器不能很好的支持影像显示。例如,VS中的PictureBOX不支持遥感影像的显示。

      本程序创建了一个PictureBox控件可以显示普通图像和遥感影像。与一些开源项目相比,比如MapWinGIS和SharpMap,遥感PictureBox控件是轻量级的,只包含一些简单的功能。但是,该工程为使用遥感影像的应用程序提供了影像显示控件,并且可能对使用GDAL感兴趣的初学者是有帮助的。控件使用了GDAL1.5和GDI+。GDAL是强大并且设计良好的开源资源库,可以听歌多种地理空间栅格数据的支持。GDAL的OGR库同时支持地理空间数据集vector格式,许多想Google Earth,ArcGIS,ERDAS,GRASS和IDRISI,都使用GDAL来显示和分析地理空间数据集。GDI+是一个成熟的技术,可以满足应用程序使用图形和格式化文字。被广泛应用于Windows应用程序。本工程应用GDI+来显示影像,因为他显示2D图像是有效的。
    背景

      应用GDI+显示遥感影像是从相应波段中读取数据创建一个BitMap对象创建Bitmap对象最直接的方法是从遥感影像数据中直接读取BitmapData对象。但是,通过导入全部遥感数据不是创建Bitmap明智的方法,因为加载遥感影像可能需要很大的内存消耗。本程序中,我使用了一个tricky(狡猾的,巧妙的)方法来显示影像,它能够显示大的影像数据。图二显示了渲染影像使用的影像金字塔,图2b描述了一种使用行和列方向多缓冲尺度渲染影像的方法。从节约内存考虑,根据内存限制和控件尺寸构建影像金字塔显示实际图层是常用的选择。但是,实际图层是在行和列方向按同样比例缩小的。真实和模糊的显示结果。此外,对于一个新手程序员,明智的调整尺度放大缩小时候的尺度是困难的。和构建影像金字塔相比,尺度影像使用不等的权重从GDAL中是可以被直接使用的。(通过Band.readraster函数)一旦空间显示的矩形确定下来,使用者可以根据控件大小导入遥感影像。为了提高数据加载速度本程序使用Unsafe代码。

    文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流,转载请注明出处。
  • 相关阅读:
    Sublime Text安装Package Control
    HTTP,FTP,TCP,UDP及SOCKET
    Oracle数据库的导入导出
    C#.NET中数组、ArrayList和List三者的区别
    一道有趣的逻辑面试题(数独)
    C#常用命名空间
    C# Dictionary已知value获取对应的key
    C#记录程序耗时的方法
    有return语句情况下,try-catch-finally的执行顺序
    C# 拷贝数组的几种方法
  • 原文地址:https://www.cnblogs.com/yhlx125/p/2528405.html
Copyright © 2011-2022 走看看