<?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: calculate # of features with distance and time constraints in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411811#M32434</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class="im" style="color: #500050; font-family: arial, sans-serif; font-size: 12.7272720336914px;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #500050; font-family: arial, sans-serif; font-size: 12.7272720336914px;"&gt;Xander,&lt;/P&gt;&lt;P style="color: #500050; font-family: arial, sans-serif; font-size: 12.7272720336914px;"&gt;&lt;/P&gt;&lt;P style="color: #500050; font-family: arial, sans-serif; font-size: 12.7272720336914px;"&gt;is there a problem with the code?&amp;nbsp; &lt;/P&gt;&lt;P style="font-family: arial, sans-serif; font-size: 12.7272720336914px; color: #500050;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, sans-serif; font-size: 12.7272720336914px; color: #500050;"&gt;I want to calculate number of fires and average size of fires within 5km of a houses in the past 7 years. I saw that number of fire is 1 but max, min and average size of fire is 0. &lt;/P&gt;&lt;P style="font-family: arial, sans-serif; font-size: 12.7272720336914px; color: #500050;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, sans-serif; font-size: 12.7272720336914px; color: #500050;"&gt;if there is only one fire, these sizes should be the size of that fire, right?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 29 Jul 2015 20:21:32 GMT</pubDate>
    <dc:creator>QiuhuaMa</dc:creator>
    <dc:date>2015-07-29T20:21:32Z</dc:date>
    <item>
      <title>calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411803#M32426</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Earlier I asked how to find the nearest fire that burned 7 years ago and get helped. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the detail the discussion:&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.esri.com/message/491873?et=watches.email.thread#491873" title="https://community.esri.com/message/491873?et=watches.email.thread#491873"&gt;https://community.esri.com/message/491873?et=watches.email.thread#491873&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P dir="ltr" style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;Another way to check the effect of fire on house is to count number and size of fire within a certain distance in the last 7 years.&lt;/P&gt;&lt;P dir="ltr" style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;For example, I want to find number of fires within 5km of each house in the past 7 years, then calculate their average size!&lt;/P&gt;&lt;P dir="ltr" style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;&lt;/P&gt;&lt;P dir="ltr" style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;How to code this in Python? &lt;/P&gt;&lt;P dir="ltr" style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;&lt;/P&gt;&lt;P dir="ltr" style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;My sample data is attached. SHAPE_AERA is the size of fire. &lt;/P&gt;&lt;P dir="ltr" style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;&lt;/P&gt;&lt;P dir="ltr" style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;Thanks so much, &lt;/P&gt;&lt;P dir="ltr" style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;Chelsea&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Apr 2015 22:21:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411803#M32426</guid>
      <dc:creator>QiuhuaMa</dc:creator>
      <dc:date>2015-04-13T22:21:37Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411804#M32427</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A href="https://community.esri.com/migrated-users/134368" target="_blank"&gt;Qiuhua Ma&lt;/A&gt; ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a look at the changed code below. To run it, make sure you reference your shapefiles on lines 07 and 08.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Changes are:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;additional output field names (lines 17 to 21)&lt;/LI&gt;&lt;LI&gt;adding the additional fields (lines 27 to 31)&lt;/LI&gt;&lt;LI&gt;on line 35 and 36 add the fields to the list of fields used in the cursor&lt;/LI&gt;&lt;LI&gt;line 44 calls a function getNearestFireAndAreaStats (defined on line 58) which replaces the function getNearestFire. This new function returns a list with 6 results.&lt;/LI&gt;&lt;LI&gt;Lines 45-50 reads the results and sets them to the current row&lt;/LI&gt;&lt;LI&gt;On line 58 the function getNearestFireAndAreaStats starts:&lt;UL&gt;&lt;LI&gt;additional variables on lines 67 - 71&lt;/LI&gt;&lt;LI&gt;lines 92 - 101 determines the min, max, sum and count of the relevant fires&lt;/LI&gt;&lt;LI&gt;line 108 - 109 calculates the mean area (if there are fires found)&lt;/LI&gt;&lt;LI&gt;line 110 returns the list of results for the current house&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
from datetime import datetime, date, timedelta
from dateutil.relativedelta import relativedelta

def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; # input fc's
&amp;nbsp;&amp;nbsp;&amp;nbsp; fc_house = r"D:\Xander\GeoNet\DistFireHouse\shp\housesaledata.shp"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fc_fire = r"D:\Xander\GeoNet\DistFireHouse\shp\firehistory_NAD_fips3002_feet.shp"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # input field
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_date_sale = "ma_date_dt"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # output fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_dist = "Dist2Fire"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_fire_oid = "FireOID"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # additional fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireMinArea = "FireMinAr"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireMaxArea = "FireMaxAr"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireMeanArea = "FireMeanAr"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireCount = "FireCount"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # add fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_dist, "DOUBLE")
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_fire_oid, "LONG")

&amp;nbsp;&amp;nbsp;&amp;nbsp; # add additional fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_FireMinArea, "DOUBLE")
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_FireMaxArea, "DOUBLE")
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_FireMeanArea, "DOUBLE")
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_FireCount, "LONG")

&amp;nbsp;&amp;nbsp;&amp;nbsp; # loop through houses
&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; flds = ("SHAPE@", fld_date_sale, fld_dist, fld_fire_oid, fld_FireMinArea,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireMaxArea, fld_FireMeanArea, fld_FireCount)
&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.UpdateCursor(fc_house, flds) as curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt += 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if cnt % 25 == 0:
&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;&amp;nbsp; print "Processing house: {0}".format(cnt)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt = row[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date_sale = row[1]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; results = getNearestFireAndAreaStats(fc_fire, pnt, date_sale)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[2] = results[0] # dist nearest
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[3] = results[1] # oid nearest
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[4] = results[2] # Min Area
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[5] = results[3] # Max Area
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[6] = results[4] # Mean Area
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[7] = results[5] # Count Fires
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curs.updateRow(row)


def addField(fc, fldname, fldtype):
&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(arcpy.ListFields(fc, wild_card=fldname)) == 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(fc, fldname, fldtype)

def getNearestFireAndAreaStats(fc, pnt, date_sale):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # input fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_year = "FIRE_YEAR"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_month = "FIRE_MONTH"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_day = "FIRE_DAY"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # defaults
&amp;nbsp;&amp;nbsp;&amp;nbsp; min_dist = 999999
&amp;nbsp;&amp;nbsp;&amp;nbsp; oid_fire = -1
&amp;nbsp;&amp;nbsp;&amp;nbsp; min_area = 9999999999
&amp;nbsp;&amp;nbsp;&amp;nbsp; max_area = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; sum_area = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; mean_area = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt_fires = 0

&amp;nbsp;&amp;nbsp;&amp;nbsp; # results
&amp;nbsp;&amp;nbsp;&amp;nbsp; res = []

&amp;nbsp;&amp;nbsp;&amp;nbsp; flds = ("SHAPE@", "OID@", fld_year, fld_month, fld_day)
&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.SearchCursor(fc, flds) as curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; polygon = row[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oid = row[1]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; year = int(row[2])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&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;&amp;nbsp; month = int(row[3])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&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;&amp;nbsp; month = 6
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&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;&amp;nbsp; day = int(row[4])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&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;&amp;nbsp; day = 15

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkDate(date_sale, year, month, day):
&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;&amp;nbsp; # these are the fires we are looking for
&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;&amp;nbsp; if cnt_fires == 0:
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_area = polygon.area
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max_area = polygon.area
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum_area = polygon.area
&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if polygon.area &amp;lt; min_area: min_area = polygon.area
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if polygon.area &amp;gt; max_area: max_area = polygon.area
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum_area += polygon.area
&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;&amp;nbsp; cnt_fires += 1

&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;&amp;nbsp; dist = pnt.distanceTo(polygon)
&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;&amp;nbsp; if dist &amp;lt; min_dist:
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_dist = dist
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oid_fire = oid

&amp;nbsp;&amp;nbsp;&amp;nbsp; if cnt_fires &amp;gt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mean_area = sum_area / float(cnt_fires)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return [min_dist, oid_fire, min_area, max_area, mean_area, cnt_fires]


def chkDate(date_sale, year_fire, month_fire, day_fire):
&amp;nbsp;&amp;nbsp;&amp;nbsp; date_fire = datetime(year=year_fire, month=month_fire, day=day_fire)
&amp;nbsp;&amp;nbsp;&amp;nbsp; date_2monthsbefore_sale = date_sale + relativedelta(months=-2)
&amp;nbsp;&amp;nbsp;&amp;nbsp; year_sale = date_sale.year
&amp;nbsp;&amp;nbsp;&amp;nbsp; test = (year_fire &amp;gt;= year_sale - 7) and (date_fire &amp;lt; date_2monthsbefore_sale)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return test

if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 18:41:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411804#M32427</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-11T18:41:24Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411805#M32428</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Xander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks so much! however I cannot see which line restrict distance, # of&lt;/P&gt;&lt;P&gt;fires and average size of fires within 5kms of a house in the past 7 years!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Qiuhua&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Apr 2015 15:21:11 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411805#M32428</guid>
      <dc:creator>QiuhuaMa</dc:creator>
      <dc:date>2015-04-14T15:21:11Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411806#M32429</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I guess I should have read you question better... there is no distance tolerance for the fires. However this is relatively easy to do. See the code below. I just did a run, but less than 200 house have at most a single fire within a distance of 5km. I am running a test with 25km to check the results.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Code:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;The search distance can be specified on line 61&lt;/LI&gt;&lt;LI&gt;Since your data uses foot as linear unit and your search distance is metric, line 62 contains the conversion from feet to meter&lt;/LI&gt;&lt;LI&gt;Line 102 checks to see if the distance is within the search distance&lt;/LI&gt;&lt;LI&gt;minimum distance and oid of nearest fire is provided anyway.&lt;/LI&gt;&lt;LI&gt;To make it faster you could make a selection (select by location) of the fires that are with the search distance and use that as input.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
from datetime import datetime, date, timedelta
from dateutil.relativedelta import relativedelta

def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; # input fc's
&amp;nbsp;&amp;nbsp;&amp;nbsp; fc_house = r"D:\Xander\GeoNet\DistFireHouse\shp\housesaledata.shp"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fc_fire = r"D:\Xander\GeoNet\DistFireHouse\shp\firehistory_NAD_fips3002_feet.shp"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # input field
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_date_sale = "ma_date_dt"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # output fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_dist = "Dist2Fire"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_fire_oid = "FireOID"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # additional fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireMinArea = "FireMinAr"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireMaxArea = "FireMaxAr"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireMeanArea = "FireMeanAr"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireCount = "FireCount"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # add fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_dist, "DOUBLE")
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_fire_oid, "LONG")

&amp;nbsp;&amp;nbsp;&amp;nbsp; # add additional fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_FireMinArea, "DOUBLE")
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_FireMaxArea, "DOUBLE")
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_FireMeanArea, "DOUBLE")
&amp;nbsp;&amp;nbsp;&amp;nbsp; addField(fc_house, fld_FireCount, "LONG")

&amp;nbsp;&amp;nbsp;&amp;nbsp; # loop through houses
&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; flds = ("SHAPE@", fld_date_sale, fld_dist, fld_fire_oid, fld_FireMinArea,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_FireMaxArea, fld_FireMeanArea, fld_FireCount)
&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.UpdateCursor(fc_house, flds) as curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt += 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if cnt % 25 == 0:
&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;&amp;nbsp; print "Processing house: {0}".format(cnt)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt = row[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date_sale = row[1]

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; results = getNearestFireAndAreaStats(fc_fire, pnt, date_sale)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[2] = results[0] # dist nearest
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[3] = results[1] # oid nearest
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[4] = results[2] # Min Area
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[5] = results[3] # Max Area
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[6] = results[4] # Mean Area
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[7] = results[5] # Count Fires
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curs.updateRow(row)


def addField(fc, fldname, fldtype):
&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(arcpy.ListFields(fc, wild_card=fldname)) == 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(fc, fldname, fldtype)

def getNearestFireAndAreaStats(fc, pnt, date_sale):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # maximum distance for fire
&amp;nbsp;&amp;nbsp;&amp;nbsp; search_dist = 5000.0 # meters
&amp;nbsp;&amp;nbsp;&amp;nbsp; ft_to_m = 0.30480061 # conversion feet to meter

&amp;nbsp;&amp;nbsp;&amp;nbsp; # input fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_year = "FIRE_YEAR"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_month = "FIRE_MONTH"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_day = "FIRE_DAY"
&amp;nbsp;&amp;nbsp;&amp;nbsp; fld_area = "SHAPE_AREA"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # defaults
&amp;nbsp;&amp;nbsp;&amp;nbsp; min_dist = 999999
&amp;nbsp;&amp;nbsp;&amp;nbsp; oid_fire = -1
&amp;nbsp;&amp;nbsp;&amp;nbsp; min_area = 9999999999
&amp;nbsp;&amp;nbsp;&amp;nbsp; max_area = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; sum_area = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; mean_area = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt_fires = 0

&amp;nbsp;&amp;nbsp;&amp;nbsp; # results
&amp;nbsp;&amp;nbsp;&amp;nbsp; res = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; flds = ("SHAPE@", "OID@", fld_year, fld_month, fld_day, fld_area)
&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.SearchCursor(fc, flds) as curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; polygon = row[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oid = row[1]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; year = int(row[2])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&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;&amp;nbsp; month = int(row[3])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&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;&amp;nbsp; month = 6
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&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;&amp;nbsp; day = int(row[4])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&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;&amp;nbsp; day = 15

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if chkDate(date_sale, year, month, day):
&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;&amp;nbsp; # these are the fires we are looking for
&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;&amp;nbsp; dist = pnt.distanceTo(polygon)
&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;&amp;nbsp; if dist &amp;lt; min_dist:
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_dist = dist
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oid_fire = oid
&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;&amp;nbsp; if (dist * ft_to_m) &amp;lt; search_dist:
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; area = row[5]
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if cnt_fires == 0:
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_area = area
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max_area = area
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum_area = area
&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if area &amp;lt; min_area: min_area = area
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if area &amp;gt; max_area: max_area = area
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum_area += area
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt_fires += 1

&amp;nbsp;&amp;nbsp;&amp;nbsp; if cnt_fires &amp;gt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mean_area = sum_area / float(cnt_fires)
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_area = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; return [min_dist * ft_to_m, oid_fire, min_area, max_area, mean_area, cnt_fires]


def chkDate(date_sale, year_fire, month_fire, day_fire):
&amp;nbsp;&amp;nbsp;&amp;nbsp; date_fire = datetime(year=year_fire, month=month_fire, day=day_fire)
&amp;nbsp;&amp;nbsp;&amp;nbsp; date_2monthsbefore_sale = date_sale + relativedelta(months=-2)
&amp;nbsp;&amp;nbsp;&amp;nbsp; year_sale = date_sale.year
&amp;nbsp;&amp;nbsp;&amp;nbsp; test = (year_fire &amp;gt;= year_sale - 7) and (date_fire &amp;lt; date_2monthsbefore_sale)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return test

if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 18:41:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411806#M32429</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-11T18:41:27Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411807#M32430</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, you are right! Most houses in my data are located in the city and far&lt;/P&gt;&lt;P&gt;away from the fires. With 25km, 70% of the houses should have more than one&lt;/P&gt;&lt;P&gt;fire!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Qiuhua&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Apr 2015 19:39:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411807#M32430</guid>
      <dc:creator>QiuhuaMa</dc:creator>
      <dc:date>2015-04-14T19:39:49Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411808#M32431</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Indeed it look a lot more dramatic if the search distance is raised to 25km:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By Count:&lt;/P&gt;&lt;P&gt;&lt;IMG alt="FireByCount.png" class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/85206_FireByCount.png" style="width: 620px; height: 342px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By Mean Area:&lt;/P&gt;&lt;P&gt;&lt;IMG alt="FireByMeanArea.png" class="image-2 jive-image" src="https://community.esri.com/legacyfs/online/85207_FireByMeanArea.png" style="width: 620px; height: 342px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;BTW, if your question has been answered, please mark the correct answer. If any post was helpful, you can also mark it as such &lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Apr 2015 23:41:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411808#M32431</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2015-04-14T23:41:21Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411809#M32432</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Xander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am a little confused about dist2fire and fireoid. They refer to the&lt;/P&gt;&lt;P&gt;nearest fire burned in the past 7 years or the nearest one burned within 5&lt;/P&gt;&lt;P&gt;kms  in the last 7 years?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;qiuhua&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Apr 2015 21:29:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411809#M32432</guid>
      <dc:creator>QiuhuaMa</dc:creator>
      <dc:date>2015-04-16T21:29:49Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411810#M32433</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A href="https://community.esri.com/migrated-users/134368"&gt;Qiuhua Ma&lt;/A&gt; ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The min_dist (Dist2Fire) and oid_fire (FireOID) are still the same as before. They represent to distance to and oid of the nearest fire. I left it in since for each fire polygon that if within the date range the distance is calculated (the variable dist on line 98). This distance "dist" is used to see if it is within the search tolerance. If it is, the fire is considered for the area and count statistics. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Indifferent of the search tolerance the minimum distance is registered. So, you will see cases (houses) that will have a count of 0 fires, but do have info on the nearest fire. You will also see that in those cases the distance (minimum distance) will be higher than the search tolerance specified on line 61 (search_dist).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For the specific question in this thread, you could ignore the output fields "Dist2Fire" and "FireOID". The relevant fields will be "FireMinAr", "FireMaxAr", "FireMeanAr" and "FireCount". &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this makes it a little clearer...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind regards, Xander&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Apr 2015 22:17:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411810#M32433</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2015-04-16T22:17:21Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411811#M32434</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class="im" style="color: #500050; font-family: arial, sans-serif; font-size: 12.7272720336914px;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #500050; font-family: arial, sans-serif; font-size: 12.7272720336914px;"&gt;Xander,&lt;/P&gt;&lt;P style="color: #500050; font-family: arial, sans-serif; font-size: 12.7272720336914px;"&gt;&lt;/P&gt;&lt;P style="color: #500050; font-family: arial, sans-serif; font-size: 12.7272720336914px;"&gt;is there a problem with the code?&amp;nbsp; &lt;/P&gt;&lt;P style="font-family: arial, sans-serif; font-size: 12.7272720336914px; color: #500050;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, sans-serif; font-size: 12.7272720336914px; color: #500050;"&gt;I want to calculate number of fires and average size of fires within 5km of a houses in the past 7 years. I saw that number of fire is 1 but max, min and average size of fire is 0. &lt;/P&gt;&lt;P style="font-family: arial, sans-serif; font-size: 12.7272720336914px; color: #500050;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, sans-serif; font-size: 12.7272720336914px; color: #500050;"&gt;if there is only one fire, these sizes should be the size of that fire, right?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Jul 2015 20:21:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411811#M32434</guid>
      <dc:creator>QiuhuaMa</dc:creator>
      <dc:date>2015-07-29T20:21:32Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411812#M32435</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Are those results based on the dataset you posted earlier or are you using&amp;nbsp; new set of data? If so please post a sample of this data to be able to reproduce the problem.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 30 Jul 2015 00:34:56 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411812#M32435</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2015-07-30T00:34:56Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411813#M32436</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think I figured out the problem. Input Field Shape_area is 0 in my new&lt;/P&gt;&lt;P&gt;data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;qiuhua&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 30 Jul 2015 16:41:44 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411813#M32436</guid>
      <dc:creator>QiuhuaMa</dc:creator>
      <dc:date>2015-07-30T16:41:44Z</dc:date>
    </item>
    <item>
      <title>Re: calculate # of features with distance and time constraints</title>
      <link>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411814#M32437</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is it an empty geometry? In that case I suppose it can't calculate distances and errors will occur. I you exclude it from the dataset it should work. If not post it and I will have a look.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind regards, Xander&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 30 Jul 2015 18:55:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-of-features-with-distance-and-time/m-p/411814#M32437</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2015-07-30T18:55:08Z</dc:date>
    </item>
  </channel>
</rss>

