Straatnaam inkorten
Eerst vraag ik de gebruiker om postcode, waarna ik een API request verstuur naar een postcode naar adres API.
Ik krijg dan o.a. een straatnaam terug.
Volgens de XSD mag het veld maar 24 tekens bevatten.
Echter zijn veel straatnamen in Nederland (verrassend genoeg) langer dan 24 tekens
Heeft iemand een idee hoe ik dat het beste kan aanpakken.
Of heeft iemand ergens een mooi functie in de koelkast staan.
Alvast dank!
Burgemeester Jonkheer Hesselt van Dinterstraat -> "BURG J H V DINTERSTR"
of iets in die richting
Zoals straat,str burgemeester,burg, van,v etc.
Ik zou anders niet weten hoe je een straatnaam op die manier zou kunnen inkorten.
Hanteer dan de officiële afkortingsregels uit de Nederlandse norm NEN 5825. In artikel 1 van het Besluit standaardschrijfwijze persoonsgegevens worden deze verplicht gesteld voor de Rijksoverheid.
deze die je kunt kopen voor E40,60?
Je bedoelt Inderdaad, ik zat al te googelen naar een gratis alternatief. Idioot dat je wel een Nederlandse norm moet aanhouden — die ook nog eens wettelijk verplicht is — maar die norm niet openbaar is.
Ik was ook al aan het kijken naar BAG/Kadaster. Lijkt me een handig XML bestandje waarin mogelijk ook de afkortingen staan zoals ik begrijp, maar om te kunnen bestellen moet je een abonnement hebben.
Toevoeging op 14/03/2014 14:17:48:
Volgens mij heb ik hier wat gevonden (vanaf pagina 69).
Met afkortings lijst, welke woorden je weg mag laten en andere regels.
Quote:
Inkortingsregels voor straatnamen
Als een officieel door de gemeente vastgestelde straatnaam langer is dan 24 posities,
moet de eerste inkortingsregel worden toegepast. Blijkt na toepassing daarvan de straatnaam
nog steeds de 24 posities te overschrijden, dan treedt de tweede inkortingsregel in
werking, en zo vervolgend, tot het aantal posities nog ten hoogste 24 bedraagt of alle
inkortingsregels zijn toegepast.
Tenzij anders vermeld worden de inkortingsregels van rechts beginnend toegepast en zijn
ze uitsluitend van toepassing op de in deze bijlage vermelde woorden.
Als een officieel door de gemeente vastgestelde straatnaam langer is dan 24 posities,
moet de eerste inkortingsregel worden toegepast. Blijkt na toepassing daarvan de straatnaam
nog steeds de 24 posities te overschrijden, dan treedt de tweede inkortingsregel in
werking, en zo vervolgend, tot het aantal posities nog ten hoogste 24 bedraagt of alle
inkortingsregels zijn toegepast.
Tenzij anders vermeld worden de inkortingsregels van rechts beginnend toegepast en zijn
ze uitsluitend van toepassing op de in deze bijlage vermelde woorden.
Gewijzigd op 14/03/2014 13:59:45 door Michael -
Michael +1
if(strlen() >= 24) {
Inkortingsregel 1
}
if(strlen() >= 24) {
Inkortingsregel 2
}
etc.
Heb de komende week in ieder geval wat te doen :D
Idee om jouw inkort methode te delen? En eventueel die van mij als ik 'm af ga maken.
Michael - op 14/03/2014 17:12:23:
Idee om jouw inkort methode te delen? En eventueel die van mij als ik 'm af ga maken.
Ja ga ik doen, is wel handig voor iedereen.
Hier alvast github repo voor iedereen die wilt bijdragen.
https://github.com/jargij/straatnaam-shortener
Uiteindelijke versie zal ik even hierop zetten
Maar zoals ik snel zie voert dit alle regels in één keer uit (Ook al ie op een gegeven al een lengte van 24 heeft)? En je zet geen romeinse cijfers om?
Ik krijg alleen wel een notice op regel 220 $split[$word] = substr($split[$word], 0, 2); met uiteindelijk execution time exceeded als gevolg.
while (strlen($subject) > 24 && $rule <= 6)
Ah oké :) Mooi opgelost op die manier. Alleen ik krijg hem nog niet helemaal werkend. Rond regel 219/220 krijg een execution time exceeded.
De 2e inkortingsregel is bijvoorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
array(
array("NOORD"=>"N"),
array("NOORDZIJDE"=> "NZ"),
array("OOST"=>"O"),
array("OOSTZIJDE" => "OZ"),
array("WEST" => "W"),
array("WESTZIJDE" => "WZ"),
array("ZUID" => "Z"),
array("ZUIDZIJDE" => "ZZ")
),
array("NOORD"=>"N"),
array("NOORDZIJDE"=> "NZ"),
array("OOST"=>"O"),
array("OOSTZIJDE" => "OZ"),
array("WEST" => "W"),
array("WESTZIJDE" => "WZ"),
array("ZUID" => "Z"),
array("ZUIDZIJDE" => "ZZ")
),
Dat kun je reduceren tot één array voor de gehele inkortingsregel:
Alleen hij gooit eerst alles in array's en loopt vervolgens overal doorheen.
Ik heb het echt in stappen gedaan. Alleen begrijp ik soms niet helemaal wat ze bedoelen.
Zo zeggen ze
Quote:
Tenzij anders vermeld worden de inkortingsregels van rechts beginnend toegepast en zijn
ze uitsluitend van toepassing op de in deze bijlage vermelde woorden.
ze uitsluitend van toepassing op de in deze bijlage vermelde woorden.
Dus rechts beginnen, > 24, 2e van rechts, > 24, 3e van rechts, toch?
Vervolgens staat er
Quote:
Inkortingsregel 8
Kort de navolgende beginwoorden op de aangegeven wijze in.
Kort de navolgende beginwoorden op de aangegeven wijze in.
Aangegeven zou dus zijn van rechts naar links.
Vervolgens
Quote:
Inkortingsregel 9
Pas inkortingsregel 8 opnieuw toe, maar nu op het tweede woord van links.
Pas inkortingsregel 8 opnieuw toe, maar nu op het tweede woord van links.
Betekent dit dat 'de aangegeven wijze' betekent dat je alleen het laatste woord moet vervangen?
Ja, zo lees ik die regel ook.
De "beginwoorden" van regel 8 staan aan het begin, dus dan wordt het bij uitzondering van links naar rechts. Regel 9 herhaalt dat patroon vervolgens voor het tweede woord van links.
Dat haal ik er niet uit. Er staat 'op de aangegeven wijze in' en dat is niet van links naar rechts.
Een beetje vreemd dus. Geen idee wat hier nou het juiste is.
Kort de navolgende beginwoorden op de aangegeven wijze in.
+
INKORTINGSREGEL 9
Pas inkortingsregel 8 opnieuw toe, maar nu op het tweede woord van links.
Uit die twee samen leid ik af dat met “beginwoorden” in regel 8 wordt bedoeld: het eerste woord van links.