<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Batch processing animal home range overlap data in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/batch-processing-animal-home-range-overlap-data/m-p/694384#M53846</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks very much for the response.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;However, I have managed to put together a loop in the script that will cycle through each shapefile and compare them all individually with one animal:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;#script to calculate home range overlap (hectares) between two individuals

# import modules
import arcpy
import time
import os
#import tabletoexcel
arcpy.ImportToolbox("xxx\Additional Conversion - Generic Tools.tbx")

from arcpy import env

env.overwriteOutput = True


# local variables

#hardcode test
ou1 = r"xxx\bbmmAnsPoly90.shp"
arcpy.env.workspace = r"xxx\ninety"
outputfolder = r"xxx\ninety\test"
#logfile = r"xxx\ansoverlap.txt"
#ou1 = arcpy.GetParameterAsText(0)
#arcpy.env.workspace = arcpy.GetParameterAsText(1)
#outputfolder = arcpy.GetParameterAsText(2)
#int_output_Statistics = arcpy.GetParameterAsText(3)
logfile = outputfolder + "\\" + ou1 + "_" + "overlaps.txt"
print logfile

try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: intersect
&amp;nbsp;&amp;nbsp;&amp;nbsp; #intersect_analysis (in_features, out_feature_class, {join_attributes}, {cluster_tolerance}, {output_type})
&amp;nbsp;&amp;nbsp;&amp;nbsp; ou2s = arcpy.ListFeatureClasses()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; for ou2 in ou2s:&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fcname1 = arcpy.Describe(ou1).basename
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fcname2 = arcpy.Describe(ou2).basename
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_output = os.path.join(outputfolder, str(fcname1 + fcname2) + ".shp")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #int_output = os.path.join(outputfolder, str(fcname1) + "_overlaps.shp")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_output_Statistics = r"xxx\Default.gdb" + "\\" + str(fcname1 + fcname2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #int_output_Statistics = r"xxx\Default.gdb" + "\\" + str(fcname1) + "_overlaps"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; excel_output = outputfolder + "\\" + str(fcname1 + fcname2)&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #excel_output = outputfolder + "\\" + str(fcname1) + "_overlaps"

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logfile = outputfolder + "\\" + fcname1 + "_" + "overlaps.txt"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists(logfile):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f = open(logfile, "a")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f = open(logfile, "w")&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write(time.strftime('%c'))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("------------------------------")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n")

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.analysis.Intersect([ou1, ou2], int_output)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Calculating home range overlap between " + fcname1 + " &amp;amp; " + fcname2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Calculating home range overlap between " + fcname1 + " &amp;amp; " + fcname2

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: add field
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output, "Overlap", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Adding \"Overlap\" field to " + int_output)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Adding \"Overlap\" field to " + int_output

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: calculate field
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.CalculateField(int_output, "Overlap", "!shape.area@HECTARES!", "PYTHON_9.3", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Calculating geometry of overlap between " + fcname1 + " " + fcname2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Calculating geometry of overlap between " + fcname1 + " " + fcname2

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: delete identical
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.DeleteIdentical(int_output, "Overlap", "", "0")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Deleting identical values from \"Overlap\" field")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Deleting identical values from \"Overlap\" field"

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: summary statistics
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Determine overlap value in hectares")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Determine overlap value in hectares"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.analysis.Statistics(int_output, int_output_Statistics, "Overlap SUM", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output_Statistics, 'orangutan1', 'TEXT')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output_Statistics, 'isopleth1', 'DOUBLE')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output_Statistics, 'orangutan2', 'TEXT')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output_Statistics, 'isopleth2', 'DOUBLE')

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; search1 = arcpy.SearchCursor(ou1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for scrap in search1:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ou1_name = scrap.getValue("ou")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ou1_iso = scrap.getValue("iso")

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; search2 = arcpy.SearchCursor(ou2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for scrap in search2:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ou2_name = scrap.getValue("ou")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ou2_iso = scrap.getValue("iso")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #row_values = [(scrap.getValue("ou"), scrap.getValue("iso"))]

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor = arcpy.UpdateCursor(int_output_Statistics)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue("orangutan1", ou1_name)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue("orangutan2", ou2_name)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue("isopleth1", ou1_iso)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue("isopleth2", ou2_iso)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.updateRow(row)


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Writing to:" + " " + int_output_Statistics)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #export_to_xls(dataset, output):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.TableToExcel_conversion2(int_output_Statistics, excel_output, "XLS")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Writing to excel file"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Writing to excel file:" + " " + excel_output)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "------------------------------")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write ("\n")




&amp;nbsp;&amp;nbsp;&amp;nbsp; f.close
&amp;nbsp;&amp;nbsp;&amp;nbsp; 


except Exception, e:
&amp;nbsp;&amp;nbsp;&amp;nbsp; # If an error occurred, print line number and error message
&amp;nbsp;&amp;nbsp;&amp;nbsp; import traceback, sys
&amp;nbsp;&amp;nbsp;&amp;nbsp; tb = sys.exc_info()[2]
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Line %i" % tb.tb_lineno
&amp;nbsp;&amp;nbsp;&amp;nbsp; print e.message&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's not perfect yet, but think it's getting there!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks again&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 12 Dec 2021 05:13:32 GMT</pubDate>
    <dc:creator>daviddellatore</dc:creator>
    <dc:date>2021-12-12T05:13:32Z</dc:date>
    <item>
      <title>Batch processing animal home range overlap data</title>
      <link>https://community.esri.com/t5/python-questions/batch-processing-animal-home-range-overlap-data/m-p/694382#M53844</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Greetings,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Am new to python, but even with rudimentary knowledge am already finding it incredibly useful.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Have put together the following script to calculate home range polygon overlap, at this point just between two user-set individuals.There's a lot more am planning on workout on, with for example the log/output system being wonky at the moment, but what I'd really like to do is set this up to iterate through various polygon shapefiles in a folder.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So if anyone could help me set it up so that ou1 (orangutan!) remains static, but then have the script iterate the ou2 variable across a set of other individuals (from polygon shapefiles all in one location), I'd really appreciate it.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It'd be fantastic to have all of the results from ou1 output onto a single table, showing the overlap he/she has with each other ou2 - but at this point I'd be ecstatic with just having the loop figured out so that it outputs each pairing to its own table, and I can compile them manually later.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;#script to calculate home range overlap (hectares) between two individuals

# import modules
import arcpy
import time
import os
from arcpy import env

env.overwriteOutput = True


# local variables
ou1 = arcpy.GetParameterAsText(0)
ou2 = arcpy.GetParameterAsText(1)
int_output = arcpy.GetParameterAsText(2)
int_output_Statistics = arcpy.GetParameterAsText(3)
logfile = arcpy.GetParameterAsText(4)


try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; f = open(logfile, "a")
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write(time.strftime('%c'))
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n")
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("------------------------------")
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n")

&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: intersect
&amp;nbsp;&amp;nbsp;&amp;nbsp; #intersect_analysis (in_features, out_feature_class, {join_attributes}, {cluster_tolerance}, {output_type})
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.analysis.Intersect([ou1, ou2], int_output, "ALL", "", "INPUT")
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Calculating home range overlap between " + ou1 + " &amp;amp; " + ou2)
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Calculating home range overlap between " + ou1 + " &amp;amp; " + ou2

&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: add field
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output, "intersect", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Adding \"Intersect\" field to " + int_output)
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Adding \"intersect\" field to " + int_output

&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: calculate field
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.CalculateField(int_output, "intersect", "!shape.area@HECTARES!", "PYTHON_9.3", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Calculating geometry of overlap between " + ou1 + " " + ou2)
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Calculating geometry of overlap between " + ou1 + " " + ou2

&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: delete identical
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.DeleteIdentical(int_output, "intersect", "", "0")
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Deleting identical values from \"Intersect\" field")
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Deleting identical values from \"Intersect\" field"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: summary statistics
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.analysis.Statistics(int_output, int_output_Statistics, "intersect SUM", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Determine overlap value in hectares")
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Determine overlap value in hectares"
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + int_output_Statistics)
&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "------------------------------")

&amp;nbsp;&amp;nbsp;&amp;nbsp; f.close



except Exception, e:
&amp;nbsp;&amp;nbsp;&amp;nbsp; # If an error occurred, print line number and error message
&amp;nbsp;&amp;nbsp;&amp;nbsp; import traceback, sys
&amp;nbsp;&amp;nbsp;&amp;nbsp; tb = sys.exc_info()[2]
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Line %i" % tb.tb_lineno
&amp;nbsp;&amp;nbsp;&amp;nbsp; print e.message&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks very much for your time,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;David&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Apr 2013 05:48:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/batch-processing-animal-home-range-overlap-data/m-p/694382#M53844</guid>
      <dc:creator>daviddellatore</dc:creator>
      <dc:date>2013-04-24T05:48:55Z</dc:date>
    </item>
    <item>
      <title>Re: Batch processing animal home range overlap data</title>
      <link>https://community.esri.com/t5/python-questions/batch-processing-animal-home-range-overlap-data/m-p/694383#M53845</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;David,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; I like to create functions, and then use them inside of models. You could do this and let the model take care of the iterations by setting the input for ou2 as a parameter, and setting its properties to "A list of values". Set an input parameter for ou1, drop the home range polygons of interest into the "ou2" parameter, and execute. It is efficient and flexible. I have a simple script to set the symbology of a raster dataset from a layer file, and use it this way often. Image of model attached.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Jim&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Apr 2013 19:09:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/batch-processing-animal-home-range-overlap-data/m-p/694383#M53845</guid>
      <dc:creator>JimCousins</dc:creator>
      <dc:date>2013-04-24T19:09:33Z</dc:date>
    </item>
    <item>
      <title>Re: Batch processing animal home range overlap data</title>
      <link>https://community.esri.com/t5/python-questions/batch-processing-animal-home-range-overlap-data/m-p/694384#M53846</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks very much for the response.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;However, I have managed to put together a loop in the script that will cycle through each shapefile and compare them all individually with one animal:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;#script to calculate home range overlap (hectares) between two individuals

# import modules
import arcpy
import time
import os
#import tabletoexcel
arcpy.ImportToolbox("xxx\Additional Conversion - Generic Tools.tbx")

from arcpy import env

env.overwriteOutput = True


# local variables

#hardcode test
ou1 = r"xxx\bbmmAnsPoly90.shp"
arcpy.env.workspace = r"xxx\ninety"
outputfolder = r"xxx\ninety\test"
#logfile = r"xxx\ansoverlap.txt"
#ou1 = arcpy.GetParameterAsText(0)
#arcpy.env.workspace = arcpy.GetParameterAsText(1)
#outputfolder = arcpy.GetParameterAsText(2)
#int_output_Statistics = arcpy.GetParameterAsText(3)
logfile = outputfolder + "\\" + ou1 + "_" + "overlaps.txt"
print logfile

try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: intersect
&amp;nbsp;&amp;nbsp;&amp;nbsp; #intersect_analysis (in_features, out_feature_class, {join_attributes}, {cluster_tolerance}, {output_type})
&amp;nbsp;&amp;nbsp;&amp;nbsp; ou2s = arcpy.ListFeatureClasses()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; for ou2 in ou2s:&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fcname1 = arcpy.Describe(ou1).basename
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fcname2 = arcpy.Describe(ou2).basename
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_output = os.path.join(outputfolder, str(fcname1 + fcname2) + ".shp")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #int_output = os.path.join(outputfolder, str(fcname1) + "_overlaps.shp")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_output_Statistics = r"xxx\Default.gdb" + "\\" + str(fcname1 + fcname2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #int_output_Statistics = r"xxx\Default.gdb" + "\\" + str(fcname1) + "_overlaps"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; excel_output = outputfolder + "\\" + str(fcname1 + fcname2)&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #excel_output = outputfolder + "\\" + str(fcname1) + "_overlaps"

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logfile = outputfolder + "\\" + fcname1 + "_" + "overlaps.txt"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists(logfile):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f = open(logfile, "a")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f = open(logfile, "w")&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write(time.strftime('%c'))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("------------------------------")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n")

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.analysis.Intersect([ou1, ou2], int_output)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Calculating home range overlap between " + fcname1 + " &amp;amp; " + fcname2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Calculating home range overlap between " + fcname1 + " &amp;amp; " + fcname2

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: add field
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output, "Overlap", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Adding \"Overlap\" field to " + int_output)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Adding \"Overlap\" field to " + int_output

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: calculate field
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.CalculateField(int_output, "Overlap", "!shape.area@HECTARES!", "PYTHON_9.3", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Calculating geometry of overlap between " + fcname1 + " " + fcname2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Calculating geometry of overlap between " + fcname1 + " " + fcname2

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: delete identical
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.DeleteIdentical(int_output, "Overlap", "", "0")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Deleting identical values from \"Overlap\" field")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Deleting identical values from \"Overlap\" field"

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # process: summary statistics
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Determine overlap value in hectares")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Determine overlap value in hectares"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.analysis.Statistics(int_output, int_output_Statistics, "Overlap SUM", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output_Statistics, 'orangutan1', 'TEXT')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output_Statistics, 'isopleth1', 'DOUBLE')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output_Statistics, 'orangutan2', 'TEXT')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.management.AddField(int_output_Statistics, 'isopleth2', 'DOUBLE')

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; search1 = arcpy.SearchCursor(ou1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for scrap in search1:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ou1_name = scrap.getValue("ou")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ou1_iso = scrap.getValue("iso")

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; search2 = arcpy.SearchCursor(ou2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for scrap in search2:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ou2_name = scrap.getValue("ou")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ou2_iso = scrap.getValue("iso")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #row_values = [(scrap.getValue("ou"), scrap.getValue("iso"))]

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor = arcpy.UpdateCursor(int_output_Statistics)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue("orangutan1", ou1_name)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue("orangutan2", ou2_name)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue("isopleth1", ou1_iso)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue("isopleth2", ou2_iso)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.updateRow(row)


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Writing to:" + " " + int_output_Statistics)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #export_to_xls(dataset, output):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.TableToExcel_conversion2(int_output_Statistics, excel_output, "XLS")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Writing to excel file"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "Writing to excel file:" + " " + excel_output)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write("\n" + "------------------------------")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write ("\n")




&amp;nbsp;&amp;nbsp;&amp;nbsp; f.close
&amp;nbsp;&amp;nbsp;&amp;nbsp; 


except Exception, e:
&amp;nbsp;&amp;nbsp;&amp;nbsp; # If an error occurred, print line number and error message
&amp;nbsp;&amp;nbsp;&amp;nbsp; import traceback, sys
&amp;nbsp;&amp;nbsp;&amp;nbsp; tb = sys.exc_info()[2]
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Line %i" % tb.tb_lineno
&amp;nbsp;&amp;nbsp;&amp;nbsp; print e.message&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's not perfect yet, but think it's getting there!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks again&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 05:13:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/batch-processing-animal-home-range-overlap-data/m-p/694384#M53846</guid>
      <dc:creator>daviddellatore</dc:creator>
      <dc:date>2021-12-12T05:13:32Z</dc:date>
    </item>
  </channel>
</rss>

