أكثر

احسب عدد النقاط في مضلع (متعدد) بشكل رشيق؟

احسب عدد النقاط في مضلع (متعدد) بشكل رشيق؟


أنا أستخدم Python و Shapely و Fiona لمعالجة بعض ملفات الأشكال.

هل هناك طريقة سهلة لحساب عدد النقاط في مضلع / متعدد الأضلاع في Shapely و Fiona؟


1) مع Fiona ، لا تحتاج بشكل رشيق إلى حساب عدد النقاط في مضلع / متعدد الأضلاع. ما عليك سوى استخدام تنسيق GeoJSON الناتج (= قاموس Python).

مضلع بسيط:

>>> استيراد فيونا >>> شكل = fiona.open ("simplePoly.shp") >>> # الميزة الأولى >>> feature = shape.next () >>> geom = feature ['geometry'] >>> طباعة geom {'type': 'Polygon'، 'الإحداثيات': [[(1.0، 1.0)، (1.0، 7.0)، (7.0، 7.0)، (7.0، 1.0)، (1.0، 1.0)]]}> >> طباعة geom ['الإحداثيات'] [[(1.0، 1.0)، (1.0، 7.0)، (7.0، 7.0)، (7.0، 1.0)، (1.0، 1.0)]] >>> print len ​​(geom [ 'إحداثيات']) 1 # -> مضلع واحد فقط >>> طباعة "عدد النقاط =" ، لين (geom ['الإحداثيات'] [0]) عدد النقاط = 5

أو ببساطة:

>>> شكل = fiona.open ("simplePoly.shp") >>> طباعة "عدد النقاط =" ، len (shape.next () ['geometry'] ['الإحداثيات'] [0] عدد النقاط = 5

مضلع بفتحة واحدة

>>> شكل = fiona.open ("Poly_hole.shp") >>> geom = shape.next () ['geometry'] ['الإحداثيات'] [[(1.0، 1.0)، (1.0، 7.0)، ( 7.0 ، 7.0) ، (7.0 ، 1.0) ، (1.0 ، 1.0)] ، [(2.0 ، 3.0) ، (4.0 ، 3.0) ، (4.0 ، 5.0) ، (2.0 ، 5.0) ، (2.0 ، 3.0)]] >>> طباعة len (geom) 2 # -> مضلع وثقب واحد >>> طباعة "عدد النقاط الخارجية =" ، len (geom) [0]) عدد النقاط الخارجية = 5 >>> print "number of interior النقاط = "، len (geom) [1]) عدد النقاط الداخلية = 5

متعدد المضلع

>>> شكل = fiona.open ("multiPoly.shp") >>> geom = shape.next () ['geometry'] ['الإحداثيات'] >>> طباعة geom {'type': 'MultiPolygon'، ' إحداثيات: [[(1.0، 1.0)، (1.0، 7.0)، (7.0، 7.0)، (7.0، 1.0)، (1.0، 1.0)]]، [(2.0، 3.0)، (4.0، 3.0 ) ، (4.0 ، 5.0) ، (2.0 ، 5.0) ، (2.0 ، 3.0)]]} >>> طباعة "عدد النقاط =" ، المجموع ([لين (بولي [0]) للبولي في geom]) عدد النقاط = 10

لذا فإن الحل

if shape.next () ['geometry'] ['type'] == 'Polygon': if len (shape.next () ['geometry']) == 1: # -> مضلع بسيط إذا كان len (شكل. next () ['geometry'])> 1: # -> مضلع به ثقوب إذا كان shape.next () ['geometry'] ['type'] == 'MultiPolygon': # -> Multipolygon

2) إذا كنت ترغب في استخدام محلول ضد التدفق مع Fiona ورشيق ، استخدم رشيقشكلالوظيفة (Python Geo Interface):

>>> من شكل استيراد shapely.geometry >>> شكل = fiona.open ("simplePoly.shp") >>> geom_shapely = shape (shape.next ()) >>> نوع الطباعة (geom_shapely)  >>> طباعة geom_shapely POLYGON ((1 1، 1 7، 7 7، 7 1، 1 1))

يمكنك الحصول على إحداثيات النقاط الخارجية والداخلية للمضلع بهذه الطريقة:

def extract_poly_coords (geom): if geom.type == 'Polygon': external_coords = geom.exterior.coords [:] interior_coords = [] للداخل في geom.interiors: interior_coords + = interior.coords [:] elif geom.type == 'MultiPolygon': external_coords = [] interior_coords = [] لجزء في geom: epc = extract_poly_coords (جزء) # استدعاء متكرر extra_coords + = epc ['external_coords'] interior_coords + = epc ['interior_coords'] else: زيادة ValueError ('نوع الهندسة غير المعالجة:' + repr (geom.type)) إرجاع {'external_coords': outside_coords، 'interior_coords': interior_coords}

ثم يمكنك الاعتماد على سبيل المثال جميع الأسلاك الخارجية:

polyPoints = len (extra_coords) ؛

لسوء الحظ ، لا يوفر Shapely وظيفة لاستخراج جميع النقاط على الفور من كائن MultiPolygon. بدلاً من ذلك ، سيتعين عليك أولاً ، التكرار فوق المضلعات الفردية لمضلع متعدد ، وثانيًا ، استخراج النقاط الفردية لكل مضلع.

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

لاحظ [: -1] الذي يمنع تكرار الرأس الأول. يمكنك إزالته إذا كنت ترغب في الحصول على بنية أنظف ولا تهتم بوجود نقطة مكررة واحدة لكل مضلع.
يمكن أيضًا كتابة هذا في سطر واحد باستخدام list comprehension مع حلقتين:

بشكل عام ، عندما يمكن أن تحتوي المضلعات على ثقوب ، يمكننا ، على سبيل المثال ، كتابة الوظيفة التالية لاستخراج الإحداثيات من الحلقات الداخلية:

يمكن للمرء أن يذهب أكثر ويعمم هذا لأي هندسة إدخال (Python ≥3.7):


احسب عدد النقاط في مضلع (متعدد) بشكل رشيق؟ - نظم المعلومات الجغرافية

Участвовать бесплатно

تهدف هذه الدورة إلى تعريف الطلاب على CyberGIS - علوم وأنظمة المعلومات الجغرافية المكانية (GIS) - استنادًا إلى البنية التحتية الإلكترونية المتقدمة بالإضافة إلى أحدث التقنيات في الحوسبة عالية الأداء والبيانات الضخمة والحوسبة السحابية في سياق علوم البيانات الجغرافية المكانية . يتم التركيز على تعلم التطورات المتطورة لنظام المعلومات الجغرافية السيبراني ومبادئ علوم البيانات الجغرافية المكانية الأساسية.

Получаемые навыки

التصور الجغرافي ، برمجة بايثون ، علوم البيانات الجغرافية المكانية ، نظم المعلومات الجغرافية (GIS) ، CyberGIS

الوحدة 3: معالجة الكائنات الجغرافية المكانية ومقدمة لترويض البيانات الضخمة باستخدام Hadoop

في هذه الوحدة ، سيتعرف الطلاب أولاً على تقنيات معالجة الكائنات الجغرافية المكانية باستخدام المكتبات الجغرافية المكانية في بايثون. على وجه التحديد ، سوف نتعلم كيفية التعامل مع كائنات البيانات المتجهة والنقطية باستخدام مكتبات Shapely و RasterIO. بعد ذلك ، يتعرف الطلاب على استخدام نموذج Hadoop لترويض البيانات الجغرافية المكانية الكبيرة. على وجه التحديد ، سوف نتعلم أساسيات كيفية معالجة البيانات المكانية الكبيرة باستخدام Hadoop. سيحصل الطلاب على مقدمة موجزة عن إطار عمل Hadoop ومكوناته الرئيسية وخصائصه ، وسيتعرفون على نظام الملفات الموزعة Hadoop (HDFS) وبنيته وأوامره البسيطة للتفاعل معه. سوف نتعرف أيضًا على نموذج الحوسبة MapReduce ونرى مثالاً على كيفية تطبيقه باستخدام Hadoop Streaming API لمعالجة بيانات سيارات الأجرة في مدينة نيويورك.


نقطة في المضلع للمضلعات المحدبة

المضلع المحدب عبارة عن مضلع بجميع زواياه الداخلية أقل من 180 درجة ، مما يعني أن جميع الرؤوس تتجه بعيدًا عن الجزء الداخلي من المضلع.

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

الخوارزمية: بالنسبة إلى المضلع المحدب ، إذا كان من الممكن اعتبار جوانب المضلع كمسار من أي رأس. بعد ذلك ، يُقال إن نقطة الاستعلام موجودة داخل المضلع إذا كانت تقع على نفس الجانب من جميع مقاطع الخط التي يتكون منها المسار. يمكن ملاحظة ذلك في الرسم البياني أدناه.

لإيجاد أي جانب من القطعة المستقيمة تقع النقطة فيه ، يمكننا ببساطة استبدال النقطة في معادلة القطعة المستقيمة. على سبيل المثال ، بالنسبة للخط المكون من (x1 ، y1) و (x2 ، y2) ، يمكن استبدال نقطة الاستعلام (xp ، yp) مثل:

عند النظر إلى مقطع في عكس اتجاه عقارب الساعة إذا كانت النتيجة:

  1. نتيجة & gt 0: تقع نقطة الاستعلام على يسار السطر.
  2. النتيجة = 0: نقطة الاستعلام تقع على الخط.
  3. النتيجة & lt 0: تقع نقطة الاستعلام على يمين السطر.
  1. استبدال_نقطة_في_الخط ():تحسب هذه الوظيفة على أي جانب من الخط تقع النقطة.
  2. is_point_inside_convex_polygon ():هذه هي الخوارزمية الكاملة وتحسب ما إذا كانت النقطة داخل, في الخارج أو على مضلع محدب بالنظر إلى رؤوس المضلع إما في اتجاه عقارب الساعة أو عكس اتجاه عقارب الساعة.

كما نوقش سابقًا ، فإن النقطة في المضلع المحدب ستغطي أيضًا حالات مثل

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

يرجى التواصل معي إذا كان لديك أي أسئلة وآمل أن تكون قد استمتعت بالرياضيات.


تحسين حساب التقاطع

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

النهج الساذج لفحص كل طريق مقابل كل طريق آخر غير فعال للغاية ويمكن تحسينه بشكل كبير من خلال جعل عمليات فحص التقاطع أكثر محلية. على سبيل المثال ، ليست هناك & # 8217s حاجة للتحقق من التقاطع بين طريقين بعيدان جدًا عن بعضهما البعض. تتمثل إحدى طرق تحسين ذلك في تقسيم المنطقة إلى شبكة من المربعات وتنفيذ وظيفة التقاطع على كل بلاطة على حدة. ثم تصبح عمليات فحص التقاطع مترجمة ويتم تقليل عدد العمليات بشكل كبير.

بالإضافة إلى ذلك ، فإن وجود عمليات تقاطع محصورة في البلاط يفسح المجال جيدًا للمعالجة المتعددة & # 8212 يمكن معالجة كل بلاطة بشكل متوازٍ.

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

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


بناء الجملة

يجب تبسيط ميزات مضلع الإدخال.

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

تتضمن فئة ميزة الإخراج حقلين إضافيين ، InPoly_FID و SimPgnFlag ، والتي تحتوي على معرفات ميزة الإدخال والأخطاء الطوبولوجية أو التناقضات ، على التوالي.

  • SimPgnFlag = 0 يشير إلى عدم وجود أخطاء.
  • SimPgnFlag = 1 يشير إلى وجود خطأ طوبولوجي.
  • يشير SimPgnFlag = 2 إلى الميزات التي تم تقسيمها بواسطة قسم وأصبحت الآن أقل من الحد الأدنى للمساحة بعد التبسيط. قد تظهر العلامة على جزء واحد فقط من ميزة الانقسام. يتم الاحتفاظ بجميع هذه الميزات في فئة ميزة الإخراج. ينشأ هذا الموقف فقط عند استخدام إعداد بيئة أقسام رسم الخرائط.

يحدد خوارزمية تبسيط المضلع.

  • POINT_REMOVE - يحتفظ بالنقاط الحرجة التي تحافظ على الشكل الأساسي لمخطط مضلع ويزيل جميع النقاط الأخرى (Douglas-Peucker). هذا هو الافتراضي.
  • BEND_SIMPLIFY - يحتفظ بالانحناءات الحرجة ويزيل الانحناءات الخارجية من الخط (وانج مولر).
  • WEIGHTED_AREA — يحتفظ بالرؤوس التي تشكل مثلثات منطقة فعالة تم وزنها بواسطة شكل مثلث (Zhou-Jones).
  • EFFECTIVE_AREA - يحتفظ بالرؤوس التي تشكل مثلثات المنطقة الفعالة (Visvalingam-Whyatt).

يحدد التسامح درجة التبسيط. يمكنك اختيار وحدة مفضلة وإلا سيتم استخدام وحدات الإدخال. تتم إضافة حقول MinSimpTol و MaxSimpTol إلى الإخراج لتخزين التفاوت الذي تم استخدامه عند حدوث المعالجة.

  • بالنسبة لخوارزمية POINT_REMOVE ، يكون التفاوت هو أقصى مسافة عمودية مسموح بها بين كل رأس والخط الذي تم إنشاؤه حديثًا.
  • بالنسبة إلى خوارزمية BEND_SIMPLIFY ، يكون التفاوت هو قطر الدائرة التي تقترب من الانحناء الكبير.
  • بالنسبة لخوارزمية WEIGHTED_AREA ، يكون مربع التفاوت هو مساحة المثلث المهم المحدد بثلاثة رؤوس متجاورة. كلما زاد انحراف المثلث عن متساوي الأضلاع ، زاد وزنه وأقل احتمالية إزالته.
  • بالنسبة إلى خوارزمية EFFECTIVE_AREA ، يكون مربع التفاوت هو مساحة المثلث الهام المحدد بثلاثة رؤوس متجاورة.

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

ميراث:

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

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

  • KEEP_COLLAPSED_POINTS —سجل مراكز المضلعات التي تمت إزالتها لأنها أقل من الحد الأدنى للمساحة في فئة معلم نقطة الإخراج المشتقة. هذا هو الافتراضي.
  • NO_KEEP —لا تقم بإنشاء فئة سمة نقطة إخراج مشتقة.

تحتوي المدخلات على ميزات لتكون بمثابة حواجز أمام التبسيط. لن تتلامس المضلعات المبسطة الناتجة عن ميزات الحاجز أو تتقاطع معها. على سبيل المثال ، عند تبسيط مناطق الغابات ، لا تتقاطع مضلعات الغابة المبسطة الناتجة مع ميزات الطرق المحددة على أنها حواجز.

الناتج المشتق

عند استخدام معلمة الاحتفاظ بالنقاط المطوية (collapsed_point_option في Python) ، يتم إنشاء فئة معلم نقطة الإخراج لتخزين النقاط التي تمثل أي مضلعات تمت إزالتها لأنها أقل من الحد الأدنى للمساحة


إستعمال

النقاط (كائن SpatialPoints * ، أو مصفوفة من عمودين (أو data.frame)) ، أو SpatialLines * ، أو SpatialPolygons * ، أو كائن Extent

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

وظيفة أو شخصية. لتحديد القيم المراد تعيينها للخلايا التي تغطيها ميزات مكانية متعددة. يمكنك استخدام وظائف مثل min ، max ، أو mean ، أو إحدى قيم الأحرف التالية: "first" ، "last" ، "count". القيمة الافتراضية هي "آخر". في حالة SpatialLines * ، يُسمح أيضًا بـ "الطول" (حاليًا لأنظمة الإحداثيات المستوية فقط).

إذا كانت x تمثل النقاط ، فيجب أن تقبل المتعة وسيطة na.rm ، إما بشكل صريح أو من خلال "النقاط". هذا يعني أن fun = length فشل ، لكن fun = function (x.) length (x) يعمل ، على الرغم من أنه يتجاهل الوسيطة na.rm. لاستخدام الوسيطة na.rm ، يمكنك استخدام دالة مثل: fun = function (x، na.rm) if (na.rm) length (na.omit (x)) else (length (x) ، أو استخدم a دالة تزيل قيم NA في جميع الحالات ، مثل هذه الوظيفة لحساب عدد القيم الفريدة لكل خلية شبكة "ثراء": fun = function (x،.) . إذا كنت تريد حساب عدد النقاط في كل خلية شبكة ، فيمكنك استخدام fun = 'count' أو fun = function (x.) .

يمكنك أيضًا تمرير وظائف متعددة باستخدام عبارة مثل fun = function (x،.) c (length (x)، mean (x)) ، وفي هذه الحالة يكون الكائن المرتجع عبارة عن RasterBrick (طبقات متعددة).

رقمي. القيمة المطلوب وضعها في الخلايا التي لا تغطيها أي من ميزات x. الافتراضي هو NA

منطقي. إذا كانت القيمة TRUE ، فإن قيم الكائن النقطي المدخل "مقنعة" بالسمات المكانية لـ x. أي أن الخلايا التي تتداخل مكانيًا مع السمات المكانية تحتفظ بقيمها ، وتصبح الخلايا الأخرى NA. الافتراضي هو FALSE. لا يمكن استخدام هذا الخيار عند التحديث = TRUE

منطقي. إذا كانت القيمة TRUE ، يتم تحديث قيم كائن النقطية * للخلايا التي تتداخل مع الميزات المكانية لـ x. الافتراضي هو FALSE. لا يمكن استخدامه عندما يكون القناع = TRUE

رقمية (عادة عدد صحيح) ، أو حرف. مناسب فقط عند التحديث = TRUE. حدد ، حسب قيمها ، الخلايا المراد تحديثها بقيم المعالم المكانية. قيم الأحرف الصالحة هي "all" و "NA" و "! NA". الافتراضي هو "الكل"

حرف. اسم ملف الإخراج (اختياري)

إذا كانت TRUE ، فستتم إزالة قيم NA إذا كانت fun تفي بالوسيطة na.rm

منطقي. إذا كانت القيمة TRUE ، فسيتم إرجاع جزء كل خلية شبكة تغطيها المضلعات (ويتم تجاهل قيم الحقل والمرح والقناع والتحديث. ويتم تقدير الكسر المغطى بتقسيم كل خلية إلى 100 خلية فرعية وتحديد التواجد / الغياب المضلع في وسط كل خلية فرعية

منطقي. إذا كانت القيمة TRUE ، فسيتم إبطال التعليقات على عدد المضلعات. الافتراضي هو FALSE


احسب عدد النقاط في مضلع (متعدد) بشكل رشيق؟ - نظم المعلومات الجغرافية

بالنظر إلى مضلع ونقطة & # 8216p & # 8217 ، ابحث عما إذا كانت & # 8216p & # 8217 تقع داخل المضلع أم لا. تعتبر النقاط الواقعة على الحدود من الداخل.

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

كيفية التعامل مع النقطة & # 8216g & # 8217 في الشكل أعلاه؟
لاحظ أننا يجب أن نعود صحيحًا إذا كانت النقطة تقع على الخط أو نفس إحدى رءوس المضلع المحدد. للتعامل مع هذا ، بعد التحقق مما إذا كان السطر من & # 8216p & # 8217 إلى التقاطعات القصوى ، نتحقق مما إذا كان & # 8216p & # 8217 خطًا خطيًا مع رؤوس السطر الحالي للمضلع. إذا كانت coliear ، فإننا نتحقق مما إذا كانت النقطة & # 8216p & # 8217 تقع على الجانب الحالي من المضلع ، وإذا كانت تقع ، فسنرجع صحيحًا ، وإلا خطأ.


وحدة osmnx.graph¶

osmnx.graph. الرسم البياني من العنوان ( تبوك, توزيعات = 1000, dist_type = 'bbox', network_type = 'all_private', تبسيط = صحيح, retain_all = خطأ, truncate_by_edge = خطأ, return_coords = خطأ, clean_periphery = صحيح, custom_filter = بلا ) ¶

قم بإنشاء رسم بياني من OSM ضمن مسافة معينة من بعض العناوين.

  • تبوك (سلسلة) - العنوان المراد تكويده الجغرافي واستخدامه كنقطة مركزية لبناء الرسم البياني حولها
  • حي (int) - احتفظ فقط بتلك العقد ضمن هذه الأمتار العديدة من مركز الرسم البياني
  • نوع التوزيع (سلسلة <& quotnetwork & quot,& quotbbox & quot>) - في حالة "bbox" ، احتفظ فقط بتلك العقد داخل المربع المحيط لمعلمة المسافة. إذا كانت "الشبكة" ، احتفظ فقط بتلك العقد ضمن مسافة معينة للشبكة من العقدة المركزية (يتطلب تثبيت scikit-learn كعنصر تبعية اختياري).
  • نوع الشبكة (سلسلة <& quotall_private & quot,& مثل & quot,& quotbike & quot,& quotdrive & quot,& quotdrive_service & quot,& quotwalk & quot>) - ما نوع شبكة الشوارع التي يجب الحصول عليها إذا كان custom_filter لا شيء
  • تبسيط (منطقي) - إذا كان هذا صحيحًا ، فقم بتبسيط طوبولوجيا الرسم البياني باستخدام وظيفة simpleify_graph
  • احتفظ بالجميع (منطقي) - إذا كان صحيحًا ، فقم بإرجاع الرسم البياني بأكمله حتى إذا لم يكن متصلاً. وإلا ، احتفظ فقط بأكبر مكون متصل بشكل ضعيف.
  • truncate_by_edge (منطقي) - إذا كان صحيحًا ، احتفظ بالعقد خارج المربع المحيط إذا كان أحد جيران العقدة على الأقل داخل المربع المحيط
  • Return_coords (منطقي) - بشكل اختياري إرجاع إحداثيات العنوان المرمزة جغرافيًا
  • clean_periphery (منطقي,) - إذا كان هذا صحيحًا ، فاحرص على تخزين 500 م للحصول على رسم بياني أكبر من المطلوب ، ثم قم بتبسيطه ، ثم اقتطاعه إلى الحدود المكانية المطلوبة
  • تصفية مخصص (سلسلة) - مرشح طرق مخصص لاستخدامه بدلاً من الإعدادات المسبقة لنوع الشبكة ، على سبيل المثال ، "[" الطاقة "

networkx.MultiDiGraph أو اختياريًا (networkx.MultiDiGraph ، (lat ، lng))

يمكنك تكوين مهلة خادم Overpass ، وتخصيص الذاكرة ، والإعدادات المخصصة الأخرى عبر ox.config ().

osmnx.graph. الرسم البياني_من_بوكس ( شمال, جنوب, الشرق, غرب, network_type = 'all_private', تبسيط = صحيح, retain_all = خطأ, truncate_by_edge = خطأ, clean_periphery = صحيح, custom_filter = بلا ) ¶

قم بإنشاء رسم بياني من OSM داخل بعض المربع المحيط.

  • شمال (يطفو) - خط العرض الشمالي للصندوق المحيط
  • جنوب (يطفو) - خط العرض الجنوبي للصندوق المحيط
  • الشرق (يطفو) - خط الطول الشرقي للصندوق المحيط
  • غرب (يطفو) - خط الطول الغربي للمربع المحيط
  • نوع الشبكة (سلسلة <& quotall_private & quot,& مثل & quot,& quotbike & quot,& quotdrive & quot,& quotdrive_service & quot,& quotwalk & quot>) - ما نوع شبكة الشوارع التي يجب الحصول عليها إذا كان custom_filter لا شيء
  • تبسيط (منطقي) - إذا كان هذا صحيحًا ، فقم بتبسيط طوبولوجيا الرسم البياني باستخدام وظيفة simpleify_graph
  • احتفظ بالجميع (منطقي) - إذا كان صحيحًا ، فقم بإرجاع الرسم البياني بأكمله حتى إذا لم يكن متصلاً. وإلا ، احتفظ فقط بأكبر مكون متصل بشكل ضعيف.
  • truncate_by_edge (منطقي) - إذا كان صحيحًا ، احتفظ بالعقد خارج المربع المحيط إذا كان أحد جيران العقدة على الأقل داخل المربع المحيط
  • clean_periphery (منطقي) - إذا كان هذا صحيحًا ، فاحرص على تخزين 500 م للحصول على رسم بياني أكبر من المطلوب ، ثم قم بتبسيطه ، ثم اقتطاعه إلى الحدود المكانية المطلوبة
  • تصفية مخصص (سلسلة) - مرشح طرق مخصص لاستخدامه بدلاً من الإعدادات المسبقة لنوع الشبكة ، على سبيل المثال ، "[" الطاقة "

يمكنك تكوين مهلة خادم Overpass ، وتخصيص الذاكرة ، والإعدادات المخصصة الأخرى عبر ox.config ().

osmnx.graph. الرسم البياني_من_المكان ( استفسار, network_type = 'all_private', تبسيط = صحيح, retain_all = خطأ, truncate_by_edge = خطأ, which_result = لا شيء, buffer_dist = لا شيء, clean_periphery = صحيح, custom_filter = بلا ) ¶

قم بإنشاء رسم بياني من OSM داخل حدود بعض الأماكن القابلة للتكويد الجغرافي.

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

إذا كان OSM يحتوي على حدود مضلعة لهذا المكان ولكنك لم تعثر عليه ، فحاول تغيير سلسلة طلب البحث ، أو تمرير طلب بحث منظم ، أو تغيير وسيطة أي نتيجة لاستخدام نتيجة تكويد جغرافي مختلفة. إذا كنت تعرف معرف OSM للمكان ، فيمكنك استرداد مضلع حدوده باستخدام وظيفة geocode_to_gdf ، ثم تمريره إلى دالة graph_from_polygon.

  • استفسار (سلسلةأوقاموسأوقائمة) - الاستعلام أو الاستعلامات المراد ترميزها جغرافيًا للحصول على مضلع (مضلعات) حدود المكان
  • نوع الشبكة (سلسلة <& quotall_private & quot,& مثل & quot,& quotbike & quot,& quotdrive & quot,& quotdrive_service & quot,& quotwalk & quot>) - ما نوع شبكة الشوارع التي يجب الحصول عليها إذا كان custom_filter لا شيء
  • تبسيط (منطقي) - إذا كان هذا صحيحًا ، فقم بتبسيط طوبولوجيا الرسم البياني باستخدام وظيفة simpleify_graph
  • احتفظ بالجميع (منطقي) - إذا كان صحيحًا ، فقم بإرجاع الرسم البياني بأكمله حتى إذا لم يكن متصلاً. وإلا ، احتفظ فقط بأكبر مكون متصل بشكل ضعيف.
  • truncate_by_edge (منطقي) - إذا كان صحيحًا ، احتفظ بالعقد خارج المضلع الحدودي إذا كان أحد جيران العقدة على الأقل داخل المضلع
  • أي نتيجة (int) - أي نتيجة تكويد جغرافي يجب استخدامها. في حالة عدم وجود ، حدد تلقائيًا المضلع الأول (متعدد) أو قم بإصدار خطأ إذا لم يُرجع OSM واحدًا.
  • المخزن المؤقت (يطفو) - المسافة إلى المنطقة العازلة حول هندسة المكان بالأمتار
  • clean_periphery (منطقي) - إذا كان هذا صحيحًا ، فاحرص على تخزين 500 م للحصول على رسم بياني أكبر من المطلوب ، ثم قم بتبسيطه ، ثم اقتطاعه إلى الحدود المكانية المطلوبة
  • تصفية مخصص (سلسلة) - مرشح طرق مخصص لاستخدامه بدلاً من الإعدادات المسبقة لنوع الشبكة ، على سبيل المثال ، "[" الطاقة "

يمكنك تكوين مهلة خادم Overpass ، وتخصيص الذاكرة ، والإعدادات المخصصة الأخرى عبر ox.config ().

osmnx.graph. رسم_من_نقطة ( نقطة المركز, توزيعات = 1000, dist_type = 'bbox', network_type = 'all_private', تبسيط = صحيح, retain_all = خطأ, truncate_by_edge = خطأ, clean_periphery = صحيح, custom_filter = بلا ) ¶

قم بإنشاء رسم بياني من OSM ضمن مسافة بعض النقاط (lat ، lng).

  • نقطة المركز (tuple) - النقطة المركزية (خطوط الطول والعرض) التي يتم إنشاء الرسم البياني حولها
  • حي (int) - احتفظ فقط بتلك العقد ضمن هذه الأمتار العديدة من مركز الرسم البياني ، مع تحديد المسافة وفقًا للوسيطة dist_type
  • نوع التوزيع (سلسلة <& quotnetwork & quot,& quotbbox & quot>) - في حالة "bbox" ، احتفظ فقط بتلك العقد داخل المربع المحيط لمعلمة المسافة. إذا كانت "الشبكة" ، احتفظ فقط بتلك العقد ضمن مسافة معينة للشبكة من العقدة الأكثر مركزًا (يتطلب تثبيت scikit-learn كعنصر تبعية اختياري).
  • نوع الشبكة (سلسلة,<& quotall_private & quot,& مثل & quot,& quotbike & quot,& quotdrive & quot,& quotdrive_service & quot,& quotwalk & quot>) - ما نوع شبكة الشوارع التي يجب الحصول عليها إذا كان custom_filter لا شيء
  • تبسيط (منطقي) - إذا كان هذا صحيحًا ، فقم بتبسيط طوبولوجيا الرسم البياني باستخدام وظيفة simpleify_graph
  • احتفظ بالجميع (منطقي) - إذا كان صحيحًا ، فقم بإرجاع الرسم البياني بأكمله حتى إذا لم يكن متصلاً. وإلا ، احتفظ فقط بأكبر مكون متصل بشكل ضعيف.
  • truncate_by_edge (منطقي) - إذا كان صحيحًا ، احتفظ بالعقد خارج المربع المحيط إذا كان أحد جيران العقدة على الأقل داخل المربع المحيط
  • clean_periphery (منطقي,) - إذا كان هذا صحيحًا ، فاحرص على تخزين 500 م للحصول على رسم بياني أكبر من المطلوب ، ثم قم بتبسيطه ، ثم اقتطاعه إلى الحدود المكانية المطلوبة
  • تصفية مخصص (سلسلة) - مرشح طرق مخصص لاستخدامه بدلاً من الإعدادات المسبقة لنوع الشبكة ، على سبيل المثال ، "[" الطاقة "

يمكنك تكوين مهلة خادم Overpass ، وتخصيص الذاكرة ، والإعدادات المخصصة الأخرى عبر ox.config ().

osmnx.graph. الرسم البياني_من_المضلع ( مضلع, network_type = 'all_private', تبسيط = صحيح, retain_all = خطأ, truncate_by_edge = خطأ, clean_periphery = صحيح, custom_filter = بلا ) ¶

قم بإنشاء رسم بياني من OSM داخل حدود بعض المضلع الرشيق.

  • مضلع (جميل. الهندسةأوجميل. الهندسة) - شكل الحصول على بيانات الشبكة بداخله. يجب أن تكون الإحداثيات بدرجات خطوط الطول والعرض غير المتوقعة (EPSG: 4326).
  • نوع الشبكة (سلسلة <& quotall_private & quot,& مثل & quot,& quotbike & quot,& quotdrive & quot,& quotdrive_service & quot,& quotwalk & quot>) - ما نوع شبكة الشوارع التي يجب الحصول عليها إذا كان custom_filter لا شيء
  • تبسيط (منطقي) - إذا كان هذا صحيحًا ، فقم بتبسيط طوبولوجيا الرسم البياني باستخدام وظيفة simpleify_graph
  • احتفظ بالجميع (منطقي) - إذا كان صحيحًا ، فقم بإرجاع الرسم البياني بأكمله حتى إذا لم يكن متصلاً. وإلا ، احتفظ فقط بأكبر مكون متصل بشكل ضعيف.
  • truncate_by_edge (منطقي) - إذا كان صحيحًا ، احتفظ بالعقد خارج المضلع الحدودي إذا كان أحد جيران العقدة على الأقل داخل المضلع
  • clean_periphery (منطقي) - إذا كان هذا صحيحًا ، فاحرص على تخزين 500 م للحصول على رسم بياني أكبر من المطلوب ، ثم قم بتبسيطه ، ثم اقتطاعه إلى الحدود المكانية المطلوبة
  • تصفية مخصص (سلسلة) - مرشح طرق مخصص لاستخدامه بدلاً من الإعدادات المسبقة لنوع الشبكة ، على سبيل المثال ، "[" الطاقة "

يمكنك تكوين مهلة خادم Overpass ، وتخصيص الذاكرة ، والإعدادات المخصصة الأخرى عبر ox.config ().

osmnx.graph. الرسم البياني_من_xml ( مسار الملف, ثنائي الاتجاه = خطأ, تبسيط = صحيح, retain_all = خطأ ) ¶

إنشاء رسم بياني من البيانات في ملف XML بتنسيق .osm.

  • مسار الملف (سلسلةأوالمسار) - مسار الملف الذي يحتوي على بيانات OSM XML
  • ثنائي الاتجاه (منطقي) - إذا كان هذا صحيحًا ، فقم بإنشاء حواف ثنائية الاتجاه للشوارع ذات الاتجاه الواحد
  • تبسيط (منطقي) - إذا كان هذا صحيحًا ، فقم بتبسيط طوبولوجيا الرسم البياني باستخدام وظيفة simpleify_graph
  • احتفظ بالجميع (منطقي) - إذا كان صحيحًا ، فقم بإرجاع الرسم البياني بأكمله حتى إذا لم يكن متصلاً. وإلا ، احتفظ فقط بأكبر مكون متصل بشكل ضعيف.

أساسيات Geopandas

Geopandas هي مكتبة لمعالجة البيانات المكانية. الفرق بين الجيوباندا والباندا هو أن GeoDataFrame يحتوي على GeoSeries مع البيانات المكانية. غالبًا ما يكون اسم GeoSeries هذا هو "الهندسة". تحتوي هذه البيانات المكانية على نظام مرجعي إحداثي (CRS) ، عادةً EPGS: 4326 إحداثيات جغرافية غير متوقعة ، أي خطوط الطول / العرض. يجب تغيير CRS إلى CRS المتوقع لأي تحليل أو قياسات مكانية. في هذه الفئة ، سوف نستخدم EPSG: 3857 WGS84 Web Mercator (المجال الإضافي) بوحدات بالأمتار.

مكتبة Geopandas ليست جزءًا من تطبيق anaconda لذا يجب عليك تثبيتها في بيئتك قبل استخدامها.

في نافذة المحطة ، أدخل كوندا تثبيت -c كوندا-فورج جيوبانداس.

هناك تنسيقان شائعان لمجموعات البيانات المكانية ، وهما GeoJSON و SHP. أسهل طريقة لتحديد ما إذا كانت مجموعة البيانات المفتوحة هي مجموعة بيانات مكانية (تحتوي على إحداثيات) هي تحديد ما إذا كان يمكن تصديرها بأي من هذين التنسيقات.

مجموعات البيانات المفتوحة في هذا المثال هي تنسيق GeoJSON. بالإضافة إلى ذلك ، فإن النظام الأساسي لمجموعات البيانات المفتوحة في هذا المثال هو سوكراتا. ستعمل التدريبات اللاحقة مع خدمات ArcGIS REST و Census WMS.

تستخدم مدينة بوفالو ، نيويورك مدينة سقراط كمنصة لها لتوفير البيانات المفتوحة. عنوان الويب هو https://data.buffalony.gov/.

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

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

عند النقر فوق ملف يصدر علامة التبويب سترى أنه يمكن تصدير مجموعة البيانات هذه بتنسيقات ملف أشكال أو geoJson.

إذا قمت بتمرير الماوس فوق أي من هذين التنسيقات ، فانقر بزر الماوس الأيمن - نسخ عنوان الرابط - يمكنك لصق عنوان url في سلسلة نصية لتتم قراءتها في إطار بيانات جغرافي.


شاهد الفيديو: Arc toolbox 18 - مضلعات ثيسن Create Thiessen Polygons Analysis