أكثر

مقاطعة أقرب تحليل منشأة

مقاطعة أقرب تحليل منشأة


أقوم بتحليل محلل الشبكة (أقرب مرفق). سأقود من "الحوادث" إلى "المرافق". "منشآتي" هي المركز السكاني في البلدية. في "المرافق" يوجد عمود "POP" يوضح عدد السكان الموجودين في المركز السكاني. أولاً ، ستنتقل تحليلات أقرب منشأة إلى أقرب "منشآت" وتحسب عدد السكان الموجودين في العمود "POP". لذلك يجب أن تذهب إلى ثاني أقرب "مرافق" وأن تحسب عدد السكان الموجودين في العمود "POP" هناك. لكل "منشآت" سيتم حساب عدد المقيمين هناك في العمود "POP" وتجميع النتيجة من العمود "POP" إلى عمود يسمى تراكمي.

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

هل من الممكن أن تجعل أقرب منشأة توقف بالطريقة التي أريدها ، أو يجب أن تمر عبر جميع "المرافق" التي أمتلكها؟

import arcpy، os، sys # تحقق من أي تراخيص ضرورية arcpy.CheckOutExtension ("الشبكة") arcpy.env.overwriteOutput = True # المتغيرات المحلية: WS = "C:  Tom  Oppdrag_2015  KMD_NY" ELVEG_Nettverk_ND_2013 = "C:  Tom  Krd_2013  ELVEG_Nettverk_2013  ELVEG_Nettverk_2013.gdb  ELVEG_Nettverk  ELVEG_Nettverk_ND_2013 "Til = r" C:  Tom  Oppdrag_2015  KMD_NY  04_Hedmark_Ut.gdb  Til "Fra = r" Tom  Oppdrag_2015  KMD_NY  04_Hedmark_Ut.gdb  Fra "Ruter = r" C:  Tom  Oppdrag_2015  KMD_NY  Ruter.shp "Routes =" أقرب مرفق  مسارات "ODLines_Layer =" ODLines_Layer "NY =" TEST "Closest_Facility = "أقرب مرفق" arcpy.MakeFeatureLayer_management (Fra، "FraLyr") arcpy.MakeFeatureLayer_management (Til، "TilLyr") # العملية: إضافة حقل (2) arcpy.AddField_management ("TilLyr"، "Innbyggere_NY"، "LONG"، " ، ""، "20"، ""، "NULLABLE"، "NON_REQUIRED"، "") arcpy.AddField_management ("FraLyr"، "FraGkr"، "LONG"، ""، ""، "20"، "" ، "NULLABLE"، "NON_REQUIRED"، "") # العملية: حساب الحقل (3) arcpy.CalculateField_management ("F raLyr "،" FraGkr "،" [GRUNNKRETS] "،" VB "،" ") rows = arcpy.da.SearchCursor (" FraLyr "،" TEST ") للصف في الصفوف: Gkr = str (row [0]) حيث = "" TEST  "=" + "+ str (Gkr) +" "arcpy.SelectLayerByAttribute_management (" FraLyr "،" NEW_SELECTION "، حيث) الأقرب BTP =" ClosestBTP "# العملية: جعل أقرب طبقة تسهيل .MakeClosestFacilityLayer_na (ELVEG_Nettverk_ND_2013 ، أقرب BTP ، "متر" ، "TRAVEL_TO" ، "" ، "50" ، "" ، "ALLOW_UTURNS" ، "في الطريق" ، "USE_HIERARCHY" ، "" ، "TRUE_LINES_WITH "T_USED" ) arcpy.AddFieldToAnalysisLayer_na (أقرب BTP ، "المسارات" ، "Gkr_nr" ، "TEXT" ، "" ، "" ، "50") # العملية: إضافة حقل (3) arcpy.AddField_management (أقرب BTP + " Routes"، " Akkumulert "،" LONG "،" "،" "،" 20 "،" "،" NULLABLE "،" NON_REQUIRED "،" ") arcpy.AddField_management (nearBTP +"  Routes "،" Grunnkrets "،" LONG " ، ""، ""، "20"، ""، "NULLABLE"، "NON_REQUIRED"، "") arcpy.AddLocations_na (أقرب BTP، "Incidents"، "FraLyr"، "اسم GRUNNKRETS #"، "5000 متر"، "" ، شكل ELVEG_Vegnett_2013 ؛ ELVEG_Nettverk_ND_2013_Junctions NONE "،" MATCH_TO_CLOSEST "،" APPEND "،" NO_SNAP "،" 5 Meters "،" INCLUDE "،" ELVEG_Vegnett_2013 #؛ ELVEG_Nettverk_ND_2013_Junctions # ") arcpy.AdAd GRUNNKRETS # "،" 5000 Meters "،" "،" ELVEG_Vegnett_2013 SHAPE؛ ELVEG_Nettverk_ND_2013_Junctions NONE "،" MATCH_TO_CLOSEST "،" APPEND "،" NO_SNAP "،" 5 Meters "،" INCLUDE "؛" ELVEG_NEG2013 # العملية: حل arcpy.Solve_na (أقرب BTP ، "SKIP" ، "TERMINATE" ، "") # العملية: حساب حقل arcpy.CalculateField_management (أقرب BTP + " Routes" ، "Gkr_nr" ، "[الاسم]" ، "VB" ، "") # العملية: حساب الحقل (4) arcpy.CalculateField_management (أقرب BTP + " Routes"، "Grunnkrets"، "[Gkr_nr]"، "VB"، "") # العملية: حساب الحقل (2) arcpy .CalculateField_management (أقرب BTP + " Routes"، "Gkr_nr"، "Right ([Gkr_nr]، 8)"، "VB"، "") # العملية: Join Field arcpy.JoinField_management (الأقرب BTP + " Routes"، "Gkr_nr" ، "TilLyr" ، "GRUNNKRETS" ، "In nbyggere_NY ") # العملية: حساب الحقل (5) arcpy.CalculateField_management (أقرب BTP +"  Routes "،" Akkumulert "،" cumsum (! Innbyggere_NY! ) "،" PYTHON_9.3 "،" total = 0  ndef cumsum (inc):  n الإجمالي العالمي  n total + = inc  n return total  n ") arcpy.SaveToLayerFile_management (الأقرب BTP،" Grunnkrets "+" _ "+ Gkr،" RELATIVE ")

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

  • إنشاء مصفوفة التطوير التنظيمي والانضمام إلى القيم السكانية الخاصة بك في المرافق ؛
  • تصدير الجدول الخاص بك إلى Excel ؛
  • باستخدام Pivot Table of Excel لخص القيم السكانية الخاصة بك (يمكنك القيام بالمزيد)

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


شاهد الفيديو: كويتي يرتدعن الإسلام ويعتنق اليهودية فكيف تعاملت السلطات الكويتية معه