אז למי שלא יודע ממשלת ישראל אט אט פותחת מידע ציבורי לשימוש הציבור (מפתיע לא?)

או כמו שהם מגדירים תחת אודות באתר Data.gov.il:

מה זה data.gov.il?

data.gov.il מרכז מאגרי נתונים מכלל משרדי הממשלה הפתוחים לשימוש הציבור. האתר מאפשר חיפוש נתונים בקלות וביעילות. המשתמשים ב- data.gov.il מקבלים יד חופשית לפיתוח יישומים ומערכות המבוססות על המידע המפורסם בו וכל עדכון במאגרי המידע באתר מעודכן אוטומטית גם ביישומים המבוססים עליו.

איזה מידע זמין באתר?

כיום ניתן למצוא באתר מאגרי מידע של משרדי ממשלה מרכזיים וכמה רשויות מרכזיות. המאגרים הם בנושא דיור, תחבורה, מזג אוויר, תקציב המדינה ועוד.

 אז באמת יש לא מעט מידע באתר חלקו מעודכן יותר וחלקו מעודכן פחות אותנו מטבע הדברים מעניינים היבטים גיאוגרפיים.

כדאי מאוד לשוטט במאגרים מדי פעם ולראות אם יש חומר נוסף מעניין.

בהמשך אני אתן כמה דוגמאות לסקריפטים שניתן להשתמש על מנת לצרוך מידע באופו אוטמטי.

פורמטים של מאגרי מידע

ישנם לא מעט פורמטים של מאגרי המידע השונים שניתן להשתמש בבהם בהיבטים גיאוגרפים

במאגרי המידע נמצא מאגר המידע של מפ"י  שמכיל לא מעט מידע של תצלומי אוויר, שכבות שונות (מי ביקש גושים וחלקות ולא קיבל)   ומידע נוסף שיכול לעניין. מרבית החומר נמצא בקבצי zip שצריך להוריד.

חלק מהמידע הוא בעצם קישורים למאגרי מידע נוספים כמו למשל קישור  למאגר נתוני השירות המטאורולוגי.

הפורמטים הנוספים שקיימים במאגר וכמות המשאבים עפ"י ניתוח שערכתי לככל המידע (נכון ל 1.5.18)

כאשר השונות בשמות הפורמטים מופיע במקור ב API (למשל XLS ו .xls)

FormatCount
.Docx1
.xls3
.xlsx3
.xslx1
.zip5
CSV113
csv,xls,sas1
dBase2
DOC3
DOCX55
GZ2
HTML16
JSON21
LINK1
NC1
PDF83
PPTX5
RSS7
sav3
TXT1
Web-Service1
XLS573
XLSX201
XML267
xsd2
xslx1
ZIP160
(blank)15

גישה ל API

data.gov משתמש  ב CKAN API שזהו פורמט נפוץ לניהול מאגרי מידע.

CKAN היא מערכת רבת עוצמה לניהול נתונים שהופכת את הנתונים נגישים לכל על ידי מתן כלים לייעול פרסום, שיתוף, חיפוש ושימוש.

ישנם לא מעט דוגמאות והסברים לגישה ל API כמו למשל דוקמנטציה של CKAN , עמוד הגיטאהב של DataGovIL

סקריפטים

רציתי למצוא דרך לייצא את רשימת כל המשאבים ואת המזהה שלהם וכן לבדוק אילו שדות קיימים לכל מאגר שניתן לבדוק לו את השדות על מנת למצוא נתונים גיאוגרפים (X,Y כתובת וכו'..) הקוד הבא מייצא ל CSV את מאגרי הנתונים עם פירוט על הארגון, שם מאגר, שם משאב, פורמט, מזהה, תאריך עדכון אחרון ותאריך יצירה ניתן כמובן להוציא נתונים נוספים לפי הדקומנטציה של API.

כמו כן אני מייצר קובץ JSON עם שמות השדות במידה ויש.

הסקריפט מתאים לפייתון 3

import urllib
import json
import requests
from datetime import datetime
from urllib.request import urlopen
import csv
import time

url='https://data.gov.il/api/action/package_search?rows=1000&start=0'

r=requests.get(url).json()
dataset=[]
dfformats=["CSV","csv",".xls","XLS",".xlsx",".xslx", "XLSX", "XML" ]

allF={}

for l in range(len(r['result']['results'])):
 for i in range(len(r['result']['results'][l]['resources'])):
 
 title=r['result']['results'][l]['title']
 organization=r['result']['results'][l]['organization']['title']
 desc=r['result']['results'][l]['resources'][i]['name']
 formats=r['result']['results'][l]['resources'][i]['format']
 #link=r['result']['results'][l]['resources'][i]['url']
 ids=r['result']['results'][l]['resources'][i]['id']
 date=r['result']['results'][l]['resources'][i]['last_modified']
 createddate=r['result']['results'][l]['resources'][i]['created']
 
 print (title,formats)
 
 if str(formats) in dfformats:
 try:
 params={'resource_id': ids,'limit': 1000000,}
 urldf = 'https://data.gov.il/api/action/datastore_search'
 m = requests.get(urldf, params=params).json()
 flist=[]
 allF[ids]=flist
 
 for i in range(len(m['result']['fields'])):
 flist.append((m['result']['fields'][i]['id']))
 
 
 except:
 pass 
 
 dataset.append([organization,title,desc,formats,link,ids,date,createddate])
 
 #dataset.append([organization,title,desc,formats,link,ids,date,createddate,shp])

with open("datagov.csv", 'w', newline='') as f:
 writer = csv.writer(f)
 writer.writerows(dataset)

with open('field.json', 'w') as fp:
 json.dump(allF, fp)

print("done:",len(dataset))

העלתי את המידע לגוגל דוקס  ניתן לראות את כל המאגרים וכן את רשימת השדות במידה וניתן. קישור לקובץ

בתוך גליון השדות ניתן לראות את המאגרים שיש להם מידע גיאוגרפי כל שהוא סמנתי באדום עמודות של X או Y אבל יש כמובן גם וריאציות נוספות.

קריאה של המידע במשאב באמצעות pands data frame

טוב  אז מצאתי מאגר שנראה מעניין , ראיתי ברשימת השדות שיש מידע גיאוגרפי כלשהו (או שלא) לא ממש מתחשק לי להוריד את המידע או שסתם בא לי לחפש משהו ספציפי בתוך המידע או מה שבא לכם , הנה דרך פשוטה יחסית לצפות במידע

למשל בדוגמה הבאה אני מעוניין לצפות במאגר של שירות התעסוקה במידע עפ"י יישוב

המזהה של המאגר הוא  -342dc551-527c-4148-9c34-4694f005b5be

כמובן שניתן לבצע את כל שאר הפעולות שאפשר עם DataFrame (מדריך קצר )

יצירת מפות

יש כמה דרכים ליצור מפות מ DF אני אדגים כרגע אופציה מהירה דרך jupiter

הפעם השתמשתי במאגר הצימרים מזהה – dfe63ef6-4f86-4cf4-ad5c-3e9a57cecc1f

מפה של ESRI שימוש ב arcgis.gis

המפה כמובן דינמית ניתן ללחוץ על הנקודות ולקבל מידע ועוד ועוד..

(לא הצלחתי להטמיע כך שיראו גם את המפה אז העלתי צילום מסך..)

 

ישנם עוד דרכים ושימושים שונים למיפוי של DF למשל GeoPandas , BOKEH ועוד…

 

אולי גם זה יעניין אותך?

השארת תגובה