FastTileDatabase
轻量级高性能瓦片地图数据库
Loading...
Searching...
No Matches
MapEdges::MeFTDHandler Class Reference

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...
 
MeFTDIteratoriterator (const MeFTDZoom &nZoom)
 瓦片坐标迭代器,用于迭代指定层级的瓦片数据。迭代器不需要释放。 More...
 
MeFTDIteratoriterator (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 MeFTDHandlerfromFile (const std::string &strFileName, OpenMode eMode=ReadOnly)
 从一个文件构建文件句柄,这个文件必须由 FTDBuilder 构建 More...
 

Detailed Description

FTD 的处理器,如果您已经有一个构建好的历史文件需要打开进行只读或更新操作,您可以直接构造该

对象也可以调用静态函数 fromFile() 进行构造,但如果您此时需要创建一个新的文件,则需要通过文件

“构造器”来进行构造,如下所示:

MeExtent ext;
ext.MinX = 104.0330600738525391;
ext.MaxY = 30.6055068969726562;
ext.MinY = 30.5408763885498047;
ext.MaxX = 104.1390609741210938;
std::string strBuildErr;
.setFileName("D:\\myfile.df")
.setExtent(ext)
.setZoomRange(1, 22)
.setEPSG(WE_WGS_84_EPSG)
.setInitRes(360.0 / 256.0)
.setDescription("描述信息")
.setOverwrite(true)
.build();
//以只读方式打开文件进行操作
pFTD->open(WeDataFile::ReadOnly);
其他操...
//销毁
WeDataFile::destroy(pFTD);
FTD 数据库构建器
Definition: MeFTD.h:106
FTDBuilder & setInitRes(double dRes)
设置初始化空间分辨率
FTDBuilder & setOverwrite(bool bOverwrite)
当文件存在时是否对其进行覆盖重写
FTDBuilder & setExtent(const MeFTDExtent &extent)
设置数据范围,数据范围应该与指定的 EPSG 匹配
FTDBuilder & setZoomRange(int nMinZoom, int nMaxZoom)
设置最低和最高级别
FTDBuilder & setFileName(const std::string &strFileName)
设置文件路径
MeFTDHandler * build(std::string &strErrMsg)
构建 FTD 文件,如果失败 strErrMsg 将输出错误消息
FTDBuilder & setEPSG(int nEPSG)
设置 FTD 的空间参考,可以是 FTD_WGS_84_EPSG 或 FTD_MERCATOR_EPSG
FTDBuilder & setDescription(const std::string &strDesc)
设置附加描述信息
FTDBuilder & setFormat(MeFTDTileFormat eFormat)
设置一个格式用于标记 FTD 中存储的数据类型,如默认的格式
FTD 的处理器,如果您已经有一个构建好的历史文件需要打开进行只读或更新操作,您可以直接构造该
Definition: MeFTD.h:73
bool open(OpenMode eMode)
打开文件
@ FMT_PNG
标记 FTD 存储的是 png 格式数据
Definition: MeFTDMedata.h:15

Member Enumeration Documentation

◆ OpenMode

文件打开模式

Enumerator
ReadOnly 

只读模式打开

WriteOnly 

只写模式打开

ReadWrite 

读写模式打开

Constructor & Destructor Documentation

◆ MeFTDHandler()

MapEdges::MeFTDHandler::MeFTDHandler ( const std::string &  strFileName)

通过文件名构建文件句柄

Parameters
[in]strFileName文件名

◆ ~MeFTDHandler()

MapEdges::MeFTDHandler::~MeFTDHandler ( )

Member Function Documentation

◆ calcPixelsSize()

bool MapEdges::MeFTDHandler::calcPixelsSize ( const MeFTDZoom zoom,
long long &  nWidth,
long long &  nHeight,
const MeFTDExtent extent = MeFTDExtent() 
)

计算指定级别范围内的像素宽度和高度,未指定 extent 时,使用

数据范围进行计算。文件必须打开。

Warning
FTD 不会校验 extent 的范围是否在数据范围内
Parameters
[in]zoom要计算的级别
[out]nWidth像素宽度
[out]nHeight像素高度
[in]extent范围
Returns
计算成功返回true,其他情况返回false

◆ changeTileStatus()

bool MapEdges::MeFTDHandler::changeTileStatus ( const MeFTDTileKey tk,
MeFTDTileStatus  eStatus 
)

修改瓦片状态,文件不能是只读模式。

Warning
不能将其修改为删除状态,删除状态只能通过调用删除瓦片接口

完成。

See also
deleteTile()
Parameters
[in]tk瓦片坐标
[in]eStatus瓦片状态
Returns
修改成功返回true,其他情况返回false

◆ close()

void MapEdges::MeFTDHandler::close ( )

关闭文件句柄

◆ deleteTile()

bool MapEdges::MeFTDHandler::deleteTile ( const MeFTDTileKey tk)

删除指定的瓦片

Warning
执行删除后不会立即从数据文件中删除数据,除非你调用了 vacuum

执行清理。

See also
vacuum()
Parameters
[in]tk瓦片坐标
Returns
删除成功返回true,其他情况返回false

◆ destroy()

static void MapEdges::MeFTDHandler::destroy ( MeFTDHandler pHandler)
static

销毁由 FTDBuilder 创建的文件句柄

◆ destroyTileData()

static void MapEdges::MeFTDHandler::destroyTileData ( MeFTDTileData  pData)
static

销毁瓦片数据缓存

Parameters
[in]pData瓦片数据缓存

◆ fileName()

std::string MapEdges::MeFTDHandler::fileName ( ) const

获取文件名

Returns
文件名

◆ flush()

void MapEdges::MeFTDHandler::flush ( )

将缓存中的数据同步到磁盘

◆ fromFile()

static MeFTDHandler * MapEdges::MeFTDHandler::fromFile ( const std::string &  strFileName,
OpenMode  eMode = ReadOnly 
)
static

从一个文件构建文件句柄,这个文件必须由 FTDBuilder 构建

Parameters
[in]strFileName文件路径
[in]eMode打开模式
Returns
FTD 文件句柄

◆ geoTransform()

bool MapEdges::MeFTDHandler::geoTransform ( const MeFTDZoom zoom,
double *  pTransform,
const MeFTDExtent extent = MeFTDExtent() 
)

获取指定级别的仿射变换六参数,文件必须打开。当未给定 extent 范围时

将使用数据范围。

Warning
FTD 不会校验 extent 的范围是否在数据范围内
Parameters
[in]zoom级别
[out]pTransform仿射变换
[in]extent范围
Returns
获取成功返回true,其他情况返回false

◆ initializedZooms()

MeFTDZooms MapEdges::MeFTDHandler::initializedZooms ( ) const

获取已经初始化完成的级别

Returns
完成初始化的级别

◆ initZoom()

bool MapEdges::MeFTDHandler::initZoom ( const MeFTDZoom nZoom)

初始化一个级别,默认情况下为了节省磁盘空间,FTD 不会为

所有级别都创建索引,除了用户在创建文件时就就决定要创建的级别外

其他级别都不会创建,调用该接口为级别创建索引后才能写入数据,创

建进度通过 setProcessor 返回。

Warning
如果上次创建索引的时候被用户中断,再次执行该接口将继续

上次未完成的创建,只有将未完成的索引创建完成以后,才可以创建新的

层级索引。

Parameters
[in]nZoom要初始化的级别。
Returns
创建成功返回true,其他情况返回false

◆ isOpen()

bool MapEdges::MeFTDHandler::isOpen ( ) const

判断文件是否打开

Returns
已经打开返回true,其他情况返回false

◆ iterator() [1/2]

MeFTDIterator * MapEdges::MeFTDHandler::iterator ( const MeFTDZoom nZoom)

瓦片坐标迭代器,用于迭代指定层级的瓦片数据。迭代器不需要释放。

Parameters
[in]nZoom要迭代的级别
Returns
迭代器

◆ iterator() [2/2]

MeFTDIterator * MapEdges::MeFTDHandler::iterator ( const MeFTDZoom nZoom,
const MeFTDExtent extent 
)

瓦片坐标迭代器,用于迭代指定层级范围的瓦片数据。迭代器不需要释放。

Parameters
[in]nZoom要迭代的级别
[in]extent级别范围
Returns
迭代器

◆ medata()

MeFTDMedata MapEdges::MeFTDHandler::medata ( ) const

获取文件的元信息系

Returns
元信息

◆ open()

bool MapEdges::MeFTDHandler::open ( OpenMode  eMode)

打开文件

Parameters
[in]eMode打开模式
Returns
打开成功返回true,其他情况返回false

◆ read()

bool MapEdges::MeFTDHandler::read ( const MeFTDTileKey tk,
MeFTDTileData pOutBuffer,
int &  nDataLen 
) const

读取数据

Parameters
[in]tk瓦片坐标
[out]pOutBuffer读取的缓存数据
[out]nDataLen缓存数据长度
Returns
读取成功返回true,其他情况返回false

◆ setLogLevel()

void MapEdges::MeFTDHandler::setLogLevel ( MeFTDLogListener::LogLevel  eLevel)

设置监听日志的级别

Parameters
[in]eLevel日志级别

◆ setLogListener()

void MapEdges::MeFTDHandler::setLogListener ( MeFTDLogListener pListener,
void *  pUserData = nullptr 
)

设置日志监听器,FTD 自身不生成任何日志文件,通过

为其设置监听器以获取输出的日志信息。

Parameters
[in]pListener监听器
[in]pUserData用户数据

◆ setProcessor()

void MapEdges::MeFTDHandler::setProcessor ( MeFTDProcessing pProc,
void *  pUserData 
)

设置处理监听器,在 FTD 执行一些耗时操作的时候,通过

该接口返回进度信息。例如创建级别索引时。

Parameters
[in]pProc处理监听器
[in]pUserData用户数据

◆ statistics()

MeFTDStatisticsResult MapEdges::MeFTDHandler::statistics ( MeFTDZoom  nZoom = -1) const

对文件瓦片进行统计,如果 nZoom 给定的是 -1 将统计所有级别。

Returns
统计结果

◆ tileCount()

long long MapEdges::MeFTDHandler::tileCount ( const MeFTDZoom nZoom) const

获取指定级别的瓦片数量

Parameters
[in]nZoom级别
Returns
瓦片数量

◆ tileExtent() [1/2]

MeFTDTileExtent MapEdges::MeFTDHandler::tileExtent ( const MeFTDZoom nZoom) const

获取指定级别的瓦片坐标范围

Parameters
[in]nZoom级别
Returns
瓦片坐标范围

◆ tileExtent() [2/2]

MeFTDTileExtent MapEdges::MeFTDHandler::tileExtent ( const MeFTDZoom nZoom,
const MeFTDExtent extent 
) const

获取指定级别范围内的瓦片坐标范围

Parameters
[in]nZoom级别
[in]extent要获取瓦片坐标的范围
Returns
瓦片坐标

◆ tileStatus()

MeFTDTileStatus MapEdges::MeFTDHandler::tileStatus ( const MeFTDTileKey tk,
bool &  bOk 
) const

检查指定瓦片在数据库中的状态

Parameters
[in]tk瓦片坐标
[out]bOk检查成返回true,其他情况返回false
Returns
瓦片状态

◆ updateTile()

bool MapEdges::MeFTDHandler::updateTile ( const MeFTDTileKey tk,
MeFTDTileData  pNewBuffer,
int  nDataLen 
)

将指定的瓦片更新为最新数据

Parameters
[in]tk瓦片坐标
[in]pNewBuffer新的缓存数据
[in]nDataLen新的缓存数据长度
Returns
更新成功返回true,其他情况返回false

◆ vacuum()

bool MapEdges::MeFTDHandler::vacuum ( )

回收碎片空间,无论如何你都应该知道,执行 vacuum 是一项代价高昂

的操作,执行期间你不能对文件进行读写。

Returns
回收成功返回true,其他情况返回false

◆ write()

bool MapEdges::MeFTDHandler::write ( const MeFTDTileKey tk,
MeFTDTileData  pBuffer,
int  nDataLen 
)

写入数据到文件

Parameters
[in]tk瓦片坐标
[in]pBuffer数据缓存
[in]nDataLen数据长度
Returns
写入成功返回true,其他情况返回false

◆ zoomIsInitialized()

bool MapEdges::MeFTDHandler::zoomIsInitialized ( const MeFTDZoom nZoom) const

判断指定的级别是否已经初始化,只有初始化以后的级别才能写入

数据。

Parameters
[in]nZoom要检查的级别
Returns
已经初始化返回true,其他情况返回false

◆ zoomResolution()

double MapEdges::MeFTDHandler::zoomResolution ( const MeFTDZoom zoom) const

返回指定级别的空间分辨率

Parameters
[in]zoom级别
Returns
分辨率

The documentation for this class was generated from the following file: