أكثر

إسقاط الشكل لخريطة الأساس Matplotlib

إسقاط الشكل لخريطة الأساس Matplotlib


مقدمة: العمل لأول مرة مع بيانات نظم المعلومات الجغرافية.

أنا أستخدم مكتبة خرائط بايثون لتراكب البيانات على الخرائط.

يتضمن البرنامج التعليمي الذي أستخدمه ملفًا لأشكال لندن (london_wards.shp).

أستخدم طريقة الحدود للحصول على الحد الأدنى لإحاطة المستطيل.

s = "/ data / london_wards.shp" shp = fiona.open (s) shp.bounds

(-0.5103750689005356, 51.28676016315085, 0.3340155643740321, 51.691874116909894)

هذا هو خط العرض وخط الطول (51.5072 درجة شمالا ، 0.1275 درجة غربا) للندن.

قمت بتمرير هذه الحدود إلى مثيل خريطة الأساس.


بعد ذلك ، فعلت الشيء نفسه لملفات الأشكال التي تم الحصول عليها من SF OpenData.

ومع ذلك ، فإن الحدود على ما يبدو ليست خطوط الطول والعرض.

s = "/ data / sfpd_dist district.shp" shp = fiona.open (s) shp.bounds

(5979385.3163340045, 2085856.3243659574, 6024751.466714004, 2131290.9014959573)

لذا ، لا يمكنني تمريرها إلى خريطة الأساس.

العديد من ملفات الأشكال من SF OpenData لها وحدات مماثلة تم إرجاعها من shp.bounds.

ما هي هذه القيم؟

كيف يتم تحويلها إلى خطوط الطول والعرض لمزيد من الاستخدام؟


استخدم وحدة GDAL مباشرة بدلاً من استخدامها من خلال (Geo) Django:

من osgeo import osr ori = osr.SpatialReference () desti = osr.SpatialReference () ori.ImportFromProj4 ("+ init = EPSG: 2227") desti.ImportFromProj4 ("+ init = EPSG: 4326") التحول = تحويل osr.CoordinateTransformation ("+ init = EPSG: 2227") ori، desti) التحويل 1. TransformPoint (5979385.3163340045، 2085856.3243659574) (-122.5129551683127، 37.706167841402952، 0.0)

أو وحدة pyproj (معsave_units = صحيحلأن pyproj تفترض أن إحداثياتك بالأمتار وهذا ليس هو الحال بالنسبة EPSG: 2227):

من pyproj import Proj ، قم بتحويل ori = Proj (init = 'epsg: 2227'، save_units = True) dest = Proj (init = 'EPSG: 4326'، save_units = True) تحويل (ori، dest، x، y) (- 122.51295516831273 ، 37.706167841402959)

تتحد مع فيونا:

من pyproj import Proj ، قم بتحويل الاستيراد fiona من fiona.crs import from_epsg مع fiona.open ("/ data / sfpd_distections.shp") كـ shp ori = Proj (shp.crs، save_units = True)، dest = Proj (init = ' EPSG: 4326 '، save_units = True) مع fiona.open (' / data / sfpd_distectionsWGS84.shp '،' w '،' ESRI Shapefile '، shp.schema.copy ()، crs = from_epsg (4326) كإخراج: من أجل النقطة في shp: x، y = النقطة ['الهندسة'] ['الإحداثيات'] النقطة ['الهندسة'] ['الإحداثيات'] = التحويل (ori، dest، x، y) output.write (نقطة)

Python: كيفية استخدام خريطة أساس matplotlib مع ملفات الأشكال

بالنسبة لمشروع في جامعتي ، أريد استخدام Python 2.7 لعرض خريطة لمدينة (ألمانية) ، معظمها للطرق ، وفي النهاية بما في ذلك الموقع الجغرافي للعديد من نقاط الخدمة. لدي معرفة أساسية ببايثون ، وأشعر أنني لا أستطيع الوصول إلى الخطوات التي أحتاج إلى القيام بها من أجل الوصول إلى هدفي.

لقد استخدمت خريطة الأساس لتقييد المنطقة بـ lon و lat حيث توجد المدينة. ثم أردت استخدام ملف أشكال لتضمين الطرق التي تم توفيرها ، لكنني تلقيت رسالة الخطأ "خطأ وقت التشغيل: لا يمكن وضع فنان واحد في أكثر من رقم واحد". على الرغم من البحث لم أجد حلًا. هذا هو الكود الذي استخدمته:

ثم حصلت على واجهات برمجة تطبيقات خرائط Google ، ولكن يبدو لي أنه لا يمكنني استخدامها لإعطاء خريطة. أيضًا ، تعطل تحميل برنامج تضمين pygmaps: "خطأ في الاستيراد: لا توجد وحدة باسم pygmaps" ، وعلى أي حال ، لن أعرف كيفية استخدامها.

هل يعرف أحد هنا الخطوات التي يمكنني اتخاذها لتحقيق هدفي؟ سأكون ممتنًا جدًا للنصيحة. شكرا مقدما!


Imurointi kaikille saataville arkkitehtuureille
Arkkitehtuuri الإصدار باكيتين كوكو كوكو أسينيتونا تيدوستوت
ألفا (epävirallinen siirros) 1.2.2 + dfsg-1 + b1 93.1 كيلوطن435.0 كيلو طن [تيدوستولويتيلو]
amd64 1.2.2 + dfsg-1 + b1 93.9 كيلوطن427.0 كيلو طن [تيدوستولويتيلو]
الذراع 64 1.2.2 + dfsg-1 + b1 92.3 كيلوطن423.0 كيلو طن [تيدوستولويتيلو]
ارميل 1.2.2 + dfsg-1 + b1 91.6 كيلوطن416.0 كيلو طن [تيدوستولويتيلو]
armhf 1.2.2 + dfsg-1 + b1 91.7 عقدة404.0 كيلو طن [تيدوستولويتيلو]
hppa (epävirallinen siirros) 1.2.2 + dfsg-1 93.3 كيلوطن425.0 كيلو طن [تيدوستولويتيلو]
i386 1.2.2 + dfsg-1 + b1 95.6 كيلوطن424.0 كيلو طن [تيدوستولويتيلو]
m68k (epävirallinen siirros) 1.2.2 + dfsg-1 + b1 92.1 كيلوطن417.0 كيلو طن [تيدوستولويتيلو]
mips64el 1.2.2 + dfsg-1 + b1 91.5 كيلو طن425.0 كيلو طن [تيدوستولويتيلو]
mipsel 1.2.2 + dfsg-1 + b1 91.8 كيلو طن422.0 كيلو طن [تيدوستولويتيلو]
ppc64 (epävirallinen siirros) 1.2.2 + dfsg-1 + b1 95.4 كيلو طن501.0 كيلو طن [تيدوستولويتيلو]
ppc64el 1.2.2 + dfsg-1 + b1 95.0 كيلو طن435.0 كيلو طن [تيدوستولويتيلو]
riscv64 (epävirallinen siirros) 1.2.2 + dfsg-1 + b1 91.2 كيلوطن411.0 كيلو طن [تيدوستولويتيلو]
s390x 1.2.2 + dfsg-1 + b1 92.1 كيلوطن427.0 كيلو طن [تيدوستولويتيلو]
sh4 (epävirallinen siirros) 1.1.0 + dfsg-3 104.1 كيلوطن477.0 كيلو طن [تيدوستولويتيلو]
sparc64 (epävirallinen siirros) 1.1.0 + dfsg-3 96.4 كيلو طن519.0 كيلو طن [تيدوستولويتيلو]
x32 (epävirallinen siirros) 1.2.1 + dfsg-1 + b2 100.0 كيلو طن437.0 كيلو طن [تيدوستولويتيلو]

هذه الصفحة متاحة أيضًا باللغات التالية (كيفية تعيين لغة المستند الافتراضية):


агрузить для всех доступных архитектур
Архитектура Размер пакета В установленном виде айлы
amd64 243،0 Кб884،0 Кб [список файлов]
الذراع 64 210،3 Кб798،0 Кб [список файлов]
ارميل 238،4 Кб910،0 Кб [список файлов]
armhf 212،4 Кб706،0 Кб [список файлов]
i386 248،5 Кб891،0 Кб [список файлов]
رسائل 229،6 б870،0 Кб [список файлов]
mips64el 228،8 б892،0 Кб [список файлов]
mipsel 231،9 Кб870،0 Кб [список файлов]
ppc64el 222،9 Кб906،0 Кб [список файлов]
s390x 223،7 Кб891،0 Кб [список файлов]

та страница также доступна на следующих языках (ак установить язык по умолчанию):

тобы сообщить о проблеме، связанной с веб-сайтом، отправьте сообщение (на английском) в списокists. Прочую контактную информацию см. на странице Debian ак связаться.

Авторские права ونسخ 1997 - 2021 SPI Inc. См. условия лицензии. Debian это торговый знак компании SPI Inc. б том сайте.


агрузить для всех доступных архитектур
Архитектура Версия Размер пакета В установленном виде айлы
ألفا (неофициальный перенос) 1.2.2 + dfsg-1 + b1 93،1 Кб435،0 Кб [список файлов]
amd64 1.2.2 + dfsg-1 + b1 93،9 Кб427،0 Кб [список файлов]
الذراع 64 1.2.2 + dfsg-1 + b1 92،3 Кб423،0 Кб [список файлов]
ارميل 1.2.2 + dfsg-1 + b1 91،6 Кб416،0 Кб [список файлов]
armhf 1.2.2 + dfsg-1 + b1 91،7 Кб404،0 Кб [список файлов]
hppa (неофициальный перенос) 1.2.2 + dfsg-1 93،3 Кб425،0 Кб [список файлов]
i386 1.2.2 + dfsg-1 + b1 95،6 б424،0 Кб [список файлов]
m68k (неофициальный перенос) 1.2.2 + dfsg-1 + b1 92،1 Кб417،0 Кб [список файлов]
mips64el 1.2.2 + dfsg-1 + b1 91،5 Кб425،0 Кб [список файлов]
mipsel 1.2.2 + dfsg-1 + b1 91،8 Кб422،0 Кб [список файлов]
ppc64 (неофициальный перенос) 1.2.2 + dfsg-1 + b1 95،4 Кб501،0 Кб [список файлов]
ppc64el 1.2.2 + dfsg-1 + b1 95.0 Кб435،0 Кб [список файлов]
riscv64 (неофициальный перенос) 1.2.2 + dfsg-1 + b1 91،2 Кб411،0 Кб [список файлов]
s390x 1.2.2 + dfsg-1 + b1 92،1 Кб427،0 Кб [список файлов]
sh4 (неофициальный перенос) 1.1.0 + dfsg-3 104،1 Кб477،0 Кб [список файлов]
sparc64 (неофициальный перенос) 1.1.0 + dfsg-3 96،4 Кб519.0 Кб [список файлов]
x32 (неофициальный перенос) 1.2.1 + dfsg-1 + b2 100،0 б437،0 б [список файлов]

та страница также доступна на следующих языках (ак установить язык по умолчанию):

тобы сообщить о проблеме، связанной с веб-сайтом، отправьте сообщение (на английском) в списокists. Прочую контактную информацию см. на странице Debian ак связаться.

Авторские права ونسخ 1997 - 2021 SPI Inc. См. условия лицензии. Debian тто торговый знак компании SPI Inc. б том сайте.


بايثون | البرنامج التعليمي: مقدمة إلى كارتوبي

يوجد حاليًا مكتبتان رئيسيتان في Python لتخطيط البيانات الجغرافية على الخريطة: Cartopy و Basemap. يجب على المستخدمين الجدد استخدام Cartopy نظرًا لأن دعم كارتوبي سيحل محل خريطة الأساس ومن المتوقع أن ينتهي دعم خريطة الأساس في عام 2020. لذلك ، سيركز هذا البرنامج التعليمي على كارتوبي. إذا كنت تريد استخدام خريطة الأساس (على سبيل المثال ، للتخطيط في "ثلاثي الأبعاد") ، فإليك بعض الروابط إلى البرامج التعليمية والأمثلة الموجودة لمساعدتك على البدء. علاوة على ذلك ، قد تكون العديد من المفاهيم الموصوفة هنا مفيدة لفهم خريطة الأساس.

  • ارسم بيانات درجة حرارة سطح GFS على الخريطة
  • إخفاء أسطح الأرض لرسم خريطة لدرجة حرارة سطح البحر والغطاء الجليدي من GFS
  • ارسم خريطة إقليمية لدرجة حرارة السطح مع الولايات الأمريكية
  • استخدم ال تحول وظيفة لرسم بيانات GFS على إسقاط خريطة مختلف

يصل هذا البرنامج التعليمي إلى خادم بيانات NOMADS باستخدام مكتبة netCDF4 ، إذا لم تكن معتادًا على القيام بذلك ، فإنني أوصيك بمشاهدة البرنامج التعليمي الخاص بي حول قراءة بيانات NetCDF.


ابدء - الحصول على بيانات GFS:
يتم استخدام الكود التالي لبدء هذا البرنامج التعليمي ، بشكل أساسي ، يقوم باستيراد جميع الوحدات المطلوبة ، وسحب بيانات GFS من خادم بيانات NOMADS ، وتحميلها في المصفوفات. بمجرد تحميل البيانات ، سيركز باقي البرنامج التعليمي على Cartopy.

الآن بعد أن تم تحميل بياناتك ، نقوم بتهيئة شكل وحبكة فرعية باستخدام الكلمة الأساسية "الإسقاط" matplotlibs للارتباط بمكتبة كارتوبي. بمجرد إرفاق حزمة Cartopy بمخططك الفرعي ، يوجد عدد من الكائنات والفئات الإضافية التي يمكنك إضافتها إلى الشكل الخاص بك. في المثال الأول ، سأوضح من خلال استدعاء خاصية "الخطوط الساحلية" لرسم القارات على الخريطة.

الآن ، تم تحديد الشكل والحبكة الفرعية الخاصة بك. الخرطوشة "بليت كاري ()"الإسقاط هو إسقاط خريطة أسطواني أساسي يقبل معلومات الإحداثيات في شكل أزواج إحداثيات خطوط الطول / العرض. يمكن أن تكون بيانات خطوط الطول / العرض إما 1D أو 2D ، ولكن بشكل أساسي ، إذا كانت معلومات الإحداثيات الخاصة بك هي خطوط العرض / الطول ، فإن إسقاطك هو PlateCarree (). يمكنك تمرير كلمتين رئيسيتين في PlateCarree ( خط الطول المركزي والكرة الأرضية) ، ولكن في معظم الحالات ، لن تحتاج إلى ذلك. من حين لآخر ، أقوم بإعادة تعيين central_longitude إلى 180 ، بدلاً من الصفر الافتراضي.

الكود لرسم الخريطة هو:

وستحصل على صورة مشابهة لهذه:

درجة حرارة سطح GFS من Cartopy

الآن ، لنفترض أنك أردت إخفاء مناطق اليابسة ، وإضافة الجليد البحري إلى الخريطة ، للتركيز على المحيطات.
من السهل إضافة الجليد البحري ، كل ما يتطلبه الأمر هو أن تسحب icecsfc متغير من بيانات GFS ، وقم برسمها فوق خريطة درجة حرارة السطح:

نحن نستخدم وظيفة القناع (ma) لإخفاء خلايا الشبكة حيث يكون الغطاء الجليدي أقل من 10٪.
لإخفاء مناطق الأرض ، نستخدم "ميزة كارتوبي"الوحدة النمطية ، التي تتعامل مع ملفات الأشكال. تتصل وحدة ميزة كارتوبي على ما يبدو بمجموعة بيانات الأرض الطبيعية ، وتسمح لأي شخص برسم مجموعة من مجموعات بيانات نظم المعلومات الجغرافية المختلفة دون الحاجة إلى تنزيل ملفات أشكال فردية قبل اليد. تحتوي الواجهة حتى على العديد من الوظائف المحددة مسبقًا ، بما في ذلك الأرض ، وهذا يجعل إخفاء مناطق الأرض نسيمًا.

في الكود أعلاه ، "إضافة_ميزةيتم استخدام الوظيفة ، ويتم توفير ميزة "LAND" المحددة مسبقًا من حزمة Cartopy Feature مع اثنين من وسائط الكلمات الأساسية الأساسية. وضع كل ذلك معًا:

سيعطيك تشغيل الكود أعلاه صورة مثل هذه:

GFS SST والغطاء الجليدي البحري


الآن ، لنقوم بتكبير الصورة فوق الولايات المتحدة ، وإضافة الولايات إلى الخريطة. لقص المدى ، "set_extent"الوظيفة المستخدمة:

تتوافق القائمة مع حدود lon / lat من [أقصى خط طول غربي ، وأقصى شرق خط طول ، وأقصى جنوب لخط عرض ، وأقصى خط عرض شمالي] وتشير الوسيطة crs إلى التحويل الذي يتم تطبيقه. لإضافة الولايات ، تحتاج إلى تحديد الحالات من قاعدة بيانات Natural Earth. حجة "المقياس"

من خلال تغيير النطاق وإضافة الولايات ، ستحصل على خريطة تبدو كالتالي:


في هذا المثال ، سأستخدم Overpass API لاستخراج جميع المدن الرئيسية في البرتغال من مشروع OpenStreetMaps.

واجهة برمجة تطبيقات Overpass هي واجهة برمجة تطبيقات للقراءة فقط تخدم أجزاء مخصصة محددة من بيانات خريطة OSM. تعمل كقاعدة بيانات عبر الويب: يرسل العميل استعلامًا إلى واجهة برمجة التطبيقات ويستعيد مجموعة البيانات التي تتوافق مع الاستعلام.

(.) تم تحديد هذه الإحداثيات في قاعدة بيانات OSM وفي واجهة برمجة تطبيقات OverPass عن طريق إسقاط النقاط الحقيقية عموديًا على العقد الموجودة على الشكل الإهليلجي WGS84.

دعنا نستورد بعض وحدات بايثون التي سنستخدمها:

نظام استعلام Overpass API معقد بعض الشيء. فيما يلي وصف لغة الاستعلام: لغة استعلام تجاوز واجهة برمجة التطبيقات (Overpass API).

دعنا نطلق على كائن API وننفذ استعلامًا:

الرد عبارة عن قاموس Python يحتوي على البيانات.

دعنا نستخدم قائمة فهم بايثون لاستخراج إحداثيات وأسماء المدن.

توفر عمليات فهم القوائم طريقة موجزة لإنشاء القوائم. تتمثل التطبيقات الشائعة في إنشاء قوائم جديدة حيث يكون كل عنصر نتيجة لبعض العمليات المطبقة على كل عضو في تسلسل آخر أو متكرر ، أو لإنشاء نتيجة لاحقة لتلك العناصر التي تفي بشرط معين.

geometry.shape هي طريقة جميلة للحصول على وصف هندسي داخل قاموس وتحويله إلى كائن رشيق. ثم نسمي الطريقة .xy للحصول على الإحداثيات الفعلية.

يمكنك تقسيم هذه الخلية إلى خطوات لفهمها بشكل أفضل (هكذا تعلمت بايثون).

الأسماء هي قائمة تحتوي على أسماء المدن. دعونا التحقق من ذلك:

كوردس هي قائمة تحتوي على أزواج من الإحداثيات. دعنا نتحقق من الإدخال الأول في القائمة:

هنا ، نسمي hstack numpy لعمل مكدس أفقي على كائن coords. بهذه الطريقة نقوم بتكديس خطوط الطول والعرض في مصفوفات 1d مختلفة.


إسقاط الشكل لخريطة الأساس Matplotlib - نظم المعلومات الجغرافية

تُستخدم مكتبة بروتوكول نقل الملفات (FTP) في Python لتحليل بيانات محطة الطقس من نظام مراقبة السطح الآلي المتاح للجمهور (ASOS) من مركز البيانات المناخية الوطني بالولايات المتحدة الأمريكية (NCDC). يتم استخدام العديد من الأدوات البرمجية المتوفرة في Python لأتمتة تحليل بيانات الطقس ، بالإضافة إلى تصور البيانات الناتجة.

NEO-6 عبارة عن وحدة GPS مصغرة تم تصميمها بواسطة u-blox لتلقي التحديثات من ما يصل إلى 22 قمرًا صناعيًا على 50 قناة مختلفة تستخدم ثلاثية الأبعاد لتقريب الموقع الثابت لجهاز الاستقبال كل ثانية (أو أقل ، بالنسبة لبعض الوحدات). الوحدة النمطية المستخدمة في هذا البرنامج التعليمي ، NEO-6M ، قادرة على تحديث موقعها كل ثانية وتتواصل مع لوحة Arduino باستخدام اتصال UART التسلسلي. يستخدم NEO-6M بروتوكول الرابطة الوطنية للإلكترونيات البحرية (NMEA) الذي يوفر معلومات زمنية وتحديد الموقع الجغرافي مثل توقيت غرينتش (GMT) وخط العرض وخط الطول والارتفاع وسرعة الدورة التقريبية. سيتم أيضًا إقران لوحة NEO-6M و Arduino بوحدة SD لإنشاء مسجل محمول يعمل كمتعقب GPS قابل للاسترداد.

في هذه السلسلة التعليمية ، يتم استخدام مجموعة أدوات خريطة الأساس من Python والعديد من المكتبات الأخرى لاستكشاف الساتل البيئي التشغيلي الثابت بالنسبة للأرض -16 المتاح للجمهور (GOES-16). في هذا الإدخال الأول ، سيتم تقديم ما يلي: الحصول على بيانات الأقمار الصناعية ، وفهم ملفات بيانات الأقمار الصناعية ، ورسم خرائط المعلومات الجغرافية في Python ، وتخطيط درجة حرارة سطح الأرض (LST) على الخريطة.

حساب خطوط الطول والعرض من ملف بيانات GOES-R L1b. تحتوي ملفات إشعاع GOES-R L1b على بيانات الإشعاع ومعلومات المسح الهندسي بالراديان. هذه المعلومات ليست كافية لرسم بيانات الإشعاع الجغرافي مباشرة من الملف ، ومع ذلك ، بعد بعض التلاعب الهندسي الذي يستخدم موقع القمر الصناعي والمعلمات الإهليلجية ، يمكننا اشتقاق قيم خطوط الطول والعرض من زوايا المسح أحادية البعد ورسم بياناتنا في تنسيقات مسقطة مألوفة للعديد من أدوات المعلومات الجغرافية.


أخيرًا ، سنقوم برسم المتوازيات (خطوط العرض) وخطوط الطول (خطوط الطول) على الخريطة. أسهل طريقة لتحديد النطاق والفاصل الزمني للتوازيات وخطوط الطول هي باستخدام الوحدة النمطية matplotlib & # 8217s numpy. نظرًا لأننا ننظر إلى منطقة مكبرة ، فإننا نتمتع بقدر أكبر قليلاً من المرونة في كيفية تعريف الأشياء. لأغراض هذا المثال ، أقوم & # 8217 بتعريف المتوازيات وخطوط الطول للعالم بأسره ، وعرض كل مضاعف للعدد 10. إذا كنت & # 8217re تنظر إلى مساحة أكبر ، فربما تريد & # 8217 عرض كل مضاعف 30 أو نحو ذلك بدلاً من ذلك.

بعد تحديد النطاق والفاصل الزمني ، نحتاج إلى تحديد كيفية تسمية & # 8217re على قطعة الأرض. تُعرض الأشكال في matplotlib دائمًا داخل صندوق ، ونستخدم قائمة منطقية لإخبار matplotlib بأي جوانب من المربع نرغب في عرض الملصقات ، بالتنسيق [يسار ، يمين ، أعلى ، أسفل]. هنا ، سنقوم بتسمية خطوط العرض على الجانبين العلوي والأيمن من المربع ، والتي سنشير إليها بـ [False، True، True، False]. سيتم عرض خطوط الطول على الجانبين السفلي والأيسر من المربع ، والتي يمكن الإشارة إليها بـ [صحيح ، خطأ ، خطأ ، صحيح].


إسقاط الشكل لخريطة الأساس Matplotlib - نظم المعلومات الجغرافية

الشكل 1. PySAL ضمن مجموعة أدوات معالجة QGIS: تحليل النقاط الساخنة لمعدلات جرائم القتل في مقاطعات جنوب الولايات المتحدة.

Python هي لغة شائعة للبرمجة الجغرافية المكانية وتطوير التطبيقات. يقدم هذا الإدخال نظرة عامة على أوضاع التطوير المختلفة التي يمكن اعتمادها لبرمجة GIS مع Python ويناقش تاريخ اعتماد Python في مجتمع GIS. يتم فحص الطبقات المختلفة لمكدس التطوير الجغرافي المكاني في Python لإعطاء القارئ فهمًا لاتساع النطاق الذي تقدمه Python لمطور GIS. تم تحديد التطورات المستقبلية والقضايا الأوسع المتعلقة بالتشغيل البيني والنظم الإيكولوجية للبرمجة.

ري ، S.J. (2017). بايثون لنظام المعلومات الجغرافية. الهيئة المعرفية لعلوم وتكنولوجيا المعلومات الجغرافية (إصدار الربع الثالث 2017) ، جون ب.ويلسون (محرر). DOI: 10.22224 / gistbok / 2017.3.4

تم نشر هذا الإدخال لأول مرة في 19 أغسطس 2017. لا توجد إصدارات سابقة.

كومة التنمية: مجموعة من البرامج التي تعمل معًا لتحقيق نتيجة معينة أو لتنفيذ مهمة تحليلية معينة

لغة مفسرة: لغة برمجة يتم فيها تنفيذ تعليماتها مباشرة دون تجميع سابق في تعليمات لغة الآلة

برمجيات مفتوحة المصدر: كود البرنامج الذي يتم توفيره مجانًا ويمكن تعديله وإعادة توزيعه

Python هي لغة مفسرة مفتوحة المصدر وموجهة للكائنات أنشأها Guido von Rossum في عام 1991. منذ إطلاقها ، شهدت Python اعتمادًا واسع النطاق عبر العديد من مجالات المشكلات. تنبع هذه الشعبية من السمات الجذابة للغة. أولاً ، كلغة متعددة النماذج ، تدعم Python كلاً من البرمجة المنظمة وتوجيه الكائن. ثانيًا ، بايثون هي لغة مفسرة تفسح المجال للنماذج الأولية السريعة ودورات التطوير. Core Python نفسه مكتوب بلغة C وهذا مكّن من تنفيذ Python عبر العديد من الأنظمة الأساسية وأنظمة التشغيل. المكتبة القياسية الغنية والمتعددة الاستخدامات تجعل Python مناسبة تمامًا للعديد من المشاريع.

GISc هو أحد التخصصات العلمية العديدة التي وجدت فيها Python جمهورًا متقبلًا. من منظور علمي ، فإن التركيز على سهولة القراءة ، والدعم عبر الأنظمة الأساسية ، وتكاليف بدء التشغيل المنخفضة جعلت لغة Python لغة ممتازة للتعاون بين علماء نظم المعلومات الجغرافية. بعض هذه الميزات نفسها تضع Python كلغة رائعة لتدريس مفاهيم GISc ، وبالفعل يتم استخدام Python بشكل متزايد كلغة أولى في مناهج علوم الكمبيوتر. Python هي لغة أولى ممتازة ، ومع ذلك ، لا ينبغي أن يؤخذ هذا على أنه محدود النطاق ، حيث تم تنفيذ العديد من التطبيقات واسعة النطاق والمستخدمة على نطاق واسع في Python ، ومن الأمثلة الرئيسية على Dropbox.

نظرًا لشعبيتها المتزايدة ، يقدم هذا الإدخال أولاً نظرة عامة على أوضاع التطوير المختلفة التي يمكن اعتمادها لبرمجة GIS مع Python ويناقش تاريخ اعتماد Python في مجتمع GIS. يتبع ذلك فحص مكدس برمجة GIS لمنح القارئ فهمًا لاتساع النطاق الذي تقدمه Python لمطور GIS. تناقش الخاتمة التطورات المستقبلية المحتملة والقضايا الأوسع المتعلقة بالتشغيل البيني والنظم الإيكولوجية للبرمجة.

كلغة برمجة نصية ، توفر Python المرونة في أوضاع التطوير المختلفة للبرمجة الجغرافية المكانية. يمكن أن تأخذ هذه شكل استخدام Python لتوسيع وظائف GIS لسطح المكتب ، إلى تطوير تطبيق سطح مكتب مستقل كامل للتحليل الجغرافي المكاني المتخصص ، واستخدام Python للبرمجة العلمية والحسابات التفاعلية في بيئة shell.

3.1 تطبيقات سطح المكتب

تلعب Python دورًا مركزيًا في التطبيقات الجغرافية المكانية لسطح المكتب. من الإصدار 9.0 من ArcGIS ، قامت Esri بتضمين Python كلغة برمجة نصية أساسية. انها ArcPy توفر الحزمة واجهة لأدوات المعالجة الجغرافية والوظائف والفئات والوحدات النمطية. تحدد وظيفة Arcpy جزءًا معينًا من الوظائف ، على سبيل المثال ، توجد وظائف لسرد مجموعات بيانات معينة ، والوصول إلى خصائص مجموعة البيانات وتحديث قواعد البيانات الجغرافية. علاوة على ذلك ، يمكن استخدام نصوص Python النصية داخل ArcGIS أو من خارج ArcGIS ، ويمكن تطوير مربعات أدوات Python الإضافية وتوزيعها على مستخدمي ArcGIS من خلال الاستفادة من Python المقطوعات وحدة.

تستخدم حزمة GIS مفتوحة المصدر QGIS لغة Python كلغة برمجة بعدة طرق. تتوفر وحدة تحكم Python من خلال واجهة المستخدم الرسومية QGIS (GUI) لتوفير غلاف تفاعلي يمكن استخدامه لكتابة الجلسة الحالية. يدعم هذا التجريب باستخدام QGIS API ويسمح للمستخدم بإنشاء سير عمل يمكن حفظه في النهاية كبرنامج نصي لإعادة استخدامه لاحقًا.

تم استخدام Python أيضًا لتطوير ملف يتم المعالجة كجزء من QGIS. هذه بيئة معالجة جغرافية يمكن استخدامها لتشغيل خوارزميات أصلية أو خارجية / طرف ثالث من داخل QGIS. يوضح الشكل 1 مثالاً على استخدام أداة PySAL من داخل مربع أدوات المعالجة لإجراء تحليل النقاط الساخنة لمتغير الحرمان من الموارد في عام 1990 لمقاطعات جنوب الولايات المتحدة.

بالإضافة إلى هاتين حزمتي GIS لسطح المكتب ، تم استخدام Python لتطوير تطبيقات جغرافية مكانية قائمة بذاتها. ترتبط الأمثلة الرئيسية بمشروع PySAL وتشمل: GeoDaSpace ، وهي حزمة لتحليل الانحدار المكاني CAST: تحليلات الجريمة في الزمكان و STARS (تحليل الزمان والمكان للأنظمة الإقليمية). تم تطوير هذه الحزم باستخدام Python وتغليف الوظائف الجغرافية المكانية المتقدمة داخل واجهة المستخدم الرسومية. هذه التطبيقات ممكنة بسبب وجود العديد من المكتبات العلمية المتاحة لبايثون والتي تم تلخيصها أدناه.

3.2 البرمجة الجغرافية المكانية الحسابية البينية

في كثير من الأحيان في الحوسبة العلمية ، يكتب الباحثون كودًا للتعبير عن أفكارهم أو نماذجهم الأولية أو لاستكشاف البيانات. يتطلب هذا النوع من البرمجة الانتهازية بيئة حوسبة مرنة لتسهيل الاستكشاف المفتوح. يقدم نظام Python البيئي مجموعة غنية من الأدوات لهذا النوع من الحوسبة العلمية التفاعلية.

إيثون يتوسع في مترجم Python التفاعلي لتوفير بيئة شل شاملة للحوسبة التفاعلية والاستكشافية. يوفر IPython ، الغني بالميزات ، إكمال علامات التبويب ، واستبطان الكائن ، وسجل الأوامر ، والوصول إلى غلاف نظام التشغيل ، مما ينتج عنه مترجمًا متفوقًا للحوسبة العلمية على ذلك الذي يوفره مترجم Python المدمج.

تطور مشروع IPython وأدى إلى ظهور كوكب المشتري. يوسع دفتر Jupyter النهج القائم على وحدة التحكم للحوسبة التفاعلية من خلال توفير تطبيق قائم على الويب يمكن أن يشمل عملية الحوسبة العلمية بأكملها من تطوير الكود والتوثيق والتنفيذ إلى العرض الفعلي ونشر النتائج. يتكون كوكب المشتري من عنصرين. الأول هو أداة قائمة على المستعرض تجمع بين النصوص والتعليمات البرمجية والوسائط الغنية لدعم التأليف التفاعلي للوثائق العلمية. المكون الثاني هو مستند دفتر الملاحظات وهو الترميز الفعلي لجميع المحتويات المرئية في تطبيق الويب. يتم تنفيذ مستندات دفتر الملاحظات كـ JavaScript Object Notation (JSON) مما يسهل التحكم في الإصدار ومشاركته مع المتعاونين.

يغطي التطوير الجغرافي المكاني مجموعة متنوعة من المهام. لتوفير نظرة عامة على مكدس البرمجة الجغرافية المكانية في Python ، يلخص الجدول 1 الحزم الانتقائية من كل طبقة في المكدس. الحزم المحددة هي الأكثر شيوعًا أو التي يتم مواجهتها بشكل شائع لكل نوع من الوظائف ، ويجب أن يوضع في الاعتبار أن القائمة ليست شاملة في تغطيتها ولكنها تهدف إلى توفير مؤشر المحطة الأولى لمطوري Python الذين يتطلعون إلى معالجة مهمة معينة .

وصف

واجهة لمكتبة تجريد البيانات الجغرافية المكانية

API إلى طبقة OGR (Vector) من GDAL

قراءة وكتابة البيانات النقطية الجيومكانية

التحليل المكاني الحتمي

تلخيص البيانات النقطية باستخدام هندسة المتجهات

عمليات مكانية تشبه الباندا على الأنواع الهندسية

واجهة PROJ4 للتحولات الخرائطية

التصور عبر خرائط المنشورات التفاعلية

متصفحات مكتبة التصور التفاعلي

خط أنابيب رسومات تصور البيانات الضخمة

التحليل الإحصائي المكاني

نمذجة التفاعل المكاني

مجموعات مقيدة مكانيًا

واجهة برمجة العميل لخدمة الويب OGC

دفق ETL للبيانات الجغرافية المكانية

الجدول 1. حزمة البرمجة الجغرافية المكانية بايثون

4.1 إدخال / إخراج البيانات المكانية

تبدأ جميع التحليلات المكانية بقراءة البيانات الجغرافية المكانية. تتمثل إحدى السمات المميزة الرئيسية لإجراء تحليل البيانات المكانية في التنوع الغني لتنسيقات البيانات المكانية. يمثل هذا تحديًا كبيرًا لمطور الجغرافيا المكانية ، حيث لا يمكن العثور على حزم مقاس واحد يناسب الجميع.

كما هو شائع في العديد من الحزم في المكدس الجغرافي المكاني ، كان النهج المتبع لتنفيذ إدخال الملف (والمخرجات) هو التفاف مكتبات C الحالية التي تم استخدامها على نطاق واسع للغرض المطروح. في هذه الحالة ، تكون المكتبة المستهدفة هي مكتبة تجريد البيانات الجغرافية المكانية (GDAL) التي توفر المترجمين لقراءة وكتابة البيانات المكانية النقطية والمتجهة. في Python stack ، تم تطوير مكتبتين مختلفتين تستهدف هذه المكونات. فيونا يركز على وظيفة OGR (المتجه) ، بينما راستريو يوفر غلافًا مشابهًا لفضح وظائف البيانات النقطية لـ GDAL. يسمح هذا بقراءة وكتابة تنسيقات مثل GeoTIFF عبر Python API التي تعتمد عليها حبيبي مصفوفات N-D لحساب فعال.

4.2 المعالجة الجغرافية

بمجرد قراءة البيانات الجغرافية المكانية في الذاكرة ، تتوفر مجموعة متنوعة من العمليات والمعالجات الهندسية للمعالجة اللاحقة. بالنسبة لبيانات المتجه ، تتخذ هذه شكل عمليات نظرية محددة ومعالجة الميزات المستوية. حزمة جميل يلف الجغرافيا مكتبة للتخزين المؤقت ، والتقاطع ، والتمدد ، والتمايز ، ومجموعة من الأنواع الأخرى من العوامل المكانية على الكائنات المتجهة. يتم تقديم وظائف التنسيق ، والمنطقة ، وتلخيص البيانات النقطية بواسطة نقطية رزمة. راستراتس يمكن أيضًا دعم الاستعلام عن البيانات النقطية باستخدام هندسة المتجهات. على سبيل المثال ، يمكن للمطور العثور على الارتفاع من DEM المخزن في ملف TIF بناءً على كائن متجه نقطي ، أو إنشاء إحصائيات موجزة للارتفاع داخل حدود كائن مضلع (على سبيل المثال ، متوسط ​​، أقصى ، قياسي للارتفاع داخل منطقة) .

يتم مصادفة كلتا المجموعتين من هذه العمليات المكانية بشكل شائع في حالة استخدام اشتقاق متغيرات مكانية جديدة. ثم يتم استخدامها في مكان أعلى في المكدس الجغرافي المكاني للتحليل الإحصائي. لا يُقصد من الحزم الموجودة في مكدس المعالجة الجغرافية (أي ، fiona و shapely) بمفردها تغطية التحليل الإحصائي اللاحق للكائنات / الطبقات المشتقة. بدلاً من ذلك ، يُنظر إليها على أنها مكونات حاسمة لخط أنابيب جغرافي مكاني يتم فيه ربط الحزم المختلفة معًا لتنفيذ سير عمل معين. حزمة الجيوباندا يمكن اعتبارها وسيلة لتسهيل هذا النوع من سير العمل وخطوط الأنابيب. انها تعتمد على وظائف من فيونا و جميل للمعالجة الجيولوجية ، ولكنه يستلهم من حزمة معالجة البيانات العامة الشائعة الباندا وهي المكتبة الرئيسية لمعالجة البيانات في مكدس Python الحسابي.

من أجل تنسيق البيانات من التنسيقات والمصادر المختلفة وتكاملها بشكل صحيح ، يتم توفير وظيفة التحويل بين الأنظمة المرجعية الإحداثية المختلفة من خلال بيبروج رزمة. بيبروج هو سايثون المجمع الذي يوفر واجهة Python لملف مشروع 4 مكتبة للتحولات الخرائطية والحسابات الجيوديسية.

4.3 التصور الجغرافي ورسم الخرائط

ترجع أصول تصور البيانات الجغرافية المكانية ورسم خرائطها في لغة بايثون إلى رسم الخرائط على نطاق عالمي الذي تم تنفيذه في الحزمة الخريطة الأساسية. الخريطة الأساسية لا ينفذ التآمر الفعلي في حد ذاته ولكنه يعتمد على المشروع 4.C لتحويل الإحداثيات إلى إسقاط خريطة معين ثم توظف matplotlib، مكتبة التصور الأساسية في Python ، للقيام بالتخطيط الفعلي للخطوط أو الصور أو الكائنات المتجهة في الإحداثيات المسقطة. خرائط الأساس كانت أصولها تدعم علم المحيطات والأرصاد الجوية ، ومع مرور الوقت تطورت وظائفها لدعم التخصصات الأخرى من علم الأحياء إلى الجيولوجيا والجيوفيزياء.

كارتوبي هي حزمة تهدف إلى رسم الخرائط بسهولة لتحليل البيانات وتصورها. وهي تتبنى نهجًا موجهًا للكائنات لتحديد إسقاطات الخريطة وتوفر واجهة بسيطة وبديهية للتخيل عبر matplotlib. كارتوبي يعتمد على كل من PROJ.4 لوظائف العرض الخاصة به ، و جميل لقراءة ملفات الأشكال. مشابه ل الخريطة الأساسية، كارتوبي تم إنشاؤه في الأصل لدعم أبحاث الأرصاد الجوية ، ولكنه توسع لدعم رسم الخرائط في مجموعة واسعة من المجالات العلمية.

بينما كلاهما الخريطة الأساسية و كارتوبي المواجهة مع matplotlib من أجل التصور ، يستهدف عدد من حزم تعيين Python متصفحات الويب لتكون منصة للتصور. فوليوم هي واحدة من أقدم هذه البرامج ، حيث توفر واجهة Python لملف منشور مكتبة جافا سكريبت لرسم الخرائط التفاعلية على شبكة الإنترنت. فوليوم يتضمن أيضًا تحسينات من فنسنت / فيجا إطار عمل لجلب العلامات والمؤامرات المعززة في التصور الجغرافي المكاني. واجهات Folium مع عدد من خدمات Tileset الشائعة بما في ذلك OpenStreetMap, Mapbox، و سداة، مع دعم ل GeoJSON و توبوجسون تنسيقات البيانات المكانية.

على الرغم من أنها ليست مصممة خصيصًا لرسم الخرائط والتصوير الجغرافي ، فإن حزمتين حديثتين من حزم تصور Python تتطلبان التضمين هنا. خوخه مشابه ل فوليوم من حيث أنه يستهدف متصفحات الويب الحديثة للتصور. يفعل ذلك من خلال أسلوب D3.js مكتبة للتصور المستند إلى البيانات ، مع التركيز على التفاعل عالي الأداء لمجموعات البيانات الكبيرة. داتاشادر هو أحد مكونات خوخه التي تنفذ خط أنابيب رسومات لتقديم تمثيلات لمجموعات البيانات الضخمة من خلال التجميع والتجميع والتحويلات. ومن الجدير بالذكر أن القدرات الرائعة داتاشادر غالبًا ما تتميز بتطبيقات جغرافية مكانية (https://github.com/bokeh/datashader).

قبل مغادرة طبقة التصور لمكدس بايثون الجغرافي المكاني ، يجب عمل نقطتين إضافيتين. أولاً ، هناك تركيز نشط في مجتمع بايثون العلمي على خرائط الألوان الفعالة للتصور العلمي. يتقاطع هذا العمل مع عمل رسامي الخرائط الذين يصممون مخططات الألوان لرسم الخرائط التصحيحية. الحزم الشائعة في عالم بايثون هي مستساغ و خريطة ملونة. Second, the visualization component of the Python scientific stack is rapidly evolving so readers are encouraged to use this section as an entry point not a final destination.

4.4 Spatial Statistical Analysis

PySAL is a library of spatial analysis functions for spatial data. It consists of modules that cover exploratory spatial data analysis which includes global and local measures of spatial autocorrelation - popular methods to detect spatial clustering and hot spots. PySAL also provides functionality for spatial regression, space-time analysis, regionalization, map classification and a host of geocomputational modules. PySAL began at a time when very little of the geospatial Python stack existed and, as such, it also includes functionality for lower levels of the stack out of necessity. Over time, PySAL has added modules that interface with many other newer packages in the stack (shapely, geopandas, cartopy, etc).

PySAL focuses primarily on vector spatial formats and covers statistical analysis for attributes associated with polygons, points and networks. Geostatistical data analysis is associated with the statistical analysis of fields commonly encountered in the geosciences where phenomena such as temperature, precipitation, air quality are modeled as a surface using methods such as kriging and various spatial interpolation approaches. The objective in much of this work is to generate predictions for a continuum of locations based on a discrete set of observed locations for the process at hand. In the Python stack, geostatistics is an area that has been underdeveloped to date as there have been a few starts of projects but intermittent development - one example being pykriging.

4.5 Spatial Modeling

Mesa is a package that implements functionality to develop and apply agent-based models. These models can be used to simulate autonomous agents embodied with behavioral rules on a grid layout to assess the impacts of their behaviors and interactions on the system as a whole. The classic example of ABM is the Schelling model of segregation featured as a key demonstration in the Mesa package.

clusterpy provides a library of spatially constrained clustering algorithms that can be used to group primitive geographic areas or points into a smaller number of regions for subsequent analysis. For example, in geodemographics, census tracts can be defined based on both socioeconomic similarity as well as geographical contiguity. The inclusion of the latter constraint differentiates regionalization from more general multivariate clustering.

4.6 Web and Distributed

Increasingly, scientific workflows have been moving towards web based and distributed frameworks, and spatial analysis is no exception. Here libraries that provide for middleware linking different analytical and processing functionality together as individual services are required. In the Python geospatial stack a growing number of packages implement specifications from the Open Geospatial Consortium to facilitate web based geoprocessing and analysis. Stetl offers a toolkit for extraction, transformation, and loading (ETL) of geospatial data. OWSlib implements key OGC standards via a Pythonic interface including, web mapping service (WMS), web feature service (WFS), sensor model language (SensorML), and WaterML among some 17 other services. Both Stetl و OWSlib are part of the GeoPython organization which develops numerous geospatial projects.

4.7 Package Considerations

The packages listed in Table 1 represent only a fraction of what is available to the geospatial developers working in Python. It should also be kept in mind that the placing of a package in a specific layer is somewhat fluid since a particular package may afford functionality that spans multiple layers of the stack. For example, because Geopandas has fiona and PySAL among its dependencies, it can provide access to the core functionality of those packages via its namespace. The richness and diversity of the geospatial packages are testaments to the core strengths of the underlying scientific computing stack in Python where packages such as حبيبي و scipy together with the development affordances of the Python ecosystem itself provide for an excellent development paradigm. As well, there are packages in the broader Python scientific stack that can be called upon to implement geospatial functionality. على سبيل المثال، network-x provides a wealth of methods for analyzing networks and graphs, while scikit-image is a powerful library for image analysis.

There are a few issues that GIS developers need to keep in mind, particularly when developing GIS applications with Python for different platforms. A key issue is the management of the Python installation alongside third-party packages. Both ArcGIS و QGIS install their own Python interpreters in directories that are specific to those applications. This can be a source of confusion if the developer also has other Python installations on the same machine, particularly when it comes to installing additional packages. Python offers a number of approaches towards package management (نقطة being the main one), and Python distributions such as Anaconda and Enthought also provide their own package managers.

Python and the related GIS software ecosystem are very active and undergoing constant growth. To enhance one’s proficiency, it is important to keep up with these developments so that workflows can remain current by taking advantage of advances in the language itself and packages in the broader ecosystem. While predictions about the future are always challenging, the seeds of a few developments can already be seen emerging. The first is an increasing emphasis on the importance of interoperability between Python and other languages. Packages such as RPy allow for bidirectional interfaces between Python and R so that a developer can leverage the strengths of each language in the same workflow. This also serves to widen the scope of the GIScience programming stack.

A related area to keep abreast of is the set of tools that allow for extension of Python by wrapping external libraries written in lower level languages such as C, C++, and Fortran. Cython, numba، و swig provide methods to target bottlenecks in a Python code base to be replaced with more computationally efficient libraries. The extensibility of Python using these tools means that initial prototyping of a GIScience application can rely on pure Python in a developer-efficient manner. Only after the full functionality of the application is implemented should attention turn to optimizations and, in many cases, this turns out to be a small fraction of the code base. In these instances, the extension frameworks can prove invaluable.

The world of parallel and distributed high performance computing has advanced remarkably in the past decade and the Python ecosystem exemplifies this. Although a comprehensive coverage of related packages is beyond the current scope (packages for cloud, distributed and high performance computing in Python can be found at https://wiki.python.org/moin/ParallelProcessing), one exemplar package to note is Dask. A flexible parallel library for analytic computing, Dask is built around two components: dynamic task scheduling that optimizes interactive computational workloads, and big data collections that enable out-of-memory or distributed processing of parallel data arrays and dataframes.

A fourth important thread is the rise of open science. Stressing the need for improved transparency, reproducibility, and replication, the open science movement is leading to new types of development paradigms such as Docker containers, conda environments and the notebook viewer that enable sharing of snippets of code and even complete workflows that reproduce the analysis underlying a particular scientific paper. Familiarity with these tools will be increasingly important for Python GIS development.

Open science also has parallels in the open government and open data movements that are driving transparency, sharing, and reuse of government collected data. These have fostered collaborative projects bringing together academic researchers, government and industry to fashion computing solutions targeting social and environmental issues. Given that many of these projects involve geospatial data and analysis, Python capable GIScientists can play a central role in these efforts.


شاهد الفيديو: طريقة حساب المسافة في خرائط جوجل بالنقط وبالتدقيق