FastTileDatabase
轻量级高性能瓦片地图数据库
|
FTD 的处理器,如果您已经有一个构建好的历史文件需要打开进行只读或更新操作,您可以直接构造该 More...
Classes | |
class | FTDBuilder |
FTD 数据库构建器 More... | |
Public Types | |
enum | OpenMode { ReadOnly = 0 , WriteOnly = 1 , ReadWrite = 2 } |
文件打开模式 More... | |
Public Member Functions | |
MeFTDHandler (const std::string &strFileName) | |
通过文件名构建文件句柄 More... | |
~MeFTDHandler () | |
bool | open (OpenMode eMode) |
打开文件 More... | |
bool | isOpen () const |
判断文件是否打开 More... | |
void | close () |
关闭文件句柄 More... | |
void | flush () |
将缓存中的数据同步到磁盘 More... | |
bool | vacuum () |
回收碎片空间,无论如何你都应该知道,执行 vacuum 是一项代价高昂 More... | |
void | setLogListener (MeFTDLogListener *pListener, void *pUserData=nullptr) |
设置日志监听器,FTD 自身不生成任何日志文件,通过 More... | |
void | setLogLevel (MeFTDLogListener::LogLevel eLevel) |
设置监听日志的级别 More... | |
void | setProcessor (MeFTDProcessing *pProc, void *pUserData) |
设置处理监听器,在 FTD 执行一些耗时操作的时候,通过 More... | |
bool | initZoom (const MeFTDZoom &nZoom) |
初始化一个级别,默认情况下为了节省磁盘空间,FTD 不会为 More... | |
bool | zoomIsInitialized (const MeFTDZoom &nZoom) const |
判断指定的级别是否已经初始化,只有初始化以后的级别才能写入 More... | |
std::string | fileName () const |
获取文件名 More... | |
MeFTDMedata | medata () const |
获取文件的元信息系 More... | |
MeFTDZooms | initializedZooms () const |
获取已经初始化完成的级别 More... | |
long long | tileCount (const MeFTDZoom &nZoom) const |
获取指定级别的瓦片数量 More... | |
bool | write (const MeFTDTileKey &tk, MeFTDTileData pBuffer, int nDataLen) |
写入数据到文件 More... | |
bool | read (const MeFTDTileKey &tk, MeFTDTileData *pOutBuffer, int &nDataLen) const |
读取数据 More... | |
bool | deleteTile (const MeFTDTileKey &tk) |
删除指定的瓦片 More... | |
bool | updateTile (const MeFTDTileKey &tk, MeFTDTileData pNewBuffer, int nDataLen) |
将指定的瓦片更新为最新数据 More... | |
bool | geoTransform (const MeFTDZoom &zoom, double *pTransform, const MeFTDExtent &extent=MeFTDExtent()) |
获取指定级别的仿射变换六参数,文件必须打开。当未给定 extent 范围时 More... | |
bool | calcPixelsSize (const MeFTDZoom &zoom, long long &nWidth, long long &nHeight, const MeFTDExtent &extent=MeFTDExtent()) |
计算指定级别范围内的像素宽度和高度,未指定 extent 时,使用 More... | |
double | zoomResolution (const MeFTDZoom &zoom) const |
返回指定级别的空间分辨率 More... | |
bool | changeTileStatus (const MeFTDTileKey &tk, MeFTDTileStatus eStatus) |
修改瓦片状态,文件不能是只读模式。 More... | |
MeFTDTileExtent | tileExtent (const MeFTDZoom &nZoom) const |
获取指定级别的瓦片坐标范围 More... | |
MeFTDTileExtent | tileExtent (const MeFTDZoom &nZoom, const MeFTDExtent &extent) const |
获取指定级别范围内的瓦片坐标范围 More... | |
MeFTDTileStatus | tileStatus (const MeFTDTileKey &tk, bool &bOk) const |
检查指定瓦片在数据库中的状态 More... | |
MeFTDIterator * | iterator (const MeFTDZoom &nZoom) |
瓦片坐标迭代器,用于迭代指定层级的瓦片数据。迭代器不需要释放。 More... | |
MeFTDIterator * | iterator (const MeFTDZoom &nZoom, const MeFTDExtent &extent) |
瓦片坐标迭代器,用于迭代指定层级范围的瓦片数据。迭代器不需要释放。 More... | |
MeFTDStatisticsResult | statistics (MeFTDZoom nZoom=-1) const |
对文件瓦片进行统计,如果 nZoom 给定的是 -1 将统计所有级别。 More... | |
Static Public Member Functions | |
static void | destroy (MeFTDHandler *pHandler) |
销毁由 FTDBuilder 创建的文件句柄 More... | |
static void | destroyTileData (MeFTDTileData pData) |
销毁瓦片数据缓存 More... | |
static MeFTDHandler * | fromFile (const std::string &strFileName, OpenMode eMode=ReadOnly) |
从一个文件构建文件句柄,这个文件必须由 FTDBuilder 构建 More... | |
FTD 的处理器,如果您已经有一个构建好的历史文件需要打开进行只读或更新操作,您可以直接构造该
对象也可以调用静态函数 fromFile() 进行构造,但如果您此时需要创建一个新的文件,则需要通过文件
“构造器”来进行构造,如下所示:
MapEdges::MeFTDHandler::MeFTDHandler | ( | const std::string & | strFileName | ) |
通过文件名构建文件句柄
[in] | strFileName | 文件名 |
MapEdges::MeFTDHandler::~MeFTDHandler | ( | ) |
bool MapEdges::MeFTDHandler::calcPixelsSize | ( | const MeFTDZoom & | zoom, |
long long & | nWidth, | ||
long long & | nHeight, | ||
const MeFTDExtent & | extent = MeFTDExtent() |
||
) |
计算指定级别范围内的像素宽度和高度,未指定 extent 时,使用
数据范围进行计算。文件必须打开。
[in] | zoom | 要计算的级别 |
[out] | nWidth | 像素宽度 |
[out] | nHeight | 像素高度 |
[in] | extent | 范围 |
bool MapEdges::MeFTDHandler::changeTileStatus | ( | const MeFTDTileKey & | tk, |
MeFTDTileStatus | eStatus | ||
) |
修改瓦片状态,文件不能是只读模式。
完成。
[in] | tk | 瓦片坐标 |
[in] | eStatus | 瓦片状态 |
void MapEdges::MeFTDHandler::close | ( | ) |
关闭文件句柄
bool MapEdges::MeFTDHandler::deleteTile | ( | const MeFTDTileKey & | tk | ) |
删除指定的瓦片
执行清理。
[in] | tk | 瓦片坐标 |
|
static |
销毁由 FTDBuilder 创建的文件句柄
|
static |
销毁瓦片数据缓存
[in] | pData | 瓦片数据缓存 |
std::string MapEdges::MeFTDHandler::fileName | ( | ) | const |
获取文件名
void MapEdges::MeFTDHandler::flush | ( | ) |
将缓存中的数据同步到磁盘
|
static |
bool MapEdges::MeFTDHandler::geoTransform | ( | const MeFTDZoom & | zoom, |
double * | pTransform, | ||
const MeFTDExtent & | extent = MeFTDExtent() |
||
) |
获取指定级别的仿射变换六参数,文件必须打开。当未给定 extent 范围时
将使用数据范围。
[in] | zoom | 级别 |
[out] | pTransform | 仿射变换 |
[in] | extent | 范围 |
MeFTDZooms MapEdges::MeFTDHandler::initializedZooms | ( | ) | const |
获取已经初始化完成的级别
bool MapEdges::MeFTDHandler::initZoom | ( | const MeFTDZoom & | nZoom | ) |
初始化一个级别,默认情况下为了节省磁盘空间,FTD 不会为
所有级别都创建索引,除了用户在创建文件时就就决定要创建的级别外
其他级别都不会创建,调用该接口为级别创建索引后才能写入数据,创
建进度通过 setProcessor 返回。
上次未完成的创建,只有将未完成的索引创建完成以后,才可以创建新的
层级索引。
[in] | nZoom | 要初始化的级别。 |
bool MapEdges::MeFTDHandler::isOpen | ( | ) | const |
判断文件是否打开
MeFTDIterator * MapEdges::MeFTDHandler::iterator | ( | const MeFTDZoom & | nZoom | ) |
瓦片坐标迭代器,用于迭代指定层级的瓦片数据。迭代器不需要释放。
[in] | nZoom | 要迭代的级别 |
MeFTDIterator * MapEdges::MeFTDHandler::iterator | ( | const MeFTDZoom & | nZoom, |
const MeFTDExtent & | extent | ||
) |
瓦片坐标迭代器,用于迭代指定层级范围的瓦片数据。迭代器不需要释放。
[in] | nZoom | 要迭代的级别 |
[in] | extent | 级别范围 |
MeFTDMedata MapEdges::MeFTDHandler::medata | ( | ) | const |
获取文件的元信息系
bool MapEdges::MeFTDHandler::open | ( | OpenMode | eMode | ) |
打开文件
[in] | eMode | 打开模式 |
bool MapEdges::MeFTDHandler::read | ( | const MeFTDTileKey & | tk, |
MeFTDTileData * | pOutBuffer, | ||
int & | nDataLen | ||
) | const |
读取数据
[in] | tk | 瓦片坐标 |
[out] | pOutBuffer | 读取的缓存数据 |
[out] | nDataLen | 缓存数据长度 |
void MapEdges::MeFTDHandler::setLogLevel | ( | MeFTDLogListener::LogLevel | eLevel | ) |
设置监听日志的级别
[in] | eLevel | 日志级别 |
void MapEdges::MeFTDHandler::setLogListener | ( | MeFTDLogListener * | pListener, |
void * | pUserData = nullptr |
||
) |
设置日志监听器,FTD 自身不生成任何日志文件,通过
为其设置监听器以获取输出的日志信息。
[in] | pListener | 监听器 |
[in] | pUserData | 用户数据 |
void MapEdges::MeFTDHandler::setProcessor | ( | MeFTDProcessing * | pProc, |
void * | pUserData | ||
) |
设置处理监听器,在 FTD 执行一些耗时操作的时候,通过
该接口返回进度信息。例如创建级别索引时。
[in] | pProc | 处理监听器 |
[in] | pUserData | 用户数据 |
MeFTDStatisticsResult MapEdges::MeFTDHandler::statistics | ( | MeFTDZoom | nZoom = -1 | ) | const |
对文件瓦片进行统计,如果 nZoom 给定的是 -1 将统计所有级别。
long long MapEdges::MeFTDHandler::tileCount | ( | const MeFTDZoom & | nZoom | ) | const |
获取指定级别的瓦片数量
[in] | nZoom | 级别 |
MeFTDTileExtent MapEdges::MeFTDHandler::tileExtent | ( | const MeFTDZoom & | nZoom | ) | const |
获取指定级别的瓦片坐标范围
[in] | nZoom | 级别 |
MeFTDTileExtent MapEdges::MeFTDHandler::tileExtent | ( | const MeFTDZoom & | nZoom, |
const MeFTDExtent & | extent | ||
) | const |
获取指定级别范围内的瓦片坐标范围
[in] | nZoom | 级别 |
[in] | extent | 要获取瓦片坐标的范围 |
MeFTDTileStatus MapEdges::MeFTDHandler::tileStatus | ( | const MeFTDTileKey & | tk, |
bool & | bOk | ||
) | const |
检查指定瓦片在数据库中的状态
[in] | tk | 瓦片坐标 |
[out] | bOk | 检查成返回true,其他情况返回false |
bool MapEdges::MeFTDHandler::updateTile | ( | const MeFTDTileKey & | tk, |
MeFTDTileData | pNewBuffer, | ||
int | nDataLen | ||
) |
将指定的瓦片更新为最新数据
[in] | tk | 瓦片坐标 |
[in] | pNewBuffer | 新的缓存数据 |
[in] | nDataLen | 新的缓存数据长度 |
bool MapEdges::MeFTDHandler::vacuum | ( | ) |
回收碎片空间,无论如何你都应该知道,执行 vacuum 是一项代价高昂
的操作,执行期间你不能对文件进行读写。
bool MapEdges::MeFTDHandler::write | ( | const MeFTDTileKey & | tk, |
MeFTDTileData | pBuffer, | ||
int | nDataLen | ||
) |
写入数据到文件
[in] | tk | 瓦片坐标 |
[in] | pBuffer | 数据缓存 |
[in] | nDataLen | 数据长度 |
bool MapEdges::MeFTDHandler::zoomIsInitialized | ( | const MeFTDZoom & | nZoom | ) | const |
判断指定的级别是否已经初始化,只有初始化以后的级别才能写入
数据。
[in] | nZoom | 要检查的级别 |
double MapEdges::MeFTDHandler::zoomResolution | ( | const MeFTDZoom & | zoom | ) | const |
返回指定级别的空间分辨率
[in] | zoom | 级别 |