Her kommer det er oversikt over absolutt alle postnummer i Norge med tilhørende fylke, kommune og poststed. Hvert postnummer har også en lengde- og breddegrad tilknyttet seg. På denne måten kan du koble opp postnummeret til f.eks Google Maps.
Det er i alt fire tabeller i databasesettet:
- Comments
- County
- Municipal
- Zip
- _codes
- _places
Første tabell inneholder bare seks rader, som forklarer om postnummeret er av typene:
- Firma med eige postnummer
- Fleire bruksområde
- Gateadresser
- Gateadresser og postboksar
- Postboksar
- Serviceboksar
Databasesettet er generert med hjelp av Postnummer-dugnaden Yr.no arrangerte sommeren 2009.
Ved hjelp av lengde- og breddegradene kan du jo også regne deg frem til avstanden mellom to steder, eller finne nærmeste postkontor til en bruker.
For å få lett oversikt over alle postkoder, kjører du følgende spørring:
SELECT z.zip, c.name as fylke, m.name as kommune, p.name as poststed, cc.comment, z.lat, z.lon FROM `zip_codes` z INNER JOIN zip_places p ON p.place_id = z.place_id INNER JOIN municipal m ON m.id = p.municipal_id INNER JOIN county c ON c.county_id = m.county_id INNER JOIN comments cc ON cc.comment_id = z.comment_id ORDER BY z.zip ASC, fylke ASC, kommune ASC, poststed ASC
Med enhver sak kan det forekomme feil, så om dere kommer over noe som skulle vise seg til å være en bug: si i fra.
Liste over alle postnummer:
http://trunk.davidsteinsland.net/zip_codes.htm
Oppdateringer
- Ser ut til at Jan Mayen og Svalbard har klart å falle ut. Dette er pga. øyene ikke tilhører noe fylke. Skal ordnes.
- Fikset nå. Poststeder på øyene er plassert i et eget dummy-fylke kalt “Svalbard og Jan Mayen”
- Fylkene har nå fått korrekt fylkesnummer basert på ISO 3166-2:NO. Fikset opp i kommuner på Jan Mayen og Svalbard
Laste ned
Norske postnummer.zip, lisensiert under Creative Commons.
Tips & triks
Hvordan finne et originalpunkt basert på gitt bredde- og lengdegrad?
Basert på sfærisk trigonometri kan vi “enkelt” regne oss frem til dette. Først av alt må vi gjøre punktene våres om til radianer (fra grader) for at funksjonen skal gjelde. Vi benytter oss også av jordradien i meter.
Distansen mellom punktene er gitt ved s:
Breddegradene () og lengdegradene (
) må først gjøres om til radianer. Dette gjør du med følgende formel:
Dette er igrunn irrelevant, for dette har jeg allerede tatt høyde for i kodene.
For å løse det i MySQL, kan man gjøre det slik:
SET @MY_LAT = 59.7022480, @MY_LON = 5.3764340; SELECT z.zip, p.name, z.lat, z.lon, acos(SIN( RADIANS(@MY_LAT)) * SIN( RADIANS(z.lat)) +(cos(RADIANS(@MY_LAT)) * COS( RADIANS(z.lat)) * COS(RADIANS(z.lon) - RADIANS(@MY_LON)) )) * 6378137 AS distance FROM zip_codes z INNER JOIN zip_places p ON z.place_id = p.place_id HAVING distance <= 2000 ORDER BY distance ASC
Her har jeg satt variablene utenfor selve spørringen slik at det blir litt lettere å få det med seg.
I PHP kan man gjøre det slik:
$lat_1 = deg2rad (59.7022480); $lat_2 = deg2rad (59.7022480); $lon_1 = deg2rad (5.3764340); $lon_2 = deg2rad (5.3764340); $R = 6378137; // meters $distance = acos ( sin($lat_1) * sin($lat_2) + cos ($lat_1) * cos($lat_2) * cos ($lon_2 - $lon_1)) * $R; echo 'Distance: ' . (int)$distance/1000 . ' km';
Hva betyr dette? Hva kan man nytte det til?
Dersom du bruker en pakkeløsning hvor du kan dra frem koordinatene til en bruker basert på hans IP, kan du finne ut en circa-plassering på hvor han er i Norge. Formelen har en feilkilde på rundt 1 meter.
Bruke jQuerys Ajax-funksjonalitet til å hente ut data om postnummer
1. Opprett en fil kalt “get_postal.php” med følgende kode:
http://norskwebforum.no/pastebin/11243
2. Opprett så index.html med følgende kode:
http://norskwebforum.no/pastebin/11244
3. Opprett en mappen “cache”
Test ved å skrive inn et postnummer (fire siffer langt) eller et poststed. Informasjon om postnummeret/-stedet vil etterhvert poppe opp i avsnittet under skjemaet.




Ble det bedre, eller hva synes du? Skjekk selv på: