发明名称 海量栅格瓦块地图发布方法
摘要 本发明提出了一种海量栅格瓦块地图发布方法,属于地图发布领域。该方法包括以下步骤:S1、将矢量地图切割成多个栅格小图片并存储于地图目录Root中,遍历该地图目录Root中的栅格小图片并打包至数据文件中,由此减小了磁盘空间的占有量;S2、建立索引文件,该索引文件用于表示URL路径与数据文件中对应栅格小图片存储位置的索引关系;该索引文件使用路径与文件名分别编码的方法进行压缩存储,可一次性加载到内存,利用索引文件查找栅格小图片时不必访问磁盘,进一步提高了查找效率;S3、根据客户端请求的URL路径以及索引文件,在数据文件中查找与该URL路径对应的栅格小图片的存储位置,读取该栅格小图片并发送给客户端。
申请公布号 CN102902724B 申请公布日期 2015.04.29
申请号 CN201210325833.6 申请日期 2012.09.05
申请人 重庆市勘测院;重庆数字城市科技有限公司 发明人 向泽君;朱圣;罗再谦;龙川;饶鸣;汪明;杨元;李波;罗勇
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 重庆市前沿专利事务所(普通合伙) 50211 代理人 郭云
主权项 一种海量栅格瓦块地图发布方法,其特征在于包括以下步骤:S1、将矢量地图切割成多个栅格小图片并存储于地图目录Root中,遍历该地图目录Root中的栅格小图片并打包至数据文件中;步骤S1由以下步骤组成:S10、将矢量地图切割成多个栅格小图片并存储于地图目录Root中,针对大量内容相同的栅格小图片设置模板文件T=(path,size,context,fno,offset),其中T.path表示模板文件T的存储路径,T.size表示模板文件T的大小,T.context表示模板文件T的内容,T.fno表示模板文件T所在数据文件Fi的编号,T.offset表示模板文件T在数据文件Fi中的偏移,初始状态下T.fno=T.offset=0且i为整数;S11、设置i=0,打开数据文件Fi,读取模板文件T并将该模板文件T=(path,size,context,fno,offset)写入数据文件Fi中,保存该模板文件T在数据文件Fi中的偏移T.offset且T.fno=i;S12、深度遍历该地图目录Root,依次读取该地图目录Root下各栅格小图片LF=(path,size,context,fno,offset),其中LF.path表示栅格小图片LF的存储路径,LF.size表示栅格小图片LF的大小,LF.context表示栅格小图片LF的内容,LF.fno表示栅格小图片LF所在数据文件Fi的编号,LF.offset表示栅格小图片LF在数据文件Fi中的偏移,在初始状态下LF.fno=LF.offset=0;S13、将各栅格小图片LF与该模板文件T进行比较:在LF.size=T.size且LF.context=T.context时表示该栅格小图片LF与模板文件T相同,不再将该栅格小图片LF重复写入该数据文件Fi中,并且LF.offset=T.offset,LF.fno=T.fno=i;否则表示该栅格小图片LF与模板文件T不相同,进一步判断数据文件Fi是否超过其最大容量值MaxSize:如果判定该数据文件Fi未超过其最大容量值MaxSize,则将LF.context存放至当前的数据文件Fi中,保存该栅格小图片LF在该数据文件Fi中的偏移LF.offset且LF.fno=i;如果判定该数据文件Fi超过其最大容量值MaxSize,则关闭当前的数据文件Fi,将i的值增加1,打开下一数据文件Fi,将LF.context存放至下一数据文件Fi中,并且保存该栅格小图片LF在该数据文件Fi中的偏移LF.offset且LF.fno=i+1;S14、判断地图目录Root下是否还存在尚未被读取的栅格小图片,如果存在则重复执行步骤S12~S13,否则关闭当前的数据文件Fi以及中间文件Fdb;S2、建立索引文件,该索引文件用于表示URL路径与数据文件中对应栅格小图片存储位置的索引关系;步骤S2由以下步骤组成:S20、初始化路径哈希表Hash_Path、文件名哈希表Hash_Name和数组FArray={},其中该路径哈希表Hash_Path中路径的标号Path_ID初始化为0,该文件名哈希表Hash_Name中文件名的标号Name_ID初始化为0;S21、在地图目录Root中的栅格小图片打包至数据文件的过程中,依次将各栅格小图片LF=(path,size,fno,offset)写入中间文件Fdb中,在建立索引文件的过程中打开该中间文件Fdb,其中LF.path表示栅格小图片LF的存储路径,LF.size表示栅格小图片LF的大小,LF.fno表示栅格小图片LF所在数据文件Fi的编号,LF.offset表示栅格小图片LF的在数据文件Fi中的偏移;S22、从该中间文件Fdb中读取一个栅格小图片LF的存储路径LF.path,并将LF.path分解为路径部分PATH和文件名部分NAME;S23、按照栅格小图片的读取顺序对该栅格小图片的路径部分PATH和文件名部分NAME分别进行标号,其中路径部分PATH的标号记为PID,文件名部分NAME的标号记为NID,并将(PATH,PID)插入该路径哈希表Hash_Path中,将(NAME,NID)插入该文件名哈希表Hash_Name中;S24、确定该栅格小图片的标号FID=PID<<16|NID,并且将(FID,LF.size,LF.fno,LF.offset)存储至数组FArray{}末尾,其中<<表示左移运算符,|表示或运算符;S25、重复执行步骤S22~S24,直至该中间文件Fdb中所有栅格小图片读取完成;S26、按照各栅格小图片的标号FID大小对该数组FArray{}进行排序;S27、将该路径哈希表Hash_Path、文件名哈希表Hash_Name以及数组FArray{}的内容写入索引文件中,建立索引文件;S3、根据客户端请求的URL路径以及索引文件,在数据文件中查找与该URL路径对应的栅格小图片的存储位置,读取该栅格小图片并发送给客户端。
地址 400020 重庆市江北区电测村231号