镶嵌数据集应用示例——全球规模数据应用

来源:互联网 发布:淘宝旺旺名称怎么修改 编辑:程序博客网 时间:2024/06/04 19:24

本文基于镶嵌数据集,介绍从影像管理、显示到发布的全过程操作,手把手教您搞定海量影像数据。

 

本文使用的数据为全球30米分辨率的DEM影像数据,数据描述如下:

1)    数据格式:*.tif

2)    文件数目:22667幅影像

3)    单个影像文件大小:24.7MB

4)    总的影像文件大小:0.9TB

下面针对这份数据创建镶嵌数据集来管理影像,再制作地图,最后发布为地图服务。

一. 新建udb数据源

创建一个UDB文件型数据源,用来存储镶嵌数据集。


二. 新建镶嵌数据集

单击“镶嵌数据集”按钮后,打开“创建镶嵌数据集”对话框,这里需要设置如下信息:


设置镶嵌数据集信息和添加影像文件

  • 镶嵌数据集名称:这里设置为GlobalDEM30m。
  • 投影坐标系统,这里设置为WGS1984地理坐标。
  • 添加影像文件,在创建时,第一次添加可以添加少量的,因为第一次添加有点慢,可创建后再通过“添加镶嵌数据”的方式继续添加。

单击如下图所示的“添加文件”按钮,打开文件浏览对话框,定位到影像文件目录,通过搜索“*.tif”,搜出所有的文件,然后,这里选择了添加部分文件,大概几十个。

三. 添加镶嵌数据

第一次创建时,如果没有添加或者只添加了部分影像数据,那么可以通过这里继续添加,您可以选择将剩下所有的影像文件添加,也可以分批通过该功能添加。

由于全球DEM影像数据比较多,这里分两批添加剩余的影像文件。

添加完成后,可以在地图窗口中打开镶嵌数据集查看是否正确,是否有遗漏影像文件,,小比例尺下只能看到影像的轮廓线,小比例尺下部显示影像。

此时,可以打开镶嵌数据集的属性表,如下图所示,属性表中记录了原始影像文件的路径、分辨率等信息。


本文示例数据全球DEM30米分辨率影像22667幅,0.9TB全部添加到镶嵌数据集中,总共耗时14分钟。

四. 创建影像金字塔

原数据没有影像金字塔,所以需要创建影像金字塔,这样后面创建概视图以及数据浏览时都具有较高的效率。

  • 您可以通过iDesktop对镶嵌数据集创建金字塔,这样将对镶嵌数据集中所添加的所有影像创建金字塔,支持多进程创建。

  • 也可以使用iDesktop产品包附带的GDAL,通过命令行的方式创建金字塔,您还可以启动若干个进程分批同步创建。

下面提供了使用GDAL创建金字塔的命令行(创建影像金字塔.bat),您可以将影像文件移动到多个文件中,然后启动多个进程创建影像金字塔,可以充分利用机器资源,效率很高。

下载bat执行文件:http://pan.baidu.com/s/1hschQO8

rem 指定要创建金字塔的影像文件所在的目录,将对目录下(包括子文件夹)的所有影像文件创建金字塔

set srcdir=E:\DEM30\

 

rem 指定GDAL创建影像金字塔程序的路径

set tools="SuperMap_iDesktop_900_win64_Bin\Tools\RasterConvertToBlock\GDAL\bin\gdaladdo.exe"

 

rem 创建影像金字塔命令,其中需要指定影像文件的扩展名,这里为.tif文件

for /f "delims=" %%i in ('dir /b /a-d /s %srcdir%"*.tif"') do call %tools% -r average -ro %%i 2 4 8 16 32 64



本示例对22667幅影像创建金字塔,单张tif影像24.7MB,本文启动了7个进程进行金字塔创建,也就是将原始dem影像数据分配到7个文件夹中用于7个进程创建金字塔,共耗时125分钟。

五. 创建概视图

创建概视图,这样在小比例尺下,镶嵌数据集也能显示影像。

在“构建概视图”对话框中,您需要修改概视图影像文件的存储路径,其他可以保留默认设置。


本文示例数据全球DEM30米分辨率影像22667幅,创建概视图共耗时98分钟,产生概视图层级数为6级,共353张影像文件。

六. 镶嵌数据集显示

在地图窗口中显示镶嵌数据集,默认显示了镶嵌数据集基本内容:

1)    边界线:品红色线条。

2)    轮廓线:绿色线框。

3)    标签:一个标签专题图,显示了每幅影像的文件名称,由于小比例尺下每幅影像边框范围小,而文件名称标签太长,所以会不显示,比例尺放大后就可以显示。

4)    影像:概视图影像或者原始影像,依当前比例尺显示。

七. 设置影像显示风格

这里设置影像使用栅格函数的方式显示,制作一个三维晕渲图的效果,具体设置如下。

首先,右键影像数据图层,选择“图层属性”项目,打开图层属性对话框。


在图层属性对话框中,设置无值透明,本示例影像的无值为-32768.


设置影像的显示方式为“栅格杉树显示”,然后设置栅格函数的具体内容,如下图所示。


设置影像显示的颜色表,单击“设置”按钮,打开如下所示的对话框,选择一个色带。


单击“批量添加”按钮,打开“批量添加”对话框进行设置,设置内容包括起始、终止值和级数。




显示效果如下:


八. 保存地图和工作空间

后续,将对地图进行缓存生成,并使用多进程切图,所以数据源需要以只读方式重新打开,并保存工作空间。


九. 发布工作空间中的地图

保持地图后可以直接通过iSever发布地图服务,也可以先进行地图切图(如“第十章生成地图缓存”)然后发布地图瓦片(如“第十二章 地图缓存发布”)。

这里,简单介绍直接通过iSever发布工作空间中的地图,值得注意的是,使用SuperMap iServer发布带有镶嵌数据集的地图服务时,要使用单线程发布服务,即如下图所示,取消“是否启用多线程模式”的勾选状态。


不切图,直接发布工作空间中的地图,步骤如下图:







此时,便可以浏览发布的镶嵌数据集了。由于这种方式iServer进行动态切图,所以浏览效率不及生成瓦片后在发布到iServer的效率。

十. 生成地图缓存

1. 启动Mongo数据库服务

本文在生成地图缓存时,将缓存瓦片保存到Mongo数据库中,所以,首先,您需要启动一个mongoDB数据库服务。

这里在本地启动一个Mongo数据库服务,并将数据存储在本地的如下路径。

2. 多进程切图—生成缓存配置文件

本文使用iObjects Java组件,通过命令行的方式执行多进程切图,所以,你需要获取一个iObjects Java组件产品包。

执行多进程切图,第一步,就是通过iDesktop创建一个地图缓存配置文件.sci(这里存储路径为:E:\DEM30Workspace\GlobalDEM30.sci),其中要完成下面的设置:

  • 设置切图比例尺:这里采用全球剖分的比例尺,切到第13级,也就是影像的原始比例尺;
  • 设置缓存名称:这里设置为GlobalDEM30。
  • 设置缓存输出路径:这里可以暂时指定,命令行还会再次指定,并以命令行设置为准。
  • 设置Mongo数据库信息:如下图所示。
  • 设置切图范围:如下图所示。
  • 设置瓦片信息,如下图所示。

3. 多进程切图—创建Mongo库

根据缓存配置文件中所配置的Mongo数据库信息创建一个Mongo库。

使用如下内容创建一个批处理文件(创建MongoDB.bat)放在iObjects Java组件产品包Bin目录下执行。

下载bat执行文件:http://pan.baidu.com/s/1kUO490N

rem 该命令行程序创建一个MongoDB数据库

rem 启动前,请修改以下,变量的值:

 

rem SuperMap iObjects Java 9D产品Bin目录

set iObjectsjavaBin="E:\SMO_Java_900_15201_63072_64_x64_win_vc11_Bin\Bin\"

 

rem 下面两个参数用于拆分任务,如果是之前断点,需要续切,可以忽略这两个参数

rem 缓存配置文件*.sci路径

set sciFile="E:\DEM30Workspace\GlobalDEM30.sci"

 

rem 配置环境变量

set PATH=%iObjectsjavaBin%;%PATH%

cd %iObjectsjavaBin%

 

rem 创建一个MongoDB数据库同时在“sciFile”同级目录下生成一个新的缓存配置文件

java -cp .;com.supermap.data.jar;com.supermap.mapping.jar;com.supermap.tilestorage.jar;com.supermap.data.processing.jar   com.supermap.data.processing.cache.MongodbBuilder %sciFile%

 

pause


Mongo数据库创建成功后,会在缓存配置文件同级目录下生成一个新的缓存配置文件,这里为:GlobalDEM30..mongo.sci

4. 多进程切图—拆分任务

进行多进程切图,首先,将根据切图比例尺进行任务的拆分。

使用如下内容创建一个批处理文件(拆分任务并执行多进程切图.bat)放在iObjects Java组件产品包Bin目录下,注意:该批处理文件包含的本步骤的拆分任务和下一步的执行切图,所以两个步骤的参数设置好后在执行。

需要设置的关键参数包括:缓存配置文件、拆分后的子任务所存储的路径。

下载bat执行文件:http://pan.baidu.com/s/1pLa76T9

rem 该命令行程序可以执行多进程切图

rem 启动前,请修改以下,变量的值:

 

rem SuperMap iObjects Java 9D产品Bin目录

set iObjectsjavaBin="E:\SMO_Java_900_15201_63072_64_x64_win_vc11_Bin\Bin\"

 

rem 下面两个参数用于拆分任务,如果是之前断点,需要续切,可以忽略这两个参数

rem 缓存配置文件*.sci路径

set sciFile="E:\DEM30Workspace\GlobalDEM30.sci"

rem 拆分的子sci的存放根目录

set tasksFolder="E:\DEM30Workspace\cachedir\doing"

 

rem 下面参数用于拆分切图任务:

rem 要切图的地图及所在的工作空间。

set workspace="E:\DEM30Workspace\DEM30.smwu"

set mapName="GlobalDEM30m"

rem allTask.list 文件路径/拆分的子sci的存放根目录/单个sci文件路径(单进程),即三种情况都可以。

set allTask="E:\DEM30Workspace\cachedir\doing\task"

rem 缓存存放目录。

set cacheDir="E:\DEM30Workspace\cachedir"

rem 指定除主线程外增加的多进程数。

set processCount=8

rem 合并任务数目,指定多少个sci同时输入到一个进程里执行,即一次打开工作空间和地图后,将几个sci同时输入到一个进程里执行。

set mergeTaskNumber=50

 

 

rem 配置环境变量

set PATH=%iObjectsjavaBin%;%PATH%

cd %iObjectsjavaBin%

 

rem 该命令用于拆分任务,如果是之前断点,需要续切,可以注释掉该行,再次执行即可

java  -cp .;com.supermap.data.jar;com.supermap.mapping.jar;com.supermap.tilestorage.jar;com.supermap.data.processing.jar   com.supermap.data.processing.cache.TaskBuilder  %sciFile% %tasksFolder%

pause

 

rem 执行切图任务

java -cp .;com.supermap.data.jar;com.supermap.mapping.jar;com.supermap.tilestorage.jar;com.supermap.data.processing.jar   com.supermap.data.processing.cache.CacheBuilder %workspace% %mapName% %allTask% %cacheDir% %processCount% %mergeTaskNumber% 

 

pause


5. 多进程切图—执行多进程切图

拆分任务后,就可以执行多进程切图了。执行多进程切图任务的命令行内容包含在上一步的批处理文件中,切图需要提供的参数内容包括:

  • 进行切图的地图及所在工作空间
  • 切图任务sci所在的路径
  • 缓存输出目录
  • 启用的进程数,这里启动8个进程,在加上主进程,实际一共是9个进程在切图。

上一步的任务拆分和本步骤的执行多进程切图的命令行内容准备好后,就可以在iObjects Java组件产品包Bin目录下执行这个bat文件(下载bat执行文件:http://pan.baidu.com/s/1pLa76T9)。

拆分任务执行,在指定的子任务的存放路径下,将生成一个task文件夹,其下为拆分的子sci文件,用于多进程切图。


接下来执行多进程切图,如下所示,共有9个进程。


切图完成的任务将被移动到与task同级的build文件夹下。

十一. 处理结果数据统计

本文示例数据全球DEM30米分辨率影像,镶嵌数据集构建结果数据如下:
  • 数据格式:*.tif
  • 文件数目:22667幅影像
  • 单个影像文件大小:24.7MB
  • 总的影像文件大小:0.9TB
  • 全部添加到镶嵌数据集中,总共耗时14分钟
  • 启动了7个进程进行金字塔创建,共耗时125分钟
  • 创建概视图共耗时98分钟,产生概视图层级数为6级,共353张影像文件,共4.23GB
另外,这里附带一下全球影像镶嵌数据集构建的结果数据:

  • 数据格式:*.tif
  • 文件数目:467幅影像
  • 总的影像文件大小:2TB
  • 创建概视图共耗时111分钟,产生概视图层级数为6级,共332张影像文件,共4.2GB

本文示例数据全球DEM30米分辨率影像,切图结果数据如下:

  • 共耗时:39小时36分钟。
  • 产生瓦片数目:14407748。
  • 单张瓦片耗时:9.89毫秒。
  • Mongo数据库中瓦片所占存储空间:499GB 

十二. 地图缓存发布

将切好的Mongo瓦片通过iServer发布为地图服务。

你需要获取一个iServer产品包,然后启动服务,创建一个管理员账户,就可以发布地图服务了。

进入服务管理器,登录后,选择“快速发布一个或一组服务”;


选择数据来源为“MongoDB瓦片”


设置Mongo数据库信息,包括数据库服务地址和数据库名称。

设置发布的地图的名称。

设置发布的服务类型,这里选择REST地图服务。

发布成功,查看地图服务。


 

 

阅读全文
1 0
原创粉丝点击