osgEarth加载中文路径文件与文件名TMS服务
来源:互联网 发布:永利国际中心 商业数据 编辑:程序博客网 时间:2024/06/08 03:37
最近在做osgEarth加载中文名字和路径的问题,参考了很多前辈的方法,终于搞定了 ,在这里自己做一个总结
1.首先要明白字节编码基本东西
2.明白osg加载数据的插件方式
具体可以参考:http://blog.csdn.net/cccstudyer/article/details/21969261
我也是参考这篇博客知道osg里面已经自带了字节转换的功能在osgDB/convertUTF,里面有把当前编码转化为UTF8和UTF16的函数。
首先按照上文博客所说,修改osgDB 的读入流文件 fstream.cpp
#ifdef OSG_USE_UTF8_FILENAME
#define OSGDB_CONVERT_UTF8_FILENAME(s) convertUTF8toUTF16(s).c_str()
#else
#define OSGDB_CONVERT_UTF8_FILENAME(s) convertUTF8toUTF16(convertStringFromCurrentCodePageToUTF8(s)).c_str()
#endif
修改这个是不是就可以在osgEarth中可以加载含有中文路径的.earth文件呢,答案是的。但是还是不能加载TMS路径的中文服务。
你还需要在TMS.CPP中找到read入口,把osgDB::Options中获取url进行转码,对其转码有两种方式:
1.直接在url入口处进行转码,在tms的插件中有个TMSOptions 把原来return _url 进行转码到UTF8 修改为renturn convertStringFromCurrentCodePageToUTF8(_url->full()); 这种方法可以解决直接加载中文的TMS服务问题。
但是对于如何加载在earth文件中的中文的TMS并不能解决,因为earth文件中的TMS服务URL并没有执行这段代码,其是从osgDB::Options中获取得到的 因此要想根本解决这个问题需要在TMS.cpp文件读取中进行修改
osgDB::convertStringFromCurrentCodePageToUTF8(location);
把图中的location进行转码,然后你就可以用中文路径earth文件加载中文的TMS服务了。
注意:本人研究C++功底薄弱,还望大家见谅,希望可以给需要的人提供一些思路
- osgEarth加载中文路径文件与文件名TMS服务
- leaflet加载tms服务
- 让Ogre支持中文路径与中文文件名
- 让Ogre支持中文路径与中文文件名
- 让Ogre支持中文路径与中文文件名
- 让Ogre支持中文路径与中文文件名
- 解决osg路径与文件名中的中文字符问题
- Flex——加载中文路径文件
- 文件名 文件路径
- Winform中如何获取文件名与文件路径
- c++修改文件名后缀 文件路径分解与批处理文件遍历
- OpenCV 应用读取文件路径与文件名批量处理图片
- python 读取中文文件名/中文路径
- python 读取中文文件名/中文路径
- python 读取中文文件名/中文路径
- python 读取中文文件名/中文路径
- python 读取中文文件名/中文路径
- VS2013编译32位与36位的sqlite,再CMAKE生成osgearth加载mbtiles文件需要的osgdb_osgearth_mbtiles.dll
- 小谈微习惯
- PHP 函数 数组引用传参数
- Binlog日志的三种模式介绍及模式修改
- 结合redis设计与实现的redis源码学习-12-RDB持久化(rdb.h/rio.h)
- 《机器学习》周志华第一章参考答案
- osgEarth加载中文路径文件与文件名TMS服务
- 后端_第五课_添加route_todo各种功能、丰富SESSION_expired、初步涉及管理员权限
- im不丢消息设计
- MySQL预处理语句深入分析
- oracle 表空间
- css 底部局中
- MCTF 第一期winwin
- Hibernate 级联更新和外键维护-自我总结
- scrapy防禁止 设置user-agent的方法