أكثر

أطوال الخطوط داخل مخازن فردية ولكن متداخلة؟

أطوال الخطوط داخل مخازن فردية ولكن متداخلة؟


لدي مجموعة من النقاط التي أنشأت لها مخزنًا مؤقتًا يبلغ طوله 12 ميلًا.

في النهاية ، أود أن أعرف عدد الكيلومترات من الطريق الموجودة داخل كل منطقة عازلة على حدة؟

المشكلة التي أراها في المستقبل هي أن المخازن المؤقتة تتداخل.

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


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

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

  2. أنت الآن بحاجة إلى تقسيم طرقك على جميع حدودك العازلة ، أو على الأقل طريقة ما لتحديد الأجزاء (والأجزاء) الموجودة في أي منطقة عازلة. لا يمكنك استخدام Union (والذي سيكون حلاً جيدًا نظرًا لإنتاجه) لأنه لا يتطلب سوى المضلعات. لن تعمل الصلة المكانية أيضًا في هذه الحالة لأنه بينما يمكنها تعيين أجزاء من الطريق لعدة مخازن مؤقتة ، فإنها لن تقطع الطرق عند الحدود. لكن لديك خياران آخران.

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

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

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

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


حسنًا ، هذا استخدام رائع لـ SQL Spatial. تستخدم هذه الإجابة MS SQL Spatial ، ولكن يمكن إجراؤها بنفس السهولة باستخدام PostGIS وأعتقد أن Oracle Spatial (لم تستخدمه مطلقًا ...)

في هذا المثال ، استخدمت نقاط المدرسة من DPS (آسف لا يمكنني العثور عليها عبر الإنترنت في الوقت الحالي ...) وتم تحميل خطوط وسط الشوارع من City and County of Denver في قاعدة بيانات SQL Server ... مرة أخرى ، توفر PostGIS الإصدار المجاني من هذا الحل ، ولكن المفهوم هو أن SQL المكانية يتم التعامل معها بشكل جيد للتعامل مع هذا النوع من الاستعلام.

هذا هو الاستعلام الذي استخدمته:

حدد BuffInt.SCHOOL_NAM_SHORT كـ NameOfInputBuffer ، Round ((GEOMETRY :: UnionAggregate (shape) .STLength ()) / 5280، 2) كـ LengthInBuffer_Miles ، GEOMETRY :: UnionAggregate (shape) كـ LineGeometry.shape. الشكل) كشكل ، pointBuff.SCHOOL_NAM_SHORT من (حدد a.shape.STBuffer (3000) كشكل ، a.SCHOOL_NAM_SHORT من GISWork.dpsdata.AllSchools_201314 as a) كـ pointBuff ، GISWork.dpsdata.CCD_Street_Centerlines as b where. (b.shape) = 1) كمجموعة BuffInt بواسطة buffInt.SCHOOL_NAM_SHORT

هذا في الأساس عبارة عن عدد قليل من الاختيارات الفرعية:

1: إنشاء المخازن المؤقتة حول نقاط الإدخال (pointBuff)
2: خذ INTERSECTION و INTERSECT (بشكل أساسي عملية Clip) للشوارع والنقاط المخزنة (BuffInt)
3: تجميع (اتحاد) هندسة كل مجموعة من الشوارع المقطوعة ، وتجميعها حسب اسم مدرستها (حقل الإخراج: LineGeometryInBuffer)
4: ثم قم أيضًا بتحويل هذه الهندسة الموحدة إلى الطول باستخدام STLength () (الحقل: LineGeometryInBuffer)
5: احصل على اسم نقطة الإدخال التي تم نقلها من خلال جميع التحديدات الفرعية حتى أتمكن بعد ذلك من إجراء بعض الملخصات على قيم المخرجات

هذا ما يبدو عليه الجدول:

فيما يلي صورة للخطوط الموجودة داخل كل مخزن مؤقت موحد معًا:

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

أنا أحب SQL المكاني !!!


شاهد الفيديو: Types of lines-أنواع الخطوط