Narzędzia użytkownika

Narzędzia witryny


ewdprocedury_bazaszkol_ludnosc

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
Nowa wersja Both sides next revision
ewdprocedury_bazaszkol_ludnosc [2014/10/30 14:25]
zozlak
ewdprocedury_bazaszkol_ludnosc [2018/10/10 08:01]
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//​+  * //wybór jednostek terytorialnych ​(aktualnie pod przyciskiem *zaznacz*) ​wg poziomu NTS//: //gminy miejskie, miasta w gminach miejsko-wiejskich//​
   * //wiek//: //​ogółem//​   * //wiek//: //​ogółem//​
   * //płeć//: //​ogółem//​   * //płeć//: //​ogółem//​
Linia 28: Linia 51:
 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 68:
   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 = ?",+  WHERE rok = ? AND id_szkoly > 0",
   rok,   rok,
   fetch = T, stringsAsFactors = F   fetch = T, stringsAsFactors = F
Linia 59: Linia 89:
 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
ewdprocedury_bazaszkol_ludnosc.txt · ostatnio zmienione: 2019/09/07 16:16 przez zozlak