You are on page 1of 228

‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪-0-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫أسس الربجمة املكانية‬

‫بلغىت البايثون و ‪R‬‬


‫يف نظم املعلومات اجلغرافية‬

‫دكتورة ‪ /‬رشا صابر نوفل‬

‫مدرس مادة بكلية اآلداب املنوفية‬

‫مجيع احلقوق حمفوظة للمؤلف‬

‫ال يجوز نشر جزء من هذا الكتاب أو طباعته أو نقله‬

‫أو ترجمته بأي طريقة دون موافقة المؤلف الخطية‬

‫‪2021 / 2020‬‬

‫‪-1-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫بسم اهلل الرمحن الرحيم‬

‫وقل رب زدنى علما‬


‫(طه ‪) 114‬‬

‫صدق اهلل العظيم‬

‫‪-2-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫إهداء‬

‫إلى روح والدى أسكنه الله فسيح جناته‬

‫إلى أمى أطال الله فى عمرها‬

‫إلى مثلى األعلى األستاذ الدكتور جمعة داواد‬

‫إلى أبنائي أسماء وأدهم‬

‫‪-3-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫نبذة عن المؤلف‬

‫االسم‪ :‬رشا صابر نوفل‪.‬‬


‫تاريخ الميالد‪ 17 :‬نوفمبر ‪.1982‬‬
‫محل الميالد‪ :‬سرس الليان ـ محافظة المنوفية ـ‬
‫الحالة االجتماعية‪ :‬متزوجة ‪.‬‬
‫الوظيفة‪ :‬مدرس مادة بقسم الجغرافيا بكلية اآلداب جامعة المنوفية‪.‬‬
‫‪Rashanofal82@gmail.com :Email‬‬

‫المؤهالت العلمية ‪:‬‬

‫‪ 2002‬بتقــد ر مــاد جيــد مــق اليــة اآلداب ـ جامعــة‬ ‫فــب اآلداب مــق مســم الجغرافيــا شــط ة ـ ار‬ ‫درجــة الليســان‬ ‫‪-‬‬
‫المنوفية‪.‬‬
‫درجة الماجستير فب اآلداب ( جغرافيا ) بتقد ر ممتاز مق جامعة المنوفية ‪.2010‬‬ ‫‪-‬‬
‫درجــة الــداتو ار فــب اآلداب ( جغرافيــا ) بمرت ــة المــرل اصولــا مـ التوصــية بــالآل والنمــر مــق اليــة اآلداب جامعــة‬ ‫‪-‬‬
‫المنوفية ‪.2015‬‬
‫الدورات التدريبية ‪:‬‬

‫دورات فى الحاسب اآللى‪:‬‬

‫‪ ‬دورة ‪. ICDL‬‬
‫‪ ‬دورة ‪. ICTP‬‬
‫دورات فى نظم المعلومات الجغرافية واالستشعار عن بعد‪:‬‬

‫‪Fundamentals of Geographic Information Systems (Gis1). ‬‬


‫‪Advanced Geographic Information Systems (Gis2). ‬‬
‫‪Getting Started with GIS ( ForArc Gis 10) .‬‬ ‫‪‬‬
‫‪Basics of Geography Coordinate Sestems (for Arc GIS10.1).‬‬ ‫‪‬‬
‫‪Using Arc Map in Arc GIS Desktop 10 .‬‬ ‫‪‬‬
‫‪Editing in ArcGIS Desktop 10.‬‬ ‫‪‬‬
‫‪Arc GIS Data Interoperability Basics.‬‬ ‫‪‬‬
‫‪Creating and Sharing Locator Packages (for Arc GIS 10.1).‬‬ ‫‪‬‬
‫‪Field GIS : Collecting and Editing Data Using Arc Pad 10.‬‬ ‫‪‬‬
‫‪Fundamentals of Remote Sensing (Rs1) ‬‬

‫‪-4-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫خامس ًا‪ :‬المشاركات‪:‬‬

‫‪ ‬المماراة فا فامليات مؤتمر سيناء بيق الماضا والحاضر والمستقبل الل الفترة مق ‪ 2015/ 19-18‬بكلية اآلداب‬
‫جامعة المنوفية‪.‬‬
‫فا مصر برماية المنظمة الدولية للآليران المدنا الل الفترة ‪24-23‬‬ ‫‪ ‬المماراة فا فامليات أول مؤتمر للجيوماتك‬
‫ابريل ‪. 2017‬‬
‫‪ ‬المماراة بوحدة الجودة بالكلية ضمق فريقها التنفيذى بمطيار ( الهيكل التنظيما )‪.‬‬
‫‪ ‬المماراة فا تحكيم مسابقة أنتل للعلود والهندسة ‪ ISEF‬بإدارة منول التعليمية ‪2017‬د‪.‬‬
‫‪ ‬المماراة فا مسابقة أنتل للعلود والهندسة ‪ ISEF‬لجنة التحكيم ‪2018‬د‪.‬‬
‫‪ ‬المماراة فا مسابقة ال احث الصغير ملا مستوى محافظة المنوفية (إشرال بحثا) ماد ‪ 2019‬د‪.‬‬
‫‪ ‬المماراة فا مؤتمر المدن الذاية ‪ Smart City‬والتنمية المستدامة ماد ‪. 2019‬‬

‫‪ ‬المماراة فا المؤتمر الجغراف ا الدولا الثالث بكلية اصداب جامعة المنوفية " مراز ال حوث الجغرافية والكارتوج ارفية‬
‫‪.2020‬‬

‫اإلنتاج العلمى‪:‬‬

‫‪ ‬بحث بعنوان العالمات المكانية لجزيرة وراق الحضر والقاهرة الكبرى اإلصدار رمم ‪ 105‬لمهر ابريل ‪ 2016‬مق مجلة‬
‫بحوث الية اآلداب جامعة المنوفية ‪.‬‬

‫الحد ثة فا ال حث الجغرافا مقارنة بالآلرق التقليدية بالتآلبيق ملا الخصا ص‬ ‫‪ ‬بحث بعنوان استخداد تقنيات الجيوماتك‬
‫العمرانية بميا ة حسق مامر القماش" بمد نة شبيق الكود"(الدراسة الميدانية وتحليل البيانات) ‪2017‬د‪.‬‬
‫والهواتف الذاية لرصد المماكل البيئية بالتآلبيق ملا مد نة منول‪.‬‬ ‫‪ ‬بحث بعنوان استخداد تقنيات الجيوماتك‬
‫فب تقييم مستويات التلوث الضوضا ب بمد نة منول ؛ رشا صابر نوفل ؛ منا جابر‬ ‫‪ ‬بحث استخداد تقنيات الجيوماتك‬
‫؛ المؤتمر الدولا الثالث بكلية اصداب جامعة المنوفية‪.‬‬

‫كتب للمؤلف‬

‫‪ -1‬الرسم والتحليل ببرنامج )‪ ( (Arc GIS Desktop "10.3" Manual‬الجزء اصول)؛ ‪2017‬د‪.‬‬
‫‪ -2‬الرسم والتحليل ببرنامج )‪ ( (Arc GIS Desktop "10.3" Manual‬الجزء الثانا)؛ ‪2017‬د‪.‬‬
‫‪ -3‬استخداد تقنية نظم المعلومات الجغرافية والهواتف الذاية فا الدراسة الميدانية ‪Cloud Manual & Mobile Data GIS‬‬
‫‪ 2017Collection Manual‬د‬
‫‪ -4‬تحليل الصورة الفضا ية ببرنامج )"‪ (ENVI Classic 5" Manual‬الجزء اصول ‪2017‬د‪.‬‬
‫‪ -5‬السلسلة اصولا ‪ Arc Tool box‬صندوق أدوات التحليل المكانا ‪ Spatial Analyst Tools‬الجزء اصول؛ ‪2017‬د‪.‬‬
‫‪ -6‬دليل استخداد ‪2018 / 2017 ARCGIS PRO‬د‪.‬‬

‫‪-5-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ -7‬المر يات الفضا ية حكاية نهضة ملمية حد ثة ‪ 2018‬د‪.‬‬

‫‪ -8‬تحليل الم كات فا نظم المعلومات الجغرافية بالتآلبيق ببرنامج ‪Arc GIS‬إصدار ‪10.5‬؛ ‪. 2018‬‬

‫‪ -9‬نظم المعلومات الجغرافية "ممروع تآلبيقب" ؛ داتور محمد ربي مآلوش و داتورة رشا نوفل ‪.2019‬‬

‫‪ -10‬تقنية الليدار ثورة معلوماتية ‪.2019‬‬

‫‪ -11‬نظم المعلومات الجغرافية ملم حا ر بيق العلود ‪2020 /2019‬د‪.‬‬

‫‪ -12‬التحليالت المكانية التحليالت المكانية فب نظم المعلومات الجغرافية ؛تآلبيقات ملا برنامج ‪.Arc GIS‬‬

‫‪ -13‬تحليل الصورة الفضا ية ببرنامج )"‪ (ENVI Classic 5" Manual‬الجزء اصول ‪2017‬د‪.‬‬

‫‪ -14‬تحليل المر يات الفضا ية ببرنامج ‪ (ENVI‬تآلبيقات مملية ملا ‪ )ENVI 5.3‬الجزء الثانا ؛ ‪2020‬د‬

‫هذ الكتب متوفرة ملا ش كة اإلنترنت (الصفحة الرسمية للداتورة رشا نوفل)‬

‫د‪ /‬رشا نوفل @‪Dr.RashaNofal‬‬

‫‪#https://www.facebook.com/pg/Dr.RashaNofal/videos/?ref=page_internal.‬‬

‫‪-6-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تقديم‬

‫بسم هللا الرحمق الرحيم والصالة والسالد ملا أشرل الخلق سيدنا محمد صل هللا مليه وسلم أما بعد؛ جاء‬
‫هذا الكتاب تحت منوان أساسيات البرمجة المكانية بلغتا ال ا ثون والـ ‪ R‬؛ لما لهم مق أهمية فب إطار‬
‫التحليالت المكانية للبيانات الجغرافية بصفة مامة ونظم المعلومات الجغرافية بصفة اصة ؛ لذلك فكان‬
‫لزاما ملينا أن نلقا الضوء ملا مثل هذ الموضومات لت از د أهميتها واتساع مجتم مستخدما ومآلورى‬
‫برامج نظم المعلومات الجغرافية وماً بعد ود ‪.‬‬

‫أص حت البرمجة أمر أساسا فب حياتنا اليومية حتا ان اشتملت ملا اافة التخصصات ؛ اما تعتبر‬
‫البرمجة فب الومت الراهق هب الدرع الواما لمعظم العلود لما تقدمه مق حلول سريعة للمماكل التب تواجهها‬
‫؛ وبصورة موازية للبرمجة دور مظيم فب ملم الجغرافيا حيث مدمت العد د مق البرمجيات التب تسامد‬
‫الجغرافييق ملا القياد بمهامهم ‪.‬‬

‫الجد ر بالذار أن تعلم أي لغة برمجة مثلها مثل تعلم اللغات المختلفة اإلنجليزية والفرنسية إلخ ؛ فتحتاج‬
‫مننا معرفة اصساسيات والقوامد التب يجب ات امها حتا نصل إلا اإلتقان ؛ ولذلك جاء هذا الكتاب بأربعة‬
‫أبواب فب ‪ 24‬فصل تناول ال اب اصول أساسيات لغة ال ا ثون وذلك مق الل مرض لمعنا المتغيرات‬
‫؛العوامل ومفهود المروط والدوال وأشهر المكت ات ؛ ليأتا ال اب الثانا بتعلم لغة ال ا ثون فب بيئة نظم‬
‫المعلومات الجغرافية وذلك فب أربعة فصول وال اب الثالث أساسيات لغة الـ ‪ R‬ليراز ال اب الراب ملا‬
‫تحليل البيانات الجغرافية بلغة ‪ R‬مق حيث انماء ريآلة وتحليل البيانات سواء الـ ‪ Vector‬أو ‪.Raster‬‬

‫وهذا الكتاب يعتبر حجر اصساس فب تعلم لغة ال ا ثون والـ‪ R‬بصفة مامة وفا ‪ GIS‬بصفة اصة ‪.‬‬

‫د‪ /‬رشا نوفل‬

‫‪-7-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فهرس الموضوعات‬

‫رقم الصفحة‬ ‫املوضوع‬

‫‪11‬‬ ‫مقدمة مق أساسيات البرمجة‪.‬‬

‫‪15‬‬ ‫الباب األول‪ :‬أساسيات لغة البايثون‪:‬‬

‫‪16‬‬ ‫مقدمة‪.‬‬

‫‪24‬‬ ‫الفصل اصول‪ :‬المتغيرات ‪ Variables‬فب لغة ال ا ثون‪.‬‬

‫‪30‬‬ ‫الفصل الثانا‪ :‬العوامل‪ Operators‬فب لغة ال ا ثون‪.‬‬


‫‪36‬‬ ‫الفصل الثالث‪ :‬المروط ‪.Conditions‬‬
‫‪44‬‬ ‫الفصل الراب ‪ :‬الحلقات التك اررية فب با ثون‪.‬‬
‫‪56‬‬ ‫الفصل الخام ‪ :‬الدوال ‪ Functions‬فب لغة ال ا ثون‪.‬‬
‫‪64‬‬ ‫الفصل السادس‪Object Oriented Programming (oop):‬‬
‫‪73‬‬ ‫الفصل الساب المكت ات "‪" modules‬فب ال ا ثون‪.‬‬

‫‪79‬‬ ‫الباب الثانى ‪ :‬البايثون يف بيئة نظم املعلومات اجلغرافية‪:‬‬

‫‪80‬‬ ‫مقدمة‪.‬‬
‫‪82‬‬ ‫الفصل الثامق ‪ :‬مقدمة مق ال ا ثون فا برنامج ‪.Arc GIS‬‬
‫‪102‬‬ ‫الفصل التاس ‪ :‬المعالجة الجغرافية باستخداد لغة ال ا ثون ‪.‬‬
‫‪113‬‬ ‫الفصل العاشر ‪ :‬إنماء أداة جد دة بال ا ثون دا ل ‪ArcGIS‬‬

‫‪125‬‬ ‫الفصل الحادى ممر‪ :‬تحليل بيانات ‪Raster‬‬


‫باستخداد ال ا ثون فب بيئة ‪ARCGIS‬‬
‫الفصل الثانا ممر ‪ :‬إ راج الخريآلة بال ا ثون‬
‫‪132‬‬

‫‪-8-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪136‬‬ ‫الباب الثالث ‪ :‬أساسيات الربجمة يف لغة ‪:R‬‬

‫‪137‬‬ ‫مقدمة‪.‬‬

‫‪139‬‬ ‫الفصل الثالث ممر ‪ :‬مقدمة فب لغة ‪.R‬‬


‫‪150‬‬ ‫الفصل الراب ممر‪ :‬المتغيرات ‪ Variables‬فا لغة ‪. R‬‬
‫‪155‬‬ ‫ممر‪ :‬العوامل " ‪ " Operators‬فب لغة ‪.R‬‬ ‫الفصل الخام‬

‫‪159‬‬ ‫الفصل السادس ممر ‪:‬التحكم فب تدفق المعلومات ‪.Flow Control‬‬

‫‪167‬‬ ‫الفصل الساب ممر‪ Data Structure:‬هياكل البيانات‪.‬‬

‫‪173‬‬ ‫الفصل الثامق ممر‪:‬المصفوفات والقوا م فب لغة ‪."Matrix "R‬‬

‫‪180‬‬ ‫الفصل التاس ممر ‪ :‬العوامل ‪ Factors‬والدوال فب لغة ‪.R‬‬

‫‪190‬‬ ‫الباب الرابع ‪ :‬لغة ‪ R‬وحتليل البيانات يف‬


‫نظم املعلومات اجلغرافية‬
‫‪193‬‬ ‫الفصل العمرون ‪ :‬انتاج ريآلة بلغة ‪.R‬‬
‫‪203‬‬ ‫الفصل الواحد وممرون ‪:‬إضافة ط قات ملا الخريآلة‪.‬‬

‫‪208‬‬ ‫الفصل الثانا وممرون ‪:‬استيراد البيانات الجغرافية )‪.(shape file‬‬

‫‪213‬‬ ‫الفصل الثالث وممرون‪ :‬التحليالت المكانية ملا البيانات الجغرافية‬

‫‪217‬‬ ‫الفصل الراب وممرون ‪ :‬تحليل البيانات ‪Raster‬‬

‫‪224‬‬ ‫ما مة المراج والمصادر‪.‬‬

‫‪-9-‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫مقدمة‬

‫‪- 10 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫مقدمة‬

‫مقدمة عن أساسيات البرمجة ‪:‬‬

‫ان أجهزة الكمبيوتر مادرة ملا أداء مهاد معقدة للغاية ؛ لكق هذ القدرة غير فآلرية ؛ حيث‬
‫ال يمكق لجهاز الكمبيوتر القياد بوظيفية رياضية معقدة مق ذاته ‪.‬‬

‫اللغات الطبيعية مقابل لغات البرمجة ‪:‬‬

‫اللغة بصفة مامة ها وسيلة للتعبير مق اصفكار وتسجيلها ؛ وهناك لغات مق حولنا ال‬
‫تآللب التحدث مثل لغة الجسد فها مادرة ملا التعبير مق ممامرنا دون مول المة واحدة ‪.‬‬

‫ويستخدد اصشخاص مدد مق اللغات المختلفة والتا تتآلور ال ود حيث تظهر المات‬
‫جد دة وتختفا الكلمات القديمة وتسمى هذه اللغة باللغات الطبيعية ‪.‬‬

‫فأجهزة الكمبيوتر تحتاج إلا لغة وتسمى هذه اللغة بلغة اآللة وتعتبر هذ اللغة لغة بدا ية‬
‫فجمي أجهزة الكمبيوتر حتا المعقد منها للغاية مق الناحية التقنية تخلو مق الذااء ؛ فيمكق‬
‫وصف الكمبيوتر بالكلب المدرب تدريب مالا فهو يستجيب فق لألوامر ؛ وتسما ما مة‬
‫اصوامر بالـ ‪ IL‬أو ‪.ILS‬‬

‫مكونات اللغة ‪:‬‬

‫تتكون اللغة أيا اانت طبيطية أو آلة مق العناصر التالية ‪:‬‬

‫األبجدية‪ :‬وها مجمومة مق الرموز المستخدمة لبناء المات لغة معينة‪.‬‬

‫‪ : IEXLS‬وتعرل باسم القاموس وها مجمومة مق الكلمات تقدد اللغة لمستخدميها ‪.‬‬

‫‪ : SYNTAX‬مجمومة مق القوامد مكتوبة بمكل بد ها تستخدد لتحد د سلسلة معينة مق‬


‫الكلمات تمكل جملة صحيحة ‪.‬‬
‫‪- 11 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫دالالت ‪ :‬مجمومة مق القوامد التا تحدد ما إذا اانت ع ارات معينة منآلقية ؛ فمثال أكلت‬
‫التورت ع ارة منآلقية ؛ التورت أكلتنا ع ارة غير منآلقية‪.‬‬

‫أبجدية لغة اآللة (‪ : )IL‬ها مجمومة مق الرموز اصساسية التا يمكق استخدامها المآلاء‬
‫أوامر لجهاز امبيوتر ( اللغة اصد للكمبيوتر)‪ ( .‬صفر وواحد) ؛ فنحق نحتاج إلا لغة‬
‫ممتراة بيق أجهزة الكمبيوتر وال مر اجسر بيق العالمييق المختلفييق‪.‬‬

‫ولهذا السبب ظهر بعد ذلك لغة أكثر تعقيدًا مق لغة اآللة وأبس بكثير مق اللغة الآلبيطية‬
‫وتسما هذ اللغة ( لغات برمجة مالية المستوى) وتم ه الرموز الآلبيطية حيث تستخدد‬
‫الرموز والكلمات واإلتفاقيات التا يمكق أن يقرأها ال مر‪.‬‬

‫يآللق ملا البرنامج المكتوب بلغة برمجة مالية المستوى بـ " اود المصدر"‪.‬‬

‫برمجة الكمبيوتر هى عملية تكوين عناصر لغة البرمجة وال بد من توافر مجموعة من‬
‫الشروط منها ‪-:‬‬

‫أبجدي ًا‪ :‬يحتاج إلا اتابته بخ معرول‪.‬‬

‫معجم ًا ‪ :‬لكل لغة برمجة لها ماموسها وتحتاج إلا اتقانها ‪.‬‬

‫نحوياً‪ :‬لها موامد محددة‪.‬‬

‫داللة ‪ :‬فالبرنامج يجب أن يكون له معنا ‪.‬‬

‫ولسوء الحظ مد يخآلاء المبرمج ويقود بارتكاب أ آلاء فا القوامد السابقة فيكون البرنامج‬
‫مديم الفا دة؛ ولكق السؤال الذى يآلرح نفسه اآلن هو أنه مند االنتهاء مق تنفيذ البرنامج‬
‫بنجاح ايف نجعل جهاز الكمبيوتر يقود بتنفيذ هذا البرنامج ؟‬

‫‪- 12 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫إذن ال بد مق التحويل إلا لغة اآللة ؛ وتسما مملية التحويل هذ بالترجمة ؛مق الممكق أن‬
‫تتم مملية الترجمة إلا لغة اآللة مق طريق جهاز الكمبيوتر مما يجعل اصمر سهل إلا حد‬
‫ما‪.‬‬

‫طرق التحويل من لغة برمجة عالية المصدر إلى لغة اآللة ‪-:‬‬

‫التحويل البرمجى ‪ :‬حيث تم ترجمة البرنامج المصدر مرة واحدة وبذلك تم تكرار هذا‬
‫اإلجراء فا ال مرة نقود فيها بالتعد ل ملا التعليمات البرمجية‪.‬‬

‫ترجمة ‪ :‬حيث تم ترجمة البرنامج فا ال مرة تم تمغيله ؛ ويآللق ملا البرنامج الذى‬
‫يقود بهذا اصداء " مترجماً" حيث يفسر المفرة فا ال مرة يعتزد فيها تمغيل البرنامج‪.‬‬

‫إذن ماذا يفعل المترجم فعليا؟‬

‫تم وض برنامج الكمبيوتر فا ملفات نصية " م مراماة أنها يجب أن تكون الية مق‬
‫الز ارل واصلون والصور " ويتم استدماء المترجم والسماح له بقراءة ذلك الملف " ملف‬
‫المصدر" فيق أر المترجم شفرة المصدر مق االملا إلا اصسفل ومق اليسار إلا اليميق‬
‫ويتحقق المترجم مق جمي ا صسآلر مق حيث الجوانب اصرب السابق ذارها " أبجديا –‬
‫معجما – نحويا – دالليا "‪.‬‬

‫فإذا وجد المترجم آلأ فينها ممله ملا الفور ويعآلا رسالة آلأ م ذار سبب الخآلأ ؛‬
‫ومد تكون هذ الرسالة غير صحيحة حيث ال يستآلي المترجم معرفة نوايا المستخدد‬
‫بالظ ‪.‬‬

‫‪- 13 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫المترجم نوعيين‪:‬‬

‫‪ :Interpreter‬حيث تم إد ال الكود اليه ويخرجه فا صورة يفهمها الجهاز " الـ ‪out put‬‬
‫؛ يحدد الخآلأ ومكانه بمجرد الحصول ملب آلأ تومف حتب اصالح الخآلأ ؛ اما يحدث‬
‫فا ال ا ثون ‪.‬‬

‫‪ :Compiler‬يأ ذ الكود ويحوله إلا ‪ Opject code‬ثم إلا ‪ Executor‬ثم المخرج‬


‫النها ا ؛ هذا المترجم يقود بإظهار الخآلأ ويكمل مملية الترجمة ؛ ويظهر الخآلأ مجم ؛‬
‫وهذا يحدث فا ‪.C#‬‬

‫‪- 14 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الباب األول‬

‫أساسيات لغة البايثون‬

‫‪- 15 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الباب األول‪ :‬أساسيات لغة البايثون‬

‫مقدمة‪.‬‬

‫ال ا ثون مثلها مثل أى لغة برمجة أ رى ‪ C‬و ‪ C++‬و ‪ C#‬؛ها لغة مالية المستوى‬
‫ومستخدمة ملا نآلاق واس ‪.‬‬

‫أ ترمها ‪ Guido Van Rossum‬؛ وسميت ملا إسم مسلسل اوميدى تلفزيونا مديم لهيئة‬
‫‪ " MONTY‬اإلذامة البريآلانية " يسما ‪ Python,s Flying Circus‬؛ واان اول إصدار‬
‫لها ماد ‪1989‬؛ وتستخدد ال ا ثون لتحليل البيانات ووض حلول لمماكل العلود المختلفة ‪.‬‬

‫مميزات لغة البايثون ‪:‬‬

‫‪ -‬مق المميزات المثيرة أنه مق ماد بهذ اللغة شخص واحد ؛ حيث انه مق الغالب أن تم‬
‫إنماء لغات البرمجة مق طريق شراات ‪.‬‬
‫موة لغة المنافسيق الر يسيق ‪.‬‬ ‫لغة سهلة وبد هية وبنف‬ ‫‪-‬‬
‫‪ -‬مفتوحة المصدر حيث يمكق صى شخص المساهمة فا تآلويرها‪.‬‬
‫‪ -‬رموزها مفهومة فها مثل اإلنجليزية العادية لذلك فها لغة سهلة القراءة ؛ باإلضافة إلا أنها‬
‫لغة معبرة‪.‬‬
‫‪ -‬مناس ة للمهاد اليومية ‪.‬‬
‫‪ -‬مق السهل تعلمها حتا لغير المبرمجيق ملا الل اللغات اص رى ومق السهل تدريسها‪.‬‬
‫‪ -‬مق السهل الحصول مليها واذلك الحصول ملا مكت اتها‪.‬‬
‫‪ -‬لغة مثالية لحل المماكل العددية والتحليلية ‪.‬‬
‫؛ ماك إلخ‪.‬‬ ‫‪ -‬متاحة لمعظم انظمة التمغيل " ويندوز ؛ لينك‬
‫‪ -‬يمكنها التفامل م الغات أ رى ‪.‬‬
‫‪ -‬التعامل م اص آلاء سهلة فا ال ا ثون‪.‬‬

‫‪- 16 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫يمكق إضافة مكت ات إليها فها مابلة للتمد د ؛ فا حيق أن اللغات اص رى تقييد‬ ‫‪-‬‬
‫المستخدميق فها تحتوى ملا مدد محدود مق الخوارزميات ‪.‬‬
‫‪ -‬مجتم با ثون نمو بسرمة ابيرة ؛ حيث أص حت تستخدد فا العد د مق المجاالت ‪.‬‬
‫‪ -‬لغة ال ا ثون ذات مستوى مالا فالكود الخاص بها أش ه بالـ ‪ pseudo code‬بسيودو‬
‫كود ؛ فالمبرمج يعبر مق أفكار بعدد مليل مق التعليمات البرمجية ومد تكون مقروءة ؛ ففا‬
‫اللغات اص رى نحتاج إلا ممريق سآلر أما فا ال ا ثون يمكق فا سآلر واحد ‪.‬‬
‫‪ -‬تحتوى ملا العد د مق المكت ات تدمم الحوس ة العالمية " ‪N Net work , Wep‬‬
‫‪.Server , games , …..‬‬
‫تحتوى ملا مجمومة متنومة مق بيئات التآلوير المتكاملة القوية والتفاملية ( ‪ )IDEl‬مثل‬ ‫‪-‬‬
‫‪. IPython , notebooks , pycharm , spyder‬‬

‫فيما تستخدم البايثون ؟‬

‫‪wep‬‬ ‫ويب "‬ ‫لغة ال ا ثون متعددة االست خداد ؛ فيمكق استخدامها لعمل موام‬
‫‪ "Development‬؛ ولعمل اصلعاب ‪ .)PyGame ( Games‬و تستخدد فا ‪Hacking‬‬
‫؛ للتعامل م ملود البيانات " ‪ Mjachine Learning‬؛ الذااء االصآلناما ‪ AI‬وجم‬
‫البيانات وممل ‪. Roobts‬‬

‫أمثلة التطبيقات التى تم انجازها بالبايثون‪:‬‬

‫‪ Disqus – instagram- Dropbox-‬ولعمل تصاميم ثالثية‬ ‫‪Uber -Spotify‬‬


‫اصبعاد مثل ‪ Maya‬و ‪ Blender‬؛ برامج ‪ Arc GIS‬؛ برامج ال‪ " GIMP‬مناف‬
‫للفوتوشوب"‪.‬‬

‫بعد الشركات المستخدمة للبايثون‪:‬‬

‫تستخدد شراة جوجل وناسا وفيسبوك لغة ال ا ثون‪.‬‬

‫‪- 17 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫من هم منافسين البايثون؟‬

‫‪practical Extracting and‬‬ ‫‪reporting‬‬ ‫‪ -‬لغة برمجية ‪ perl‬وها أ تصار لـ‬


‫‪ language‬مق تأليف الرى وول ماد ‪.1987‬‬
‫‪ -‬لغة ‪ Ruby‬روبا وها لغة برمجة نصية مق تأليف وايهير ‪. 1995‬‬

‫البايثون فى الحوسبة العلمية ‪:Scientific Coputing‬‬

‫أيضا‬ ‫فال ا ثون تجم بيق ملود الكمبيوتر واالحصاء لحل المماكل العالمية ويستآلي‬
‫المهندس والآلبيب استخداد ال ا ثون إليجاد حلول للمماكل ؛ فال ا ثون تسامدنا ملا حل‬
‫المماكل فب العلود ذاتها ‪.‬‬

‫تطبيقات لألجهزة المحمولة ‪:‬‬

‫‪ : Cython‬الكا ثون وها لغة برمجة تستخدد الـ ‪ C++‬م ال ا ثون‪.‬‬

‫‪. Jython‬الجا ثون وها اندماج لغة جافا م ال ا ثون‪.‬‬

‫‪ : Py Py‬وها ال ا ثون دا ل ال ا ثون‪.‬‬

‫ملحوظة "امتداد ملف ال ا ثون (‪.")PY‬‬

‫بدء العمل مع البايثون ‪-:‬‬

‫تحميل وتثبيت البايثون‬

‫تم تثبيتها مق الل الد ول إلا الموم الرسما لل ا ثون ‪/https://www.python.org/‬‬

‫‪- 18 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫أ تار ‪ Download Python 3.8.5‬لتنزيل ا ر إصدار أو أ تيار النسخة التب تتوافق‬


‫متآلل اتها م إمكانيات جهازى ‪.‬‬

‫بعد ذلك تم التثبيت ملا الجهاز‪.‬‬

‫البرامج المستخدمة لكتابة أكواد البايثون‪: Python Editor‬‬

‫‪ : Python IDLE‬تم إضافته م ال ا ثون تلقا ا ‪.‬‬

‫‪ : Py charm‬أنماء صيصا لل ا ثون‪ .‬وهو إصدارييق ‪ Professional‬يمكق تحميله‬


‫للآلالب بإيميل تعليما ؛ و ‪ Community‬وهو مجانا مدى الحياة ويمكق اإلمتماد مليه ‪.‬‬

‫‪ :Eclipse‬وها بيئة تآلوير متكاملة تم تأسيسها مق ال مآلور أكلبي‬

‫‪ : Aptana‬مؤسسها بول اولتون ‪. 2005‬‬

‫‪ : Visual studio‬مق شراة مايكروسوفت ومعظم المستخدميق يعتمدوا مليه‪.‬‬

‫‪- 19 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فائدة استخدام هذه البرامج ‪:‬‬

‫‪ -‬دمم ‪ Auto Complete‬أى توم باما السآلر مند اتابته ‪.‬‬


‫‪ -‬يعمل تظليل للكود مما يسهل ملا المستخدد‪.‬‬

‫وفا البداية يفضل استخداد ‪ Python IDLE‬لتتعلم ايفية اتابة اصكواد بآلريقة صحيحة‬
‫فهو ال دمم ‪ Auto Complete‬؛ وفيما بعد فا المراحل المتقدمة يمكق استخداد واجهات‬
‫هذ البرامج ومق أفضلها ‪ Py charm‬أو ‪.Visual studio‬‬

‫العمل فى بيئة ‪:pc Charm‬‬

‫‪ pc Charm‬هو محرر برمجا ‪ IDE‬بنا صيصًا لمبرمجا لغة ال ا ثون ويتميز بالعد د‬
‫مق المزايا التا تجعل البرمجة أسهل ؛هناك نسختيق مق البرنامج اما سبق وأن ذارنا " تم‬
‫تحميل نسخة المجتم "‬

‫تحميل البرنامج‪:‬‬

‫تم تحميل البرنامج مق موم‬

‫‪https://www.jetbrains.com/pycharm/download‬‬

‫‪- 20 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫؛ ونفتح البرنامج بعد تثبيته ملا الجهاز لتظهر نافذة البرنامج ملا النحو التالا ‪:‬‬

‫نفتح ملف جد د وذلك مق طريق الذهاب إلا ‪ Scripts‬فا يسار الماشة ؛ اليك يميق‬
‫وإ تيار ‪ new‬ثم ‪python file‬‬

‫‪- 21 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تظهر نافذة حفظ الملف ؛ نسما الملف ونختار ‪OK‬‬

‫للبدء فا العمل ؛ بمجرد الكتابة ملا البرنامج نجد أن هناك امتراحات وهذا لتسهيل اتابة‬
‫اصكواد ؛فلكتابة ‪ hello python‬؛ نكتب "‪ print " hello python‬؛ الحظ النافذة التالية‬

‫‪- 22 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ولتمغيل اصكواد مق ‪Run‬‬

‫بأسفل الماشة‬ ‫فيآل‬

‫‪- 23 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل األول‪ :‬املتغريات ‪ Variables‬يف لغة البايثون‬

‫مقدمة‪.‬‬

‫أى تآلبيق برمجا ع ارة مق أكواد؛ والبيانات الخاصة بالتآلبيق؛ فعلا سبيل المثال لدى‬
‫تآلبيق تعامل م الجامعة ؛ فالجامعة ع ارة مق طالب وأساتذة وموظفيق(هذ ها البيانات‬
‫) ؛ واصكواد ها التا تقود بعملية إدارة هذ البيانات والتعامل معها ‪.‬‬

‫أنواع البيانات‪:‬‬

‫اصرماد ‪.Numbers‬‬

‫النصوص ‪.String‬‬

‫الـ ‪. pool‬‬

‫هذ البيانات تم تخزينها فا ذاكرة الكمبيوتر؛ ويتم استخداد مجمومة مق المتغيرات لالشارة‬
‫إلا موم هذ البيانات ؛ وهذا ال يعنا ان المتغيرات تحتوى ملا البيانات؛ بل ها تمير‬
‫فق ملا مكان البيانات دا ل الذاكرة ‪.‬‬

‫‪" Variables‬المتغيرات"‪:‬‬

‫تم حجزها فب الذاكرة لتخزيق البيانات اما سبق وأشرنا ؛‬ ‫المتغيرات هب مجرد أماكق فق‬
‫والمتغير هو اسم يمير إلا قيمة متغيرة مثل ‪ x = 5‬؛ ويتكون المتغير فا لغات البرمجة‬
‫مق جز يق ‪ Name‬االسم و ‪ Value‬القيمة ؛ ويمكق أن نض لالسم أى قيمة ولكق ال بد‬
‫مق مراماة ما لا مند ا تيار اسم للمتغير ‪- :‬‬

‫‪ -‬يمكق استخداد الحرول الكبيرة أو الصغيرة "كابتيل أو ‪."small‬‬

‫‪ -‬ال يمكق أن بدأ االسم برمم‪.‬‬


‫‪- 24 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ -‬يمكق استخداد _ ‪. underscore‬‬

‫‪ -‬ال يمكق استخداد الكلمات المحجوزة للغة ‪.‬‬

‫الكلمات المحجوزة للغة هى ‪ 23‬كلمة ‪:‬‬

‫‪– assert – None – yield – return – not – in - as – continue – False‬‬


‫‪break- del – finally – - True – try – or – is – global – except – def‬‬
‫‪if- lambada – pass- while- and- class- elif- for- import – nonlocal‬‬
‫‪– raise – with.‬‬

‫وهذ الكلمات لسنا مآلالبيق بحفظها الن ال ا ثون يعرفها وبالتالا رفض اتابتها ؛ فعند‬
‫كتابة أى المة مق الكلمات المحظورة تم تلويق الكلمة بلون مختلف ومند اتابة الكود‬
‫بآلريقة اطئة يعآلا لنا رسالة ‪. SyntaxError‬‬

‫فعند تعريف متغير مثل ‪ x‬ال بد مق اسناد قيمة له مثل‬

‫‪X=5‬‬

‫؛ ‪. y= 3‬‬ ‫الجملة مثل ( ‪ ) x,y = 5,3‬تعنا ان‪x = 5‬‬ ‫ويمكق تعريف متغييريق بنف‬

‫أو ‪ a=b=c=1‬فالثالث متغيرات لهم قيمة واحدة وها ‪.1‬‬


‫‪- 25 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫أنواع المتغيرات‪:‬‬

‫هناك أنواع متعددة مق المتغيرات هب‪:‬‬

‫‪ -1‬المتغيرات الرقمية (‪:(Numbers‬‬

‫وها إما أمداد صحيحة ‪ Integer‬مثل (‪ ( x=5‬أو أرماد ممرية ‪(x=5.3 )Float‬أو‬
‫‪ complex‬أرماد مرا ة) ‪ (y= 4j‬وتستخدد مق مبل المهندسيق فب الغالب الجراء ممليات‬
‫حسابية معقدة ؛ ويتم وض حرل ‪ j‬أو ‪ J‬بعد الرمم م اشرة لنعرل مترجم ال ا ثون أن الرمم‬
‫مادى ‪.‬‬ ‫مراب ولي‬

‫‪ -2‬النصوص ( ‪: )strings‬‬

‫أو دبل اولون‬ ‫هب نوع مق أنواع المتغيرات والت تم اتابتها بيق سينجل اولون ‘ ؛‬
‫أو تربل اولون """ ‪ """...‬وتستخدد السيجنل والدبل اولق لكتابة اود مق‬ ‫"‬ ‫"‪..........‬‬
‫سآلر واحد بينما تستخدد """ العالمات اص رى لكتابة اود مق مجمومة أسآلر؛ والنصوص‬

‫‪- 26 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ال تعبر فق مق اتابة اصحرل فب لغات البرمجة فأى شبء مكتوب دا ل الكول ق تحسب‬
‫ملا أنها متغير مق نوع ‪ string‬حتا لو اانت أرماد؛ اما موضح بالنافذة التالية؛‬

‫ملحوظة‪ :‬تم معرفة نوع المتغير مق الل )(‪.type‬‬

‫‪ -3‬المتغيرات المنطقية "‪: " Booleans‬‬

‫تستخدد هذ المتغيرات لوض شروط منآلقية أو معرفة ما اذا تم تنفيذ أمر معيق بنجاح أو‬
‫ال وهذ المتغيرات فق إما صح أو آلأ ؛ مثل السؤال بهل ؟ فله قيمتيق فق ‪ True‬إما‬
‫‪ False‬؟‪.‬‬

‫‪ -4‬المتغير من نوع ‪: List‬‬

‫حيث تم تخزيق البيانات فب مصفوفة حجمها غير ثابت ويمكق تخزيق قيم صنواع مختلفة‬
‫الومت ويتم اتابة المتغير مق نوع ‪ list‬دا ل [ ]؛ وذلك ملا النحو الموضح دا ل‬ ‫فب نف‬
‫نافذة ال ا ثون‬

‫‪- 27 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ -5‬المتغير من نوع ‪: Tuple‬‬

‫وهو ع ارة مق مصفوفة حجمها ثابت وقيمها غير مابلة للتغيير وتستخدد اصمواس ( )‬
‫لتمثيل هذا النوع مق المتغير دا ل ال ا ثون ؛‬

‫ملحوظة تم استخداد الدالة ‪ len‬لمعرفة طول مناصر المتغير " مدد القيم "‪.‬‬

‫‪ -6‬المتغير من نوع ‪: set‬‬

‫حيث تم تخزيق البيانات فب مصفوفة دا ل اصمواس } { ويمكق أن تحتوى ملا أنواع‬


‫مختلفة مق القيم " أرماد م نصوص" ؛ وفا هذا النوع تم تخزيق البيانات بمكل‬
‫بترتيب اد الهم صنه ال تم إمآلاء رمم ‪ index‬لكل منصر ؛‬ ‫مموا ا ولي‬

‫‪- 28 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ -7‬المتغيرات من نوع ‪:Dictionary‬‬

‫حيث تم وض القيم بيق } { ؛ حيث تختلف مق ‪ list‬و ‪ Tuple‬فب أنهم تعاملون‬


‫م قيمهم مق الل أرماد ‪ indices‬؛ بينما فب الـقاموس تم تم التعامل مق الل‬
‫مفاتيح‪ key‬؛ الصة القول أن ‪ Dictionary‬ع ارة مق تخزيق البيانات فب جداول‬
‫بآلريقة المفاتيح ‪ keys‬والقيم ‪.values‬‬

‫‪ : Print‬وظيفتها ط امة أى المة ملا الماشة ؛وما نريد ط امته يكتب بيق اصمواس ؛‬
‫فمثال تم اتابة ) ‪ print ( type‬فيتم ط امة نوع المتغير ‪.‬‬

‫لكتابة سآلريق فا سآلر واحد ‪.‬‬ ‫;‬ ‫ملحوظة ‪ :‬يمكق استخداد‬

‫‪- 29 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الثانى‪ :‬العوامل‪ Operators‬يف لغة البايثون‬

‫مقدمة‪.‬‬

‫العامل يعنا رمز له معنا محدد ؛ وجد فا ال ا ثون ‪ 7‬معامالت ‪) arithmetic ,‬‬
‫)‪Compraison , logical , Bitwise , Assignment , Membership , Identiry‬؛‬
‫وفيما لا تم شرح أشهر هذ المعامالت انتما ًار‪:‬‬

‫‪: Arithmatic operator -‬‬


‫‪ +‬والضرب * والقسمة ‪ /‬و اصس ** و ‪Floor‬‬ ‫اصة بالآلرح ‪ -‬والجم‬ ‫وها‬
‫الا مق الكسور"‬ ‫‪ " // division‬تستخدد إل راج مدد صحيح مق القسمة " مدد‬
‫؛‪ % modul‬ال راج الناتج المت قا مق القسمة‪.‬‬

‫مثال‬

‫‪: Comparison operator‬‬ ‫‪-‬‬


‫لعمل مقارنات وتممل ؛ = = ؛ > و = > و < و < = و != ‪.‬‬

‫= = معناها هل ؛ مثل ‪ x == 5‬؛ هل قيمة ‪ x‬بتساوى ‪ 5‬؛ اإلجابة إما ‪ True‬أو ‪False‬‬
‫ففا المثال مند اتابة ‪ x==5‬يعآلا ‪ True‬و ‪ x = = 4‬يعآلا ‪. False‬‬
‫‪- 30 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫=! تعنب ال تساوى (هل قيمة ‪ x‬ال تساوى قيمة ‪)y‬‬

‫‪: Assignment operators‬‬ ‫‪-‬‬


‫وها أن أمآلا قيمة لمتغير بناء ملا المعامالت وها‪:‬‬
‫مثال ‪ x=y‬ومعناها أن قيمة ‪ x‬فب قيمة ‪.y‬‬ ‫=‬
‫=‪ +‬مثال ‪ x+=y‬و معناها اضف قيمة ‪ x‬ملا قيمة ‪ y‬و زن الناتج فب ‪.x‬‬
‫= ‪ -‬مثال ‪ x-=y‬ومعناها أطرح قيمة ‪ x‬مق قيمة ‪ y‬و زن الناتج فب ‪.x‬‬
‫=* مثال ‪ x*=y‬ومعناها أضرب قيمة ‪ x‬فا قيمة ‪ y‬و زن الناتج فب ‪.x‬‬
‫=** مثال ‪ x**=y‬ومعناها ضامف قيمة ‪ x‬بقيمة ‪ y‬و زن الناتج فب ‪.x‬‬
‫=‪ /‬مثال ‪ x/=y‬ومعناها أمسم قيمة ‪ x‬ملا قيمة ‪ y‬و زن الناتج فب ‪.x‬‬
‫=‪ //‬مثال ‪ x//=y‬ومعناها امسم قيمة ‪ x‬ملا قيمة ‪ y‬وأرج أمرب مدد صحيح للناتج‪.‬‬
‫=‪ %‬مثال ‪ x%=y‬ومعناها أمسم قيمة ‪ x‬ملا قيمة ‪ y‬و زن أ ر رمم مت قا مق مملية‬
‫القسمة فب ‪.x‬‬

‫‪- 31 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫العوامل المنطقية ‪ Boolean Operators:‬أو ‪Logical Operators‬‬

‫بوك ؛‬ ‫يستخدد شرط صمريق مثل اسم المستخدد والمة المرور مثال للد ول فا الفي‬

‫‪ : And‬مثل ‪ if name == "ahmed" and age == 25‬معناها ال بد مق تحقيق‬


‫المرطيق وهما ان االسم أحمد والعمر ‪.25‬‬

‫‪ if name == "ahmed" or name ==ali : Or‬تحقيق شرط واحد فق ‪.‬‬

‫‪: Not‬يستخدد لتنفيذ اود معيق إذا لم تحقق أي شرط تم وضعه‪.‬‬

‫‪- 32 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تطبيق ‪:‬‬

‫افتح ‪ new file‬من ‪ file‬واكتب فا النافذة‬

‫"‪user name = "ahmed‬‬

‫"‪password = "12345‬‬

‫‪if user name == "ahmed" and password =="12345" :‬‬

‫)"‪print ("login succe" 'welcom ahmed‬‬

‫احفظ الكود ؛ ثم مق النافذة وا تار ‪ Run‬ومنها ‪Run Module‬‬

‫لو اتبت آلأ بالكود يظهر رسالة وجود آلأ م تهمير الخآلأ باللون اصحمر‬

‫‪- 33 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫أ تار ‪ok‬‬ ‫تم تصحيح الخآلأ وإمادة ‪ Run‬؛ تظهر الرسالة التالية‬

‫فيكتب الرسالة على النحو الموضح أدناه‬

‫تنفيذ ‪ or‬؛‬

‫‪if username == "ali" or password =="12345":‬‬

‫) " ‪print("login succe" 'welcom ali‬‬

‫‪- 34 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فهنا المطلوب لو تحقق شرط واحد اطبع ‪login succe welcom ali‬‬

‫تطبيق ‪:not‬‬

‫‪false‬‬ ‫المثال التالا يعنا انه إذا اانت قيمة ‪ x‬ال تساوى ‪ 20‬فاط‬

‫‪ Operator Precedence‬أولويات المعامالت ‪:‬‬

‫ليه اصس ** ثم‬ ‫إذا وجدت معادلة ال بد مق حل ما فا اصمواس فا البداية ( )‬


‫‪ +‬ثم الآلرح ‪. -‬‬ ‫الضرب * و القسمة ‪ /‬والجم‬

‫)‪) 4+2**2)/ 2 + (4*3 + 6/2‬‬ ‫مثال‬

‫= )‪)4+4) / 2 + (12 + 3‬‬

‫= ‪)8) / 2 + 15‬‬

‫= ‪. 19 = 4 + 15‬‬
‫‪- 35 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الثالث‪ :‬الشروط ‪Conditions‬‬

‫الشرط هو وض ميود محددة لتنفيذ الكود؛ فلو المرط صحيح تم تنفيذ الكود؛ ولو المرط‬
‫آلأ لم تم تنفيذ ؛ وتستخدد المروط لتحد د طريقة ممل البرنامج؛ ويمكق استخداد العد د‬
‫‪IF X==S:‬‬ ‫مق المروط دا ل البرنامج الواحد؛ مثال ‪ X = 5‬وسألنا با ثون‬

‫الحظ اتابة = = فا المرط فلو اتبنا = واحدة يعآلا آلأ‪.‬‬

‫و ال بد أيضا مق وض نقآلتيق‪ :‬نهاية المرط وتعنا ان الجملة فا السآلر التالا تكملة لما‬
‫بالسآلر الذى فومه وتلقا يا تترك مسافة للسآلر‬ ‫فومها أى نرب أن )" ‪ Print ( "x=5‬ترت‬
‫الثانا‪.‬‬

‫الحظ أيضًا وض ‪ x = 5‬بيق "" فالناتج هيكون اتابة‬

‫‪ X =5‬؛ ولكق لو لم تم اتابتها دا ل " " مالمات امت اس وتكتب (‪ print (X‬فيآل‬
‫القيمة فق " ‪ " 5‬م مراماة ممل ‪ enter‬مرتيق‪.‬‬

‫‪- 36 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الشروط ثالثة هما‪:‬‬

‫‪: IF‬وتعنا إذا اان المرط صحيح فنفذ هذا الكود‪.‬‬

‫‪ :Elif‬وإذا اان هذا المرط صحيح نفذ هذا الكود‪.‬‬

‫‪ :Else‬وتعنا إذا لم تحقق أي شرط فنفذ هذا الكود‪.‬‬

‫تطبيق (‪:) IF …….Else‬‬

‫معناها إذا اان المرط صحيح نفذ الكود ؛ وإذا اان المرط آلأ نفذ اود أ ر؛ مثال‬

‫‪X=5‬‬

‫‪IF X > 6:‬‬

‫)" ‪Print (" x is bigger than 6‬‬

‫‪Else:‬‬

‫)" ‪Print ( " x is smaller than 6‬‬

‫‪- 37 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تطبيق ‪2‬‬

‫تم اتابة الكود صحيح فينفذ الجملة ويكتب ‪login succe welcom ahmed‬‬

‫بينما إذا تم اتابة الكود آلأ اكتابة اسم المستخدد آلأ أو ال اسورد‬

‫تم كتابة ‪ Ali‬فى الكود‬

‫اال تيار الثانا الخاص ب ‪else‬‬ ‫فيآل‬

‫‪- 38 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪: IF……Elif‬‬

‫تعآلا ا تيارات مثل ‪ else‬لكق الفرق بينهما أن ‪ Elif‬يكتب بجوارها شرط بينما‬
‫‪ else‬اانت بدون شرط ‪.‬‬

‫مثال أكتب الكود التالى‬

‫ان ‪x= 200‬‬ ‫أممل ‪ Run‬للكود هيآل‬

‫يجب مراماة أنه فا هذ الحالة يآلبق الكود بمجرد وجود المرط الصحيح وال يقود بإكمال‬
‫آلأ فال وجد نتيجة ولكق إذا‬ ‫مراءة اصسآلر التا تليه ؛ وإذا تم وض جمي اصكواد‬
‫ما القيمة بجوار ‪. else‬‬ ‫وضعت ‪ else‬اما موضح ؛ فمعنا أنه لو االكواد آلأ أط‬

‫‪- 39 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الناتج ‪:‬‬

‫‪ IF : Nested if‬داخل ‪IF‬‬

‫مثال ‪:‬‬

‫هذه تسمى ‪ Nested if‬وال‬


‫يتم تحقيقها إال إذا كان‬
‫الشرط صحيح ‪x == 200‬‬

‫‪- 40 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وبعد ‪ Run‬يكتب‬

‫‪: Single if‬‬

‫تعنب وض جملة ‪ if‬فا سآلر واحد للت سي‬

‫وإذا وضعت ‪ else‬فى الجملة وتسما ‪true condtion false‬‬

‫‪y = 10‬‬ ‫مثال‬

‫الجملة ملا‬ ‫‪ print ("y=10") if y==10 else print (y (.‬معناها لو الكود صحيح إط‬
‫ما ملا اليسار ‪.‬‬ ‫اليميق ولو آلأ أط‬

‫‪. y = 10‬‬ ‫فيآل‬

‫‪- 41 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫استخدام ‪ All‬و ‪any‬‬

‫مثال ‪ :‬استخداد ‪ All‬تعنا أن جمي القيم صحيحية ففا المثال ال القيم صحيحة‬

‫‪all done‬‬ ‫وبالتالا يآل‬

‫المثال نجعل بعض القيم صحيحة وبعضها غير صحيح‬ ‫وفى حالة ‪ any‬؛ فا نف‬

‫‪- 42 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫إذن فا ‪ any‬مندما يكون بعض المروط صحيحة حتا لو شرط واحد فق ملا اصمل ‪.‬‬

‫‪ != -‬معناها ال تساوى ‪.‬‬


‫‪ -‬وض ‪ not‬مبل الجملة ال يساوى ‪.‬‬

‫كتابة التعليقات ‪: Comments‬‬

‫تكتب التعليقات لوصف العمليات التا تقود بعملها ؛ تم اتابة التعليق بحيث يس قه مالمة‬
‫اود برمجا ؛‬ ‫‪ #‬؛ هذا الكود مجرد وصف ولي‬

‫فقد يكون ع ارة مق معلومات مق الملف ؛ تاريخ انماء الملف وسبب انما ه ؛ ويمكق‬
‫كتابته فا سآلر منفصل ويمكق اتابته بجانب الكود البرمجا ‪.‬‬

‫ويمكق ممل اومنت للكود البرمجا لتوقيف تمغيله فا الومت الحالا ؛ فعمل تعليق ومف‬
‫ممل ‪.run‬‬

‫‪- 43 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الرابع‪ :‬احللقات التكرارية يف بايثون‬

‫‪ :LOOPS‬التكرار أو الحلقات التك اررية فا لغة البرمجة تعنا تجمي ممليات مكررة فا‬
‫ال لو لد نا‬
‫الكود مدة مرات ؛ فمث ً‬ ‫وظيفة واحدة ؛ أي أن الحلقات تستخدد لعدد تكرار نف‬
‫بيانات العمالء بالمراة فبدل مق الد ول ملا‬ ‫شراة بها ‪ 1000‬مميل ومحتاجة أط‬
‫اصلف مميل لآل امة بياناتهم تم ممل ‪ Loops‬لجمي العمالء ؛ و ‪ Loops‬أربع أنواع‬
‫هما ‪:‬‬

‫‪While Loop‬‬

‫‪Infint Loop‬‬

‫‪For Loop‬‬

‫‪Nested Loop‬‬

‫‪ " : While Loop‬طالما أو بينما" وتستخدد هذ الحلقة لتنفيذ الكود مدة مرات غير‬
‫محدودة ويتومف تنفيذ الكود إذا تحقق شرط ما ‪.‬‬

‫‪ While expression :‬أى طالما المرط الموجود ‪.......‬‬ ‫مثال‬

‫)‪ Statement (s‬نفذ الجملة ‪...........‬‬

‫‪X=1‬‬

‫‪While x < 10 :‬‬

‫)‪Print (x‬‬

‫‪ X += 1‬وضيف ‪1‬‬

‫‪- 44 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫القيم ‪:‬‬ ‫ممل ‪ Run‬هيآل‬

‫الن ‪ x‬أمل مق ‪ 10‬؛ وأيضا يضيف ‪ 1‬ملا قيمة ‪. x‬‬

‫‪ : Infint Loop‬تعنا ممل ‪ Loop‬ال نتها ؛ ‪ Loop‬دا ما يعمل مدى الحياة ؛‬


‫ويستخدد فا ‪ Gaming‬و ‪ GUI‬و ‪ " Network‬أى برنامج له واجهة ويستخدد إذا لم وجد‬
‫له ‪ Infint Loop‬يفتح البرنامج ويقفل فا ثوانا ؛ولكق لظهور البرنامج دا ما ملا الماشة‬
‫ال بد مق وجود ‪ Infint Loop‬والتا تظل دا ما ترسم واجهة البرنامج ملا الماشة ‪.‬‬

‫مثال ‪ :‬نفس المثال السابق ولكن دون كتابة ‪X += 1‬‬

‫‪- 45 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الناتج أنه يكتب ‪ 1‬إلا ما ال نهاية حتا تفصل أو تضغ ملا ‪ ctrl c‬فيتم ايقال الآل امة‪.‬‬

‫استخدام ‪ Else‬مع ‪: While‬‬

‫مثلها مثل استخدامها فا ‪ IF‬حيث يعآلا ا تيارات أكثر ؛ ولكق تختلف مق ‪ else‬فا‬
‫‪ if‬فا أنه إذا تحقق المرط يكمل مراءة الكود والتآلبيق مليه ملا الل ‪ " IF‬مجرد تحقيق‬
‫المرط ال ذهب لما تحته مق أسآلر "‬

‫مثال ‪:‬‬

‫‪- 46 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ x‬م إضافة قيمة ‪ 1‬مليه ال مرة ؛‬ ‫ففا المثال يعنا أنه طالما الـ ‪ x‬أصغر مق ‪ 10‬أط‬
‫‪. x >= 10‬والناتج اما موضح بالماشة التالية‪:‬‬ ‫أو ‪ else‬أط‬

‫ويمكق اتابة الكود الخاص بالـ ‪ While‬فا سآلر واحد مثل ‪Single While : if‬‬
‫‪ Statement‬؛ وهذا أيضًا للت سي فق وتصغير الكود بدال مق اتابته فا أسآلر اثيرة ؛‬
‫تستخدد للفصل بيق سآلريق‬ ‫‪ :‬صن‬ ‫ونالحظ فا نهاية السآلر نض ; سيما اولق ولي‬
‫لهم مالمة ب عضهم ال عض‪.‬‬ ‫لي‬

‫‪- 47 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ : Nested While‬تعنب ‪ While‬دا ل ‪While‬‬

‫مثال ‪:‬‬

‫قيمتيق متوازييق ؛ طالما ‪ x‬أمل مق ‪ " 5‬وها قيم ( ‪ )o , 1 , 2 , 3 , 4‬فتنفذ‬ ‫نجد ط‬


‫الكود ؛ وطالما ‪ y‬أمل مق ‪ ( 3‬أى القيم ‪ ) 0 , 1 , 2‬ففا اللفة اصولا يكون ‪ 0 = x‬؛ ‪Y‬‬
‫= صفر ؛ وبإضافة ‪ 1‬إلا قيمة ‪ ( Y‬السآلر السادس) ‪ Y += 1‬يكون قيمة ‪ Y‬فا اللفة‬
‫الثانية ‪ 1‬بينما قا الصفر اما هو ويكرر زيادة الـ ‪ Y‬قيمة حتا يص ح ‪ " 2‬وها ما زالت‬
‫أمل مق ‪ 3‬فيكون ‪ X‬بصفر و ‪ 2 Y‬؛ وفا اللفة الثالثة يكون قيمة ‪ 3 Y‬وفا هذ الحالة ال‬
‫نآلبق المرط ( ‪ ) Y < 3‬؛ فينتقل ملا السآلر التالا ‪ X += 1‬ويزيد مق قيمة ‪ X‬؛‬
‫فتص ح قيمة ‪ X‬بواحد و ‪ Y‬بصفر ؛ وتلف ثالث دورات " التكرار"‬

‫‪- 48 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫أى أنه تم تنفيذ ‪ Loop‬الخارجا ‪ 5‬مرات ؛ وال ‪ Loop‬الدا لا ( ‪ ) 5 * 3‬أى ‪ 15‬مرة‪.‬‬

‫‪: For Loop‬‬

‫مثلها مثل ‪ While‬ولكق لكل منهما استخدامات ؛ ‪ For Loop‬تعنى لكل " يعنا لكل جزء‬
‫مق ال مم بتنفيذ الكود‪.‬‬

‫‪ enter‬ثم ‪ enter‬؛ فيتم‬ ‫لا حرل ؛ اضغ‬ ‫مثال ‪ :‬لكل حرل مق حرول با ثون أط‬
‫ط امة حرول الكلمة ‪:‬‬

‫‪j‬‬

‫والسؤال اصن هل ال ا ثون تفهم أن ‪ Letter‬تعنا حرل ؟‬

‫اإلجابة أكيد ال ؛ بل ال ا ثون تعامل ‪ For‬بمعنا جزء مق الكل ؛ وإذا تم اتابة أى شاء‬
‫مكان ‪ Letter‬؛ سول تم ط امة أجزاء المة ال ا ثون " حروفها" ؛ ففا المثال التالا تم‬
‫استبدال ‪ letter‬بكلمة ‪ Ali‬؛‬

‫‪- 49 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫نالحظ أنه فا حالة ‪ While‬ال بد وأن يكون المتغير يساوى قيمة ؛ بينما فا ‪ For‬ال يمترط‬
‫أن يساوى قيمة ‪.‬‬

‫‪ : Nested For‬تعنا ‪ for‬بدا لها ‪ for‬أ رى‬

‫مثال ‪:‬‬

‫المة ‪ 6 ali‬مرات ( وها مدد حرول المة‬ ‫فا هذا المثال مند ممل ‪ Run‬؛ يآل‬
‫با ثون)؛‬

‫تنفيذ ‪ Range‬مع ‪:for‬‬


‫‪- 50 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تعتبر الـ ‪ Range‬دالة" وسيتم شرح الدوال فب الفصل التالب"‬

‫مثال ‪ range (2o) :‬معناها اصرماد ما بيق صفر إلا ‪. 19‬‬

‫)‪ Print ( range 20‬؛ والستخراج القيم دا ل دالة ‪ Range‬يفضل استخداد ‪.list‬‬

‫وفا هذا المثال يعآلا لنا القيم بيق ‪ 5‬و ‪:20‬‬

‫والمثال التالا يعآلا لنا القيم مق ‪ 5‬إلا ‪ 20‬؛ ولكق زود ال رمميق يعنا ‪– 9 – 7 – 5‬‬
‫‪ 15 – 13 – 11‬؛ وذلك بسبب وض القيمة ‪ 2‬فا نهاية دالة ‪.range‬‬

‫‪- 51 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ : Control Staments‬التحكم فى تنفيذ ‪ Loop‬الخاص بي ‪:‬‬

‫هناك ثالث عبارات يمكنهم التحم فى ‪ Loop‬وهما‬


‫‪Pass - Continue - Break‬‬

‫‪ : Break Stament -‬تأتى عندما أريد انهاء ‪ Loop‬؛‬


‫مثال‪:‬‬

‫فيطبع ‪ Current letter‬والحرف ؛ حتى يأتى حرف ‪ h‬فيكسر الكود ‪ Break‬وينهى‬


‫العمل ويخرج من ‪ Loop‬ولكن يظل موجود داخل البرنامج‪.‬‬

‫مثال ‪ 2‬باستخداد ‪: While‬‬

‫‪: Continue Statments‬‬

‫‪- 52 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫مق تنفيذ المرط‬ ‫تعنا إذا تحقق المرط استمر فا العمل ؛ وفا هذ الحالة تومف فق‬
‫اللفة الموجود فيها ؛ ففا المثال الخاص بآل امة المة با ثون إذا اان‬ ‫الموجود فا نف‬
‫جمي حرول الكلمة مامدا حرل‬ ‫المرط هو ‪ if letter = h‬؛ ‪ Continue‬؛ تعنا أن تآل‬
‫‪.h‬‬

‫؛ ولكق وجودها ال يحدث أى تغيير فا‬ ‫‪ : Pass Statment‬تستخدد ص ذ مكان فق‬


‫ط امة الكود ‪.‬‬

‫مثال ‪:‬‬

‫فنالحظ مند الحرل ‪ h‬يكتب ‪ This is pass block‬؛ ويكمل ط امة‪.‬‬

‫‪- 53 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫مثال تطبيقى ‪ :‬المطلوب عمل هذا البرنامج‬

‫نكتب اصكواد ملا النحو التالا‬

‫الكود ملا النحو التالا ‪:‬‬ ‫ونقود بعمل ‪ Run‬تآل‬

‫‪- 54 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫نالحظ أنه ال يقود بعمل مسافة بيق اصرماد ؛ فيمكق تنفيذها بوض "‪"\t‬‬

‫)‪.)Print ( i , "\t" , square‬‬

‫‪- 55 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل اخلامس‪ :‬الدوال ‪ Functions‬يف لغة البايثون‬

‫الدالة يمكق تعريفها با تصار أنها مجمومة أكواد منظمة لتنفيذ وظيفة محددة؛‬

‫فالدالة ها ما تقود به اصلة الحاس ة مند حساب مجموع اصرماد مثال‪.‬‬

‫‪ -‬لتعريف أى دالة ال بد مق اتابة ‪ def‬إ تصار ‪" defention‬تعريف"‪.‬‬

‫‪ -‬ليها ‪function name‬؛ لو دالة جم نسميها ‪ sum‬إلخ‪.‬‬

‫‪ )Parameters) -‬وها االرماد المستخدمة‪.‬‬

‫‪ Return: -‬السترجاع النتيجة بعد إجراء العملية مليها ‪.‬‬

‫مثال‪:‬‬

‫‪ -1‬دالة تستخدد لآل امة االسم فق‬

‫‪ -2‬دالة للجم بيق رمميق‬

‫‪- 56 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫والستخدامها للجم بيق أكثر مق رمم؛ يكتب بدل الرمم متغيرات ملا النحو التالا ‪:‬‬

‫‪ :Function Arguments‬وهى أربعة أنواع‬

‫‪ Requierd arguments:‬مآللوب للدالة الستخدامه‪.‬‬

‫‪ : Keyword arguments -‬تعنا مند استدما ه للدالة ال بد مق استخدامه بالترتيب ‪.‬‬

‫‪ : Default arguments -‬لتعريف رمم محدد تم ط امته ال مرة ‪.‬‬

‫‪ : Variable – lengeth arguments‬مثل دوال اصلة الحاس ة ‪.‬‬

‫‪ : Anonymous Functions‬الدالة المجهولة ؛ ها دالة تم تعريفها بآلريقة مجهولة‬


‫ولها استخدامات مد دة منها ؛ ‪ Lambda‬؛ فها تقود بعمل وظا ف مهمة جدا فا‬
‫ال ا ثون‪.‬‬

‫‪- 57 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪: Return Statment‬‬

‫‪ Return‬تعود بقيمة دا ل الـ ‪ Functions‬؛ وال تآل عها لكق تم الرجوع إليها الستخدامها‬
‫أو إضافة متغير مليها ‪.‬‬

‫الفرق بين ‪ Global‬و ‪: Local‬‬

‫‪ Local‬تعنى داخل إطار محدد " حيث يكون التعامل مع القيم داخل الدالة فقط ‪.‬‬

‫‪ : Global‬وضعها دا ل الكود يعآلا لنا انآل اع أن التعامل يكون ارج نآلاق الدالة ‪.‬‬

‫أنواع البيانات "‪:" Data Types‬‬

‫سبق وأن ذارنا أن المتغير يمير إلا مكان وجود البيانات ووضحنا أنواع المتغيرات ؛ والتب‬
‫أنواع‬ ‫يعبر وجودها مق نوع البيانات التب تحويها ؛ ولذلك فانواع البيانات هب نف‬
‫المتغيرات ويمكق ذارها وايفية التعامل معها دا ل لغة ال ا ثون ملا النحو التالا‪:‬‬

‫‪ : Python Strings -1‬يعنا أى شاء بيق سنجل اولق أو دبل اولق " " أو تلربل‬
‫كولق """ """ ؛ ويسما ‪ Strings‬النه تم وض أى شاء دا له سواء متغير أو قيمة ‪.‬‬

‫مثال‪:‬‬

‫من ‪ 2‬إلى‬
‫النهاية‬

‫‪- 58 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫يمكق استخداد الضرب والجم دا ل ‪ Strings‬واالهما يعنا التكرار‪.‬‬

‫تنسيق ‪:Format Strings‬‬

‫مثال توضيحا‪:‬‬

‫مثال( ‪:)2‬‬

‫‪ : Raw string‬مالمات \ أو \\ ( المسارات ) دا ل ال ا ثون‬

‫تطبيق‪:‬‬

‫إال \ واحدة ؛ فلآل امة \\‬ ‫نالحظ أنه فا السآلر الثانا مق ‪ Print‬وضعت \\ ولكنه لم يآل‬
‫ال بد مق وض ‪ r‬مبل الكود ؛ اما موضح فا الماشة التالية ‪:‬‬

‫‪- 59 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪: Built – in String Methods‬هى األشياء الجاهزة فى اللغة مثل ‪:‬‬

‫)( ‪ : Capitalize‬وها التا تجعل أول حرل مق الكلمة اابتل‪.‬‬

‫)(‪ : Lower‬لجعل ال الحرول ‪. small‬‬

‫)(‪ : Upper‬لجعل ال الحرول اابتل ‪.‬‬

‫)(‪ : Isspace‬لمعرفة هل وجد مسافة أد ال؛ واالجابة ‪ true‬أو ‪.false‬‬

‫)(‪ : Islower‬لمعرفة هل هو ‪ small‬وال الء ؛ فاالجابة ‪ true‬أو ‪.false‬‬

‫)(‪ : Issupper‬لمعرفة هل الكلمة اابتل وال الء ؛ واالجابة أيضا بـ ‪ true‬أو ‪.false‬‬

‫)(‪ : Center‬تستخدد للتمفير ؛ وتستخدد لوض المة فا المنتصف ‪.‬‬

‫)(‪ : Count‬تق أر ‪ String‬مق البداية للنهاية لتحدد هل متغير ما موجود أد ال ؛ ويمكق‬


‫تحد د نقآلة البداية والنهاية التا ت حث فيها ‪.‬‬

‫)(‪ : Endswith‬لل حث هل الـ ‪ String‬نتها بكلمة ما أد ال ‪.‬‬

‫)(‪ : Find‬لل حث مق شاء معيق وتحد د مكانها ؛ وها تحدد اول حرل تجد ؛ ولم‬
‫تستمر فا ال حث ‪.‬‬

‫)(‪ : Index‬مثل ‪ Find‬ولكق إذا لم تجد قيمة ال حث أو المة ال حث تكتب لنا ‪not‬‬
‫‪.found‬‬

‫)(‪ : Istitle‬هل أول حرل مق ال المة اابتل ‪.‬‬

‫‪- 60 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫)(‪ : Replace‬تغيير المة مكان المة أو قيمة مكان قيمة ؛ مثل الموجودة فا الوورد‪.‬‬

‫)(‪ : Split‬للفصل بيق القيم ‪.‬‬

‫‪:Python Lists -2‬‬

‫الـ ‪ Lists‬ها وض ‪ data type‬بيق القوسييق [ ] ‪.‬‬

‫" ‪ " Updating List‬نكتب القيمة المراد تحد ثها ملا‬ ‫لو محتاج أحدث قيمة مق‪list‬‬
‫النحو التالا‬

‫القيمة الجد دة = [ ] ‪list‬‬

‫ولكق لو محتاج امسح ‪: Delet list Elements‬‬

‫المراد مسحها‬ ‫[ ] ‪ Del list‬ونض االندا‬

‫‪: Built – in list Methods‬‬

‫)(‪ : Len‬تعآلا لنا طول السآلر " مدد القيم المستخدمة "‪.‬‬

‫)(‪ : Index‬لل حث مق ‪......‬موجود أد ال ومكانها ‪.‬‬

‫)(‪ : Insert‬تأ ذ ‪ Argement 2‬واحد لمكانها والثانا للقيمة‪.‬‬

‫)(‪ : Appent‬تم إضافة القيمة فا أ ر السآلر تلقا ب لكق ‪ Insert‬التا تم تحد د مكان‬
‫اد ال القيمة ‪.‬‬

‫)(‪ : Count‬ااد مدد تكرار اصشياء أو القيم أو المتغيرات‪.‬‬

‫وتمسح حيث تم ط امة القيمة أو المتغير ومسحها مق الكود؛ فلو ممنا‬ ‫)(‪ : Pop‬تآل‬
‫بعمل ‪ Print‬نجد أن قيمة ‪ Pop‬تم مسحها ‪.‬‬
‫‪- 61 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫)(‪ : Reverse‬تستخدد لتبد ل أماكق المتغيرات ‪.‬‬

‫)(‪ : Remove‬تمسح القيمة مهما اان مكانها ‪.‬‬

‫)(‪ : Math with list‬تستخدد للجم بيق أكثر مق ‪.List‬‬

‫‪: Python Tuple -3‬‬

‫تم ه ‪ List‬ولكق اال تالل فا اصمواس فالـ ‪) ) Tuple‬؛ ولعمل تحد ث للداتا فا ‪Tuple‬‬
‫يكون اصمر صعب ؛ فهو ال يسمح بالتحد ث ؛ ولكق يمكق التعد ل مق الل الجم فق‬
‫؛ ويمكق التحا ل ملا با ثون بتحويل ‪ Tuple‬إلا ‪ List‬ثم إجراء تعد الت مليها ثم تحويلها‬
‫مرة أ رى ‪.‬‬

‫‪: Delet Tuple Element‬المسح يكون للكل ؛ النه ال يمكق التعد ل وباتالا ال يمكق‬
‫مسح قيم مق دا ل الكومق‪.‬‬

‫‪ : Slicing‬لعمل تقآلي للـ ‪. Tuple‬‬

‫‪: Built – in Tuple Functions‬‬

‫)(‪ : Len‬طول السآلر أو مدد القيم‪.‬‬

‫)(‪ : Max () – Min‬اصمصا واصدنا ‪.‬‬

‫)(‪ : List () – Tuple‬التحويل مق وإلا ‪.‬‬

‫‪:Dictionary -4‬‬

‫‪ :‬ويأ ذ موس‬ ‫تكون القيمة الواحدة مق قيمتيق ‪ Key‬و ‪ Value‬يفصل بينهما الكومق‬
‫المجمومة } { ‪.‬‬

‫‪- 62 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ : Updating Dictionary‬يمكق ممل تحد ثوتعد ل مثلها مثل ‪.list‬‬

‫‪: Delete Dictionary‬‬

‫["‪ : del Dict ] "name‬يمسح القيمة المكتوبة ( االسم والقيمة) ‪.‬‬

‫‪ : dict clear‬يمسح القاموس اله ويص ح فارغ ‪.‬‬

‫عند كتابة القاموس ال بد من مراعاة اآلتى ‪:‬‬

‫‪ Key‬مرتيق ‪.‬‬ ‫‪ -‬ال يمكق استخداد نف‬

‫‪ -‬ال بد وأن تكون ‪ " umutable Key‬غير مابلة للتعد ل "فال يمكق أن تكون ‪. lest‬‬

‫‪: Built – in Dictionary Methods‬‬

‫)(‪ : Clear‬لمسح ال العناصر بالقاموس‪.‬‬

‫)(‪ :Copy‬لعمل نسخة مق القاموس‪.‬‬

‫)(‪ : From Keys‬النماء ماموس موجود فا ‪ Keys‬فق ‪.‬‬

‫)(‪ : Get‬الرجاع القيمة مق طريق ‪.Key‬‬

‫)(‪ : Items‬الرجاع ما مة مق القاموس ‪.‬‬

‫)(‪ : Keys‬الرجاع ‪ Key‬فق ‪.‬‬

‫)(‪ :Setdefault‬الرجاع القيم ‪.‬‬

‫)(‪ : Update‬اضافة ماموس الا ماموس أ ر؛ يعمل تحد ث مق ماموس لقاموس أ ر‪.‬‬

‫)(‪ : Values‬الرجاع القيم ‪.‬‬


‫‪- 63 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل السادس‪:‬‬

‫)‪Object Oriented Programming (oop‬‬

‫‪ -‬اتآلورت ماد‪1960‬؛ واانت تآلبق ملا لغة تسما ‪Small talk‬؛ الفكرة منها ها طريقة‬
‫فا اتابة وتنظيم الكود ‪.‬‬

‫‪ -‬تستخدد )‪ (oop‬صنها تكون أسهل اثير فا االستخداد اصة فا الممرومات الكبيرة ؛‬


‫واصكواد بها تكون أسهل فا الفهم ‪.‬‬

‫‪ -‬سهل التعامل م اصكواد ‪.‬‬

‫تقوم ( ‪ ) OOP‬على ثالث مفاهيم رئيسة هى ‪:‬‬

‫‪" E ncapsulation -1‬التغليف" ‪.‬‬

‫‪ " Inheritance -2‬الوراثة "‪.‬‬

‫‪ " Polymorphism -3‬تعدد اصشكال " ‪.‬‬

‫‪: Object‬‬

‫كل شاء فا ال ا ثون ع ارة مق ‪ Object‬وله نوع محدد ؛ و ‪ Object‬هو نسخة‬


‫‪ Copy‬مق ‪ class‬الخاصة بنا ‪.‬‬

‫حيث أن المبرمجيق أثناء تنفيذهم للغة تخيلوا أن المستخدد يمكنه التعامل م أنواع متعددة‬
‫مق البيانات ؛ ومد سبق الحد ث مق أنواع البيانات فقد تكون رمم صيح ( ‪( integer‬‬
‫وتختصر بـ ‪ int‬أو رمم ممري أو ‪float‬؛ والحرول م االرماد ( ‪ ) String‬وتختصر ‪str‬؛‬
‫والبيانات التا تكون اجابتها بصح أو آلأ ( ‪ )Boolean‬وا تصارها ‪ bool‬؛ ولو البيانات‬

‫‪- 64 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ع ارة مق مجمومة قيم تسما ‪ list‬ونوع أ رى يسما ‪ tuple‬وها أيضا مجمومة قيم ولكق‬
‫تختلف مق ‪ list‬حيث ال يمكق التعد ل مليها‪.‬‬

‫وال نوع مق هذ اصنواع له صا ص ؛ ويستخدد صغراض معينة ؛ وهناك العالمات التا‬


‫تمكننا معرفة نوع البيانات المستخدمة فا الكود ‪.‬‬

‫‪ -‬فالرمم الصحيح والرمم العمري مق السهل التعرل مليهم ‪.‬‬

‫‪ -‬أى قيم بيق سنجل اود ‚ ‚ أو دبل اود فها " " ‪.str‬‬

‫‪ -‬أى قيم بيق ] ] تكون ‪. list‬‬

‫‪ -‬وأى قيم بيق ( ) تكون ‪ tuple‬وبيق } { تكون ‪.dictionary‬‬

‫ولتعدد هذ البيانات تم ممل حقي ة لتحوى هذ البيانات وتسمب ‪ class‬؛ وأص ح هناك ما‬
‫يسمب بال ‪ class int‬لالرماد الصحيحة و‪. class str‬‬

‫وسبق أن ذارنا أيضا ان لكل نوع مجمومة مق ‪ " Built – in‬الدوال التا يمكق تآلبيقها‬
‫مليها ‪.‬‬

‫فكل هذ الـ‪ Built – in‬موجودة دا ل ‪. class‬‬

‫‪: Classes‬سبق وأن وضحنا أن ‪ Class‬بمنتها ال ساطة ع ارة مق حاوية أو حقي ة تم‬
‫فيها جم الدوال والقيم الخاصة بالبيانات أيا اان نومها ‪.‬‬

‫وال حقي ة ال بد وأن تتناسب م البيانات التا تحويها ؛ ويمكن الشرح بمثال هناك شراة‬
‫سيارات تقود بعمل تصميم للسيارة التا تنتجها وهذا التصميم تم تآلبيقه با تالل اصلوان‬
‫ويمكق تآلوير أيضًا ؛ فالتصميم اصساسا للسيارة هو الـ ‪ class‬؛ والسيارات المختلفة‬
‫المنتجة مق هذا التصميم تسما ‪ Object‬؛ فهناك ‪ Object1‬و ‪ Object 2‬إلخ‪.‬‬

‫‪- 65 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫كيفية انشاء ‪ Class‬داخل البايثون‪:‬‬

‫‪ Class‬ونكتب االسم ثم الكود ‪.‬‬

‫النماء ‪ Class‬نفتح صفحة جد دة ونكت ه ملا النحو التالا ‪:‬‬

‫نحدد اسم ‪ class‬والخصا ص المآللوبة لتآلبيقه‬

‫وبعد ذلك يمكق نسخ هذا الـ ‪ class‬؛ ( ممل ‪ )obgect‬ويمكق توضيح فكرة ذلك بفتح‬
‫‪ IDEL Sell‬واتابة الـ‪ class‬ملا النحو الموضح أدنا ؛ وبمجرد اتابة ‪ S.color‬يآل‬
‫اللون "أحمر" اللون الذى تم إنماؤ دا ل ‪ class‬اما يمكق تغير اللون أو تغير أى‬
‫الـ ‪.Class‬‬ ‫صا ص موجودة النتاج العد د مق ‪ object‬المختلفة لنف‬

‫‪- 66 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪: Methods and Attributes‬‬

‫فا ‪ class‬ولذلك تسما‬ ‫‪ Methods‬ها دوال مثلها مثل أى دوال لكنها بتوض‬
‫‪ Methods‬؛ وأى ‪ Method‬يعتبر ‪ Attribute‬؛ ولكق ‪ Attribute‬ال يعتبر‪ Method‬الن‬
‫‪ Method‬يكون فيها فعل ‪ action‬مثل فتح ال اب ؛ زيادة اإلضاءة و الـ ‪ Attribute‬لي‬
‫بها فعل فها مجرد اصية ‪.‬‬

‫‪ Attrabute‬وتعرل أيضا بالـ ‪ probertes‬ها مجرد قيمة أو اصية توض للـ ‪object‬‬
‫أو النسخة الخاصة بب ‪.‬‬

‫أى ‪ object‬له ‪ " Method‬أي ‪ " action‬و ‪ " Attribute‬اللون المكل ‪."...‬‬

‫مالحظة‪ :‬مند استخداد الـ‪ Method‬ال بد مق وض أمواس () ويجب وض المة( ‪) self‬‬


‫مثل ‪ def open_door (self):‬؛ بينما مند استخداد ‪ Attribute‬تقول ‪ " s‬المتغير "‬
‫دوت ‪ .....‬مثل ( ‪.)s. color‬‬

‫معنا ‪ : self‬مجرد المة تحجز مكان دا ل الكود هذا المكان "اسم ‪" object‬‬

‫مثال ‪:‬طبق هذا الكود‬

‫‪- 67 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫األقواس بدون وضع‬


‫‪self‬‬

‫الناتج وجود آلأ ؛ هذا الخآلأ يعنا أن ‪ test‬بتا ذ ‪ 0‬و ال تأ ذ ‪ arguments‬؛ ولكق‬
‫با ثون أمآلتها قيمة ‪ " 1‬اسم ‪"obgect‬‬

‫بعد كتابة كلمة ‪self‬‬

‫‪- 68 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪Constructor‬‬

‫مثلها مثل ‪ method‬ولكق تم تنفيذها مجرد ما تم ا ذ ‪ Object‬مق ‪class‬‬

‫وتكتب بالشكل التالى‬

‫‪def _init_ (self):‬‬

‫)"‪Print ("----‬‬

‫والكود يكون ملا النحو التالا‪:‬‬

‫‪ Class Attribute‬و ‪: Instance Attribute‬‬

‫القيمة التا نعآليها فا ‪ class‬تسما ‪ " Class Attribute‬قيمة "‪ " class‬ومندما نغير‬
‫هذ القيمة فا النسخة الخاصة بب " ‪ "object‬فهذا يسما ‪.Instance Attribute‬‬

‫مثال توضيحى‪ :‬عندى ‪ class‬اسمه ‪cars‬؛ و ‪ red‬؛ فيعتبر هذا اللون هو قيمة الـ‬
‫‪ Attribute‬دا ل ‪ class‬ولذلك يسما بالـ ‪ Class Attribute‬بينما فا حالة ا ذ نسخة‬
‫منه " ‪ "object‬ونقود بتغيير اللون إلا ‪ green‬فهذا التغير يسما ‪Instance Attribute‬‬

‫‪- 69 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فى هذه الحالة ‪Class‬‬


‫‪Attribute‬‬

‫ولكق مند ممل نسخة جد دة ‪ object‬ملا النحو التالا‪ Instance Attribute‬؛ فهنا اللون‬
‫‪ green‬اص بهذا االوبجيكت فق ‪.‬‬

‫الوراثة فى البايثون ‪inheritance‬‬

‫أن ‪ class‬تورث مق ‪ class‬أ رى فقد تورث صفة ‪ attributes‬؛ أو ‪ method‬؛ وتورثها‬


‫لعدد تكرار اتابة أكواد ؛ فلو الكود الموجود فا الـ ‪ class‬به أشياء محتاجها فا ‪class‬‬
‫الجد د ؛ تم تورثها ‪.‬‬

‫تتم الوراثة فا ال ا ثون مق طريق وض اسم ‪ class‬بيق ( ) فا الـ ‪ class‬الجد د بجوار‬


‫االسم‪.‬‬

‫ويكتب الكود ملا النحو الموضح‪:‬‬

‫‪- 70 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫يعنى أن هذا الـ ‪class‬‬


‫يورث من ‪class‬‬
‫‪ calculter‬؛ تنفيذ نفس‬
‫األوامر الجمع والضرب‬
‫ل ‪a,b‬‬

‫الـ ‪ class‬التا تورث تسما ‪ chield class‬أو ‪ An inherting class‬أو ‪Derived‬‬


‫‪ class‬أو ‪ Subclass‬؛الـ ‪ class‬التا نورث منها تسما ‪ An inhertied class‬و‬
‫‪ parent class‬و ‪ Base class‬و ‪.super class‬‬

‫)‪: Polymorphism (many Shapes‬‬

‫االسم (‪" interface " )method name‬؛ ولكق الكود الخاص‬ ‫مندى ‪ Class 2‬لهم نف‬
‫المفهود‪.‬‬ ‫بهم مختلف وبيؤدوا نف‬

‫)‪: Constructor Inherutance (Super‬‬

‫بيق الـ ‪ Class‬بالـ‪ " parent‬التا تورث منها " ؛ لنستدما‬ ‫نستخدد المة ‪ Super‬للرب‬
‫ال‪ method‬الموجودة دا ل ‪. parent class‬‬

‫فنض المة ‪ Super‬فا ال‪ class‬الجد د مندما أحتاج لوراثة شاء مق ال_ ‪parent‬‬
‫‪ class‬وأضيف ‪ method‬أ رى جد دة مليه ‪.‬‬

‫‪- 71 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ : Mutiple inheritance‬الوراثة فى أكثر من ‪class‬‬

‫تعنا ان مندنا ‪ class‬تورث مق ‪ class a‬و‪ class b‬؛ ففا الكود التالا ؛ تورث ‪class‬‬
‫‪ b‬مق ‪ a‬؛ اما تورث ‪ class d‬مق ‪ b,c‬؛ فهل نقذ ‪ dowith‬الموجود فا ‪ c‬أد ‪dowith‬‬
‫الموجود فا ‪ " a‬فا حيق أن ‪ b‬ورثاها مق ‪"a‬‬

‫نجد نفذ ‪ iam in a‬يعنا الموجود فا ‪ a‬؛ النه يأ ذ بترتيب اص " ترتيب أولويات "‬
‫‪ method‬؛ يسما (‪ )method resution order‬؛ ولو محتاج أمرل هذا الترتيب‬
‫))‪ )print(d.mro‬؛ فيتم ط امته ‪.‬‬

‫‪- 72 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل السابع املكتبات "‪" modules‬يف البايثون‬

‫‪ modules‬ها بعض المكت ات المستخدمة فا ال ا ثون ؛ حيث ماد المبرمجيق بتجمي‬


‫مجمومات أكواد دا ل ملفات فالـ‪ modules‬ها ملفات با ثون مكتوب بدا لها ‪clasess‬‬
‫تم تجميعها مق المبرمجيق حيث يستآلي المستخدد استيرادها واستخدامها فا أى ومت ؛‬
‫وممكق المستخدد يقود بعمل ‪ module‬اص به فيقود بإنماء ملف يض دا له ‪classes‬‬
‫الخاص به ‪.‬‬

‫أين تقع ‪ modules‬فى البايثون وكيف يتم استيراده ‪:‬‬

‫موجودة فا مسار ال ا ثون " ؛ ويتم ممل ‪ import‬له بثالثة طرق هما ‪:‬‬

‫‪.Import + module name -‬‬

‫‪.From module name import …….. -‬‬

‫‪.From module name import* -‬‬

‫‪. Import + module name-1‬‬

‫نكتب ‪ import os‬؛ والـ ‪ os‬ا تصار لـ ‪ opreted system‬ع ارة مق ‪ module‬اص‬
‫بنظاد التمغيل اانماء ملف ؛ مجلد جد د ؛ التحرك مق مسار إلا مسار إلخ ‪.‬‬

‫‪- 73 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ففا حالة اتابة ‪ import os‬معناها استدما ال شاء مق ‪ module‬الذى يسما ‪ os‬؛‬
‫وفا هذ الحالة ال بد مق اتابة‪ os.‬وبعد ذلك اسم ‪ method‬دا ل ‪. module‬‬

‫‪ Mkdir‬الخاصة‬
‫بانشاء مجلد‬

‫‪:From module name import ……-2‬‬

‫الفرق بينها وبيق الآلريقة اصولا أنه فا الآلريقة اصولا تم استدماء ال شاء دا ل ‪ os‬؛‬
‫وهو الخاص بانماء مجلد وتكتب بهذ‬ ‫بينما فا الآلريقة هذ تم استدماء ‪ mkdir‬فق‬
‫الآلريقة ‪.‬‬

‫يكتب اسم المجلد‬

‫‪:From module name import*-3‬‬

‫* فا لغات البرمجة أو موامد البيانات تعنا ال شاء ؛ فمعنا اتابتها انه تم استيراد ال‬
‫شاء " ال المكت ات " وملا الرغم انه طريقة جيدة إال أنه يسبب ثقل فا البرنامج لكثرة‬
‫المكت ات ‪.‬‬

‫لتصطيب ‪ module‬جديد " ‪"install Module‬‬

‫‪pip install + module name‬‬

‫فعند تنزيل أى نسخة مق ال ا ثون تم تنزيل ‪ pip‬و ‪ esay install‬و وجد لكل اصدار‬
‫‪ pip‬الخاص به وهو اسكريبت به المكت ات الخاصة ب ا ثون‬
‫‪- 74 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪OS Module‬‬

‫للتعامل م الملفات والمسارات الخاصة بنظاد التمغيل ؛ ميزته لو وجد آلأ يكتب أن‬
‫وجد آلأ ونوع هذا الخآلأ‪.‬‬

‫لآل امة أى قيمة ملا الماشة ‪ :‬نستخدد( " ")‪ print‬؛ ولو محتاجة أ ذ قيمة مق المستخدد‬
‫نكتب )" "(‪. input‬‬

‫طريقة التعامل مع الملفات عن طريق كود بايثون ‪:‬‬

‫للتعامل م أى ملف فا النظاد ال بد مق فتح هذا الملف ؛ وذلك مق الل ‪Acces‬‬


‫‪ Mode‬أى تحد د ومعرفة لماذا افتح الملف ؛ هل لق ار ته أد للكتابة بدا له أد لالثنيق معا ؛‬
‫ويمكق ممل ‪ Acces Mode‬مق الل أكثر مق اوبمق ‪:‬‬

‫‪ -‬مق طريق ‪ :R‬وهنا نفتح الملف للقراءة فق ‪.‬‬

‫‪ : R+ -‬للقراءة والكتابة معاً‪.‬‬

‫‪ : W‬للكتابة فق ‪.‬‬ ‫‪-‬‬

‫‪ : A -‬الضافة نص الا الموجود " ‪."Appending‬‬

‫‪ : A+ -‬الضافة نص الا الموجود م القراءة ‪.Reding + Appending‬‬

‫مندى ملف ملا الجهاز اسمه ‪1,txt‬؛ ونريد استدما ه ؛ للقراءة‬

‫‪- 75 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫عدد الحروف ؛ ولو محتاج‬


‫أقرأ أكثر من سطر تكتب‬
‫‪read lines‬‬

‫لو محتاج أمرل مكان الماوس فا الملف" المكان الذى تومف مند القراءة نستخدد ‪tell‬‬

‫لتحميل مكتبات غير مدمجة على البايثون ‪:‬‬

‫سبق وأن ذارنا أن لل ا ثون مكت ات مد دة مدمجة فيها واذلك وجد العد د مق المكت ات‬
‫اص رى غير المدمجة ؛ فعند اتابة ‪import folium‬‬

‫رسالة آلأ تدل ملا مدد وجود هذ المكت ة ؛ لكنها متوفرة ويسهل تحميلها ؛ وذلك‬ ‫فتآل‬
‫ملا النحو التالا‬

‫‪- 76 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫نافذة ‪ Command‬؛ ثم نكتب مسار ال ا ثون ثم ‪enter‬؛ ليه ‪ pip‬ثم ‪. enter‬‬

‫بعد ذلك نكتب ‪ pip‬ليها ‪ install‬ثم اسم المكت ة المراد تحميلها‬

‫فيتم تحميل المكت ة ملا النحو الموضح ادنا ‪.‬‬

‫‪- 77 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الباب الثانى‬

‫البايثون في بيئة‬

‫نظم المعلومات الجغرافية‬

‫‪- 78 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الباب الثانى ‪ :‬البايثون يف بيئة نظم املعلومات اجلغرافية‬

‫مقدمة‪.‬‬

‫تعتبر برمجة نظم المعلومات الجغرافية هب ع ارة مق استخداد لغات البرمجة وتوظيفها‬
‫لخدمة نظم المعلومات الجغرافية واذلك تقنيق أدوات ‪ GIS‬حتا تفب الغرض المآللوب‪.‬‬

‫تم استخداد البرمجة فب نظم المعلومات الجغرافية لعمل أدوات جد دة وممل برامج جد دة‬
‫أيضا؛ وممل موام ويب وفيما يلى عرض لبعض استخدامات البرمجة في مجال نظم‬
‫المعلومات الجغرافية‪- :‬‬

‫‪ -‬تطوير برامج سطح مكتب‪ :‬حيث تم ممل تآلوير للواجهات الرسومية المستخدمة‪.‬‬

‫‪ -‬عمل ‪ :Script‬وتآلوير اصدوات بأكواد البرمجة وتحليل وازمية تلك اصدوات‬


‫وتعتبر لغة ال ا ثون ومكت اتها اصة ‪ arcpy‬مق أفضل اللغات لعمل تلك‬
‫التحليالت‪.‬‬

‫اصة تخص مماري وأممال ‪" GIS‬‬ ‫‪ -‬تطوير تطبيقات الويب‪ :‬حيث تم ممل موام‬
‫‪"GIS Web Application‬‬

‫‪ -‬تطبيقات للهواتف المحمولة‪ :‬وذلك مق طريق ممل تآلبيقات أندوريد تخدد نظم‬
‫المعلومات الجغرافية وتخدد المماري الخاصة بها ؛ اتآلبيقات المسح الميدانا‬
‫و الفه ‪.‬‬

‫‪ C++‬؛‬ ‫أكثر لغات البرمجة أنتما ار دا ل بيئة نظم المعلومات الجغرافيا هب ( ‪Java‬‬
‫‪ C#‬و ‪ , Vb‬فب اصونة اص يرة ال ا ثون ولغة ‪.) R‬‬

‫‪- 79 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وفا هذا ال اب نعرض ايفة االستفادة مق لغة ال ا ثون لكتابة اصوامر البرمجية ضمق بيئة‬
‫نظم المعلومات الجغرافية وتحد دا دا ل برنامج ‪. Arc GIS‬‬

‫البرمجة فى ‪ArcGIS‬‬

‫العد د مق تآلبيقات نظم المعلومات الجغرافية العملية معقدة؛ وتتضمق وظا ف نظم‬
‫المعلومات الجغرافية المتعددة مثل تعد ل الميزات واالستعالد منها والسمات المرت آلة بها‪.‬‬
‫يحتاج التكرار إلا‬ ‫فمثال مند تحد د موم أمرب مدرسة لكل طالب فا مرحلة التعليم‬
‫المرور مبر ال طالب لتحد د المدارس دا ل حب ذلك الآلالب ثم تحد د موم أمرب مدرسة‬
‫الآلالب‪.‬‬ ‫مق‬ ‫ابير‬ ‫مدد‬ ‫هناك‬ ‫يكون‬ ‫مندما‬ ‫مرهًقا‬ ‫هذا‬ ‫يص ح‬ ‫؛‬
‫دويا مضيعة للومت ومملية‬
‫فيعد إجراء وتكرار االستعالد مق البيانات المكانية ومعالجتها ً‬
‫مملة ومعرضة لنس ة ابيرة مق الخآلأ لذلك مق المفيد أتمتة مثل هذ العمليات باستخداد‬
‫‪ArcGIS‬‬ ‫يسمح‬ ‫وظا ف حزمة نظم المعلومات الجغرافية المتآلورة ؛ حيث‬
‫‪ ModelBuilder‬للمستخدميق بدمج أدوات متعددة مق ‪ ArcToolbox‬لتكويق سير ممل‬
‫التحليل فب واجهة مستخدد رسومية‪.‬‬

‫‪ ArcToolbox‬؛ اما يمكق للنموذج تجمي‬ ‫حيث تم تنظيم مجمومة مق اصدوات دا ل‬


‫وفر ‪ ArcGIS‬حزمة ‪ ArcPy‬؛‬ ‫العمليات التب تدممها اصدوات‪ .‬باإلضافة إلا ذلك‬
‫(مكت ات ‪ ) Python‬والتب يمكنها تمغيل معظم وظا ف ‪.ArcMap‬‬

‫إن أتمتة مملية فب نظم المعلومات الجغرافية تتضمق مدة وارزميات أو آلوات ‪GIS‬‬
‫أيضا تصد ر مملية‬
‫باستخداد حزمة ‪ ArcPy‬و ‪ Python‬مملية سريعة وسهلة‪ .‬يمكق ً‬
‫الدفعات المضمنة فب ‪ ModelBuilder‬انصوص ‪ Python‬النصية‪.‬‬
‫ُ‬

‫‪- 80 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫والتب تم‬ ‫وتعد البرمجة النصية باستخداد ‪ ArcPy‬أكثر مرونة مق ‪ModelBuilder‬‬


‫تقييدها بواسآلة ‪.ArcTool‬‬

‫وفر ‪ ArcMap‬نافذة تحرير ‪ Python‬للمكونات اإلضافية اما يمكنك اتابة نصوص‬


‫‪ Python‬النصية فب ‪ Python IDE‬ارج ‪ ArcMap‬مق طريق استيراد حزمة ‪.ArcPy‬‬

‫‪- 81 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الثامن ‪ :‬مقدمة عن البايثون فى برنامج ‪Arc GIS‬‬

‫امتمدت شراة ‪ ESRI‬لغة ال ا ثون كلغة ر يسية فب منتجها الر يسب برنامج "‪ "ArcGIS‬لما‬
‫لها مق مميزات سبق الحد ث منها‪ .‬برنامج ‪ ArcGIS‬يستخدد لغة ال ا ثون ك ‪Scripting‬‬
‫‪.Language‬‬
‫فتح البايثون المتوفرة مع برنامج ‪Arc GIS‬‬
‫مق ما مة ‪ Start‬ثم ‪ All programs‬ومنها أ تار ‪ Arc GIS‬؛ ومنها ‪Python 2.7‬‬

‫نجد نافذتين للبايثون وهى ‪:‬‬

‫‪: Python Command-Line GUI‬‬

‫يمكق استخداد سآلر اصوامر اواجهة مستخدد رسومية لسآلر أوامر ‪ DOS‬أو ‪Linux‬‬
‫حيث تم تنفيذ جملة ‪ Python‬المكتوبة فب واجهة المستخدد الرسومية لسآلر اصوامر‬
‫م اشرة‪ .‬هناك العد د مق أوامر ‪ Python‬التب ال يمكق تنفيذها إال ملا واجهة المستخدد‬
‫الرسومية هذ وم ذلك فهذ هب أمل نافذة تآلوير صنه ال يمكنك تخصيصها وال تم تلويق‬
‫الكود لتوضيح بنية الكود أثناء الكتابة‪.‬‬

‫‪- 82 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫)‪: IDEL ( Python GUI‬‬

‫واجهة المستخدم الرسومية التفاعلية‪:‬‬


‫نافذة ‪ Python IDLE‬حيث يقود مترجم ‪ Python‬بتنفيذ ال أمر مكتوب فب واجهة‬
‫اصة‬ ‫مفيدا لممارسة بناء جملة ‪Python‬‬
‫المستخدد الرسومية التفاملية ؛ يعد ‪ً IDEL‬‬
‫للمستخدميق المبتد يق الذ ق ليسوا ملا دراية بلغة ‪ Python‬أو صولئك الذ ق رغبون فب‬
‫استخداد ‪ Python‬لعمليات "الحاس ة" ال سيآلة ‪.‬‬

‫إعدادت ‪:IDEL‬‬

‫يمكق الوصول إلا إمدادات ‪ IDEL‬مق الل ‪ Options‬؛ ثم ‪Configure IDLE‬‬

‫تظهر نافذة اإلمدادات‬

‫‪- 83 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الكود ونمآله ومرض المسافة ال اد ة‬ ‫من إعداد ‪ Fonts / Taps‬؛ يمكق إمداد حجم‬

‫‪- 84 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫مق ‪ Highlighting‬يمكق تسلي الضوء فتلويق الكود يسهل ملا المبرمجيق التعامل بمكل‬
‫يمكق تمييز الكود (بما فب ذلك التعليقات) بألوان مختلفة‬ ‫أفضل ؛ فب ‪Python IDEL‬‬
‫بناء ملا أنواع الكلمات المد لة ؛ فيمكق تمييز الكلمات المفتاحية باللون اصصفر ؛‬
‫ً‬
‫والتعليقات باللون اصحمر والمتغيرات باصسود ؛ ويمكق التحكم فر هذ االمدادات مق الل‬
‫الضغ ملا ‪ Highlighting‬تظهر النافذة التالية ‪:‬‬

‫تم ا تيار اصلون ؛ و ‪ Normal Text‬تم‬ ‫وبا تيار اصمر ‪Choose Colour for‬‬
‫تحد د البيانات المد لة بالكود‪:‬‬

‫‪- 85 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ومق ‪ General‬بنافذة اإلمدادات تم ا تيار النافذة المراد تهيئتها (إما النافذة التفاملية أو‬
‫وطريقة تمفير‬ ‫وتنسيق الفقرة‬ ‫وحجم النافذة اصولب‬ ‫وايفية حفظ الكود‬ ‫نافذة التحرير)‬
‫المصدر‪.‬‬

‫‪- 86 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تصحيح ‪ Debugging‬األخطاء‪:‬‬
‫مملية التصحيح مملية ال بد منها فب البرمجة صنه يكاد يكون مق المستحيل كتابة أكواد‬
‫الية مق اص آلاء‪ .‬وفيما لا مرض المهارات اصساسية لمعالجة اص آلاء‪:‬‬

‫خطأ في بناء الجملة ‪: SyntaxError‬‬


‫تحدث أ آلاء بناء الجملة مندما ال تم استيفاء متآلل ات بناء الجملة ويتم اكتمافها فب‬
‫مملية التفسير مبل تنفيذ البرنامج‪ .‬تتم إزالة اص آلاء النحوية مند ترجمة شفرة المصدر إلا‬
‫كود ثنا ب‪ .‬مند اكتمال آلأ فب بناء الجملة يقود مترجم ‪ Python‬بإ راج الرسالة "‬
‫اصة‬ ‫”‪ “SyntaxError: invalid syntax.‬تحدث مثل هذ اص آلاء بمكل متكرر‬
‫مندما تكون غير معتاد ملا بناء جملة با ثون‪.‬‬

‫استخدام نافذة البايثون داخل برنامج ‪:ArcGIS‬‬

‫؛ فتظهر‬ ‫نفتح نافذة ال ا ثون مق شري أدوات ‪ Arc map‬؛ نفتح أيقونة ال ا يثون‬
‫النافذة‪:‬‬

‫ووض <<< تعنا أن نافذة ال ا ثون جاهزة لقبول الكود ‪.‬‬

‫كتابة األكواد وتشغيلها‪:‬‬

‫مثله مثل أى مترجم؛ فيتم تمغيل اود ال سآلر ؛فاكتب الكود واضغ ملا ‪ enter‬؛ فكتابة‬
‫‪ a=5‬؛ ‪ b=9‬ومآللوب ‪ a*b‬ف مجرد الضغ ملا‪ enter‬تم تمغيل الكود تلقا ياً‬

‫‪- 87 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تطبيق أخر‪:‬‬

‫‪>>> if a < b:‬‬

‫الحظ أن نافذة ‪ Python‬توفر مآلال ات للمسامدة فب الكتابة ملا النحو الصحيح‪ .‬ملا‬
‫تظهر ما مة بـامتراحات‬ ‫مند اتابة‪ import‬فعندما تبدأ فب اتابة الحرل ‪i‬‬ ‫سبيل المثال‬
‫للكتابة " مناصر الكود التب تبدأ بهذا الحرل اما موضح ‪:‬‬

‫ملا مفتاح ‪ Tab‬مق لوحة المفاتيح ؛ اما يمكق‬ ‫" فيتم ا تيار الكلمة المناس ة والضغ‬
‫التجاهل وإكمال الكتابة ‪.‬‬

‫اكتب الكود واضغ ملا ‪ enter‬تظهر اما لا‬

‫‪- 88 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وجود الثالث نقاط ( ‪ ) . . .‬يعنب أن مترجم با ثون التفاملب ّ‬


‫تعرل ملا بداية بناء متعددة‬
‫اصسآلر؛ فط ارة ‪ if‬هب السآلر اصول وهناك حاجة إلا سآلر واحد ملا اصمل مق التعليمات‬
‫البرمجية لتمغيل الكود و تقود نافذة ‪ Python‬تلقا ًيا بوض مسافة باد ة للسآلر التالب مق‬
‫التعليمات البرمجية‪.‬‬

‫فامآلا التعليمات ولتكق "‪ "print a less than b‬؛ اضغ ملا ‪ enter‬؛ نالحظ أنه لم‬
‫ويبدأ السآلر التالب ؛اضغ ‪ enter‬مرة أ رى فيتم‬ ‫تم تنفيذ سآلر التعليمات البرمجية‬
‫تمغيل الكود ‪.‬‬

‫يتم مسح جميع محتويات النافذة مق تعليمات برمجية وأكواد مق طريق الضغ اليك يميق‬
‫دا ل النافذة وا تيار ‪.clearAll‬‬

‫تطبيق‪:3‬‬

‫‪ -‬اكتب ‪.a=8‬‬

‫؛ وهذا يعرض لنا سآلر ثانوى ويتم إد ال باما التعليمات البرمجية وفا‬ ‫‪Ctrl+Enter‬‬ ‫‪ -‬اضغ‬
‫النهاية تم الضغ ملا ‪enter‬‬

‫‪- 89 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫التعامل مع ‪numbers‬‬
‫يمكق استخداد ال ا ثون اآلة حاس ة موية‪ .‬الجراء العمليات الحسابية اما تعمل با ثون م‬
‫أنواع مختلفة مق اصرماد ونوضح ذلك فيما لا ‪:‬‬
‫فب نافذة ‪ Python‬اكتب الكود التالب ‪ >>> 54+12‬واضغ ملا ‪:Enter‬‬

‫و بتمغيل الكود التالب‪:‬‬

‫والنتيجة ظهرت ‪ 3‬ملا الرغم أنها فا الحقيقة ‪ 3.3‬؛ ولكق ماد حساب النتيجة إفتراضيًا‬
‫صن المد الت أمداد صحيحة فال التالا تم حسابها ارمم صحيح ؛ فيتم تقريب الناتج إلا‬
‫أمرب رمم صحيح؛ أما إذا انت تريد الناتج الفعلا لعملية القسمة فقم بإد ال اصرماد فا‬
‫صورة ممرية ‪:‬‬

‫‪- 90 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫والسؤال المآلروح اآلن هل هناك حد أملا مماثل لحجم اصمداد الصحيحة؟‬

‫نعم اصمداد الصحيحة العادية ال يمكق أن يكون أكبر مق ‪ 2147483647‬أو أصغر‬


‫قيما أكبر فيمكنك استخداد مدد‬
‫مق ‪ 2147483647-‬؛ وم ذلك إذا انت تريد ً‬
‫صحيح طويل يمار إليه بـ"‪."long‬‬
‫‪ 12345678901‬وبجوار حرل‬ ‫فمثال أكتب الرمم ‪ 12345678901‬فتجد النتيجة‬
‫‪ L‬حيث يمير الحرل ‪ L‬إلا تحويل قيمة اإلد ال إلا مدد صحيح طويل‪.‬‬

‫ولتشغيل األس ** ‪:‬أكتب الكود ‪ 2**5‬واضغ ‪ enter‬ليظهر الناتج ‪.32‬‬

‫التعامل مع بيانات من نوع ‪:strings‬‬

‫غالًا ما تُستخدد ‪ strings‬فب نصوص المعالجة الجغرافية لإلشارة إلا المسار وأسماء‬
‫الملفات؛ وفيما لا مرض م س لكيفية التعامل م ‪ strings‬فا نافذة ال ا ثون‪:‬‬

‫تم اتابة الكود دا ل مالمات " " سواء مفردة أو مزدوجة ؛ اكتب "‪" print hello python‬‬
‫واضغ ‪enter‬؛‬

‫‪- 91 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫م مراماة أنه إذا وجد المات بها مالمات فا وس الكلمة مثل المة ‪ Let's‬فكتابة الكود‬
‫نتج آلأ صن ال ا ثون ال تفرق بيق العالمة الخاصة‬ ‫بهذا المكل '!‪print 'Let's go‬‬
‫بالكلمة والعالمة فا نهاية الكود‬

‫والحل فا هذ الحالة تم اتابة العالمات المزدوجة للكود‬

‫تطبيق‪:‬‬

‫أكتب الكود التالا ‪:‬‬

‫فقاد بآل امة حرل ‪ o‬؛ فهو الحرل الراب حيث تم الترقيم بداية مق صفر ليعآلا حرل ‪h‬‬
‫رمم ‪: 0‬‬

‫كما يمكق استخداد أرماد متعددة اما لا ‪:‬‬

‫‪- 92 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫كما يمكق أيضا ال حث مق منصر ما اما فا الكود التالا‪:‬‬

‫التعامل مع ‪:variables‬‬

‫تتآللب العد د مق لغات البرمجة أن تم التصريح مق ‪ variables‬مبل استخدامها؛ و‬


‫ال ونحدد نومه ثم يمكنك تعييق قيمة لهذا المتغير‪ .‬أما‬
‫التصريح يعنب أن ننمئ المتغير أو ً‬
‫ومق هذ‬ ‫تم تعييق قيمة إلا المتغير ملا الفور (بدون التصريح به)‬ ‫فب لغة ال ا ثون‬
‫القيمة تحدد ‪ Python‬طبيعة المتغير؛وهذا أحد أس اب وجود نصوص با ثون فب اثير مق‬
‫فب لغات البرمجة اص رى‪.‬‬ ‫مق التعليمات البرمجية‬ ‫أمصر بكثير‬ ‫اصحيان‬
‫آلا باستخداد قيمة رممية ‪:‬‬
‫مثاال بسي ً‬
‫فيما لا ً‬

‫هذا يعنا أن المتغير ‪ x‬مرت بقيمة ‪ 12‬نتج مق هذا ضمنيًا أن المتغير ‪ x‬مدد صحيح‬
‫ولكق لسنا ب حاجة لذار ذلك بصورة م اشرة وبكود إضافب‪.‬‬
‫ذلك‪.‬‬ ‫وبمجرد تعييق قيمة لمتغير يمكنك استخداد المتغير فب التعبيرات التب ستفعلها بعد‬

‫يمكق للمتغيرات التعامل م جمي البيانات وليست اصرماد فق‬

‫‪- 93 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫التعامل مع ‪: lists‬‬

‫القوا م هب نوع بيانات ‪ Python‬متعدد االستخدام ات يستخدد لتخزيق سلسلة مق القيم ؛‬


‫يمكق أن تكون القيم نفسها ‪ numbers‬أو ‪.strings‬‬

‫كما يمكق التعامل م ‪ lists‬باستخداد الفهرسة اما تضح فيما لا‬

‫المة ‪ Apple‬فها فا الترقيم ‪ 0‬مق الـ‪ lists‬؛ ويمكق استخداد اصرماد السال ة‬ ‫فيآل‬
‫للحصول ملا الجانب اصيمق مق ‪Lists‬‬

‫كما يمكق استخداد القيم المتعددة‬

‫‪- 94 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫استخدام ‪:functions‬‬

‫‪ functions‬تم ه برنامج صغير يمكق استخدامه صداء مهمة ممل معينة‬


‫إال أن ‪ Python‬لها وظا ف‬ ‫وملا الرغم مق أنه يمكق إنماء وظا ف اصة بالمستخدد‬
‫بنيت بالفعل يمار إليها ملا أنها وظا ف قياسية‪.‬‬

‫فتستخدد ‪ pow‬بدالً مق اصس **‬

‫واستدماء ‪ functions‬يقود بتزويد الوظيفة بالمعلمات ؛ وتحتوى ال ا ثون ملا العد د مق‬
‫؛ فيمكق مرض ملف القا مة الكاملة باستخداد الط ارة‬ ‫الوظا ف القياسية‬
‫)__‪. dir(__builtins‬‬

‫‪- 95 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ملا‬ ‫هيا فيما تعلق بالعد د مق هذ الوظا ف التا تم استخدامها‬ ‫مد ال يكون اصمر بد ً‬
‫الرغم مق أن بعضها م اشر‪ .‬ملا سبيل المثال تُرج القيمة المآللقة للقيمة الرممية‬

‫تطبيق‪>>> range (10,31,2) :1‬‬

‫تطبيق ‪>>> range (9) : 2‬‬

‫استخدام ‪:methods‬‬

‫‪ methods‬تم ه ‪ functions‬؛ فالـ ‪ methods‬هب وظيفة مري ة مرت آلة بـ ‪ object‬؛‬


‫تكون ‪ methods‬ملا النحو التالب‪:‬‬
‫)>‪<object>. <method>(<arguments‬‬

‫وض‬ ‫ولكق فا ‪methods‬‬ ‫ان استدماء ‪ methods‬مثل استدماء ‪function,‬‬


‫الكا ق"‪ " object‬مبلها م نقآلة (‪ ).‬تفصل بينهما‪.‬‬

‫تطبيق ‪:1‬‬

‫"‪<<<topic = "Geographic Information Systems‬‬

‫)"‪>>> topic.count("S‬‬
‫‪- 96 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪S‬؛‬ ‫‪ 1‬؛ وهذا هو مدد ظهور الحرل‬ ‫فيآل‬

‫وهناك العد د مق الآلرق المستخدمة فمجرد وض نقآلة بعد المتغير تظهر ‪methods‬‬
‫"الآلرق" التا يمكق تآلبيقها ‪:‬‬

‫تطبيق‪:2‬‬

‫المسارات‪.‬‬ ‫م‬ ‫للعمل‬ ‫االنقساد‬ ‫طريقة‬ ‫تآلبيق‬ ‫لكيفية‬ ‫مرض‬ ‫لا‬ ‫وفيما‬
‫ملا سبيل المثال نفترض أن المسار هو ‪ C:\Users\Default‬؛ فيتم تآلبيق الكود ملا‬
‫النحو التالا‪:‬‬

‫‪.‬‬

‫‪- 97 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ففب السآلر اصول مق التعليمات البرمجية تم تعييق المسار اسلسلة فب مسار المتغير‪ .‬فب‬
‫وفب السآلر‬ ‫السآلر الثانب مق التعليمات البرمجية تم تقسيم السلسلة إلا أرب سالسل‬
‫الثالث مق الكود فإن آ ر سلسلة فب القا مة تم الترقيم ويتم تعيينها إلا آ ر مسار متغير‬
‫فا السلسلة‪.‬‬
‫تطبيق ‪:3‬‬

‫استخدام ‪:modules‬‬

‫هناك مئات الوظا ف اإلضـافية المخزنـة فـب وحـدات ؛ و مبـل أن تسـتآلي اسـتخداد وظيفـة‬
‫يج ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــب ملي ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــك اس ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــتيراد ‪ module‬باس ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــتخداد وظيف ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــة االس ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــتيراد‪.‬‬
‫فالوظـ ــا ف التـ ــب ذارناهـ ــا سـ ــابقا هـ ــب جـ ــزء مـ ــق ‪ Python‬وال لـ ــزد اسـ ــتيرادها؛ فمـ ــثال وحـ ــدة‬
‫كالرياضــيات هــا واحــدة مــق أكثــر‪ modules‬الوحــدات الم ـراد اســتيرادها ؛ وفيمــا لــا معرفــة‬
‫كيفة استيراد مثل هذ ‪.modules‬‬

‫مثال ‪ : 1‬استيراد ‪math‬‬

‫يمكنك استيراد ‪ modules‬باستخداد ‪ import‬ثم استخدد الوظا ف مق تلك ‪ modules‬مق‬


‫طريق اتابة <‪> function< .>module‬‬

‫‪- 98 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فب حيق أن‬ ‫فإن استخداد ‪ math.floor‬للتقريب دا ًما إلا الرمم اصصغر‬ ‫؛ ومق ثم‬
‫صحيح‪.‬‬ ‫مدد‬ ‫أمرب‬ ‫إلا‬ ‫لل تقريب‬ ‫‪built-in‬‬ ‫‪round‬‬ ‫‪function‬‬
‫يمكنك الحصول ملا ما مة بجمي الوظا ف فب وحدة الرياضيات باستخداد ‪ dir‬؛ اما‬
‫تضح فا النافذة التالية ‪:‬‬

‫لكق الجد ر بالذار‬ ‫ويمكق التعرل ملا ال وظيفة فب أدلة ‪Python‬‬


‫أيضا رؤية البنية فب تعليمات نافذة ‪:Python‬‬
‫أنه يمكق ً‬

‫هناك طريقة أ رى لمماهدة الوثا ق وهب استخداد بيان __‪ __doc‬م اشرة فب با ثون‪.‬‬
‫__‪print math.floor.__doc‬‬

‫يعنب المعلمة الوحيدة لهذ الوظيفة هب قيمة واحدة‪ .‬تقود الدالة‬ ‫الصيغة ( ‪floor (x‬‬
‫صحيحا (مثل ‪ .)7‬هذ المعلومات تسمح لك‬
‫ً‬ ‫مددا‬
‫ً‬ ‫بإرجاع مدد ممري (مثل ‪ )7.0‬لي‬
‫بتحد د ما إذا اانت الوظيفة حًقا ما ت حث منه وايفية استخدامها بمكل صحيح ؛هناك‬

‫‪- 99 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪.Python‬‬ ‫فب‬ ‫المتوفرة‬ ‫النمآلية‬ ‫‪modules‬‬ ‫مق‬ ‫العد د‬


‫للوصول إلى ‪ help‬فى بايثون‪:‬‬

‫مق ما مة ‪ start‬أ تار ‪ allprograms‬ومنها ‪ Arc GIS‬؛ منها ‪ Paython 2.7‬؛ ثم‬
‫‪paython manual‬‬

‫‪- 100 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫لحساب مسافة بين نقطتين ‪:‬‬

‫احداثا النقآلة اصولا ‪:‬‬

‫‪X1=5‬‬

‫‪Y1=1‬‬

‫‪X2=12‬‬

‫‪Y2=18‬‬

‫ومانون حساب المسافة بيق نقآلتيق هو‬

‫فيكتب الكود بنافذة البايثون على النحو التالى ‪:‬‬

‫‪- 101 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل التاسع ‪ :‬املعاجلة اجلغرافية باستخدام لغة البايثون‬

‫تعتبر البرمجة النصية طريقة لتنفيذ ممليات المعالجة الجغرافية ؛ ونصوص ال ا ثون تم ه‬
‫ال مق البرمجة المر ية فا‬
‫النمذجة ؛ إال أنه يختلف منه فا استخداد الكود بد ً‬
‫‪. ModelBuilder‬‬

‫تطبيق المعالجة الجغرافية في برنامج ‪Arc GIS‬‬

‫افتح برنامج ‪ arc map‬؛ واستيراد الآل قات التا تم ممل معالجة جغرافية لها ؛ ومق شري‬
‫القوا م أ تار ‪ Geoprocessing‬؛ ثم ‪ Geoprocessing Options‬؛‬

‫ال مق ‪Overwrite‬‬
‫تظهر النافذة التالية ‪ :‬؛ ض مالمة صح أماد ا ً‬
‫‪ the outputs of geoprocessing operations‬و ‪results of‬‬
‫‪. " geoprocessing operations to the display‬‬

‫‪- 102 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ثم أضغ ملا ‪.OK‬‬

‫عمل ‪ CLIP‬لطبقة باستخدام البايثون ‪:‬‬

‫تتم بات اع الخآلوات التالية ‪:‬‬

‫‪ -‬استيراد ‪ " arcpy‬مق طريق اتابة ‪ import arcpy‬؛ والجد ر بالذار ان استيراد ‪arcpy‬‬
‫لي ضرورًيا الستخداد المعالجة الجغرافية مق دا ل تلك النافذة‪ .‬وم ذلك الكود فب‬
‫ال ا ثون يمكنه تحويل النافذة إلا ملف نصب (‪ )py.‬ونصوص مستقلة‪.‬‬

‫‪- 103 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ -‬بعد اتابة السآلر اصول مق التعليمات البرمجية ( ‪ )import arcpy‬اضغ ملا ‪.Enter‬‬

‫موجها جد ًدا "<<< "فب السآلر التالب‪ .‬فسبق وأن ذانا أن لغة با ثون لغة مفسرة‬
‫ً‬ ‫‪ -‬يظهر‬
‫مما يعنب أنه فب نافذة با ثون تم تمغيل سآلر التعليمات البرمجية بمجرد الضغ ملا‬
‫‪.Enter‬‬
‫اآلن النافذة جاهز لتمغيل أداة المعالجة الجغرافية‪.‬‬

‫‪ -‬فب السآلر التالب مق التعليمات البرمجية أكتب ‪arcpy.Clip_analysis‬‬

‫م مراماة مدد الضغ ملا ‪ Enter‬هذا الكود يستدمب أداة ‪ .Clip‬تذار أيضا أن لغة‬
‫حالة اصحرل هذ‬ ‫لذا تأكد مق اتابة ‪ Clip,‬بنف‬ ‫‪ Python‬حساسة لحالة اصحرل‬
‫وليست تكتب هكذا ‪. clip.‬‬

‫اما لو انت تمأل مرب حوار اصداة‪ .‬وبمجرد اتابة موس فتح (‬ ‫‪ -‬تحد د معلمات اصداة‬
‫تنسدل ما مة تحتوى ملا جمي الآل قات الموجودة دا ل جدول محتويات‬ ‫بعد أداة ‪Clip‬‬
‫‪. Arcmap‬‬

‫‪ -‬أكمل الكود " أريد ممل ‪ clip‬لمد نة تال مق دا ل ط قة المراكز وأسما الآل قة الجد دة‬
‫‪" tala_clip‬؛ملا النحو التالا‬

‫‪- 104 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ -‬اضغ ملا ‪ Enter‬لتمغيل سآلر التعليمات البرمجية‪ .‬فالوض مثله مثل تمغيل اصداة مق‬
‫لنجد النتيجة مآلبومة فب نافذة با ثون؛ وتم امتآلاع الآل قة‬ ‫دا ل مق ‪ArcToolbox‬‬
‫وانسدالها دا ل منآلقة ‪ Table of Contents‬ملا النحو الموضح بالصورة التالية‪:‬‬

‫‪:Count Management‬‬

‫افتح أيقونة ال ا ثون مق نافذة الـ ‪ arcmap‬؛ومق ثم ال حث مق اصداة "‪ count‬؛ تم سحب‬
‫اصداة ووضعها فا نافذة ال ا ثون " تم اتابة الكود "‬

‫وهناك طريقة أ رى وها أن نفتح اصداة ؛ ومق ‪ help‬اصداة ؛ نجد الكود الذى استخدد‬
‫النماء اصداة ؛ اما موضح بالنافذة التالية‪:‬‬

‫‪- 105 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫بعد سحب اصداة فا النافذة ؛ نض الـ ‪ shabefile‬المآللوب مد بياناته ؛ ونجد يعآلا لنا‬
‫مؤشر لال تيارات ؛‬

‫وبالضغ ملا ‪ enter‬؛ يعآلا لنا النتيجة‪:‬‬

‫‪- 106 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫األختيار ‪:Select‬‬

‫أسحب اصداة دا ل نافذة ال ا ثون؛‬

‫ا تار الآل قة المراد ممل ‪ select‬لها؛ ولتكق مدن محافظة المنوفية ؛ بعد ذلك نختار‬
‫‪ select‬لها ولتكق مد نة ‪ TALA‬؛ نالحظ أن النافذة تمير لنا ملا‬ ‫المآللوب ممل‬
‫المآللوب إضافته اما موضح بالنافذة‬

‫بعد ذلك يآللب مننا ‪ Where_class‬لإلشارة إلا الـ‪ class‬المآللوب ؛ ويتم ذلك مق طريق‬
‫الآلريقة المكتوبة ؛‬ ‫معرفة االسم مق دا ل ‪ attrupite table‬ليتم نقل االسم بنف‬

‫‪- 107 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ونكمل باما الكود " م مراماة اتابة الكود والكومق بآلريقة صحيحة " ثم ‪ enter‬؛ فيقود‬
‫باصداة ؛ ومكان حفظ الآل قة الجد دة ؛ويخرج لنا الآل قة فا منآلقة ‪Table of‬‬
‫‪.contentes‬‬

‫استخدام ‪:Buffer‬‬

‫تم تمغيل أداة ‪ Buffer‬دا ل نافذة ال ا ثون وذلك ملا النحو التالا‪:‬‬

‫التالا(‬ ‫النحو‬ ‫ملا‬ ‫وهو‬ ‫اصداة‬ ‫اود‬ ‫يكتب‬ ‫ثم‬ ‫؛‬ ‫‪arcpy‬‬ ‫استيراد‬ ‫تم‬
‫(‪ arcpy.Buffer_analysis‬ودا ل اصمواس تم تحد د الآل قة المراد ممل ‪ Buffer‬لها‬
‫؛ ونسما الآل قة الجد دة والمسافة المآللوبة لعمل ‪ Buffer‬وذلك ملا النحو التالا ‪:‬‬

‫فيتم تشغيل الكود مثله مثل تشغيل األداة ‪.‬‬

‫‪- 108 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪:Select pyLocation‬‬

‫يعتبر اال تيار حسب الموم دا ل نافذة الـ ‪ arc map‬أمر بسي جداً؛ لكق اآلن دمنا نقود‬
‫بهذ المهمة مق طريق اود ال ا ثون؛ فإذا أردنا أن نحدد موم معيق بناءًا ملا مسافة‬
‫محددة ؛ مثل " تحد د المستمفيات التا ت عد مق نهر النيل بمسافة ‪ 500‬متر مثال" ؛‬
‫الخآلوات التالية‪:‬‬ ‫فتمثل المستمفيات بآل قة نقاط ؛ والنهر بآل قة آلوط ؛ فنت‬

‫‪ -‬نفتح نافذة ال ا ثون دا ل ‪.arcmap‬‬

‫‪ -‬نكتب الكود التالا ‪. arcpy.SelectByLocation_management‬‬

‫‪ -‬نفتح اصمواس ونختار ط قة النقاط والتا تمثل المستمفيات ؛ ثم نختار المطيار الذى نحدد‬
‫بناء مليه ‪. WITH A DISTANCE‬‬

‫‪- 109 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ -‬نحدد الآل قة الثانية " نهر النيل ؛ ثم نحدد المسافة ‪ 500‬متر ‪.‬‬

‫‪ -‬نسند الكود إلا متغير وليكق =‪ point_ 500m‬؛ ويكون الكود ملا النحو الموضح فا‬
‫النافذة التالية ؛ ثم نضغ ‪ enter‬؛ فيقود باإل تيار بنجاح ‪.‬‬

‫ونجد النقاط تم ا تيارها دا ل نافذة ‪ arcmap‬؛ وتم تحد دها دا ل ‪.Attrabuite table‬‬

‫‪-2‬التعامل مع نافذة ‪: IDEL‬‬

‫مند التعامل م نافذة ‪ IDEL‬ت ادر إلا أذهاننا التساؤل؛ ايف نرب الـ ـ‪ IDEL‬ببرنامج‬
‫‪ Arc Map‬بعد اتابة اصكواد؟‬

‫ويمكن اإلجابة بالتطبيق العملى على النحو التالى‪:‬‬

‫نفتح ‪ IDEL‬؛ ونفتح نافذة جد دة ثم نستدما "‪ "import‬مكت ة ‪ arcpy‬ولرب الـ ‪shape file‬‬
‫بالـ ‪IDEL‬‬

‫‪ -‬نكتب ‪ r = arcpy.env.workspace‬ثم مسار ‪ workspace‬وهو فا ‪ decoment‬؛‬


‫‪ ArcGIS‬؛ ‪Default‬‬

‫‪- 110 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ -‬نضعه فا متغير وليكق ‪ ws‬؛ ثم نكتب الكود ملا النحو التالا =‪ ws‬؛ نكتب ‪ r‬وننسخ‬
‫مسار الـ‪ shape file‬دا ل الجهاز ثم نض \ وننسخ أيضا اسم الـ‪ shape file‬ونضعه‬
‫دا ل النافذة ؛ ثم ‪ shp.‬ونقفل الدبل اومق‪.‬‬

‫‪ -‬بعد ذلك تم ممل اصدوات؛ ففا اصداة ‪ count‬والتا سبق وأن نفذناها دا ل نافذة ال ا ثون‬
‫مق دا ل ‪arcmap‬؛ نكتب‬

‫)‪r=arcpy.Getcount_management(ws‬‬

‫)‪Print (r‬‬

‫العدد فب نافذة ‪python shell‬‬ ‫ثم ‪ run‬؛ لتآل‬

‫‪- 111 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫االختيار ‪: select‬‬

‫بعد رب النافذة بالـ ‪ arcmap‬اما اتضح سابقا تم اتابة الكود ملا النحو التالا ‪:‬‬

‫وتظهر على البرنامج ؛ حيث نذهب لمكان حفظها ويتم اضافتها لتظهر على النحو التالى‬

‫‪- 112 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل العاشر‪ :‬إنشاء أداة جديدة بالبايثون داخل ‪ArcGIS‬‬

‫كيفية إنشاء أداة داخل برنامج ‪( arcmap‬استخدام البرامج النصية كأدوات)‪:‬‬

‫مق نافذة ‪ arccatalog‬نختار مكان إلنماء اصداة ثم اليك يميق ‪ new‬ونختار‬


‫‪newtoolbox‬‬

‫وملا الـ‪ Toolbox‬المنمئة اليك يميق ثم ‪ Add‬ثم ‪Script‬‬

‫‪- 113 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فتظهر نافذة واجهة اصداة؛ تسما اصداة ؛ ونض وصف لها و ثم نحدد‬

‫“‪Store relative path names” and “Always run in‬‬

‫‪”foreground‬‬

‫ثم نضغ ملا ‪next‬‬

‫‪- 114 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫نختار الملف ثم ‪next‬؛ يظهر لنا مرب الحوار التالب والخاص بتحد د معلمات اصداة الم ارد‬
‫مرضها فب مرب حوار اصداة‪.‬‬

‫‪- 115 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫يمكنك تخآلب هذا اآلن صن ملف البرنامج النصب يحتوي ملا معلمات ذات ترميز ثابت‬
‫م امتداد برمجة ‪ Python‬لـ ‪. ArcGIS‬‬

‫فأترك القا مة فارغة واضغ ملا ‪.finsh‬‬

‫هذا يضيف أداة نصية إلا صندوق اصدوات‪ .‬يمكنك اآلن تمغيل البرنامج النصب املف‬
‫أداة‪.‬‬

‫‪- 116 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫لو حاولنا تمغيل اصداة بالضغ دبل اليك مليها فنجد أن اصداة ال تحتوي ملا معلمات‬
‫النصب‪.‬‬ ‫البرنامج‬ ‫أداة‬ ‫إمداد‬ ‫مند‬ ‫شبء‬ ‫أي‬ ‫إنماء‬ ‫تم‬ ‫لم‬ ‫صنه‬

‫ومد الحظنا أن إنماء أداة نصية أمر سهل إلا حد ما؛ إال ان هناك الكثير مق اصمور‬
‫امداد‬ ‫ذلك‬ ‫فب‬ ‫بما‬ ‫موية‬ ‫نصية‬ ‫أدوات‬ ‫إنماء‬ ‫مند‬ ‫الهامة‬
‫والتحقق مق صحة معلمات اإلد ال‬ ‫معلمات اصداة للحصول ملا مد الت المستخدد‬
‫ومعالجة اص آلاء‪.‬‬

‫إنشاء األداة من ‪ script‬تم إنشاؤه على البايثون‪:‬‬

‫فيما لا توضيح لكيفية تحويل الـ‪ script‬الذى تم إنماؤ فا الم حث السابق إلا أداة ‪:‬‬

‫نكتب الكود التالا لتحويل ال‪ script‬إلا أداة‬

‫)‪ ws=arcpy.GetParameter.AsText(0‬؛ونكتب الرسالة التا تصل للمستخدد بعد‬


‫تنفيذ اصداة وها )‪ arcpy.AddMessage(r‬؛ ليكون الكود " ‪" script‬ملا النحو التالا‪:‬‬

‫‪- 117 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ونحفظ النافذة؛ ومق برنامج ‪ arcmap‬مق نافذة ‪ arccatalog‬نختار مكان إنماء اصداة ثم‬
‫كليك يميق ‪ new‬ونختار ‪newtoolbox‬‬

‫وملا الـ‪ Toolbox‬المنمئة اليك يميق ثم ‪ Add‬ثم ‪Script‬‬

‫فتظهر نافذة واجهة اصداة تسما اصداة؛ ووصف لها‬

‫‪- 118 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ثم ‪ next‬؛ فتظهر النافذة اصتية والتا تم ا تيار الوصف المحفوظ " اود اصداة الذى تم‬
‫كتابته ملا ‪"IDEL‬‬

‫‪- 119 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ملا ‪ next‬تظهر النافذة التالية والخاصة بإضافة اصسئلة واالحتياجات الموجهة‬ ‫ونضغ‬
‫للمستخدد ؛ فأول احتياج إضافة الـ ‪ Layer‬؛ ثم نختار نوع البيانات الذى يقود بإد الها ؛‬

‫نجد ماد ملا انماء اصداة‬


‫‪- 120 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫لتجميع أكثر من أداة فى ‪ script‬واحد ليتم تنفيذهم بمجرد عمل ‪ run‬؛ نختار مجموعة‬
‫من ادوات التحليل المكانى مثل ؛‬

‫‪Count- Clip- Buffer– Select‬‬

‫‪ -‬لد نا ط قتيق ط قة مضلعات لتمثل مراكز المحافظة وط قة نقاط موزمة ملا المراكز‪.‬‬

‫‪ -‬ممل متغير ‪ " ws " work space‬للآل قة اصولا التا تم إد الها ملا النحو التالا‬

‫مسار حفظ الطبقة‬ ‫اسم الطبقة‬


‫نوع الطبقة‬ ‫الظ‪work‬‬ ‫ربط الـ‬
‫األولى "المراكز"‬ ‫‪ space‬ببيئة‬
‫‪ arcpy‬وتحديد‬
‫مسارها على‬
‫الجهاز‬
‫‪- 121 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الخآلوة للآل قة الثانية "ط قة النقاط"‬ ‫تم ممل نف‬ ‫‪-‬‬

‫‪ -‬بعد ذلك ند ل اود أداة الـ ‪Select‬؛‬

‫‪ -‬بعد ذلك نعمل ‪ Buffer‬للمخرج مق أداة الـ ‪ " Select‬فنكتب الكود ملا النحو التالا‬

‫‪ -‬بعد ذلك مآللوب ممل ‪ clip‬مق ط قة المراكز لمراز تال "‪"TALA‬‬

‫‪ -‬تم ممل ‪ GetCount‬للآل قة التا تم ممل ‪ Clip‬لها ؛ م ط امة العدد الناتج‬

‫ناتج العددملا ال ا ثون ‪ shell‬؛ وناتج اصدوات نجد فا مكان حفظه‬ ‫‪ -‬تم ممل ‪ run‬فتآل‬
‫؛ فيتم إضافته ملا ‪.arcmap‬‬

‫وبعد ذلك يمكن تجميع وصف هذه األدوات األربعة وإنشاء أداة واحدة تمكننا من عمل‬
‫وظائف األدوات السابقة ؛‬

‫‪ -‬لد نا وصف اصدوات السابقة " اصكواد " فا شاشة ال‪:IDEL‬‬

‫‪- 122 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تم ممل هذ اصدوات ملا هيئة متغير ونسميه اسم وليكق‪ select country‬؛ نض هذا‬ ‫‪-‬‬
‫المتغير للـ ‪ NAME‬؛‬

‫' ؛‬ ‫ملحوظة‪ :‬وض اسم المتغير مكان ‪ TALA‬ال تم م ار ته ملا انه متغير النه بيق '‬
‫ولحل هذ الممكلة تم وض أمواس ودا لها صفر }‪ { 0‬؛نقود بكتابة جمي التعليمات اما‬
‫فا النافذة التالية‪:‬‬

‫يتم حفظ النافذة ؛ نقوم بعمل أداة جديدة بالخطوات السابق ذكرها ؛‬

‫نعمل ‪newtoolbox‬؛ ثم ‪ AddScript‬؛ونسما اصداة ‪ selectmarakez‬؛ نختار مسار‬


‫حفظ ال‪script‬؛ وتظهر النافذة اص يرة‬

‫‪- 123 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فينماء اصداة ملا النحو الموضح‬

‫‪- 124 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل احلادى عشر‪ :‬حتليل بيانات ‪Raster‬‬

‫باستخدام البايثون يف بيئة ‪ARCGIS‬‬

‫نتناول طريقة التعامل مع بيانات ‪:)Terrain , Aspect , Hillshade (Raster‬‬

‫تم اد ال ط قة ‪ )DEM( raster‬ملا برنامج ‪ Arc map‬؛ وتأكد مق أن ‪Spatial‬‬


‫‪ anaylisis‬منمآلة ؛ مق ‪ Customize‬؛ ثم ‪Extensions‬‬

‫نفتح نافذة البايثون ونكتب ما يلى‬

‫نسما الآل قة وليكق ‪ slop_out‬امتغير؛ ثم نكتب ‪ arcpy.sa.slope‬؛ و (‪ sa‬؛ ا تصار‬


‫التحليل المكانا ‪ ) spatial analysis‬؛ نفتح اصمواس وند ل الآل قة المآللوب ممل تحليل‬
‫لها ؛ اما موضح أدنا )‪ .‬ثم ‪enter‬‬

‫‪- 125 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فينفذ ال‪ slope‬؛ وبنفس الطريقة نقوم بعمل ‪ Aspect‬و ‪.Hillshade‬‬

‫إيجاد ‪ extent‬للطبقة ‪ Raster‬باستخدام ‪arcpy‬‬

‫تم اد ال ط قة ‪ )DEM( Raster‬؛ وفتح نافذة ال ا ثون؛ ويكتب ما لا‬

‫*‪ Import‬معناها استيراد كل شيء‪.‬‬

‫ثم نضغط ‪ enter‬؛‬

‫ثم لطباعة ‪ extent‬للـ ‪raster‬‬

‫‪- 126 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ولعمل ‪ cut‬بواسطة طبقة ‪Polygon‬‬

‫نكتب ‪clip_management‬؛ ثم نفتح اصمواس لند ل المتآلل ات وها الآل قة الـ ‪raster‬؛‬
‫ثم ننسخ ‪ " extent‬ناتج العملية السابقة و المسار الذى نحفظ فيه ناتج العملية وسبوق بـ‬
‫‪r‬؛ ثم ند ل ط قة الـ ‪ polygon‬؛ المراد القآل بها ؛‬

‫ملحوظة توض "‪ " #‬مند مدد الرغ ة فب اد ال المتآلل ات ‪ Parameter‬اال تيارى (‬
‫‪ )Optional‬؛ وإكمال ملا النحو الموضح بالنافذة ؛‬

‫ولطباعة ‪ extent‬للـ‪polygon‬‬

‫تحويل الطبقة الـ ‪ Raster‬إلى طبقة ‪:Polygon‬‬

‫تم استيراد ‪ arcpy‬؛ ثم بعد ذلك وض المسار الذى تم فيه إ راج الآل قة الجد دة‬
‫‪ output‬؛ م تسمية الآل قة ؛ وفا السآلر التالا نكتب العملية المآللوبة اما لا ‪:‬‬

‫ثم الضغ ملا ‪.enter‬‬

‫‪- 127 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫عمل خريطة كنتورية من ‪ DEM‬بواسطة ‪ arcpy‬بلغة البايثون‪:‬‬

‫تم إد ال ط قة ‪ DEM‬؛ وفا نافذة ال ا ثون ‪:‬‬

‫نقود بعمل ‪ import‬للـ ‪.arcpy‬‬

‫ثم نض مسار حفظ الملف ونسما الملف ‪.‬‬

‫ثم نكتب ‪ contour‬؛ ونض الـ ‪ paremeter‬الخاص وهما ( ط قة ‪ DEM‬؛ الـ‬


‫‪ Countour_out‬؛ الفاصل الكنتورى المآللوب ‪.‬وهذا موضح بالنافذة التالية ‪.‬‬

‫‪- 128 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الثانى عشر ‪ :‬إخراج اخلريطة بالبايثون‬

‫يمكق معرفة صا ص مستندات الخريآلة مق ما مة ‪ file‬ثم ‪mape Doucment‬‬


‫‪propertes‬‬

‫حيث يستخدد مسار الملف ‪ mxd‬لمعرفة مسار الخريآلة المعروضة لد نا؛ تعد نافذة ال ا ثون‬
‫فب ‪ arcmap‬مفيدة فب التعامل م الخريآلة التب تم مرضها دا ل نافذة الـ ‪ arc map‬؛‬
‫ويمكق اإلشارة إلا هذ الخريآلة المفتوحة باسم "‪."CURRENT‬‬

‫ولمعرفة مسار الخريآلة يكتب الكود‪:‬‬

‫)'‪ mxd = arcpy.mapping.MapDocument('CURRENT‬؛ ثم يكتب‬

‫‪mxd.filepath‬‬

‫كلمة ‪ current‬تعنب مم بقراءة الملف الحالب اما انه باإلمكان مراءة أي ملف ‪ mxd‬بكتابة‬
‫المسار موضا مق المة ‪ current‬بيق مالمتب امت اس‪.‬‬

‫‪- 129 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ملحوظة‪ :‬هذا الكود ال يعمل بنافذة الـ ‪ ، IDEL‬فيعطى رسالة خطأ‪.‬‬


‫متبوما بالنقآلة سترى ما مة ‪ MapDocument‬؛ الخصا ص‬ ‫ً‬ ‫ومندما نكتب ‪mxd‬‬
‫والآلرق‪ .‬ويمكنك تحد د هذ مق القا مة المنسدلة ؛ اا تيار ‪author:‬‬

‫كما يمكق تغيير صا ص أ رى تتعلق بعرض الخريآلة‪.‬‬


‫(العنوان وسيلة اإليضاح المقياس إلخ) حيث التبد ل بيق طرق العرض مق طريق‬
‫تعد ل ‪:activeView‬‬
‫‪>>> mxd.activeView‬‬
‫ثم يمكق تغيير مرض الخريآلة '‪'page_layout‬‬

‫‪- 130 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فنالحظ التغيير ملا الخريآلة ؛ وبالنس ة لعنوان الخريآلة يكتب ‪ mxd.title‬؛ ثم ‪enter‬‬
‫يعرض لنا منوان الخريآلة الحالب ؛ فنعآلا منوان جد د للخريآلة وليكق =‪mxd.title‬‬
‫‪ Egypt DEM‬؛ وبمجرد اتابة )(‪ arcpy.RefreshActiveView‬تم تغيير العنوان‪.‬‬

‫وللحفظ؛‬

‫العمل مع إطارات البيانات ‪:DataFrame‬‬

‫يمكق معرفة صا ص ‪ DataFrame‬مق نافذ ‪ arcmap‬مق طريق ما مة ‪ view‬ومنها‬


‫‪DataFrame Properties‬‬

‫‪- 131 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫كما يمكق تغيير صا صها بال ا ثون وذلك بتنفيذ الكود التالا = ‪dfs‬‬
‫)‪ arcpy.mapping.ListDataFrames(mxd‬؛ ثم اتابة التغيرات المآللوبة‬

‫التعامل مع الطبقات بالبايثون‪:‬‬

‫كما يمكق التعامل م الآل قات مق الل نافذة ال ا ثون وذلك مق طريق استخداد اصكواد‬
‫التالية‬

‫أيضا تحد د مجمومة مق الميزات وتعييق مدى إطار البيانات ملا قيمة تم‬
‫كما يمكق ً‬
‫إرجامها بواسآلة ‪)( getSelectedExtent‬‬
‫)(‪df.extent = myLayer.getExtent‬‬

‫وباستخداد ‪ ListLayers‬يمكق معرفة ال الآل قات الموجودة فب الخريآلة ‪.‬‬

‫‪- 132 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪Sympology‬‬

‫فنجد أن فئة الترميز غير مدعومة لـ ‪ .layerToModify‬فطبقات الخريطة‬

‫مع الترميز ال يدعم نوع "‪"OTHER‬‬

‫بينما ط قات الخريآلة التب تحتوي ملا أحد أنواع الرموز اصربعة اص رى تدمم الترميز‪.‬‬

‫ال يمكنك تغيير ‪ SymbologyType‬للآل قة باستخداد تعليمة اإلسناد صن هذ الخاصية‬


‫للقراءة فق ؛ فإذا ممنا بتغيير يعآلا رسالة آلأ ؛‬

‫لكق يمكق تعد ل نوع الترميز باستخداد ملف "‪ "lyr.‬تم إنماؤ مس ًقا وذلك اما موضح أدنا‬
‫؛ لنجد الترميز تغير إلا ‪Gradutated_Colors‬‬

‫اآلن يمكننا تعد ل صا ص ترميز اصلوان المتدرجة ؛ فيمكق التغيير فب الحقل الذى تم‬
‫الترميز له ملا النحو التالا‬

‫‪- 133 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫كما يمكق تغيير مدد الفئات ملا النحو التالا ‪:‬‬

‫‪Layout‬‬

‫لظهور مناصر الخريآلة والتب تم إدراجها فب مرحلة ‪ layout‬؛ يكتب الكود التالا‪:‬‬
‫)'‪mxd=arcpy.mapping.MapDocument('current‬‬
‫)‪>>> elems=arcpy.mapping.ListLayoutElements(mxd‬‬
‫‪>>> for e in elems:‬‬
‫‪...‬‬ ‫‪print e.name‬‬

‫ومق بعد ذلك ممل تعد الت ملا اال منهما ملا حدى ؛ اما يمكق أيضا التعامل م ال‬
‫منصر اما موضح‬

‫‪- 134 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وللتعد ل ملا العنوان‬

‫كما يمكق نقل العنوان إلا وس الخريآلة باستخداد موض وأبعاد إطار البيانات الخاص‬
‫ملا النحو التالا‪:‬‬

‫(أفقيا)‪ .‬لنقله إلا أملا تم وض ‪:y‬‬


‫العنوان اآلن فب وس اإلطار ً‬

‫‪- 135 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الباب الثالث‬

‫أساسيات البرمجة في لغة ‪R‬‬

‫‪- 136 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الباب الثالث ‪ :‬أساسيات الربجمة يف لغة ‪R‬‬

‫مقدمة‪.‬‬

‫تعد لغة البرمجة ‪ R‬مق اللغات المستحدثة ؛ حيث نمت بمكل سري فا مجال اإلحصاء‬
‫والمعلومات الحيوية ؛ ويزاد مدد مستخدميها وما مق ود ‪.‬‬

‫مسم‬ ‫‪ Ross Ilhaka‬ر ي‬ ‫بدأت اللغة ملا د مالم اإلحصاء النيوزلندى روس إلهاكا‬
‫اإلحصاء بجامعة أوالند بيوزلندا والعالم الكندى رووبرت جينتلمان ‪Robert Gentleman‬؛‬
‫مسم المعلومات‬ ‫وهو مالم إحصاء أيضًا متخصص فا المعلومات البيولوجية ؛ وهو ر ي‬
‫البيوجولية بنف الجام عة حيث اانوا يحاوالن إنماء منصة جد دة فا الحوس ة اإلحصا ية‬
‫وذلك ماد ‪ 1992‬م إصدار أولا ماد ‪ 1995‬واان أول إصدار مستقر للغة ‪ R‬ماد‬
‫‪ 2000‬؛ وتم تسمية اللغة بهذا االسم نس ة إلا الحرول اصولا مق العالميق ؛ وتم إمتماد‬
‫اللغة بسرمة بسبب أنها مفتوحة المصدر ؛وتتميز ه ذ اللغة مق غيرها مق برامج التحليل‬
‫اإلحصا ا ‪ SAS‬؛ ‪ SPSS‬؛ وأهم ما يميز هذه اللغة‪:‬‬

‫‪ -‬لغة مفتوحة المصدر" يخض توزيعها لتر يص" ‪ "GLP‬وبالتالا سهولة الحصول مليها‬
‫واإلضافة والتآلوير مق مبل المستخدميق‪.‬‬

‫‪ -‬لغة بسيآلة و مفسرة مثلها مثل ال ا ثون فسهلة القراءة والفهم ‪.‬‬

‫‪ -‬توافر الخوازميات الحد ثة والمتعددة‪.‬‬

‫‪ -‬توافر مصادر تعلمها ملا االنترنت ‪.‬‬

‫‪ -‬تخصصها فا التحليل اإلحصا ب ‪.‬‬

‫‪- 137 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وما يعيب هذه اللغة‪:‬‬

‫‪ -‬مدد الثقة فا اإلضافات الغزيرة مق مستخدميها ‪.‬‬

‫‪ -‬انها لغة تعتمد ملا اصوامر ؛ إال أنه يمكق تحويلها إلا صورة تم ه برنامج ‪. SPSS‬‬

‫تتعدد استخدامات لغة ‪ R‬؛ فعلا سبيل المثال ال الحصر تستخدد فا المجاالت التالية ‪-:‬‬

‫‪ :Media and News paper -1‬وسا ل اإلمالد و الصحف ‪.‬‬

‫‪ : Banking Sector -2‬لمعالجة البيانات التا تجمعها البنوك وشراات المال مق أجل‬
‫تحليل مخاطر اإل تمان ؛ ومليه تقرر شراات المال نسب الفوا د ؛ مثل البنك المرازى‬
‫اصمريكا ومجمومة ‪ ENZ‬استراليا ونيوزلندا المصرفية‪.‬‬

‫‪ : Real Estate -3‬حيث تستخدد اللغة فا مجال العقارات لتحليل المعلومات التا تم جمعها‬
‫مق أجل التنبؤ بالمبيعات‪.‬‬

‫‪ : Stock Market Exchange -4‬فا مجاالت البورصة للتنبؤ بارتفاع او انخفاض اصسهم‪.‬‬

‫‪ -5‬التنبؤ بوقت الرحلة الفعلى أو التأ ير الذى يمكق أن تتعرض له الرحلة ‪.‬‬

‫لف التغريدات‬ ‫‪ -6‬مواقع التواصل اإلجتماعى؛ يعتمدوا ملا ‪ R‬لتحليل االستنتاجات مق‬
‫لصالح بعض المنظمات ‪.‬‬

‫‪ -7‬التحليل االحصائى للبيانات الجغرافية ‪.‬‬

‫تعتبر لغة ‪ R‬األفضل للتعامل مع التخصصات التالية ‪ :‬ملم اإلحصاء –– التعلم اصلا‬
‫‪ Machine learning‬؛ تحليل البيانات الجغرافية ‪.‬‬

‫بعض الشركات العالمية التى تستخدم لغة ‪:R‬‬

‫‪– BCG – Foard – UBER – Bing – Microsoft – google – Facebook‬‬


‫‪. Twitter‬‬

‫‪- 138 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الثالث عشر ‪ :‬مقدمة يف لغة ‪R‬‬

‫التحميل والتنصيب لغة الـ ‪:R‬‬

‫يتم تحميل اللغة من الموقع الرسمى لها "‬

‫‪/https://cran.r-project.org‬‬

‫وجد نسخ لجمي أنظمة التمغيل ؛ فال بد مق ا تيار النسخة التا تتوافق م جهازى ؛‬

‫ملا ‪Install Rfor the first time‬؛ ستظهر صفحة‬ ‫لو اان التحميل أول مرة نضغ‬
‫التحميل ومتآلل ات ال نسخة ؛ النسخة اص يرة ‪4.0.2‬؛ (‪ 32‬؛ ‪ 64‬بت) ‪.‬‬

‫تم تحميل البرنامج ؛ وبعد ذلك تصآلييه ملا الجهاز مملية بسيآلة ؛ مق طريق الضغ‬
‫ملا ‪ next‬حتا االنتهاء مق التنصيب ‪.‬‬

‫وبالضغ مليه تفتح النافذة التالىة‪:‬‬


‫‪- 139 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫يتم تحميل برنامج ‪: RStudio‬‬

‫وهو البرنامج الذى يسمح لنا بمماهدة والعمل ملا برنامج ‪ R‬؛ فهو يعتبر واجهة له ؛‬
‫فيسهل ملينا اتابة الكود ؛ تم تحميله مق الموم‬

‫‪/https://rstudio.com‬‬

‫تظهر النافذة‬

‫وبالضغط على ‪ Product‬؛‬

‫‪- 140 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وا تيار ‪RStudio Desktop‬‬

‫تظهر صفحة التحميل ؛ فنختار‬

‫ثم نختار التحميل ‪ free‬؛‬

‫‪- 141 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ثم ا تيار النسخة التا تتوافق م متآلل ات الجهاز الخاص با‪ .‬تم تنصيب البرنامج ؛ ثم‬
‫بعد ذلك تم فتح البرنامج فتظهر نافذة البرنامج اما تضح ‪:‬‬

‫نوافذ البرنامج‪:‬‬

‫تنقسم نافذة البرنامج إلى ‪ 4‬أقسام ‪:‬‬

‫القسم األول " ‪: "Console‬وهو القسم الخاص بتنفيذ االوامر ؛ اما يمكق اتابة الكود‬
‫المراد تمغيله ‪.‬‬

‫القسم الثانى " ‪ : " Source Editor‬وهو محرر المصدر والذى تكتب فيه اصوامر‬
‫ويجرى التعد ل مليها ؛ اما يمكق حفظها لالستفادة منها بعد ؛ ويمكق أيضًا تنفيذ السآلر‬
‫مق الل الضغ ملا ‪.Ctrl+ Enter‬‬

‫‪- 142 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪2‬‬
‫‪4‬‬

‫‪1‬‬
‫‪3‬‬

‫القسم الثالث" ‪ : " Workspace,History and Files‬منآلقة العمل وحافظة الملفات ؛‬


‫ويظهر فيها اصوامر التا نفذت ؛ اما يمكق إمادة تنفيذ أى اود بالضغ مليه دبل اليك‪.‬‬

‫القسم الراب " ‪ : " Plots, Package and Help‬وها المنآلقة الخاصة بعرض جمي‬
‫الملفات والرسود التا تم رسمها فا ‪ Plots‬؛ اما يمكق التنقل بيق الرسود وحفظها ؛‬
‫والمنآلقة أيضاص مخصصة للحزد ‘ فتحتوى ال‪ R‬ملا العد د مق الحزد الجاهزة ؛ فيمكق‬
‫تحميل أى حزمة مق االنترنت وإجراء التعد الت مليها ؛ وتغآلا هذ الحزد جمي التحليالت‬
‫اإلحصا ية‪.‬‬

‫مق المهم معرفة مجمومة ا تصارات ‪ shortcut‬الموجودة ؛ ويمكق اإلطالع مليها مق‬
‫الل ؛‬

‫‪- 143 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فتظهر العد د مق ‪shortcut‬‬

‫والزالة هذ الماشة تم الضغ ملا ‪ esc‬مق لوحة المفاتيح‪.‬‬

‫يمكق استخداد نافذة اصوامر " ‪ “ console‬كألة حاس ة ؛ ويسامد فا مملية الكتابة‬

‫‪- 144 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وفا نافذة ‪ Source‬؛ حيث يمكق اتابة اكواد وحفظها مق الل ‪ File‬ثم ‪Save as‬؛ولو‬
‫ال ؛ فيفضل حفظه مق طريق ‪Save with‬‬
‫وجد بالكود بالعربب مثل اتابة التعليق مث ً‬
‫‪. Encoding‬‬

‫وفا هذ النافذة يمكق أيضا تنفيذ اصوامر ؛ إما مق طريق ‪ Run‬أو ‪ ctrl+enter‬مق لوحة‬
‫المفاتيح‪ .‬وفا نافذة الملفات والرسود والحزد ؛ حيث تم مرض جمي الملفات‬

‫‪- 145 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫والجد ر با لذار انه ال بد مق تحد د مسار لمنآلقة العمل الخاصة با ؛ حيث أنه إذا تم حفظ‬
‫أى ممل دون وض مسار له ؛ فيتم حفظه تلقا يًا فا المسار المحدد لمنآلقة العمل ؛ ويتم‬
‫تحد د ذلك مق الل ‪ more‬؛ ثم ‪Set as working Directory‬‬

‫وبالنس ة لل‪ plot‬تعرض الرسود‬

‫لعرض‬
‫الرسوم‬

‫‪- 146 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ويمكق تصد ر هذ الرسومات مق ‪.Export‬‬

‫تم مسح ما بالنافذة ‪.‬‬ ‫ومق‬

‫ومق ‪ packages‬؛ تظهر ‪ packages‬الموجوة ملا جهازى‬

‫‪- 147 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫مالمة صح أمامها ؛ فتظهر فا نافذة‬ ‫الل وض‬ ‫ويمكق تحميل ‪ packages‬مق‬


‫‪ concol‬؛ فنضغ ‪.enter‬‬

‫وفا حالة الحاجة إلا ‪ packages‬لم تكق موجودة ملا الجهاز فيتم تحميلها مق طريق ‪:‬‬

‫ملحوظة ‪ :‬للرجوع إلا االمر السابق مق الكيبورد ( السهم صملا) ‪.‬‬

‫والستخداد ‪ help‬؛ نكتب ؟ وبجوارها ما نريد المسامدة مق اجله ؛ أو اتابة ‪help‬‬

‫كما يمكق ال حث م اشرة مق ‪help‬‬

‫و‪ Enviroment‬؛ نجد جمي اصوامر التا تم انماؤها ملا البرنامج‪:‬‬

‫ويمكق التغيير فا صا ص الخ واللون مق الل ‪ Tool‬ثم ا تيار ‪Globale option‬‬

‫‪- 148 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫عمل تعديالت على الكود‬

‫عمل تعديالت على‬


‫حجم الخط والخلفية‬

‫عمل تعديالت نوافذ‬


‫والتبديل بينهم‬

‫لنشر ‪Package‬‬

‫‪- 149 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الرابع عشر‪ :‬املتغريات ‪ Variables‬فى لغة ‪R‬‬

‫تعريف ‪: Variables‬‬

‫يمكق وض مفهود م س للمتغير ؛ فهو ع ارة مق محفظة صغيرة " حاوية " تستخدد لحفظ‬
‫البيانات أثناء تمغيل البرنامج ؛ حيث وجد مدة أنواع مق هذ المحفظات ال نوع يستخدد‬
‫لحفظ نوع مق البيانات محدد‪.‬‬

‫أنواع ‪ Variables‬فى لغة ‪:R‬‬

‫‪ Integer -‬العدد الصحيح‪.‬‬

‫‪( Duble or Numeric -‬الذى يحتوى ملا مدد صحيح ومدد ممري ‪ 10.5‬أو مدد‬
‫كسرى ‪.)2/10‬‬

‫‪ :Character or string -‬وهو المتخصص بتخزيق النصوص ‪.‬‬

‫‪ :Boolean Or Logical -‬المنآلقا وترج تسميتها إلا مالم الجبر جورج بول الذى‬
‫ا ترع المنآلق الرياضا أو الجبر المنآلقا ؛ والمتغير يأ ذ قيمتيق فق ‪ True‬و ‪false‬‬
‫ويتم استخداد هذا النوع مق المتغيرات لإلشارة سواء اان هذا صحيح أد ال ‪.‬‬

‫تطبيق ‪:‬‬

‫نفتح برنامج ‪ R‬؛ تظهر نافذة البرنامج ؛ لحذل الصفحة ؛ إما مق الل ‪ l + ctrl‬مق‬
‫لوحة المفاتيح أو اليك يميق ملا النافذة وا تيار ‪ clear window‬أو مق ‪ Edit‬ومنها‬
‫‪Clear Console‬‬

‫‪- 150 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫المتغير ‪: Integer‬‬

‫برنامج ‪ R‬يعتبر ال مدد صحيح مدد ممري ؛ فمثال الرمم ‪ 12‬مدد صحيح فلو تم اتابتها‬
‫‪ 12‬فق لم تعرل مليه ‘ فحتا تم تعرل البرنامج مليه بأنه رمم صحيح يكتب ‪12.00‬‬
‫‪typeof‬‬ ‫أو ‪ 12L‬الرمم ويليه حرل ‪ " L‬اابتل "؛للتعرل ملا نوع المتغير تكتب الدالة‬
‫)(‪.‬‬

‫تم كتابة نوع المتغير ‪double‬‬

‫وبعد وضع ‪ L‬تم كتابة انه رقم‬


‫صحصيح‬

‫‪- 151 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪:Duble or Numeric‬‬

‫‪:Character or string‬‬

‫‪: Boolean Or Logical‬‬

‫كيفية تسمية المتغيرات‪:‬‬

‫يمكق تسمية المتغيرات بجمي اصحرل واصرماد والعالمات ولكق ال بد مق اال ذ فا‬
‫؛ ويمكق وض نقآلة مبل‬ ‫اإلمت ار الترتيب ؛ ففب التسمية اصولا نستخدد اصحرل فق‬
‫االسم ؛ اما يمكق استعمال _ ؛ أو استعمال اصرماد بدال مق اصسماء‪.‬‬

‫الكلمات التي ال يقبلها لغة الـ ‪R‬‬

‫ال يقبل @ ؛ وال يمكق أن بدأ االسم برمم او بـ _ وال بنقآلة ليها رمم ‪.‬‬

‫‪- 152 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الثوابت في لغة ‪R Constantes‬‬

‫هب الكيانات التب ال يمكق تغييرها ؛ وهناك ثالثة أنواع ر يسة مق الثوابت وها الثوابت‬
‫رممية ؛ و الثوابت مق نوع ‪ Character‬والثوابت المدمجة ‪. Built-in‬‬

‫الثوابت الرقمية ‪Numeric Constantes:‬‬

‫وها إما أن تكون مق النوع ‪ " integer‬رمم صيح ‪ " 5L‬أو ‪ " Double‬رمم ممرى‪ " 5.5‬؛‬
‫الثوابت العقدية " ‪ "Complex 5i‬وأ ي ار ‪0xff – 0XF+1 "Hexadecimal numpers‬‬
‫"‪.‬‬

‫‪- 153 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الثوابت من نوع ‪:Character‬‬

‫وها نومان "‪ "5‬وفا حالة وض الرمم ‪ 5‬بهذ الصورة فال يمكق إجراء أي ممليات‬
‫حسابية مليه ‪ .‬أو نص بيق "" مثل " ‪."GIS‬‬

‫الثوابت المدمجة ‪: Built-in‬‬

‫و ها ‪month.abb – month.name – LETTERS – letters‬‬

‫‪- 154 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل اخلامس عشر‪ :‬العوامل " ‪ " Operators‬يف لغة ‪R‬‬

‫العوامل هب رموز تخبر المترجم بإجراء ممليات محددة سواء حسابية أو منآلقية ؛ ويوجد‬
‫العد د مق العوامل المدمجة فب لغة ‪ R‬منها العوامل الحسابية ‪Arithmetic operators‬‬
‫والعوامل المنآلقية ‪Logical operators‬؛ والعوامل العال قية ‪Relational operators‬‬
‫و موامل اإلحالة ‪. Assignement operators‬‬

‫العوامل الحسابية ‪: Arithmetic operators‬‬

‫‪ +Addition‬؛ الضرب‬ ‫هب العوامل التب تم استخدامها للعوامل الحسابية مثل الجم‬
‫‪ *Multiplication‬؛ الآلرح‪ – Subraction‬؛اصس ‪ ^ Exponent‬؛ القسمة ‪/ Division‬‬
‫‪ % / % Integer Division‬أو المت قا مق القسمة‬ ‫القسمة الآلبيطية‬ ‫؛ سواء‬
‫‪ . %% Modulus‬وتتم مثل هذ العمليات دا ل لغة ‪ R‬اما موضح ‪:‬‬

‫‪- 155 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫العوامل العالئقية ‪: Relational operators‬‬

‫هب العوامل التب تدل ملا مقارنات بيق القيم " ايفية ارت اط العناصر ب عضها ال عض "‬
‫< ؛ يساوى = ؛ال يساوى = ! ؛ أكبر مق او يساوى =‬ ‫وها أكبر مق < ؛أصغر مق‬
‫< ؛ أصغر مق أو يساوى => ‪.‬‬

‫العوامل المنطقية ‪: Logical Operators‬‬

‫هب العوامل التب تم استخدامها لتنفيذ موامل منآلقية ( ‪ (not - or – and‬وتكون‬


‫‪ & and‬؛ ال بد أن يكون طرفا الكود‬ ‫اإلجابة منها أيضا بـ ‪ true‬و ‪ False‬؛ وفا‬
‫صحيحيق حتا تكون اإلجابة ‪. true‬‬

‫‪- 156 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫صحيح يعآلا ‪TRUE‬‬ ‫وفا حالة ‪( or‬ا ا) إذا اان أحد الآلرفيق فق‬

‫وفا العامل المنآلقا ‪ ! NOT‬ويستخدد للنفا‬

‫عوامل اإلحالة ‪: Assignement operators‬‬

‫‪<- Leftwards assignement‬‬ ‫تم استخدامها لتعييق قيم المتغيرات ؛ وها نومان‬
‫و ‪ - > Rightwards assignement‬؛ وها أيضاً تم ه = فب التعامل م القيم‪.‬‬

‫‪- 157 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تطبيق‪:‬‬

‫‪ -‬نفتح صفحة جد دة مق ‪ File‬ثم ‪New script‬‬

‫‪ -‬أكتب الكود(" ‪)"hello GIS‬‬

‫مم بتظليل السآلر بالماوس ثم اليك يميق وا تار ‪Run Line or selection‬‬

‫‪- 158 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل السادس عشر ‪:‬التحكم يف تدفق املعلومات ‪Flow Control‬‬

‫‪R loops‬‬

‫الحلقات فب لغة ‪ : R‬هب ع ارة مق سلسلة اإلرشادات التب تتكرر بإستمرار حتا الوصول‬
‫إلا حالة معينة ؛وهناك ثالثة أنواع وها ‪:‬‬

‫‪For – while - Repeat‬‬

‫‪ : For( )-‬حيث يكون ‪ Syntax‬ملا النحو التالا ‪:‬‬

‫}‪For (items) {instructions or body of for‬‬

‫تطبيق‪:‬‬

‫افتح برنامج ‪ S studio‬؛ وفا نافذة الـ ‪ Source‬نكتب ‪ For‬وبمجرد اتابة ‪ for‬يقود‬
‫البرنامج بإمآلاء نافذة بترشيح الط ارات‬

‫‪i^2‬‬ ‫‪ Tab‬مق لوحة المفاتيح ؛ أكمل الكود ؛ لو ‪ i‬مق ‪ 2:9‬اط‬ ‫نقود بإ تيار الـ ‪ for‬ثم‬
‫ملا النحو الموضح بالنافذة التالية ‪:‬‬

‫‪- 159 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫اضغ ملا ‪ run‬؛ تظهر النتيجة فب نافذة ‪Console‬‬

‫حيث ‪ i‬تأخذ القيم ‪2‬‬

‫‪3‬‬

‫‪4‬‬

‫‪5‬‬

‫‪6‬‬

‫‪7‬‬

‫‪8‬‬

‫‪9‬‬

‫‪9‬‬

‫تطبيق ‪: 2‬‬

‫يحتوى المتجهة ‪ y‬ملا العناصر التالية ‪ 2-1-4-5-9-8-7-3 :‬؛ فاحسب مدد اصرماد‬
‫الزوجية فب المتجهة باستخداد الحلقة ‪. For‬‬

‫المآللوب اتابة برنامج نصا باستخداد ‪ if ….else Statement‬والحلقة ‪ For‬حيث يكون‬


‫مادر ملا حساب ‪ factorial‬لرمم معيق ‪ .‬تم اتابة البرنامج ملا النحو التالا ‪:‬‬

‫‪- 160 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ثم بعد ذلك تهمير وممل ‪ run‬؛ فتظهر النتيجة بالنافذة ؛ حيث تم مد اصرماد الزوجية‬
‫وها ‪3‬‬

‫تآلبيق ‪:3‬‬

‫‪- 161 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تطبيق‪:‬‬

‫لدى مجمومة مق درجات الآلالب ؛ والمآللوب لو الدرجة أمل مق ‪ 10‬امآلا للآلالب ‪fail‬‬
‫؛ ولو أكثر مق ‪ pass 10‬و لو الدرجة ‪ 13‬أمآليه ‪ good.‬؛ فيأتا هذا التآلبيق ليوضح‬
‫فإذا ط قنا الكود العادى تم التعامل م الجزء اصول مق الكود ؛‬ ‫لنا أهمية الحلقة ‪for‬‬
‫لكق فب ‪ for‬تم التكرار ملا ال جزء مق الكود وتآلبيقه اما موضح أدنا ؛‬

‫ملحوظة ‪ :‬مبل ممل ‪ run‬للكود تم أ تيار الكود اله ؛ وتظهر النتيجة ملا النحو التالا ‪:‬‬

‫تم تقييم ‪ test expression‬؛ فإذا اان صحيح تم تآلبيق نص الحلقة ؛ ثم تم إمادة‬
‫التقييم حتا آلل تحققه ليخرج مق الحلقة ‪.‬‬
‫‪- 162 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تآلبيق‪:‬‬

‫فب‬ ‫ففب هذا التآلبيق الحلقة التك اررية تمترط فب حالة أن ‪ x‬أمل مق ‪ 10‬تم ط امة ‪x‬‬
‫حيق أن ‪ x‬فب اصصل = ‪ 1‬؛ ويتم إضافة ‪ 1‬ال مرة ‪ x+1‬؛ فيتم تآلبيق النص حتا‬
‫تحقق شرط ‪ while‬؛ فيتم ط امة اصرماد حتا الرمم ‪ 9‬؛ " <مق ‪."10‬‬

‫تآلبيق ‪:2‬‬

‫أكتب برنامج باستخداد ‪ if …else‬والحلقة التك اررية ‪ while‬للحصول ملا مجموع اصمداد‬
‫الآلبيطية لعدد ما ؟‬

‫‪- 163 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وفا حال تغيير قيمة ‪ x‬بـ ‪0‬‬

‫‪ -‬الحلقة ‪:( ) Repeat‬‬

‫تم استخدامها لتكرار اتلة مق التعليمات البرمجية مدة مرات ؛ فال وجد فب ‪Repeat‬‬
‫‪ loop‬أي شرط للخروج مق الحلقة ؛ لذا فال بد أن نض بأنفسنا شرط صريح دا ل جسم‬
‫الحلقة للخروج منها وذلك باستخداد ‪ Breake statement‬؛ النه لو لم تم ممل ذلك‬
‫لها نهاية ‪.‬‬ ‫يكون هناك حلقة لي‬

‫الـ ‪:Breake statement‬‬

‫تستخدد دا ل الحلقة سواء ‪ For‬أو ‪ Reapeat‬أو ‪ While‬اليقال التكرار حيث تص ح‬


‫الحلقة غير مابلة ملا تدفق المعلومات " نهاية الحلقة"‪.‬‬

‫حيث يأتب ‪ Breake statement‬فإذا تحقق المرط الخاص به فيخرج مق الحلقة وإن‬
‫لم تحقق يستمر الا الحلقة مرة أ رى وهكذا‪.‬‬
‫‪- 164 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تطبيق ‪:‬‬

‫تم ممل ‪ Breake‬بعد ط امة الرمم ‪ 1‬و ‪ 2‬النآل اق المرط )‪.if (val==3‬‬

‫‪: Next Statement‬‬

‫تستخدد لتخآلا التكرار الحالب للحلقة دون إنها ها ؛ إذا تحقق المرط وبتآلبيق ذلك فب‬
‫المثال السابق نجد البرنامج تخآلا الرمم ‪ 3‬ليكمل الحلقة اما موضح أدنا ‪:‬‬

‫‪- 165 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫مثال لتطبيق ‪:Repeate loop‬‬

‫المتغير ‪ x‬إلا ما ال نهاية ‪.‬‬ ‫ففب هذا المثال إذا لم تم وض ‪ break‬سيستمر فا ط‬

‫‪- 166 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل السابع عشر‪ Data Structure:‬هياكل البيانات‬

‫‪ Data Structure‬هو شكل منسق لتنظيم البيانات ومعالجاتها وتخزينها واسترجامها؛ حيث‬
‫يستخدد المكل المناسب المكانية استرجاع البيانات بالصورة المآللوبة ‪.‬‬

‫‪ Vectors -1‬في لغة ‪:R‬‬

‫النوع‬ ‫المتجهات هب ع ارة مق سلسلة مق مناصر البيانات أحادية اصبعاد ومق نف‬
‫اصساسا ؛ وأنواع البيانات التب تتفق م المتجهات هب‬

‫‪ : Logical-‬حيث تأ ذ القيمة ‪ TRUE‬أو >‪FALSE‬‬

‫‪.)12L – 15L ( :Integer -‬‬

‫‪:Numeric-‬‬

‫‪-‬البيانات العقدية ‪.Complex‬‬

‫‪-‬البيانات مق نوع ‪.Character‬‬

‫كيف تنمأ المتجهات ‪:‬‬

‫تنماء المتجهات مادة باستخداد الدالة ‪c‬؛ فمثال ‪ x‬متجهة تحتوى ملا العناصر التالية‬
‫‪1‬و‪2‬و‪ 3‬؛ فآلريقة إنماؤها اما لا " يمثل ال سآلر نوع مق البيانات السابق ذارها"‪.‬‬

‫‪- 167 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫إنماء متجهات باستخداد ‪ Opreator‬ع ارة مق ‪:‬‬

‫إنماء متجهات باستخداد الدالة ‪ seq‬؛ التب تمير إلا التسلسل ؛ حيث تم تحد د نقآلة‬
‫البداية والنهاية والمطيار الذى يحدد طول ال آلوة‪.‬‬

‫ولمعرفة معلومات مق أي دالة تم اتابة الدالة يس قه مالمة استفهاد‪.? Seq‬‬

‫طرق الوصول إلى عناصر المتجهات ‪:‬‬

‫فلد نا مثال متجه ‪ x‬العناصر يحتوى ملا‬

‫العنصر ‪ 8‬؛ فيتم ذلك مق طريق المؤشرات وهناك ثالثة‬ ‫)‪ X=c(1,5,8,9,3‬ونريد فق‬
‫أنواع مق المؤشرات هب ‪. Logical – integer – character :‬‬

‫‪- 168 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫استخدام المؤشرات ‪:integer‬‬

‫ملحوظة‪:‬‬

‫المتجهات التب تستعمل امؤشرات للوصول إلا مناصر متجهة أ رى تبدأ العدد مق ‪1‬‬
‫اللغات اص رى التب تبدأ العد مق صفر ‪ .‬اما يمكق استخداد اصرماد السال ة؛ ويمكق‬ ‫مك‬
‫استخداد المتجهة مكونة مق اصمداد الصحيحة فق للوصول الا المتجهة اصساسية ؛ اما‬
‫يجب مراماة مدد ل اصرماد الموج ة م اصرماد السال ة‪.‬‬

‫للوصول إلى عنصريين و‬


‫استخدام السالب الستثناء‬
‫العنصر الموافق لهذا الرقم ‪1-‬‬

‫استخدام المؤشرات المنطقية ‪logical:‬‬

‫تم إرجاع العناصر التب تتفق موض المتجه المنآلقا ‪TRUE‬؛ فب حيق‬

‫ال تظهر العناصر التب توافق القيمة ‪False‬‬

‫‪. TRUE‬‬ ‫ففب المثال تم ط امة القيم التب تتفق م‬


‫‪- 169 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫استخدام المؤشرات ‪:Character‬‬

‫وهو مفيد فب المتجهتات المسماة بأسماء‬

‫يمكق تعد ل " ‪" Modify‬أو بتر" ‪" truncate‬متجه باستخداد موامل اإلحالة وهناك طريقتيق‬
‫إما بإستخداد ‪ Integer vector‬أو بإستخداد ‪. Character vector‬‬

‫‪: Integer vector -‬‬

‫‪- 170 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ -‬عمل تعديل باستخدام ‪.character‬‬

‫والجد ر بالذار أنه لعمل مسح أو إزالة لمتجه ما ؛ هناك طريقتان؛ إما أن نعآلا للمتجه‬
‫القيمة ‪ NULL‬وبهذا تص ح غير معرفة أو باستخداد )‪ )rm‬وها ا تصار لكلمة ‪remove‬‬
‫وفا هذ الحالة تم مسح المتجه بعناصر ااملة‪.‬‬

‫تطبيق‪:‬‬

‫كتابة برنامج لحساب القيمة القصوى والقيمة الدنيا لمتجه معينة‪:‬‬

‫‪- 171 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تطبيق ‪:‬‬

‫ممل برنامج اليجاد مدد القيم اصكبر مق متوس المتجهة ؛‬

‫‪- 172 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الثامن عشر‪:‬املصفوفات والقوائم يف لغة ‪:"Matrix "R‬‬

‫المصفوفة هب تراي ة بيانات ثنا ية اصبعاد؛ وتتكون مق العناصر التالية‪:‬‬

‫البيانات " ‪ "data‬وها المتجهات التب تمكل بيانات المصفوفة؛ وتكون ملا هيئة صفول‬
‫واممدة؛ لتكون الصفول هب العنصر الثانا واالممدة العنصر الثالث؛ ويأتب العنصر‬
‫المنآلقا العنصر الراب وأ ي ار منصر الـ ‪ dimnames‬لوض أسماء اصممدة والصفول‪.‬‬

‫تم الطباعة على هيئة صفوف ؛‬


‫الدالة ‪ Class‬لمعرفة الفئة التي‬
‫ينتمى إليها المتغير‬

‫والدالة ‪ attribute‬و ‪dim‬‬


‫لمعرفة أبعاد المصفوفة فهى‬
‫صفان وثالثة أعمدة‬

‫طرق إنشاء المصفوفات في ‪:R‬‬

‫يمكق انماء مصفوفة ؛ ففب المثال التالب ؛يتم استخدام األرقام من ‪ 9: 1‬؛ويتم تحد د مدد‬
‫الصفول فق ؛( ‪ parameter‬اصول) ؛ والنتيجة مصفوفة تتكون مق ثالثة صفول وثالثة‬
‫أممدة ؛ فعلا الرغم مق أننا لم نحدد مدد اصممدة إال أن ‪ R‬توم مدد اصممدة بناء ملا‬
‫البيانات المد لة ومدد الصفول المحددة ‪.‬‬

‫‪- 173 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وإذا ممنا بتحد د القيمة ‪ True‬للـ ‪ "pyrow” parameter‬ونالحظ الفرق‬

‫اصممدة فب حيق ان المصفوفة الثانية ترتيبها ت‬ ‫فنالحظ أن ترتيب المصفوفة اصولا ت‬


‫الصفول‪.‬‬

‫كما يمكن عمل مصفوفة عن طريق تحديد متجهيق (‪ ) x,y‬ثم دمجهم إما دمجهم باستخداد‬
‫الدالة الخاصة باصممدة " ‪"cbiand‬‬

‫أو دمجهم باستخداد الدالة "‪ "rbind‬والخاصة بالصفول‬

‫‪- 174 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫فنجد أن أبعاد المصفوفة تختلف فب الحالتيق ففب الحالة اصولا ‪ 3‬صفول وممود ق والحالة‬
‫الثانية ‪ 3‬أممدة وصفيق‪.‬‬

‫كما يمكن عمل مصفوفة عن طريق إنماء متجهة معينة وتحد د أبعادها دويًا باستخداد‬
‫الدالة ‪dim‬‬

‫يمكق الوصول إلا مناصر المصفوفة باستخداد المتجهات المنآلقية امؤشرات؛‬

‫فلد نا هذ المصفوفة‬

‫فب مكان الصفول ( ‪ TRUE,FALSE,TRUE‬؛) ومعناها أننا‬ ‫ونريد استخداد المتجهة‬


‫نريد ظهور الصف اصول والثانا وال نريد ظهور الصف الثانا ؛ ومكان االممدة نريد‬
‫ظهورها الها لذلك نستخدد المتجهة المنآلقية ( ‪ TRUE,TRUE,TRUE‬؛)‬

‫‪- 175 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تعديل " ‪" modify‬عناصر المصفوفة ‪:‬‬

‫تعد ل القيمة الخاصة بالصف ‪ 2‬والعمود ‪ 2‬إلا ‪14‬‬

‫تعد ل جمي القيم التب تقل مق ‪ 8‬إلا ‪15‬‬

‫وتستخدد الدالة )‪ t(x‬لقلب المصفوفة " التبد ل بيق الصفول واصممدة"‬

‫والضافة أممدة جد دة نستخدد الدالة ‪cbiand‬؛‬

‫‪- 176 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ويتم إضافة صفول نستخدد دالة ‪rbiand‬؛‬

‫كما يمكق إزالة الصف أو أي ممود نريد ؛ففب المثال التالا نريد حذل الصف الثالث‬

‫ولحذل العمود اصول‬

‫‪- 177 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫القوائم في لغة ‪:)lists ( R‬‬

‫القا مة هب تراي ة بيانات تحتوى ملا مكونات أنواع مختلفة مق البيانات؛ والـ ‪Syntax‬‬
‫الخاص بالـ ‪ List‬ملا النحو التالا ‪:‬‬

‫طريقة المتجهات ؛‬ ‫نف‬ ‫وللحصول ملا مناصر القا مة نت‬

‫مثال‪:‬‬

‫‪- 178 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫نريد الحصول على العنصر األول‬


‫والثانى ؛ نريد جميع العناصر عدا‬
‫الثانى ‪ 2-‬؛ وفى المؤشرات المنطقية‬
‫فتعمل مثل المتجهات على القوائم ؛‬
‫فالمقصود هنا أن إذا تم التأشير‬
‫بمتجهة طولها أصغر من طول‬
‫المتغير فتعتبر العناصر المتبقية‬
‫صحيحة‪.‬‬

‫‪ : Data frame‬هب نوع مق أنواع الـ ‪ List‬وها ع ارة مق مجمومة البيانات ؛ حيث‬
‫توافق ال صف م مالحظة مختلفة وال ممود م متغير محدد؛ وها ما مة تتكون مق‬
‫الآلول ‪.‬‬ ‫متجهات مق نف‬

‫‪- 179 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل التاسع عشر ‪ :‬العوامل ‪ Factors‬والدوال يف لغة ‪R‬‬

‫العامل ‪ :‬هو بنية بيانات تستخدد الحقول أو المتغيرات التب تتآللب إلا مدد محدد مس قًا‬
‫مق القيم ؛ والبيانات هنا تكون فئوية ؛ فيستخدد العامل لتصنيف البيانات وتخزينها فب‬
‫مستويات مختلفة ؛ اما تم استخدامه مندما يكون هناك العد د مق القيم المتكررة ؛ ويتضح‬
‫دور اما لا ‪:‬‬

‫كما يمكق ممل ‪ Factors‬مق طريق ‪ Data frame‬؛ حيث ان ال ‪ Dataframe‬تعتبر‬


‫كل متغير مق نوع ‪ character‬او ‪ string‬تعتبر ‪ Factors‬بمكل إفتراضا‪.‬‬

‫‪- 180 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الدوال " ‪ "Function‬في لغة ‪: R‬‬

‫الدالة هب مجمومة مق الط ارات منظمة صداء مهمة محددة ؛ حيث تحتوى لغة ‪ R‬ملا‬
‫العد د مق الدوال باإلضافة إلا إمكانية إنماء المستخدد دوال اصة له ‪.‬‬

‫وتتكون الدالة مق اسم الدالة – ‪. body - Formal‬‬

‫الدالة ‪ : Return‬مند استخداد الدوال ؛ فنآللب مق برنامج ‪ R‬معالجة البيانات وإمادة‬


‫الناتج ‪.‬‬

‫الدالة المتكررة ‪ :‬وها الدالة التب تستدما نفسها وتعرل هذ التقنية باسم التكرار ؛ حيث‬
‫تم حل المساكل مق طريق تقسيمها إلا مماكل فرعية أصغر ‪.‬‬

‫‪ : Infix operators‬ع ارة مق موامل تقود باستدماء دالة تعمل فب لفية البرنامج ؛‬

‫للغة ‪ R‬العد د مق المكت ات والدوال النماء المخآلآلات والرسود البيانية ؛‬

‫الدالة ‪ Pie‬وتستخدد ( الـ )‪data – labels – radius- main – col- colockwise‬‬

‫‪ :Data‬وها القيم الرممية المستخدمة ‪.‬‬

‫‪- 181 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪ : Labels‬لوصف وتسمية الم ار ح الخاصة بالمخآل الدا رى‪.‬‬

‫‪ : Radius‬لتحد د طول المعاع المخصص‪.‬‬

‫‪ :Main‬لكتابة العنوان ‪.‬‬

‫‪ : Col‬لتحد د لوحة اصلوان‪.‬‬

‫‪ :Colockwise‬قيمة منآلقية تمير إذا اانت الم ار ح مرسومة فب اتجا مقارب السامة أد‬
‫مقارب السامة ‪.‬‬ ‫مك‬

‫تطبيق ‪:1‬‬

‫وتستخدد الدوال السابق ذارها لوض منوان وتغيير اصلوان اما تضح‬

‫‪- 182 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫؛ حيث يكون لكل لون رمم محدد ؛ ويمكق‬ ‫ويمكق معرفة اصلوان المتوفرة دا ل البرنامج‬
‫استخداد الرمم بدال مق اللون ‪:‬‬

‫كما يمكق تغيير اصلوان أيضا باستخداد الدالة ‪ rainbow‬حيث نحدد لها مدد اصلوان وها‬
‫تقود بتلويق المكل بقوس مزح‪.‬‬

‫‪- 183 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ويتم حفظ المخآل ملا النحو التالا‪:‬‬

‫تطبيق‪:‬‬

‫لرسم دا رة بتكرار رمم مدد تك اررات محددة ؛ فمثال تكرار الرمم ‪ 2‬؛ ‪ 24‬مرة ؛ تم ذلك ملا‬
‫النحو التالا ‪:‬‬

‫الضافة عنوان‬ ‫لتحديد لون العنوان‬


‫التجاه عقارب الساعة‬

‫طول شعاع الشكل‬

‫‪- 184 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫لعمل مخآل دا رى ثالثا اصبعاد؛ تآللب ذلك تحميل الـ ‪ packages‬الخاصة باالشكال‬
‫ثالثية اصبعاد ؛ وال بد أن يكون الجهاز متصل بم كة االنترنت ؛‬

‫فتظهر نافذة نضغ ملا ‪ ok‬؛ لتظهر نافذة أ رى نختار منها ؛ ‪ plotrix‬ثم ‪ ok‬لتحميل‬
‫‪ packages‬الخاصة بالدا رة ثالثية اصبعاد‪.‬‬

‫وبعد اصنتهاء مق التحميل نستدما المكت ة الخاصة بها وذلك مق طريق )‪library(plotrix‬‬

‫‪- 185 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وفيما لا توضيح تغيير اصلوان ؛ وانفصال المكل باستخداد ‪.explode‬‬

‫األعمدة البيانية في لغة ‪:R‬‬

‫باستخداد ‪ barplot‬وذلك باستخداد ‪ syntax‬الر يسية التالية ‪:‬‬

‫‪ : Data‬مصفوفة تحتوى ملا قيم رممية‪.‬‬

‫‪ :Xlab‬لتسمية المحور ‪x‬‬

‫‪ :Ylab‬لتسمية محور ‪y‬‬

‫‪ :Main‬منوان المخآل ‪.‬‬

‫‪: Names.arg‬متجهة مق اصسماء التب تظهر تحت ال شري مق المخآل ‪.‬‬

‫‪ :Col‬اصلوان‪.‬‬

‫‪- 186 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تآلبيق ‪:‬‬

‫ويمكق تغيير اللون ووض منوا ق ؛ اما موضح‬

‫أفقا‬ ‫ولعمل التخآلي‬

‫‪Horize=TRUE‬‬

‫‪- 187 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫المدرج التكرارى الهستوجرام ‪:‬‬

‫يمثل ترددات القيم التب يحتوى مليها المتغير فب نآلاق محدد؛ ويم ه اصممدة ؛ لكق ال‬
‫شري فب الهستوجراد يمثل تردد مدد القيم الموجودة فب هذا النآلاق؛‬

‫ويتم انماؤ بالدالة ‪ hist‬واال مق‬

‫‪Data- xlim –ylim‬‬

‫المنحنيات ‪:‬‬

‫هب رسود بيانية ترب بيق سلسلة مق النقاط؛ ويتم إنماؤ باستخداد الدالة ‪ plot‬؛ وال مق‬
‫‪.data-xlab-ylab-main-col-type‬‬

‫‪- 188 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫بالنسبة للـ ‪type‬‬

‫"‪ : "p‬لرسم نقاط فق ‪.‬‬

‫"‪ : "o‬لتوصيل النقاط بخ م وجود النقاط‪.‬‬

‫"‪ : "L‬لتوصيل بخ م إزالة النقاط‪.‬‬

‫"‪ "C‬زيل النقاط ويترك مكانها فارغ ليص ح الخ غير متصل‪.‬‬

‫‪- 189 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الباب الرابع‬

‫لغة ‪ R‬وتحليل البيانات في‬

‫نظم المعلومات الجغرافية‬

‫‪- 190 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الباب الرابع ‪ :‬لغة ‪ R‬وحتليل البيانات يف نظم املعلومات اجلغرافية‬

‫مقدمة‬

‫الـ ‪ R‬وتحليل البيانات المكانية‪:‬‬


‫منذ أوا ل العقد اصول مق القرن الحادي والعمريق ماد مجتم نم مق مآلوري ‪ R‬ببناء‬
‫مجمومة متنومة مق الحزد لتمكيق ‪ R‬مق التفامل م البيانات الجغرافية‪ .‬السؤال المآلروح‬
‫اآلن لماذا نتجه الستخدد لغة ‪ R‬لتحليل البيانات المكانية؟‬

‫وذلك تضح مق مدى القدرات الجغرافية لـ ‪ R‬بسهولة مق الحزد العد دة المدرجة فب مرض‬
‫ومعالجة البيانات المكانية‪.‬‬

‫استخدمت ال هذ الحزد لعمل افتراضات مختلفة حول ايفية تنظيم البيانات المكانية ولم‬
‫يكق لدى ‪ R‬نفسها القدرة ملا تمييز اإلحداثيات مق اصرماد اص رى‪ .‬باإلضافة إلا ذلك‬
‫كانت طرق رسم البيانات المكانية والمهاد اص رى م عثرة ومدمت افتراضات مختلفة حول‬
‫تنظيم البيانات إال أنها اانت بدا ية‪.‬‬

‫ماد ‪ 5‬مق مآلوري ‪ R‬بكتابة حزمة ‪ sp‬لتوسي ‪ R‬م فئات البيانات المكانية حيث تحدد‬
‫كيفية تنظيم البيانات المكانية وتخزينها‪ .‬ملا سبيل المثال مد توضح االحداثيات الجغرافية‬
‫وتوضح أي نظاد مرجعب لإلحداثيات تم استخدامه ‪.‬‬ ‫لجمي فئات البيانات المكانية‬
‫التخزين والعرض ‪:‬‬

‫نظر صن ‪ R‬لغة مفتوح المصدر فهذا تيح اكتمال معنا ال بت وال با ت نمغل به‬
‫ًا‬
‫مآللوبا ويترك‬
‫ً‬ ‫البرنامج وم ذلك فمق دوامب سرور معظم المستخدميق أن ذلك غير‬
‫لمجمومة صغيرة فق مق المآلوريق والخبراء؛ ويعتمد المستخدد ملا حقيقة واحدة فق وها‬
‫أن العد د مق المستخدميق مد أروا أو ا تبروا أو استخدموا الكود مق مبل‪.‬‬

‫‪- 191 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫مادة ما تتم مراءة البيانات أو استيرادها باستخداد‬


‫ً‬ ‫والجد ر بالذار أنه مند تمغيل جلسة ‪R‬‬
‫أوامر صريحة وبعد ذلك تم االحتفاظ بجمي البيانات فب الذاكرة ؛ أثناء جلسة ‪ R‬يمكق‬
‫حفظ مساحة العمل ؛ يعد حفظ ما تم طريقة مفيدة لتوثيق ما تم إنجاز ‪.‬‬

‫ملا الرغم مق أن أجهزة الكمبيوتر لد ها سعة ذاكرة أكبر مما اانت مليه مق مبل فقد ال‬
‫صن البيانات التب تم تحليلها‬ ‫تكون ‪ R‬مناس ة لتحليل مجمومات البيانات الضخمة‬
‫ملا سبيل المثال مق صور‬ ‫محفوظة فب الذاكرة‪ .‬مد تأتب مجمومات البيانات الضخمة‬
‫اصممار الصناعية فمق الضروري أن يكون لديك فكرة مق حجم البيانات وإدارة الذاكرة‬
‫ومتآلل اتها‪ .‬إال أنه مق الممكق استخداد ‪ R‬لتحليل جزء مق مجمومات البيانات أو ا تيار‬
‫منآلقة معينة ص ذ العينات الفرعية والتجمي أو التعميم للبيانات اصصلية‪ .‬تُعرض البيانات‬
‫حيث ُيظهر المحاور اصساسية ‪ X,Y‬قيم اإلحداثيات ‪.‬‬ ‫مادة ملا الخ ار‬
‫ً‬ ‫المكانية‬

‫بينما مرض البيانات اإلحصا ية فب‬ ‫تحديا بحد ذاته‬


‫ً‬ ‫يعد مرض البيانات المكانية فب ‪R‬‬
‫أشكال ورسود بيانية هب مق أكثر اصس اب إلحاحا الستخداد الـ ‪. R‬‬

‫مق بيق أموى الرسومات التب نعرفها منذ القدد‪ .‬إال أن ‪ R‬لم يصمم بمكل‬ ‫وبما أن الخ ار‬
‫ابير مق التصورات التب تتحول‬
‫مددا ًا‬
‫اما أن هناك ً‬ ‫وتحليلها‬ ‫اص لعرض الخ ار‬
‫ابير إلنجازها فب نظم‬
‫جهدا ًا‬
‫فب حيق أنها تتآللب ً‬ ‫بمكل طبيعب إلا رسومات ‪R‬‬
‫المعلومات الجغرافية‪.‬‬

‫‪- 192 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل العشرون ‪ :‬انتاج خريطة بلغة ‪R‬‬

‫لبدء العمل م نافذة ‪ Rstuido‬نفتح ممروع جد د‬

‫ثم نختار ‪Existing Directory‬‬

‫و نختار مكان انماء الممروع ثم ‪ Create‬؛ نفتح نافذة جد دة النماء ‪script‬؛‬

‫‪- 193 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تحميل ال مق المكت ات ‪cowplot", "googleway", "ggplot2", "ggrepel",‬‬


‫‪ "ggspatial", "libwgeom", "sf", "rnaturalearth",‬؛ ‪rnaturalearthdata‬‬

‫نقود بتحميل ‪ packages‬وذلك مق طريق ؛ فتح برنامج ‪ Rstudio‬ومق ما مة اصوامر‬


‫؛‪ tool‬ومنها ‪: installpackages‬‬

‫ثم نكتب أسم المكت ة وليكق ‪ rgdal‬ثم ‪:install‬‬

‫‪- 194 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ثم نكرر م باما المكت ات‬

‫وهما ‪ "ggplot2‬و "‪sf‬‬ ‫نبدأ باستدماء أهم حزمتيق للخ ار‬

‫كما توفر الحزمة ‪ "rnaturalearth",‬ريآلة لبلدان العالم ؛ وتستخدد ‪ne_countries‬‬


‫الستدماء بيانات البلدان ؛ و ‪ rnaturalearthhires‬للمقياس الكبير وذلك اما موضح‬

‫‪- 195 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫بعد ذلك نبدأ بإنماء ريآلة أساسية للعالم باستخداد حزمة ‪ ggplot2‬؛‬

‫بهذا تكون مرضت ريآلة م سآلة للعالم ؛ مستدماة مق مكت ة ‪ggplot‬؛ مق طريق‬
‫استدماء البيانات )‪ ggplot (data=world‬؛‬

‫انتهاء السآلر البرمجب بـ ‪ +‬يعنا ان اصمر البرمجا لم نتها والسآلور التالية تابعة له؛‬
‫كما نستخدد دالة ‪ geom-sf‬والتب تضيف ب ساطة هندسة المكل والتب تكون مخزنة فب‬
‫حزمة ‪ . sf‬وتسمية الخريآلة ؛ العنوان والعنوان الفرما باستخداد ‪.ggtitle‬‬

‫‪- 196 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ألوان الخريطة‪:‬‬

‫يمكن تغيير األلوان وذلك على النحو التالى‪:‬‬

‫‪- 197 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫تسمح مكت ة ‪ ggplot2‬باستخداد أنظمة ألوان أكثر تعقيدًا ؛ حيث تسمح بالتدرج فب اصلوان‬
‫؛ وفيما لا مرض لتوزي السكان باستخداد المتغير ‪ pop_set‬حيث يخزن فيه الجذر‬
‫التربيعا لسكان العالم ‪.‬‬

‫االحداثيات ‪:‬‬

‫مق الدالة ‪ Coords_sf‬حيث تستخدد الخريآلة افتراضيا ‪ WGS48‬؛ وباستخداد ‪crs‬‬


‫يمكق التعد ل ملا نظاد االسقاط‬

‫‪- 198 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫كما يمكق تعييق مدى الخريآلة فب تنسيق ‪ sf‬مما يسمح بالتكبير والتصغير ؛‬

‫فيتم التكبير تلقا يا‬

‫‪- 199 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫مقياس الرسم واتجاه الشمال ‪:‬‬

‫‪- 200 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫كما يمكن إضافة أسماء البلدان إلى الخريطة وذلك باتباع األوامر التالية ‪:‬‬

‫‪- 201 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫‪- 202 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الواحد وعشرون ‪:‬إضافة طبقات على اخلريطة‬

‫نحتاج إلا مكت ات ‪ cowplot‬و ‪ googleway‬؛ ‪ ggplot2‬؛ ‪ ggrepel‬؛ ‪ ggspatial‬؛‬


‫‪ libwgeom‬؛ ‪ sf‬؛ ‪ rnaturalearth‬؛ ‪rnaturalearthdata‬‬

‫تم استدماء ال مق‬

‫ثم استيراد ريآلة بلدان العالم؛‬

‫وإلضافة ط قات ( سواء نقاط أو مضلعات ) ؛ فمثال نحتاج أن نض نقآلتيق لتحد د‬

‫مومعيق للدراسة وفقا الحداثيات هذ المناطق ويتم تخزينهم فب ‪ data frame‬؛ ويكتب‬
‫الكود ملا النحو الموضح‬

‫ويكون ناتج الكود اما لا‬

‫‪- 203 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ويمكق اضافة احداثيات نقاط مق طريق ‪geom_point‬‬

‫كما يمكق أيضا استخداد ‪ sf‬لوض هذ النقاط ‪:‬‬

‫إضافة طبقة مضلعات ‪:‬‬

‫ففب المثال التالا تم وض حدود الدول إداريا بخريآلة الواليات المتحدة ؛ تم استدماء‬
‫مكت ة ‪ map‬والخريآلة ورالصفول اصولب مق البيانات ؛‬

‫‪- 204 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وهذا نتيجة اصوامر فب نافذة ‪consol‬‬

‫فتكون أسماء الدول جزء مق هذ البيانات والكمال إضافة الخريآلة م إضافة االحداثيات‬
‫ومليها اصسماء ‪:‬‬

‫‪- 205 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫كما يمكق إضافة مستآليل لتحد د اصسماء امكل جمالا ولسهولة القراءة‬

‫وتكون بيانات المقاطعة مخزنة دا ل حزمة ‪ sf‬؛ ويتم اصضافة ملا النحو التالا ‪:‬‬

‫ويمكق إضافة الحدود باصمر البرمجا التالا ‪:‬‬

‫‪- 206 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫كما يمكق ممل ترميز للخريآلة اما لا ‪:‬‬

‫‪- 207 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الثانى وعشرون ‪:‬استرياد البيانات اجلغرافية )‪(shape file‬‬

‫هناك العد د مق المكت ات المفيدة فب هذا المجال؛ ومنهم " ‪ "rgdal‬و ‪"raster‬؛ "‬

‫؛ بعد ذلك نقود بعمل استدماء للمكتبيتق ‪sf , tmap‬‬

‫فنفتح نافذة جد دة النماء ‪ script‬مق ‪ File‬ومنها ‪New File‬‬

‫ثم نستدعى المكتبات بكتابة )‪libraray (sf‬‬

‫ثم نحددهم ونقود بعمل ‪ run‬؛ فيتم استدماؤهم دا ل نافذة ‪ console‬وتكون جاهزة‬
‫لالستخداد ؛ بعد ذلك نقود استدماء" مراءة " بيانات الـ ‪ GIS‬وها ملا هيئة ‪ shapefile‬؛‬
‫وذلك اما موضح بالنافة أدنا وذلك مق الل اتابة‬

‫)"‪download.file("D:\shp\centers.shp‬‬

‫)"‪menoufia_centers <- st_read("centers.shp‬‬

‫فيتم مراءة بيانات ملا النافذة‬

‫ولرسم الخريطة على نافذة الرسومات الموجودة بالـ ‪ Rstudio‬يتم عن طريق الدالة ‪qtm‬‬
‫‪- 208 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وتكون النتيجة اما موضح‪:‬‬

‫وفا حالة اتابة )‪ plot(menoufia_centers‬؛ تظهر أيضا الخريآلة وممثلة ملا النحو‬
‫االتالا‪:‬‬

‫‪- 209 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫أيضا استخداد اصمر )( ‪ head‬إلظهار الصفول الستة اصولا جدول البيانات‪.‬‬


‫يمكننا ً‬

‫فيتم مراءتها ملا النحو التالا‪:‬‬

‫األلوان وفئات الترميز‪:‬‬

‫يمكننا ا تيار الكثير مق اصلوان المختلفة مق ‪ ColorBrewer‬وطرق التصنيف المختلفة‬


‫أيضا‪ .‬وذلك مق الل هذا اتابةالكود‪:‬‬
‫ً‬

‫وبعد ممل ‪ Run‬يظهر اصلوان المتاحة في نافذة ‪plot‬‬

‫‪- 210 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ويمكن عمل ترميز للخريطة وذلك على النحو التالي‪:‬‬

‫(التصنيف ملا حقل المساحة والذى يسما ‪ Shape Area‬فب جدول البيانات م‬
‫مراماة حالة اصحرل)‬

‫‪- 211 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ويمكننا ا تيار طريقة التصنيف التب يجب استخدامها ومدد الفئات‪ .‬حيث يمكننا استخداد‬
‫التصنيف الكما وا تيار مدد الفئات ‪ 4‬م وض المفتاح فب الراق اصيمق أسفل الخريآلة‬
‫وذلك ملا النحو التالا ‪:‬‬

‫‪- 212 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الثالث وعشرون‪ :‬التحليالت املكانية على البيانات اجلغرافية‬

‫‪ -1‬ايجاد التقاطع بين الطبقات ‪intersect :‬‬

‫تم استدماء المكت ة ؛ ومراءة البيانات ؛ ملا النحو التالا ‪:‬‬

‫بعد ذلك استخداد دالة لعرض الرسود‬

‫)‪plot(sityes$geometry‬‬

‫ف عد ممل ‪ run‬؛ تظهر المدن ملا النافذة‬

‫فنقود باستخداد ‪ plot geometry‬؛ ل اما الآل قات المآللوب استخدامها"حيث تم ممل‬
‫تقاط بيق ط قتا المدن والمراكز"‬

‫)‪plot(menoufia_centers$geometry‬‬

‫‪- 213 -‬‬


‫ رشا صابر نوفل‬/‫د‬ ‫ يف نظم املعلومات اجلغرافية‬R ‫أسس الربجمة املكانية بلغىت البايثون و‬

intersect read layer

: ‫نكتب‬

int <- st_intersection(menoufia_centers,sityes)

intersect ‫ثم ممل تمغيل ؛ وبعد ذلك نعرض نتيجة الـ‬

plot(int$ geometry ,col="green" , add= TRUE , pch=20)

: ‫ بيق الآل قتيق‬intrscect ‫الوصول إلا‬

‫ولعرض الناتج نكتب‬

plot(menoufia_centers$geometry[int])

- 214 -
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫وبنفس الطريقة يمكن عمل ‪ st_over laps‬و ‪st_contains‬‬

‫‪-2‬حرم مكانى ‪:Buffer‬‬

‫استدماء مكت ة ‪ sf‬ثم مراءة البيانات ‪.‬‬

‫مرض البيانات ملا النافذة‬

‫لعمل ‪ summry‬للبيانات‬

‫بعد ذلك يتم عمل ‪: Buffer‬‬

‫)‪Buf <- st_buffer(menoufia_centers,dist=2000‬‬

‫‪- 215 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫لعرض ناتج ‪Buffer‬‬

‫)‪plot(Buf$geometry‬‬

‫لعمل تعديالت على ‪Buffer‬‬

‫‪- 216 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫الفصل الرابع وعشرون ‪ :‬حتليل البيانات ‪Raster‬‬

‫إدخال البيانات الراستر " ‪:" Raster Data‬‬

‫‪ -‬تحميل المكت ات المفيدة لبيانات ‪ raster‬و استدماؤها وها‬

‫)‪library(raster‬‬

‫)‪library(rgdal‬‬

‫)‪library(rgeos‬‬

‫‪ -‬بعد ذلك اتابة الكود التالا ؛ لقراءة البند الثانا ( ما بيق اصمواس مسار تواجد البند‬
‫ملا الجهاز)‬

‫)"‪b2<- raster("E:\LANDSAT\B2.TIF‬‬

‫‪ -‬لعرض الرسم ‪:‬‬

‫‪plot(b2,col = gray(0:100/100),axes=FALSE , main="EAST‬‬


‫)"‪DELTA RGB-B2‬‬

‫‪- 217 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ولعرض ‪CRS , Resouliesion, band info‬‬

‫نكتب االسم ثم نقود بعمل ‪run‬‬

‫لتظهر ملا النحو الموضح‬

‫ولعرض القيمة اصساسية‬

‫)‪minValue(b2‬‬

‫‪- 218 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫عرض ‪ Raster‬ملونة ومتعددة النطاقات ‪:‬‬

‫استدماء مكت ة ‪.Raster‬‬

‫ثم اتابة‬

‫)"‪Landsat= brick("E:\\LANDSAT\\B1.TIF‬‬

‫ولعرض امتداد البيانات‬

‫نكتب االسم ( ‪ ) Landsat‬ثم نقود بعمل ‪Run‬‬

‫ونكتب الكود التالا ‪:‬‬

‫بعد ذلك تم مرض الصورة‪:‬‬


‫‪- 219 -‬‬
‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫)"‪plotRGB (clandsat8,r=5, g=4 , b=3,main = "band 543‬‬

‫ويتم تغيير البندات لعرض المر ية حسب حاجة الدراسة ؛‬

‫وتكون النتيجة النها ية ‪:‬‬

‫‪- 220 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫حساب ‪:NDVI‬‬

‫واتابة الكود)‪dim(landsat‬‬

‫وبآل امة المر ية؛ تعآلا لنا معلومات الصورة‬

‫)‪Print (landsat‬‬

‫ولحساب ‪ NDVI‬فب الندسات ‪ 8‬نحتاج إلا ‪ Band4,5‬لنكمل اصكواد لتص ح ملا النحو‬
‫التالا‪:‬‬

‫‪- 221 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫حساب ‪:NDWI‬‬

‫مكت ة ‪raster‬‬

‫وبعد ذلك‬

‫‪- 222 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫ونكمل اصكواد‬

‫‪- 223 -‬‬


‫د‪ /‬رشا صابر نوفل‬ ‫أسس الربجمة املكانية بلغىت البايثون و ‪ R‬يف نظم املعلومات اجلغرافية‬

‫قائمة املراجع واملصادر‬

‫‪- 224 -‬‬


‫ رشا صابر نوفل‬/‫د‬ ‫ يف نظم املعلومات اجلغرافية‬R ‫أسس الربجمة املكانية بلغىت البايثون و‬

‫قائمة المراجع والمصادر‬

.2017 ‫ اإلصدار اصول ؛حلب ؛‬R ‫) حسق ؛ أرشد محيد ؛ لغة البرمجة اإلحصا ية‬1)

‫ جامعة ديالا مسم‬- ‫ ؛ الية االدارة واالمتصاد‬.R ‫) زينة ؛ محمد بمر؛ البرمجة بلغة‬2(
.‫ الآلب عة اصولا‬2019 ‫االحصاء‬

- Alain F. Zuur l Elena N. Ieno l Erik H.W.G. Meesters A


Beginner’s Guide to R , 1997.

- ArcPy and ArcGIS Second Edition Automating ArcGIS for Desktop


and ArcGIS Online with Python, 2017.

- PYTHON Paul A. Zandbergen, SCRIPTING FOR GIS 2013.

- Raleigh , NC , Python For ArcGIS, Laura Tateosian North


Carolina State University , USA , 2015.

- Lansley and James Cheshire , An Introduction to Spatial Data


Analysis and Visualisation in R Guy ,2016

- Minh Trinh , Introduction to Maps and GIS in R ,February 7, 2015.

- James Cheshire, Rachel Oldroyd and others , Introduction to


visualising spatial data in R Robin Lovelace
(R.Lovelace@leeds.ac.uk), 2017

- Using R as a GIS Alan R. Pearse 31 July 2017.

- 225 -
‫ رشا صابر نوفل‬/‫د‬ ‫ يف نظم املعلومات اجلغرافية‬R ‫أسس الربجمة املكانية بلغىت البايثون و‬

:‫مواقع االنترنت‬

1- https://www.r-spatial.org/

2- https://mgimond.github.io/MEGUG2016/Tutorial.html

3- https://www.cisco.com/c/ar_eg/index.html.

4- https://www.udemy.com.

- 226 -
‫ رشا صابر نوفل‬/‫د‬ ‫ يف نظم املعلومات اجلغرافية‬R ‫أسس الربجمة املكانية بلغىت البايثون و‬

Spatial Modeling in GIS and R for Earth and Environmental Sciences Hamid Reza
Pourghas

- 227 -

You might also like