def doItAll(region): if Regions.isRegion(region): cmd = shlex.split( command %( Env.mtcwDir, "BatchRegionTiler.py", region) ) subprocess.Popen(cmd).wait() cmd = shlex.split( command %( Env.mtcwDir, "BatchRegionMerger.py", region) ) subprocess.Popen(cmd).wait() if len(Regions.getRegionFilterList(region)) == len(open(Env.mergedTileDir+region+"/mergeorder.txt").readlines()): cmd = shlex.split( command %( Env.mtcwDir, "BatchRegionOptimizer.py", region) ) subprocess.Popen(cmd).wait() cmd = shlex.split( command %( Env.mtcwDir, "AutoGemf.py", region) ) subprocess.Popen(cmd).wait() if os.path.isdir(Env.mergedTileDir+region): shutil.rmtree(Env.mergedTileDir+region) if os.path.isdir(Env.mergedTileDir+region+".opt"): shutil.rmtree(Env.mergedTileDir+region+".opt") cmd = shlex.split( command %( Env.mtcwDir, "GenerateMxRegionData.py", region) ) subprocess.Popen(cmd).wait() else: print len(Regions.getRegionFilterList(region)) print len(open(Env.mergedTileDir+region+"/mergeorder.txt").readlines()) print "an error occurred"
def generateRegion(region): #fisrt lets see if the gemf is there print "generating data for " + region filter = Regions.getRegionFilterList(region) bo = BsbOutlines.BsbOutlines(Env.bsbDir, filter) xmlFname = region+".xml" xmlPath = Env.gemfDir+"/"+xmlFname zxmlPath = Env.gemfDir+"/"+region+".zxml" xml = XMLWriter(codecs.open(xmlPath, "w", "utf-8")) zxml = zipfile.ZipFile(zxmlPath, "w", zipfile.ZIP_DEFLATED) gemfFile = Env.gemfDir+region+".gemf" xml.start("rml", version='1.0') xml.start("region", description=Regions.getRegionDescription(region), bytes = str(os.path.getsize(gemfFile))) for kapfile in bo.getkeys(): xml.start("chart", file=kapfile, name=bo.getname(kapfile), scale=str(bo.getscale(kapfile)), depths=bo.getdepthunits(kapfile), zoom=str(bo.getzoom(kapfile))); xml.data(bo.getoutline(kapfile)) xml.end("chart") xml.end("region") xml.end("rml") xml.close(1) cmd = "tidy -xml -imq " + xmlPath os.popen(cmd) zxml.write(xmlPath, xmlFname) os.remove(xmlPath) zxml.close()
def generateRegion(region): #fisrt lets see if the gemf is there print "generating data for " + region filter = Regions.getRegionFilterList(region) bo = BsbOutlines.BsbOutlines(Env.bsbDir, filter) # bsbScales = BsbScales(Env.bsbDir, filter) # sortList = bsbScales.getKapsSortedByScale() # sortList.reverse() # mergeorder = "" # for item in sortList: # mergeorder += item + ":" # mergeorder.rstrip(":") sqlFname = region+".sql" sqlPath = Env.gemfDir+"/"+sqlFname zdatPath = Env.gemfDir+"/"+region+".zdat" sqlf = codecs.open(sqlPath, "w", "utf-8") zdat = zipfile.ZipFile(zdatPath, "w", zipfile.ZIP_DEFLATED) #sqlf = open(Env.gemfDir+"/"+region+".bin", "wb") wrt = u"--MXMARINER-DBVERSION:3\n" #zdat.writestr( sqlFname, wrt) sqlf.write( wrt ) if (custom): gemfFile = Env.gemfDir+region+".gemf" if not os.path.isfile(gemfFile): print "gemf not ready:" + region sys.exit() else: bytes = os.path.getsize(gemfFile) wrt = strcustom0 %(region) sqlf.write( wrt ) #zdat.writestr( sqlFname, wrt) #[name], [description], [image], [size], [installeddate] wrt = strcustom1 %(region, Regions.getRegionDescription(region), region.lower().replace("_", ""), bytes, epoch) sqlf.write( wrt ) #zdat.writestr( sqlFname, wrt) else: #wrt = str0 %(epoch, mergeorder, region) wrt = str0 %(epoch, region) sqlf.write( wrt ) #zdat.writestr( sqlFname, wrt) wrt = str1 %(region) sqlf.write( wrt ) #zdat.writestr( sqlFname, wrt) for kapfile in bo.getkeys(): wrt = str2 %(region, kapfile, bo.getname(kapfile), bo.getupdated(kapfile), bo.getscale(kapfile), \ bo.getoutline(kapfile), bo.getdepthunits(kapfile), bo.getzoom(kapfile)); sqlf.write( wrt ) #zdat.writestr( sqlFname, wrt) sqlf.close() zdat.write(sqlPath, sqlFname) os.remove(sqlPath) zdat.close()
def renderRegion(region): mFilter = Regions.getRegionFilterList(region) #print mFilter tileDir = Regions.getRegionUnMergedTileDir(region) bsbDir = Regions.getRegionBsbDir(region) if mFilter != None: createTiles(bsbDir, tileDir, region, mFilter) else: print region + " does not exist"
def mergeRegion(region): print "merging: " + region mergeTiles(Regions.getRegionMergedTileDir(region), Regions.getRegionBsbDir(region), \ Regions.getRegionUnMergedTileDir(region), Regions.getRegionFilterList(region))
def printScales(self): keyList = self.scales.keys() keyList.sort() for key in keyList: print key def printProjections(self): keyList = self.projections.keys() for key in keyList: print key, self.projections[key].__len__() def getKapsSortedByScale(self, addExt = ""): lst = [] keyList = self.scales.keys() keyList.sort() keyList.reverse() for key in keyList: for scale in self.scales[key]: item = scale.split("/")[-1].rstrip(".KAP") item = item.rstrip(".kap") lst.append(item+addExt) return lst if __name__== "__main__": import Regions filter = Regions.getRegionFilterList("REGION_15") dir = "/home/will/zxyCharts/BSB_ROOT/NOAA_BSB_ROOT/BSB_ROOT" bs = BsbScales(dir, filter) for ea in bs.getKapsSortedByScale(".KAP"): print ea