osgEarth如何加载离线谷歌卫星地图瓦片的源码教程

说明

本实例演示重新编译bing驱动直接加载本地离线影像瓦片地图。

本实例使用软件版本:osg3.3.1和osgEarth2.5 VC10编译环境(参考osgearth加载谷歌卫星地图的源码案例),vs2010,水经注万能地图下载器。

 osgdb_osgearth_bingd.rar (52.96
KB, 下载次数: 786)

 osgearthAPI.rar (31.91
KB, 下载次数: 831)

影像瓦片来源“水经注万能地图下载器”。如果没有安装本软件,可以百度“水经注软件”到官方网站下载。

一、下载瓦片数据

启动水经注万能地图下载器,点击“我的下载”,选择“新建任务”,弹出“选择地图类型” 对话框,选择相应的地图类型,点击“确认”,如下图。

弹出“新建任务”对话框

输入全球坐标,由于我们需要导出瓦片数据,为了增加缩放效果,这里我们从1级到8级都勾选上。选择好级别后,点击开始下载。下载完成后会弹出对话框询问是否要立即导出,选择“是”,然后显示“导出图片数据”对话框,如下图所示。

在该对话框中,选择导出“瓦片:Bing Map”,导出级别“1-8”,选择保存路径,点击“输出”按钮导出数据即可。

二、重新编译Bing驱动

新建“osgdb_osgearth_bingd” 动态库项目,如下图所示。

点击“确定”,弹出“应用程序向导”,如下图所示。

点击下一步

选择程序类型“DLL”,点击“完成”。

添加“包含目录”和“库目录”

包含目录设置为“D:\OSG\include”

库目录设置为“D:\OSG\lib“

以上目录路径根据OSG文件位置设定。

附加依赖项

OpenThreads.lib

osgd.lib

osgAnimationd.lib

osgDBd.lib

osgdb_osgearth_feature_ogrd.lib

osgdb_osgearth_feature_tfsd.lib

osgdb_osgearth_feature_wfsd.lib

osgEarthd.lib

osgEarthAnnotationd.lib

osgEarthFeaturesd.lib

osgEarthSymbologyd.lib

osgEarthUtild.lib

osgFXd.lib

osgGAd.lib

osgManipulatord.lib

osgParticled.lib

osgPresentationd.lib

osgShadowd.lib

osgSimd.lib

osgTerraind.lib

osgTextd.lib

osgUtild.lib

osgViewerd.lib

osgVolumed.lib

osgWidgetd.lib

点击“确定“。

根据D:\OSG\src\osgearth_2.5\osgearth_gitgui\src\osgEarthDrivers\bing路径找到Bing驱动源代码,如下图所示。

BingTileSource.cpp中的代码复制粘贴到,刚刚新建的osgdb_osgearth_bingd.cpp中

如下图所示。

下一步改写代码

#include " BingOptions"   改成   #include "osgEarthDrivers/bing/BingOptions"

_debugDirect ( false)    默认为false 改成_debugDirect ( true )

找到getDirectURI()将内容替换成:

return stringify()<<"D:/Test/tt3Bing"<<getLodKey(key)<<"/"<<getQuadKey(key)<<".jpg";

新建

td::string getLodKey(const TileKey& key)

{

unsigned int lod = key.getLevelOfDetail()+2;

std::stringstream sLod;

if(lod<10)

sLod<<"/L0"<<lod;

if(lod>=10)

sLod<<"/L"<<lod;

//OE_WARN << LC << "sLod: "<<sLod.str() << std::endl;

return sLod.str();

}

注意:其中“D:/Test/tt3Bing“为下载的瓦片存放路径。

重新生成。

生成成功后可以在osgdb_osgearth_bingd.项目Debug中查看到

文件。

拷贝到OSG的bin目录下,替换掉之前的dll文件。

三、新建osgearth应用程序

新建步奏跟新建动态库类似,只是不再选择“DLL“,选择“控制台应用程序“

设置“包含目录“,”库目录“,”依赖项“跟DLL设置一样。

这里新建了一个名为“osgearthAPI“的控制台应用程序。代码如下

#include "stdafx.h"

#include <osgViewer/Viewer>

#include <osgViewer/ViewerEventHandlers>

#include <osgGA/StateSetManipulator>

#include <osgGA/TrackballManipulator>

#include <osgEarth/Map>

#include <osgEarth/MapNode>

#include <osgEarthDrivers/gdal/GDALOptions>

#include <osgEarthDrivers/bing/BingOptions>

#include <osgEarthDrivers/model_feature_geom/FeatureGeomModelOptions>

#include <osgEarthDrivers/feature_ogr/OGRFeatureOptions>

#include <osgEarthDrivers/cache_filesystem/FileSystemCache>

#include <osgEarthUtil/EarthManipulator>

#include <osgEarthUtil/GeodeticGraticule>

#include <osgEarthUtil/LatLongFormatter>

#include <osgEarthUtil/Controls>

#include <osgEarthUtil/MouseCoordsTool>

#include <osgEarthUtil/AutoClipPlaneHandler>

#include <osg/PositionAttitudeTransform>

#include <osg/Group>

#include <osg/Node>

#include <osgDB/ReadFile>

#include <osgUtil\optimizer>

int _tmain(int argc, _TCHAR* argv[])

{

osgEarth::Map* map = new osgEarth::Map();

osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer();

osg::Group* root = new osg::Group;

osg::Node* tankNode = NULL;

osg::Vec3 tankPosit;

//        osgEarth:rivers::GDALOptions
gdal;

osgEarth:rivers::BingOptions
bing;

//        gdal.url()="D:/Documents/Visual Studio 2010/Projects/test3/test3/data/world.tif";

//        map->addImageLayer(new osgEarth::ImageLayer("xx",gdal));

map->addImageLayer(new osgEarth::ImageLayer("xx",bing));

osgEarth::MapNode* mapNode = new osgEarth::MapNode(map);

viewer->setSceneData( mapNode );

viewer->realize();

return viewer->run();

}

启动程序,运行效果如下图所示。

至此,Osgearth加载本地离线影像瓦片地图案例完成。

时间: 2024-10-10 07:28:34

osgEarth如何加载离线谷歌卫星地图瓦片的源码教程的相关文章

vue element-ui,上传文件加载进度条显示效果(使用定时器实现源码分享)

上传文件效果如图: 父组件相关代码 html <drag-upload ref='mychild' action="//接口相关地址" v-model="versionwareList" @submitUploadParent='formSubmit' @input='delUpload' :autoUpload="autoUpload" :visible="visible" :disabled="disabl

如何在OsgEarth中加载谷歌卫星地图的ArcGISServer服务教程

说明: 本实例演示如何在arcgis中发布下载好的影像瓦片数据,在osgearth中加载发布好的瓦片服务. 本实例使用软件版本:ArcGIS10.2,osg3.3.1和osgEarth2.5 VC10编译环境(参考osgearth加载谷歌卫星地图的源码案例),水经注万能地图下载器. 影像瓦片来源"水经注万能地图下载器".如果没有安装本软件,可以百度"水经注软件"到官方网站下载. 一.下载瓦片数据 启动水经注万能地图下载器,点击"框选下载区域",双

osgEarth加载谷歌卫星地图的源码案例

一.准备工作 安装水经注万能地图下载器,如果没有安装本软件,可以百度"水经注软件"到官方网站下载. 编译OSG.OSGEarth和第三方插件等,这里有一个已经编译好的vs2010+osgearth,下载地址"http://pan.baidu.com/share/link?shareid=107009& uk=2801833827". 二.下载地图 首先需要把谷歌卫星地图下载下来,这里以"郫县"为例. 启动水经注万能地图下载器,点击&quo

2015年全国谷歌卫星地图离线数据存储方案

一.概述 随着地理信息数字化的发展,大数据时代的到来.海量数据的传输和安全性给我们带来巨大的困难.海量数据的传输受到互联网技术和硬件的限制,占用着较多的在线资源和线下存储空间,产生了能源.空间.人力的成本浪费,而在传输数据和存储过程中,不规范的操作造成的数据泄露,更是数据安全更须要保证或要解决的问题. 离线数据的应用,不仅避免了大传输数据带来的弊端,更保证了大数据在应用过程中的安全性.为本地可视化管理.分析.建模.开发等一站式服务提供有力保证. 笔者以2015年全国谷歌卫星地图(下面简称卫片)的

如何在谷歌卫星地图中叠加等高线并打印

一.准备工作 安装水经注万能地图下载器,如果没有安装本软件,可以百度"水经注软件"到官方网站下载. 安装ArcGIS系列版本之一,这里以ArcGIS10.2为例. 二.下载地图 首先需要把谷歌卫星地图下载下来. 启动水经注万能地图下载器,选择"新建任务",弹出"选择地图类型",如下图. 点击"确定".弹出"新建任务"对话框,如下图所示. 输入坐标,并选择级别. 在级别列表中,你可以选择任何级别,但一般来讲城

如何将谷歌卫星地图转成80坐标并测量面积

一.准备工作 安装水经注万能地图下载器,如果没有安装本软件,可以百度"水经注软件"到官方网站下载. 安装arcgis系列版本之一,这里以ArcGIS10.2为例. 二.下载地图 首先需要把谷歌卫星地图下载下来. 启动水经注万能地图下载器,缩放到成都天府广场,点击"框选下载区域",框选天府广场大概区域,双击下载区域,选择级数,如下图. 在级别列表中,你可以选择任何级别,但一般来讲城区选择19级,郊区选择16级比理想,但选择级别之前,最好在在线地图浏览中先查看所想要下载

谷歌卫星地图下载器破解

谷歌卫星地图下载器破解 高清卫星影像 矢量等高线/高程 (点线面)标绘 ArcGis无偏移套合 AutoCad套合 道路图层(矢量数据) 1.如何下载卫星图像? 2.如何下载高程数据? 3.什么是无偏移地图? 4.如何生成等高线(Autocad)? 5.如何转换成80坐标系哦? 6.如何转换成54坐标系? 7.如何转成CGCS2000坐标系? 8.无偏移卫星影像如何套合(Argcis)? 9.无偏移卫星影像如何套合(Autocad)? 10.如何选择分度带/中央子午线? 11.3DMAX制作三维

如何在MapGIS中打开谷歌卫星地图

一.准备工作 安装水经注万能地图下载器,如果没有安装本软件,可以百度"水经注软件"到官方网站下载. 安装MapGIS,版本可以是MapGIS7系列.K9或10,这里以中地数码公司最新发布的云GIS软件MapGIS10为例. 二.下载地图 首先需要把谷歌卫星地图下载下来,这里以四川省成都市"郫县"为例. 启动水经注万能地图下载器,在查询定位中输入"郫县". 点击"搜索"按钮出现该县的行政边界,在行政边界内双击,开始新建任务. 在

如何在Global Mapper中打开谷歌卫星地图

一.准备工作 安装水经注万能地图下载器,如果没有安装本软件,可以百度"水经注软件"到官方网站下载. 安装Global Mapper,版本可以是11.12.13.14.15或16,这里以Global Mapper 14为例. 二.下载地图 首先需要把谷歌卫星地图下载下来,这里以"郫县"为例. 启动水经注万能地图下载器,在查询定位中输入"郫县". 点击"搜索"按钮出现该县的行政边界,在行政边界内双击,开始新建任务. 在级别列表中,