CN102902724A - 海量栅格瓦块地图发布方法 - Google Patents

海量栅格瓦块地图发布方法 Download PDF

Info

Publication number
CN102902724A
CN102902724A CN2012103258336A CN201210325833A CN102902724A CN 102902724 A CN102902724 A CN 102902724A CN 2012103258336 A CN2012103258336 A CN 2012103258336A CN 201210325833 A CN201210325833 A CN 201210325833A CN 102902724 A CN102902724 A CN 102902724A
Authority
CN
China
Prior art keywords
grid
path
little picture
file
data file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012103258336A
Other languages
English (en)
Other versions
CN102902724B (zh
Inventor
向泽君
朱圣
罗再谦
龙川
饶鸣
汪明
杨元
李波
罗勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CHONGQING CYBERCITY SCI-TECH CO LTD
Original Assignee
CHONGQING CYBERCITY SCI-TECH CO LTD
Chongqing Survey Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CHONGQING CYBERCITY SCI-TECH CO LTD, Chongqing Survey Institute filed Critical CHONGQING CYBERCITY SCI-TECH CO LTD
Priority to CN201210325833.6A priority Critical patent/CN102902724B/zh
Publication of CN102902724A publication Critical patent/CN102902724A/zh
Application granted granted Critical
Publication of CN102902724B publication Critical patent/CN102902724B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明提出了一种海量栅格瓦块地图发布方法,属于地图发布领域。该方法包括以下步骤:S1、将矢量地图切割成多个栅格小图片并存储于地图目录Root中,遍历该地图目录Root中的栅格小图片并打包至数据文件中,由此减小了磁盘空间的占有量;S2、建立索引文件,该索引文件用于表示URL路径与数据文件中对应栅格小图片存储位置的索引关系;该索引文件使用路径与文件名分别编码的方法进行压缩存储,可一次性加载到内存,利用索引文件查找栅格小图片时不必访问磁盘,进一步提高了查找效率;S3、根据客户端请求的URL路径以及索引文件,在数据文件中查找与该URL路径对应的栅格小图片的存储位置,读取该栅格小图片并发送给客户端。

Description

海量栅格瓦块地图发布方法
技术领域
本发明涉及一种地图发布方法,尤其涉及一种海量栅格瓦块地图发布方法。
背景技术
Web GIS是Internet技术应用于GIS开发的地理信息系统。其使用的静态背景地图多采用预先生成栅格瓦块地图,然后通过HTTP(HyperText TransferProtocol,超文本传输协议)的方式发布。这种方式减少了服务器端动态生成地图图片的计算压力,是目前采用最多的Web GIS技术之一。
栅格瓦块地图一般的发布方式是:使用工具把矢量地图按行列切割为大小统一的栅格小图片并存储于地图目录Root下;然后将这些栅格小图片拷贝至Web服务器上并发布出去;客户端程序根据当前地图范围计算待加载的栅格小图片的URL(Universal Resource Locator,统一资源定位符)路径,并根据该URL路径查找对应栅格小图片的存储位置;最后客户端通过HTTP加载对应的栅格小图片。
目前,栅格瓦块地图一般通过IIS软件进行发布出去,IIS软件发布方式存在以下缺点:将矢量地图切割成海量栅格小图片,增大了磁盘空间的占有量,此外在栅格小图片存储于地图目录Root过程中,针对大量相同的图片(诸如空白图片)均按照行列分别重复存储,进一步增大了磁盘空间的占有量;
将栅格小图片拷贝至Web发布服务器上并发布出去,由于海量栅格小图片的数量较多,需要消耗较长的时间来拷贝数据;
在根据URL路径查找对应栅格小图片的位置时,IIS软件只能依赖文件系统,几乎每次访问,都要进行磁盘IO,查找效率低。
发明内容
本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种海量栅格瓦块地图发布方法,将海量栅格小图片打包至数据文件中,并对相同的文件只进行一次存储分配,减小了磁盘空间的占有量;在根据URL路径查找对应栅格小图片时,不是依赖于文件系统逐一查找,而是通过索引的形式查找,提高了查找效率。
为了实现本发明的上述目的,本发明提供了一种海量栅格瓦块地图发布方法,其特征在于包括以下步骤:
S1、将矢量地图切割成多个栅格小图片并存储于地图目录Root中,遍历该地图目录Root中的栅格小图片并打包至数据文件中;
S2、建立索引文件,该索引文件用于表示URL路径与数据文件中对应栅格小图片存储位置的索引关系;
S3、根据客户端请求的URL路径以及索引文件,在数据文件中查找与该URL路径对应的栅格小图片的存储位置,读取该栅格小图片并发送给客户端。
本发明将海量栅格小图片打包至数据文件中,并对相同的文件只进行一次存储分配,减小了磁盘空间的占有量;在根据URL路径查找对应栅格小图片时,不依赖于文件系统逐一查找,而是通过索引的形式查找,提高了查找效率。
所述步骤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;
否则表示该栅格小图片LF与模板文件T不相同,进一步判断数据文件Fi是否超过其最大容量值MaxSize:如果判定该数据文件Fi未超过其最大容量值MaxSize,则将LF.context存放至当前的数据文件Fi中,保存该栅格小图片LF在该数据文件Fi中的偏移LF.offset且LF.fno=i;
如果判定该数据文件Fi超过其最大容量值MaxSize,则关闭当前的数据文件Fi,i=i+1;打开下一数据文件Fi,将LF.context存放至下一数据文件Fi中,并且保存该栅格小图片LF在该数据文件Fi中的偏移LF.offset且LF.fno=i;
S14、判断地图目录Root下是否还存在尚未被读取的栅格小图片,如果存在则重复执行步骤S12~S13,否则关闭当前的数据文件Fi以及中间文件Fdb。
本发明针对大量相同的图片(诸如空白图片),设置模板文件,在将海量栅格小图片打包至数据文件的过程中,首先将栅格小图片与该模板文件进行比较,如果相同则不再重复存储,因此进一步减小了磁盘空间的占有量。
在所述步骤S12中深度遍历该地图目录Root时,按照名称大小顺序依次读取各栅格小图片。由于栅格小图片的名称大小反映了栅格小图片在空间上的临近关系,当加载某一栅格小图片时会将与其临近的图片一起加载,从而可以减少磁盘IO的访问次数,提高服务性能。
所述步骤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,如果路径哈希表Hash_Path中不存在PATH,则PID=PID+1,并将(PATH,PID)插入Hash_Path中;如果文件名哈希表Hash_Name中不存在NAME,则NID=NID+1,并将(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路径对应的栅格小图片的存储位置的步骤为:根据客户端请求的URL路径构造出待加载栅格小图片的路径部分PATH和文件名部分NAME,根据该路径部分PATH和文件名部分NAME查找索引文件的路径哈希表Hash_Path和文件名哈希表Hash_Name,确定该路径部分PATH和文件名部分NAME的标号PID、NID,从而确定待加载栅格小图片的标号FID=PID<<16|NID;
根据待加载栅格小图片的标号FID查找索引文件的数组FArray{},确定待加载栅格小图片的相关信息(FID,LF.size,LF.fno,LF.offset);
根据待加载栅格小图片的相关信息LF.fno和LF.offset,确定待加载栅格小图片所在的数据文件Fi以及在该数据文件Fi中的偏移,从而确定与该URL路径对应的栅格小图片的存储位置。
所述步骤S3中采用数据缓存机制读取该栅格小图片,在读取该栅格小图片时,首先查找缓冲池的缓冲块中是否缓存有该栅格小图片,如果缓冲块中缓存有该栅格小图片则直接从对应的缓冲块中读取该栅格小图片,否则从磁盘的数据文件中查找到该栅格小图片并将该栅格小图片缓存至缓冲块中,并从该缓冲块中读取该栅格小图片。
本发明采用数据缓存机制,使用缓存块,一次性加载相邻的小图片,对即将访问的小图片进行预加载,减少了磁盘访问次数,提高了访问效率。
该海量栅格瓦块地图发布方法还包括增量发布的步骤:对增加的地图单独切割成多个栅格小图片,打包至一个单独的数据文件中,并建立同一索引文件。
该海量栅格瓦块地图发布方法还包括局部更新的步骤:对更新的地图重新切割成多个栅格小图片,打包至一个单独的数据文件中,并建立同一索引文件。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、本发明将海量栅格小图片打包至数据文件中,减小了磁盘空间的占有量;在根据URL路径查找对应栅格小图片时,不是依赖于文件系统逐一查找,而是通过索引的形式查找,提高了查找效率;此外,该索引文件存储在内存中,利用索引文件查找栅格小图片时不必访问磁盘,进一步提高了查找效率;
2、本发明针对大量相同的图片(诸如空白图片),设置模板文件,在将海量栅格小图片打包至数据文件的过程中,首先将栅格小图片与该模板文件进行比较,如果相同则不再重复存储,因此进一步减小了磁盘空间的占有量;
3、深度遍历该地图目录Root时,按照名称大小顺序依次读取各栅格小图片,由于栅格小图片的名称大小反映了栅格小图片在空间上的临近关系,当加载某一栅格小图片时会将与其临近的图片一起加载,从而可以减少磁盘IO的访问次数,提高服务性能;
4、在建立索引文件的过程中,本发明采用路径和文件名压缩编码的方式减少了相同路径与同名文件的数量,达到了压缩的目的,减少了内存使用量;
5、索引文件通过加密算法进行加密,提高了索引的安全性;
6、本发明采用数据缓存机制读取该栅格小图片,减少了磁盘访问次数,提高了访问效率;
7、本发明支持增量发布和局部更新,避免了全范围内地图的重新切割,减少了工作量。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是栅格小图片的地图目录Root的第一示意图;
图2是栅格小图片的地图目录Root的第二示意图;
图3是本发明的工作流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
该海量栅格瓦块地图发布方法由以下步骤组成,如图3所示:
S1、将矢量地图切割成多个栅格小图片并存储于地图目录Root中,遍历该地图目录Root中的栅格小图片并打包至数据文件中。
本发明将海量栅格小图片打包至数据文件中,减小了磁盘空间的占有量。
以ESRI的ArcMap Server的切图为例,说明栅格小图片的地图目录Root,如图1~2所示:Layers目录下包含“_alllayers”目录和两个配置文件:“conf.cdi”、“conf.xml”。“_alllayers”目录下包括所有层的目录,以“LXX”为层目录名,编号从00开始,“L00”表示最小比例的地图目录,“L01”表示第二层次的地图目录,以此类推。
在某一个层的地图目录中,包含了行地图目录,名称以字母‘R’开始,后跟8为十六进制数字,表示行编号。此外,在行地图目录中,包含了该行的所有列图片,图片名称以字母C开始,后跟8位十六进制以及图片文件扩展名(诸如png、jpg等)。
具体地,该过程由以下步骤组成:
第一步、将矢量地图切割成多个栅格小图片并存储于地图目录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为整数。
第二步、设置i=0,打开数据文件Fi,读取模板文件T并将该模板文件T=(path,size,context,fno,offset)写入数据文件Fi中,保存该模板文件T在数据文件Fi中的偏移T.offset且T.fno=i。
第三步、深度遍历该地图目录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。在深度遍历该地图目录Root时,按照名称大小顺序依次读取各栅格小图片。
第四步、将各栅格小图片LF与该模板文件T进行比较:
在LF.size=T.size且LF.context=T.context时表示该栅格小图片LF与模板文件T相同,不再将该栅格小图片LF重复写入该数据文件Fi中,并且LF.offset=T.offset,LF.fno=T.fno;
否则表示该栅格小图片LF与模板文件T不相同,进一步判断数据文件Fi是否超过其最大容量值MaxSize:如果判定该数据文件Fi未超过其最大容量值MaxSize,则将LF.context存放至当前的数据文件Fi中,保存该栅格小图片LF在该数据文件Fi中的偏移LF.offset且LF.fno=i,MaxSize≤4G;
如果判定该数据文件Fi超过其最大容量值MaxSize,则关闭当前的数据文件Fi,i=i+1,打开下一数据文件Fi,将LF.context存放至下一数据文件Fi中,并且保存该栅格小图片LF在该数据文件Fi中的偏移LF.offset且LF.fno=i+1;
第五步、判断地图目录Root下是否还存在尚未被读取的栅格小图片,如果存在则重复执行第三至第四步,否则关闭当前的数据文件Fi,结束打包操作。
由此可见,本发明针对大量相同的图片(诸如空白图片),设置模板文件,在将海量栅格小图片打包至数据文件的过程中,首先将栅格小图片与该模板文件进行比较,如果相同则不再重复存储,因此进一步减小了磁盘空间的占有量。此外,深度遍历该地图目录Root时,按照名称大小顺序依次读取各栅格小图片,由于栅格小图片的名称大小反映了栅格小图片在空间上的临近关系,当加载某一栅格小图片时会将与其临近的图片一起加载,从而可以减少磁盘IO的访问次数,提高服务性能。
S2、建立索引文件并采用路径名与文件名分别压缩编码的方式,减少磁盘内存占用量,可一次性读入内存中,该索引文件用于表示URL路径与数据文件中对应栅格小图片存储位置的索引关系。
在根据URL路径查找对应栅格小图片时,不是依赖于文件系统逐一查找,而是通过索引的形式查找,提高了查找效率。此外,该索引文件存储在内存中,利用索引文件查找栅格小图片时不必访问磁盘,进一步提高了查找效率。
具体地,该过程由以下步骤组成:
第一步、初始化路径哈希表Hash_Path、文件名哈希表Hash_Name和数组FArray={},其中该路径哈希表Hash_Path中路径的标号Path_ID初始化为0,该文件名哈希表Hash_Name中文件名的标号Name_ID初始化为0。
第二步,在地图目录Root中的栅格小图片打包至数据文件过程中,依次将栅格小图片LF=(path,size,fno,offset)写入中间文件Fdb中,在建立索引文件的过程中打开该中间文件Fdb。
第三步、从该中间文件Fdb中读取一个栅格小图片LF的存储路径信息LF.path,并将LF.path分解为路径部分PATH和文件名部分NAME。
第四步、按照栅格小图片的读取顺序对该栅格小图片的路径部分PATH和文件名部分NAME分别进行标号,其中路径部分PATH的标号记为PID,文件名部分NAME的标号记为NID,并将(PATH,PID)插入该路径哈希表Hash_Path中,将(NAME,NID)插入该文件名哈希表Hash_Name中。
在本发明的实施例中,从0开始没依次加1,分别对各栅格小图片的路径部分PATH和文件名部分NAME分别进行标号:
判断路径哈希表Hash_Path中是否存在PATH:如果不存在,则该栅格小图片的路径部分PATH的标号PID=PID+1,并将(PATH,PID)插入该路径哈希表Hash_Path中;
判断该文件名哈希表Hash_Name中是否存在NAME:如果不存在,则该栅格小图片的文件名部分NAME的标号NID=NID+1,并将(NAME,NID)插入该文件名哈希表Hash_Name中。
第五步、确定该栅格小图片的标号FID=PID<<16|NID,并且将(FID,LF.size,LF.fno,LF.offset)存储至数组FArray{}末尾,其中<<表示左移运算符,|表示或运算符。
第六步、重复执行第三步至第五步,直至该中间文件Fdb中所有栅格小图片读取完成。
第七步、按照各栅格小图片的标号FID大小对该数组FArray{}进行排序。
第八步、将该路径哈希表Hash_Path、文件名哈希表Hash_Name以及数组FArray{}的内容写入索引文件中。此外,该索引文件还可以采用加密算法进行加密,从而提高索引的安全性。
由此可见,在建立索引文件的过程中,本发明采用路径和文件名压缩编码的方式减少了相同路径与同名文件的数量,达到了压缩的目的,减少了内存使用量。
S3、根据客户端请求的URL路径以及索引文件,在数据文件中查找与该URL路径对应的栅格小图片的存储位置,读取该栅格小图片并发送给客户端。
具体地,根据客户端请求的URL路径构造出待加载栅格小图片的路径部分PATH和文件名部分NAME,根据该路径部分PATH和文件名部分NAME查找索引文件的路径哈希表Hash_Path和文件名哈希表Hash_Name,确定该路径部分PATH和文件名部分NAME的标号PID、NID,从而确定待加载栅格小图片的标号FID=PID<<16|NID;
根据待加载栅格小图片的标号FID查找索引文件的数组FArray{},确定待加载栅格小图片的相关信息(FID,LF.size,LF.fno,LF.offset);
根据待加载栅格小图片的相关信息LF.fno和LF.offset,确定待加载栅格小图片所在的数据文件Fi以及在该数据文件Fi中的偏移,从而确定与该URL路径对应的栅格小图片的存储位置。
为了减少磁盘访问次数,提高访问效率,本发明提出了数据缓存机制,对最近读取的栅格小图片以缓冲块的形式缓存在缓冲池中。在读取该栅格小图片时,首先查找缓冲池的缓冲块中是否缓存有该栅格小图片,如果缓冲块中缓存有该栅格小图片则直接从对应的缓冲块中读取该栅格小图片,否则从磁盘的数据文件中查找到该栅格小图片并将该栅格小图片缓存至缓冲块中,并从该缓冲块中读取该栅格小图片。最近被访问的缓冲块被移动至缓冲块队列的头部。当缓存池空间超过一定数量,就需要从其中删除一部分缓存块,以释放资源,删除方法:从缓存队列的末尾开始向前搜索,如果某一个缓存块的引用计数为0,就可以删除,这样可以保证最近访问的缓存块最后被删除。
本发明还支持增量发布和局部更新,避免了全范围内地图的重新切割,减少了工作量。增量发布的步骤为:对增加的地图单独切割成多个栅格小图片,打包至一个单独的数据文件中,并建立同一索引文件;局部更新的步骤为:对更新的地图重新切割成多个栅格小图片,打包至一个单独的数据文件中,并建立同一索引文件。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

Claims (9)

1.一种海量栅格瓦块地图发布方法,其特征在于包括以下步骤:
S1、将矢量地图切割成多个栅格小图片并存储于地图目录Root中,遍历该地图目录Root中的栅格小图片并打包至数据文件中;
S2、建立索引文件,该索引文件用于表示URL路径与数据文件中对应栅格小图片存储位置的索引关系;
S3、根据客户端请求的URL路径以及索引文件,在数据文件中查找与该URL路径对应的栅格小图片的存储位置,读取该栅格小图片并发送给客户端。
2.根据权利要求1所述的海量栅格瓦块地图发布方法,其特征在于所述步骤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=i+1,打开下一数据文件Fi,将LF.context存放至下一数据文件Fi中,并且保存该栅格小图片LF在该数据文件Fi中的偏移LF.offset且LF.fno=i+1;
S14、判断地图目录Root下是否还存在尚未被读取的栅格小图片,如果存在则重复执行步骤S12~S13,否则关闭当前的数据文件Fi以及中间文件Fdb。
3.根据权利要求2所述的海量栅格瓦块地图发布方法,其特征在于:在所述步骤S12中深度遍历该地图目录Root时,按照名称大小顺序依次读取各栅格小图片。
4.根据权利要求1所述的海量栅格瓦块地图发布方法,其特征在于所述步骤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{}的内容写入索引文件中,建立索引文件。
5.根据权利要求1或4所述的海量栅格瓦块地图发布方法,其特征在于:该索引文件通过加密算法进行加密。
6.根据权利要求4所述的海量栅格瓦块地图发布方法,其特征在于所述步骤S3中根据客户端请求的URL路径以及索引文件,在数据文件中查找与该URL路径对应的栅格小图片的存储位置的步骤为:根据客户端请求的URL路径构造出待加载栅格小图片的路径部分PATH和文件名部分NAME,根据该路径部分PATH和文件名部分NAME查找索引文件的路径哈希表Hash_Path和文件名哈希表Hash_Name,确定该路径部分PATH和文件名部分NAME的标号PID、NID,从而确定待加载栅格小图片的标号FID=PID<<16|NID;
根据待加载栅格小图片的标号FID查找索引文件的数组FArray{},确定待加载栅格小图片的相关信息(FID,LF.size,LF.fno,LF.offset);
根据待加载栅格小图片的相关信息LF.fno和LF.offset,确定待加载栅格小图片所在的数据文件Fi以及在该数据文件Fi中的偏移,从而确定与该URL路径对应的栅格小图片的存储位置。
7.根据权利要求1所述的海量栅格瓦块地图发布方法,其特征在于所述步骤S3中采用数据缓存机制读取该栅格小图片,在读取该栅格小图片时,首先查找缓冲池的缓冲块中是否缓存有该栅格小图片,如果缓冲块中缓存有该栅格小图片则直接从对应的缓冲块中读取该栅格小图片,否则从磁盘的数据文件中查找到该栅格小图片并将该栅格小图片缓存至缓冲块中,并从该缓冲块中读取该栅格小图片。
8.根据权利要求1所述的海量栅格瓦块地图发布方法,其特征在于还包括增量发布的步骤:对增加的地图单独切割成多个栅格小图片,打包至一个单独的数据文件中,并建立同一索引文件。
9.根据权利要求1所述的海量栅格瓦块地图发布方法,其特征在于还包括局部更新的步骤:对更新的地图重新切割成多个栅格小图片,打包至一个单独的数据文件中,并建立同一索引文件。
CN201210325833.6A 2012-09-05 2012-09-05 海量栅格瓦块地图发布方法 Active CN102902724B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210325833.6A CN102902724B (zh) 2012-09-05 2012-09-05 海量栅格瓦块地图发布方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210325833.6A CN102902724B (zh) 2012-09-05 2012-09-05 海量栅格瓦块地图发布方法

Publications (2)

Publication Number Publication Date
CN102902724A true CN102902724A (zh) 2013-01-30
CN102902724B CN102902724B (zh) 2015-04-29

Family

ID=47574957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210325833.6A Active CN102902724B (zh) 2012-09-05 2012-09-05 海量栅格瓦块地图发布方法

Country Status (1)

Country Link
CN (1) CN102902724B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294827A (zh) * 2013-06-21 2013-09-11 广东威创视讯科技股份有限公司 一种gis信息处理方法及装置
CN103488709A (zh) * 2013-09-09 2014-01-01 东软集团股份有限公司 一种索引建立方法及系统、检索方法及系统
CN103699582A (zh) * 2013-12-03 2014-04-02 天津市普迅电力信息技术有限公司 一种多源地图数据处理方法
CN103744855A (zh) * 2013-11-29 2014-04-23 航天恒星科技有限公司 一种基于聚合文件的瓦片地图存储方法
CN107301194A (zh) * 2016-10-09 2017-10-27 上海炬宏信息技术有限公司 瓦片式栅格地图的压缩存储及发布方法
CN107609030A (zh) * 2017-08-09 2018-01-19 成都视达科信息技术有限公司 一种图片管理方法和系统
CN109976662A (zh) * 2017-12-27 2019-07-05 浙江宇视科技有限公司 数据存储方法、装置及分布式存储系统
CN110209750A (zh) * 2019-05-08 2019-09-06 杭州迦智科技有限公司 地图处理方法、装置、存储介质及处理器
CN111159326A (zh) * 2020-01-02 2020-05-15 中国航空工业集团公司西安航空计算技术研究所 一种机载数字地图局部数据增量更新方法和装置
CN111611212A (zh) * 2020-05-15 2020-09-01 交通运输部规划研究院 对栅格地图文件进行打包的方法、装置以及存储介质
CN112073507A (zh) * 2020-09-04 2020-12-11 上海领旌信息科技有限公司 一种地理信息系统、应用配置方法及app客户端加载方法
CN114357104A (zh) * 2022-02-25 2022-04-15 北京嘉诚瑞杰信息技术有限公司 一种无索引地图切片聚合方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101388043A (zh) * 2008-09-26 2009-03-18 北京航空航天大学 一种基于小块图片的ogc高性能遥感图像地图服务方法
CN101763416A (zh) * 2009-12-29 2010-06-30 中国科学院地理科学与资源研究所 一种数据库空间栅格对象存取方法
CN102542041A (zh) * 2011-12-27 2012-07-04 北京地拓科技发展有限公司 栅格数据处理方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101388043A (zh) * 2008-09-26 2009-03-18 北京航空航天大学 一种基于小块图片的ogc高性能遥感图像地图服务方法
CN101763416A (zh) * 2009-12-29 2010-06-30 中国科学院地理科学与资源研究所 一种数据库空间栅格对象存取方法
CN102542041A (zh) * 2011-12-27 2012-07-04 北京地拓科技发展有限公司 栅格数据处理方法及系统

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294827A (zh) * 2013-06-21 2013-09-11 广东威创视讯科技股份有限公司 一种gis信息处理方法及装置
CN103488709A (zh) * 2013-09-09 2014-01-01 东软集团股份有限公司 一种索引建立方法及系统、检索方法及系统
CN103488709B (zh) * 2013-09-09 2017-06-16 东软集团股份有限公司 一种索引建立方法及系统、检索方法及系统
CN103744855A (zh) * 2013-11-29 2014-04-23 航天恒星科技有限公司 一种基于聚合文件的瓦片地图存储方法
CN103744855B (zh) * 2013-11-29 2017-07-28 航天恒星科技有限公司 一种基于聚合文件的瓦片地图存储方法
CN103699582A (zh) * 2013-12-03 2014-04-02 天津市普迅电力信息技术有限公司 一种多源地图数据处理方法
CN103699582B (zh) * 2013-12-03 2017-01-18 天津市普迅电力信息技术有限公司 一种多源地图数据处理方法
CN107301194B (zh) * 2016-10-09 2021-01-01 上海炬宏信息技术有限公司 瓦片式栅格地图的压缩存储及发布方法
CN107301194A (zh) * 2016-10-09 2017-10-27 上海炬宏信息技术有限公司 瓦片式栅格地图的压缩存储及发布方法
CN107609030A (zh) * 2017-08-09 2018-01-19 成都视达科信息技术有限公司 一种图片管理方法和系统
CN107609030B (zh) * 2017-08-09 2020-09-29 成都视达科信息技术有限公司 一种图片管理方法和系统
CN109976662A (zh) * 2017-12-27 2019-07-05 浙江宇视科技有限公司 数据存储方法、装置及分布式存储系统
CN109976662B (zh) * 2017-12-27 2022-06-14 浙江宇视科技有限公司 数据存储方法、装置及分布式存储系统
CN110209750A (zh) * 2019-05-08 2019-09-06 杭州迦智科技有限公司 地图处理方法、装置、存储介质及处理器
CN110209750B (zh) * 2019-05-08 2022-04-26 杭州迦智科技有限公司 地图处理方法、装置、存储介质及处理器
CN111159326A (zh) * 2020-01-02 2020-05-15 中国航空工业集团公司西安航空计算技术研究所 一种机载数字地图局部数据增量更新方法和装置
CN111611212A (zh) * 2020-05-15 2020-09-01 交通运输部规划研究院 对栅格地图文件进行打包的方法、装置以及存储介质
CN112073507A (zh) * 2020-09-04 2020-12-11 上海领旌信息科技有限公司 一种地理信息系统、应用配置方法及app客户端加载方法
CN114357104A (zh) * 2022-02-25 2022-04-15 北京嘉诚瑞杰信息技术有限公司 一种无索引地图切片聚合方法

Also Published As

Publication number Publication date
CN102902724B (zh) 2015-04-29

Similar Documents

Publication Publication Date Title
CN102902724B (zh) 海量栅格瓦块地图发布方法
US10664196B2 (en) Random access file management
CN100512409C (zh) 数据处理装置和数据处理方法
US8219562B1 (en) Efficient storage and retrieval for large number of data objects
CN103136243B (zh) 基于云存储的文件系统去重方法及装置
CN105868286B (zh) 基于分布式文件系统小文件合并的并行追加方法及系统
CN102629247B (zh) 一种数据处理方法、装置和系统
CN105183839A (zh) 一种基于Hadoop的小文件分级索引的存储优化方法
CN108021717B (zh) 一种轻量级嵌入式文件系统的实现方法
KR20020016551A (ko) 컴퓨터 시스템에서 다른 저장 위치로의 객체의 부분 이송
CN107817946B (zh) 用于混合存储设备读写数据的方法以及装置
CN104408111A (zh) 一种删除重复数据的方法及装置
CN108776682B (zh) 基于对象存储的随机读写对象的方法和系统
CN102479250A (zh) 一种嵌入式浏览器磁盘缓存方法
KR20130108298A (ko) 폐기가능 파일들의 카드-기반 관리
US20130067237A1 (en) Providing random access to archives with block maps
US20110106806A1 (en) Process for optimizing file storage systems
CN103559229A (zh) 基于MapFile的小文件管理服务SFMS系统及其使用方法
CN106570113B (zh) 一种海量矢量切片数据云存储方法及系统
CN105117451B (zh) 一种地图瓦片文件的存储方法
CN101527736A (zh) 分布式文件系统中业务内容处理、更新方法与装置
Cohen et al. Hash based disk imaging using AFF4
KR20110127636A (ko) 폐기 가능 파일의 다운로드 관리 방법
US8060697B1 (en) Dynamically allocated secondary browser cache
CN105912675A (zh) 一种针对小文件合并的批量删除/查询方法与装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240328

Address after: 6th floor, No. 76 Jianxin North Road, Jiangbei District, Chongqing, 400020

Patentee after: CHONGQING CYBERCITY SCI-TECH Co.,Ltd.

Country or region after: China

Address before: 400020 Jiangbei District, Chongqing electric measuring Village No. 231

Patentee before: CHONGQING SURVEY INSTITUTE

Country or region before: China

Patentee before: CHONGQING CYBERCITY SCI-TECH Co.,Ltd.

TR01 Transfer of patent right