Example #1
0
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"
Example #2
0
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()     
Example #3
0
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()
Example #4
0
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"
Example #5
0
def mergeRegion(region):
    print "merging: " + region
    mergeTiles(Regions.getRegionMergedTileDir(region), Regions.getRegionBsbDir(region), \
               Regions.getRegionUnMergedTileDir(region), Regions.getRegionFilterList(region))
Example #6
0
    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