Antud teek võimaldab node.js abil leida Eesti postiindekseid. Teek on vabavara (GPLv2) ning ei ole Eesti Post AS'iga seotud mitte mingil viisil. Samuti ei ole kaasas lähteandmeid - tegu on vaid teegiga, mis lähteandmete olemasolu korral suudab nendest aadressi alusel õige indeksi välja otsida.
Vaja on
- node.js, vähemalt versioon 0.3
- MongoDB andmebaasi
- MongoDB draiverit node.js jaoks
- CSV teeki importimise jaoks
Lähteandmed ei ole avalikud ja seega ei saa neid siia välja panna. Kuid need andmed saab alla laadida Eesti Posti kodulehelt. Tutvu kindlasti ka andmete kasutamise tingimustega.
Algset CSV faili siiski kohe kasutada ei saa, see tuleb kõigepealt ümber vormistada.
- Ava fail OpenOffice'iga
- Veendu, et kõik tundub korras olevat
- Salvesta "Save as" ja vali formaadiks CSV ja nimeks "base.csv"
- Avanenud valikutes määra märgistikus UTF-8, väljade eraldajaks koma ning teksti eraldajaks jutumärgid
- Kopeeri salvestatud CSV fail samasse skriptifailide kausta, kus asub import.js
Lähteandmete importimiseks CSV failist tuleb käivitada impordikäsk
node import.js
Kui see lõpeb teatega "All ready" ning ühtegi viga ei esinenud, ongi asi töövalmis.
Juhul kui andmed on imporditud, võib soovi korral ära kustutada kõik failid peale config.js, db.js, tools.js ja zip.js.
Kopeeri endale Postiindeksi lähtekood (võid ka käsitsi siitsamast alla laadida ja ise lahti pakkida)
git clone https://github.com/andris9/postiindeks.git
Kopeeri eelmises punktis kirjeldatud lähtefail Postiindeksi kausta
cp base.csv postiindeks/base.csv
cd postiindeks
Impordi lähteandmed baasi
node import.js
Käivita näidisprogramm
node example.js
Kui andmed on imporditud, saab kasutada zip teeki indeksite leidmiseks. Näiteskripti alusel saab täpsemalt näha kuidas see käib.
Näiteskripti käivitamiseks
node example.js
Juhul kui tuli ette info tulemusega, on kõik OK
Postiindeksite leidmiseks tuleb laadida teek "zip"
var ziplib = require("./zip"); // mitte kataloog, vaid failinimi, ilma .js laiendita!
Teegi abil indeksite leidmine käib meetoditega getZip
ning findZipByAddressStr
- esimene võtab sisendiks struktureeritud aadressiobjekti ning teine aadressi vabatekstina.
var aadress = "Lossi plats 1, Tallinn";
ziplib.findZipByAddressStr(aadress, function(error, data){
// error sisaldab veaobjekti, kui ilmnes viga
// data sisaldab vastusobjekti, data.zip on indeks
// kui data.status == "FOUND" siis on OK, vastasel korral mitte
});
Aadressiobjekti korral aga
var aadress = {
street: "Lossi plats",
building: "1",
room: "",
city: "Tallinn",
commune: "",
state:""
}
ziplib.getZip(aadress, function(error, zip, aadress){
// error - sisaldab veaobjekti
// zip - on postiindeks
// aadress - on töödeldud aadressiobjekt (lisatud maakond kui pole jne)
});
GNU General Public License (GPL) Version 2 http://www.gnu.org/licenses/gpl-2.0.html