Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja Ostatnia wersja Both sides next revision | ||
ewdprocedury_bazaszkol_ludnosc [2014/10/30 15:21] zozlak |
ewdprocedury_bazaszkol_ludnosc [2019/09/06 12:13] zozlak [Pobieranie danych z BDL] |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
====== Przypisywanie szkołom liczby mieszkańców w miejscowości ====== | ====== Przypisywanie szkołom liczby mieszkańców w miejscowości ====== | ||
+ | |||
+ | Liczba mieszkańców miejscowości, w której znajduje się szkoła przypisywana jest z informacji o liczbie mieszkańców miejscowości pobranej z Banku Danych Lokalnych (BDL). | ||
+ | |||
+ | **Szkołom znajdującym się na wsiach przypisywana jest wielkość miejscowości 0.** | ||
+ | |||
+ | **Szkołom dla których brak informacji adresowych przypisywana jest wielkość miejscowości NULL (brak danych).** | ||
Ponieważ dane w BDL publikowane są z systematycznym opóźnieniem, przyjęto, że informacja o liczbie mieszkańców: | Ponieważ dane w BDL publikowane są z systematycznym opóźnieniem, przyjęto, że informacja o liczbie mieszkańców: | ||
* w bieżącym roku pobierana jest dla danych, które są dostępne w BDL, czyli dla poprzedniego roku (mówiąc inaczej wg stanu w momencie rozpoczęcia roku szkolnego, którego to roku szkolnego dotyczą dane teleadresowe szkoły); | * w bieżącym roku pobierana jest dla danych, które są dostępne w BDL, czyli dla poprzedniego roku (mówiąc inaczej wg stanu w momencie rozpoczęcia roku szkolnego, którego to roku szkolnego dotyczą dane teleadresowe szkoły); | ||
- | * jednocześnie dla wcześniejszych lata przypisywana jest informacja z BDL dla odpowiadającego im roku. | + | * jednocześnie dla wcześniejszych latach przypisywana jest informacja z BDL dla odpowiadającego im roku. |
+ | |||
+ | ===== Algorytm ===== | ||
+ | |||
+ | Pobranie z BDL informacji o liczbie mieszkańców **jedynie** w gminach miejskich oraz miastach w gminach miejsko-wiejskich (będzie to istotne dla gmin miejsko-wiejskich i wiejskich). | ||
+ | |||
+ | * **dzielnice Warszawy** - złączenie po kodzie TERYT Warszawy (146501 / 143101) | ||
+ | * **gminy miejskie** - złączenie z danymi z BDL po kodzie TERYT gminy | ||
+ | * **gminy miejsko-wiejskie** | ||
+ | * złączenie z danymi z BDL po parze {TERYT gminy, miejscowość} | ||
+ | * przypisanie 0 szkołom, które nie połączyły się z danymi BDL | ||
+ | * przypisanie braku danych szkołom, które nie posiadają kodu pocztowego | ||
+ | * **gminy wiejskie** | ||
+ | * złączenie z danymi z BDL po parze {TERYT powiatu, miejscowość} | ||
+ | * ponieważ z BDL pobrano tylko informacje o gminach miejskich i miastach w gminach miejsko-wiejskich, dołączyć w ten sposób może się tylko informacja o odpowiadającej danej gminie wiejskiej gminie miejskiej | ||
+ | * są to przypadki, gdy szkoła siedzibę ma w gminie miejskiej, choć np. organem prowadzącym jest gmina wiejska | ||
+ | * w skali kraju, dla wszystkich typów szkół, jest takich przypadków ok. 15 do 30. | ||
+ | * przypisanie 0 szkołom, które nie połączyły się z danymi BDL (tzn. faktycznie znajdują się na wsi) | ||
====== Pobieranie danych z BDL ====== | ====== Pobieranie danych z BDL ====== | ||
http://stat.gov.pl/bdl | http://stat.gov.pl/bdl | ||
- | * dane roczne -> ludność -> stan ludności i prognozy -> ludność wg grup wieku i płci | + | * dane wg dziedzin -> ludność -> stan ludności -> ludność wg grup wieku i płci |
- | * //wybór jednostek terytorialnych wg poziomu NTS//: //gminy miejskie, miasta w gminach miejsko-wiejskich// | + | * lata wg uznania, wiek //ogółem//, płeć //ogółem// |
- | * //wiek//: //ogółem// | + | * jednostki - wszystkie z poziomu ogólnopolskiego w podziale //układ administracyjny// (który jest domyślny) |
- | * //płeć//: //ogółem// | + | * wyeksportować jako //CSV - tablica relacyjna// |
- | * //dodatkowe agregaty//: brak | + | |
- | + | ||
- | I zapisać jako CSV. | + | |
====== Import do bazy ====== | ====== Import do bazy ====== | ||
Linia 28: | Linia 48: | ||
library(RODBCext) | library(RODBCext) | ||
P = odbcConnect(zrodloODBC) | P = odbcConnect(zrodloODBC) | ||
+ | |||
+ | # aby upewnić się, że baza jest spójna z naszymi oczekiwaniami | ||
+ | sqlQuery(P, "UPDATE szkoly_dane SET miejscowosc = poczta WHERE miejscowosc = '' or miejscowosc is null") | ||
dane = read.csv2(plikDanych, stringsAsFactors=F) | dane = read.csv2(plikDanych, stringsAsFactors=F) | ||
- | dane$teryt = as.numeric(paste0(substring(dane$teryt, 2, 3), substring(dane$teryt, 6, 9))) | + | #dane$teryt = as.numeric(paste0(substring(dane$teryt, 2, 3), substring(dane$teryt, 6, 9))) |
- | dane$miasto = tolower(str_trim(sub('(- miasto ?)?([(][0-9][)])?( [*])?$', '', dane$miasto))) | + | dane$teryt = as.integer(substring(dane$teryt, 1, 6)) |
+ | dane$miasto = sub('[*]', '', dane$miasto) | ||
+ | dane$miasto = sub('[(][0-9][)]', '', dane$miasto) | ||
+ | dane$miasto = tolower(str_trim(sub('- miasto', '', dane$miasto))) | ||
+ | dane$miasto = tolower(str_trim(dane$miasto)) | ||
dane[, kolumnaLudnosc] = as.numeric(dane[, kolumnaLudnosc]) # jeśli dane z kilku lat i zmieniała się liczba gmin | dane[, kolumnaLudnosc] = as.numeric(dane[, kolumnaLudnosc]) # jeśli dane z kilku lat i zmieniała się liczba gmin | ||
dane = dane[!is.na(dane[, kolumnaLudnosc]), ] | dane = dane[!is.na(dane[, kolumnaLudnosc]), ] | ||
Linia 38: | Linia 65: | ||
P, | P, | ||
"SELECT | "SELECT | ||
- | id_szkoly, rodzaj_gminy, lower(miejscowosc) AS miejscowosc, rok, | + | id_szkoly, rodzaj_gminy, lower(miejscowosc) AS miejscowosc, rok, |
- | id_wojewodztwa * 10000 + id_powiatu * 100 + id_gminy AS teryt | + | id_wojewodztwa * 10000 + id_powiatu * 100 + id_gminy AS teryt, pna |
FROM szkoly_dane JOIN teryt_gminy USING (rok, id_wojewodztwa, id_powiatu, id_gminy) | FROM szkoly_dane JOIN teryt_gminy USING (rok, id_wojewodztwa, id_powiatu, id_gminy) | ||
WHERE rok = ? AND id_szkoly > 0", | WHERE rok = ? AND id_szkoly > 0", | ||
Linia 59: | Linia 86: | ||
mieszane = join(mieszane, dane, type = 'left') | mieszane = join(mieszane, dane, type = 'left') | ||
mieszane[is.na(mieszane[, kolumnaLudnosc]), kolumnaLudnosc] = 0 | mieszane[is.na(mieszane[, kolumnaLudnosc]), kolumnaLudnosc] = 0 | ||
+ | mieszane[is.na(mieszane$pna) | mieszane$pna == '', kolumnaLudnosc] = NA | ||
### szkoły teoretycznie leżące w gminach wiejskich mogą tak naprawdę leżeć w gminach miejskich o tej samej nazwie - złączamy po terycie powiatu i nazwie miejscowości równej nazwie gminy | ### szkoły teoretycznie leżące w gminach wiejskich mogą tak naprawdę leżeć w gminach miejskich o tej samej nazwie - złączamy po terycie powiatu i nazwie miejscowości równej nazwie gminy |