Created
July 16, 2017 10:22
-
-
Save botic/3032439db0bffc5d0fc0be5d2dfb300f to your computer and use it in GitHub Desktop.
Geocoder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const addresses = require("./wien22.json"); | |
| const lookup = function(name, number) { | |
| return addresses.features.find(function(feature) { | |
| return feature.properties["NAME_STR"].indexOf(name) === 0 && feature.properties["NAME_ONR"].indexOf(number) === 0; | |
| }); | |
| }; | |
| const splitAddress = function(fullName) { | |
| const numberReg = /\ [1-9][0-9]?([-–][1-9][0-9]?)?/g; | |
| const doorsReg = /\ [1-9][0-9]?(\/\w{1,3})?(\/\w{1,3})/; | |
| const streetReg = /([\w\-\ßäöüÄÖÜ]+)(\ [1-9])?/; | |
| let streetMatch = fullName.match(streetReg); | |
| let streetName = (streetMatch && streetMatch.length >= 2 ? streetMatch[1] : "").trim(); | |
| let numberMatch = fullName.match(numberReg); | |
| let number = numberMatch && numberMatch.length === 1 ? numberMatch[0].trim() : ""; | |
| let doorsMatch = fullName.match(doorsReg); | |
| let stairCase = ""; | |
| let door = ""; | |
| if (doorsMatch && doorsMatch.length === 3) { | |
| stairCase = (doorsMatch[1] || "").replace("/", ""); | |
| door = doorsMatch[2].replace("/", ""); | |
| } else if (doorsMatch && doorsMatch.length === 2) { | |
| door = doorsMatch[1].replace("/", ""); | |
| } | |
| return { | |
| streetName: streetName, | |
| houseNumber: number, | |
| stairCase: stairCase, | |
| doorNumber: door | |
| }; | |
| }; | |
| const testData = require("vereine.json"); | |
| for (let key in testData) { | |
| let entry = testData[key]; | |
| if (entry.adresse == null) { | |
| continue; | |
| } | |
| let ogdAddress = splitAddress(entry.adresse); | |
| let ogdDataset = lookup(ogdAddress.streetName, ogdAddress.houseNumber); | |
| if (ogdDataset == null) { | |
| console.log(entry.adresse, ogdAddress.streetName, ogdAddress.houseNumber); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment