מה הקוי אורך-רוחב לחישוב זמני היום?
-
כהמשך לכאן, כרגע השתמשתי לקבלת הזמנים בAPI של hebcal.com, אבל אני מעדיף להשתמש בספריה עצמה כדי לא להיות תלוי בשרת שלהם...
הבעיה שהAPI תומך בציון מיקום מכאן, בעוד הספריה דורשת לקבל קו אורך ורוחב...
השאלה איך אני מקבל את הנתון הזה?
יש אתרים כדוגמת זה שנותנים קוי אורך רוחב לפי מיקום, השאלה לפי איזה כתובת בדיוק אני צריך לחפש...
זה מה שהאתר הנ"ל נתן לי עבור "Jerusalem":
Latitude
31.768318
Longitude
35.213711השאלה לפי איזה מיקום מחשבים את זמני היום? מסתמא לפי מיקום בגובה מסוים וכו'.. (לא מבין בזה...)
או בקיצור - איך אני יכול לקבל לפי שם עיר, קו אורך-רוחב שבו מחשבים את זמני היום?
תודה! -
@צדיק-תמים בויקיפדיה, בכל עיר, הם נותנים לך את קו האורך והרוחב שלה,
כנראה מדובר בחישוב ממוצע
לא מסתבר שלהפרש בתוך העיר ישנה השפעה על זמני היום (אולי בירושלים קיים פער זניח בין שתי קצוות העיר)בעבר כתבתי תוסף לכרום שמתריע לפני שקיעה, חצות וכו' על סמך הספרייה של hebcal, אך גנזתי אותו מחמת שלא ידעתי אם ניתן לסמוך הלכה למעשה על הספרייה הזו.
-
@צדיק-תמים לפעולה הזאת קוראים geolocation. כלומר למצוא מיקום גיאוגרפי (=קווי רוחב/אורך) על פי נתונים אחרים (לדוגמא שם עיר).
יש לזה חבילה טובה node-geocoder, היא תומכת בכמה מנועי geolocation - לחלקם יש עלויות כגון גוגל, שמצריך שימוש ב-GeoLocation API של גוגל, על ידי טוקן. אבל היא גם תומכת במנוע של openstreetmap שהוא חינמי.
אני מצרך עבורך קוד מוכן בדיוק עבור זה, שמצאתי אצלי בגינזך:
const NodeGeocoder = require('node-geocoder') const geocoder = NodeGeocoder({ provider: 'openstreetmap' }) /** * get location and GeoLocation library city name for entered city name * @param {String} cityName - name of city to geolocate * @returns {Object} city - { success: boolean, latitude: latitude, longitude: longitude, cityname: name of located city } * @returns {Object} error - { success: boolean, error: error_message } */ async function getCityByName (cityName) { const locates = await geocoder.geocode(cityName) // check if the city exists if (!Array.isArray(locates) || !locates.length) { return { success: false, error: 'not a city' } } else { for (const locate of locates) { if (locate.countryCode !== 'IL') { continue } if (locate.city === cityName) { const city = { success: true, latitude: locate.latitude, longitude: locate.longitude, cityname: locate.city } return city } } return { success: false, error: 'not a city' } } } module.exports = getCityByName
תתאים אותו לצרכיך, בהצלחה!!
-
@גמליאל אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
לא מסתבר שלהפרש בתוך העיר ישנה השפעה על זמני היום (אולי בירושלים קיים פער זניח בין שתי קצוות העיר)
זה לא לגמרי נכון, בפרט בירושלים שהיא אזור הררי. קשה להיכנס לזה על במה זו, זה נידון ארוך ומורכב, זה תלוי באלו סוגים מזמני היום, באלו ושיטות הלכתיות, באלו מטרות ועוד.
ניתן לעיין בארוכה בכמה נידונים בזה בספר זמני הלכה למעשה של הרב מנת, והתכל'ס הוא שדי מוסכם על העוסקים בדבר שאי אפשר להתייחס לכל העיר כמקשה אחת, למרבית העניינים.ועדין כדאי לציין שדיוק של 4 ספרות אחרי הנקודה במעלות משמעות דיוק של בסביבות 10 מטר (בהתבסס חישוב גס מאוד של 40 אלף ק"מ חלקי 360), כך שאתה יכול לבחור את רזולוציית הדיוק שאתה מעונין בה. דיוק של 2 ספרות יתן לך דיוק של קילומטר בערך.
-
@chv אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
@צדיק-תמים לפעולה הזאת קוראים geolocation. כלומר למצוא מיקום גיאוגרפי (=קווי רוחב/אורך) על פי נתונים אחרים (לדוגמא שם עיר).
יש לזה חבילה טובה node-geocoder, היא תומכת בכמה מנועי geolocation - לחלקם יש עלויות כגון גוגל, שמצריך שימוש ב-GeoLocation API של גוגל, על ידי טוקן. אבל היא גם תומכת במנוע של openstreetmap שהוא חינמי.
אני מצרך עבורך קוד מוכן בדיוק עבור זה, שמצאתי אצלי בגינזך:
const NodeGeocoder = require('node-geocoder') const geocoder = NodeGeocoder({ provider: 'openstreetmap' }) /** * get location and GeoLocation library city name for entered city name * @param {String} cityName - name of city to geolocate * @returns {Object} city - { success: boolean, latitude: latitude, longitude: longitude, cityname: name of located city } * @returns {Object} error - { success: boolean, error: error_message } */ async function getCityByName (cityName) { const locates = await geocoder.geocode(cityName) // check if the city exists if (!Array.isArray(locates) || !locates.length) { return { success: false, error: 'not a city' } } else { for (const locate of locates) { if (locate.countryCode !== 'IL') { continue } if (locate.city === cityName) { const city = { success: true, latitude: locate.latitude, longitude: locate.longitude, cityname: locate.city } return city } } return { success: false, error: 'not a city' } } } module.exports = getCityByName
תתאים אותו לצרכיך, בהצלחה!!
לא הכרתי את הספריה הזו. אם כבר העלת נקודה זו, האם עשית פעם השוואה בין הכלים השונים? האם אתה יודע לציין הבדלים ומעלות איכותיות של גוגל?
הAPI של גוגל מפות נותן כידוע שירותים שונים, מגוונים ואיכותיים, בתשלום (מעל כמות מינימום). יש לו כל מיני תחליפים חינמיים, אך כל כלי מחליף תכונה אחרת, אין כלי שמחליף את כל היכולות שלו יחד. ויש גם שירותים שאין תחליף בתשלום.אז לגבי מציאת מיקום לפי כתובת - ככל שאני מצאתי המעלה של גוגל זה האלוגריתם חיפוש שלו שמאפשר למצוא תוצאות מדויקות לפי מחרוזת חיפוש גמישה יחסית. נתקלתי בהצלחות שלהם על פני פישולים (אפילו גסים) אחרים. אשמח לשמוע התרשמות של אחרים כאן, על כלים ספציפיים.
עריכה
היות שהעירו את תשומת לבי שזה סטיה מנושא האשכול, כונתי היתה להתמקד בנידון דדן-כלומר כלים למציאת קורדינטות מתוך כתובת סטרינגאית. לגבי שאר הכלים - זה ג םמאוד מענין אבל ראוי לאשכול נפרד. -
@davidnead אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
זה לא לגמרי נכון, בפרט בירושלים שהיא אזור הררי. קשה להיכנס לזה על במה זו, זה נידון ארוך ומורכב, זה תלוי באלו סוגים מזמני היום, באלו ושיטות הלכתיות, באלו מטרות ועוד.
ניתן לעיין בארוכה בכמה נידונים בזה בספר זמני הלכה למעשה של הרב מנת, והתכל'ס הוא שדי מוסכם על העוסקים בדבר שאי אפשר להתייחס לכל העיר כמקשה אחת, למרבית העניינים.מביאים מהחיד"א שיש לחשב לפי המקום הגבוה בעיר.. וכך עושה בלוח עיתים לבינה.
מצד שני שמעתי בשם הגרש"ז אוירבאך סיפור מדהים, על ילד שנולד באיזה בית חולים בזמן מאוד גבולי בבין השמשות, וזה היה מקום עם הרבה קומות, והוא שאל באיזה קומה הוא נולד כדי לחשב בדיוק אם בקומה הזו עדיין ראו את השמש. -
@שואף אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
@davidnead אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
זה לא לגמרי נכון, בפרט בירושלים שהיא אזור הררי. קשה להיכנס לזה על במה זו, זה נידון ארוך ומורכב, זה תלוי באלו סוגים מזמני היום, באלו ושיטות הלכתיות, באלו מטרות ועוד.
ניתן לעיין בארוכה בכמה נידונים בזה בספר זמני הלכה למעשה של הרב מנת, והתכל'ס הוא שדי מוסכם על העוסקים בדבר שאי אפשר להתייחס לכל העיר כמקשה אחת, למרבית העניינים.מביאים מהחיד"א שיש לחשב לפי המקום הגבוה בעיר.. וכך עושה בלוח עיתים לבינה.
מצד שני שמעתי בשם הגרש"ז אוירבאך סיפור מדהים, על ילד שנולד באיזה בית חולים בזמן מאוד גבולי בבין השמשות, וזה היה מקום עם הרבה קומות, והוא שאל באיזה קומה הוא נולד כדי לחשב בדיוק אם בקומה הזו עדיין ראו את השמש.בלוח עתים לבינה לא עושה כך. הוא פועל על פי הרב מנת. כמובן הוא חייב לבחור מקום אחד בכל עיר כי לא מדפיסים לוח לכל רחוב, אז הוא עושה את זה בשיקול דעת מה יתן את המענה הסביר ביותר לאותה עיר.
וידוע לי ממנו מעשים שבכל יום שהוא נשאל ממורי הוראה וכדו' על סיפורים כגון שהבאת. (אולי לא על קומות... אבל בטח על מיקומים מדויקים) -
@davidnead מעניין מה שאתה כותב. לא בדקתי בשנים האחרונות, אבל לפני 13 שנה בוודאות ככה היה כתוב בסוף הלוח, וגם לפני כ5 שנים למדתי שוב עניינים אלו בכולל ובדקתי שוב וכמעט בטוח שראיתי את זה שם.
היה כתוב על קרית ספר שמודד לפי מגדל המים, ובבני ברק לפי פונוביז'.איידי דאייתינן להכי, אני מציין נקודה חשובה נוספת בחישוב הזמנים.
כידוע הזמן היחיד שאי אפשר לחשב בצורה אסטרונומית אחידה לכל העולם, זה הנץ הנראה (והשקיעה הנראית), שהם תלוים במבנה הטופוגרפי של האזור. יש כמה דעות האם לחשב את ההרים הסמוכים, אבל לכו"ע הרים רחוקים הם דבר שמעצב את הנץ הנראה.
רוב הלוחות או מסתמא כולם מסתמכים על רישומים אנושיים, אנשים שרשמו יום יום מתי רואים את השמש.
הרב ציקוני מנתיבות פיתח אפשרות לבנות מפה טופוגרפית על פי הרישומים האלה, וכך לדייק בתאריכים (זאת אומרת שרושמים שנה שלימה ואז מכניסים את התאריך והזמן של כל יום לתכנה, וזה מחשב מה ייצא שנה הבאה כאשר התאריך הלועזי חוזר על עצמו וכידוע יש הפרש של רבע יום משנה לשנה).מה שמעניין, זה שדרך מפות גוגל אפשר לדעת על כל נקודה מה הרום שלה, ולפי זה אפשר תיאורטית לבנות מפה טופוגרפית לכל נקודה על פני הגלובוס, בלי צורך ברישום אנושי.
לא ראיתי אף אחד שעשה את זה, ומן הסתם גם לא שייך להכין נוסחא שתגיד על פי זה מתי יהיה הנץ, אלא יהיה צריך לשחק עם השמש ולנסות שוב ושוב כמה פעמים למצוא את הזווית בה יהיה אפשר לראות את השמש, אבל זה אפשרי לכאורה.אני מקווה שהובנתי, ואחזור בקצרה על הרעיון.
הנץ הוא הזמן שהשמש עולה מעל האופק. אבל זה עדיין לא אומר שנראה את השמש כי זה מחושב לפי חשבון אסטרונומי, בהנחה שהאופק פתוח. אם יש הרים שמגביהים את האופק, יראו את השמש יותר מאוחר.
הרעיון הוא להשתמש ברישומים לוויניים שמאפשרים לדעת על כל נקודה מה הגובה שלה מעל פני הים, לקחת את האזימוט של השמש בזמן הנץ (זאת אומרת המקום שלה באופק, בניסן ותשרי זה אמצע המזרח, בקיץ יותר לכיוון צפון ובחורף יותר לכיוון דרום), ולצרף את נתוני הרום של המקום שבודקים בשבילו את הזמנים, ואת הרום של המקום המדויק של האופק שלו, ולבדוק מתי השמש יהיה מספיק גבוה כדי שיוכלו לראות אותו במקום הזה. -
@שואף אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
@davidnead מעניין מה שאתה כותב. לא בדקתי בשנים האחרונות, אבל לפני 13 שנה בוודאות ככה היה כתוב בסוף הלוח, וגם לפני כ5 שנים למדתי שוב עניינים אלו בכולל ובדקתי שוב וכמעט בטוח שראיתי את זה שם.
היה כתוב על קרית ספר שמודד לפי מגדל המים, ובבני ברק לפי פונוביז'.איידי דאייתינן להכי, אני מציין נקודה חשובה נוספת בחישוב הזמנים.
כידוע הזמן היחיד שאי אפשר לחשב בצורה אסטרונומית אחידה לכל העולם, זה הנץ הנראה (והשקיעה הנראית), שהם תלוים במבנה הטופוגרפי של האזור. יש כמה דעות האם לחשב את ההרים הסמוכים, אבל לכו"ע הרים רחוקים הם דבר שמעצב את הנץ הנראה.
רוב הלוחות או מסתמא כולם מסתמכים על רישומים אנושיים, אנשים שרשמו יום יום מתי רואים את השמש.
הרב ציקוני מנתיבות פיתח אפשרות לבנות מפה טופוגרפית על פי הרישומים האלה, וכך לדייק בתאריכים (זאת אומרת שרושמים שנה שלימה ואז מכניסים את התאריך והזמן של כל יום לתכנה, וזה מחשב מה ייצא שנה הבאה כאשר התאריך הלועזי חוזר על עצמו וכידוע יש הפרש של רבע יום משנה לשנה).מה שמעניין, זה שדרך מפות גוגל אפשר לדעת על כל נקודה מה הרום שלה, ולפי זה אפשר תיאורטית לבנות מפה טופוגרפית לכל נקודה על פני הגלובוס, בלי צורך ברישום אנושי.
לא ראיתי אף אחד שעשה את זה, ומן הסתם גם לא שייך להכין נוסחא שתגיד על פי זה מתי יהיה הנץ, אלא יהיה צריך לשחק עם השמש ולנסות שוב ושוב כמה פעמים למצוא את הזווית בה יהיה אפשר לראות את השמש, אבל זה אפשרי לכאורה.אני מקווה שהובנתי, ואחזור בקצרה על הרעיון.
הנץ הוא הזמן שהשמש עולה מעל האופק. אבל זה עדיין לא אומר שנראה את השמש כי זה מחושב לפי חשבון אסטרונומי, בהנחה שהאופק פתוח. אם יש הרים שמגביהים את האופק, יראו את השמש יותר מאוחר.
הרעיון הוא להשתמש ברישומים לוויניים שמאפשרים לדעת על כל נקודה מה הגובה שלה מעל פני הים, לקחת את האזימוט של השמש בזמן הנץ (זאת אומרת המקום שלה באופק, בניסן ותשרי זה אמצע המזרח, בקיץ יותר לכיוון צפון ובחורף יותר לכיוון דרום), ולצרף את נתוני הרום של המקום שבודקים בשבילו את הזמנים, ואת הרום של המקום המדויק של האופק שלו, ולבדוק מתי השמש יהיה מספיק גבוה כדי שיוכלו לראות אותו במקום הזה.זו כבר לגמרי סטיה מהנושא. נמתין שהמנהל יפצל.
יש 2 אנשים בעולם שעושים את זה:הרב חיים קלר מ"לוחות חי", והרב סופר מ"עתים לבינה" (חדש יחסית, בעבר השתמש בלוחות חי לצורך זה). הם לא משתמשים בשירות גוגל לענין זה, הן מפאת אמינותו, והן כי זה לא מעשי לבקש כך API על כל נקודה. מדובר באלוגריתם מורכב מאוד. ישנם שירותים (של נאס"א וכדו') שנותנים מפה טיפוגרפים של כל העולם שבה משתמשים. לוחות חי גם מחזיק מאגר מתקדם יותר ספציפית על ארץ ישראל. באתר שלו ניתן לראות גם איור של קו האופק בהתאם לקורדינטות שתבקש.
הרב ציקוני לא מבצע חישובים של הנץ הנראה.ההנחה שלך שאת שאר הזמנים אפשר לחשב בצורה אסטרונומית אחידה אינה מדויקת, ושורשה דומה לנידון לעיל על אחידות כל העיר. היות שישנם שיטות לגבי חישוב גובה העיר אם הוא על ההר, וזה תלוי גם בהרים ממול ועניינים טופוגרפיים נוספים, ובחלק מהזמנים מתחשבים בזה ובחלק לא, קשה לקבוע בזה נוסחה מתמטית ודורש שיקול דעת מתי להתחשב ובאיזה אזור, זה שיקול הלכתי. ולדוגמה בירושלים כנודע מתחשבים על פי המהרי"ל דיסקין בהרי מואב, לא רק לענייני הנץ הנראה.
אפשר אמנם לחשב אסטרונומית בלי להתייחס, אבל זה אחד ממעלותיו של לוח עתים לבינה שנותן יותר דיוק ויותר אמינות הלכתית על ידי שיקול דעת כזה בכל לוח לכל עיר ולא להסתמך על האסטרונומי בלבד. -
@davidnead אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
זו כבר לגמרי סטיה מהנושא. נמתין שהמנהל יפצל.
ראשית תודה על האכפתיות, בהחלט שמח לראות שמקפידים על זה.
שנית אשמח אם לא יצטרכו אותי לעשות פעולה כה פשוטה של פתיחת אשכול חדש ("הגב כנושא"). אמנם אי אפשר להזיז הודעות של אחרים, אבל מי שפותח נושא כם הוא השני עוצר את הסחף.
נקודתית פה אני לא חושב שכ"כ מדובר בסטיה כי חשוב ש@צדיק-תמים יקבל את התמונה המלאה, מה הכי מושלם אם ישנו בכלל, וממילא על מה להתפשר. -
@dovid אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
@davidnead אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
נקודתית פה אני לא חושב שכ"כ מדובר בסטיה כי חשוב ש@צדיק-תמים יקבל את התמונה המלאה, מה הכי מושלם אם ישנו בכלל, וממילא על מה להתפשר.בשביל לקבל את הכי מושלם הוא יצטרך לעבוד קשה, מומחים לדבר (כמו אלו שהוזכרו לעיל) עבדו על כך שנים רבות.
במקום זה הוא יכול לקבל את הדברים המוכנים והנפוצים, ונחלק את הנידון ל2:-
מהיכן לקבל את הקורדינטות
יש את גוגל הידוע, ואפשרויות נוספות שהוזכרו לעיל, כולל הספריה (שלא הכרתי) שמאפשרת לבחור בין השירותים. גוגל חינמי עד 28 אלף בקשות לחודש.
אם הוא רוצה פר-עיר ולא פר כתובת הוא יצטרך לקחת כנראה את הברירת מחדל שנותנים השירותים הללו, או לברר אצל מומחים את המומלץ לכל עיר. (אם איני טועה, יתכן שהרב מנת נותן בספרו טבלה כזו). -
מהיכן לקבל את זמני היום התואמים לקורדינטות
3 אפשרויות לפניו, שלושתם נפוצות מאוד:
- הספריה החינמית שהוא לקח. הכי נפוץ ברשת. מבדיקות שלי, במקרים קלאסיים (ללא מקומות מאתגרים ובלי להיכנס לנידונים הלכתיים מתקדמים כמו שהוזכרו כאן) יש לה דיוק טוב.
- API של הרב ציקוני (חזון שמים) בתשלום, יתן לו את כל המוכן אחר כל החשבונות וההתפלספויות, על פי השיטות שעל פיהם נוהג הרב ציקוני, וכנראה ניתן להתאמה אישית גם
- API של myZmanim, בתשלום, פחות ניתן להתאמה אישית. פחות מוכר כסמכות הלכתית - יש לה מעלה, שיש לה מאגר ערים גדול, וכך הוא יכול לבקש שם לפי עיר בלי להזדקק לגוגל או לבירור הקורדינטות
-
-
@davidnead אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
יש לה מעלה, שיש לה מאגר ערים גדול, וכך הוא יכול לבקש שם לפי עיר בלי להזדקק לגוגל או לבירור הקורדינטות
כמו שציינתי לעיל גם לapi של hebcal יש רשימה די מכובדת
הבעיה שאני לא רוצה להסתמך על הAPI שלהם. -
@צדיק-תמים אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
@davidnead אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
יש לה מעלה, שיש לה מאגר ערים גדול, וכך הוא יכול לבקש שם לפי עיר בלי להזדקק לגוגל או לבירור הקורדינטות
כמו שציינתי לעיל גם לapi של hebcal יש רשימה די מכובדת
הבעיה שאני לא רוצה להסתמך על הAPI שלהם.על מה אתה כן רוצה להסתמך? על פי מה הייתה רוצה לקבוע? הרב גוגל?
-
@davidnead כתבתי בפוסט הראשון... יש אפשרות בספריה עצמה, ולא להסתמך על הAPI שהם מספקים
אבל אז צריך לספק את המיקום הגיאוגרפי (=קווי רוחב/אורך), ועל זה באה שאלתי מהיכן להשיג נתונים אלו. -
@צדיק-תמים אמר במה הקוי אורך-רוחב לחישוב זמני היום?:
@davidnead כתבתי בפוסט הראשון... יש אפשרות בספריה עצמה, ולא להסתמך על הAPI שהם מספקים
אבל אז צריך לספק את המיקום הגיאוגרפי (=קווי רוחב/אורך), ועל זה באה שאלתי מהיכן להשיג נתונים אלו.לא הבנת אותי, אבל לא חשוב, הבנתי מה חסר לך, זה:
Hebcal.Location.lookup("Jerusalem")
מכאן:
https://github.com/hebcal/hebcal-es6/blob/main/src/location.jsחפש "classicCities0", לא הצלחתי ליצור קישור למילים. יש להם 60 ערים קלאסוית.
ובקוד עצמו:
וכדי שתהיה ברור בפעם הבאה: גם שימוש בפונקצית של הספריה נקרא API. אתה רוצה API של הספריה ולא API מקוון של האתר שלהם (שמתבסס על הספריה).
-
@צדיק-תמים אז מה אתה כן רוצה?
אתה רוצה רשימה מוכנה של מיקומים, לא תלויית API חיצוני, זה אני מבין.
לא איכפת לך מהיכן לקבל, או שאתה רוצה איזה שיקול הלכתי או אחר בהגדרת הרשימה?
סתם רשימתמיקומים אפשר למצוא בגוגל פשוט, למשל כאן:
https://simplemaps.com/data/world-cities
40 אלף. מספיק?שאלה חשובה נוספת, מהיכן מגיעה ה"בקשה" למיקומים? מי היוזר שמבקש עיר שעל פי בקשתו אתה צריך לספק פרטים?
כי יש סיכוי שהיוזר עצמו יכול לספק בחלק מהמקרים את הנתון הזה. (למשל, הדפדפן, ככל ויש חיישן מיקום ואישור גישה למיקום, או אפילו ללא מיקום - על פי IP - אבל תלוי API חיצוני, ככל שאתה רוצה מיקום נוכחי)