onroerenderfgoed / housenum-be-r-parser Goto Github PK
View Code? Open in Web Editor NEWSplits ranges of Belgian house numbers into individual ones and vice versa
License: MIT License
Splits ranges of Belgian house numbers into individual ones and vice versa
License: MIT License
Add sphinx docs.
Use autodoc to generate api docs and check the syntax of the current documentation.
Add business rules (explanation about what gets split into what), needs to be translated from dutch:
Welk formaat kan ik gebruiken om een bereik van huisnummers in te voeren?
Bij het invoeren van adressen van een dibe_relict zijn er verschillende formaten mogelijk.
25
een numeriek huisnummer
25A
een huisnummer met letter als bisnummer
25/1
een huisnummer met een cijfer als bisnummer
25 bus 3
een huisnummer met busnummer
25,27,29,31
huisnummerreeks: opsomming van de verschillende huisnummers gescheiden door een komma en zonder blanco’s
25-31
huisnummerbereik met even verschil: de tussenliggende huisnummers worden bekomen door telkens 2 bij te tellen.
Dus: 25,27,29,31
25-32
huisnummerbereik met een oneven verschil: de tussenliggende huisnummers worden bekomen door telkens 1 bij te tellen.
Dus: 25,26,27,28,29,30,31,32
25,26-31
huisnummerbereik met een even verschil maar waarbij de tussenliggende nummers toch bekomen worden door er telkens 1 bij te tellen: noteer het eerste huisnummer, een komma, het tweede huisnummer, het koppelteken en het laatste huisnummer.
Dus: 25,26,27,28,29,30,31
25-31,18-26
combinatie van huisnummerbereiken gescheiden door een komma. Voor elk bereik afzonderlijk gelden de voorafgaande regels.
Dus: 25,27,29,31,18,20,22,24,26
25 bus 3-7
Busnummerbereik: een koppelteken na het woord bus duidt op een busnummerbereik. Tussenliggende busnummers worden bekomen door telkens met 1 te verhogen.
Dus: 25 bus 3,25 bus 4,25 bus 5,25 bus 6,25 bus 7
25 bus C-F
Busnummerbereik: een koppelteken na het woord bus duidt op een busnummerbereik. Tussenliggende busnummers worden bekomen door telkens de volgende letter uit het alfabet te nemen.
Dus: 25 bus C,25 bus D,25 bus E,25 bus F
25C-F
Huisnummerbereik op basis van letter als bisnummer. Tussenliggende huisnummers worden bekomen door telkens de volgende letter uit het alfabet te nemen.
Dus: 25C,25D,25E,25F
25/3-7
Huisnummerbereik op basis van cijfer als bisnummer. Tussenliggende huisnummers worden bekomen door telkens 1 bij te tellen.
Dus 25/3,25/4,25/5,25/6,25/7
25C-F,28-32,29 bus 2-5
Combinatie van bisnummerbereik, huisnummerbereik en busnummerbeik.
Dus: 25C,25D,25E,25F,28,30,32,29 bus 2,29 bus 3,29 bus 4, 29 bus 5.
on_exc=ReadException.Action.KEEP_ORIGINAL
werkt niet altijd mooi omdat de group
functie deze niet zal bijhouden. Na de group is de data dus weg.
Aanvulling op https://github.com/OnroerendErfgoed/inventaris/issues/2430
Bij overlappende ranges van meerdere locatie-elementen wordt adressamenvatting nog niet correct gemaakt.
VB:
lijn 1: range 1-11, lijn2: range 5-9 resulteert in 1-5, 5-7, 7-9, 9-11 omdat de dubbels daar niet uit worden gehaald. Dat is iets binnen https://github.com/OnroerendErfgoed/housenum-be-r-parser/issues/ dat moet gefixt worden.
Originally posted by @Wim-De-Clercq in https://github.com/OnroerendErfgoed/inventaris/issues/2430#issuecomment-522915844
De merge feature zet een lijst van nummers om in reeksen.
bvb:
from housenumparser import HuisnummerFacade
result = HuisnummerFacade().merge(
"557, 559, 561, 563, 565, 567, 569, 571, 573, 575, 577, 579, 581, 583, "
"585, 587, 589, 591, 593, 595, 597, 607, 609, 611, 613, 615, 617, 619, "
"621, 623, 625, 627, 629, 631, 633, 635, 637, 639, 641, 643, 645, 647, "
"649, 651, 653, 655, 657, 659, 661, 663, 665, 667, 669, 671, 673, 675, "
"677, 679, 681, 683, 685, 687, 689")
for res in result:
print(res)
OUTPUT:
557-597
607-689
Er zit iets fout want als je in bovenstaande string met cijfers 1 van de cijfers vervangt door een even getal kom je in een recursive loop.
Create a folder housenum-be-r-parser with the following files:
An end user should be able to do:
from huisnum-be-r-parser import KVDutil_HuisnummerFacade
facade = new KVDutil_HuisnummerFacade()
numbers = facade.split('15-21')
Also move the tests to a test folder an organise in a similar way.
Zie https://github.com/OnroerendErfgoed/dossierdata/issues/300 voor de volledige discussie.
Volgende foutmelding kreeg ik bij het uitvoeren van het script update_locatie_samenvattingen op test.
ERROR:update_locatie_samenvattingen:Fout bij het verwerken van IDs 1000 - 2000
ERROR:update_locatie_samenvattingen:Script wordt gestopt. Al de vorige updates werden opgeslagen.
Herstart met '--continue-from 1000' om verder te gaan vanaf dit punt
Traceback (most recent call last):
File "/var/projects/inventaris/venv/bin/update_locatie_samenvattingen", line 10, in <module>
sys.exit(main())
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/scripts/update_locatie_samenvattingen.py", line 137, in main
start=args.continue_from
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/scripts/update_locatie_samenvattingen.py", line 76, in update_locatie_samenvattingen
verwerk_locatie_samenvattingen(db_object)
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 460, in verwerk_locatie_samenvattingen
elementen)
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 539, in get_straat_summary
sorted(set(format_element(element) for element in elementen))
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 539, in <genexpr>
sorted(set(format_element(element) for element in elementen))
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 534, in format_element
nr = merge_numbers(element.huisnummer)
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 475, in merge_numbers
number_string, on_exc=ReadException.Action.KEEP_ORIGINAL
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/__init__.py", line 46, in merge
return merger.merge_data(merger.group(numbers))
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/merger.py", line 95, in merge_data
letters_per_house[element.house_number].append(ord(element.bis_letter))
TypeError: ord() expected a character, but string of length 3 found
Volgende foutmelding kreeg ik bij het uitvoeren van het script update_locatie_samenvattingen op test.
ERROR:update_locatie_samenvattingen:Script wordt gestopt. Al de vorige updates werden opgeslagen.
Herstart met '--continue-from 0' om verder te gaan vanaf dit punt
Traceback (most recent call last):
File "/var/projects/inventaris/venv/bin/update_locatie_samenvattingen", line 10, in <module>
sys.exit(main())
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/scripts/update_locatie_samenvattingen.py", line 137, in main
start=args.continue_from
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/scripts/update_locatie_samenvattingen.py", line 76, in update_locatie_samenvattingen
verwerk_locatie_samenvattingen(db_object)
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 460, in verwerk_locatie_samenvattingen
elementen)
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 516, in get_straat_summary
result = create_straat_key(elementen)
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 511, in create_straat_key
housenum_string = merge_numbers(housenum_string)
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 475, in merge_numbers
number_string, on_exc=ReadException.Action.KEEP_ORIGINAL
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/__init__.py", line 45, in merge
numbers = split(data, on_exc=on_exc)
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/__init__.py", line 28, in split
numbers = reader.read_data(data, step=step, on_exc=on_exc)
File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/reader.py", line 44, in read_data
return read_iterable(str(data).split(","), step=step, on_exc=on_exc)
UnicodeEncodeError: 'ascii' codec can't encode character u'\x85' in position 6: ordinal not in range(128)
documentatiefolder van het project ontbreekt en moet worden aangevuld
Switch unit test runner from nose to py.test. Makes it easier to deal with coveralls.
test_split.py
, test_merge.py
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.