Join Now

Postnummer til Geokode

by Contributor bergsorensen on ‎03-25-2015 06:15 AM (1,155 Views)

Jeg har en liste af byer og tilhørende zip/postnr - Danske.

Jeg ønsker for hvert postnummer at finde tilhørende længde og bredde.

SAS indeholder som standard kun zipcode (sashelp) for US.

Nogen der har et eksempel på ovenstående, web API (ex. http://api.geonames.org/postalCodeSearch?postalcode=8000&country=dk&username=demo) eller fif til selve SAS?

TAK

Kasper

Comments
by Occasional Contributor MACH
on ‎03-26-2015 04:30 AM

Hej Kasper!

Der er flere muligheder. Hvis du bare vil have et punkt (X,Y) pr. postnummer er det en løsning, men hvis du vil tegne hvert enkelt postnummer på f.eks. et danmarkskort, så har du behov for polygoner.

Begge dele er offentligt tilgængeligt, bl.a. har Geodatastyrelsen en masse frie data (Kommuner, regioner, sogn og alt muligt andet) - du finder det her (søg efter DAGI): http://gst.dk/

Vi har så pakket det pænt ind i en macro der danner et map-datasæt som så kan kaldes med PROC GMAP:

%dkpost; /* (<-- Indlæser shapefile og danner et sas datasæt - brug PROC MAPIMPORT) */

title 'Proc Gmap med danske postnr';

proc gmap map=work.dkpost data=work.dkpost;

id postbynavn;

choro postbynavn;

run;

DKPost.PNG

by Contributor bergsorensen
on ‎03-26-2015 08:50 AM

Hej Mads

Tak for svar - jeg kigger på gst.

Har du mulighed for at dele hele dit program?

Tak.

Vh

Kasper

by Occasional Contributor MACH
on ‎03-26-2015 10:05 AM

Her er en light udgave af macro:

%macro dkpost;

option nonotes nosource;

%put Henter DK kortdata...;

** Virker kun med ver 9.3+ **;

** reference til SHP file med postnr-shapes **;

proc mapimport datafile="c:\MAPS\DAGI500\POSTNUMMER.shp" out=dkpost;

  id postnr_txt;

  select gyldig_fra gyldig_til postnr_fra postnr_til postnr_txt postbynavn;

run;

** Pæne navne **;

data dkpost;

set dkpost;

*where not missing(y);

postbynavn=TRANWRD(postbynavn,'ø','ø');

postbynavn=tranwrd(postbynavn,'æ','æ');

postbynavn=tranwrd(postbynavn,'Æ','Æ');

postbynavn=tranwrd(postbynavn,'Ã¥','å');

postbynavn=tranwrd(postbynavn,'Ø ','Ø');

postnummer=input(substr(postnr_txt,1,4),4.);

run;

%put **********************************************************************;

%put Datasæt DKPOST er dannet - alm. dk kort med Postnumre      *;

%put **********************************************************************;

option notes source;

%MEND;

by Regular Learner Tinoks
on ‎11-02-2015 04:37 AM

dbf filen som hører til shapefilen er i ISO-8859-1 encoding. Er der en måde at droppe "tranwrd" med den viden?