<?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 Trying to calculate fields from paired points in a shapefile in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606381#M47392</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have pairs of points that share a common id "COMID".&amp;nbsp; I would like to calculate an empty field with an equation that uses values from both points in the pair.&amp;nbsp; I am trying to use UpdateCursor and a for loop and then accessing the next row with row.next() but I don't think this is right.&amp;nbsp; What I want to say is-&amp;nbsp; for each row: if id1 = id2 then perform this calculation with values from row1 and row 2.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyway here is what I have and it does not work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;upcur = gp.UpdateCursor(sin_pt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for row in upcur:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id1 = row.COMID&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id2 = row.next().COMID&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if id1 == id2:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yval1 = row.NORTH&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yval2 = row.next().NORTH&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xval1 = row.EAST&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xval2 = row.next().EAST&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distval = math.sqrt(((xval1 - xval2)**2) + ((yval1-yval2)**2))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length = row.LENGTHKM * 1000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.DIST = length / distval&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; upcur.updateRow(row)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#No error messages but the field is still empty&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#thanks&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 10 Nov 2011 19:26:42 GMT</pubDate>
    <dc:creator>DavidHarlan</dc:creator>
    <dc:date>2011-11-10T19:26:42Z</dc:date>
    <item>
      <title>Trying to calculate fields from paired points in a shapefile</title>
      <link>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606381#M47392</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have pairs of points that share a common id "COMID".&amp;nbsp; I would like to calculate an empty field with an equation that uses values from both points in the pair.&amp;nbsp; I am trying to use UpdateCursor and a for loop and then accessing the next row with row.next() but I don't think this is right.&amp;nbsp; What I want to say is-&amp;nbsp; for each row: if id1 = id2 then perform this calculation with values from row1 and row 2.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyway here is what I have and it does not work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;upcur = gp.UpdateCursor(sin_pt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for row in upcur:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id1 = row.COMID&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id2 = row.next().COMID&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if id1 == id2:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yval1 = row.NORTH&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yval2 = row.next().NORTH&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xval1 = row.EAST&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xval2 = row.next().EAST&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distval = math.sqrt(((xval1 - xval2)**2) + ((yval1-yval2)**2))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length = row.LENGTHKM * 1000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.DIST = length / distval&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; upcur.updateRow(row)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#No error messages but the field is still empty&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#thanks&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Nov 2011 19:26:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606381#M47392</guid>
      <dc:creator>DavidHarlan</dc:creator>
      <dc:date>2011-11-10T19:26:42Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to calculate fields from paired points in a shapefile</title>
      <link>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606382#M47393</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Here is the code with formatting&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
upcur = gp.UpdateCursor(sin_pt)
for row in upcur:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id1 = row.COMID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id2 = row.next().COMID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if id1 == id2:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yval1 = row.NORTH
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yval2 = row.next().NORTH
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xval1 = row.EAST
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xval2 = row.next().EAST
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distval = math.sqrt(((xval1 - xval2)**2) + ((yval1-yval2)**2))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length = row.LENGTHKM * 1000
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.DIST = length / distval
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; upcur.updateRow(row)&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 01:59:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606382#M47393</guid>
      <dc:creator>DavidHarlan</dc:creator>
      <dc:date>2021-12-12T01:59:00Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to calculate fields from paired points in a shapefile</title>
      <link>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606383#M47394</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;A cursor can really only access one row at a time. All that jumping-to-the-next-row stuff is just going to make a mess of things.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;try breaking the operation into steps:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;first, run a search cursor all the way through to build a list of unique COMID values (we can call the list comidList). &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;next, itterate through that list making a new search cursor with a query string for that COMID for each itteration. This gets you a set of rows with just that COMID (that pair of points). &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Each point has two values you want, eh? (NORTH and EAST)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Run through the two points, making a list of the NORTH and EAST values of point 1 (lets call it pnt1List)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; [north_val1, east_val1] &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and another list of the NORTH and EAST values of point 2 (pnt2List).&amp;nbsp; [north_val2, east_val2] &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;append these lists to a new list (pntValList). the first entry will look like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[[north_val1, east_val1],[north_val2, east_val2]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now append that comIdList to a new list (the bigList):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[[[north_val1, east_val1],[north_val2, east_val2]]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;set all the lists EXCEPT bigList and comidList &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;that is: pnt1List, pnt2List, and pntValList, to [] (we will reuse these lists in the next itteration)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;move your cursor to the next COMID in comidList, and do it all again.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You are building bigList to be a set of nested lists of pairs of NORTH and EAST values for each COMID in the same order as your list of COMID values:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;([pnt1List] and [pnt2List] inside [pntValList], inside [bigList]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for example:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[[north_val1, east_val1],[north_val2, east_val2]],&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[[north_val1, east_val1],[north_val2, east_val2]],&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[[north_val1, east_val1],[north_val2, east_val2]],&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[[north_val1, east_val1],[north_val2, east_val2]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;NOW you can itterate through the COMIDs in the comidList list again, this time with an Update cursor.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;the indivdual NORTH and EAST values will be paired in the same order as your COMIDs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;yval1 = bigList[0][0][0]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;xval1 = bigList[0][0][1]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;yval2 = bigList[0][1][0]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;xval2 = bigList[0][1][1]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;map of indexes -&amp;gt; bigList[bigList index][nested pntValList index][nested pnt?List index]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;gives you the y and x values for the first point pairs&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;perform your calculations and set your new item values.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;use variables for the index numbers inside the square brackets so they incremant properly.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Nov 2011 18:57:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606383#M47394</guid>
      <dc:creator>markdenil</dc:creator>
      <dc:date>2011-11-15T18:57:57Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to calculate fields from paired points in a shapefile</title>
      <link>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606384#M47395</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Oops.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now append that comIdList to a new list (the bigList):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[[[north_val1, east_val1],[north_val2, east_val2]]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;should be:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now append that pntValList to a new list (the bigList):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[[[north_val1, east_val1],[north_val2, east_val2]]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;... pntValList is the list of N &amp;amp; E values for the pair of points, and is what you want in bigList&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;my mistake...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Nov 2011 18:34:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606384#M47395</guid>
      <dc:creator>markdenil</dc:creator>
      <dc:date>2011-11-17T18:34:08Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to calculate fields from paired points in a shapefile</title>
      <link>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606385#M47396</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;It took me awhile to understand your suggestion (my fault not yours).&amp;nbsp; But once I figured it out it worked like a charm.&amp;nbsp; Still took me about another day to get the script working but it works great now.&amp;nbsp; Thanks a lot mdenil!&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Don't know if my script is the most elegant thing but it functions correctly and I learned a whole lot writing it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;check it out if you like...I think I attached it to the post&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Nov 2011 18:20:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/trying-to-calculate-fields-from-paired-points-in-a/m-p/606385#M47396</guid>
      <dc:creator>DavidHarlan</dc:creator>
      <dc:date>2011-11-23T18:20:47Z</dc:date>
    </item>
  </channel>
</rss>

