פיתוח נוסף של הנושא לאחר התכתבות עם שגיא -

סקריפט של שגיא ל־Bash עבור נתונים מתחנה מסויימת -
curl -sd '{"stopMonitoring":{"monitoringRef": {"value": "6109"},"previewInterval":"P0Y0M0DT1H0M0.000S"}}' http://otp.hamakor.org.il/SiriServer/SiriServer | awk -F'[ ,"]' 'START {p=0;} p==1 { print "Line: "$(NF-2); p=0; } /publishedLineName/ && $(NF-1)!="null" {p=1;} /expectedArrivalTime/ { print "Time: "strftime("%H:%M:%S",substr($(NF-1),0,10))}'

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

המשתנה 'previewInterval' מאפשר לבחור קבלת תוצאות לפרק זמן קבוע, ברירת המחדל (כאשר הוא אינו מופיע) היא 2\1 שעה, במקרה הזה נבחר פרק זמן של שעה, אפשר לבחור זמן של עד שעתיים קדימה.

למעשה הסקריפט נצרך להשתמש ב־gawk ולא ב־awk, אך gawk היא כבר ברירת המחדל במספר הפצות לינוקס מודרניות. מי שיתקל בהודעת שגיאה לאחר הרצת הסקריפט, זה בגלל שאצלו gawk אינו ברירת המחדל במערכת. יש להתקין את החבילה, ולהחליף בסקריפט את awk ב־gawk.

סקריפט Bash שלי, שמציג זמני הגעה לפי עוד כמה דקות מעכשיו מגיע האוטובוס לתחנה (הזמנים מעוגלים כלפי מטה, במקרה של זמן פחות מדקה, מוצג ‏‏‎('now!'

STATION=6109; t=$(date +%s); curl --silent -d '{"stopMonitoring":{"monitoringRef": {"value": "'$STATION'"},"previewInterval":"P0Y0M0DT1H0M0.000S"}}' http://otp.hamakor.org.il/SiriServer/SiriServer > /tmp/res; grep "value" /tmp/res | grep "," | grep -v "Line" > /tmp/list2; cat /tmp/list2 | while read i; do a=$(echo $i | cut -d '"' -f4); b=$(grep "$i" -A57 /tmp/res | tail -n 1 | cut -d " " -f13 | cut -c1-10); c=$(echo "(" $b "-" $t ")" "/" 60 | bc); if [ $c == 0 ]; then d='now!'; else d=$(echo $c "min."); fi; echo $a" - "$d; done

הקוד המספרי של התחנה מבוסס על קבצי ה־GTFS של משרד התחבורה. בחלק מהתחנות בארץ, מופיע המספר על עמוד התחנה. דומני שכדי למצוא את הנתון עבור תחנה מסויימת, האפשרות הקלה ביותר הוא להעזר באתר צד שלישי כדוגמת efobus.com, שמציג מפה דינמית של תחנות עם זמני האמת, כאשר לכל תחנה יש tooltip (כאשר סמן העכבר ניצב עליה), בה מוצג מספרה ושמה.

ב־ -10/01/37 21:59, ‏Sagi Ben-Akiva כתב\ה:
שלום לכולם,

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

דוגמא לשאילתא :
curl -d '{"stopMonitoring":{"monitoringRef": {"value": "21005"},"operatorRef": {"value": "18"},"lineRef": {"value": "1207325"}}}' http://otp.hamakor.org.il/SiriServer/SiriServer


כאשר :
monitoringRef = מזהה תחנה
operatorRef = מזהה חברה
lineRef = מזהה קו

המידע עבור מספרי התחנות והקווים מגיע מנתוני GTFS שפורסמו ע"י משרד התחבורה.

שגיא.


2013/2/1 Sagi Ben-Akiva <[email protected] <mailto:[email protected]>>

    לא נראה לי שצריכה להיות בעיה, אני מאמין ש Relay/Proxy יכול לעשות
    את העבודה.
    העניין הוא, שכל אחד שירצה להשתמש בשירות יצטרך למממש בעצמו את
    שאילתות ה SAOP

    שגיא.


    2013/1/30 Tomer Cohen <[email protected] <mailto:[email protected]>>

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


        2013/1/30 Sagi Ben-Akiva <[email protected]
        <mailto:[email protected]>>

            היי משה,

            אין לי שום בעיה שהממשק למשרד התחבורה יהיה בכל שפה שהיא, כל
            עוד אפשר לייצר שאילתת SOAP ולקבל מהשרת שלהם תשובה

            אנו זקוקים בעצם לשרת שמשמש בעצם כפרוקסי:
            1.  מקבל שאילתה (בשפה פשוטה שאנחנו יכולים להגדיר)
            2. ממנה יוצר שאילתה שמתאימה לפורמט ולפרוטוקול של משרד התחבורה
            3. שולח שאילתה לשרת של משרד התחבורה
            4. מהתשובה שמקבלים יוצרים תשובה בפרוטוקול שהגדרנו
            5. שולחים תשובה חזרה לשולח השאילתה המקורית.

            גם כאן הבחירה בג'וואה הייתה בגלל שהשרת שעמותת המקור הקצתה
            לפרוייקט מריץ כבר שרת tomcat עבור otp ובגלל שאין צורך
            לכתוב שרת http אלא רק לממש פונקציות doPost ו doGet
             שעל המימוש שלהן אני עובד לאחרונה. ומכיוון שהמחלקות שנוצרו
            מקובץ הWSDL כתובות גם הן בג'אווה.


            שגיא.



            2013/1/30 moshe nahmias <[email protected]
            <mailto:[email protected]>>

                בוקר טוב,

                האם ובמה אפשר לעזור אם לא יודעים ג'אווה?

                2013/1/30 Sagi Ben-Akiva <[email protected]
                <mailto:[email protected]>>

                    בוקר טוב,

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

                    ושוב נכון, השתמשתי בג'נרטור בשם Apache CXF שיצר את
                    כל טריליוני המחלקות הללו, בתחילת הדרך השתמשתי בכלל
                    ב gSoap ע"מ לייצר את המחלקות ב C++ , אך הקוד שנוצר
                    היה כבד מידי, קובץ הרצה בן 12MB

                    לשאלתכם, שם הקובץ המכיל את הפונקציה main הוא :
                    SOAPPort_SiriWSPort_Client.java
                    אך אל תבנו עליו יותר מידי :
                    1. הוא משמש אותי רק כדי לבדוק שליחת שאילתות לשרת
                    והדפסת התשובות.
                    2.ובגלל מגבלה של משרד התחבורה, שליחת השאילתות
                    יכולה להתצבע רק מIP ספציפי שאושר.





                    2013/1/29 moshe nahmias <[email protected]
                    <mailto:[email protected]>>

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

                        2013/1/29 Amir Eldor <[email protected]
                        <mailto:[email protected]>>

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

                            שגיא, אני מרגיש n00b, איפה ה־main בקוד
                            ג'וואה שנתת :)? אני רק בתהליכי למידת
                            סינטקס ארוכים בג'אווה, ככה שלמצוא את
                            הנקודת כניסה של התוכנת קומנד ליין שהזכרת
                            בין כל המחלקות שיש בפרוייקט בגיטהאב זה כמו
                            לחפש כרוב בערימת מרגרינה.


                            2013/1/29 moshe nahmias
                            <[email protected]
                            <mailto:[email protected]>>

                                אני אשמח לעזור, השאלה אם אפשר לעזור
                                בלי לדעת ג'אווה?

                                2013/1/29 Sagi Ben-Akiva
                                <[email protected]
                                <mailto:[email protected]>>

                                    לצערי בצד שלי הדברים קורים לאט ...
                                    עומס בעבודה עומס בבית ...

                                    שגיא.




                                    2013/1/29 Amir Eldor
                                    <[email protected]
                                    <mailto:[email protected]>>

                                        סתם מתעניין - קרה משהו בנושא
                                        מאז ההודעה האחרונה?

                                        אמיר



                                        2012/12/30 Sagi Ben-Akiva
                                        <[email protected]
                                        <mailto:[email protected]>>

                                            שלום לכולם,

                                            בשעה טובה, פתחתי פרוייקט
                                            בgithub בכתובת הבאה :
                                            https://github.com/sagiben/SIRI_IL

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

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

                                            תודה,
                                             שגיא.


                                            2012/10/18 Lior Kaplan
                                            <[email protected]
                                            <mailto:[email protected]>>

                                                היי שגיא,

                                                זאת אכן בעיה, אבל לא
                                                גדולה מידי.

                                                אם תרצה את עזרת העמותה
                                                במשיכת הנתונים אז לא
                                                אמורה להיות בעיה.

                                                קפלן

                                                2012/10/18 Sagi
                                                Ben-Akiva
                                                <[email protected]
                                                <mailto:[email protected]>>

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

                                                    המשמעות היא, שכדי
                                                    להשתמש בנתונים
                                                    חייבים להקים שרת
                                                    (בעל IP קבוע,
                                                    כמובן) שמתשאל את
                                                    השרת של משרד התחבורה
                                                    ואפליקציה מקבלת
                                                    נתונים מהשרת שהוקם.

                                                    שגיא

                                                    2012/10/9 Lior
                                                    Kaplan
                                                    <[email protected]
                                                    
<mailto:[email protected]>>


                                                        2012/9/30 Lior
                                                        Kaplan
                                                        <[email protected]
                                                        
<mailto:[email protected]>>

                                                            2012/9/28
                                                            Tomer
                                                            Cohen
                                                            <[email protected]
                                                            
<mailto:[email protected]>>

                                                                טכנית
                                                                הם
                                                                מבקשים
                                                                שנחתום
                                                                על
                                                                המסמך,
                                                                אבל
                                                                אני לא
                                                                רואה
                                                                בטופס
                                                                שום
                                                                מידע
                                                                לגבי
                                                                מניעת
                                                                הפצת
                                                                המידע
                                                                לגורם
                                                                שלישי.
                                                                כלומר
                                                                אני לא
                                                                בטוח
                                                                אם
                                                                אפילו
                                                                אסור
                                                                לנו
                                                                להפיץ
                                                                את
                                                                כתובת
                                                                הממשקים.‬
                                                                אנחנו
                                                                מבקשים
                                                                גישה
                                                                בשם
                                                                "תאגיד
                                                                עמותת
                                                                המקור"?


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


                                                        ומערכת בנושא
                                                        זה:
                                                        
http://openplans.org/projects/an-open-platform-for-real-time-bus-tracking/

                                                        
_______________________________________________
                                                        Discussions
                                                        mailing list
                                                        
[email protected]
                                                        
<mailto:[email protected]>
                                                        
http://hamakor.org.il/cgi-bin/mailman/listinfo/discussions




                                                    
_______________________________________________
                                                    Discussions
                                                    mailing list
                                                    [email protected]
                                                    
<mailto:[email protected]>
                                                    
http://hamakor.org.il/cgi-bin/mailman/listinfo/discussions








            _______________________________________________
            Discussions mailing list
            [email protected] <mailto:[email protected]>
            http://hamakor.org.il/cgi-bin/mailman/listinfo/discussions




-- Tomer Cohen
        http://tomercohen.com <http://tomercohen.com/>



_______________________________________________
Discussions mailing list
[email protected]
http://hamakor.org.il/cgi-bin/mailman/listinfo/discussions

לענות