Professional Documents
Culture Documents
2021
1
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
اإلسراء ""85
2
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
إهداء
3
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
تقديم
بسم اهلل الرمحن الرحيم والصالة والسالم على أشرف اخللق سيدنا حممد صل اهلل عليه وسلم أما بعد؛ جاء هذا الكتاب بناء تطبيقات
الويب يف نظم املعلومات اجلغرافية ؛ فتزايد مستخدمي الويب وتطبيقاته كان دافع لظهور التطبيقات اخلاصة بعرض اخلرائط على الويب
وعمل تطبيقات خاصة بالبيانات اجلغرافية وحتليلها ؛ وملعرفة كيفية بناء تطبيقات الويب اخلاصة بنظم املعلومات اجلغرافية ؛ ال بد من
التطرق اىل معرفة بعض األساسيات ولذلك مت شرح أساسيات لغة HTMLو CSSوكيفية تصميم واجهة الويب من خالهلم وذلك
يف الباب األول وجاء الباب الثاني لدراسة ماهية لغة اجلافا سكريبت " حيث أن هذه اللغات هي اللغات األفضل لبناء تطبيقات الويب
بصفة عامة " ؛ والباب الثالث بناء تطبيقات الويب يف نظم املعلومات اجلغرافية وذلك باستخدام API Arc GIS JS؛ بداية من عرض
اخلريطة على الويب ؛ واضافة العناصر األساسية وكيفية إضافة طبقات مت نشرها على Arc GIS onlineأو Arc Server؛
وبالتايل إمكانية عمل حتليالت مثل عمل أداة إلنشاء Bufferو view shedحول نقطة حمددة وانشاء أداة إلجياد مسار بني نقطتني ؛
وحساب فرق االرتفاع ؛ وأخريا جاء الباب الرابع لشرح إمكانية انشاء تطبيق ويب باستخدام ArcGIS web APP Builder
رشا نوفل
4
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
فهرس الموضوعات
8 مقدمة.
8 أهمية البرمجة ولماذا نبرمج؟
8 كيف نبرمج؟
9 االكواد.
9 لغات البرمجة.
9 الفرق بين تطبيقات سطح المكتب وتطبيقات الويب وتطبيقات الهواتف .
10 تعريف Server؟
10 الطريق الى تعلم برمجة تطبيقات الويب.
10 تطبيقات الويب في نظم المعلومات الجغرافية.
12 الباب األول :أساسيات HTMLو CSSيف برجمة الويب.
12 مقدمة.
12 مفاهيم أساسية ومصطلحات .html
12 خصائص وعناصر .html
14 .CSS
17 معظم خصائص .CSS
18 بدء العمل مع .HTML , CSS
20 المعلومات األساسية بالـ .head
22 المعلومات الخاصة بالـ .body
28 انشاء جسم الموقع.
33 إضافة صورة داخل الموقع.
35 إضافة صورة كخلفية.
35 عمل .Hyper link
5
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
6
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
7
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
مقدمة:
البرمجة أصبحت من أهم أكبر المجاالت في العالم ؛ منذ بداية اختراع االنسان لأللة ؛ لتساعده في قضاء
مهامه الحياتية ؛ وبالتطور بدأ التفكير في التحكم في االلة عن طريق مجموعة من األوامر ؛ ثم أصبح لها
ذاكرة ثم شاشة الى أن أصبح الكمبيوتر؛ أي أن الكمبيوتر ما هو اال تطور طبيعي لأللة ؛ وهذه نفسها هي
أصل بداية البرمجة ؛ حيث يتم برمجة ألة محددة لتنفيذ مهام مطلوبة دون تدخل يدوى .
والبرمجة هي سر التطور في الحياة البشرية في السنوات األخيرة؛ وهى اهم المجاالت التي قامت عليها
التكنولوجيا.
تتلخص أهمية البرمجة في تسهيل المهام وتلخيصها وتقديم خدمات تساعدنا؛ وكذلك تخزين كم هائل من
المعلومات والقدرة على تحليلها بمنتهى السرعة والدقة .وهذا ما لم يستطيع العقل البشري تنفيذه.
كيف نبرمج ؟
عند البدء في تعلم البرمجة أول ما يتبادر الى أذهاننا كيف نبرمج؟ واالجابة على هذا السؤال ال تنحصر في
معرفة األكواد المستخدمة في برمجة شيء ما؛ فالفكرة األساسية هي األهم في الموضوع ؛ وليست طريقة كتابة
األكواد ؛ فطريقة البرمجة سهلة لكن الحصول على الفكرة التي نريد تحقيق هدف محدد منها هي األساس "
أي معرفة ما الذى أريد تحقيقه من البرمجة" ؛ فأى برنامج عبارة عن مدخالت inputومخرجات output؛
فال بد من معرفة ما هي المدخالت للحصول على المخرجات التي تفى بالغرض المطلوب ؛ وبعد ذلك يأتي
عملية كتابة األكواد.
األكواد:
هي اللغة التي يستطيع الحاسب األلى فهمها؛ ولغة الكمبيوتر تسمى بلغة اآللة الـ machine learningوهى
( ) 0,1؛ واالكواد عبارة عن رموز وحروف تشبه اإلنجليزية وليتم تحويلها الى لغة االلة عن طريق الـ
" compilerالمحول أو المترجم " وهو موجود تلقائى داخل لغات البرمجة.
لغات البرمجة :مثلها مثل أي لغة ال بد من معرفة أساسياتها؛ وليس مطلوب مننا حفظ هذه األساسيات بقدر
ما يطلب منى فهم األفكار األساسية والخطوات المطلوب تنفيذها ومعرفة كيفه حل المشاكل.
8
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
الفرق بين تطبيقات سطح المكتب وتطبيقات الويب وتطبيقات الهواتف الذكية:
تطبيقات سطح المكتب :هي التطبيقات التي يتم استخدامها على أجهزة سطح المكتب " الجهاز الخاص
بالمستخدم " .
-كل األجهزة ال يمكنها تشغيل التطبيق؛ فال بد من وجود مواصفات تتناسب مع كل تطبيق ؛ فال بد من
توافق كل من الـ hardwareمع التطبيق وكذلك Softwareنظام التشغيل" ." operator system
-ال بد من عمل تحديثات للتطبيق مع تحديثات الشركة المنتجة وهذه التحديثات تتم من خالل المستخدم"
هو الذى يقوم بعمل التحديث".
-إذا تم عمل حذف لل operator systemيتم حذف التطبيق تلقائى وال بد من تنزيله مرة أخرى.
تطبيقات الويب :هي أي تطبيق يمكن تشغيله على المتصفح؛ فال يتم تحميله ؛ لكنه يكون موجود على السيرفر
الخاص بالشركة المنتجة ؛ ويتم التصفح بداخله من خالل متصفحات االنترنت مثل جوجل وجوجل كروم وفاير
فوكس وغيرها ؛ ال يرتبط بمواصفات جهازى فأى جهاز مهما كانت مواصفاته يمكنها تشغيل تطبيقات الويب ؛
بالنسبة للتحديثات ال يكون للمستخدم أي تدخل فيها فالتحديث يتم من خالل الشركة تلقائيا ؛ وال يرتبط بتغيير
نظام التشغيل.
تطبيقات الهواتف الذكية :هي التطبيقات التي يمكن تحميلها على هواتفنا الجوالة والتي أصبحت تشكل طفرة
في تقديم الخدمات للمواطنين ؛ حيث تطبيقات الخاصة بدفع الفواتير ،تطبيقات الرحلة اليومية ؛ وغيرها من
التطبيقات .
9
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
التطبيق يتم وضعه على جهاز هذا الجهاز يسمى بالسيرفر ؛ "يوضع عليه سوفت وير لجعله سيرفر "؛ والتي
تجعله قادر على عرض محتوياته على االنترنت ؛ هذا الجهاز ال بد من أن تكون مواصفاته عالية جدا النه
يعمل خالل 24ساعة ومتصل باإلنترنت ويخدم عدد كبير من المستخدمين .
لكل برمجة ولها طريق أمثل ال بد من أن نخطو حتى يتسنى لنا الوصول بسهولة وسرعة ؛ فبرمجة تطبيقات
سطح المكتب لها طريق يختلف عن تطبيقات الهواتف الذكية وكالهما تختلف عن تطبيقات الويب؛ ولكل طريق
اللغة التي ال بد من اتقانها حتى نسلكه ؛ ويقتصر الحديث هنا فقط على تطبيقات الويب .ولمعرفة اللغات التي
يجب دراساتها لبرمجة تطبيقات الويب ال بد من التفرقة بين Front-endو Back-endداخل الويب.
سبق وأن وضحنا أن تطبيق الويب يتم عرضه على متصفح االنترنت؛ في حين ان التطبيق يتم تنزيله على
سيرفر ؛ أي أن ألى تطبيق ويب جزئيين جزء على جهازي Front endوهو ما أراه "شكل الموقع – األلوان
– التصميم" ؛ أما التفاعالت الموجود على السيرفر فيسمى . Back end
وظيفة : Front-endعمل التصميم ؛ األلوان ؛ حركة المفاتيح؛ واللغات التي يفهمها المتصفح هي فقط (
.)html-css-JavaScript
Html+cssلعمل التصميم و JSلعمل أي شيء به " Animationحركة"؛ فالـ Htmlو cssمصمتة لكن
لتحرك التطبيق من صفحة ألخرى يقوم بتسجيل بيانات أو عمل أي حركة فالمتصفح ال يتعامل اال مع الجافا
سكريبت ؛ لكن هناك لغات أخرى ظهرت مؤخ ار يمكن أن يتعامل معها المتصفح وهي ليست محور حديثنا
األن.
يفضل بعد تعلم JavaScriptتعلم JavaScript frame work؛ مثل Vue – React -angular
وهذه يساعد على عمل حدود للعمل مما يجعل العمل أكثر فاعلية.
10
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
وظيفة : Back-end
لعمل عملية في الموقع مثل عمل الحجز أو إضافة الماستركارد مثل سوق دوت كوم ؛ وذلك يتم من خالل
كتابة كود هذا الكود يتم تنفيذه على السيرفر؛ اللغات التي تعمل على ذلك ؛ الجافا -C# -PHP -البايثون
الروبى.
السؤال االن هل يمكن تعلم هذه اللغات األخيرة دون تعلم لغات الخاصة بعمل Front-end؟
اإلجابة بالطبع ال ألن في النهاية لغات السيرفر ما هي اال ترجمة لما يتم تصميمه بالـ HTML,CSS,JS؛
فال بد من معرفة األساس.
هي تطبيقات ويب يتم انشاؤها للتعامل مع بيانات نظم المعلومات الجغرافية ؛وفى هذا الكتاب سوف نعرض
تطبيقات .API ArcGIS JavaScript
وللدخول الى برمجة تطبيقات الويب في نظم المعلومات الجغرافية ال بد من معرفة أساسيات تطبيقات الويب
بصفة عامة ؛ وذلك من خالل معرفة أساسيات html,css,JSثم التطبيق على API ArcGIS
JavaScriptو معرفة كيفية عمل تطبق ويب باستخدام .GIS Web App Builder
11
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
مقدمة.
HTMLهي اختصار للـ " Hyper Text Markup Languageلغة الترميز المتشعبة"؛ وهى لغة تصميم
مواقع وهى اول لغة تم استخدامها فى تصميم صفحات المواقع وليس لها أي عالقة ببرمجة المواقع وهى تتميز
بالسهولة ويمكن الى شخص تعلمها بسهوله .التفاهم لمتصفحات االنترنت؛ وهى أسهل لغة تقرأها متصفحات
االنترنت ؛ فهناك العديد من اللغات مثل php؛ Asp؛ Aspx؛ كلها لغات لبرمجة متصفحات االنترنت لكن
متصفح االنترنت ال يق أر سوى html؛ أي أن كل لغات البرمجة تصب في HTML؛ فمثال لو ذهبنا الى
متصفح Google
12
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
HYPER TEXT:
هي الطريقة الخاصة بالتحرك علي صفحات االنترنت بالضغط علي نص معين يدعي Hyperlinksوسيله
للتنقل ألى مكان في شبكة االنترنت عن طريق الضغط علي الوصالت ) االرتباط التشعبية ) LINKS؛وتعتمد
علي ماذا داخل األوسمة " "Tagesبمعني أنها تحتوي علي أكواد كأي لغة أخري.
:MARK-UP
وهى تشبه التنسيقات التي نقوم بها على النصوص ،فهذه الكلمة تعني توصيف النص ،مثل معالجات
الكلمات فتضيف العناوين والنقاط والنص السميك الخ.
-متصفح االنترنت.
-محرر نصي " نستخدم هنا ." visual Studio Cod
: HTMLكلها مصطلحات لنفس اللغة ؛ والتي تعطى البنية الغير تصميمية للموقع .
13
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
:Tag
ويعرف بالعربية وسم ويكتب > < tagوهى كلمة تعبير عن أوامر htmlالموجودة داخل األقواس أي ان
االمر يتم كتابته داخل االقواس > < .
:Container Tags
هي األوسام التي يتطلب أن يتم فتحه ألداء أمر معين وال بد من إغالقه بعد االنتهاء؛ أي انه تاج فتح وتاج
غلق ويكتب >. < tag>…</tag
: Valueالقيمة .
يمثل نوع المستند ؛ يتم تحديد النوع كرقم اصدار ><!DOCTYPE html ><!DOCTYPE
htmlليتعامل معه المتصفح على هذا األساس ونوع المستند ألخر اصدار حالى هو html5
ويكتب فى أول الصفحة كما هو موضح>.<!DOCTYPE html
>"<html lang="en عنصر > <htmlوالذى يأتي بعد نوع المستند وهو
عبارة عن أساس الصفحة والذى يكمن بداخله جميع عناصرها.
><head > <head> <head/الرأس ويحتوى على معلومات الصفحة كعنوان الصفحة
14
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
15
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
طريقة إضافة خصائص CSSعلى عناصر :HTMLهناك ثالثة طرق هما :
16
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
)Background-(color-image-repeat-position-attachment
)Font-(family-size-weight
)Border(color-size-style-top-right-bottom-left
Width العرض
height االرتفاع
Top-right-bottom-left
direction اتجاه النص (من اليمين الى اليسار ومن اليسار الى اليمين)
17
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
>< header
لعمل صفحة htmlنفتح محرر النصوص " تم استخدام Visual studio code
نفتح ملف جديد
18
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
يتم كتابة
><!DOCTYPE html
كتابة tagبداخله html؛ وسبق وأن ذكرنا أن ال بد من وجود tagلبداية الكتابة وأخر للغلق فبمجرد كتابة
tagالبداية يتم كتابة tagالغلق تلقائيا:
><html></html
19
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
: Metaوهى أحد أندر المعلومات التي ال تحتاج الى tagغلق وهى كل المعلومات التي نقدمها للـ
Server
مثل معلومات seoوهى المعلومات التي يبحث عنها محرك البحث لمعرفة ما يوفره الموقع وما يقدمه من
خدمات .
><meta keword="html,wep"/
20
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ملحوظة :يمكن كتابة hواختيار html5من القائمة المنسدلة ؛ فيتم كتابة محتويات الصفحة تلقائيا؛على
النحو الموضح أدناه:
: Titelوهى المعلومة الوحيدة التي يتم كتابتها داخل الـ headوتظهر داخل الموقع.
><div
this is my web site
21
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
></div
>";<div style="color:darkblue;font-size:30px
22
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
على النحو التالىhead يتم ربط الملفين عن طريق وضع لينك في جزء الـ
<link rel="stylesheet" type="text/css" href="style.css">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="style.css">
<title> this is the course to GIS > this is the course to GIS </title>
"body ؛ وليكن على النحو التالى " داخل عنصر الـhtml داخل ملفid يتم كتابة
<div id="GIS_wep">
this is my wepsite
</div>
ثم نفتح أقواس ونكتب المواصفات الخط والحجم واللون# بعد عالمةcss داخل ملفid ونكتب نفس الـ
المطلوبة ؛ وذلك كما موضح
#GIS_wep{
color: darkblue;
font-size: 30px; }
23
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
>"<div class="wepsite_rasha
this is my wepsite named rasha
> </div
وبدل كتابة idيتم كتابة الـ clasوفى ملف cssيتم كتابة بدل الهشتاج #دوت على النحو التالى
{.wepsite_rasha
;color: red
;font-size: 30px
}
ويمكن وضع رقم للون بدل من اختيار اللون وال بد من وضع #قبل رقم اللون ؛
24
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
;padding: 50px
;margin: 50px
25
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
كما يمكن تباعد الكالم عن الحدود في األعلى فقط من خالل padding-top؛ كما يمكن تباعد margin
– leftلتباعد عن صفحة الويب من اليسار فقط .
;Margin :0 auto
;Margin: 0 auto
ملحوظة :إذا تم وضع * تعنى الكل ؛ فاذا تم وضع * clor = redيتم تحويل كل شيء داخل البوردر
والبوردر نفسه الى اللون األحمر.
{*
;color: red
}
أي وضع * يخبر المتصفح بتطبيق ما داخل األقواس على الموقع كله اال إذا تم إعطائه أي أوامر تالية لذلك
وما داخل األقواس الموجودة بالـ * تعرف بال ـ selectorالعامة واألوامر التالية لذلك والواقعة داخل الـ#
تعرف بالـ selectorالخاصة .
26
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="style.css">
<title>> this is the course to GIS > this is the course to GIS </title>
</head>
<body>
<div id="GIS_wep">
this is my wepsite
</div>
<div class="wepsite_rasha">
this is my wepsite named rasha
</div>
</body>
</html
#GIS_wep{
color: darkblue;
font-size: 30px;
}
.wepsite_rasha{
color:purple;
font-size: 30px;
border:solid 1px red;
padding: 50px;
margin: 50px; }
27
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
أخرى اسمهاdev وheader اسمهاdev ؛ تحتوى علىGIS wep رئيسية اسمهاdev فمثال عندى
HOW BUILD GIS WEP " العبارة التاليةheader الخاصة بالـdev وتم كتابة داخل الـparagraph
على النحو التالىparagraph الثانى يتم كتابةdev وداخل الـ
أخرdev الرئيسى وdev وهذا يتيح تنظيم المتصفح الى أقسام حيث يمكن تنظيم كل قسم على حدى " الـ
. paragraph وأخر خاص بالـheder فرعى خاص بالـ
28
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
سبق وأن ذكرنا أن التاج يمكن وضعه بفتح األقواس > < ؛ وال بد من غلق التاج ></
وفيما يلى يتم عمل tagونسميه " h1اختصار لـ " headerو tagأخر أسميه h2
><body
>"<div id="GIS_wep
>"<div id="header
><h1>HOW BUILD GIS WEP </h1
><h2>HOW BUILD GIS WEP </h2
><h3>HOW BUILD GIS WEP</h3
><h4>HOW BUILD GIS WEP</h4
></div
29
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
. h6 حيث يمكن تنظيم التاج حتىcss التي يمكن اتباعها دون ربطها بالـhtml وهذه احدى وظائف
<div id="paragraph">
<p class="gis_paragraph">
ArcGIS Server is the predominant platform used to develop GIS application
the Web. There are a number of programming languages you can use to devel
applications with ArcGIS Server, including JavaScript, Flex, and
JavaScript has become the preferred language for developing applications
</p>
</div>
tag بلون مختلف يتم ذلك عن طريق عملparagraph ملحوظة لو أردت كتابة كلمات داخل الـ
red Colour اسمهclass قبل وبعد الكلمات المراد تغيير لونها وعملspan
.red_Colour{
color: red;
}
30
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<p>
Welcome in my site these’s the first time I building new sit
<p>
body وhead , كوضع لون لخلفية الـcss كما يمكن عمل العديد من التنسيقات األخرى داخل صفحة الـ
*{
margin: 0;
padding: 0;
}
#GIS_wep{
}
#header{
color:yellow;
font-size: 30px;
background-color:darkgreen;
height: 50px;
padding: 20px;
}
#paragraph{
color:whitesmoke;
background-color:darkblue;
font-size: 25px;
}
.red_Colour{ color: red; }
31
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
32
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
/*this is comment*/
داخل devالخاص بالـ paragraphيتم عمل divتسمى imgداخلها يتم وضع مسار الصورة " اسم الملف
واسم الصورة كما موضح؛:
><div
><img src="images/map.jpg.jpg" /
> </div
33
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
نجد انه تم وضع الصورة داخل صفحة الويب على النحو التالى :
أما من خالل صفحة cssأو من خالل نفس tagالخاص بالصورة ؛ عن طريق كتابة العرض واالتفاع
المناسبين للصورة .وإضافة = altنضع اسم للصورة ؛ وذلك لسهولة الحصول على الصورة بمحركات
البحث.
اسم الصورة داخل الملف" يتم وضع altلسهولة قرائتها داخل الموقع" اسم ملف الحفظ مع اسم الصورة واالمتداد
34
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
;)background-image: url(images/image.jpg.jpg
نالحظ أنه تم وضع الصورة في الخلفية " حيث الجزء األسفل من الصورة " ولوضع الجزء األعلى من
الصورة؛
لوضع صورة خلفية للـ : paragraphبنفس الطريقة على الهشتاخ الخاص بالـ paragraphبصفحة
. css
نالحظ هنا ان الصورة تتحرك مع تحرك صفحة المتصفح ؛ لو أردنا تثبيت أي صورة فيهم ؛ يتم ذلك عن
طريق
;background-attachment: fixed
المقصود بالـ hyper linkهو الصور او الكلمات التي تكون مرتبطة بمواقع أخرى " أي بمجرد الضغط
عليها نذهب الى صفحة أخرى"؛ فيما يلى كيفية عمل هذه الوظيفة داخل موقعى:
نذهب الى المنطقة المراد عمل hyper linkفيها سواء في الـ headerأو الـ footerونفتح
األقواس < نكتب حرف aثم href؛ ثم = " " ثم نقفل األقواس ونقفل aوبين األقواس نكتب الكلمة المراد
عمل hyper linkلها.
وداخل " " يتم وضع اللينك المراد الدخول عليه ؛ مثل وضع Googleمثال ؛
35
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ولضبط الكلمة المتعلقة بالـ hyper linkمن صفحة css؛ يتم كتابة a
{a
;color: red
}
inherit : Colorيعنى أن اللون موروث " أي تابع للنص المكتوب إذا كان النص ابيض يكون باألبيض
وإذا كان اسود يكون اسود وهكذا.
ملحوظة :تم كتابة aدون هشتاج #أو دوت .ألن aمن العناصر األساسية .
ملحوظة : 2هناك أولويات عند تطبيق المتصفح لألوامر ؛ فيتم تطبيق األوامر الموجودة داخل التاج بملف
، htmlأوال قبل ملف css؛ يعنى إذا كان لون الـ paragraphمثال داخل ملف cssأبيض وتم وضعه
داخل صفحة htmlأحمر ؛ فيتم تطبيق اللون األحمر.
يتم عمل القائمة عن طريق تاج يسمى > <ul؛ داخلها تاج > <li؛ عدد هذا التاج الثانى هو عدد األزرار
التي يتم وضعها داخل القائمة ؛ فمثال لو أردت عمل ثالثة أزرار يتم وضعها ثالثة مرات .
><ul
><li> home </li
><li> about </li
><li> contact</li
></ul
فتظهر داخل الموقع ؛ على النحو الموضح أدناه "حيث تم انشاؤها داخل tagالـ header
36
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
{ul
لوضعها في يمين الصفحة ;float: right
}
{li
لعرضهم على سطر واحد ;display: -webkit-inline-box
لتباعد الكلمات عن بعضها البعض ;padding-right: 20px
}
لعمل هذه اللينكات الى صفحات أخرى داخل الموقع الخاص بى:
37
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
يتم فتحها داخل المشروع ؛ يتم التعديل عليها حيث وضع المعلومات المراد وضعها داخل صفحة الـ about
؛ ويتم وضع اسم الملف داخل قائمة اللينك about.html
وفى الـ contactيمكن وضع اللينك الخاص بالفيسبوك " ال بد من وضع الرابط كامل اذا كان اللينك خارج
ملفات العمل ".
يتم وضعها بين قسم ال " paragraphاألوسط" وقسم الـ fotter
ملحوظة :ال بد من اتاحة مساحة فارغة لوضع الشريط الجانبى ؛ ويتم ذلك عن طريق تعديل مساحة pody
الخاصة بالموقع " " paragraphوذلك في صفحة sccداخل خصائص الـ . paragraph
;width: 70%
38
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
{#sidepar
;background-color:chartreuse
;border: solid 2px black
;float: right
;width: 28%
;margin-left: 1%
}
نالحظ أن الشريط الجانبى ارتفاعه صغير وال يغطى الصفحة كاملة ؛ وهذه تعد من أحد مشاكل الـ css؛
لكن يمكن التغلب على هذه المشكلة من خالل :
{*
;height: 100%
;margin: 0
;padding: 0
}
ولتحديد عدد الصفوف داخل الجدول عن طريق <tr > ....</tr> :فلو أردنا ثالثة صفوف يتم تكرار هذا
الكود ثالثة مرات ولتحديد األعمدة في كل صف من خالل؛ > <td > ....</ td؛ كما موضح أدناه:
39
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
><td>3</td
><td>4</td
></tr
><tr
><td>5</td
><td>6 </td
></tr
></table
يتم عمل النماذج داخل المتصفح باستخدام > <from> </from؛ حيث يمكن من خاللها نقل إجابات
المستخدمين الى الـ Server؛ وهناك طريقتين من طرق ارسال البيانات :
Action:حيث يتم تحديد عنوان بريد الكترونى الخاص بالسيرفر ليتم ارسال البيانات عليه.
Method:وهى تحدد الطريقة التي يتم بها التعامل مع عنوان البريد االلكترونى الموجود وتنقسم الى قيمتين؛
Getإذا كانت عملية المعالجة تتم داخل الخادم نفسه " " Serverوهى طريقة أكثر أمانا؛ postوهى التي
يتم فيها عملية المعالجة خارج الموقع عن طريق ارسالها لبريد الكترونى.
خصائص النماذج:
Radio Buttonوهو يسمح باالختيار من أكثر من متعدد ؛ مثل السؤال عن الجنس ؛ وال يسمح إال
باختيار نوع واحد فقط ؛ ويكتب كما يلى:
40
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
:" حيث يقوم على انشاء مكان للكتابة " مكان واحد فقطText field
<form action="">
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>
:حيث تظهر قائمة يتم االختيار منها وذلك على النحو التالى: Select list
41
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
هي قائمة بها عدة اختيارات حيث يستطيع المستخدم تمرير القائمة واالختيار: Multiple select lest
:منها
<form>
What is your favorit game ?<br>
<select name="game" multiple size="2">
<option value="football">football
<option value="basketball">basketball
<option value="handball">handball
</select>
</form>
<form>
Enter your comment :<textarea></textarea>
</form>
Password <BR>
<FORM ACTION= " mailto:someone@domain.com " method ="post ">
<INPUT TYPE = " Password ">
</FORM>
42
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
43
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
مقدمة.
تعتبر لغة الجافا سكريبت ( JS) Jav Scriptهي لغة برمجية عالية المستوى ؛من أهم وأشهر لغات
البرمجة وهى لغة برمجة ديناميكية تستخدم في متصفحات الويب لزيادة التفاعلية بها ؛ وهى لغة متعددة
االستخدامات حيث تستخدم لتوفير تطبيقات الويب " وتشمل أيضا األلعاب" باإلضافة الى استخدامها في
أغلب المواقع.
بدأت اللغة عندما قامت شركة Netscapeبتطوير لغة برمجة تدعى Live Scriptوالتي تغير اسمها
الحقا إلى JavaScriptبعد ان تعاونت شركة Netscapeمع شركة Sun Microsystemsلتطويرها.
انشاء ملف جديد للجافا سكريبت وربطه بملف :html
-يتم عمل Folderعلى جهازى ؛ وتسميته مثال .jvascript
ثم ننشىء ملف جديد من fileثم new flleثم نحفظ الملف من saveAs
44
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
45
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
الطريقة األولى لتنفيذ أوامر الجافا سكريبت على Htmlهو انشاء العنصر scriptضمن عناصر body؛ ثم
كتابة أوامر الجافا سكريبت؛ مع مراعاة ان يكون العنصر الـ scriptالذى يتم إنشاؤه أسفل جميع عناصر
body؛ وذلك كما موضح بالشاشة التالية حيث تم كتابة االمر الذى يظهر لنا رسالة محددة داخل نافذة ؛
46
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
الطريقة الثانية لتنفيذ أوامر الجافا سكريبت على :Htmlانشاء ملف جافا سكريبت وربطه بملف html
الذى تم إنشاؤه؛
وفيما يلى نجده تم كتابة اسم الملف الذى تم إنشاؤه وهذا يعنى انه تم انشاء الملف بشكل سليم .
47
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ثم يتم ربط الملف بملف htmlعن طريق فتح ملف htmlوفى عناصر bodoyيتم انشاء عنصر script
ثم يتم كتابة scrثم كتابة اسم ملف الجافا سكريبت ؛ثم امتداد الملف كما موضح
><script src="Script.js"></script
فلو تم كتابة األمر الخاص باظهار رسالة alertوتم كتابة helloعلى ملف الجافا سكريبت؛
للحفظ تلقائياً:
48
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
املتغريات :variable
يمكن تعريف المتغيرات ببســاطة أنها عبارة عن صــندوق حيث يمكن وضــع أي نوع من أنواع البيانات بداخله؛
ويكون له اسـ ــم محدد ؛ حيث يتم الرجوع الى هذه المتغي ارت واسـ ــتخدامها عن طريق هذا االسـ ــم .والمتغير ما
هو اال مس ـ ـ ـ ــاحة محددة يتم حجزها في الذاكرة العشـ ـ ـ ـ ـوائية لتخزين بعض البيانات ؛ فالمتغيرات تس ـ ـ ـ ــتخدم عند
برمجة اى برنامج به قيم متغيرة ؛ مثال الترحيب بالطالب بالجامعة ؛ فاسـ ـ ــم الطالب متغير ؛ فليس من المقنع
أن نقوم بعمل رسالة ترحب بكل طالب على حدى ؛ لكتابة المتغيرات في الجافا سكريبت ؛
49
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
https://www.w3schools.com/js/js_reserved.asp
String -النصوص :وهى تضم اى البيانات التي تحتوى على نصوص؛ ويتم كتابته بين " " ثم
نهاية المتغيربـ ;
50
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
51
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
Numbers -األرقام :وتشمل األرقام بأنواعها سواء أرقام صحيحة أو عشرية موجبة أو سالبة.
Boolean -المنطقية :وهى المتغيرات التي تحتوى على بيانات فقط trueأو .false
Undefined -غير محدد :أي نوع البيانات غير محددة ويكتب بالشكل الموضح أدناه .
Null -وهى يستخدم لمسح البيانات من المتغير ؛ ففي الجافا سكريبت يمكن تحديد قيم المتغير بعد
انشاء المتغير ؛ ففي المثال السابق تم كتابة المتغير بنوع بيانات غير محدد ؛ فيمكن إضافة البيانات
فيما بعد على النحو التالى:
فتم وضع نوع البيانات للمتغير xمن نوع النصوص ؛ كما يمكن أيضا في الجافا اسكريبت تغيير
قيمة متغير بعد إنشاؤه ؛
فمثال لتغيير قيمة المتغير xفيتم بكتابة = nameويتم كتابة القيمة الجديدة للمتغير .
52
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
;)console.log(typeof google
: Arrayوهو نوع من المتغيرات عبارة عن قائمة تحتوى على أعداد من البيانات ؛ قد تكون مختلفة " ارقام
مع نصوص ويتم حفظها داخل ] [ .
Objectالكائنية :وهو للبيانات التى يستخدم لوصف الكائن (الشيء) فكل شيء في البرمجة عبارة عن
كائن .
)'var x = document.querySelector('h1
53
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
العوامل: Operators
وهى تستخدم كاأللة الحاسبة لعمليات الحسابية الجمع والطرح والضرب والقسمة وخالفه من العمليات
وتكتب كما هو موضح :
54
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
55
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
= تساوى ؛ != ال تساوى ؛ < أكبر من؛ >أصغر من .؛>= أكبر من أو يساوى .؛<= أصغر من أو يساوى
;var x = 1
;var y = 10
;var z = 0
z = x + y; // z = 1 + 10 => 11
z = x - y; // z = 1 - 10 => -9
z = x * y; // z = 1 * 10 => 10
z = x / y; // z = 1 / 10 => 0.1
z = x % y; // z = 1 % 10 => 0.1
;z = x++; // z = 2
;z = x--; // z = 0
الشروط . Conditions
الشرط هو وضع قيود محددة لتنفيذ الكود؛ فلو الشرط صحيح يتم تنفيذ الكود؛ ولو الشرط خطأ لم يتم تنفيذه؛
;'var x ='5
{)'if (x ==='5
;)'!alert('ok,this is greate
{}else
;)'alert('wrong
}
56
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
المحدد): (Switch
يستخدم المحدد Switchلتبسيط كتابة الشروط ؛ فمثال لو لدينا نص ) (Statementيتكون من مئة شرط أو
أكثر ،فليس من المنطقي أن نستخدم الجملة الشرطية ) (If..Elseمئة مرة ،ففكرة جملة Switchتعتمد على
المتغير الخاص بها والذي يعتبر المحدد لها ،أي ستكون النتائج حسب قيمة ذلك المتغير.
الدوال Function
الدوال هي تجميع مجموعة أكواد الستخدامها في وظيفة محددة ؛ فمثال لو البرنامج يحتاج الى كود هذا الكود
يتم تشغيله أكثر من مرة وفى اكثر من مكان فبدال من إعادة ذلك فيتم كتابته مرة واحدة وإسناده إلى دالة تقوم
بإستدعائها بإسم الدالة ؛ فسبق أن استخدمنا alertوهى دالة لعمل رسالة ترحيب و دالة
document.querySelectorوهي دوال جاهزة بالمتصفح .
57
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
فنالحظ أن الدوال تنتهى دائما بـ( ) ألنها تتطلب وضع argumentsوهى بيانات تحتاجها الدالة لتأدي
وظيفتها المطلوبة منها ؛ كما أيضا يمكن كتابة دوال خاصة بنا " حيث يقوم المستخدم بعمل دالة مخصصة
لبرنامجه" وفيما يلى كيفية كتابة الدالة تستخدم لضرب رقمين :
{ )function multiply(num1,num2
;var result = num1 * num2
;return result
}
;)multiply(9,17
;)multiply(7,3
:Events
األحداث مهمة لبناء صفحات ويب تفاعلية فهى عبارة عن ربط جزء معين من برنامج ليقوم بالعمل عند
حدوث أحداث معينة واألكثر استخداما هو click event؛ وهو يحدث عندما تقوم بالضغط على شيء ما
بالفأرة .لنأخذ مثال بسيط يشرح حدث الضغط ،فمثال الكود التالي :
{ )(document.querySelector('html').onclick = function
;)'!alert('Ouch! Stop poking me
}
{ )(document.querySelector('html').onclick = function
;)'!alert('Ouch! Stop poking me
}
58
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
هناك اكثر من طريقة لربط حدث بأحد عناصر الصفحة ؛ في هذا المثال قمنا باختيار عنصر <،>html
وحددنا حدث الضغط عليه onclickوقمنا بإعطائه الحدث دالة مجهولة (من غير اسم) يقوم بتشغيلها عندما
يحصل هذا الحدث (الضغط على العنصر).
التكرار يمكننا من تنفيذ مجموعة من األوامر والتعليمات البرمجية ؛ وهناك أنواع منهما:
:Forحيث يتم تكرار العمل إذا تحقق الشرط ؛ فمثال لو أريد كتابة جملة معينة مائة مرة ؛ فيتم عمل تكرار
حتى ال يتم كتابة الجملة بهذا العدد.ويتم كتابتها على النحو التالى؛
;Var x
)for(x = 1; x <= 10; x++
;)<"{Document.write(x +">br
}
: do...whileفهى حلقة التتوقف عن التكرار حتى يتم تحقق الشرط المحدد ويتم كتابتها على النحو التالى:
;var i = 0
{ do
;i += 1
;)console.log(i
;} while (i < 5);var i = 0
{ do
;i += 1
;)console.log(i
;)} while (i < 5
59
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
: Whileحيث تستمر بتنفيذ األكواد المرتبطة بها طالما الشرط المحدد يساوي true.وعندما سيصبح
الشرط يساوي ،falseستتوقف ( )statementالمرتبطة بالحلقة عن التنفيذ وسينتقل التحكم الى التعليمة
البرمجية التي تلي الحلقة .while
;var n = 0
;var x = 0
{ )while (n < 3
;n++
;x += n
}
فنالحظ أنها مع كل تكرار ،ستقوم الحلقة بالزيادات على nوتضيف قيمته إلى .xلتكون القيم في التكرار
األول n = 1و x = 1وفى الثاني n = 2 :و x = 3بينما التكرار الثالث n = 3 :و x = 6
وبعد االنتهاء من التكرار الثالث ،الشرط ( ) 3 < nلم يعد يساوي ،trueلذلك ستنتهي الحلقة التك اررية.
60
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
اآلن بعد أن عرضنا بعض أساسيات HTMLو CSSو JavaScriptفال بد من معرفة كيفية إنشاء بعض
تطبيقات الويب لنظم المعلومات الجغرافية وذلك من خالل عرض كيفية إنشاء الخريطة وإضافة الطبقات اليها.
لتعلم تطبيقات الويب الخاصة بنظم المعلومات الجغرافية ال بد من معرفة واجهة برمجة التطبيقات (.)API
وهذا ما ينطبق على انشاء تطبيقات الويب باستخدام ArcGIS API JavaScript؛ هناك بعض الخطوات
األساسية التي يجب عليك اتباعها إلنشاء أي خرائط ويب باستخدام ArcGIS API JavaScript
إنشاء كود HTMLلصفحة الويب
في الفصل السابق ،تعلمت المفاهيم األساسية لـ HTMLو CSSوجافا سكريبت .اآلن ،ستبدأ في تطبيق
هذه المهارات في العمل.
انشىء ملف . Html
أفتح محرر األكواد " "Visual studio
العناصر األساسية لعمل ويب باستخدام API :
61
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
"my view " ) ونسميه باسم وليكنid( نضع به الخريطة الخاصة بنا و نعطى لهdiv نقوم بعمل-
. لنعطى للخريطة المقاساتstyle نقوم بعمل-
ثمrquier داخله نبدأ بكتابةscript يتم كتابة الكود الخاص بالخريطة ونقوم بعملbody وعند-
.استدعاء الخرائط من مكتبة ايزرى
.view واألخر اسميهmap " أحدهما اسميهlet " عمل متغيرين-
<script src="http://js.arcgis.com/3.9/"></script>
<script>
62
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
dojo.require("esri.map");
function init(){
var map = new esri.Map("mapDiv", {
center: [-56.049, 38.485],
zoom: 3,
basemap: "streets"
});
}
dojo.ready(init);
</script>
</head>
<body class="claro">
<div id="mapDiv"></div>
</body>
</html>
نجده تم انشاء الخريطة داخل صفحة الويب على النحو الموضح أدناه
63
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
تقوم < >scriptبتحميل .ArcGIS API for JavaScriptتم استخدام اصدار . 3.9يمكن تحديث الرقم
عندما يتم إصدار إصدارات جديدة من .، APIتقوم العالمة < >linkبتحميل ملف esri.css
،والتي تحتوي على أنماط خاصة بعناصر واجهة مستخدم Esriومكوناتها.
يمكن ارجاع الخريطة الى نقطة محددة " باحداثيات هذه النقطة" وعمل زووم عليها بنسبة محددة وذلك بالكود
التالى :
><script
;)"dojo.require("esri.map
{)(function init
{ var map = new esri.Map("mapDiv",
center: [46.7166,24.4],
zoom: 3,
"basemap: "streets
;)}
}
;)dojo.ready(init
></script
64
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
: الكود كامل
:يجب أن يظهر رمز هذا التطبيق البسيط على النحو التالي
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9,
IE=10">
<meta name="viewport" content="initial-scale=1, maximum-
scale=1,user-scalable=no"/>
<title>Simple Map</title>
<link rel="stylesheet"
href="http://js.arcgis.com/3.9/js/esri/css/esri.css">
<link rel="stylesheet"
href="http://js.arcgis.com/3.9/js/dojo/dijit/themes/claro/
claro.css">
<style>
html, body, #map {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
</style>
<script src="http://js.arcgis.com/3.9/"></script>
<script>
var map;
require(["esri/map", "dojo/domReady!"], function(Map) {
map = new Map("map", {
65
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
basemap: "topo",
center: [46.7166,24.4], // long, lat
zoom: 13,
"sliderStyle: "small
;)}
;)}
></script
></head
>"<body class="claro
><div id="map"></div
></body
></html
بعد عمل Runأو فتح صفحة الويب نجد أنه تم وضع الخريطة.
مما سبق تعلمنا كيفية تهيئة ملف الجافا سكريبت واضافة الخريطة اليه؛ لكن نحن في حاجة الى إضافة
طبقات بعد ذلك الى الخريطة؛ وخالف ذلك.
66
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
تهيئة العمل:
لعمل تطبيق ويب باستخدام مكتبة APIARCGIS JS؛ يتطلب منا عمل مفتاح للـ API؛ وذلك عن طريق
الخطوات التالية:
https://developers.arcgis.com/javascript/latest/
ثم اضغط على create your first APIkeyمن النافذة التالية :
67
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
68
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
بإعادة تعيين أي إعدادات للمتصفح وذلك ليصبح الكودCSS لعرض الخريطة ويقومviewDiv
:على النحو التالى
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
<title>ArcGIS API for JavaScript </title>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
: وذلك بالكود التالىhead في تاجcss , js عن طريق وضع مرجع مكتبةAPI عمل مرجعية-
69
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
إضافة النماذج :فتحتوي ArcGIS JS APIعلى وحدات أو نماذج AMDالنمطية .قم باإلشارة إلى
الوحدات النمطية للخريطة و .MapView
في عالمة < ، >headأضف عالمة < >scriptوعبارة تتطلب AMDلتحميل وحدتي Mapو
.MapView
><script
require(["esri/config","esri/Map", "esri/views/MapView"], function (esriConfig,Map, MapVi
{ )ew
;)}
></script
الحصول على مفتاح APIواضافة الخريطة :حيث مفتاح APIمطلوب للوصول إلى خدمات ArcGIS؛
ويتم ذلك عن طريق االنتقال إلى لوحة التحكم للحصول على مفتاح API؛ ثم بعذ ذلك يتم انشاء خريطة
باستخدم خريطة لتعيين طبقة خريطة األساس وتطبيق مفتاح APIالخاص بك ز وذلك من خالل الكود
التالى " بحيث يتم وضعه داخل عنصر " requireلتصبح على النحو التالى:
70
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
يمكنك استخدام هذه األحداث لتغيير. أيضا خصائص أخرى مثل النقر والنقر المزدوجMapView يدعم
موضع الخريطة أو للعثور على المعالم في الطبقات ؛ يتم ذلك على الملف باالكواد التالية " يتم وضعها
. require أسفل األكواد السابقة داخل
const view = new MapView({
map: map,
center: [31.13, 30.02],// Longitude, latitude
zoom: 13, // Zoom level
container: "viewDiv" // Div element
});
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
<title>ArcGIS API for JavaScript</title>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require(["esri/config","esri/Map", "esri/views/MapView"], function (esriConfig,Map, MapVi
ew) {
71
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
esriConfig.apiKey = "YOUR-API-KEY";
const map = new Map({
basemap: "streets" // Basemap layer service
});
const view = new MapView({
map: map,
center: [31.13, 30.02], // Longitude, latitude
zoom: 13, // Zoom level
container: "viewDiv" // Div element
});
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
72
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
حتى يصبح الكود كما يلىFunction الىSearch ؛ واضافةRequire يتم إضافة الكود التالى داخل
require([
"esri/config",
"esri/Map",
"esri/views/MapView",
"esri/widgets/Search"
], function(esriConfig,Map, MapView, Search) {
ثم إضافة صندوق البحث واضافته للخريطة وذلك عن طريق وضع الكود التالى أسفل األكواد قبل قفل
:ـscriptال
: حتى تصبح على النحو التالىrequire إضافة العناصر التالية داخل عنصر
require([
"esri/config",
"esri/Map",
"esri/views/MapView",
"esri/widgets/BasemapToggle",
"esri/widgets/BasemapGallery"
], function(esriConfig, Map, MapView, BasemapToggle, BasemapGallery) {
73
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
يمكن التبديل بين خرائط األساس وذلك لتمكين التحديد بين خريطتي أساس باستخدام عنصر واجهة مستخدم
Script قبل عنصرhtmlخريطة األساس وذلك بوضع الكود ؛ أخر صقحة الـ
const basemapToggle = new BasemapToggle({
view: view,
nextBasemap: "arcgis-imagery"
});
});
</script>
لتحديدBasemapGallery تحديد خرائط األساس من المعرض عن طريق استخدام عنصر واجهة مستخدم
:خرائط أساس مختلفة بوضع الكود التالى اسفل الكود السابق
const basemapGallery = new BasemapGallery({
view: view,
source: {
query: {
title: '"World Basemaps for Developers" AND owner:esri'
}
}
});
74
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<style>
html, body, #viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require([
"esri/config",
"esri/Map",
"esri/views/MapView",
"esri/widgets/BasemapToggle",
"esri/widgets/BasemapGallery"
], function(esriConfig, Map, MapView, BasemapToggle, BasemapGallery) {
esriConfig.apiKey = "YOUR-API-KEY";
const map = new Map({
basemap: "streets"
});
const view = new MapView({
container: "viewDiv",
map: map,
zoom: 3
});
const basemapToggle = new BasemapToggle({
view: view,
nextBasemap: "arcgis-imagery"
});
view.ui.add(basemapToggle,"bottom-right");
});
75
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
></script
></head
><body
><div id="viewDiv"></div
></body
></html
76
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
77
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title>ArcGIS API for JavaScript </title>
<style>
html, body, #viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require([
"esri/config",
"esri/Map",
"esri/views/MapView",
"esri/Graphic",
78
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
"esri/layers/GraphicsLayer"
], function(esriConfig,Map, MapView, Graphic, GraphicsLayer) {
esriConfig.apiKey = "YOUR-API-KEY";
const map = new Map({
basemap: "arcgis-topographic" //Basemap layer service
});
const view = new MapView({
map: map,
center: [31.13,30.02], //Longitude, latitude
zoom: 13,
container: "viewDiv"
});
const graphicsLayer = new GraphicsLayer();
map.add(graphicsLayer);
const point = { //Create a point
type: "point",
longitude: 31.13,
latitude: 30.02
};
const simpleMarkerSymbol = {
type: "simple-marker",
color: [226, 119, 40], // Orange
outline: {color: [255, 255, 255], // White
width: 1
}
};
const pointGraphic = new Graphic({
geometry: point,
symbol: simpleMarkerSymbol
});
graphicsLayer.add(pointGraphic);
79
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
: إضافة خط
80
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
graphicsLayer.add(pointGraphic);
const polyline = {
type: "polyline",
paths: [
[31.13, 30.02], //Longitude, latitude
[31.10, 30.01], //Longitude, latitude
[31.8, 30.00] //Longitude, latitude
]
:إلضافة مضلع
const polygon = {
type: "polygon",
rings: [
[31.13, 30.02], //Longitude, latitude
[31.10, 30.01], //Longitude, latitude
[31.9, 30.00], //Longitude, latitude
[31.8, 29.9], //Longitude, latitude
[31.7, 29.8] //Longitude, latitude
]
};
const simpleFillSymbol = {
type: "simple-fill",
color: [227, 139, 79, 0.8], // Orange, opacity 80%
outline: {
81
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title>ArcGIS API for JavaScript </title>
<style>
html, body, #viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require([
"esri/config",
"esri/Map",
"esri/views/MapView",
82
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
"esri/Graphic",
"esri/layers/GraphicsLayer"
esriConfig.apiKey = "YOUR-API-KEY";
83
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
};
84
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
const simpleFillSymbol = {
type: "simple-fill",
color: [227, 139, 79, 0.8], // Orange, opacity 80%
outline: {
color: [255, 255, 255],
width: 1
}
};
const polygonGraphic = new Graphic({
geometry: polygon,
symbol: simpleFillSymbol,
});
graphicsLayer.add(polygonGraphic);
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
85
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
يمكنك عرض نافذة منبثقة للرسم عند النقر فوقه .تستخدم التعليمات البرمجية التي تُنشئ رسم المضلع
إلظهار نافذة منبثقة تحتوي على اسم ووصف الرسم كما يلى :
width: 1
}
;}
{ = const popupTemplate
title: "{Name}",
"}content: "{Description
}
{ = const attributes
Name: "Graphic",
"Description: "I am a polygon
}
{(const polygonGraphic = new Graphic
ثم إضافة
symbol: simpleFillSymbol,
attributes: attributes,
popupTemplate: popupTemplate
86
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
:html إضافة المحتويات والعناصر التالية داخل صفحة:" إضافة مشهد ثالثى "خريطة ثالثية-6
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title>ArcGIS scean</title>
<style>
html, body, #viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
esriConfig.apiKey = "YOUR-API-KEY";
const map = new Map({
basemap: "streets", //Basemap
ground: "world-elevation", //Elevation service
87
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
});
:الكود
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-
scalable=no">
<title>ArcGIS scene</title>
88
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<style>
html, body, #viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require([
"esri/config",
"esri/Map",
"esri/views/SceneView"
], function(esriConfig,Map, SceneView) {
esriConfig.apiKey = "YOUR-API-KEY";
const map = new Map({
basemap: "streets", //Basemap layer service
ground: "world-elevation", //Elevation service
});
const view = new SceneView({
container: "viewDiv",
map: map,
camera: {
position: {
x: 31.13, //Longitude
y: 30.02, //Latitude
z: 2000 //Meters
},
tilt: 75
89
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
}
;)}
;)}
></script
></head
><body
><div id="viewDiv"></div
></body
></html
فتح محرر األكواد:وضع أكواد إضافة الخريطة؛ عمل استدعاء لـ Feature layer؛ واضافتها داخل الـ
function؛ كتابة مفتاح APIالخاص بى وكتابة URLالخاص بالبيانات "."Feature layer
90
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
يتم اختيار الملفات التي نريدها ؛ دبل كليك عليها يفتح الصفحة ؛ يتم اختيار الـTrialias(0) Layers
><html
><head
><meta charset="utf-8" /
><meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" /
><title>ArcGIS API for JavaScript</title
><style
html,
body,
{ #viewDiv
;padding: 0
;margin: 0
;height: 100%
;width: 100%
}
91
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require(["esri/config","esri/Map", "esri/views/MapView"], function (esriConfig,Map, MapVi
ew) {
esriConfig.apiKey = "YOUR-API-KEY";
const map = new Map({
basemap: "streets" // Basemap layer service
});
const view = new MapView({
map: map,
center: [-118.7151, 34.0904], // Longitude, latitude
zoom: 13, // Zoom level
container: "viewDiv" // Div element
});
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
92
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<script>
require([
"esri/config",
"esri/Map",
"esri/views/MapView",
"esri/layers/FeatureLayer"
esriConfig.apiKey = "---------------------";
93
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
center: [-118.80543,34.02700],
zoom: 13
});
94
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
95
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ServerURLلو البرنامج على جهازى ؛ يتم كتابة (اسم الجهاز أو local hostورقم االرك سيرفر
على النحو التالى .)http://localhost:6080/arcgis
96
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ثم .finish
97
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ثم
ندخل على service directoryو نقوم بعمل تسجيل الدخول نجد الخريطة التي تم رفعها ؛ يتم نسخ url
ووضعها في الكود كما سبق وأن ذكرنا .
98
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
عمل تسجيل دخول الى Arc gis on lineمن برنامج االرك GISديسك توب من fileواختار Sine
inوتسجيل الدخول ثم عمل Shareمرة أخرى وأختار من النافذة التالية hostالخاص بى على االرك
اونالين.
99
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
لو اردنا عمل تعديل على البيانات ؛ على االونالين يتم اختيار feature Access
الخطأ األول يطلب إضافة Tag؛ فيتم وضع add tagفي خانة Tags؛ ثم الضغط على Analyze؛
والذهاب الى الخطأ الثاني والضغط عليه دبل كليك ؛ يطلب وضع وصف فيتم وضعه ثم الضغط على
Analyzeوفى النهاية يتم الضغط على .Publish
100
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ثم إضافة وسيلة التوضيح " المفتاح ؛ واضافة نفسrequire يتم إضافة خريطة الويب الخاصة بايزرى في
: حتى يصيح الكود على النحو التالىfunction العناصر الى
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title>ArcGIS API for JavaScript </title>
<style>
html, body, #viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require([
"esri/config",
101
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
"esri/WebMap",
"esri/views/MapView",
"esri/widgets/ScaleBar",
"esri/widgets/Legend"
], function(esriConfig, WebMap, MapView, ScaleBar, Legend) {
esriConfig.apiKey = " وضح مفتاح---API-----------------;" الخاص بك
const webmap = new WebMap({
portalItem: {
id: "41281c51f9de45edaf1c8ed44bb10e30"
}
});
const view = new MapView({
container: "viewDiv",
map: webmap
});
const scalebar = new ScaleBar({
view: view
});
view.ui.add(scalebar, "bottom-left");
const legend = new Legend ({
view: view
});
view.ui.add(legend, "top-right");
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
102
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
require([
"esri/config",
"esri/WebMap",
"esri/views/MapView",
"esri/layers/FeatureLayer",
"esri/widgets/Editor"
],
basemap: "arcgis-topographic",
layers: [myPointsFeatureLayer]
103
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title>ArcGIS JavaScript </title>
<style>
html, body, #viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require([
"esri/config",
"esri/Map",
"esri/views/MapView",
"esri/layers/FeatureLayer",
104
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
"esri/widgets/Editor"
esriConfig.apiKey = "AAPKbb66530808344503bed21632f9b025a5uN5GiA8PpuNLYpi8XQdaq
87URclwKZh_gavAGAnwkM4rsF88AP9Wdf_jzulPWyuG";
layers: [myPointsFeatureLayer]
});
// Editor widget
const editor = new Editor({
view: view
});
// Add widget to the view
105
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
view.ui.add(editor, "top-right");
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
106
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
: للرسمwidgetإضافة-10
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<title>Sketch widget </title>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css" />
<script src="https://js.arcgis.com/4.18/"></script>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<script>
require(["esri/widgets/Sketch", "esri/Map", "esri/layers/GraphicsLayer", "esri/views/MapVie
w"], function(
Sketch,
Map,
GraphicsLayer,
MapView
){
const layer = new GraphicsLayer();
107
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
});
const view = new MapView({
container: "viewDiv",
map: map,
zoom: 12,
center: [31, 30]
});
const sketch = new Sketch({
layer: layer,
view: view,
// graphic will be selected as soon as it is created
creationMode: "update"
});
view.ui.add(sketch, "top-right");
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
108
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
#sketchPanel {
width: 200px;
padding: 10px;
background-color: rgba(255, 255, 255, 0.8);
}
.esri-button {
margin: 2px;
}
#snapping {
padding: 10px;
}
#snappingctrlkey {
display: inline;
}
109
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
#actionbuttons {
display: none;
}
</style>
<script>
require([
"esri/Map",
"esri/views/SceneView",
"esri/layers/GraphicsLayer",
"esri/widgets/Sketch/SketchViewModel",
"esri/symbols/WebStyleSymbol"
], function (Map, SceneView, GraphicsLayer, SketchViewModel, WebStyleSymbol) {
// the layer where the graphics are sketched
const graphicsLayer = new GraphicsLayer({ elevationInfo: { mode: "on-the-ground" } });
110
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
type: "polygon-3d",
symbolLayers: [
{
type: "extrude",
size: 10, // extrude by 10 meters
material: {
color: white
},
edges: {
type: "solid",
size: "3px",
color: blue
}
}
]
};
111
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
}
}
]
};
// define the SketchViewModel and pass in the symbols for each geometry type
// set the snappingOptions.selfEnabled to the default state
const sketchViewModel = new SketchViewModel({
layer: graphicsLayer,
view: view,
112
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
pointSymbol: point,
polygonSymbol: extrudedPolygon,
polylineSymbol: route,
snappingOptions: {
selfEnabled: snappingcheckboxsavedstate
}
});
// after drawing the geometry, enter the update mode to update the geometry
// and the deactivate the buttons
sketchViewModel.on("create", function (event) {
if (event.state === "complete") {
document.getElementById("startbuttons").style.display = "inline";
document.getElementById("actionbuttons").style.display = "none";
}
if (event.state === "cancel") {
document.getElementById("startbuttons").style.display = "inline";
document.getElementById("actionbuttons").style.display = "none";
}
});
113
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
114
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
// observe the if the CTRL-key got pressed to give the user a visual feedback
// the logic itself for toggling snapping is in the SketchViewModel
view.on(["key-down"], (ev) => {
if (ev.key === "Control") {
document.getElementById("snappingctrlkey").style.fontWeight = "bold";
document.getElementById("snappingctrlkey").style.color = "red";
document.getElementById("snappingcheckbox").checked = !snappingcheckboxsavedstate;
}
});
view.on(["key-up"], (ev) => {
if (ev.key === "Control") {
document.getElementById("snappingctrlkey").style.fontWeight = "normal";
document.getElementById("snappingctrlkey").style.color = "black";
document.getElementById("snappingcheckbox").checked = snappingcheckboxsavedstate;
}
});
// add the checkbox to the bottom-right of the view
view.ui.add("snapping", "bottom-right");
});
</script>
</head>
<body>
<div id="viewDiv"></div>
<div id="sketchPanel" class="esri-widget">
<div id="startbuttons">
<button id="point" data-type="point" class="esri-
button starttool">Draw a point of interest</button>
<button id="line" data-type="polyline" class="esri-button starttool">Draw a route</button>
<button id="extrudedPolygon" data-type="polygon" class="esri-
button starttool">Draw a building</button>
</div>
<div id="actionbuttons">
<button id="cancel" class="esri-button">Cancel</button>
115
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
116
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
}
.esri-button {
margin: 2px;
}
#snapping {
padding: 10px;
}
#snappingctrlkey {
display: inline;
}
#actionbuttons {
display: none;
}
</style>
<script>
require([
"esri/Map",
"esri/views/SceneView",
"esri/layers/GraphicsLayer",
"esri/widgets/Sketch/SketchViewModel",
"esri/symbols/WebStyleSymbol"
], function (Map, SceneView, GraphicsLayer, SketchViewModel, WebStyleSymbol) {
// the layer where the graphics are sketched
const graphicsLayer = new GraphicsLayer({ elevationInfo: { mode: "on-the-ground" } });
117
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
map: map,
camera: {
position: [9.76504392, 46.43538764, 2073.31548],
heading: 226.79,
tilt: 88.35
}
});
118
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
symbolLayers: [
{
type: "line",
size: "10px",
material: {
color: white
}
},
{
type: "line",
size: "3px",
material: {
color: blue
}
}
]
};
119
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
}
]
};
// define the SketchViewModel and pass in the symbols for each geometry type
// set the snappingOptions.selfEnabled to the default state
const sketchViewModel = new SketchViewModel({
layer: graphicsLayer,
view: view,
pointSymbol: point,
polygonSymbol: extrudedPolygon,
polylineSymbol: route,
snappingOptions: {
selfEnabled: snappingcheckboxsavedstate
}
});
// after drawing the geometry, enter the update mode to update the geometry
// and the deactivate the buttons
sketchViewModel.on("create", function (event) {
if (event.state === "complete") {
document.getElementById("startbuttons").style.display = "inline";
document.getElementById("actionbuttons").style.display = "none";
}
if (event.state === "cancel") {
document.getElementById("startbuttons").style.display = "inline";
document.getElementById("actionbuttons").style.display = "none";
}
});
120
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
121
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
view.ui.add("sketchPanel", "top-right");
// observe the if the CTRL-key got pressed to give the user a visual feedback
// the logic itself for toggling snapping is in the SketchViewModel
view.on(["key-down"], (ev) => {
if (ev.key === "Control") {
document.getElementById("snappingctrlkey").style.fontWeight = "bold";
document.getElementById("snappingctrlkey").style.color = "red";
document.getElementById("snappingcheckbox").checked = !snappingcheckboxsavedstate;
}
});
view.on(["key-up"], (ev) => {
if (ev.key === "Control") {
document.getElementById("snappingctrlkey").style.fontWeight = "normal";
document.getElementById("snappingctrlkey").style.color = "black";
document.getElementById("snappingcheckbox").checked = snappingcheckboxsavedstate;
}
});
122
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<body>
<div id="viewDiv"></div>
<div id="sketchPanel" class="esri-widget">
<div id="startbuttons">
<button id="point" data-type="point" class="esri-
button starttool">Draw a point of interest</button>
<button id="line" data-type="polyline" class="esri-button starttool">Draw a route</button>
<button id="extrudedPolygon" data-type="polygon" class="esri-
button starttool">Draw a building</button>
</div>
<div id="actionbuttons">
<button id="cancel" class="esri-button">Cancel</button>
<button id="done" class="esri-button">Done</button>
</div>
</div>
<div id="snapping" class="esri-widget">
<input type="checkbox" id="snappingcheckbox" checked />
<label id="snappinghint"
>snapping (use
<div id="snappingctrlkey">CTRL-key</div>
to toggle)</label
>
</div>
</body>
</html>
123
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<style>
html,
body {
padding: 0;
124
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
margin: 0;
height: 100%;
}
.viewDivBase {
padding: 0;
margin: 0;
height: 100%;
width: 49.9%;
}
#viewDiv2d {
float: left;
}
#viewDiv3d {
float: right;
}
#info {
color: #444;
padding: 5px;
margin: 5px;
width: 120px;
text-align: center;
border: solid 2px #666;
border-radius: 4px;
background-color: #fff;
}
.chkLabel {
font-size: 12px;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css" />
125
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require([
"esri/Map",
"esri/views/SceneView",
"esri/views/MapView",
"esri/layers/GraphicsLayer",
"esri/Graphic",
"esri/geometry/geometryEngine"
], function(Map, SceneView, MapView, GraphicsLayer, Graphic, geometryEngine) {
// Create a 2D MapView and a 3D SceneView
// each referencing the same map with two
// graphics layers
// Add two graphics layers to map: one for points, another for buffers
var bufferLayer = new GraphicsLayer();
var pointLayer = new GraphicsLayer();
map.addMany([bufferLayer, pointLayer]);
var viewOptions = {
map: map,
zoom: 3,
center: [0, 60]
};
var view3d = new SceneView(viewOptions);
view3d.container = "viewDiv3d";
view3d.ui.add("info", "top-right");
var view2d = new MapView(viewOptions);
126
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
view2d.container = "viewDiv2d";
var polySym = {
type: "simple-fill", // autocasts as new SimpleFillSymbol()
color: [140, 140, 222, 0.5],
outline: {
color: [0, 0, 0, 0.5],
width: 2
}
};
var pointSym = {
type: "simple-marker", // autocasts as new SimpleMarkerSymbol()
color: [255, 0, 0],
outline: {
color: [255, 255, 255],
width: 1
},
size: 7
};
/**
* When the space bar is tapped, then buffering is enabled.
* @param {Object} event - The event object associated with the
* key-down event.
*/
function keyDownListener(event) {
var keyInput = event.key;
127
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
bufferEnabled = (keyInput === " " || keyInput === "Spacebar") && !bufferEnabled;
if (bufferEnabled) {
document.getElementById("mode").innerHTML = "navigation";
} else {
document.getElementById("mode").innerHTML = "buffering";
}
}
view2d.on("key-down", keyDownListener);
view3d.on("key-down", keyDownListener);
view2d.on("pointer-move", function(event) {
if (bufferEnabled) {
createBuffer(event, view2d);
}
});
view3d.on("pointer-move", function(event) {
if (bufferEnabled) {
createBuffer(event, view3d);
}
});
view2d.on("click", function(event) {
bufferPoint(event.mapPoint);
});
view3d.on("click", function(event) {
bufferPoint(event.mapPoint);
});
128
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
/**
* Stops propagation on the given event and constructs a point for
* buffering.
*
* @param {Object} event - Event object containing XY screen coordinates.
* @param {Mapview | SceneView} view - View instance from which the point was obtained
.
*/
function createBuffer(event, view) {
// prevent further propagation of the current event bubbling up the event chain.
// in this case, it will prevent default `drag` event behavior for the MapView
// which is to move around the view by dragging the pointer.
event.stopPropagation();
if (point) {
bufferPoint(point);
}
}
/**
* Buffers the given point by 560 kilometers.
*
* @param {esri/geometry/Point} point - A point instance to buffer.
*/
function bufferPoint(point) {
129
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
if (!bufferEnabled) {
console.log("buffering not enabled. Hit the space bar key and click/drag to buffer.");
return;
}
clearGraphics();
// removes z-values from the point when taken from a SceneView.
// GeometryEngine does not support 3D geometries.
point.hasZ = false;
point.z = undefined;
pointLayer.add(
new Graphic({
geometry: point,
symbol: pointSym
})
);
var buffer = geometryEngine.geodesicBuffer(point, 560, "kilometers");
bufferLayer.add(
new Graphic({
geometry: buffer,
symbol: polySym
})
);
}
/**
* Clears all graphics from all GraphicsLayers
*/
function clearGraphics() {
pointLayer.removeAll();
bufferLayer.removeAll();
}
130
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
});
</script>
</head>
<body>
<div class="viewDivBase" id="viewDiv2d"></div>
<div class="viewDivBase" id="viewDiv3d">
<div id="info" class="esri-widget">
<label class="chkLabel"
>Press <strong>space bar</strong> to enable <strong> <span id="mode">buffering</span
>.</strong> Then click or
move the mouse to buffer.
</label>
<br />
</div>
</div>
</body>
</html>
131
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<title> viewshed </title>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
#paneDiv {
position: absolute;
top: 18px;
right: 18px;
padding: 12px;
background-color: rgba(0, 0, 0, 0.5);
color: white;
width: 200px;
}
</style>
132
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
<script>
require([
"esri/Map",
"esri/views/SceneView",
"esri/layers/GraphicsLayer",
"esri/Graphic",
"esri/geometry/Point",
"esri/tasks/Geoprocessor",
"esri/tasks/support/LinearUnit",
"esri/tasks/support/FeatureSet"
], function(Map, SceneView, GraphicsLayer, Graphic, Point, Geoprocessor, LinearUnit, Featur
eSet) {
var gpUrl =
"https://sampleserver6.arcgisonline.com/arcgis/rest/services/Elevation/ESRI_Elevation_W
orld/GPServer/Viewshed";
133
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
var markerSymbol = {
type: "simple-marker", // autocasts as new SimpleMarkerSymbol()
color: [255, 0, 0],
outline: {
// autocasts as new SimpleLineSymbol()
color: [255, 255, 255],
width: 2
}
};
var fillSymbol = {
type: "simple-fill", // autocasts as new SimpleFillSymbol()
color: [226, 119, 40, 0.75],
outline: {
// autocasts as new SimpleLineSymbol()
color: [255, 255, 255],
width: 1
}
};
function computeViewshed(event) {
134
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
graphicsLayer.removeAll();
graphicsLayer.add(inputGraphic);
135
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
view.goTo({
target: viewshedGraphics,
tilt: 0
})
.catch(function(error) {
if (error.name != "AbortError") {
console.error(error);
}
});
}
});
</script>
</head>
<body>
<div id="viewDiv"></div>
<div id="paneDiv" class="esri-widget">Click on map to execute ViewShed GP Task</div>
</body>
</html>
136
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
137
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
#paneDiv {
position: absolute;
top: 10px;
left: 62px;
padding: 0 12px 0 12px;
background-color: rgba(0, 0, 0, 0.5);
color: white;
}
</style>
<script>
require([
"esri/Map",
"esri/views/MapView",
"esri/Graphic",
"esri/layers/GraphicsLayer",
"esri/tasks/RouteTask",
"esri/tasks/support/RouteParameters",
"esri/tasks/support/FeatureSet"
], function(Map, MapView, Graphic, GraphicsLayer, RouteTask, RouteParameters, FeatureSe
t) {
138
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
139
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
140
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
</head>
<body>
<div id="viewDiv"></div>
<div id="paneDiv" class="esri-widget">
<div>
<p>
Click on the map to add stops to the route. The route from the last stop to the newly added
stop is
calculated. If a stop is not reachable, it is removed and the last valid point is set as the star
ting point.
</p>
</div>
</div>
</body>
</html>
141
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
142
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
#activeElevationLayerDiv {
margin: 10px 0;
}
ul #red {
color: rgb(150, 26, 15);
}
ul #green {
color: rgb(21, 150, 15);
}
ul span {
color: black;
}
ul {
margin: 0 0 10px 0;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.18/esri/themes/light/main.css" />
<script src="https://js.arcgis.com/4.18/"></script>
<script>
require([
"esri/Map",
"esri/views/SceneView",
"esri/Graphic",
"esri/geometry/Polyline",
"esri/layers/ElevationLayer",
"esri/core/promiseUtils"
], function(Map, SceneView, Graphic, Polyline, ElevationLayer, promiseUtils) {
// Create elevation layers
var beforeLandslideUrl =
143
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
"https://sampleserver6.arcgisonline.com/arcgis/rest/services/OsoLandslide/OsoLandslide
_Before_3DTerrain/ImageServer/";
var afterLandslideUrl =
"https://sampleserver6.arcgisonline.com/arcgis/rest/services/OsoLandslide/OsoLandslide
_After_3DTerrain/ImageServer/";
var beforeLandslideLayer = new ElevationLayer({
url: beforeLandslideUrl
});
var afterLandslideLayer = new ElevationLayer({
url: afterLandslideUrl
});
144
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
wkid: 3857
}
}
}
});
// Initialize symbols
var afterPointSymbol = {
type: "point-3d", // autocasts as new PointSymbol3D()
symbolLayers: [
{
type: "object", // autocasts as new ObjectSymbol3DLayer()
material: {
color: [150, 26, 15]
},
resources: {
primitive: "sphere"
},
width: 8
}
]
};
var beforePointSymbol = {
type: "point-3d", // autocasts as new PointSymbol3D()
symbolLayers: [
{
type: "object", // autocasts as new ObjectSymbol3DLayer()
material: {
color: [21, 150, 15]
},
resources: {
primitive: "sphere"
145
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
},
width: 8
}
]
};
var lineSymbol = {
type: "line-3d", // autocasts as new LineSymbol3D()
symbolLayers: [
{
type: "line", // autocasts as new LineSymbol3DLayer()
material: {
color: [150, 26, 15]
},
size: 1
}
]
};
var resultsContainer = document.getElementById("resultsDiv");
view.on("click", function(event) {
resultsContainer.innerHTML = "Querying elevation...";
// Query both elevation layers for the elevation at the clicked map position
var position = event.mapPoint;
var queryBeforeLandslide = beforeLandslideLayer.queryElevation(position);
var queryAfterLandslide = afterLandslideLayer.queryElevation(position);
// When both query promises resolve execute the following code
promiseUtils
.eachAlways([queryBeforeLandslide, queryAfterLandslide])
.then(function(results) {
var posBeforeLandslide = results[0].value.geometry;
var posAfterLandslide = results[1].value.geometry;
146
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
147
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
// When both elevation layers are set "visible", the surface is defined by the latter layer (aft
erLandslideLayer).
// Thus we can toggle between "before" and "after" by toggling the visibility of afterLandsli
deLayer.
document.getElementById("elevAfter").addEventListener("change", function(event) {
afterLandslideLayer.visible = event.target.checked;
beforeOrAfter = event.target.checked ? "after" : "before";
});
});
</script>
</head>
<body>
<div id="viewDiv"></div>
<div id="paneDiv" class="esri-widget">
<div id="resultsDiv">
Click on the map to see the difference in elevation before and after the landslide.
</div>
<div id="activeElevationLayerDiv">
Legend:
<ul>
<li id="green"><span>Surface point before landslide</span></li>
<li id="red"><span>Surface point after landslide</span></li>
</ul>
<input type="checkbox" id="elevAfter" checked />
148
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
149
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
الباب الرابع :انشاء تطبيقات الويب بالـ ArcGIS web App Builder
مقدمة:
ArcGIS Web App Builderتطبيق يتيح إنشاء تطبيقات الويب بسهولة؛ حيث يتضمن أدوات قوية
لتكوين تطبيقات HTMLمميزة باإلضافة الى قابليته للتوسيع من قبل المطورين إلنشاء تطبيقات متخصصة
خاصة بيباتات نظم المعلومات الجغرافية
الميزات الرئيسية لبرنامج :Web App Builder
-القدرة على انشاء تطبيقات HTML / JavaScriptتعمل على متصفحات سطح المكتب واألجهزة
اللوحية والهواتف الذكية.
-متكامل مع منصات ArcGIS Onlineو .ArcGIS Enterprise
-انشاء تطبيقات بواجهة مستخدم جاهزة للتحليالت ،مثل االستعالم والمعالجة الجغرافية والطباعة.
-إطار عمل قابل للتوسيع للمطورين إلنشاء عناصر واجهة مستخدم وموضوعات.
بدء العمل مع التطبيق:
تحميل ArcGIS wep AppBuldier؛ يتم تصطيبه على الجهاز على النحو التالى:
150
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
151
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
152
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ثم Register
نذهب الى الصفحة ونقوم بنسخ الرابط التالى ؛ مع مراعاة وضع اسم الجهاز
153
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ونضعه على النافذة الخاصة بطلب حقل ID؛ تأتى رسالة التسجيل
154
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
155
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
يتم اختيار الخريطة"تم رفعها على األكونت الخاص بي كما سبق وأن ذكرنا".
156
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
ثم نفتح الخريطة ؛ نقوم بعمل التعديالت المطلوبة؛ ثم بعد ذلك نقوم بعمل save as
يمكن عمل shareمن نافذة العرض السابقة واختيار New APPومنها Wep app builder.أو أختار
الخريطة ؛ من النافذة التالية؛
157
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
يمكن عمل اعدادات على الـ Layout؛ style؛ من Theme؛ وعمل تعديالت على الطبقات واالحداثيات
ومقياس الرسم من Widgetكما يمكن إضافة أدوات أخرى كاالستفسار أو القياس ؛ على النحو التالى
158
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
159
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
160
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
161
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
162
رشا صابر نوفل/د بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
:المراجع
ArcGIS " موسى؛ محمد محمود إبراهيم ؛ الدليل العملى الدارة واستخدام خادم نظم المعلومات الجغرافية-
.م2014 ؛Server 10
“Google Earth نوفل ؛ رشا صابر الحوسبة السحابية وتحليل بيانات االستشعار عن بعد الضخمة-
.2021Engine”
- ESRI,Getting to know Web GIS, 2015.
- Rene Rubalcava ,Introducing ArcGIS API 4 for JavaScript Turn Awesome
Maps into Awesome Apps, 2017.
- Hussein Nasser , Building web Applications with ArcGIS , 2014.
- Hytham Ahmed Create Wep Map Application whih ArcGIS Server Manager,
,2015.
- Packt Publishing,Building Web and Mobile ArcGIS Server Applications with
JavaScript Master the ArcGIS API for JavaScript, and build exciting, custom
web and mobile GIS applications with the ArcGIS Server Eric Pimpler, 2014.
- Tyler Mitchell,Using open Source GIS Toolkits , Wep Mapping , 2005.
163
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
نبذة عن المؤلف
درجة الليسانس في اآلداب من قسم الجغرافيا ،شعبة خرائط ، 2002بتقدير عام جيد من كلية اآلداب ـ جامعة -
المنوفية.
درجة الماجستير في اآلداب ( جغرافيا ) بتقدير ممتاز من جامعة المنوفية .2010 -
درجة الدكتوراه في اآلداب ( جغرافيا ) بمرتبة الشرف األولى مع التوصية بالطبع والنشر من كلية اآلداب جامعة -
المنوفية .2015
الدورات التدريبية :
دورة . ICDL
دورة . ICTP
دورات فى نظم المعلومات الجغرافية واالستشعار عن بعد:
164
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
خامساً :المشاركات:
المشاركة فى فاعليات مؤتمر سيناء بين الماضى والحاضر والمستقبل خالل الفترة من 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 GIS
2017Data Collection Manualم
-4تحليل الصورة الفضائية ببرنامج )" (ENVI Classic 5" Manualالجزء األول2017 ،م.
-5السلسلة األولى Arc Tool boxصندوق أدوات التحليل المكانى Spatial Analyst Toolsالجزء األول؛ 2017م.
-6دليل استخدام 2018 ARCGIS PROم.
165
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
تحليل الشبكات فى نظم المعلومات الجغرافية بالتطبيق ببرنامج Arc GISإصدار 10.5؛ . 2018 -8
نظم المعلومات الجغرافية "مشروع تطبيقي" ؛ دكتور محمد ربيع قطوش و دكتورة رشا نوفل .2019 -9
-12التحليالت المكانية في نظم المعلومات الجغرافية ؛تطبيقات على برنامج .2020 Arc GIS
-13تحليل المرئيات الفضائية ببرنامج (ENVIتطبيقات عملية على )ENVI 5.3الجزء الثانى ؛ 2020م .
-14البرمجة المكانية بلغتى البايثون Rفي نظم المعلومات الجغرافية 2021/2020م.
-15الف سؤال حول نظم المعلومات الجغرافية "الجزء األول" 2021م.
-16الحوسبة السحابية وتحليل بيانات االستشعار عن بعد الضخمة ”.2021“Google Earth Engine
هذه الكتب متوفرة على شبكة اإلنترنت (الصفحة الرسمية للدكتورة رشا نوفل)
https://www.facebook.com/pg/Dr.RashaNofal/videos/?ref=page_internal.#
166
د/رشا صابر نوفل بناء تطبيقات الويب يف نظم املعلومات اجلغرافية
167