نقوم بهذه الدرس بعمل مدخل للبايثون في معالجة البيانات الجغرافية باستخدام بعض التعليمات الضرورية حيث سأقوم بعرض بعض النقاط المهمة
التعرف على بيئة الإدخال بواسطة المتصفح جوبيتر
قراءة shapefile ضمن البايثون
اظهار البيانات المخزنة ضمن الطبقة ونمط البيانات ورسم الطبقة
طريقة اختيار عناصر من الطبقة
ايجاد تقاطع بين طبقتين مختلفتين
تصنيف الطبقة وفق سمة معينة
حفظ الطبقة علي جهاز الكمبيوتر خاصتك
تغيير نظام الإسقاط للطبقة
رسم طبقات مختلفة معا
وهي منصة علمية جاهزة وقابلة للتطوير تعمل لتسهيل مشاركة البيانات مع الآخرين وتسهل ادارة البيانات واستخدام المكتبات المختلفة وتوفر بيئة عمل متكاملة لأي مشروع برمجي وتعمل مع جميع بيئات التشغيل
المختلفة
حيث سيتم استخدام المتصفح جوبيتر وهو تطبيق مفتوح المصدر يتيح تحرير وتشغيل الكودات البرمجية عبر متصفح الانترنت الخاص بك ويعطيك قدرت تحكم عالية في كتابة كودك البرمجي حيث هناك سهولة في
الإدخال والتعديل والعرض وغيرها الكثير من الميزات
تحميل انكوندا
الحزمة geopandas هي حزمة مفتوحة المصدر للتعامل مع البيانات الجيومكانية وهي تعتبر توسيع للحزمة pandas
لتستطيع التعامل مع البيانات الجغرافية وهي تعتمد على بعض المكتبات الأخرى مثل matplotlib , fiona
Fiona تمكن البايثون من قراءة بيانات نظام المعلومات الجغرافية الطبقات وانظمة الإسقاط وتتوافق مع كل المكتبات التي يستخدمها البايثون لنظام المعلومات الجغرافية
قم بإضافة الحزمة geopandas من خلال كتابة الأمر التالي ضمن anaconda prompt
conda install -c conda-forge geopandas
نقوم بفتح انكوندا فتظهر الواجهة البرمجية كما في الصورة بالاسفل ومن ثم نقوم بفتح جوبيتر لادخال الكود البرمجي
نقوم بايضافة الحزمة Geopandas ونكتب الامر pd.options.display.max_rows=10 لإظهار عشرة أسطر من الجدول اثناء عرض البيانات الجيومكانية على شكل جداول
import geopandas as gpd
pd.options.display.max_rows=10
نقوم بتحميل طبقة المدن الهامة في العالم وطبقة دول العالم اضغط هنا
ونقوم بتحميل الطبقات
#تحميل الطبقات
Martin =gpd.read_file('C:\\Users\\marte\\Downloads\\Compressed\\ne_10m_admin_0_countries_2\\ne_10m_admin_0_countries.shp')
City=gpd.read_file('C:\\Users\\marte\\Downloads\\Compressed\\ne_10m_populated_places\\ne_10m_populated_places.shp')
تتيح المكتبة geopandas استخدام matplotlib لصنع الخرائط والاخراج بواسطة التعليمة Polt
# رسم طبقة
Martin.plot()
City.plot()
نقوم باختيار دول شمال أفريقيا ودول الشرق الاوسط ,كذلك سوريا والمغرب الامثلة التالية تبين الاختيار بطرق مختلفة
# اختيار عنصر من طبقة
arab_country=Martin[Martin['REGION_WB']=='Middle East & North Africa']
Syria=Martin[Martin['ADMIN']=='Syria']
maroco=countries[countries['NAME_NL'].str.contains('Marokko')]
maroco.plot()
arab_country.plot()
عن طريق التعليمة head
نحصل على جدول يحتوي على معلومات الطبقة بالإضافة إلى عمود للعناصر الجيومترية
City.head()
نحصل علي نمط البيانات من خلال التعليمة type
North_Africa.type
arab_country.type
لاختيار عواميد محدد من الطبقة
حيث سأقوم بعمل طبقة تحتوي علي الاسم والقيم الهندسية
# اختيار عواميد محددة من الحدول
countries = arab_country[['geometry', 'NAME_NL']]
countries
نقوم باختيار المدن العربية التي تقع بالشرق الاوسط وشمال افريقيا باستخدام التعليمة sjoin
# اختيار النقاط التي تقع ضمن المضلع
arabcity=gpd.sjoin(City,arab_country,op='within')
#cities_with_country = geopandas.sjoin(cities, countries, how="inner", op='intersects')
نقوم بتصنيف الطبقة وفق ل عمود معين من الصفات ونستطيع التحكم بالألوان المستخدمة واضافة دليل للتصنيف وعدد التصنيفات والتحكم بالألوان والعرض في المثال التالي سأقوم فقط بتصنيف الدول حسب الاسم لتظهر كل دولة بلون مختلف
#تصنيف الطبقة وفق عمود محدد
arab_country.plot(column='ADMIN', figsize=(11,11))
نقوم باظهار العناصر الجيومترية لمدينة دمشق وهي عبارة عن الاحداثيات
Damascus=arabcity[arabcity['NAME_left']=='Damascus']
Damascus.geometry
area
0.0 POINT (36.29805003041707 33.50197985420613)
Name: geometry, dtype: object
نقوم بتحويل طبقة المدن العربية إلى نظام الإسقاط ميركاتور باستخدام الامر{ ‘crs = {‘init’ :’epsg:3857
arabcity.crs = {'init' :'epsg:3857'}
arabcity.crs
نقوم بإعادة تسمية العمود NAME_NL’ إلى الاسم Martin
# اعادة تسمية احد عواميد الطبقة
countries2 = countries.rename(columns={'NAME_NL':'martin'})
countries2.head()
نقوم بحفظ طبقة المدن العربية على شكل ملف json ضمن ال directory
# حفظ طبقة
arabcity.to_file('utput.json')
نقوم بكتابة pwd لمعرفة مسار الحفظ
نقوم برسم طبقة المدن وطبقة الدول العربية معا ونقوم برسم المدن باللون الاحمر والبلدان باللون الاسود والتعبئة بلا لون ونقوم بضبط الامتداد من خلال ax.set(xlim=(-16,65),ylim=(10,45))
#رسم عدة طبقات معا
ax=arab_country.plot(edgecolor='k',facecolor='none',figsize=(13,13))
arabcity.plot(ax=ax,color='red')
ax.set(xlim=(-16,65),ylim=(10,45))
في دروس لاحقة سيتم تنفيذ مشاريع كاملة باستخدام البايثون
كاتب المقال Martin Ealya
متابعة القراءة...
التعرف على بيئة الإدخال بواسطة المتصفح جوبيتر
قراءة shapefile ضمن البايثون
اظهار البيانات المخزنة ضمن الطبقة ونمط البيانات ورسم الطبقة
طريقة اختيار عناصر من الطبقة
ايجاد تقاطع بين طبقتين مختلفتين
تصنيف الطبقة وفق سمة معينة
حفظ الطبقة علي جهاز الكمبيوتر خاصتك
تغيير نظام الإسقاط للطبقة
رسم طبقات مختلفة معا
Anaconda
وهي منصة علمية جاهزة وقابلة للتطوير تعمل لتسهيل مشاركة البيانات مع الآخرين وتسهل ادارة البيانات واستخدام المكتبات المختلفة وتوفر بيئة عمل متكاملة لأي مشروع برمجي وتعمل مع جميع بيئات التشغيل
المختلفة
حيث سيتم استخدام المتصفح جوبيتر وهو تطبيق مفتوح المصدر يتيح تحرير وتشغيل الكودات البرمجية عبر متصفح الانترنت الخاص بك ويعطيك قدرت تحكم عالية في كتابة كودك البرمجي حيث هناك سهولة في
الإدخال والتعديل والعرض وغيرها الكثير من الميزات
تحميل انكوندا
Geopandas
الحزمة geopandas هي حزمة مفتوحة المصدر للتعامل مع البيانات الجيومكانية وهي تعتبر توسيع للحزمة pandas
لتستطيع التعامل مع البيانات الجغرافية وهي تعتمد على بعض المكتبات الأخرى مثل matplotlib , fiona
Fiona تمكن البايثون من قراءة بيانات نظام المعلومات الجغرافية الطبقات وانظمة الإسقاط وتتوافق مع كل المكتبات التي يستخدمها البايثون لنظام المعلومات الجغرافية
قم بإضافة الحزمة geopandas من خلال كتابة الأمر التالي ضمن anaconda prompt
conda install -c conda-forge geopandas
نقوم بفتح انكوندا فتظهر الواجهة البرمجية كما في الصورة بالاسفل ومن ثم نقوم بفتح جوبيتر لادخال الكود البرمجي
الكود البرمجي
نقوم بايضافة الحزمة Geopandas ونكتب الامر pd.options.display.max_rows=10 لإظهار عشرة أسطر من الجدول اثناء عرض البيانات الجيومكانية على شكل جداول
import geopandas as gpd
pd.options.display.max_rows=10
نقوم بتحميل طبقة المدن الهامة في العالم وطبقة دول العالم اضغط هنا
ونقوم بتحميل الطبقات
تحميل طبقة ضمن البايثون
#تحميل الطبقات
Martin =gpd.read_file('C:\\Users\\marte\\Downloads\\Compressed\\ne_10m_admin_0_countries_2\\ne_10m_admin_0_countries.shp')
City=gpd.read_file('C:\\Users\\marte\\Downloads\\Compressed\\ne_10m_populated_places\\ne_10m_populated_places.shp')
رسم الطبقة
تتيح المكتبة geopandas استخدام matplotlib لصنع الخرائط والاخراج بواسطة التعليمة Polt
# رسم طبقة
Martin.plot()
City.plot()
اختيار عناصر من الطبقة
نقوم باختيار دول شمال أفريقيا ودول الشرق الاوسط ,كذلك سوريا والمغرب الامثلة التالية تبين الاختيار بطرق مختلفة
# اختيار عنصر من طبقة
arab_country=Martin[Martin['REGION_WB']=='Middle East & North Africa']
Syria=Martin[Martin['ADMIN']=='Syria']
maroco=countries[countries['NAME_NL'].str.contains('Marokko')]
maroco.plot()
arab_country.plot()
عرض بيانات الطبقة ونمط البيانات
عن طريق التعليمة head
نحصل على جدول يحتوي على معلومات الطبقة بالإضافة إلى عمود للعناصر الجيومترية
City.head()
نحصل علي نمط البيانات من خلال التعليمة type
North_Africa.type
arab_country.type
لاختيار عواميد محدد من الطبقة
حيث سأقوم بعمل طبقة تحتوي علي الاسم والقيم الهندسية
# اختيار عواميد محددة من الحدول
countries = arab_country[['geometry', 'NAME_NL']]
countries
التقاطع بين طبقتين
نقوم باختيار المدن العربية التي تقع بالشرق الاوسط وشمال افريقيا باستخدام التعليمة sjoin
# اختيار النقاط التي تقع ضمن المضلع
arabcity=gpd.sjoin(City,arab_country,op='within')
#cities_with_country = geopandas.sjoin(cities, countries, how="inner", op='intersects')
تصنيف الطبقة وفق لسمة معينة
نقوم بتصنيف الطبقة وفق ل عمود معين من الصفات ونستطيع التحكم بالألوان المستخدمة واضافة دليل للتصنيف وعدد التصنيفات والتحكم بالألوان والعرض في المثال التالي سأقوم فقط بتصنيف الدول حسب الاسم لتظهر كل دولة بلون مختلف
#تصنيف الطبقة وفق عمود محدد
arab_country.plot(column='ADMIN', figsize=(11,11))
تحويل نظام الاسقاط
نقوم باظهار العناصر الجيومترية لمدينة دمشق وهي عبارة عن الاحداثيات
Damascus=arabcity[arabcity['NAME_left']=='Damascus']
Damascus.geometry
area
0.0 POINT (36.29805003041707 33.50197985420613)
Name: geometry, dtype: object
نقوم بتحويل طبقة المدن العربية إلى نظام الإسقاط ميركاتور باستخدام الامر{ ‘crs = {‘init’ :’epsg:3857
arabcity.crs = {'init' :'epsg:3857'}
arabcity.crs
اعادة تسمية عمود السمات ضمن الطبقة
نقوم بإعادة تسمية العمود NAME_NL’ إلى الاسم Martin
# اعادة تسمية احد عواميد الطبقة
countries2 = countries.rename(columns={'NAME_NL':'martin'})
countries2.head()
حفظ الطبقة
نقوم بحفظ طبقة المدن العربية على شكل ملف json ضمن ال directory
# حفظ طبقة
arabcity.to_file('utput.json')
نقوم بكتابة pwd لمعرفة مسار الحفظ
رسم الطبقات معا
نقوم برسم طبقة المدن وطبقة الدول العربية معا ونقوم برسم المدن باللون الاحمر والبلدان باللون الاسود والتعبئة بلا لون ونقوم بضبط الامتداد من خلال ax.set(xlim=(-16,65),ylim=(10,45))
#رسم عدة طبقات معا
ax=arab_country.plot(edgecolor='k',facecolor='none',figsize=(13,13))
arabcity.plot(ax=ax,color='red')
ax.set(xlim=(-16,65),ylim=(10,45))
في دروس لاحقة سيتم تنفيذ مشاريع كاملة باستخدام البايثون
كاتب المقال Martin Ealya
متابعة القراءة...