osgearth论坛问题集锦

上传人:ji****72 文档编号:37525382 上传时间:2018-04-17 格式:DOC 页数:21 大小:1.19MB
返回 下载 相关 举报
osgearth论坛问题集锦_第1页
第1页 / 共21页
osgearth论坛问题集锦_第2页
第2页 / 共21页
osgearth论坛问题集锦_第3页
第3页 / 共21页
osgearth论坛问题集锦_第4页
第4页 / 共21页
osgearth论坛问题集锦_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《osgearth论坛问题集锦》由会员分享,可在线阅读,更多相关《osgearth论坛问题集锦(21页珍藏版)》请在金锄头文库上搜索。

1、怎么获取怎么获取 osgearth 支持的影像数据下载到本地?支持的影像数据下载到本地?刚接触 osgearth,想请教大家:怎么获取 osgearth 支持的影像数据到本地,包括一些层级 不高的不需要很精确的全球影像和层级较高的较清晰的部分城市的影像(像 Google earth 那样有地名的) ,以.earth 文件中读取本地数据?谢谢大家!使用 osgEarth 的缓存插件,设置缓存路径就可以了这个方法知道,但不知道从哪可以获取到符合要求(类似 Google earth 有位置标签)的影 像数据。可以用谷歌地图下载器下载,然后使用 GDAL 插件加载可以用 GDAL 插件加载吗?好像不行

2、哎,你试验成功过嚒?得修改 GDAL 插件? 图片是没有坐标的,所以得人为制定坐标包围盒? 这个看着有些抽象osgearth 在局域网上的配置问题在局域网上的配置问题 由于个人电脑不能上外网,所以只能在单位内部网络上自行加载地形和影像数据。在服务 器端加载了地形和影像,客户端用.earth 文件配置来读取,提示 can not initialize TileSource for layer west.tifhttp:/192.168.150/world.tifhttp:/192.168.150/srtm.tif 我在服务器端没有编译 gdal。客户端有编译好的 gdal。请各位指点一下,谢谢!

3、建议看一下 gdal 插件是否支持联网读取 tif,大的 tif 不建议联网读,tms 和 vpb 的 ive 使用联网读取比好好如何获取读入的栅格图片的坐标范围如何获取读入的栅格图片的坐标范围 通过 gdalOption 读入 一块栅格图片 , 请问如何获得 该栅格图片的坐标范围osg:Image* createImage( const TileKey /locator-getLocator()-setOrientation(osg:Vec3d(-90, 0, 0);看到一篇 osg 论文,使用在每次变换前先将物体平移至世界坐标系的原点 ,实施变换之后 再将物体进行反平移的方法,实验证明是好

4、用的,代码如下:/获取场景节点 ,将其转换为 MatrixTransform 类型 const osg:Matrix m_matrix = scale-getMatrix(); /获得变换物体表面顶点矩阵 const osg:BoundingSphere m_box = scale-getBound(); /获得变换物体的包围盒 ,从而 获得物体的中心osg:Matrix preMat = osg:Matrix:translate(-m_box.center() ; osg:Matrix proMat = osg:Matrix:translate(m_box.center() ; osg:Ma

5、trix matrix1 = m_matrix * preMat; /将物体中心平移至世界坐标的原点osg:Matrix matrix2 = matrix1 * osg:Matrix:rotate(osg:egreesToRadians(-90.0), 0, 1, 0); /进行变换级联 ,采用先缩放后旋转再平移的顺序 osg:Matrix matrix =matrix2 * proMat; /变换后再将物体移回 scale-setMatrix(matrix) ; /将结果矩阵重新设回物体不知道是否有更好的方法,盼高手指点一般是遵循 SRT遵循 SRT(Scale/Rotate/Transla

6、te)是在模型刚添加进场景的时候,在实时仿真的时候,一 般不会知道模型移动到哪里了,这样移动之后再旋转,就会出现之前说的问题。虽然问题 可以解决,但是我不确定这种解决办法是不是最好的或最有效的,所以想请教各位大牛! 我是这么在我是这么在 osgearth 里头画线的里头画线的 线的画法和 osg 里头一样,可参看 osggeometry.cpp,但是点的坐标需要经过转换,实践 证明是可行的,应该也可以用到其它几何体上。新手上路,欢迎大牛们拍砖。这部分放在 main()或者 InitSceneGraph( void )中osg:ref_ptr geode = new osg:Geode(); m

7、Root-addChild(geode); /测试画线osg:Vec3d startline(-155.150257, 63.390041, 220230); osg:Vec3d endline(-165.150257, 63.390041, 0); createLine(startline, endline);void OSGEarthEngine:createLine(osg:Vec3d startline, osg:Vec3d endline) const SpatialReference* mapSRS = mapNode-getMapSRS();/ create Geometry o

8、bject to store all the vertices and lines primitive.osg:ref_ptr linesGeom = new osg:Geometry();/ this time well preallocate the vertex array to the size we/ need and then simple set them as array elements, 2 points/ makes 1 line segments.osg:Vec3d startWorld;osg:Vec3d endWorld;osg:ref_ptr vertices =

9、 new osg:Vec3dArray(2);mapNode-getMap()-toWorldPoint( GeoPoint(mapSRS,startline), startWorld );mapNode-getMap()-toWorldPoint( GeoPoint(mapSRS,endline), endWorld );(*vertices)0 = startWorld;(*vertices)1 = endWorld;/ pass the created vertex array to the points geometry object.linesGeom-setVertexArray(

10、vertices);/ set the colors as before, plus using the aboveosg:ref_ptr colors = new osg:Vec4Array;colors-push_back(osg:Vec4(1.0f,1.0f,0.0f,1.0f);linesGeom-setColorArray(colors);linesGeom-setColorBinding(osg:Geometry:BIND_OVERALL);/ set the normal in the same way color.osg:ref_ptr normals = new osg:Ve

11、c3Array;normals-push_back(osg:Vec3(0.0f,-1.0f,0.0f);linesGeom-setNormalArray(normals);linesGeom-setNormalBinding(osg:Geometry:BIND_OVERALL);/ This time we simply use primitive, and hardwire the number of coords to use / since we know up front,linesGeom-addPrimitiveSet(new osg:rawArrays(osg:rimitiveS

12、et:INES,0,2);/ add the points geometry to the geode.geode-addDrawable(linesGeom); 请教在请教在 earth 文件中使用文件中使用 ive 数据显示精度不足的问题数据显示精度不足的问题false.osgearth_cache.earthearth.iveive 是自己用 8 片 tif 处理的,但是调入 earth 文件之后,绘制效率比直接调入 tif 快 但显示精度就明显差了不少,比直接看 ive 地形就差得更远, 不知道是为什么好像最精细的层级都没有显示出来,求各位大神指教建议你参照一下 tests 下面关于

13、vpb 的例子 osgearth 如何识别如何识别 vpb 生成的地形模型问题生成的地形模型问题 一直都在用 vpb 制作.ive 格式的地形模型,不知如何将其转换为 osgearth 能识别的 mapnode 节点,谢谢!使用 osgearth 的 vpb 插件请教多分辨率影像融合的情况怎样处理请教多分辨率影像融合的情况怎样处理 使用 gdal 加载两张地球影像为一个 image 图层,原始影像为一个低分辨率的全球影像,加 一个 1.2 米分辨率的局部影像,.earth 文件如下:E:WORKResourceimagetif结果如下图,请教这种多分辨率影像融合的情况怎样处理请用 seed 例

14、子,把 tif 处理成 tms,或者用 vpbosgearth 高程显示的问题高程显示的问题 osgearth 中可以用 setenabled 控制 elevationLayer 的显隐,但是如何做到 elevationLayer 隐藏后,高程立刻没有,elevationLayer 显示后,高程立刻显示。新版这个问题已经解决了,试试 Sample osgearth_tocosgearth 中如何进行实时的纹理切换中如何进行实时的纹理切换 有两种地球的金字塔纹理,想在程序运行后通过输入控制不同的纹理进行显示。需要怎么 做,请高手指点一下? 是可以在切换是临时加载纹理数据,还是要全部加载后进行隐现

15、操作?参看一下 osgearth_toc 的源码,那里有通过隐藏、显示不同层纹理的方法采用 osgearth_toc 方法后可以实现纹理切换的效果,只是效率下降了很多。从 60 帧降到 5 帧左右怎么在怎么在 osgearth 显示的地图中显示的地图中 显示鼠标所在点的经纬度坐标显示鼠标所在点的经纬度坐标 你可以参看 osgEarth 自带例子:osgEarth_elevationosgEarth_Viewer 中有 求问:使用求问:使用 osgearth 动态加载海量地形和纹理问题动态加载海量地形和纹理问题 关于使用 osgearth 的 addelevationlayer 和 addima

16、gelayer 方法来动态、实时加载大量地形 及配套纹理数据时出现了问题。 我写了一个线程,每隔 10s 左右检测一下指定目录,如果发现新的地形和纹理数据,就用 以上方法加载进 map,地形和纹理数据都是 tif 格式,具体线程中的代码如下:virtual void run() _done = false; _dirty = true; do YieldCurrentThread(); addNewTerrainModel(); OpenThreads:Thread:microSleep(10000000); while( !_done ); void addNewTerrainModel( ) OpenThreads:ScopedLock lock(_mutex); ostringstream ostrfile,ostrnam

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号