Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum: 'Bazy danych' Kategorie

Dane Wikipedii i ich przetwarzanie

Autor: Piotr Karpiuk o 15. marca 2017

API

Każda wersja językowa dowolnego projektu Wikimedia Foundation (w szczególności: polska Wikipedia) oferuje API. O ile nie chcemy modyfikować zawartości serwisu, nie musimy się martwić o zakładanie konta i tokeny — wystarczy odpowiednio skonstruować URL zapytania aby otrzymać interesujący JSON.

Poniżej prezentuję swoistą „księgę czarów” — listę ciekawszych wywołań API. Co sprytniejszy Czytelnik może sobie manipulować URLami aby dopasować je do swoich potrzeb, a po prawej stronie każdego wpisu jest link do dokumentacji użytego zaklęcia, gdzie można poznać inne parametry zapytania.

Artykuł hasłowy na różne sposoby
Wikikod artykułu hasłowego „Warszawa” doc
HTML artykułu hasłowego „Warszawa”
Bez arkuszy stylów, bocznego paska, kontrolki wyszukiwania itp.
doc
HTML artykułu hasłowego „Warszawa”
j.w., ale zachowana struktura dokumentu i dodane pewne informacje semantyczne; może być przydatne przy parsowaniu infoboksów
doc
HTML artykułu „Warszawa”, wersja mobilna doc
Wersja PDF artykułu hasłowego „Warszawa” doc
JSON artykułu hasłowego „Piotr Abelard”
oprócz klucza text z kodem HTML artykułu jest też categories, langlinks, title, pageid, links, templates, images, externallinks, sections itp.
doc
Ekstrakcja fragmentu artykułu
Najlepiej pasujący obrazek do hasła „Bydgoszcz” doc
Podsumowanie artykułu hasłowego „Warszawa”
jednowierszowy TXT, akapit TXT i HTML, zdjęcie, współrzędne GPS, data ostatniej modyfikacji
doc
Jednozdaniowe podsumowanie artykułu hasłowego „Warszawa” doc
Ograniczony do 175 znaków ekstrakt z artykułu hasłowego „Warszawa” doc
Powiązania
Linki z artykułu hasłowego „Albert Einstein” do innych haseł doc
Wszystkie przekierowania (aliasy) do hasła „Maria Skłodowska-Curie” doc
Tłumaczenia hasła „Warszawa” na inne języki doc
5 artykułów powiązanych (ang. related) z artykułem hasłowym „Warszawa” doc
100 haseł semantycznie podobnych (ang. similar) do hasła „Polska”
Inna technika, wykorzystuje ElasticSearch
doc
Podkategorie kategorii „Fizyka” doc
Hasła kategorii „Fizyka”
Aby wyciągnąć kolejnymi zapytaniami wszystkie wyniki, trzeba obsłużyć klucz continue w wynikowym JSONie
doc
Które strony mają linki do artykułu hasłowego „Warszawa” doc
Które artykuły hasłowe zawierają link do „blog.tiger.com.pl” doc
Do jakich obiektów z WikiData odwołuje się artykuł hasłowy „Warszawa” doc
Które artykuły hasłowe wykorzystują encję Q444 (Lech Wałęsa) portalu WikiData doc
Wyszukiwanie haseł
Wyszukiwanie artykułu hasłowego: „Einstein”
W tytule (domyślnie), w treści, rozmyte w tytule
doc
Wyszukiwanie prefiksowe artykułu hasłowego: „Alb” doc
Lista szybkich podpowiedzi dla łańcucha „Warsz”
generowana np. po wprowadzeniu kolejnej litery w polu wyszukiwania hasła
doc
Współrzędne GPS doc
Współrzędne GPS dla hasła „Warszawa” doc
Hasła obiektów w promieniu 10km od punktu o współrzędnych 52.2760,20.9679 doc
Statystyki doc
1000 najpopularniejszych haseł na plwiki w dniu 2017-07-11
Można rozróżnić wejścia mobilne/desktopowe
doc
Dla artykułu „Warszawa”: liczba odwiedzin z podziałem na miesiące w okresie od 2008-01-01 do 2016-12-31 doc
Liczba odwiedzin dla całej plwiki w dniu 2017-07-12 w godz. 06-10
Można z podziałem na miesiące, dni lub godziny
doc
Liczba urządzeń odwiedzających plwiki w dniu 2017-07-12 w godz. 06-10 doc
Statystyki odwiedzin artykułu hasłowego „Warszawa” codziennie przez ostatnich 60 dni doc
100 Najpopularniejszych hasłeł w poprzednim dniu doc
Liczba odwiedzin polskiej Wikipedii codziennie przez ostatnich 60 dni
Można też użyć metryki liczby unikalnych użytkowników
doc
Metadane
Zbiorcze podsumowanie metadanych wszystkich wersji językowych wszystkich projektów Wikimedia Foundation doc
Opis wszystkich przestrzeni nazw polskiej Wikipedii doc
Opis parametrów modułów i submodułów doc
Lista wszystkich możliwych nazw właściwości artykułów hasłowych doc
Inne
Ostatnie zmiany na plwiki doc
Lista pierwszych 500 kategorii
Aby wyciągnąć kolejnymi zapytaniami wszystkie kategorie, trzeba obsłużyć klucz continue w wynikowym JSONie
doc
Lista pierwszych 500 haseł zaczynających się prefiksem „Polska „ doc
j.w., ale dla każdego hasła dodatkowo wymienione są ewentualne prowadzące do niego przekierowania doc
Lista pierwszych 500 kategorii
Dla każdej informacja o liczbie podkategorii i artykułów hasłowych
doc
Lista wszystkich haseł ujednoznaczniających doc
Lista wszystkich haseł zabezpieczonych przed edycją doc
Lista 15 losowo wygenerowanych haseł doc
Lista 15 najnowszych zweryfikowanych haseł doc
Lista 15 niezweryfikowanych haseł doc

Czytaj więcej »

Tags: , , ,
Napisany w Bazy danych | Brak komentarzy »

Google Suggest

Autor: Piotr Karpiuk o 19. maja 2016

Gdy wpisujemy jakąś frazę w wyszukiwarce Google, narzędzie stara się nam pomóc generując na bieżąco podpowiedzi. Pod spodem wykonuje się zlecenie HTTP GET w rodzaju:

http://suggestqueries.google.com/complete/search?client=firefox&hl=pl&q=fraza

gdzie fraza jest prefiksem naszego zapytania.
Przykładowo, dla frazy „warsza” otrzymamy wynik postaci:

["warsza",["warszawa","warszawa pogoda","warszawski koks","warszawianka","warszawa wschodnia",
"warszawa dzielnice","warszawa mapa","warszawska lala","warszawa modlin","warszawa centralna"]]

Wygląda na to, że nie ma żadnych ograniczeń na liczbę tego rodzaju wywołań, więc można łatwo wykorzystać ten mechanizm we własnej aplikacji webowej, albo pisać skrypty badające popularne zapytania na interesujący nas temat i wykonujące jakieś statystyki/raporty.
Przypuśćmy, że interesują mnie rozmaite rejestry (w znaczeniu: bazy danych) dostępne w internecie. Mogę się dowiedzieć, o jakie rejestry ludzie pytają badając możliwe autouzupełnienia dla frazy „rejestr xy” gdzie x i y to wszystkie możliwe kombinacje liter alfabetu. Poniżej raport, jaki w ten sposób otrzymałem.
Czytaj więcej »

Napisany w Bazy danych | 1 Komentarz »

OpenStreetMap: interaktywna mapa 3D

Autor: Piotr Karpiuk o 20. kwietnia 2016

Spośród obejrzanych różnych wizualizacji bazy danych OpenStreetMap, szczególne wrażenie zrobiła na mnie interaktywna wizualizacja 3D w przeglądarce wykonana przez firmę F4Map. Kliknij w poniższy obrazek, aby polatać sobie trochę nad Warszawą, lub innym wybranym przez siebie miejscem na świecie. Do poruszania się używamy klawiszy strzałek oraz PgUp/PgDown. Przeglądarka musi obsługiwać WebGL (większość już obsługuje).


Źródło: F4map.com

Napisany w Bazy danych, datavis, GIS, HTML5, WWW | Brak komentarzy »

Polski OpenStreetMap: struktura i zawartość

Autor: Piotr Karpiuk o 10. kwietnia 2016

OpenStreetMap to „wikipedia obiektów geograficznych” – baza praktycznych danych geograficznych rozwijana przez wolontariuszy na całym świecie, zbierających dane o swojej okolicy. Na pierwszy rzut oka OSM to po prostu mapa topograficzna, w dodatku niezbyt atrakcyjna w porównaniu z Google Maps czy Bing Maps. To jednak tylko złudzenie. OSM to baza danych, a mapa topograficzna jest tylko jedną z wielu możliwych wizualizacji, która – jak każda wizualizacja – uwypukla niektóre informacje pomijając inne.

Weźmy pod uwagę taki obiekt jak ławeczka w parku, pomijana na mapach topograficznych (nawet tych dokładnych). W OSM możemy się dowiedzieć czy ławeczka ma oparcie (znacznik backrest), ile osób może na niej usiąść (seats), z jakiego materiału jest wykonana (material), na jaki kolor jest pomalowana (colour), w którym kierunku jest skierowana (direction – azymut), czy jest zadaszona (covered), jaka firma się nią opiekuje (operator), a także zdjęcie (image), czy obok stoi kosz na śmieci (waste_basket), w którym roku została postawiona (start_date), itd.

Przykłady innych obiektów:

Żywopłot Wysokość (height), rodzaj liści (leaf_type), czy roślina całoroczna (leaf_cycle), jakiego rodzaju i gatunku (genus, species)
Schody Liczba schodków (step_count), czy ruchome (conveying), czy jest poręcz (handrail)
Winda Producent (brand), pojemność (capacity), czy towarowa (goods), czy wewnątrz budynku (indoor), między którymi piętrami (level, np. -1;0;1;2)
Droga Szerokość (width), liczba pasów (lanes), jakiego rodzaju nawierzchnia (surface), max. wysokość dla pojazdów (maxheight), czy jest chodnik i po której stronie (sidewalk, footway), czy jest oświetlenie (lit), stopień utwardzenia (tracktype), stopień spadku (incline), ograniczenia dostępu (access), czy mogą jeździć ciężarówki (hgv)
Toaleta czy publiczna (access), czy płatna (fee), w jakich godzinach czynna (opening_hours), czy mogą z niej korzystać kobiety/mężczyźni/niepełnosprawni (male, female, wheelchair), sposób spuszczania wody (toilets:disposal), czy jest woda pitna (drinking_water), czy jest miejsce do przewijania pieluch (diaper), czy jest papier toaletowy (toilets:paper_supplied), czy można umyć ręce (toilets:handwashing)
Kościół Religia i wyznanie (religion, denomination), godziny mszy (service_times), adres (addr:*), kontakt (phone, website), link do Wikipedii (wikipedia), data powstania (start_date), czy zabytek (historic), kolor dachu (roof:colour), wysokość (height), nazwisko architekta (architect)
Krawężnik Wysokość (czy można na niego wjechać samochodem, wózkiem inwalidzkim?)

Alternatywą dla mapy topograficznej są nietypowe mapy tematyczne. Można takie znaleźć na product.itoworld.com/map/main (np. które budynki mają w bazie przypisany adres, ulice z podziałem na ograniczenie prędkości itp.) Poniżej kilka przykładów z jeszcze innych źródeł:


Box Locator: biletomaty, skrzynki pocztowe, bankomaty, parkomaty, telefony, kontenery na śmieci

OpenCycleMap: ścieżki rowerowe

Lichtkarte: Oświetlenie ulic

osmtools.org/gniazda/bocian: Bocianie gniazda w Polsce

Czytaj więcej »

Tags:
Napisany w Bazy danych, datavis, GIS, HTML5, WWW | Brak komentarzy »

Państwowy Rejestr Granic: Punkty adresowe

Autor: Piotr Karpiuk o 29. marca 2016

Centralny Ośrodek Dokumentacji Geodezyjnej i Kartograficznej (CODGiK) w dziale Dane bez opłat udostępnia za darmo bazę punktów adresowych, dość często aktualizowaną (nawet co kilka dni).

Najważniejsza jest w niej tabela PunktAdresowy (przeszło 7 mln rekordów), o następującej strukturze (wymieniłem najciekawsze kolumny):

PunktAdresowy
wojewodztwo
powiat
gmina
miejscowosc
ulica
numerPorzadkowy numer budynku
kodPocztowy wypełniony w ok. 75% rekordów
status wartości: istniejacy (97,64%), prognozowany (1,9%), wTrakcieBudowy (0,46%)
gps współrzędne punktu na mapie (w układzie EPSG:2180)

W bazie jednak jest więcej. Każdy punkt adresowy zawiera dowiązania do rekordów w tabelach JednostkaAdministracyjna (kraj/województwo/powiat/gmina), Miejscowosc oraz Ulica. Struktura tych tabel jest następująca (pola wypełnione są w 100% chyba że napisano inaczej):

JednostkaAdministracyjna
nazwa
idTERYT kod TERC
poziom 1: państwo, 2: województwo, 3: powiat, 4: gmina
Miejscowosc
nazwa
idTERYT kod SIMC
gps współrzędne punktu na mapie, wypełnione w ok. 11% rekordów
Ulica
idTERYT kod ULIC
przedrostek1Czesc np. "pl.", "al."
przedrostek2Czesc np. "ks."
nazwaCzesc np. "Jerzego"
nazwaGlownaCzesc np. "Popiełuszki"
posList lista punktów GPS wyznaczających przebieg ulicy na mapie; wypełnione w ok. 6%

Ujęty w rekordach tabel JednostkaAdministracyjna i Miejscowosc podział administracyjny kraju możemy sobie wyobrazić jako drzewo (w korzeniu będzie rekord POLSKA, potem województwa, powiaty, gminy i miejscowości). Ten model nie rozciąga się jednak na ulice. Każda ulica w kraju jest reprezentowana w tabeli Ulica jako jeden obiekt. Jedna ulica może przebiegać przez kilka miejscowości (sąsiadujących ze sobą). Punkt adresowy oczywiście ma dowiązanie do jednej miejscowości i (zwykle) do jednej ulicy (na wsiach adres pocztowy często zawiera tylko nazwę miejscowości i numer domu).

Przetwarzanie bazy

Do pobrania ze strony CODGiK jest duży (ok. 700 MB), spakowany plik punkty_adr.zip zawierający 16 plików XML (dokładniej: GML) po jednym dla każdego województwa, po rozpakowaniu ok. 16 GB. Format XML dobrze się nadaje do udostępniania zbioru danych innym, ale gdyby ktoś chciał zaimportować dane do relacyjnej bazy danych, to może skorzystać z efektów mojej pracy. Napisałem program w Javie, który konwertuje pliki XML do jednego pliku bazy danych SQLite o objętości ok. 3 GB.

Program wywołujemy poleceniem

./run.sh KATALOG

Gdzie KATALOG to nazwa katalogu, w którym rozpakowaliśmy pliki XML. Wynik po kilkunastu minutach pojawia się w pliku PRG.db, który możemy eksplorować za pomocą standardowego klienta SQLite:

sqlite3 PRG.db

Tags:
Napisany w Bazy danych, Uncategorized | 1 Komentarz »