{"id":184621,"date":"2013-05-20T20:23:33","date_gmt":"2013-05-21T03:23:33","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=184621"},"modified":"2018-12-18T11:23:50","modified_gmt":"2018-12-18T19:23:50","slug":"are-you-sure-intersect-is-the-right-tool-for-the-job","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job","title":{"rendered":"Are you sure Intersect is the right tool for the job?"},"author":5211,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[23341],"tags":[37631,24321,68201,24341],"industry":[],"product":[36991],"class_list":["post-184621","blog","type-blog","status-publish","format-standard","hentry","category-analytics","tag-clip","tag-geoprocessing","tag-intersect","tag-python","product-arcgis-desktop"],"acf":{"short_description":"ArcGIS Pro 1.0 introduced a PairwiseIntersect tool which emulates the pairwise tool discussed in this blog post.","flexible_content":[{"acf_fc_layout":"content","content":"<p><strong>Are you sure Intersect is the right tool for the job?<\/strong><\/p>\n<p><strong>UPDATE<\/strong><\/p>\n<p>ArcGIS Pro 1.0 introduced a PairwiseIntersect tool which emulates the pairwise tool discussed in this blog post.<br \/>\nArcGIS Pro 1.1 has an additional pairwise tool, Pairwise Dissolve.<br \/>\nBy default, starting in ArcGIS Pro 1.1, both the PairwiseIntersect and PairwiseDissolve tools run in parallel mode. This will allow these tools to distribute the work to all (or a portion of) the logical cores on the machine. The performance benefit of parallel processing varies from tool to tool and depends on the input data being processed.<\/p>\n<p>Please see the following for more info:\u00a0<a title=\"PairwiseIntersect\" href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/tool-reference\/analysis\/pairwise-intersect.htm\" target=\"_blank\" rel=\"noopener\">PairwiseIntersect<\/a>\u00a0and\u00a0<a title=\"PairwiseDissolve\" href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/tool-reference\/analysis\/pairwise-dissolve.htm\" target=\"_blank\" rel=\"noopener\">PairwiseDissolve<\/a><\/p>\n<p>(Note: There are no system Pairwise tools provided in 10.x. Continue to use the provided methodology and scripts included with this post.)<\/p>\n<p>=========================================================<\/p>\n<p>I often talk with people using ArcGIS Geoprocessing who find themselves surprised about the amount of time the Intersect tool takes to run, or confused about the output results.\u00a0 Much of the time this confusion comes from a misperception about what tool to use for the analysis, or from a lack of understanding of what the Intersect tool does.<\/p>\n<p>Here\u2019s an example\u2026 A user contacted me about the Intersect tool because the tool would run for hours and then fail. They perceived their data as small and really thought Intersect would only take a few minutes.<\/p>\n<p>My first question, and one you should ask too is, \u201cWhat do you really want for a result?\u201d<\/p>\n<p>The answer in this, and many cases was \u201cI want to know how much of each feature in input 1 is in each feature in input 2.\u201d<\/p>\n<p>Cool!\u00a0 That means Intersect is not the right tool to use!<span id=\"more-27790\"><\/span><\/p>\n<p>Intersect does not compare each feature in the first input to each feature in the second input.\u00a0 It works in a much more complex, thorough way. The intersect tool is for creating a topologically correct fabric across the entire extent of the dataset and return those newly created features that were created due to overlap from a feature in each input.\u00a0 The Intersect tool throws all the features from all the inputs into one bucket, and passes this to the underlying topology engine so it can create this topological fabric. This means all relationships, between all features, including those relationships within each input are determined and new features are created for every interaction. The Intersect tool then selects just those features from this topologically correct fabric.<\/p>\n<p>So, for the Intersect tool if you have 2 inputs the output will only contain those features that were created where a feature from each of the 2 inputs overlapped.\u00a0 If you have 100 inputs the output will only contain those features that were created where a feature from each of the 100 inputs overlapped.<\/p>\n<p>Here is what looks like a very simple example of intersecting one polygon layer with 10 overlapping polygons with a single polygon from a second feature class (features are labeled with their OID):<\/p>\n<p>Input 1 (10 input polys that overlap)<\/p>\n<p><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/Input1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-27797 alignnone\" src=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/Input1-300x168.png\" alt=\"First input feature class\" width=\"300\" height=\"168\" \/><\/a><\/p>\n<p>Input2 (One polygon)<\/p>\n<p><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/Input2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-27800 alignnone\" src=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/Input2-300x168.png\" alt=\"\" width=\"300\" height=\"168\" \/><\/a><\/p>\n<p>Intersect output will contain new features created from the intersection of the overlapping polygons in Input1 and their intersection with the polygon in Input2:<\/p>\n<p><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/IntersectOutput.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-27801\" src=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/IntersectOutput-300x168.png\" alt=\"\" width=\"300\" height=\"168\" \/><\/a><\/p>\n<p>As you can see, there are now a lot more polygons in the output (167!) than there were in the inputs combined. \u00a0Imagine if Input1 was actually complex:<\/p>\n<p><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/Input1_large.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-27802\" src=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/Input1_large-300x173.png\" alt=\"\" width=\"300\" height=\"173\" \/><\/a><\/p>\n<p>Ouch!<\/p>\n<p>Using the output of Intersect you now have to perform further analysis to put together polygons that were broken apart in Input1 due to their intersections with one another. Seems like a lot of work to figure out how much of the polygon with OID 9 in Input1 intersects with the polygon in Input2 right?<\/p>\n<p>So what should they, and you, be doing if you want to know how much of each input feature intersects with each feature in the second input?\u00a0 Here are two possible workflows, one good, and one much better, that will give you exactly what you want, and may get you the results of your analysis much faster.<\/p>\n<h2>Good\u2026 Clip and Transfer Attributes workflow<\/h2>\n<p>This is a simple approach that uses existing tools and can be setup by anyone familiar with scripting. The only \u2018advanced\u2019 part, is the use of a cursor, but it should be fairly easy to understand.<\/p>\n<div>\n<div id=\"highlighter_276565\" class=\"syntaxhighlighter python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<div class=\"line number43 index42 alt2\">43<\/div>\n<div class=\"line number44 index43 alt1\">44<\/div>\n<div class=\"line number45 index44 alt2\">45<\/div>\n<div class=\"line number46 index45 alt1\">46<\/div>\n<div class=\"line number47 index46 alt2\">47<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python keyword\">import<\/code> <code class=\"python plain\">arcpy, os, sys, time<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"python plain\">arcpy.env.workspace <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">os.getcwd()<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"python plain\">arcpy.MakeFeatureLayer_management(r<\/code><code class=\"python string\">\"Data.gdb\\input1\"<\/code><code class=\"python plain\">,<\/code><code class=\"python string\">\"input1\"<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"python plain\">arcpy.MakeFeatureLayer_management(r<\/code><code class=\"python string\">\"Data.gdb\\input2\"<\/code><code class=\"python plain\">,<\/code><code class=\"python string\">\"input2\"<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"python plain\">arcpy.env.overwriteOutput <\/code><code class=\"python keyword\">=<\/code> <code class=\"python color1\">True<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"python plain\">arcpy.CreateFileGDB_management(os.getcwd(),<\/code><code class=\"python string\">\"output.gdb\"<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"python keyword\">try<\/code><code class=\"python plain\">:<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python comments\">#For each input2 feature in the poly feature class, select it, select the input1 features that intersect it, then clip it with the selected input2 feature<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">input2Count <\/code><code class=\"python keyword\">=<\/code> <code class=\"python functions\">int<\/code><code class=\"python plain\">(arcpy.GetCount_management(<\/code><code class=\"python string\">'input2'<\/code><code class=\"python plain\">)[<\/code><code class=\"python value\">0<\/code><code class=\"python plain\">])<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">progressCounter <\/code><code class=\"python keyword\">=<\/code> <code class=\"python value\">1<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">startTime <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">time.time()<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">with arcpy.da.SearchCursor(<\/code><code class=\"python string\">\"input2\"<\/code><code class=\"python plain\">, <\/code><code class=\"python string\">\"ID\"<\/code><code class=\"python plain\">) as cursor:<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">for<\/code> <code class=\"python plain\">row <\/code><code class=\"python keyword\">in<\/code> <code class=\"python plain\">cursor:<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">print<\/code> <code class=\"python string\">\"\\n\\ninput2 # \"<\/code> <code class=\"python keyword\">+<\/code> <code class=\"python functions\">str<\/code><code class=\"python plain\">(progressCounter) <\/code><code class=\"python keyword\">+<\/code> <code class=\"python string\">\" of \"<\/code> <code class=\"python keyword\">+<\/code> <code class=\"python functions\">str<\/code><code class=\"python plain\">(input2Count)<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python functions\">print<\/code> <code class=\"python string\">\"Processing ID = \"<\/code> <code class=\"python keyword\">+<\/code> <code class=\"python functions\">str<\/code><code class=\"python plain\">(row[<\/code><code class=\"python value\">0<\/code><code class=\"python plain\">])<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">arcpy.SelectLayerByAttribute_management(<\/code><code class=\"python string\">'input2'<\/code><code class=\"python plain\">, \"<\/code><code class=\"python string\">\", \"<\/code><code class=\"python functions\">ID<\/code> <code class=\"python keyword\">=<\/code> <code class=\"python plain\">\" <\/code><code class=\"python keyword\">+<\/code> <code class=\"python functions\">str<\/code><code class=\"python plain\">(row[<\/code><code class=\"python value\">0<\/code><code class=\"python plain\">]))<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">print<\/code> <code class=\"python string\">\"Selecting the input1 features...\"<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">arcpy.SelectLayerByLocation_management(<\/code><code class=\"python string\">\"input1\"<\/code><code class=\"python plain\">, <\/code><code class=\"python string\">\"INTERSECT\"<\/code><code class=\"python plain\">, <\/code><code class=\"python string\">\"input2\"<\/code><code class=\"python plain\">, \"<\/code><code class=\"python string\">\", \"<\/code><code class=\"python plain\">\")<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">print<\/code> <code class=\"python string\">\"Clipping the selected input1 features with the selected input2 feature...\"<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">arcpy.Clip_analysis(<\/code><code class=\"python string\">\"input1\"<\/code><code class=\"python plain\">, <\/code><code class=\"python string\">\"input2\"<\/code><code class=\"python plain\">, r<\/code><code class=\"python string\">\"output.gdb\/input1InID\"<\/code> <code class=\"python keyword\">+<\/code> <code class=\"python functions\">str<\/code><code class=\"python plain\">(row[<\/code><code class=\"python value\">0<\/code><code class=\"python plain\">]), <\/code><code class=\"python string\">\"0.001\"<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">print<\/code> <code class=\"python string\">\"Add identification field...\"<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">arcpy.AddField_management(r<\/code><code class=\"python string\">\"output.gdb\/input1InID\"<\/code> <code class=\"python keyword\">+<\/code> <code class=\"python functions\">str<\/code><code class=\"python plain\">(row[<\/code><code class=\"python value\">0<\/code><code class=\"python plain\">]), <\/code><code class=\"python string\">\"ID\"<\/code><code class=\"python plain\">, <\/code><code class=\"python string\">\"LONG\"<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">print<\/code> <code class=\"python string\">\"Assign input2 ID field value to the output...\"<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">arcpy.CalculateField_management(r<\/code><code class=\"python string\">\"output.gdb\/input1InID\"<\/code> <code class=\"python keyword\">+<\/code> <code class=\"python functions\">str<\/code><code class=\"python plain\">(row[<\/code><code class=\"python value\">0<\/code><code class=\"python plain\">]), <\/code><code class=\"python string\">\"ID\"<\/code><code class=\"python plain\">, <\/code><code class=\"python functions\">str<\/code><code class=\"python plain\">(row[<\/code><code class=\"python value\">0<\/code><code class=\"python plain\">]), <\/code><code class=\"python string\">\"PYTHON_9.3\"<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">progressCounter <\/code><code class=\"python keyword\">+<\/code><code class=\"python keyword\">=<\/code><code class=\"python value\">1<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">print<\/code> <code class=\"python string\">\"Merge all the outputs...\"<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">arcpy.env.workspace <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">os.path.join(os.getcwd(), r<\/code><code class=\"python string\">\"output.gdb\"<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">fcList <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">arcpy.ListFeatureClasses()<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">arcpy.Merge_management(fcList, r<\/code><code class=\"python string\">\"output.gdb\/mergedFC\"<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">stopTime <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">time.time()<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python functions\">print<\/code> <code class=\"python string\">\"Total time in seconds = \"<\/code> <code class=\"python keyword\">+<\/code> <code class=\"python functions\">str<\/code><code class=\"python plain\">(<\/code><code class=\"python functions\">int<\/code><code class=\"python plain\">(stopTime<\/code><code class=\"python keyword\">-<\/code><code class=\"python plain\">startTime)) <\/code><code class=\"python keyword\">+<\/code> <code class=\"python string\">\" and in minutes = \"<\/code> <code class=\"python keyword\">+<\/code> <code class=\"python functions\">str<\/code><code class=\"python plain\">(<\/code><code class=\"python functions\">int<\/code><code class=\"python plain\">(stopTime<\/code><code class=\"python keyword\">-<\/code><code class=\"python plain\">startTime)<\/code><code class=\"python keyword\">\/<\/code><code class=\"python value\">60<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python functions\">print<\/code> <code class=\"python string\">\"DONE\"<\/code><\/div>\n<div class=\"line number44 index43 alt1\"><\/div>\n<div class=\"line number45 index44 alt2\"><code class=\"python keyword\">except<\/code> <code class=\"python plain\">Exception:<\/code><\/div>\n<div class=\"line number46 index45 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python functions\">print<\/code> <code class=\"python string\">\"FAILED\"<\/code><\/div>\n<div class=\"line number47 index46 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">print<\/code> <code class=\"python plain\">arcpy.GetMessages()<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>You add code to transfer as many of the attributes from the second input as you want. If you want this method to go a little faster, you could play with sending the intermediate data to in_memory featureclasses.\u00a0 Trouble is, you\u2019ll have to manage how many outputs you send to in_memory if your data is very large.\u00a0 You may use up all your memory storing the intermediate data and cause the workflow to fail.<\/p>\n<p>There are other possible problems with this workflow. The main ones\u00a0are SelectLayerByLocation \u2018INTERSECT\u2019 doesn\u2019t use the exact same rules to select features as Intersect does (see\u00a0<a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/2012\/10\/12\/comparingoverlaytools\/\">here<\/a>) and creating and managing all that intermediate data is painful and slow.<\/p>\n<p>So, here\u2019s a much better way to do this\u2026<\/p>\n<h2><strong>Better<\/strong>\u2026 Intersect geometry method<\/h2>\n<p>We can get rid of the creation and maintenance of all that intermediate data, use a method that mimics the Intersect tool, and make this all run tons faster on larger, more complex data.<\/p>\n<p>Let\u2019s use a\u00a0<a href=\"http:\/\/resources.arcgis.com\/en\/help\/main\/10.1\/index.html#\/Geometry\/018z00000070000000\/\">geometry method<\/a>\u00a0instead!<\/p>\n<p>Here is a simplified code snippet explaining the core basics of the workflow:<\/p>\n<div>\n<div id=\"highlighter_854813\" class=\"syntaxhighlighter python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">inCursor <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">arcpy.da.InsertCursor(r<\/code><code class=\"python string\">\"output.gdb\/IntersectResult\"<\/code><code class=\"python plain\">, fldsOutput)<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">with arcpy.da.SearchCursor(<\/code><code class=\"python string\">\"input1\"<\/code><code class=\"python plain\">, fldsInput1) as cursor:<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">for<\/code> <code class=\"python plain\">row <\/code><code class=\"python keyword\">in<\/code> <code class=\"python plain\">cursor: <\/code><code class=\"python comments\"># For each feature in input1<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python comments\"># for each feature, select the features in input2 that it intersects<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">arcpy.SelectLayerByLocation_management(<\/code><code class=\"python string\">\"input2\"<\/code><code class=\"python plain\">, <\/code><code class=\"python string\">\"INTERSECT\"<\/code><code class=\"python plain\">, row[<\/code><code class=\"python keyword\">-<\/code><code class=\"python value\">1<\/code><code class=\"python plain\">])<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">with arcpy.da.SearchCursor(<\/code><code class=\"python string\">\"input2\"<\/code><code class=\"python plain\">, fldsInput2) as cursor2:<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">for<\/code> <code class=\"python plain\">row2 <\/code><code class=\"python keyword\">in<\/code> <code class=\"python plain\">cursor2: <\/code><code class=\"python comments\"># for each selected feature from input2<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python comments\"># intersect it with the feature from input1<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">clippedFeature <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">row2[<\/code><code class=\"python keyword\">-<\/code><code class=\"python value\">1<\/code><code class=\"python plain\">].intersect(row[<\/code><code class=\"python keyword\">-<\/code><code class=\"python value\">1<\/code><code class=\"python plain\">], <\/code><code class=\"python value\">4<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python comments\"># setup the insert cursor (for the input you previously created)<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">flds2Insert[<\/code><code class=\"python keyword\">-<\/code><code class=\"python value\">1<\/code><code class=\"python plain\">] <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">clippedFeature<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">inCursor.insertRow(flds2Insert) <\/code><code class=\"python comments\"># Insert the resulting geometry from using INTERSECT geometry method<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>For a fully functional (I hope!) script tool and script that you can try out, download the Pairwise Intersect Tool\u00a0<a title=\"Pairwise Intersect Tool\" href=\"http:\/\/www.arcgis.com\/home\/item.html?id=120807ac7f8449f89840ae48e87d7f55\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<p>Taking a look at the same example I used above except this time I use the PairWiseIntersect tool:<\/p>\n<p><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/PairWiseIntersectOutput3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-28001\" src=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2013\/05\/PairWiseIntersectOutput3-300x271.png\" alt=\"\" width=\"300\" height=\"271\" \/><\/a><\/p>\n<p>That\u2019s more like it!<\/p>\n<p>In testing we\u2019ve done, the \u201cBetter\u201d method is multitudes faster with large and\/or complex data and it also gets through cases the Intersect Overlay tool appears to have trouble with (and for the most part these \u2018trouble\u2019 cases do not make sense to process using the Intersect tool).<\/p>\n<p>Many thanks to Jason Pardy for reviewing the code and blog contents.<\/p>\n"}],"authors":[{"ID":5211,"user_firstname":"Ken","user_lastname":"Hartling","nickname":"ken2472","user_nicename":"ken-hartling","display_name":"KenH","user_email":"khartling@esri.com","user_url":"","user_registered":"2018-03-02 00:16:52","user_description":"","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/853a4bc0e1bcb61646fa1de63d2a468e5dba40e06221050178aad75e1f2b7fca?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/853a4bc0e1bcb61646fa1de63d2a468e5dba40e06221050178aad75e1f2b7fca?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}],"related_articles":"","card_image":false,"wide_image":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Are you sure Intersect is the right tool for the job?<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Are you sure Intersect is the right tool for the job?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2018-12-18T19:23:50+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job\"},\"author\":{\"name\":\"KenH\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/a5b1857859c0a2d5f7bcf148f81f3fe6\"},\"headline\":\"Are you sure Intersect is the right tool for the job?\",\"datePublished\":\"2013-05-21T03:23:33+00:00\",\"dateModified\":\"2018-12-18T19:23:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job\"},\"wordCount\":11,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"clip\",\"geoprocessing\",\"intersect\",\"python\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job\",\"name\":\"Are you sure Intersect is the right tool for the job?\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2013-05-21T03:23:33+00:00\",\"dateModified\":\"2018-12-18T19:23:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Are you sure Intersect is the right tool for the job?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/a5b1857859c0a2d5f7bcf148f81f3fe6\",\"name\":\"KenH\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/853a4bc0e1bcb61646fa1de63d2a468e5dba40e06221050178aad75e1f2b7fca?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/853a4bc0e1bcb61646fa1de63d2a468e5dba40e06221050178aad75e1f2b7fca?s=96&d=blank&r=g\",\"caption\":\"KenH\"},\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Are you sure Intersect is the right tool for the job?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job","og_locale":"en_US","og_type":"article","og_title":"Are you sure Intersect is the right tool for the job?","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2018-12-18T19:23:50+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job"},"author":{"name":"KenH","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/a5b1857859c0a2d5f7bcf148f81f3fe6"},"headline":"Are you sure Intersect is the right tool for the job?","datePublished":"2013-05-21T03:23:33+00:00","dateModified":"2018-12-18T19:23:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job"},"wordCount":11,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["clip","geoprocessing","intersect","python"],"articleSection":["Analytics"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job","name":"Are you sure Intersect is the right tool for the job?","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2013-05-21T03:23:33+00:00","dateModified":"2018-12-18T19:23:50+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-desktop\/analytics\/are-you-sure-intersect-is-the-right-tool-for-the-job#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Are you sure Intersect is the right tool for the job?"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/a5b1857859c0a2d5f7bcf148f81f3fe6","name":"KenH","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/853a4bc0e1bcb61646fa1de63d2a468e5dba40e06221050178aad75e1f2b7fca?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/853a4bc0e1bcb61646fa1de63d2a468e5dba40e06221050178aad75e1f2b7fca?s=96&d=blank&r=g","caption":"KenH"},"url":""}]}},"text_date":"May 20, 2013","author_name":"KenH","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcMap","tag_data":[{"term_id":37631,"name":"clip","slug":"clip","term_group":0,"term_taxonomy_id":37631,"taxonomy":"post_tag","description":"","parent":0,"count":3,"filter":"raw"},{"term_id":24321,"name":"geoprocessing","slug":"geoprocessing","term_group":0,"term_taxonomy_id":24321,"taxonomy":"post_tag","description":"","parent":0,"count":131,"filter":"raw"},{"term_id":68201,"name":"intersect","slug":"intersect","term_group":0,"term_taxonomy_id":68201,"taxonomy":"post_tag","description":"","parent":0,"count":5,"filter":"raw"},{"term_id":24341,"name":"python","slug":"python","term_group":0,"term_taxonomy_id":24341,"taxonomy":"post_tag","description":"","parent":0,"count":171,"filter":"raw"}],"category_data":[{"term_id":23341,"name":"Analytics","slug":"analytics","term_group":0,"term_taxonomy_id":23341,"taxonomy":"category","description":"","parent":0,"count":1334,"filter":"raw"}],"product_data":[{"term_id":36991,"name":"ArcMap","slug":"arcgis-desktop","term_group":0,"term_taxonomy_id":36991,"taxonomy":"product","description":"","parent":36981,"count":325,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=arcgis-desktop","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/184621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/5211"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=184621"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/184621\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=184621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=184621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=184621"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=184621"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=184621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}