sFileDst = "_" + sCountryDepCode + "-" + sCountryName + "-border_allAreas.geojson" else: sFileDst = sCountryDepCode + "-" + sCountryName + "-border_" + sName + ".geojson" bpaTools.writeJsonFile(sDestPath + sFileDst, oMainFeature) if iIdx==-1: if oArea["geometry"]["type"]=="MultiPolygon": iIdx=0 for oArea in oArea["geometry"]["coordinates"]: createGeoJsonFile(sFileSrc, sCountryName, sCountryCode, sCountryIsoCode, sCountryDepCode, oArea, iIdx) iIdx+=1 return if __name__ == '__main__': oLog = bpaTools.Logger(appId, logFile) oLog.resetFile() #Clean du log si demandé sPathSrc = inpPath + "borders/ec.europa.eu/" #sFileSrc = "CNTR_RG_60M_2020_4326.geojson" #Small resolution map sFileSrc = "CNTR_RG_01M_2020_4326.geojson" #Hight resolution map oLog.info("Loading file: " + sFileSrc, outConsole=True) oSrcJson:dict = bpaTools.readJsonFile(sPathSrc + sFileSrc) oFeatures = oSrcJson["features"] for oCountry in oFeatures: sCountryName = oCountry["properties"]["NAME_ENGL"] sCountryName = str(sCountryName).replace(" ","-") sCountryCode = oCountry["properties"]["CNTR_ID"] sCountryIsoCode = oCountry["properties"]["ISO3_CODE"] oLog.info("Country: ({0}) {1} - {2}".format(sCountryIsoCode, sCountryCode, sCountryName) , outConsole=False)
print(" Resources") print( " GeoJSON test format: http://geojson.tools/ -or- http://geojson.io" ) print( " OpenAir test format: http://xcglobe.com/cloudapi/browser -or- http://cunimb.net/openair2map.php" ) return if __name__ == '__main__': ### Context d'excecution oOpts = bpaTools.getCommandLineOptions( sys.argv) #Arguments en dictionnaire oLog = bpaTools.Logger(___AppId___, __LogFile__, isSilent=bool(aixmReader.CONST.optSilent in oOpts)) if len(sys.argv) < 2 or (aixmReader.CONST.optHelp in oOpts): syntaxe() #Aide en ligne oLog.closeFile() else: if aixmReader.CONST.optCleanLog in oOpts: oLog.resetFile() #Clean du log oLog.writeCommandLine(sys.argv) #Trace le contexte d'execution sSrcFile = sys.argv[1] #Nom de fichier aixmCtrl = aixmReader.AixmControler( sSrcFile, __OutPath__, oLog=oLog) #Controler de traitements if aixmCtrl.execParser(oOpts): #Execution des traitements print()
#### poaf - Specifique test for bigData #### #srcFile = "../../poaff/input/SIA/20200813-20200909_aixm4.5_SIA-FR.xml" #srcFile = "../../poaff/input/EuCtrl/20200618_aixm4.5_Eurocontrol-FR.xml" #srcFile = "../../poaff/input/EuCtrl/20201105_aixm4.5_Eurocontrol-Euro_BPa.xml" #aArgv = [appName, srcFile, "-Fall", aixmReader.CONST.typeAIRSPACES, aixmReader.CONST.optVFR, aixmReader.CONST.optFreeFlight] #### Ajout de l'option d'appel pour la gestion du Log #### aArgv += [aixmReader.CONST.optCleanLog ] #Mode classique avec log et afficages sur console système #aArgv += [aixmReader.CONST.optSilent] #Mode silencieux sans utilisation du fichier log et sans retour d'affichage #### Préparation d'appel #### oOpts = bpaTools.getCommandLineOptions(aArgv) #Arguments en dictionnaire oLog = bpaTools.Logger(appId, logFile, callingContext, linkContext, isSilent=bool(aixmReader.CONST.optSilent in oOpts)) if aixmReader.CONST.optCleanLog in oOpts: oLog.resetFile() #Clean du log si demandé oLog.writeCommandLine(aArgv) #Trace le contexte d'execution aixmCtrl = aixmReader.AixmControler(srcFile, outPath, "", oLog=oLog) #Init controler if aixmCtrl.execParser(oOpts): #Execution des traitements print() if oLog.CptCritical or oLog.CptError: print("/!\ Processing Error(s)") oLog.Report() oLog.closeFile()
geojson.append({ "type": "Feature", "properties": { "name": "Complex object" }, "geometry": g }) return geojson if __name__ == '__main__': class MainTst: def __init__(self, oLog, outPath): self.oLog = oLog self.sOutPath = outPath self.sOutHeadFile = "tst_" self.sEncoding = "utf-8" self.oAixm = {} self.Draft = False appName = "Aixm2jsonTst" appPath = bpaTools.getFilePath(__file__) #or your app path outPath = appPath + "../../out/" logFile = outPath + "_" + appName + ".log" oLog = bpaTools.Logger(appName, logFile, "", "", isSilent=False) oMain = MainTst(oLog, outPath) oTst = Aixm2jsonTst(oMain) oTst.testAll()
### Context applicatif #### appName = bpaTools.getFileName(__file__) appPath = bpaTools.getFilePath(__file__) appVersion = "1.0.0" appId = appName + " v" + appVersion outPath = appPath + "../../output/" inPath = appPath + "../../input/" logFile = outPath + "_" + appName + ".log" ### Environnement applicatif ### poaffOutPath = outPath + poaffCst.cstPoaffOutPath if __name__ == '__main__': oLog = bpaTools.Logger(appId, logFile, poaffCst.callingContext, poaffCst.linkContext, isSilent=False) #Clean du log si demandé oLog.resetFile() sHeadFileDate:str = "{0}_".format(bpaTools.getDateNow()) #sSrcFile = inPath + "BPa/French-LTA/20201214_airspaces-freeflight-gpsWithTopo-geoFrench.txt" sSrcFile = inPath + "BPa/French-LTA/20210103_LTA-gpsWithTopo-geoFrench.txt" sDstFile = inPath + "BPa/French-LTA/"+ sHeadFileDate + "LTA-FrenchSurfaceS_BPa.txt" oAsCat:AsCatalog = airspacesCatalog.AsCatalog(oLog) #Catalogue de zone vide oOpArea = OpenairArea(oLog, oAsCat, False) #Gestion des zones oOpArea.parseFile(sSrcFile, "BPa-French-LTA") #Analyse du contenu Openair oZone:OpenairZone = None #Zone #for sUId, oZone in oOpArea.oOpenair.items(): # oLog.info("(sUId={0}) {1} - {2}".format(sUId, oZone.sClass, oZone.sName), outConsole=False)
) #Regénération des fichiers après maj des référentiels return if __name__ == '__main__': sCallingContext = None bpaTools.createFolder(outPath) #Initialisation bpaTools.createFolder(poaffOutPath) #Initialisation bpaTools.createFolder(poaffOutPath + poaffCst.cstReferentialPath) #Initialisation oOpts = bpaTools.getCommandLineOptions(aArgs) #Arguments en dictionnaire oLog = bpaTools.Logger(appId, logFile, poaffCst.callingContext, poaffCst.linkContext, debugLevel=debugLevel, isSilent=bool(aixmReader.CONST.optSilent in oOpts)) if aixmReader.CONST.optCleanLog in oOpts: oLog.resetFile() #Clean du log si demandé #--------- creation des fichiers unitaires ---------- if aixmPaserConstruct: poaffGenerateFiles() #Creation des fichiers poaffMergeFiles() #Consolidation des fichiers makeKmlFiles() #Sortie du ficher en KMLs print() oLog.Report() iPostErr = oLog.CptCritical + oLog.CptError #Nombre d'erreurs en post-traitements if iPostErr > 0: