أكثر

تحويل متعدد الأضلاع الضخم إلى مضلعات


لدي ملف أشكال به بعض الأضلاع المتعددة الضخمة ، مع 100.000 من الأجزاء. ما هي أسهل طريقة لتقسيمها إلى مضلعات ذات جزء واحد؟ إنني أبحث عن شيء مثل وظيفة QGIS ”Multipart to single part” ، لكن الملف كبير لكي يتعامل معه QGIS. أظن أنه من المحتمل أن يكون هناك بالفعل بعض وحدات Python التي يمكنها القيام بذلك من أجلي. أي نصائح؟


لا تحتوي ملفات الأشكال على نوع MultiPolygon (النوع = مضلع) ، لكنها تدعمها على أي حال (يتم تخزين جميع الحلقات في مضلع واحد = قائمة المضلعات ، انظر إلى GDAL: ESRI Shapefile)

أسهل مع Fiona و Shapely:

استيراد fiona من شكل استيراد shapely.geometry ، تعيين # فتح ملف MultiPolygon الأصلي باستخدام fiona.open ('multipolygons.shp') كمصدر: # إنشاء الملف الجديد: برنامج التشغيل و crs هما نفسهما # للمخطط ونوع الهندسة هو "مضلع" بدلاً من ذلك output_schema = ديكت (source.schema) # عمل نسخة مستقلة output_schema ['geometry'] = "Polygon" باستخدام fiona.open ('output.shp'، 'w'، driver = source.driver، crs = source.crs، schema = output_schema) كإخراج: # اقرأ ملف الإدخال لـ multi in source: # استخراج كل ميزة Polygon لـ poly في الشكل (multi ['geometry']): # اكتب إخراج ميزة Polygon. 'الخصائص': متعدد ['الخصائص'] ، 'الهندسة': تعيين (متعدد)})

من قائمة بريدية GDAL باستخدام بيثون

استيراد نظام التشغيل من osgeo import ogr def multipoly2poly (in_lyr، out_lyr): لـ in_feat in_lyr: geom = in_feat.GetGeometryRef () if geom.GetGeometryName () == 'MULTIPOLYGON': لـ geom_part in geomo (addPolygon) ، out_lyr) else: addPolygon (geom.ExportToWkb ()، out_lyr) def addPolygon (simplePolygon، out_lyr): featureDefn = out_lyr.GetLayerDefn () polygon = ogr.CreateGeometryFromWgon (simplePoleatry) polygon) out_lyr.CreateFeature (out_feat) طباعة "تمت إضافة المضلع." من osgeo import gdal gdal.UseExceptions () driver = ogr.GetDriverByName ('ESRI Shapefile') in_ds = driver.Open ('data / multipoly.shp'، 0) in_lyr = in_ds.GetLayer () outputshp = 'data / poly. shp 'if os.path.exists (outputshp): driver.DeleteDataSource (outputshp) out_ds = driver.CreateDataSource (outputshp) out_lyr = out_ds.CreateLayer (' poly '، geom_type = ogr.wkbPolygon) متعدد الخطوط

تحذير من ملف gdb كبير الحجم ogr2ogr إلى SQLite: "استقبلت المنظمة المضلعات () مضلعًا به أكثر من 100 جزء"

& # 8217m أحاول كتابة ملف .gdb (يمكن أيضًا أن يكون أي تنسيق آخر ، geojson ، gpkg ، وما إلى ذلك) إلى قاعدة بيانات Spatialite ولكن الأمر يستغرق بعض الوقت وأنا أتلقى تحذيرًا.

أعلم أن SQLite بها إعدادات افتراضية منخفضة للمعاملات والذاكرة وهذا هو السبب في أنني أضفت خيارات -gt غير محدودة و-config OGR_SQLITE_CACHE 1024 خيارات ولكن ليس لها أي تأثير على سرعة الأمر. مع إزالة هذين الخيارين ، يستغرق الأمر نفس القدر من الوقت.

هل هناك أمر في ogr2ogr يمكنني استخدامه لجعل هذا يعمل بشكل أسرع ، أو ربما يجب علي التبديل إلى geopandas واستخدام بعض الوظائف الجميلة لحل هذه المشكلة؟

شكرا، هو موضع تقدير أي مساعدة!

إجابة واحدة

يعني الخطأ أن بيانات المصدر الخاصة بك تحتوي على مضلع يحتوي على أكثر من 100 جزء. أعتقد أن الأجزاء في هذا السياق تعني الحلقات ، الخارجية منها والداخلية. يمكن العثور على تفسير جيد من https://gdal.org/doxygen/classOGRGeometryFactory.html#a9ce97d39ca2e0dd88f415227e71b7fd5

تنظيم المضلعات على أساس الأشكال الهندسية. قم بتحليل مجموعة من الحلقات (تم تمريرها كمضلعات بسيطة) ، وبناءً على تحليل هندسي ، قم بتحويلها إلى مضلع به حلقات داخلية ، (أو مضلع متعدد إذا كان يتعامل مع أكثر من مضلع واحد) يتبع مواصفات OGC Simple Feature. يجب أن تكون جميع الأشكال الهندسية للإدخال مضلع OGRPolygon / OGRCurvePolygon مع حلقة خارجية صالحة فقط (4 نقاط على الأقل) وبدون حلقات داخلية. تصبح الأشكال الهندسية التي تم تمريرها من مسؤولية الطريقة ، لكن تظل PapoPolygons & quotpointer array & quot مملوكة للمتصل. لإجراء حساب أسرع ، يُعتبر المضلع داخل مضلع آخر إذا تم تضمين نقطة واحدة من الحلقة الخارجية في النقطة الأخرى. (ما لم يتم تعيين خيار التكوين "OGR_DEBUG_ORGANIZE_POLYGONS" على TRUE. في هذه الحالة ، يتم استخدام خوارزمية أبطأ تختبر العلاقات الطوبولوجية الدقيقة إذا كان GEOS متاحًا.) في الحالات التي يتم فيها تمرير عدد كبير من المضلعات إلى هذه الوظيفة ، قد تتم المعالجة الافتراضية كن بطيئًا حقًا. يمكنك تخطي المعالجة عن طريق إضافة METHOD = SKIP إلى قائمة الخيارات (ستكون نتيجة الوظيفة عبارة عن مضلع متعدد مع كل المضلعات كمضلعات عالية المستوى) أو فقط جعلها تحلل المضلعات عكس اتجاه عقارب الساعة عن طريق إضافة METHOD = ONLY_CCW إلى قائمة الخيارات إذا يمكنك افتراض أن مخطط الثقوب محدد بعكس اتجاه عقارب الساعة (هذا هو العرف على سبيل المثال في ملفات الأشكال أو قواعد البيانات الجغرافية الشخصية أو قواعد البيانات الجغرافية للملف). بالنسبة لـ FileGDB ، في معظم الحالات ، ولكن ليس دائمًا ، يمكن استخدام طريقة أسرع من ONLY_CCW. إنه CCW_INNER_JUST_AFTER_CW_OUTER. عند استخدامه ، يُفترض أن تكون الحلقات الداخلية موجهة عكس اتجاه عقارب الساعة ، وتتبع مباشرة الحلقة الخارجية (باتجاه عقارب الساعة) التي تنتمي إليها. إذا لم يتم استيفاء هذا الافتراض ، يمكن ربط حلقة داخلية بحلقة خارجية خاطئة ، لذلك يجب استخدام هذه الطريقة بحذر. إذا تم تحديد خيار التكوين OGR_ORGANIZE_POLYGONS ، فستتجاوز قيمته قيمة خيار METHOD لخيارات papszOptions (مفيد لتعديل سلوك مشغل ملف الشكل)

لست متأكدًا مما إذا كنت أفهم بشكل صحيح كيفية التحكم في الطريقة المستخدمة لتحليل الحلقات ، لكنني سأحاول باستخدام هذا الأمر:

اكتب بريدًا إلى قائمة gdal-dev إذا لم يحدث هذا الأمر أي فرق أو ألقى ببعض الأخطاء.


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

يتم تعريف CRS في sf من خلال كود epsg الخاص بهم ، على سبيل المثال ، يحتوي GPS / WGS84 CRS الكلاسيكي على الكود 4326 ، دع & # 039s يستكشف هذا:

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


ميزات بسيطة

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

يتم تنفيذ المعيار على نطاق واسع في قواعد البيانات المكانية (مثل PostGIS) ونظام المعلومات الجغرافية التجاري (مثل ESRI ArcGIS) ويشكل أساس بيانات المتجه للمكتبات مثل GDAL. تشكل مجموعة فرعية من الميزات البسيطة معيار GeoJSON.

يحتوي R على فئات مدعومة جيدًا لتخزين البيانات المكانية (sp) والتفاعل مع البيئات المذكورة أعلاه (rgdal ، rgeos) ، ولكنها تفتقر حتى الآن إلى التنفيذ الكامل للميزات البسيطة ، مما يجعل التحويلات في بعض الأحيان معقدة أو غير فعالة أو غير كاملة. تحاول الحزمة sf سد هذه الفجوة.


يتجتكوي

لماذا هي فكرة سيئة توظيف قاتل محترف للقضاء على معظم السياسيين الفاسدين؟

مجموعات المصفوفات المتولدة بشكل نهائي والتي تكون جميع قيمها الذاتية جبرية

ما هي برمجيات إكسبلويت التي يحاول وكلاء المستخدم استخدامها؟

بيانات اختبار التعلم الآلي

كيفية منع مجاز "أنهم يقعون في الحب"

ما المطلوب لإتاحة إشارات GPS في الداخل؟

هل تربط لجنة البطاطس في أيداهو قشر البطاطس بالأكل الصحي؟

حول الثواني إلى دقائق

المصابيح الأمامية للسيارات في عالم بلا كهرباء

كيف تشرح بشكل مضغوط الشخصيات الثانوية والثالثية دون اللجوء إلى الصور النمطية؟

ما هو اللون الأكثر شيوعًا للإشارة إلى تعطيل حقل الإدخال؟

هل هناك طريقة محايدة لنصف الكرة الأرضية لتحديد الموسم؟

المصادقة القائمة على المعرفة باستخدام التصميم المستند إلى المجال في C #

أطلق رئيس البلطجة حملة تشهير وجعلني عاطلاً عن العمل

OP Amp لا يضخم إشارة الصوت

سرعة المعالج محدودة عند 0.4 جيجاهرتز

فتح هاتفي! فبراير 2018

كيف نظهر للمالك ما لدينا من مدخرات؟

ماذا يعني نفس العش؟

ما هو أسرع عامل صحيح لكسر RSA؟

كيف يمكنني الخروج من BASH أثناء التكرار باستخدام عامل تشغيل؟

أمر Mathematica الذي يسمح له بقراءة نواياي

قم بعمل مخلوقات بسرعة 0 قدم ، وحلّق 30 قدمًا. (تحوم) لمس الأرض من قبل؟

ماذا تسمي شخص يسأل أسئلة كثيرة؟

التراكبات المكانية: الاتحاد بين متعدد الأسطر ومتعدد الأضلاع مع الجيوباندا

ابحث عن أزواج من المعالم القريبة مع geopandas و fiona و GDAL وما إلى ذلك من الجمع الهندسي إلى هندسة المضلع باستخدام python الفرق بين الخطوط والمضلعات باستخدام geopandasgeopandas يتلاشى مقابل postgresql postGIS المجموعة المجمعة عن طريق إذابة Known Intersecting Polygons إرجاع خاطئ لـ Geintersects () countryBuffer مع الإذابة - Geopandas - unary_union multolygonOverlay Union Geopandas تعمل على تحسين الأداء لماذا يعتبر Union في ArcMap أسرع بكثير من الطرق الأخرى؟

أحاول التراكب (تطبيق الاتحاد) متعدد الأضلاع الخاص بي على متعدد الخطوط مع GeoPandas ، ولكن يبدو أن وظيفة GeoPandas overlay تعمل فقط مع (متعدد) المضلع. هل هناك أي طريقة لعمل ذلك باستخدام متعدد الأسطر ومتعدد الأضلاع باستخدام GeoPandas. هذا هو الكود الخاص بي:

ما الناتج الذي تتوقعه من تراكب المضلعات مع الخطوط؟ انقسام الخطوط مع سمات المضلع؟

نعم بالضبط ، هذا ما أريد أن أفعله ، لتقسيم الخطوط بسمات المضلع

هل يمكنك ترميز بعض النماذج الهندسية باستخدام كائنات جميلة؟

نعم ، أعتقد أنه يمكنني موانئ دبي

أحاول التراكب (تطبيق الاتحاد) متعدد الأضلاع الخاص بي على متعدد الخطوط مع GeoPandas ، ولكن يبدو أن وظيفة GeoPandas overlay تعمل فقط مع (متعدد) المضلع. هل هناك أي طريقة لعمل ذلك باستخدام متعدد الأسطر ومتعدد الأضلاع باستخدام GeoPandas. هذا هو الكود الخاص بي:

ما الناتج الذي تتوقعه من تراكب المضلعات مع الخطوط؟ انقسام الخطوط مع سمات المضلع؟

نعم بالضبط ، هذا ما أريد أن أفعله ، لتقسيم الخطوط بسمات المضلع

هل يمكنك ترميز بعض النماذج الهندسية باستخدام كائنات جميلة؟

نعم ، أعتقد أنه يمكنني موانئ دبي

أحاول التراكب (تطبيق الاتحاد) متعدد الأضلاع الخاص بي على متعدد الخطوط مع GeoPandas ، ولكن يبدو أن وظيفة GeoPandas overlay تعمل فقط مع (متعدد) المضلع. هل هناك أي طريقة لعمل ذلك باستخدام متعدد الأسطر ومتعدد الأضلاع باستخدام GeoPandas. هذا هو الكود الخاص بي:

أحاول التراكب (تطبيق الاتحاد) متعدد الأضلاع الخاص بي على متعدد الخطوط مع GeoPandas ، ولكن يبدو أن وظيفة GeoPandas overlay تعمل فقط مع (Multi) polygon. هل هناك أي طريقة لعمل ذلك باستخدام متعدد الأسطر ومتعدد الأضلاع باستخدام GeoPandas. هذا هو الكود الخاص بي:

ما الناتج الذي تتوقعه من تراكب المضلعات مع الخطوط؟ انقسام الخطوط مع سمات المضلع؟

نعم بالضبط ، هذا ما أريد أن أفعله ، لتقسيم الخطوط بسمات المضلع

هل يمكنك ترميز بعض النماذج الهندسية باستخدام كائنات جميلة؟

نعم ، أعتقد أنه يمكنني موانئ دبي

ما الناتج الذي تتوقعه من تراكب المضلعات مع الخطوط؟ انقسام الخطوط مع سمات المضلع؟

نعم بالضبط ، هذا ما أريد أن أفعله ، لتقسيم الخطوط بسمات المضلع

هل يمكنك ترميز بعض النماذج الهندسية باستخدام كائنات جميلة؟

نعم ، أعتقد أنه يمكنني موانئ دبي

ما الناتج الذي تتوقعه من تراكب المضلعات مع الخطوط؟ انقسام الخطوط مع سمات المضلع؟

ما الناتج الذي تتوقعه من تراكب المضلعات مع الخطوط؟ انقسام الخطوط مع سمات المضلع؟

نعم بالضبط ، هذا ما أريد أن أفعله ، لتقسيم الخطوط بسمات المضلع

نعم بالضبط ، هذا ما أريد أن أفعله ، لتقسيم الخطوط بسمات المضلع

هل يمكنك ترميز بعض النماذج الهندسية باستخدام كائنات جميلة؟

هل يمكنك ترميز بعض النماذج الهندسية باستخدام كائنات جميلة؟

نعم ، أعتقد أنه يمكنني موانئ دبي

نعم ، أعتقد أنه يمكنني موانئ دبي


3. العمل مع البيانات النقطية¶

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

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

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

لدي ملف نقطي لصور القمر الصناعي لجزء من UBC في مجلد البيانات الخاص بي والذي قمت بتنزيله من شبكة بيانات العداد. فلنقم بتحميله باستخدام rasterio:

يمكننا البدء في التحقيق في أشياء مثل العرض والارتفاع (بالبكسل / الخلايا) الخاصة بالنقطية:

غالبًا ما تحتوي البيانات النقطية على "نطاقات" تمثل معلومات مختلفة (على سبيل المثال ، تحتوي الصورة الملونة عادةً على نطاقات حمراء وخضراء وزرقاء). تحتوي صورة القمر الصناعي هذه على 4 نطاقات (بالترتيب: أحمر ، أزرق ، أخضر ، الأشعة تحت الحمراء):

يمكننا استيراد النطاق الأول كمصفوفة numpy باستخدام:

ولكن قبل استيراد المزيد من البيانات ، من المفيد رؤية الصورة فقط. أولاً ، سأقوم "باختزال" البيانات النقطية (تقليل الدقة عن طريق زيادة حجم الخلية) لتقليل حجم البيانات وتسريع الأمور قليلاً:

نظرًا لأن بياناتنا عبارة عن مصفوفة (مصفوفات) غير مرتبة ، يمكننا رسمها باستخدام دالة matplotlib plt.imshow ():

بالطبع ، يبدو أكثر واقعية باستخدام جميع القنوات:

لدى rasterio الكثير من الوظائف المتقدمة لمعالجة البيانات النقطية وتخطيطها إذا وجدت الحاجة إلى ذلك. تحقق من الوثائق.


التطوير القائم على الاختبار (TDD)

بعد تحديد تنفيذ المرجع (وظيفة PointWithinPolygon الخاصة بـ Turf.js) ومدخلاتنا في الوظيفة ، كتبت بعد ذلك وحدة TypeScript صغيرة للتشغيل في Node.js واستدعاء Turf.js وطباعة النتائج. لقد حفظت هذه الملفات في ملفات geojson في اختبارات / تركيبات / أرض طبيعية /. يوجد الآن 6 حالات اختبار سنقوم بمراجعتها لاحقًا. المضلعات البسيطة والمعقدة ، وثلاثة أحجام لمجموعات النقاط (10 و 100 و 1000).

هذا مقتطف من أحد اختبارات الوحدة في Rust. لاحظ تطابق النمط في النهاية:


هفرهيو

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

هل هناك دليل قوي على أن نظام مراجعة الأقران للمنح يؤدي بشكل أفضل بكثير من نظام المراجعة العشوائية؟

هل يمكن تطبيق "Power Attack" الخاص بـ Great Weapon Master على الهجمات من تعويذة السلاح الروحي؟

هل أنقذ Deadpool كل X-Force؟

ما مدى أمان الفشل nr مع وحدات بايت التوقف؟

كيف يمكنني تقليل الفجوة بين يسار ويمين cdot باستخدام ماكرو؟

الكود أدناه ، هل هو NDR غير صحيح أم أنه جيد التكوين؟

كيف يمكنني استخدام العنصر المحدد غير الخطي الجديد في الرياضيات 12 لهذه المعادلة؟

لماذا يبدو أحيانًا أن عزف نغمة سماح كمقدمة لنغمة في اللحن يبدو جيدًا؟

ما هو الهيكل المرتبط بجبر المرشح الفائق أحادي؟

كم مرة يحدث التبييت في ألعاب Grandmaster؟

لماذا لم يتم دمج DOSKEY مع COMMAND.COM؟

لماذا نحتاج إلى استخدام نمط تصميم المنشئ بينما يمكننا فعل الشيء نفسه مع أدوات التركيب؟

ما معنى ضبط النفس المحصن؟

لماذا لم يصبح سام لورد أوف هورن هيل؟

تنشئ أجهزة AppleTV شبكة WiFi بديلة للدردشة

سؤال حول الرفض - تأخير تغيير الحالة

ماذا تسمي هذا الجهاز المعدني الغريب الذي يسمح لك برفع الناس؟

ما هي المطابقة الجزئية؟

لماذا يعد تسخين شيء أسرع من طهيه؟

كيف تتعامل مع السلوك العدواني من أحد كبار المطورين؟

هل يمكن رؤية أي شيء من وسط الفراغ Bo & # 246tes؟ كم سيكون الظلام؟

اعثر بسرعة على جميع المضلعات التي تتداخل مع مضلعين أو أكثر في Shapely

Unicorn Meta Zoo # 1: لماذا بودكاست آخر؟ كيف تعثر على مناطق التقاطع للمناطق العازلة المتداخلة في ملف شكل واحد؟ ابحث عن كل المضلعات التي تتداخل مع مضلع آخر وسردها كيفية تحويل ميزات المضلع الصغيرة المتداخلة إلى حلقة داخلية في QGIS unary_union حل المضلعات بناءً على السمات مع Python (بشكل جميل ، fiona)؟ جمع قيم البيانات الجدولية للمناطق التي تتداخل فيها المضلعات المتعددة باستخدام QGIS؟ يعثر ArcGIS على جميع المضلعات التي تتقاطع مع أكثر من مضلع واحد من طبقة أخرى. N المضلعات متعددة المضلعات التي تم إنشاؤها من طبقة Scratch متى تكتشف Shapely's & # 8220polygonize_full & # 8221 تدليًا؟ لا يمكن العثور على المضلعات الموجودة داخل مضلع كبير باستخدام GeoPandas

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

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

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

الشكل 1 (عنوان تفسيري / طبقات)

الشكل 2. (اختيار غير صحيح بواسطة خوارزمية سريعة [إذا كان 0 في الكود] باللون الوردي)

الشكل 3. (الاختيار الصحيح بخوارزمية بطيئة [إذا كان 1 في الكود]


R كـ GIS للاقتصاديين

نعني بالربط المكاني العمليات المكانية التي تتضمن كل ما يلي:

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

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

    يمكننا تصنيف الصلة المكانية إلى أربع فئات حسب نوع الكائنات المكانية الأساسية:

    • المتجه المتجه: بيانات المتجه (الهدف) مقابل بيانات المتجه (المصدر)
    • vector-raster: بيانات المتجه (الهدف) مقابل البيانات النقطية (المصدر)
    • المتجه النقطي: البيانات النقطية (الهدف) مقابل بيانات المتجه (المصدر)
    • النقطية: البيانات النقطية (الهدف) مقابل البيانات النقطية (المصدر)

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

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

    1. النقاط (الهدف) ضد المضلعات (المصدر)
    2. المضلعات (الهدف) مقابل النقاط (المصدر)
    3. المضلعات (الهدف) ضد المضلعات (المصدر)

    3.3.1 الحالة 1: النقاط (الهدف) مقابل المضلعات (المصدر)

    الحالة 1 ، لكل من الملاحظات (النقاط) في البيانات الهدف ، تبحث عن المضلع في الملف المصدر الذي يتقاطع معه ، ثم قم بتعيين القيمة المرتبطة بالمضلع إلى النقطة 65. لتحقيق ذلك ، يمكننا استخدام وظيفة st_join () ، والتي يكون تركيبها كما يلي:

    على غرار التقسيم المكاني ، فإن العلاقة الطوبولوجية الافتراضية هي st_intersects () 66.

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

    فيما يلي خريطة مقاطعات كانساس متباينة الألوان حسب سعر الذرة المزيف (الشكل 3.16):

    الشكل 3.16: خريطة سعر الذرة المزيف على مستوى المحافظة

    بالنسبة لهذا السياق بالذات ، ستقوم الشفرة التالية بالمهمة:

    يمكنك أن ترى من الشكل 3.17 أدناه أن جميع الآبار داخل نفس المقاطعة لها نفس قيمة سعر الذرة.

    الشكل 3.17: خريطة لألوان الآبار متمايزة بسعر الذرة

    3.3.2 الحالة 2: المضلعات (الهدف) مقابل النقاط (المصدر)

    الحالة 2 ، لكل من الملاحظات (المضلعات) في البيانات الهدف ، ابحث عن الملاحظات (النقاط) في الملف المصدر التي تتقاطع معها ، ثم قم بتعيين القيم المرتبطة بالنقاط إلى المضلع. نستخدم نفس الوظيفة: st_join () 67.

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

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

    بالطبع ، من السهل الحصول على أنواع أخرى من الإحصائيات عن طريق تعديل جزء التلخيص () ببساطة.

    ومع ذلك ، يمكن إجراء هذه العملية المكونة من خطوتين فعليًا في خطوة واحدة باستخدام التجميع () ، حيث تحدد كيف تريد التجميع باستخدام خيار FUN على النحو التالي:

    لاحظ أنه تم تطبيق الدالة المتوسطة () على جميع الأعمدة في KS_wells ، بما في ذلك رقم معرف الموقع. لذلك ، قد ترغب في تحديد المتغيرات التي تريد ضمها قبل تطبيق وظيفة التجميع () على النحو التالي:

    3.3.3 الحالة 3: المضلعات (الهدف) مقابل المضلعات (المصدر)

    في هذه الحالة ، سيعيد st_join (target_sf، source_sf) جميع توليفات المضلع والمضلعات المتقاطعة الفريدة مع إرفاق معلومات المضلع من source_sf.

    سنستخدم فدان الذرة على مستوى المقاطعة في ولاية أيوا في 2018 من USDA NASS 68 والوحدات الهيدرولوجية 69 هدفنا هنا هو العثور على فدان الذرة بواسطة وحدات HUC استنادًا إلى بيانات فدان الذرة على مستوى المقاطعة 70.

    نقوم أولاً باستيراد بيانات فدان الذرة في ولاية أيوا:

    فيما يلي خريطة مقاطعات أيوا متمايزة بالألوان حسب فدان الذرة (الشكل 3.18):

    الشكل 3.18: خريطة مقاطعات أيوا متباينة الألوان حسب المساحة المزروعة بالذرة

    الآن قم باستيراد بيانات وحدات HUC:

    هنا خريطة وحدات HUC (الشكل 3.19):

    الشكل 3.19: خريطة لوحدات HUC التي تتقاطع مع حدود ولاية أيوا

    فيما يلي خريطة لمقاطعات آيوا مع وحدات HUC متراكبة في الأعلى (الشكل 3.20):

    الشكل 3.20: خريطة وحدات HUC متراكبة على المقاطعات في Iowas

    سينتج الارتباط المكاني ما يلي.

    تصبح كل مجموعة من مجموعات HUC-County المتقاطعة ملاحظة مع الهندسة الناتجة عنها مثل هندسة وحدة HUC. لرؤية هذا ، دعنا نلقي نظرة على إحدى وحدات HUC.

    وحدة HUC مع HUC_CODE == 10170203 تتقاطع مع أربعة مقاطعات.

    يوضح الشكل 3.21 خريطة الملاحظات الأربعة.

    الشكل 3.21: خريطة لوحدة HUC

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

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

    يمكنك رؤية مثال عملي لهذه الحالة قيد التنفيذ في العرض التوضيحي 1 من الفصل 1.↩︎

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

    يمكنك رؤية مثال عملي لهذه الحالة قيد التنفيذ في العرض التوضيحي 2 بالفصل 1.↩︎

    راجع الفصل 9.1 للتعرف على كيفية تنزيل بيانات Quick Stats من داخل R.↩︎

    انظر هنا للحصول على شرح لما هم عليه. لا تحتاج حقًا إلى معرفة وحدات HUC لفهم ما تم القيام به في هذا القسم

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


    شاهد الفيديو: درس المضلعات (شهر اكتوبر 2021).