Maciej B.

Maciej B. Doktorant

Temat: SAS GIS - liczenie punktów

Witam,

mam następujący problem:

posiadam dane punktowe dla poszczególnych miast (ponad 11 tysięcy rekordów dotyczących miejscowości z której pochodzą studenci), chcę przedstawić te dane w podziale na gminy/powiaty względnie województwa (nie mam informacji z jakiej gminy czy powiatu pochodzą). Miejscowości zamieniłem na współrzędne geograficzne (wykorzystałem stronkę: http://www.gpsvisualizer.com/geocoder/). Zastanawiam się czy w SAS jest możliwość zliczania punktów, które wpadną do poszczególnych gmin czy powiatów.

Problem rozwiązałem w R pisząc pętlę po gminach i powiatach (wykorzystując polygony mapy gmin/powiatów w .shp), chciałbym zrobić to teraz w programie SAS.

Interesuje mnie przedstawienie procentowego udziału poszczególnych gmin i powiatów w pochodzeniu studentów.

Z góry dziękuję za pomoc i wszelkie pomysły:)

konto usunięte

Temat: SAS GIS - liczenie punktów

Tak na szybko to nie pomogę ale jest funkcja geodist która podaje odległość dwóch punktów. Jeśli za jeden punk podasz dasz centroid a za drugi daną miejscowość to masz odległość. Nie zawsze minimum w takim przypadku oznacza że dane miasto jest w danej gminie ale można takie założenie zrobić.
Ty wiesz ja to zrobić poprawnie w R, ja z kolei wiem jak to zrobić w MapInfo :)
Ale w samym SAS funkcjami 4GL to nie próbowałem. Jest moduł SAS GIS, on może ma więcej funkcji, ale do niego nie mam dostępu.
Jakub J.

Jakub J. Specjalista ds.
aktuarialnych,
Generali TU S.A.

Temat: SAS GIS - liczenie punktów

Cześć,

SAS ma wbudowaną tabelę ze współrzędnymi dla Polski.
Tabele posiadają współrzędne które pozwalają rysować województwa i powiaty.
/W katalogu Maps znajdziesz dwie tabele Poland(współrzędne) i Poland2(słownik powiatów i województw).

Wykorzystując swoje dane punktowe możesz połączyć ze sobą tabele z sas i nanieść informacje o studentach - najgłębiej na powiaty.

Najlepiej przygotować sobie tabelę z twoimi danymi w podziale na powiaty, gdzie identyfikatorem będzie nazwa powiatu (nazwij kolumne IDNAME) (w danych sas jest dodatkowy powiat grodzki Wałbrzych a w naszym oficjalnym podziale administracyjnym jest jedynie powiat wałbrzyski więc musisz w swojej tabelce dodać ten powiat), a najlepej na podstaiw tabeli Poland2 stworzyć sobie taki słownik.

Taką tabelę należy połączyć z Poland i napisać krótki kod:



proc gmap data=STUDENCI
map=maps.poland density=high all;

id idname;

CHORO liczba_studentow / levels=10 ;
run;



tabela STUDENCI to twoja tabela z danymi w podziale na powiaty,
a "liczba_studentow" to charakterystka, ktora wyswietli sie na mapie.
id idname <- tu sie łączą tabele

Przyklad ten pokaze "plaską" mapę z 10 przedziałami wartości (na mapie będzie 10 odcieni koloru).

Jest jeszcze ciekawa opcja gdzie zamiast CHORO uzyjesz PIRSM bedziesz miał mapę 3D:)

Pozdrawiam
Kuba
Maciej B.

Maciej B. Doktorant

Temat: SAS GIS - liczenie punktów

Hej,

dzięki za odpowiedź, siądę do tego na dniach i dam znać jak poszło. :)

pozdr,
MB
Maciej B.

Maciej B. Doktorant

Temat: SAS GIS - liczenie punktów

hej,

problem rozwiązał się sam, w SAS oprogramowany jest proc ginside, który zlicza punkty w danych polygonach :)

pozdr
MB
Maciej B.

Maciej B. Doktorant

Temat: SAS GIS - liczenie punktów

No to mam problem. Wykonuję następujące kroki:

a) zmieniam nazwy miejscowości na współrzędne geograficzne za pomocą http://www.gpsvisualizer.com/geocoder/ wykorzystując google maps

b) zmieniam współrzędne na radiany zgodnie z tutorialem na stronie SAS:
http://support.sas.com/documentation/cdl/en/graphref/6...

c) zliczam punkty za pomocą proc ginside - tutaj występują błędy, ponieważ nic mi nie zlicza.

Załączam kod SASa z przykładowymi danymi dotyczącymi miejsca urodzenia studentów. Zbiór zawiera współrzędne, które otrzymałem przy użyciu geocodera (google maps).



data dane;
input latitude longitude miasto $;
cards;
54.1560613 19.4044897 Elbląg
52.5463446 19.7065364 Płock
51.6549856 17.8068258 Ostrów Wielkopolski
52.287267 17.8720745 Słupca
51.8786 17.01215 Gostyń
51.7672799 18.0853462 Kalisz
52.406374 16.9251681 Poznań
52.6483303 19.0677357 Włocławek
52.406374 16.9251681 Poznań
54.1943219 16.1714908 Koszalin
51.8419861 16.5937545 Leszno
;
run;

data dane;
set dane;
longitude=longitude*arcos(-1)/180;
longitude=longitude*(-1);
latitude=latitude*arcos(-1)/180;
y=input(latitude,best.);
x=input(longitude,best.);
run;

proc ginside data=dane map=maps.poland out=mapout;
id id;
run;

konto usunięte

Temat: SAS GIS - liczenie punktów

Maciej Beręsewicz:
No to mam problem. Wykonuję następujące kroki:
c) zliczam punkty za pomocą proc ginside - tutaj występują błędy, ponieważ nic mi nie zlicza.
[/code]
proc ginside data=dane map=maps.poland(keep= id lat long rename=(lat=y long=x)) out=mapout;
id id;
run;
Maciej B.

Maciej B. Doktorant

Temat: SAS GIS - liczenie punktów

Super! wielkie dzięki.

Następna dyskusja:

wizualizacja raportowania k...




Wyślij zaproszenie do