יותר

נקודת בדיקה בביצועי שכבת מצולעים של Intersect, Spatial Join ו- Near ב- ArcGIS לשולחן העבודה?


בתשובות והערות לבחירת נקודות בתוך מצולע ועדכון תכונות I לַחשׁוֹב מוצע כי צירוף מרחבי (ניתוח) ו/או קרוב (ניתוח) אולי מהיר יותר מאשר חיתוך (ניתוח) לביצוע נקודה בשכבת -על של מצולעים להעברת תכונות מצולע אל הנקודות החותכות אותן.

זה הפתיע אותי מכיוון שתמיד ציפיתי ש- Intersect עשוי להיות קצת יותר מהיר מ- Spatial Join, ואני חושב שזה יהיה הרבה יותר מהיר מ- Near. למרבה הצער, אין לי רישיון מתקדם של ArcGIS לשולחן העבודה, כך שאני לא יכול לבדוק את הביצועים בקרבת מקום.

האם למישהו יש בדיקה ניתנת לשחזור המצביעה על הצטרפות קרובה ו/או מרחבית למהירה יותר מאשר חוצה?

אני עומד לתת כתשובה את הבדיקה שלי על Intersect vs Spatial Join, שם אני יוצר רשת דגים של 10x10 של מצולעים ורשת של 100x100 נקודות המכסה את אותה מידה (0,0,10,10) ולאחר מכן מבצעים צומת וניל ו הצטרפות מרחבית וניל (INTERSECT) מבין השניים.


הבדיקה המהירה שלי, באמצעות ArcGIS 10.2.2 עבור שולחן העבודה ב- Windows 7 SP1, מצביעה על כך ש- Intersect מהיר יותר מאשר הצטרפות מרחבית.

בדיקה זו, הפעלה מ- IDLE:

ייבא arcpy, זמן אם לא arcpy.Exists (r "C:  temp  test.gdb"): arcpy.CreateFileGDB_management (r "C:  temp", "test.gdb") אם arcpy.Exists (r "C:  temp  test.gdb  fnPoly100 "): arcpy.Delete_management (r" C:  temp  test.gdb  fnPoly100 ") אם arcpy.Exists (r" C:  temp  test.gdb  fnPoly10000 "): arcpy .Delete_management (r "C:  temp  test.gdb  fnPoly10000") אם arcpy.Exists (r "C:  temp  test.gdb  fnPoint10000"): arcpy.Delete_management (r "C:  temp  test. gdb  fnPoint10000 ") arcpy.CreateFishnet_management (" C: /temp/test.gdb/fnPoly100 "," 0 0 "," 0 1 "," 1 "," 1 "," 10 "," 10 ","## "," NO_LABELS ","#"," POLYGON ") arcpy.CreateFishnet_management (" C: /temp/test.gdb/fnPoly10000 "," 0 0 "," 0 1 "," 0.1 "," 0.1 "," 100 "," 100 ","#"," LABELS ","#"," POLYGON ") arcpy.Delete_management (r" C:  temp  test.gdb  fnPoly10000 ") arcpy.Rename_management (" C:/temp /test.gdb/fnPoly10000_label","C:/temp/test.gdb/fnPoint10000","FeatureClass ") אם arcpy.Exists (r" C:  temp  test.gdb  SpatialJoinResult "): arcpy.Delete_management (r "C:  temp  test.gdb  SpatialJoinResult") start = time.clock () arcpy.SpatialJ oin_analysis ("C: /temp/test.gdb/fnPoint10000", "C: /temp/test.gdb/fnPoly100", "C: /temp/test.gdb/SpatialJoinResult", "JOIN_ONE_TO_ONE", "KEEP_ALL", " "" Shape_Length "Shape_Length" false true true 8 Double 0 0, First,#, C: /temp/test.gdb/fnPoly100,Shape_Length,-1,-1; Shape_Area "Shape_Area" false true true 8 Double 0 0, First ,#, C: /temp/test.gdb/fnPoly100,Shape_Area,-1,-1 "" "," INTERSECT ","#","#") elapsed = (time.clock ()-התחל) הדפס ( "הצטרפות מרחבית לקח" + str (חלפו) + "שניות") אם arcpy.Exists (r "C:  temp  test.gdb  IntersectResult"): arcpy.Delete_management (r "C:  temp  test.gdb  IntersectResult ") start = time.clock () arcpy.Intersect_analysis (" C: /temp/test.gdb/fnPoint10000 #; C: /temp/test.gdb/fnPoly100 #"," C: /temp/test.gdb/ IntersectResult "," ALL ","#"," INPUT ") elapsed = (time.clock () - start) print (" Intersect לקח " + str (עברו) +" שניות ")

הניב תוצאות אלו:

הצטרפות מרחבית לקחה 3.13998451416 שניות

אינטרסקט לקח 2.3185308145 שניות

ביצעתי את המבחן שלי עם האינטרסקט קודם כמה פעמים, ולאחר מכן את הצטרפות המרחבית קודם כל כמה פעמים, ואינטרסקט תמיד היה המנצח בנתונים אלה.


צפו בסרטון: Spatial Joins: Polygon u0026 Polygon (אוֹקְטוֹבֶּר 2021).