def __init__(self, app): wx.Frame.__init__(self, None, -1, 'NLExtract-BAG', size=(1000, 500)) Log() self.app = app self.hoofdScherm() # Find homedir: we may have been started within .app or .exe!! bagextract_home = os.path.dirname(os.path.realpath(__file__)) if not os.path.isdir(os.path.join(bagextract_home, 'db')): bagextract_home = None # Init globale configuratie BAGConfig(None, home_path=bagextract_home) self.database = Database()
def main(): """ Voorbeelden: 1. Initialiseer een database: python bagextract.py -H localhost -d bag -U postgres -W postgres -c 2. Importeer een extract in de database: python bagextract.py -H localhost -d bag -U postgres -W postgres -e 9999STA01052011-000002.xml of python bagextract.py -H localhost -d bag -U postgres -W postgres -e 9999STA01052011.zip Importeer gemeente_woonplaats informatie van het kadaster http://www.kadaster.nl/bag/docs/BAG_Overzicht_aangesloten_gemeenten.zip python bagextract.py -H localhost -d bag -U postgres -W postgres -e BAG_Overzicht_aangesloten_gemeenten.zip Theoretisch is het mogelijk de hele bag in te lezen vanuit de "hoofd" zip, maar dit is nog niet getest op geheugen-problemen. """ parser = ArgParser( description= 'bag-extract, commandline tool voor het extraheren en inlezen van BAG bestanden', epilog= "Configureer de database in extract.conf of geef eigen versie van extract.conf via -f of geef parameters via commando regel expliciet op" ) parser.add_argument( '-c', '--dbinit', action='store_true', help= 'verwijdert (DROP TABLE) alle tabellen en maakt (CREATE TABLE) nieuwe tabellen aan' ) parser.add_argument('-d', '--database', metavar='<naam>', help='geef naam van de database') parser.add_argument('-s', '--schema', metavar='<naam>', help='geef naam van het database schema') parser.add_argument( '-f', '--config', metavar='<bestand>', help='gebruik dit configuratiebestand i.p.v. extract.conf') parser.add_argument( '-q', '--query', metavar='<bestand>', help='voer database bewerkingen uit met opgegeven SQL bestand') parser.add_argument( '-e', '--extract', metavar='<naam>', help= 'importeert of muteert de database met gegeven BAG-bestand of -directory' ) parser.add_argument('-H', '--host', metavar='<hostnaam of -adres>', help='verbind met de database op deze host') parser.add_argument('-U', '--username', metavar='<naam>', help='verbind met database met deze gebruikersnaam') parser.add_argument('-p', '--port', metavar='<poort>', help='verbind met database naar deze poort') parser.add_argument('-W', '--password', metavar='<paswoord>', help='gebruikt dit wachtwoord voor database gebruiker') parser.add_argument( '-w', '--no-password', action='store_true', help='gebruik geen wachtwoord voor de database verbinding') parser.add_argument( '-v', '--verbose', action='store_true', help='toon uitgebreide informatie tijdens het verwerken') # Initialiseer args = parser.parse_args() # Init globale configuratie myconfig = BAGConfig(args) #create logger if args.verbose: myconfig.logger.setLevel(logging.DEBUG) else: myconfig.logger.setLevel(logging.INFO) if args.dbinit: #TODO geen args gebruiken maar BAGConfig. Op deze manier gaan beide configuraties uit de pas lopen met kans op fouten mydb = myconfig.get_database() mydb.maak_database() elif args.extract: # TODO geen args gebruiken maar BAGConfig. # Op deze manier gaan beide configuraties uit de pas lopen met kans op fouten # Extracts any data from any source files/dirs/zips/xml/csv etc from bagfilereader import BAGFileReader myreader = BAGFileReader(args.extract) myreader.process() elif args.query: #TODO geen args gebruiken maar BAGConfig. # Op deze manier gaan beide configuraties uit de pas lopen met kans op fouten # Voer willekeurig SQL script uit uit mydb = myconfig.get_database() mydb.file_uitvoeren(myconfig.query) else: myconfig.logger.critical( "Kan de opdracht niet verwerken. Type -h of --help voor een overzicht van parameters" ) # Print end time myconfig.logger.info("Gereed") sys.exit()
def main(): """ Voorbeelden: 1. Initialiseer een database: python bagextract.py -H localhost -d bag -U postgres -W postgres -c 2. Importeer een extract in de database: python bagextract.py -H localhost -d bag -U postgres -W postgres -e 9999STA01052011-000002.xml of python bagextract.py -H localhost -d bag -U postgres -W postgres -e 9999STA01052011.zip Importeer gemeente_woonplaats informatie van het kadaster http://www.kadaster.nl/bag/docs/BAG_Overzicht_aangesloten_gemeenten.zip python bagextract.py -H localhost -d bag -U postgres -W postgres -e BAG_Overzicht_aangesloten_gemeenten.zip Theoretisch is het mogelijk de hele bag in te lezen vanuit de "hoofd" zip, maar dit is nog niet getest op geheugen-problemen. """ parser = ArgParser( description= 'bag-extract, commandline tool voor het extraheren en inlezen van BAG bestanden', epilog= "Configureer de database in extract.conf of geef eigen versie van extract.conf via -f of geef parameters via commando regel expliciet op" ) parser.add_argument( '-c', '--dbinit', action='store_true', help= 'verwijdert (DROP TABLE) alle tabellen en maakt (CREATE TABLE) nieuwe tabellen aan' ) parser.add_argument('-d', '--database', metavar='<naam>', help='geef naam van de database') parser.add_argument('-s', '--schema', metavar='<naam>', help='geef naam van het database schema') parser.add_argument( '-f', '--config', metavar='<bestand>', help='gebruik dit configuratiebestand i.p.v. extract.conf') parser.add_argument( '-q', '--query', metavar='<bestand>', help='voer database bewerkingen uit met opgegeven SQL bestand') parser.add_argument( '-e', '--extract', metavar='<naam>', help= 'importeert of muteert de database met gegeven BAG-bestand of -directory' ) parser.add_argument('-H', '--host', metavar='<hostnaam of -adres>', help='verbind met de database op deze host') parser.add_argument('-U', '--username', metavar='<naam>', help='verbind met database met deze gebruikersnaam') parser.add_argument('-p', '--port', metavar='<poort>', help='verbind met database naar deze poort') parser.add_argument('-W', '--password', metavar='<paswoord>', help='gebruikt dit wachtwoord voor database gebruiker') parser.add_argument( '-w', '--no-password', action='store_true', help='gebruik geen wachtwoord voor de database verbinding') parser.add_argument( '-v', '--verbose', action='store_true', help='toon uitgebreide informatie tijdens het verwerken') # Initialiseer args = parser.parse_args() # Initialize singleton Log object so we can use one global instance Log(args) # Init globale configuratie BAGConfig(args) # Database database = Database() # Print start time Log.log.time("Start") if args.dbinit: # Dumps all tables and recreates them db_script = os.path.realpath(BAGConfig.config.bagextract_home + '/db/script/bag-db.sql') Log.log.info("alle database tabellen weggooien en opnieuw aanmaken...") database.initialiseer(db_script) Log.log.info("Initieele data (bijv. gemeenten/provincies) inlezen...") myreader = BAGFileReader(BAGConfig.config.bagextract_home + '/db/data') myreader.process() Log.log.info("Views aanmaken...") db_script = os.path.realpath( BAGConfig.config.bagextract_home + '/db/script/bag-view-actueel-bestaand.sql') database.file_uitvoeren(db_script) elif args.extract: # Extracts any data from any source files/dirs/zips/xml/csv etc myreader = BAGFileReader(args.extract) myreader.process() elif args.query: # Voer willekeurig SQL script uit uit database = Database() database.file_uitvoeren(args.query) else: Log.log.fatal( "je geeft een niet-ondersteunde optie. Tip: probeer -h optie") # Print end time Log.log.time("End") sys.exit()
def main(): """ Voorbeelden: 1. Initialiseer een database: python bagextract.py -H localhost -d bag -U postgres -W postgres -c 2. Importeer een extract in de database: python bagextract.py -H localhost -d bag -U postgres -W postgres -e 9999STA01052011-000002.xml of python bagextract.py -H localhost -d bag -U postgres -W postgres -e 9999STA01052011.zip Importeer gemeente_woonplaats informatie van het kadaster http://www.kadaster.nl/bag/docs/BAG_Overzicht_aangesloten_gemeenten.zip python bagextract.py -H localhost -d bag -U postgres -W postgres -e BAG_Overzicht_aangesloten_gemeenten.zip Theoretisch is het mogelijk de hele bag in te lezen vanuit de "hoofd" zip, maar dit is nog niet getest op geheugen-problemen. """ parser = ArgParser( description= 'bag-extract, commandline tool voor het extraheren en inlezen van BAG bestanden', epilog= "Configureer de database in extract.conf of geef eigen versie van extract.conf via -f of geef parameters via commando regel expliciet op" ) parser.add_argument( '-c', '--dbinit', action='store_true', help= 'verwijdert (DROP TABLE) alle tabellen en maakt (CREATE TABLE) nieuwe tabellen aan' ) parser.add_argument('-d', '--database', metavar='<naam>', help='geef naam van de database') parser.add_argument('-s', '--schema', metavar='<naam>', help='geef naam van het database schema') parser.add_argument( '-f', '--config', metavar='<bestand>', help='gebruik dit configuratiebestand i.p.v. extract.conf') parser.add_argument( '-q', '--query', metavar='<bestand>', help='voer database bewerkingen uit met opgegeven SQL bestand') parser.add_argument( '-e', '--extract', metavar='<naam>', help= 'importeert of muteert de database met gegeven BAG-bestand of -directory' ) parser.add_argument('-H', '--host', metavar='<hostnaam of -adres>', help='verbind met de database op deze host') parser.add_argument('-U', '--username', metavar='<naam>', help='verbind met database met deze gebruikersnaam') parser.add_argument('-p', '--port', metavar='<poort>', help='verbind met database naar deze poort') parser.add_argument('-W', '--password', metavar='<paswoord>', help='gebruikt dit wachtwoord voor database gebruiker') parser.add_argument( '-w', '--no-password', action='store_true', help='gebruik geen wachtwoord voor de database verbinding') parser.add_argument( '-v', '--verbose', action='store_true', help='toon uitgebreide informatie tijdens het verwerken') parser.add_argument( '-D', '--dbinitcode', action='store_true', help='createert een lijst met statements om het DB script aan te passen' ) # Initialiseer args = parser.parse_args() # Initialize singleton Log object so we can use one global instance Log(args) # Init globale configuratie BAGConfig(args) # Database database = Database() if args.dbinit: if confirm( 'Waarschuwing! met dit commando worden database tabellen opnieuw aangemaakt. Doorgaan?', False): # Print start time Log.log.time("Start") # Dumps all tables and recreates them db_script = os.path.realpath(BAGConfig.config.bagextract_home + '/db/script/bag-db.sql') Log.log.info( "alle database tabellen weggooien en opnieuw aanmaken...") try: database.initialiseer(db_script) except Exception as e: Log.log.fatal("Kan geen verbinding maken met de database") sys.exit() Log.log.info( "Initieele data (bijv. gemeenten/provincies) inlezen...") from bagfilereader import BAGFileReader # from bagobject import VerblijfsObjectPand, AdresseerbaarObjectNevenAdres, VerblijfsObjectGebruiksdoel, Woonplaats, OpenbareRuimte, Nummeraanduiding, Ligplaats, Standplaats, Verblijfsobject, Pand myreader = BAGFileReader(BAGConfig.config.bagextract_home + '/db/data') myreader.process() Log.log.info("Views aanmaken...") db_script = os.path.realpath( BAGConfig.config.bagextract_home + '/db/script/bag-view-actueel-bestaand.sql') database.file_uitvoeren(db_script) # Print end time Log.log.time("End") else: exit() elif args.dbinitcode: # Print start time Log.log.time("Start") # Creates the insert statements from the code, and prints them bagObjecten = [] bagObjecten.append(VerblijfsObjectPand()) bagObjecten.append(AdresseerbaarObjectNevenAdres()) bagObjecten.append(VerblijfsObjectGebruiksdoel()) bagObjecten.append(Woonplaats()) bagObjecten.append(OpenbareRuimte()) bagObjecten.append(Nummeraanduiding()) bagObjecten.append(Ligplaats()) bagObjecten.append(Standplaats()) bagObjecten.append(Verblijfsobject()) bagObjecten.append(Pand()) for bagObject in bagObjecten: print(bagObject.maakTabel()) # Print end time Log.log.time("End") elif args.extract: from bagfilereader import BAGFileReader from bagobject import VerblijfsObjectPand, AdresseerbaarObjectNevenAdres, VerblijfsObjectGebruiksdoel, Woonplaats, OpenbareRuimte, Nummeraanduiding, Ligplaats, Standplaats, Verblijfsobject, Pand # Print start time Log.log.time("Start") # Extracts any data from any source files/dirs/zips/xml/csv etc Database().log_actie('start_extract', args.extract) myreader = BAGFileReader(args.extract) myreader.process() Database().log_actie('stop_extract', args.extract) # Print end time Log.log.time("End") elif args.query: # Print start time Log.log.time("Start") # Voer willekeurig SQL script uit uit Database().log_actie('start_query', args.query) database = Database() database.file_uitvoeren(args.query) Database().log_actie('stop_query', args.query) # Print end time Log.log.time("End") else: parser.error("Command line parameters niet herkend") sys.exit()
def main(): """ Voorbeelden: 1. Initialiseer een database: python bagextract.py -H localhost -d bag -U postgres -W postgres -c 2. Importeer een extract in de database: python bagextract.py -H localhost -d bag -U postgres -W postgres -e 9999STA01052011-000002.xml of python bagextract.py -H localhost -d bag -U postgres -W postgres -e 9999STA01052011.zip Importeer gemeente_woonplaats informatie van het kadaster http://www.kadaster.nl/bag/docs/BAG_Overzicht_aangesloten_gemeenten.zip python bagextract.py -H localhost -d bag -U postgres -W postgres -e BAG_Overzicht_aangesloten_gemeenten.zip Theoretisch is het mogelijk de hele bag in te lezen vanuit de "hoofd" zip, maar dit is nog niet getest op geheugen-problemen. """ parser = ArgParser(description='bag-extract, commandline tool voor het extraheren en inlezen van BAG bestanden', epilog="Configureer de database in extract.conf of geef eigen versie van extract.conf via -f of geef parameters via commando regel expliciet op") parser.add_argument('-c', '--dbinit', action='store_true', help='verwijdert (DROP TABLE) alle tabellen en maakt (CREATE TABLE) nieuwe tabellen aan') parser.add_argument('-d', '--database', metavar='<naam>', help='geef naam van de database') parser.add_argument('-s', '--schema', metavar='<naam>', help='geef naam van het database schema') parser.add_argument('-f', '--config', metavar='<bestand>', help='gebruik dit configuratiebestand i.p.v. extract.conf') parser.add_argument('-q', '--query', metavar='<bestand>', help='voer database bewerkingen uit met opgegeven SQL bestand') parser.add_argument('-e', '--extract', metavar='<naam>', help='importeert of muteert de database met gegeven BAG-bestand of -directory') parser.add_argument('-H', '--host', metavar='<hostnaam of -adres>', help='verbind met de database op deze host') parser.add_argument('-U', '--username', metavar='<naam>', help='verbind met database met deze gebruikersnaam') parser.add_argument('-p', '--port', metavar='<poort>', help='verbind met database naar deze poort') parser.add_argument('-W', '--password', metavar='<paswoord>', help='gebruikt dit wachtwoord voor database gebruiker') parser.add_argument('-w', '--no-password', action='store_true', help='gebruik geen wachtwoord voor de database verbinding') parser.add_argument('-v', '--verbose', action='store_true', help='toon uitgebreide informatie tijdens het verwerken') # Initialiseer args = parser.parse_args() # Init globale configuratie myconfig = BAGConfig(args) #create logger if args.verbose: myconfig.logger.setLevel(logging.DEBUG) else: myconfig.logger.setLevel(logging.INFO) if args.dbinit: #TODO geen args gebruiken maar BAGConfig. Op deze manier gaan beide configuraties uit de pas lopen met kans op fouten mydb = myconfig.get_database() mydb.maak_database() elif args.extract: # TODO geen args gebruiken maar BAGConfig. # Op deze manier gaan beide configuraties uit de pas lopen met kans op fouten # Extracts any data from any source files/dirs/zips/xml/csv etc from bagfilereader import BAGFileReader myreader = BAGFileReader(args.extract) myreader.process() elif args.query: #TODO geen args gebruiken maar BAGConfig. # Op deze manier gaan beide configuraties uit de pas lopen met kans op fouten # Voer willekeurig SQL script uit uit mydb = myconfig.get_database() mydb.file_uitvoeren(myconfig.query) else: myconfig.logger.critical("Kan de opdracht niet verwerken. Type -h of --help voor een overzicht van parameters") # Print end time myconfig.logger.info("Gereed") sys.exit()