WorldWind系列十五:如何切割影像和DEM数据及其在WW中的应用配置_第1页
WorldWind系列十五:如何切割影像和DEM数据及其在WW中的应用配置_第2页
WorldWind系列十五:如何切割影像和DEM数据及其在WW中的应用配置_第3页
WorldWind系列十五:如何切割影像和DEM数据及其在WW中的应用配置_第4页
WorldWind系列十五:如何切割影像和DEM数据及其在WW中的应用配置_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WorldWind系列十五:如何切割影像和DEM数据及其在WW中的应用配置来源:博客园作者:无痕客WorldWind学习系列十四中我从代码上分析如何加载DEM数据,里面涉及了算法,有学习和借鉴意义。但对于只求应用或者说是急于求成的网友来说,实用价值不是太大!我们分析代码是一种学习过程,不是目的,终究要落在如何应用自己的影像和DEM数据、如何基于自己的数据开发满足自己项目需求的新的WW插件。这是一过程,需要循序渐进,今天只跟大家分享一下如何切割自己的影像或DEM,及如何设置相应的XML配置。我的学习和实践,主要是参考/wiki/Dstile_howto,对于英语较好的网友,建议阅读原文,反正我英语不太好,结合实践,我差不多看了五六遍原文。我下面是翻译部分内容及自己的实践步骤和心得(将采用红色字部分)。这是一篇教你如何一步步将你自己的具有地理参考系的影像数据添加到WorldWind中的文档。该帮助文档将告诉你如何将影像数据切割成瓦片,及怎样在WW中利用这些瓦片数据创建图层。至此,你可以将该图层作为一个Add-on插件来发布。这个图层可以完全放在你的电脑上。如果你想将瓦片数据作为发布服务提供给他人,该文档可能对你帮助不大。WW的瓦片系统的组织如下图:阅读下面的内容前,请确保你已经理解上图中WW瓦片的工作原理和XML的配置原理。(注:上图是WW的精华)下面我将带你创建一个图层实例,里面的数据可以换做你自己的。(注:第一次实践的话,建议你使用同样的数据同样的步骤,将整个过程走一遍)必备软件工具:FWTools:这是一个操作具有地理参考系影像的免费的工具包,是开源工具。dstile切图工具需要使用FWTools,最新版本V2.4.6。下载地址:/安装FWTools时,你可以选择不安装开发文件,这样可以节省一些安装空间。dstile工具与2.X版本兼容,与1.X版FWTools不兼容。Dstile:使用版本是2007年8月13日,下载地址::8080/tisham/dstile-0.2_win32_whatnickpatches.zip这个程序按照MakingLayers文章的处理过程。请将压缩文件解压后拷贝到FWTools的安装目录下(如:D:\ProgramFiles\FWTools2.4.6)WorldWind(1.4版)前期准备:除了软件,你还将需要一个具有参考系的影像数据。本文中,我将使用特拉华州北部的地质图。(下载:/publications/digitaldata/geologicdata.aspx文中使用的是第六个TIFF数据)影像格式必须是FWTools所支持的(here)。Dstile目前不能处理索引影像,但是这样的影像可以先通过FWTools中pct2rgb功能转换成RGB影像。简便起见,我会将影像数据放到FWTool文件夹下,但也可放在其他地方,使用时确保正确的影像文件路径。Dstile也可以切合地形数据,只需要在命令行中添加--dem参数。注意:地形数据必须是16位的。创建瓦片金字塔:Dstile是个命令行程序,在你的开始菜单中运行“FWToolsshell”(注:安装FWTools会在桌面上出现该快捷图标)。将会出现带FWTools路径的命令行窗口。你也可以在FWTools文件夹下运行“setfw.bat”命令脚本。创建瓦片的通用命令行格式如下:dstile.exetile--lztsdtile_size--wwcache--overviewsoutput_directorygeoreferenced_image_file(s)参数如下:tile_size-0图层瓦片大小,十进制数,能被180正常(最好为180/(2^N))。output_directory-瓦片金字塔的输出路径。(如何没有盘符只要文件夹名,是在FWTool安装目录下)georeferenced_image_file(s)-影像数据的完整路径(如果影像数据在FWTool安装目录下的文件夹下,可以使用相对路径).一系列的多重影像可以自动组合成单一的瓦片金字塔。(Alistofmultipleimagefilescanbesuppliedandwillbeautomaticallycombinedintoasinglesetoftiles.)命令说明:--tile:告诉dstile将要创建瓦片金字塔--wwcache:告诉dstile按WorldWind的内部格式组织和命名创建的瓦片--overviews:告诉dstile去创建所有可以创建的瓦片图层,忽略该命令,将会导致只创建最详细的瓦片图层--png:通常用来创建.png格式的瓦片(速度慢且没压缩),忽略该命令,将默认为jpg格式瓦片--float:被用来切割浮点型DEM数据,比Int16稍微更准确些。--srcProj:被用来指明缺少.tif/.tfw文件时的投影坐标。使用epsg代码。例如epsg:32754isUTMZone54S,epsg:4326isWGS84.学会在FWToolsShell中查看命令:我示例中的地质图,我使用如下命令创建瓦片金字塔:dstile.exetile--lztsd1.0--wwcache--overviewsoutput_tilesgeomap10.tif将会在FWTools的安装目录下创建一个新的output_tiles文件夹,里面存放着瓦片金字塔系统。输入影像文件为geomap10.tif。注意:这个输入文件必须是影像数据自身,而不是世界文件(示例中的geomap10.tfw)尽管.tfw文件是必须的且必须与影像数据在同一个文件夹下。在这个例子中,output_tiles文件夹下创建了六层数据(文件夹名字从0到5)。Dstile运行中,会依次读取输入参数,并显示进度。处理该111M的影像数据花费了一两分钟。据说dstile在FreeEarthFoundation网站的应用中,单机从21GB中录制1.8G的瓦片树花了70分钟。这是我使用自己的试验数据生成的瓦片金字塔,为9层。0层瓦片大小(Levelzerotilesize):这个参数控制着你的影像图层在哪一缩放界别或视角高度上显示。0层瓦片大小越大说明你放大时越早出现,同理相反。作为参照,thebluemarble的lzts为36°,WorldWind中默认的Landsat图层的LZTS为2.25°。Zoomit!功能中的高分辨率影像使用的LZTS为0.1~0.2度。在地质图中,我使用1°的LZTS。这使得该图层将会在海拔390千米左右出现。你也可以按照自己的需要改变该参数。LZTS的大小理想值为最好为180/(2^N),N为整数。该例子中理想的LZTS为1.40625(180/(2^7))。如果dstile的切割值不满足该表达式,可能会导致图层在WW中绘制是出现水平定位问题。本实例中的地图没有表现出该问题是因为相对粗略的比例尺。高精度的正射影像更可能会出现水平定位问题,所以最好是遵循该表达式180/(2^N)规则。向WW中添加图层:为了在WW中显示该图层,需要将切好的瓦片数据放到WW的目录下,同时要为该新图层创建一个XML配置文件。本实例中,我将瓦片数据放在\Data\Earth目录下。同样,瓦片数据可以在/Add-ons/的任何位置。我没有将数据放到\Cache\目录下,是因为我偶尔会删除缓存文件夹下所以数据。我会在\Cache下存放可以重新下载的数据。因此我将output_files文件夹下的所有内容放在WW目录的"\Data\Earth\N.Delawaregeologymap\"里。这些瓦片文件在WW目录下的组织方式由你来定。如果我有很多地质地图放在WW离,我可能会创建个文件夹然后把瓦片数据放到里面。(例如:\Data\Earth\Geologymaps\N.Delaware\)只要你能让WW按照你的组织方式找到它们。一旦瓦片数据放好位置,我们需要为该图层创建一个XML文件。该XML文件存放在WW中的\Config\Earth\。将XML命名为图层名是很好的方式。我使用的XML内容如下:<?xmlversion="1.0"encoding="UTF-8"?><LayerSetName="Geologymaps"ShowOnlyOneLayer="false"ShowAtStartup="false"xmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="LayerSet.xsd"><QuadTileSetShowAtStartup="true"><Name>N.Delaware</Name><DistanceAboveSurface>0</DistanceAboveSurface><BoundingBox><North><Value>40.0</Value></North><South><Value>39.0</Value></South><West><Value>-76.0</Value></West><East><Value>-75.0</Value></East></BoundingBox><TerrainMapped>true</TerrainMapped><ImageAccessor><LevelZeroTileSizeDegrees>1.0</LevelZeroTileSizeDegrees><NumberLevels>6</NumberLevels><TextureSizePixels>512</TextureSizePixels><ImageFileExtension>jpg</ImageFileExtension><PermanentDirectory>Data\Earth\N.Delawaregeologymap</PermanentDirectory></ImageAccessor><TransparentColor><Red>0</Red><Green>0</Green><Blue>0</Blue></TransparentColor></QuadTileSet></LayerSet>"LevelZeroTileSizeDegrees"为你切割影像时的LZTS的值"PermanentDirectory":是你存放瓦片的文件夹路径图层集合的名字定义为:"Geologymaps",该图层的名字为"N.Delaware".影像外部的部分空白的,对应的瓦片是黑色的。"TransparentColor"的值似的那些部分是透明的。注意:这会使得影像里纯黑部分是透明的。一些预处理步骤可能会修正它。例如在影像中默认的空值和假定真实影像中没有像素是纯白的。修正方法如下:1.给纯黑像素添加一个偏移量(如32)2.将所有的白像素点为黑色3.切割时使用上面设置的透明颜色因为JPEG压缩过程中黑边不是全黑的,可以采用下面的方式:<TransparentMinValue>0</TransparentMinValue><TransparentMaxValue>20</TransparentMaxValue>根据经验采用最好可视效果的透明最大值,20只是建议值。自定义DEM向WW中添加自定义的DEM与添加影像的处理很类似。但是,瓦片数据和XML代码分别放在Cache目录下和earth.xml中。Dstile命令:DEMtif必须是float32或int16格式的,并且是一个色带。命令行如下:dstiletile--lztsd<levelzerotilesizeindegrees>--wwcache[tileoutinworldwindcacheformat]--dem[usedemtilingswitch][--srcProjepsg:4326]--overviews[buildhigherleveloverviews]<destinationdirectory><sourcefile(s)>命令及参数基本与上面介绍的类似,只是需要“--dem”命令。瓦片数据存放位置:将瓦片数据放在Cache里的SRTM中的自定义文件夹下。例如:X:\WorldWind\Cache\Earth\SRTM\<CustomDEM>.DEM数据切割生成金字塔:XML格式在config文件夹下的Earth.xml,在TerrainAccessor标签下添加HigherResolutionSubset自标签。同时名字和数据集名字要与上面自定义的文件夹名相同。格式如下:<HigherResolutionSubsetsName="CustomDEM"><TerrainTileService><ServerUrl></ServerUrl><DataSetName>CustomDEM</DataSetName><LevelZeroTileSizeDegrees>0.5</LevelZeroTileSizeDegrees><NumberLevels>6</NumberLevels><SamplesPerTile>512</SamplesPerTile><DataFormat>Int16</DataFormat><FileExtension>bil</FileExtension></TerrainTileService><LatLonBoundingBox><North><Value>0.0</Value></North><South><Value>-1.0</Value></South><West><Value>0.0</Value></West><East><Value>1.0</Value></East></LatLonBoundingBox></HigherResolutionSubsets>你可以在TerrainManager里关闭或打开该图层;注意:你需要缩放操作来实现切换。实验结果截图:我后来添加自己的数据的截图:相应的XML配置文件内容:<?xmlversion="1.0"encoding="UTF-8"?><LayerSetName="Geologymaps"ShowOnlyOneLayer="false"ShowAtStartup="true"xmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="LayerSet.xsd"><QuadTileSetShowAtStartup="true"><Name>GW</Name><DistanceAboveSurface>0</DistanceAboveSurface><BoundingBox><North>//这下面的值可以通过gdalinfoxxx.tif里获取<Value>38</Value></North><South><Value>37</Value></South><West><Value>102</Value></West><East><Value>104</Value></East></BoundingBox><TerrainMapped>true</TerrainMapped>//是否启用地形数据<ImageAccessor><LevelZeroTileSizeDegrees>1.0</LevelZeroTileSizeDegrees><NumberLevels>9</NumberLevels><TextureSizePixels>512</TextureSizePixels><ImageFileExtension>jpg</ImageFileExtension><PermanentDirectory>Data\Earth\GW</PermanentDirectory></ImageAccessor><TransparentColor><Red>0</Red><Green>0</Green><Blue>0</Blue></TransparentColor></QuadTileSet></LayerSet>提示:1.当你测试LZTS时,每次运行前最好把输出文件夹清空。因为Dstile创建的新的瓦片数据可能和已经存在的数据重叠,但不会清出原有的瓦片数据。2.将输出文件夹路径设定为WW目录下面是不错的选中。我使用实例中临时文件夹更容易学习。你可以直接定义你要WW中存放瓦片的文件夹目录,例如dstile.exetile--lztsd1.0--wwcache--overviews"C:\ProgramFiles\NASA\WorldWind1.4\Add-ons\Earth\geomap10"geomap10.tif3.为了使切割的影像不超出WGS84的最大范围(-180,-90,180,90),你可以使用如下方式查询:gdalinfogeom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论