Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jun 14 07:25
    DFN-Marcel-Wolf commented #323
  • Jun 11 13:51
    reinvantveer commented #24
  • Jun 11 13:44
    justb4 labeled #323
  • Jun 11 13:44
    justb4 labeled #323
  • Jun 11 13:44
    justb4 labeled #323
  • Jun 11 13:44
    justb4 opened #323
  • Jun 02 03:17
    dependabot[bot] labeled #322
  • Jun 02 03:17
    dependabot[bot] opened #322
  • Jun 02 03:17

    dependabot[bot] on pip

    Bump urllib3 from 1.26.4 to 1.2… (compare)

  • May 03 08:32
    justb4 closed #321
  • May 03 08:32
    justb4 commented #321
  • Apr 30 16:30

    justb4 on master

    #321 passende afronding en nume… (compare)

  • Apr 30 10:47

    justb4 on master

    #321 passende afronding en nume… (compare)

  • Apr 29 13:46
    justb4 edited #321
  • Apr 29 12:07
    justb4 demilestoned #320
  • Apr 29 12:07
    justb4 closed #320
  • Apr 29 12:07
    justb4 commented #320
  • Apr 29 12:06
    justb4 milestoned #321
  • Apr 29 12:06
    justb4 labeled #321
  • Apr 29 12:06
    justb4 assigned #321
Coen Nengerman
@CoenNengerman
ogr2ogr -oo LEGACY_ID=YES -t_srs EPSG:4326 -f PostgreSQL PG:"dbname=lvbag user= host= port=5432 password=**" /vsizip/9999PND08032021.zip
Warning 6: driver LVBAG does not support open option LEGACY_ID
Just van den Broecke
@justb4
OSGeo/gdal#3217 is opgelost, maar zit nog niet in versie.
Jelmer Oosthoek
@jhpoosthoek

Hoi iedereen,

Kan iemand mij misschien op weg helpen om NLExtract met BAG2.0 data te kunnen gebruiken? Ik heb Docker geinstalleerd op een VPS. Vervolgens heb ik de nlextract-1.5.2.zip via https://github.com/nlextract/NLExtract/releases/tag/1.5.2 gedownload en uitgepakt. Daarna heb ik gedaan:

docker build -t nlextract .
docker run -d nlextract

Hoe kan ik vervolgens de BAG 2.0 van een gemeente, gedownload via https://extracten.bag.kadaster.nl/lvbag/extracten/Gemeente%20LVC/1, verder verwerken?

Alvast bedankt,

Jelmer Oosthoek

Just van den Broecke
@justb4
Zie de README op: https://github.com/nlextract/NLExtract/blob/master/bagv2/etl/README.md . Je hoeft in principe niet de Dockerfile zelf te bouwen. NLExtract Docker Images staan op DockerHub. Verder van belang de Docker Volume mapping te doen.
Jelmer Oosthoek
@jhpoosthoek
Dank!
Jelmer Oosthoek
@jhpoosthoek
Top, ik heb NLExtract 1.5.2. aan de praat gekregen. Ik zie dat de IDs nog niet in de pand en verblijfsobject tabellen zitten. Komt dit in een update van GDAL beschikbaar? Ook is voor de gemeente Utrecht die ik als test runde de tabel adresseerbaarobjectnevenadres leeg. Weet iemand hoe ik deze kan vullen? Is dit een vervanging van de adres_full tabel?
Just van den Broecke
@justb4
Darvoor is -oo LEGACY_ID=YES dat zou moeten werken en adresseerbaarobjectnevenadres moet gevuld zijn. Is voor compat met BAG v1. Adressen is geheel aprt verhaal/SQL. Je kunt beste NLExtract Images van DockerHub nemen.
Jelmer Oosthoek
@jhpoosthoek
Ah ok, ja ik gebruikte vooralsnog miniconda en ik zie bij de etl run dat bij ogr2ogr staat: Warning 6: driver LVBAG does not support open option LEGACY_ID. Ik zie hierboven dat dit probleem bekend is en opgelost is. Ik wacht wel even op de nieuwe versie.
koenpeeperkorn
@koenpeeperkorn

Hi Just,

Je hebt het over een performance van heel nederland in 10m (bagv2) op een goede server.
Kan je delen wat de specs zijn van een "goed server" en heb je de postgresql.conf nog op een bepaalde manier geconfigureerd?

Koen

RensNaeff
@RensNaeff

Hi allemaal,

Ik probeer de ETL aan de praat te krijgen. Ik heb deze stappen gevolgd: https://github.com/nlextract/NLExtract/blob/master/bagv2/etl/README.md Bij de laatste stap krijg ik een Exception: File list is empty!!. De directory external/stetl is leeg. Deze error treed op in regel 49 van het stetl.sh script. Heeft iemand hier de oplossing voor?

Groet Rens

Just van den Broecke
@justb4

Hoi @RensNaeff en allen: als je een probleem meldt, zeg precies welke component-versies/OS, methode (Met Docker, Geen Docker) stappen je deed en bij welke stap het stokte met foutmelding. In de README staan 2 methodes. Anders moeten de helpers steeds 'wedervragen' stellen. Dank.

Goed, hier kan ik met een beetje deduceren afleiden dat het hoogstwaarschijnlijk om een git clone gaat die niet de Stetl submodule (externals/stetl) meeneemt. Juiste commando:
git clone --recursive https://github.com/nlextract/NLExtract.git .

RensNaeff
@RensNaeff

Hi Just,
Dank je voor je antwoord. Om dan alsnog de volledige info te geven: Ik heb de Docker route bewandeld en werk met IOS 11.12.3. Ik heb de volgende stappen uitgevoerd:

  1. postgis db aangemaakt op server localhost met credentials postgres postgres.
  2. docker pull nlextract/nlextract:latest
  3. directory aangemaakt <localpath>/work
  4. curl -o <localpath>/work/bag.zip https://extracten.bag.kadaster.nl/lvbag/extracten/Nederland%20LVC/BAGNLDL-08032021.zip
  5. docker run --name nlextract --rm -v $(pwd)/work:/work nlextract/nlextract:latest bagv2/etl/etl.sh -a bag_input_file=<localpath>/work/bag.zip

Bij het uitvoeren van stap 5 krijg ik de volgende error:
factory ERROR cannot create object instance from class 'stetl.inputs.fileinput.VsiZipFileInput' e=File list is empty!! Traceback (most recent call last): File "/nlx/externals/stetl/bin/stetl", line 43, in <module> main() File "/nlx/externals/stetl/bin/stetl", line 36, in main etl.run() File "/nlx/externals/stetl/stetl/etl.py", line 154, in run chain.assemble() File "/nlx/externals/stetl/stetl/chain.py", line 87, in assemble etl_comp = factory.create_obj(self.config_dict, etl_section_name.strip()) File "/nlx/externals/stetl/stetl/factory.py", line 28, in create_obj raise e File "/nlx/externals/stetl/stetl/factory.py", line 25, in create_obj class_obj_inst = self.new_instance(class_obj, configdict, section) File "/nlx/externals/stetl/stetl/factory.py", line 62, in new_instance return class_obj(configdict, section) File "/nlx/externals/stetl/stetl/inputs/fileinput.py", line 587, in __init__ ZipFileInput.__init__(self, configdict, section, produces=FORMAT.gdal_vsi_path) File "/nlx/externals/stetl/stetl/inputs/fileinput.py", line 534, in __init__ FileInput.__init__(self, configdict, section, produces) File "/nlx/externals/stetl/stetl/inputs/fileinput.py", line 62, in __init__ raise Exception('File list is empty!!') Exception: File list is empty!!

Just van den Broecke
@justb4
@RensNaeff duidelijk: bijna goed. Probeer even te visualiseren hoe Docker Volume mount in combinatie met -a bag_input_file werkt. Vanuit Docker container gezien bestaat <localpath> niet. Container kijkt naar /work en NLExtract/Stetl dus naar /work/bag.zip (via -a) .
$(pwd) is een Bash-shortcut voor huidige dir bedoeld als voorbeeld. Gaat om absolute dir die je naar /work in Docker Container mount, dus voor jou: <localpath>/work.
Dus je commando is dan:
docker run --name nlextract --rm -v <localpath>/work:/work nlextract/nlextract:latest bagv2/etl/etl.sh -a bag_input_file=/work/bag.zip.
RensNaeff
@RensNaeff

@justb4 Dank je wel voor je antwoord. Ik heb weer wat bijgeleerd, en de error die ik had is hier inderdaad mee opgelost.
Echter, ik loop tegen een volgende error aan. Uitgevoerde stappen:
docker pull nlextract/nlextract:latest
curl -o <localpath>/work/bag.zip https://extracten.bag.kadaster.nl/lvbag/extracten/Nederland%20LVC/BAGNLDL-08032021.zip
docker run --name nlextract --rm -v <localpath>/work:/work nlextract/nlextract:latest bagv2/etl/etl.sh -a bag_input_file=/work/bag.zip

De tabbellen zijn aangemaakt in de Postgis db, maar nog zonder data. De laatste log regels die ik krijg zijn:
2021-04-22 11:17:37,327 fileinput DEBUG MATCH: ['/vsizip/{/work/bag.zip}', 'Leveringsdocument-BAG-Extract.xml'] 2021-04-22 11:17:37,327 fileinput DEBUG ADD ENTRY: /vsizip/{/work/bag.zip}/Leveringsdocument-BAG-Extract.xml /nlx/bagv2/etl/stetl.sh: line 49: 16 Killed ${STETL_HOME}/bin/stetl -a ${common_options_file} -a ${options_file} ${user_args} /nlx

Ik heb ook de nlextract/nlextract:1.5.2 versie geprobeerd. Dat geeft dezelfde output. Heb je een idee waarom het process wordt gekilled?

Just van den Broecke
@justb4
@RensNaeff volgens mij heb ik die vraag pas beantwoord voor iemand anders op Mac OSX, denk ander kanaal. Denk namelijk geheugenprobleem. Daarom raadt ik aan eerst een kleiner bestand bijv een Gemeente te nemen.
Maar goed: als je Docker for Mac/Desktop gebruikt moet je deze meer geheugen (RAM) geven in Preferences/Resources, bijv 8GB. Kan ook nog zijn dat je lokale map niet zichtbaar is in Docker, kun je ook in Preferences toewijzen.
RensNaeff
@RensNaeff
@justb4 Super! Je suggestie om meer RAM aan Docker toe te kennen was de sleutel. Bedankt.
Just van den Broecke
@justb4
Dat is mooi! Gratis software en gratis ondersteuning!
Mensen: overweeg eens een tegenprestatie: het liefst als bijdrage aan het NLExtract project: code, documentatie... of als je alleen afnemer bent via een donatie, dat kan al tijden met paar klikken: https://github.com/nlextract/NLExtract de "Sponsor" button rechtsboven.
ynte
@ynte
Ik ben aan het spelen met Multithreading voor de bgt
Op mijn totaal ongeschikte laptopprocessor levert dat met een extract van 70mb tot nu toe de volgende resultaten
Aantal processen: tijd
1: 78sec
2: 72 sec
3: 68 sec
Gaat alleen om de chain input_zip_file|extract_zip_file|handle_orl|handle_pand|prepare_gfs|output_ogr2ogr,
Met een extract van deze omvang zijn de andere chains misschien wel meer de bottleneck 🤷
ynte
@ynte
Dump van ~500mb levert een verbetering op van 402 naar 305 seconden op
Just van den Broecke
@justb4
@ynte in welke zin/waar/hoe doe je Multithreading? In Stetl?
ynte
@ynte
in stetl
mijn "hack" is dat ik de input los heb getrokken van de chain
dan maak ik (start)packets aan tot is_end_of_stream()
en daarmee voed ik een multiprocessing pool
        while True:
            packet = Packet()
            packet = self.input_comp.process(packet)

            start_packets.append(packet)

            if packet.is_end_of_stream():
                break
        with multiprocessing.Pool(processes) as pool:
            pool.map(self.first_comp.process, start_packets)
ynte
@ynte
heel simpel
Just van den Broecke
@justb4

Goed bezig! Dat is inderdaad het level waar we al eerder dachten over multithreading/processing. Zie ook deze langlopende issue:
geopython/stetl#41 . De architectuur op basis van Components die Packets doorgeven is geschikt daarvoor. Nu staat maar 1 processor/CPU wat te doen...

Het andere is dat veel basisregistraties grote file-verzamelingen hebben die vaak parallel verwerkt kunnen worden. Stetl Splitter/Combiner Filters zouden daarbij kunnen helpen.

ynte
@ynte
Het lijkt mij wel leuk deze hack om te zetten in bruikbare verbeteringenin stetl/nlextract
Het heeft binnen stetl wel aardig wat consequenties verwacht ik
ik kan dat nog niet helemaal overzien
ik moest bv FileExtractor aanpassen
Just van den Broecke
@justb4
ja is groter project om echt te doen. vooral "shared of global data/state" geeft vaak lastig te debuggen problemen.
dacht wel om in de Stetl config syntax te kunnen aangeven of (onderdelen) MT moeten zijn. zodat ook forward compatibel bestaande configs.
ynte
@ynte
Die syntax is een mooi voorbeeld van zaken die dan voorbij komen
Dat lijkt mij een logische eerste stap, dat je de wens van MT aan kan geven
Aan de components zou je een property kunnen toevoegen die aangeeft of ze MT-compatible zijn
Dan hoef je niet in één keer alle componenten te doen
Je hebt altijd fallback op non-mt
ynte
@ynte
Het simpelste lijkt mij ook dat je alleen vanuit een input kan "forken"
Dat sluit aan op de basisregistraties, die uit meerdere files bestaan
Een databaseinput zou steeds 1000 rijden terug kunnen geven
Als je inputs in een iterator worden gegoten kan dat zelfs lazy