Python修改ArcGIS Server cache server directory结构

ArcGIS Server cache server directory的目录结构/L+<level>/R+<row>/C+<col>,row和col是十六进制的行列号;而REST访问缓存目录的结构是/<r-level>/<r-row>/<r-col>,<r-level>是比例尺级别,<r-row>、<r-col>是十进制的行列号。可以通过Python将Server的cache目录结构转换成REST的结构。

 

import sys, string, os, shutil, time # hex2dec def hex2dec(string_num): return str(int(string_num.upper(), 16)) # create new cache directory def ConvertCacheDirectory(srcdir, destdir): totalfilesnum = 0 ISOTIMEFORMAT = "%Y-%m-%d %X" starttime = time.strftime(ISOTIMEFORMAT) print "Start time : " + starttime if os.path.isdir(srcdir): levelpaths = os.listdir(srcdir) for levelpath in levelpaths: level = levelpath[1:] destlevelpath = destdir + "//" + hex2dec(level) os.mkdir(destlevelpath) levelfullpath = os.path.join(srcdir, levelpath) if os.path.isdir(levelfullpath): cacherowpaths = os.listdir(levelfullpath) for cacherowpath in cacherowpaths: cacherow = cacherowpath[1:] destcacherowpath = destlevelpath + "//" + hex2dec(cacherow) os.mkdir(destcacherowpath) cacherowfullpath = os.path.join(levelfullpath, cacherowpath) cachefiles = os.listdir(cacherowfullpath) for cachefile in cachefiles: cachecol = os.path.splitext(cachefile)[0][1:] sufix = os.path.splitext(cachefile)[1] destcachefile = destcacherowpath + "//" + hex2dec(cachecol) + sufix srccachefile = os.path.join(cacherowfullpath, cachefile) shutil.copy(srccachefile, destcachefile) totalfilesnum = totalfilesnum + 1 print "Total copied files : " + str(totalfilesnum) endtime = time.strftime(ISOTIMEFORMAT) print "End time : " + endtime # rename the existing directory def RenameCacheDirectory(srcdir): totalfilesnum = 0 ISOTIMEFORMAT = "%Y-%m-%d %X" starttime = time.strftime(ISOTIMEFORMAT) print "Start time : " + starttime if os.path.isdir(srcdir): levelpaths = os.listdir(srcdir) for levelpath in levelpaths: level = levelpath[1:] destlevelpath = srcdir + "//" + hex2dec(level) levelfullpath = os.path.join(srcdir, levelpath) if os.path.isdir(levelfullpath): cacherowpaths = os.listdir(levelfullpath) for cacherowpath in cacherowpaths: cacherow = cacherowpath[1:] destcacherowpath = levelfullpath + "//" + hex2dec(cacherow) cacherowfullpath = os.path.join(levelfullpath, cacherowpath) cachefiles = os.listdir(cacherowfullpath) for cachefile in cachefiles: cachecol = os.path.splitext(cachefile)[0][1:] sufix = os.path.splitext(cachefile)[1] destcachefile = cacherowfullpath + "//" + hex2dec(cachecol) + sufix srccachefile = os.path.join(cacherowfullpath, cachefile) os.rename(srccachefile, destcachefile) totalfilesnum = totalfilesnum + 1 os.rename(cacherowfullpath, destcacherowpath) os.rename(levelfullpath, destlevelpath) print "Total copied files : " + str(totalfilesnum) endtime = time.strftime(ISOTIMEFORMAT) print "End time : " + endtime srcdir = "D://Data//Image_AmbergDR//Layers//_alllayers" destdir = "D://Data//Tile" RenameCacheDirectory(srcdir)

你可能感兴趣的:(Python修改ArcGIS Server cache server directory结构)