أكثر

الوصول إلى الهندسة باستخدام SearchCursor في ArcPy؟

الوصول إلى الهندسة باستخدام SearchCursor في ArcPy؟


أحاول كتابة نص يقوم بقص جميع فئات الميزاتقائمة fcبالصفوف المتتالية لميزة المقطع. أنا أستخدم Arcpy مع ArcGIS 10.0

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

import arcpy، os arcpy.env.workspace = r'Z:  Documents  SIG  tests  synthese_tocorrect.gdb 'fcList = arcpy.ListFeatureClasses () # فئة المعالم المراد قصها بواسطة كل من المضلع الخاص بطبقة القصاصة = r'Z:  Documents  SIG  tests  decoupe.shp '# طبقة القصاصة ذات صفوف متعددة المضلعات = عدد arcpy.SearchCursor (pochoir) = 0 outFolder = r'Z:  Documents  SIG  الاختبارات  طلعات جوية لـ fc في fcList: للصف في الصفوف: p = row.Shape # أحاول الحصول على هندسة الصف الحالي فقط ولكني أعتقد أنه لا يعمل Arcpy.MakeFeatureLayer_management (p، "ptmp") # ... الإخراج فارغ بينما يجب أن يكون هو المضلع الأول المقابل للصف الأول من طبقة المقطع. arcpy.SelectLayerByLocation_management ("ptmp"، "INTERSECT"، fc) arcpy.CopyFeatures_management ("ptmp"، "ptmpselect") nbrow = arcpy.GetCount_management ("ptmpselect") if nbrow> 0: secteur = row.sect # لكل مضلع من طبقة المقطع out_poly = (outFolder، fc + "_" + str (مقطع) + "_" + string (count)) arcpy.ClipAnalysis (fc، "ptmpselect"، out_poly) arcpy.DeleteManagement ("ptmp ") arcpy.DeleteManagement (" ptmpselect ") count = count + 1 else: secteur = row.secteur # أعلم أنني أكرر نفسي. أي فكرة لتجنب ذلك؟ out_poly = (outFolder، fc + "_" + str (مقطع) + "_" + سلسلة (عدد)) del row، rows، pochoir، count، outFolder، fc، fcList

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

شفرة:

import arcpy، os arcpy.env.workspace = r'Z:  Documents  SIG  tests  synthese_tocorrect.gdb 'fcList = arcpy.ListFeatureClasses () # فئة المعالم المراد قصها بواسطة كل من مضلع طبقة القصاصة = r'Z:  Documents  SIG  الاختبارات  decoupe.shp '# طبقة المقطع ذات المضلعات المتعددة outFolder = r'Z:  Documents  SIG  tests  sorties' fcList = arcpy.ListFeatureClasses () arcpy.MakeFeatureLayer_management (pochoir، "pochoirlyr") #Create layer للسماح بالتحديد OIDField = arcpy.Describe ("pochoirlyr"). OIDFieldName # احصل على اسم حقل OID لـ fc في fcList: arcpy.MakeFeatureLayer_management (os.path.join (arcpy.env.workspace، fc)، "lyr") pocursor = arcpy.SearchCursor ("pochoirlyr") لـ porow in pocursor: sql = '"' + OIDField + '" =' + str (row.getValue (OIDFalue)) #SQL لتحديد ميزة واحدة arcpy.SelectLayerByAttribute_management ("pochoirlyr"، ""، sql) #Select polygon feature by OID arcpy.SelectLayerByLocation_management ("lyr"، ""، "pochoirlyr") #Select طبقة المعالم المراد قصها عن طريق التحديد ed clip if arcpy.Describe ("lyr"). FIDSet: #Check for select out_poly = (outFolder، fc + "_" + str (row.getValue (OIDField))) #Output feature class arcpy.ClipAnalysis (fc، "pochoirlyr"، out_poly) del porow del pocursor arcpy.Delete_management ("lyr") arcpy.SelectLayerByAttribute_management ("pochoirlyr"، "CLEAR_SELECTION")

لاحظ أنه يتم تنفيذ المقطع فقط في حالة تداخل الميزات.


# أعلم أنني أكرر نفسي. أي فكرة لتجنب ذلك؟

يتحركسيكتور = row.secteurخارج عبارات if / else (قبلإذا كان nbrow> 0:).


يتحركالصفوف = arcpy.SearchCursor (pochoir)داخل حلقة for (بعدلـ fc في قائمة fc:)


أعتقد أنك لا تصل إلى الهندسة بشكل صحيح. هندسة القراءة المرجعية والعمل مع الهندسة في بايثون.

# يخبرك شكل الحقل اسم pochoir shapeName = arcpy.Describe (pochoir). يقوم shapeFieldName # بالفعل بتخزين الهندسة في مكان ما p = row.getValue (shapeName)

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

للصف في الصفوف: id = row.secteur where_clause = "Sectioneur = '{}'". format (id) arcpy.MakeFeatureLayer_management (pochoir، "ptmp"، where_clause)

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

النتيجة = arcpy.GetCount_management ("ptmpselect") nbrow = int (result.getOutput (0)) if nbrow> 0:…

أو ما يلي فقط (على الرغم من أنني أوصي للمبتدئين بإبقاء الأشياء أكثر انتشارًا ، كما هو موضح أعلاه):

النتيجة = arcpy.GetCount_management ("ptmpselect") إذا كانت int (result.getOutput (0))> 0:…

لتحسين القراءة ، أقترح:

outName = "{0} _ {1} _ {2}". تنسيق (fc ، مقطع ، عدد)

ثم استخدم outName بدلاً منfc + "_" + str (مقطع) + "_" + سلسلة (عدد)مرتين.


المضلعات تتحرك بشكل عشوائي وتدور

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

لدينا حاليًا شبكة ممر تستند إلى التكوين الحالي للمناطق المحمية ونود مقارنة شبكة الممر هذه بتكوينات المناطق المحمية العشوائية.

هل هذا ممكن؟ هذا حاليًا خارج خبرتي (لكنني أرغب في التعلم) وأبحث عن اتجاه / مصطلحات / مفاهيم / إلخ. يجب أن أكون مدركًا لأبدأ.

كل شيء ممكن. يمكنك تحقيق ذلك عبر برمجة Python النصية.

تحويل الميزات: لا أعتقد أن هناك طريقة غير تقليدية للقيام بذلك ، على الرغم من أنه يمكنك استخدام "اتجاه زائف للشرق" و "اتجاه شمال خاطئ" في ملف الإسقاط المخصص للقيام بذلك. أيضًا ، لقد رأيت نصوصًا تم نشرها على المنتدى تعمل على تغيير الميزات عن طريق الإزاحة المنهجية (ولكن لا يبدو أنها تحدد موقعها الآن). الفكرة الأساسية هي قراءة كل الأشكال الهندسية ثم كتابة بعض الميزات الجديدة حيث يكون لكل الرؤوس إزاحة في إحداثياتها x / y (لنقل مثل 20 قدمًا إلى الشمال و 37 قدمًا إلى الشرق).

ميزة التدوير: مرة أخرى ، لا أعتقد أن هناك أداة خارج الصندوق للقيام بذلك (بخلاف أداة التدوير المتاحة عبر جلسة التحرير). يمكنك كتابة كود بايثون للقيام بذلك. على الرغم من أن الرياضيات للقيام بذلك تفوق مهاراتي في الهندسة الفورية بالتأكيد. توجد أداة مربع أدوات لتدوير البيانات النقطية: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000007s000000 وأعتقد أن هناك بعض أساليب نوع ArcObjects للتعامل مع دوران المتجه (مثل أداة التحرير). قد يكون هذا صعبًا نوعًا ما في Python - وربما يكون أفضل لـ ArcObjects إذا كانت هناك بالفعل طريقة للقيام بتدوير الميزات هناك.

لذا أفترض أن هذا نوع من تحسين مونت كارلو الذي تحاول ابتكاره؟ http://en.wikipedia.org/wiki/Monte_Carlo_method

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


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

  1. قم بإنشاء مؤشر للانتقال من خلال ملف شكل الإدخال input_shp ، وسحب سمتين فقط (معرف الكائن والمساحة الإجمالية).
  2. حلقة من خلال ملف الشكل صف واحد في كل مرة.
  3. لكل صف ، اطبع الصف [0] (معرف الكائن) والصف [1] (المساحة الإجمالية).

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

(ملاحظة أخيرة: ستكون السمة shape @ area في وحدات إسقاط البيانات. انتبه لهذا إذا كنت تحصل على أرقام غير متوقعة.)


استخراج صفحات PDF وإعادة تسميتها بناءً على نص في كل صفحة (Python)

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

ال بي دي إفتحتوي على كتب خرائط تم إنتاجها باستخدام صفحات تعتمد على البيانات بتنسيق ArcGIS، كان من المتصور أنه يمكنني أيضًا إعادة فتح النسخة الأصلية MXDs وأعد تصدير دفتر الخرائط كصفحات فردية وتسمية مناسبة بناءً على اسم المستند في جدول البيانات الجدولية. لأنني لم أكن منشئ أي من هؤلاء بي دي إفs وجميعهم جاءوا من فرق مختلفة ، يبحثون عن الصحيح MXDسيكون التصدير مرهقًا ويستغرق وقتًا طويلاً أيضًا. يجب أن تكون هناك طريقة أكثر إثارة للاهتمام وفعالية من حيث الوقت & # 8230

& # 8230A بحث سريع عبر جوجل على بعض بايثون الوحدات النمطية ولدي ما أحتاجه لإكمال مهمتي بطريقة أكثر آلية وفعالية من حيث الوقت. كنت بحاجة إلى ثلاث وحدات
(1) نظام التشغيل & # 8211 لاجتياز الدلائل والملفات ولإعادة تسمية الملفات
(2) PyPDF2 & # 8211 للقراءة / الكتابة بي دي إف وكذلك لاستخراج النص من الصفحات
(3) إعادة & # 8211 وحدة التعبير العادي للعثور على النص المطلوب لإعادة تسمية الملف.
كانت الخطوة التالية هي كتابة بعض الأكواد الزائفة لتحديد ما يجب تحقيقه ومن ثم الحصول على الترميز & # 8230

لنبدأ & # 8217s باستيراد الوحدات الموجودة أعلى البرنامج النصي.

حدد وظيفة لاستخراج الصفحات. ستأخذ هذه الوظيفة معلمتين المسار إلى الدليل الجذر والمسار إلى مجلد لاستخراج الصفحات إليه. يجب أن يكون & # 8216extract_to_folder & # 8217 على نفس المستوى أو أعلى من الدليل الجذر. استخدم نظام التشغيل الخاص بك لإنشاء المجلد المسمى & # 8216extracted & # 8217 وأيضًا إنشاء مجلد آخر يسمى & # 8216renamed & # 8217.

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

ثم نفتح ذلك بي دي إف في وضع القراءة.

لكل صفحة في بي دي إف يتم استخراج الصفحة وحفظها كملف بي دي إف ملف في المجلد & # 8216extracted & # 8217. تم الحصول على المقتطف أدناه من stackoverflow.

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

حدد وظيفة تسمى & # 8216rename_pdfs & # 8217 تأخذ وسيطتين للمسار إلى المجلد حيث توجد الصفحات المستخرجة والمجلد المعاد تسميته. حلقة من خلال كل بي دي إف وإنشاء مسار ملف لكل واحد.

افتح كل ملف بي دي إف في وضع القراءة & # 8230

الآن نقوم باستخراج النص من الصفحة.

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

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

آخر شيء يجب فعله هو استخدام رقم المستند لإعادة تسمية ملف بي دي إف

هذا يكمل الوظيفتين المطلوبتين لإكمال المهمة.

قم بإعداد المتغيرات المطلوبة لمعلمات الوظيفة & # 8230

& # 8230 ثم استدعاء كل وظيفة.

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

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


ー ド の サ ン プ ル

مثال على الشبكة 1

سيقرأ البرنامج النصي التالي اسم ونوع خصائص الشبكات في مساحة عمل موجودة ويحذف الشبكات من مساحة العمل باستخدام الخصائص كمعلمات في أداة المعالجة الجغرافية Delete Grids و Graticules.

مثال على الشبكة 2

يقوم هذا النموذج بإنشاء كائن الشبكة من ملف XML للشبكة والتحقق من النوع والقياس.

مثال على الشبكة 3

يستخدم هذا البرنامج النصي النموذجي خاصية الإسناد المكاني الأساسي لكائن الشبكة من ملف .xml موجود لإنشاء مجموعة بيانات ميزة وإنشاء شبكة باستخدام أداة المعالجة الجغرافية Make Grids And Graticules Layer.


إعادة تنسيق جميع أسماء الطبقات في مستند ArcMap

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

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

وهذا هو السبب في أنني ألجأ إلى بايثون بدلاً من ذلك.

#
# @ تاريخ 14/08/2015
# @ المؤلف سيندي ويليامز
#
# تنسيق أسماء جميع الطبقات في الخريطة بسرعة
# وثيقة. في هذا المثال ، جزء الاسم السابق
# تتم إزالة أول نقطة كاملة ، ويتم استبدال الشرطات السفلية
# مسافات ، يتم استخدام regex لإدخال مسافات قبل الأحرف الكبيرة
# ويتم تحويل السلسلة إلى حالة الأحرف المناسبة.
#
# للاستخدام في نافذة Python في ArcMap.
#
استيراد آركبي
إعادة الاستيراد
mxd = أركبي. رسم الخرائط . MapDocument (& quotCURRENT & quot)
ليرس = أركبي. رسم الخرائط . طبقات القائمة (mxd)
لـ lyr في lyrs:
new_name_replaced = لير. اسم . انقسام (& quot. & quot) [1]. استبدال (& quot_ & quot، & quot & quot)
new_name_spaced = re. sub (r & quot ( w) ([A-Z]) & quot، r & quot 1 2 & quot، new_name_replaced)
لير. الاسم = new_name_spaced. لقب ()
أركبي. RefreshTOC ()

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


الخصائص

إرجاع المرجع المكاني الأساسي لنظام الإحداثيات الأساسي للشبكة.

تُرجع طبقة المجموعة المُنشأة من كائن الشبكة. تحتوي طبقة المجموعة على جميع مكونات الشبكة الفرعية كطبقات فرعية. هذا هو نفس طبقة مجموعة الإخراج من أداة المعالجة الجغرافية Make Grids And Graticules Layer.

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

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

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


المرافق التي يتم إنشاء مناطق الخدمة حولها.

مجموعة ميزات المرافق لها ثلاث سمات:

حقل المعرف الذي يديره النظام.

يشير الحقل الهندسي إلى الموقع الجغرافي لكائن تحليل الشبكة.

اسم المنشأة. إذا كان الاسم فارغًا أو فارغًا أو خاليًا ، فسيتم إنشاء الاسم تلقائيًا في وقت الحل.

يحدد حجم وعدد مضلعات منطقة الخدمة المراد إنشاؤها لكل منشأة. يتم تحديد الوحدات حسب قيمة وحدات الاستراحة.

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

يمكن تعيين فواصل متعددة الأضلاع لإنشاء مناطق خدمة متحدة المركز لكل منشأة. على سبيل المثال ، للعثور على مناطق خدمة ذات ميلين وثلاثة وخمسة أميال لكل منشأة ، أدخل 2 3 5 ، وافصل القيم بمسافة. عيّن وحدات الفاصل إلى أميال وتأكد من أنك قد اخترت سمة شبكة تعتمد على المسافة لمعلمة سمة المسافة.

وحدات معلمة Break Values.

  • متر
  • كيلومترات
  • قدم
  • ساحات
  • اميال
  • ناوتيكال مايلز
  • ثواني
  • الدقائق
  • ساعات
  • أيام

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

تقوم الأداة بتحويل الوحدات الضرورية عندما تختلف قيمة وحدات الفاصل عن وحدات سمة تكلفة المسافة أو الوقت المقابلة.

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

مساحة عمل الإخراج واسم ميزات الإخراج. يجب أن تكون مساحة العمل هذه موجودة بالفعل. مساحة عمل الإخراج الافتراضية هي in_memory.

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

  • TRAVEL_FROM - يتم إنشاء منطقة الخدمة في الاتجاه بعيدًا عن المرافق.
  • TRAVEL_TO —يتم إنشاء منطقة الخدمة في الاتجاه نحو المرافق.

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

  • يمثل وقت المغادرة إذا تم تعيين اتجاه السفر للسفر بعيدًا عن المرافق.
  • يمثل وقت الوصول إذا تم تعيين اتجاه السفر للسفر نحو المرافق.

يجب أن تتضمن مجموعة بيانات الشبكة الخاصة بك بيانات حركة المرور حتى يكون لهذه المعلمة أي تأثير.

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

سياسة U-Turn عند التقاطعات. يعني السماح بالدوران على شكل حرف U أن المحلل يمكنه الالتفاف عند تقاطع طرق والعودة مرة أخرى في نفس الشارع. نظرًا لأن التقاطعات تمثل تقاطعات الشوارع والطرق المسدودة ، فقد تتمكن المركبات المختلفة من الالتفاف عند بعض التقاطعات ولكن ليس عند البعض الآخر - يعتمد ذلك على ما إذا كان التقاطع يمثل تقاطعًا أو طريقًا مسدودًا. للتوافق ، يتم تحديد معلمة نهج U-turn ضمنيًا من خلال عدد الحواف المتصلة بالوصلة ، والتي تُعرف باسم تكافؤ الوصلة. يتم سرد القيم المقبولة لهذه المعلمة أدناه كل منها يليه وصف لمعناها من حيث تكافؤ الوصلات.

  • ALLOW_UTURNS - يُسمح بالدوران U عند التقاطعات مع أي عدد من الحواف المتصلة. هذه هي القيمة الافتراضية.
  • NO_UTURNS - يحظر الدوران على شكل U في جميع التقاطعات ، بغض النظر عن تكافؤ الوصلات. لاحظ ، مع ذلك ، أن المنعطفات U لا تزال مسموحًا بها في مواقع الشبكة حتى عند اختيار هذا الإعداد ، ومع ذلك ، يمكنك تعيين خاصية CurbApproach لمواقع الشبكة الفردية لحظر U-turn هناك أيضًا.
  • ALLOW_DEAD_ENDS_ONLY —- يُحظر استخدام المنعطفات U في جميع التقاطعات ، باستثناء تلك التي تحتوي على حافة مجاورة واحدة (طريق مسدود).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY - يُحظر الدوران للخلف عند التقاطعات حيث تلتقي حافتان متجاورتان تمامًا ولكن يُسمح بها عند التقاطعات (تقاطعات مع ثلاثة حواف متجاورة أو أكثر) ونهايات مسدودة (التقاطعات ذات حافة متجاورة واحدة بالضبط). في كثير من الأحيان ، تحتوي الشبكات على تقاطعات خارجية في منتصف أجزاء الطريق. يمنع هذا الخيار المركبات من الدوران للخلف في هذه المواقع.

إذا كنت بحاجة إلى سياسة U-turn محددة بشكل أكثر دقة ، ففكر في إضافة مقيِّم لتأخير الانعطاف العالمي إلى سمة تكلفة الشبكة ، أو تعديل إعداداتها إن وجدت ، وإيلاء اهتمام خاص لتكوين المنعطفات العكسية. انظر أيضًا إلى إعداد خاصية CurbApproach لمواقع الشبكة الخاصة بك.

يتم تجاوز قيمة هذه المعلمة عند تعيين وضع السفر (Travel_Mode في Python) على أي قيمة بخلاف القيمة المخصصة.

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

حقل المعرف الذي يديره النظام.

يشير الحقل الهندسي إلى الموقع الجغرافي لكائن تحليل الشبكة.

  • تقييد (0) - يمنع عبور الحاجز. هذه هي القيمة الافتراضية.
  • التكلفة المضافة (2) - يؤدي اجتياز الحاجز إلى زيادة تكلفة الشبكة بالمبلغ المحدد في حقلي الوقت الإضافي وحقول المسافة الإضافية.

استخدم القيمة 0 للتقييد و 2 للتكلفة المضافة.

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

الوحدة لقيمة هذا الحقل هي نفسها الوحدات المحددة لوحدات الفواصل.

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

حقل المعرف الذي يديره النظام.

يشير الحقل الهندسي إلى الموقع الجغرافي لكائن تحليل الشبكة.

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

حقل المعرف الذي يديره النظام.

يشير الحقل الهندسي إلى الموقع الجغرافي لكائن تحليل الشبكة.

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

  • تقييد (0) - يمنع عبور أي جزء من الحاجز. هذه هي القيمة الافتراضية.
  • التكلفة المقاسة (1) - يقيس مقاومة الحواف الأساسية بضربها في قيمة خاصية ScaledCostFactor. إذا تم تغطية الحواف جزئيًا بواسطة الحاجز ، يتم تقسيم الممانعة ومضاعفتها.

استخدم القيمة 0 للتقييد و 1 للتكلفة المقاسة.

يشير ScaledCostFactor إلى مقدار ضرب الممانعة عندما تمر منطقة خدمة عبر الحاجز.

يحدد سمة تكلفة الشبكة التي سيتم استخدامها عندما تكون قيمة وحدات الفاصل هي وحدة زمنية.

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

يتم تجاوز قيمة هذه المعلمة عند تعيين وضع السفر (Travel_Mode في Python) على أي قيمة بخلاف القيمة المخصصة.

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

يتم تجاوز قيمة هذه المعلمة عند تعيين وضع السفر (Travel_Mode في Python) على أي قيمة بخلاف القيمة المخصصة.

يحدد سمة تكلفة الشبكة التي سيتم استخدامها عندما تكون قيمة وحدات الفاصل هي وحدة مسافة.

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

يتم تجاوز قيمة هذه المعلمة عند تعيين وضع السفر (Travel_Mode في Python) على أي قيمة بخلاف القيمة المخصصة.

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

يتم تجاوز قيمة هذه المعلمة عند تعيين وضع السفر (Travel_Mode في Python) على أي قيمة بخلاف القيمة المخصصة.

  • تم التحديد — استخدم سمة التدرج الهرمي للتحليل. يؤدي استخدام التسلسل الهرمي إلى تفضيل الحلول للحواف ذات الترتيب الأعلى على الحواف ذات الترتيب الأدنى. تكون الحلول الهرمية أسرع ، ويمكن استخدامها لمحاكاة تفضيل السائق الذي يختار السفر على الطرق السريعة عبر الطرق المحلية عندما يكون ذلك ممكنًا - حتى لو كان ذلك يعني رحلة أطول. يتم تمكين هذا الخيار فقط إذا كانت مجموعة بيانات شبكة الإدخال تحتوي على سمة التدرج الهرمي.
  • لم يتم التحقق منه — لا تستخدم سمة التدرج الهرمي للتحليل. ينتج عن عدم استخدام التسلسل الهرمي مسارًا دقيقًا لمجموعة بيانات الشبكة.

يتم تعطيل المعلمة إذا لم يتم تحديد سمة التدرج الهرمي في مجموعة بيانات الشبكة المستخدمة لإجراء التحليل.

يمكنك استخدام معلمة Force Hierarchy Beyond Distance لإجبار المحلل على استخدام التسلسل الهرمي حتى إذا تم تعيين استخدام التسلسل الهرمي في التحليل على false.

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

  • USE_HIERARCHY - استخدم سمة التدرج الهرمي للتحليل. يؤدي استخدام التسلسل الهرمي إلى تفضيل الحلول للحواف ذات الترتيب الأعلى على الحواف ذات الترتيب الأدنى. تكون الحلول الهرمية أسرع ، ويمكن استخدامها لمحاكاة تفضيل السائق الذي يختار السفر على الطرق السريعة عبر الطرق المحلية عندما يكون ذلك ممكنًا - حتى لو كان ذلك يعني رحلة أطول. يكون هذا الخيار صالحًا فقط إذا كانت مجموعة بيانات شبكة الإدخال تحتوي على سمة تسلسل هرمي.
  • NO_HIERARCHY —لا تستخدم سمة التدرج الهرمي للتحليل. ينتج عن عدم استخدام التسلسل الهرمي مسارًا دقيقًا لمجموعة بيانات الشبكة.

لا يتم استخدام المعلمة إذا لم يتم تحديد سمة التدرج الهرمي في مجموعة بيانات الشبكة المستخدمة لإجراء التحليل. في مثل هذه الحالات ، استخدم "#" كقيمة المعلمة.

يمكنك استخدام المعامل Force_Hierarchy_Beyond_Distance لإجبار الحل على استخدام التسلسل الهرمي حتى إذا تم تعيين Use_Hierarchy_in_Analysis على False.

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

يشير إلى سمات تقييد الشبكة التي يتم احترامها أثناء وقت الحل.

يتم تجاوز قيمة هذه المعلمة عند تعيين وضع السفر (Travel_Mode في Python) على أي قيمة بخلاف القيمة المخصصة.

تحدد قيم المعلمات لسمات الشبكة التي تحتوي على معلمات. تحتوي مجموعة السجلات على عمودين يعملان معًا لتعريف المعلمات بشكل فريد وعمود آخر يحدد قيمة المعلمة.

يتم تجاوز قيمة هذه المعلمة عند تعيين وضع السفر (Travel_Mode في Python) على أي قيمة بخلاف القيمة المخصصة.

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

حقل المعرف الذي يديره النظام.

اسم سمة الشبكة التي يتم تعيين معلمة السمة الخاصة بها بواسطة صف الجدول.

اسم معلمة السمة التي يتم تعيين قيمتها بواسطة صف الجدول. (لا يمكن تحديث معلمات نوع الكائن باستخدام هذه الأداة.)

القيمة التي تريدها لمعلمة السمة. إذا لم يتم تحديد قيمة ، يتم تعيين معلمة السمة على قيمة خالية.

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

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

An SQL expression used to select a subset of source features that limits which network elements facilities can be located on. The syntax for this parameter consists of two parts: the first is the source feature class name (followed by a space), and the second is the SQL expression. To write an SQL expression for two or more source feature classes, separate them with a semicolon.

To ensure facilities are not located on limited-access highways, for example, write an SQL expression like the following to exclude those source features: "Streets" "FUNC_CLASS not in('1', '2')" .

Note that barriers ignore the feature locator WHERE clause when loading.

Choose how service area polygons are generated when multiple facilities are present in the analysis.

  • NO_MERGE —Creates individual polygons for each facility. The polygons can overlap each other.
  • NO_OVERLAP — Creates individual polygons such that a polygon from one facility cannot overlap polygons from other facilities furthermore, any portion of the network can only be covered by the service area of the nearest facility.
  • MERGE — Creates and joins the polygons of different facilities that have the same break value.

Specifies the option to create concentric service area polygons as disks or rings. This option is applicable only when multiple break values are specified for the facilities.

  • RINGS —Does not include the area of the smaller breaks. This creates polygons going between consecutive breaks. Use this option if you want to find the area from one break to another. For instance, if you create five- and 10-minute service areas, then the 10-minute service area polygon will exclude the area under the five-minute service area polygon.
  • DISKS — Creates polygons going from the facility to the break. For instance, if you create five- and 10-minute service areas, then the 10-minute service area polygon will include the area under the five-minute service area polygon.

Specifies the option to create detailed or generalized polygons.

  • SIMPLE_POLYS —Creates generalized polygons which are generated quickly and are fairly accurate. هذا هو الافتراضي.
  • DETAILED_POLYS —Creates detailed polygons which accurately model the service area lines and may contain islands of unreached areas. This option is much slower than generating generalized polygons. This option isn't supported when using hierarchy.

Specifies the distance within which the service area polygons are trimmed. This is useful when your data is very sparse and you don't want the service area to cover large areas where there are no features.

No value or a value of 0 for this parameter specifies that the service area polygons should not be trimmed. The parameter value is ignored when using hierarchy.

Specify by how much you want to simplify the polygon geometry.

Simplification maintains critical points of a polygon to define its essential shape and removes other points. The simplification distance you specify is the maximum allowable offset from the original polygon from which the simplified polygon can deviate. Simplifying a polygon reduces the number of vertices and tends to reduce drawing times.

Limits how many facilities can be added to the service area analysis.

This parameter helps you govern the amount of processing that occurs when solving. For example, you could assign a low value to this parameter for a free version of the service you are creating and use a higher value for a paid-subscription version of the service.

A null value indicates there is no limit.

Limits how many breaks can be added to the service area analysis.

This parameter helps you govern the amount of processing that occurs when solving. For example, you could assign a low value to this parameter for a free version of the service you are creating and use a higher value for a paid-subscription version of the service.

A null value indicates there is no limit.

Limits how many features can be affected by point barriers.

This parameter helps you govern the amount of processing that occurs when solving. For example, you could assign a low value to this parameter for a free version of the service you are creating and use a higher value for a paid-subscription version of the service.

A null value indicates there is no limit.

Limits how many features can be affected by line barriers.

This parameter helps you govern the amount of processing that occurs when solving. For example, you could assign a low value to this parameter for a free version of the service you are creating and use a higher value for a paid-subscription version of the service.

A null value indicates there is no limit.

Limits how many features can be affected by polygon barriers.

This parameter helps you govern the amount of processing that occurs when solving. For example, you could assign a low value to this parameter for a free version of the service you are creating and use a higher value for a paid-subscription version of the service.

A null value indicates there is no limit.

Limits how large the value of the Break Value parameter can be when solving time-based service areas.

This parameter helps you govern the amount of processing that occurs when solving. For example, you could assign a low value to this parameter for a free version of the service you are creating and use a higher value for a paid-subscription version of the service.

A null value indicates there is no limit.

Limits how large the value of the Break Value parameter can be when solving distance-based service areas.

This parameter helps you govern the amount of processing that occurs when solving. For example, you could assign a low value to this parameter for a free version of the service you are creating and use a higher value for a paid-subscription version of the service.

A null value indicates there is no limit.

Specifies the break value after which the solver will force hierarchy even if hierarchy was not enabled when solving time-based service areas.

Solving service areas for high break values while using the network's hierarchy tends to incur much less processing than solving the same service areas without using the hierarchy. This parameter helps you govern the amount of processing that occurs when solving.

A null value indicates that the hierarchy will never be enforced and the value of the Use Hierarchy in Analysis parameter will always be honored. If the input network dataset does not support hierarchy, specifying a value for this parameter will result in an error. A null value should be used in this case.

Specifies the break value after which the solver will force hierarchy even if hierarchy was not enabled when solving distance-based service areas.

Solving service areas for high break values while using the network's hierarchy tends to incur much less processing than solving the same service areas without using the hierarchy. This parameter helps you govern the amount of processing that occurs when solving.

A null value indicates that the hierarchy will never be enforced and the value of the Use Hierarchy in Analysis parameter will always be honored. If the input network dataset does not support hierarchy, specifying a value for this parameter will result in an error. A null value should be used in this case.

  • NO_SAVE_OUTPUT_LAYER —A network analysis layer isn't included in the output.
  • SAVE_OUTPUT_LAYER —The output includes a network analysis layer of the results.

In either case, a feature class with service area polygons is returned. However, a server administrator may want to choose to output a network analysis layer as well so that the setup and results of the tool can be debugged using the Network Analyst controls in the ArcGIS for Desktop environment. This can make the debugging process much easier.

In ArcGIS for Desktop , the default output location for the network analysis layer is in the scratch folder. You can determine the location of the scratch folder by evaluating the value of arcpy.env.scratchFolder geoprocessing environment. The output network analysis layer is stored as an LYR file whose name starts with _ags_gpna and is followed by an alphanumeric GUID.

Specifies the time zone or zones of the Time of Day parameter.

  • GEO_LOCAL —The Time of Day parameter refers to the time zone or zones in which the facilities are located. Therefore, the start or end times of the service areas are staggered by time zone.Setting Time of Day to 9:00 a.m., choosing geographically local for Time Zone for Time of Day, and solving causes service areas to be generated for 9:00 a.m. Eastern Time for any facilities in the Eastern Time Zone, 9:00 a.m. Central Time for facilities in the Central Time Zone, 9:00 a.m. Mountain Time for facilities in the Mountain Time Zone, and so on, for facilities in different time zones.If stores in a chain that span the U.S. open at 9:00 a.m. local time, this parameter value could be chosen to find market territories at opening time for all stores in one solve. First, the stores in the Eastern Time Zone open and a polygon is generated, then an hour later stores open in Central Time, and so on. Nine o'clock is always in local time but staggered in real time.
  • UTC —The Time of Day parameter refers to Coordinated Universal Time (UTC). Therefore, all facilities are reached or departed from simultaneously, regardless of the time zone or zones they are in.Setting Time of Day to 2:00 p.m., choosing UTC, then solving causes service areas to be generated for 9:00 a.m. Eastern Standard Time for any facilities in the Eastern Time Zone, 8:00 a.m. Central Standard Time for facilities in the Central Time Zone, 7:00 a.m. Mountain Standard Time for facilities in the Mountain Time Zone, and so on, for facilities in different time zones.

The scenario above assumes standard time. During daylight saving time, the Eastern, Central, and Mountain Times would each be one hour ahead (that is, 10:00, 9:00, and 8:00 a.m., respectively).

Irrespective of the Time Zone for Time of Day setting, all facilities must be in the same time zone when Time of Day has a nonnull value and Polygons for Multiple Facilities is set to create merged or nonoverlapping polygons.

Choose the mode of transportation for the analysis. CUSTOM is always a choice. For other travel mode names to appear, they must be present in the network dataset specified in the Network_Dataset parameter. (The arcpy.na.GetTravelModes function provides a dictionary of the travel mode objects configured on a network dataset, and the name property returns the name of a travel mode object.)

A travel mode is defined on a network dataset and provides override values for parameters that, together, model car, truck, pedestrian, or other modes of travel. By choosing a travel mode here, you don't need to provide values for the following parameters, which are overridden by values specified in the network dataset:


Writing helper Python functions with arcpy

If you have been working with arcpy for some time now, you might have found at some point that you re-use the same chunks of code in various modules and making changes in one place requires making modifications in other files involved.

At this stage, you should consider wrapping those bits of code into a function. This will make it easier to organize your code and make modifications as your project grows. Another thing with arcpy is that you might finding yourself going through the same procedure when starting working on a project. For instance, you set up a workspace, supply a feature class path, use the arcpy.da cursor to get values from a column and then start doing some analysis based on that. You may of course have multiple projects each of which will require a different setup, but this one is fairly common among many developers.

It is may be a good time at which you would need to compile a site package or just a helper module that will contain the functions and methods you need to use regularly.

An excellent example of compiled package of arcpy helper functions can be found here on github the package is called arcapi. Caleb and Filip have done a great job putting together dozens of useful functions that nearly every arcpy developer uses daily. Take a look at the amazing work they have done.

So, for instance, you often need a sorted list of unique values within a column in a feature class. You could write a helper function that will return a sorted list and keep in a helper module apart from your project where you focus on implementing the business logic.

def select_distinct ( input_fc , input_field ):
'''returns a list of unique values in a field sorted'''
sql = ( None , 'GROUP BY <0>' . format ( input_field ))
cur = arcpy . دا. SearchCursor ( in_table = input_fc , field_names = [ "<0>" . format ( input_field )],
sql_clause = sql )
unique_values = [ f [ 0 ] for f in cur ]
return sorted ( unique_values )

Provided this function is stored within a separate module named arcpy_helper.py, it’s just about importing this module and calling

arcpy_helper. select_distinct ( “path_to_fc ,” input_field_name” )

Much less code, much more productive.

Sometimes it’s not about bringing in a new piece of functionality though, but rather about writing less code.

Compare two function calls:

fields = [field.name for field in arcpy.ListFields(in_fc,field_type=”DOUBLE”)]

Both of this calls will give you a list of fields of double type found in a feature class or a table. However, the second one is much shorter. If you need to run this piece of code just once, you are OK. But if you call it fairly often throughout the module, you can save a lot of space by using a wrapper function (sometimes referred to as syntactic sugar) that is more concise and can improve the code readability.

However, be cautious when trying to implement a functionality that you think is missing in arcpy, because there is a chance there is a ready-to-use geoprocessing tool for that. For instance, when you need to find out how many times a certain value is found in a column, the Summary Statistics GP tool can be used. When trying to remove the duplicate rows or features, the Delete Identical GP tool can be used.

But in other cases, it might be worth wrapping a chunk of code you think you will need “just for this project” into a helper function. You can collect those and at some point of time you will realize how much time you save by calling them instead searching through the projects’ code looking for a code snippet you need.

I will leave you with a helper function I’ve written for listing out fields where there are no values stored (i.e., all rows have NULL).

استيراد آركبي
def get_fields ( input_fc , only_field_type = "String" , not_null = True ):
'''returns list of field names of specified data type and contain at
least one not NULL value'''
if not not_null :
all_fields = [ field . name for field in arcpy . ListFields ( in_fc , field_type = only_field_type )]
return all_fields
آخر :
all_fields = [ field . name for field in arcpy . ListFields ( in_fc , field_type = only_field_type )
if field . isNullable != "False" ]
#getting a dict
fields_dict = < field : list ( set ([ feature [ all_fields . index ( field )]
for feature in arcpy . دا. SearchCursor ( in_fc , all_fields )]))
for field in all_fields >
null_fields = [ k for k , v in fields_dict . iteritems () if v == [ None ]]
not_null_fields = list ( set ( all_fields ). symmetric_difference ( set ( null_fields )))
return not_null_fields

Rate this:


This book provides the recipes you need to use Python with AcrGIS for more effective geoprocessing. Shortcuts, scripts, tools, and customizations put you in the driving seat and can dramatically speed up your workflow.

  • Learn how to create geoprocessing scripts with ArcPy
  • Customize and modify ArcGIS with Python
  • Create time-saving tools and scripts for ArcGIS

ArcGIS is an industry standard geographic information system from ESRI.

This book will show you how to use the Python programming language to create geoprocessing scripts, tools, and shortcuts for the ArcGIS Desktop environment.

This book will make you a more effective and efficient GIS professional by showing you how to use the Python programming language with ArcGIS Desktop to automate geoprocessing tasks, manage map documents and layers, find and fix broken data links, edit data in feature classes and tables, and much more.

"Programming ArcGIS 10.1 with Python Cookbook" starts by covering fundamental Python programming concepts in an ArcGIS Desktop context. Using a how-to instruction style you’ll then learn how to use Python to automate common important ArcGIS geoprocessing tasks.

In this book you will also cover specific ArcGIS scripting topics which will help save you time and effort when working with ArcGIS. Topics include managing map document files, automating map production and printing, finding and fixing broken data sources, creating custom geoprocessing tools, and working with feature classes and tables, among others.

In "Python ArcGIS 10.1 Programming Cookbook" you’ll learn how to write geoprocessing scripts using a pragmatic approach designed around an approach of accomplishing specific tasks in a Cookbook style format.


شاهد الفيديو: 13 - Update Cursors - ArcMap Scripting with Python and Arcpy