<?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: Derive Min/Max Measure from PolylineM in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/derive-min-max-measure-from-polylinem/m-p/156503#M12062</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Stuart,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Below you will find a snippet of Python code that can be used to calculate the maximum M for each feature in a featureclass. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It is a standalone script that can be executed from your Python IDE of choice. Before you do, you should change the location/name of the featureclass used and the name of the (existing) field where the result will be written. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In short it will:&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;access your featureclass&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;loop through the features&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;calculate per feature the maximum M, using GetMmax()&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;update the feature (row)&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; import arcpy

&amp;nbsp;&amp;nbsp;&amp;nbsp; # settings, replace with your own dataset and existing column name:
&amp;nbsp;&amp;nbsp;&amp;nbsp; FClassOrTable = r'C:\Project\_tmp\test.gdb\Mawares'
&amp;nbsp;&amp;nbsp;&amp;nbsp; outputField = 'MMax'

&amp;nbsp;&amp;nbsp;&amp;nbsp; # .. or make variable
&amp;nbsp;&amp;nbsp;&amp;nbsp; # FClassOrTable = arcpy.GetParameterAsText(0)
&amp;nbsp;&amp;nbsp;&amp;nbsp; # outputField = arcpy.GetParameterAsText(1)

&amp;nbsp;&amp;nbsp;&amp;nbsp; # update featureclass
&amp;nbsp;&amp;nbsp;&amp;nbsp; fields = ['SHAPE@',outputField]
&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.UpdateCursor(FClassOrTable, fields) as cursor:
&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[1] = GetMmax(row[0])
&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; del row
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; del cursor

def GetMmax(geom):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # get the max(M) from a geometry
&amp;nbsp;&amp;nbsp;&amp;nbsp; mmax = -9999
&amp;nbsp;&amp;nbsp;&amp;nbsp; for part in geom.getPart():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for point in part:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m = point.M
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if m &amp;gt; mmax:
&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; mmax = m
&amp;nbsp;&amp;nbsp;&amp;nbsp; return mmax

if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can also add the script to a toolbox. The tool can eventually be used in modelbuilder in case you want to combine it with additional tools. In case you want to create a tool from it, you should uncomment the "&lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;arcpy.GetParameterAsText()&lt;/SPAN&gt;&lt;SPAN&gt;" lines and define the parameters properly. &lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;first: the location/name of the featureclass (Type: Feature Layer)&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;second: the field that will store the max M (Type: Field, obtained from the featureclass, and apply a fields filter to only show the double or floating fields).&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;BR /&gt;&lt;STRONG&gt;Links to additional information:&lt;/STRONG&gt;&lt;BR /&gt;&lt;A href="http://resources.arcgis.com/en/help/main/10.1/index.html#/UpdateCursor/018w00000014000000/" rel="nofollow noopener noreferrer" target="_blank"&gt;http://resources.arcgis.com/en/help/main/10.1/index.html#/UpdateCursor/018w00000014000000/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Xander&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 08:18:19 GMT</pubDate>
    <dc:creator>XanderBakker</dc:creator>
    <dc:date>2021-12-11T08:18:19Z</dc:date>
    <item>
      <title>Derive Min/Max Measure from PolylineM</title>
      <link>https://community.esri.com/t5/python-questions/derive-min-max-measure-from-polylinem/m-p/156502#M12061</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am trying to derive the minimum and maximum measure for each segment from a PolylineM feature.&amp;nbsp; In the past I used the below VB code from an old colleague in ArcMap 9.3.1 which worked perfectly.&amp;nbsp; I am now trying to do this in Model Builder in 10.1, however, I understand 10.1 does not support VB codes anymore.&amp;nbsp; I am a bit weak on coding so maybe someone can help me rework this code in Python?&amp;nbsp; Or if they know a better way to do this?&amp;nbsp; Thanks!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;VB Code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dim pGeometry As IGeometry&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dim dMMax As Double&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dim pMAware As IMAware&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dim pMColl As IMCollection&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If (Not IsNull([Shape])) Then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; Set pGeometry = [Shape]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; If (Not pGeometry.IsEmpty) Then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pMAware = pGeometry&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If pMAware.MAware Then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pMColl = pGeometry&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dMMax = pMColl.MMax&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; End If&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;End If&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Aug 2013 18:32:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/derive-min-max-measure-from-polylinem/m-p/156502#M12061</guid>
      <dc:creator>StuartBlumberg</dc:creator>
      <dc:date>2013-08-30T18:32:29Z</dc:date>
    </item>
    <item>
      <title>Re: Derive Min/Max Measure from PolylineM</title>
      <link>https://community.esri.com/t5/python-questions/derive-min-max-measure-from-polylinem/m-p/156503#M12062</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Stuart,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Below you will find a snippet of Python code that can be used to calculate the maximum M for each feature in a featureclass. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It is a standalone script that can be executed from your Python IDE of choice. Before you do, you should change the location/name of the featureclass used and the name of the (existing) field where the result will be written. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In short it will:&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;access your featureclass&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;loop through the features&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;calculate per feature the maximum M, using GetMmax()&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;update the feature (row)&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; import arcpy

&amp;nbsp;&amp;nbsp;&amp;nbsp; # settings, replace with your own dataset and existing column name:
&amp;nbsp;&amp;nbsp;&amp;nbsp; FClassOrTable = r'C:\Project\_tmp\test.gdb\Mawares'
&amp;nbsp;&amp;nbsp;&amp;nbsp; outputField = 'MMax'

&amp;nbsp;&amp;nbsp;&amp;nbsp; # .. or make variable
&amp;nbsp;&amp;nbsp;&amp;nbsp; # FClassOrTable = arcpy.GetParameterAsText(0)
&amp;nbsp;&amp;nbsp;&amp;nbsp; # outputField = arcpy.GetParameterAsText(1)

&amp;nbsp;&amp;nbsp;&amp;nbsp; # update featureclass
&amp;nbsp;&amp;nbsp;&amp;nbsp; fields = ['SHAPE@',outputField]
&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.UpdateCursor(FClassOrTable, fields) as cursor:
&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[1] = GetMmax(row[0])
&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; del row
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; del cursor

def GetMmax(geom):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # get the max(M) from a geometry
&amp;nbsp;&amp;nbsp;&amp;nbsp; mmax = -9999
&amp;nbsp;&amp;nbsp;&amp;nbsp; for part in geom.getPart():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for point in part:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m = point.M
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if m &amp;gt; mmax:
&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; mmax = m
&amp;nbsp;&amp;nbsp;&amp;nbsp; return mmax

if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can also add the script to a toolbox. The tool can eventually be used in modelbuilder in case you want to combine it with additional tools. In case you want to create a tool from it, you should uncomment the "&lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;arcpy.GetParameterAsText()&lt;/SPAN&gt;&lt;SPAN&gt;" lines and define the parameters properly. &lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;first: the location/name of the featureclass (Type: Feature Layer)&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;second: the field that will store the max M (Type: Field, obtained from the featureclass, and apply a fields filter to only show the double or floating fields).&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;BR /&gt;&lt;STRONG&gt;Links to additional information:&lt;/STRONG&gt;&lt;BR /&gt;&lt;A href="http://resources.arcgis.com/en/help/main/10.1/index.html#/UpdateCursor/018w00000014000000/" rel="nofollow noopener noreferrer" target="_blank"&gt;http://resources.arcgis.com/en/help/main/10.1/index.html#/UpdateCursor/018w00000014000000/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Xander&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 08:18:19 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/derive-min-max-measure-from-polylinem/m-p/156503#M12062</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-11T08:18:19Z</dc:date>
    </item>
    <item>
      <title>Re: Derive Min/Max Measure from PolylineM</title>
      <link>https://community.esri.com/t5/python-questions/derive-min-max-measure-from-polylinem/m-p/156504#M12063</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; color: black; font-size: 9pt !important; background-color: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.UpdateCursor(FClassOrTable, fields) as cursor:&amp;nbsp; &lt;/SPAN&gt;
&lt;SPAN style="font-weight: inherit; font-style: inherit; color: black; font-size: 9pt !important; background-color: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor:&amp;nbsp; &lt;/SPAN&gt;
&lt;SPAN style="font-weight: inherit; font-style: inherit; color: black; font-size: 9pt !important; background-color: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[1] = GetMmax(row[0]) &lt;/SPAN&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Instead of using a function to breakdown that Mmax value, you could also just use the extent object, which comes as part of the Shape@.&amp;nbsp; Like this:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;SPAN style="color: black; font-weight: inherit; font-style: inherit; font-size: 9pt !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.UpdateCursor(FClassOrTable, fields) as cursor:&amp;nbsp; &lt;/SPAN&gt;
&lt;SPAN style="color: black; font-weight: inherit; font-style: inherit; font-size: 9pt !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor:&amp;nbsp; &lt;/SPAN&gt;
&lt;SPAN style="color: black; font-weight: inherit; font-style: inherit; font-size: 9pt !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[1] = row[0].extent.MMax&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 08:18:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/derive-min-max-measure-from-polylinem/m-p/156504#M12063</guid>
      <dc:creator>JamesGraham</dc:creator>
      <dc:date>2021-12-11T08:18:21Z</dc:date>
    </item>
  </channel>
</rss>

