<?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: Errors in arcpy's Polygon class in Geoprocessing Questions</title>
    <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421922#M14220</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Dan,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I appreciate your concern, and thanks for bringing light to the problem.&amp;nbsp; Looks like the geometry is essentially low-precision when created in this way.&amp;nbsp; As a workaround, I was able to get much better precision if I applied a SpatialReference object to the class' 2nd parameter.&amp;nbsp; Not ideal of course, but better than the alternative.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;# sr being a SpatialReference
poly = arcpy.Polyline(array, sr)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I will update this thread shortly when I have a proper Nimbus ID to track on.&amp;nbsp; I'm marking this issue as candidate for 10.0 sp1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Dave&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 19:04:18 GMT</pubDate>
    <dc:creator>DavidWynne</dc:creator>
    <dc:date>2021-12-11T19:04:18Z</dc:date>
    <item>
      <title>Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421913#M14211</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN&gt;This code using arcpy's polygon class to calculate simple properties for simple shapes are not accurate.&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE class="plain"&gt;''' GeometryErrorsDemo.py  Demonstrates calculating various properties for polygons  ''' import arcpy pnt = arcpy.Point()  triangle = [[0,0],[0,1],[1,0]] square = [[0,0],[0,1],[1,1],[1,0]] rectangle = [[0,0],[0,1],[2,1],[2,0]] polygons = [triangle, square, rectangle] labels = ["Triangle", "Square", "Rectangle"] array = arcpy.Array() polys = [] for i in range(len(polygons)): &amp;nbsp; a_poly = polygons&lt;I&gt; &amp;nbsp; print "\n", labels&lt;I&gt;," Coordinates: ", a_poly &amp;nbsp; for pair in a_poly: &amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.X = pair[0] &amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.Y = pair[1] &amp;nbsp;&amp;nbsp;&amp;nbsp; array.add(pnt) &amp;nbsp;&amp;nbsp;&amp;nbsp; print " X %20.16f&amp;nbsp; Y %20.16f" % (pnt.X, pnt.Y) &amp;nbsp; array.add(array.getObject(0)) &amp;nbsp; poly = arcpy.Polygon(array) &amp;nbsp; print "Polygon properties:" &amp;nbsp; print " area %20.16f\n length %s" % (poly.area, poly.length) &amp;nbsp; print " centroid %s\n true centroid %s " % (poly.centroid, poly.trueCentroid)  &amp;nbsp; print " first point %s\n last point %s " % (poly.firstPoint, poly.lastPoint) &amp;nbsp; print " extent %s " % (poly.extent) &amp;nbsp; print " hull %s\n " % (poly.hullRectangle) &amp;nbsp; array.removeAll() &amp;nbsp; polys.append(poly)&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;DIV style="display: none;"&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Results for a simple triangle, square and rectangle are as follows:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Triangle&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [0, 1], [1, 0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polygon properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; area&amp;nbsp;&amp;nbsp; 0.5001220777630806&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length 3.41463033649&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.3333740234375 0.3333740234375 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.3333740234375 0.3333740234375 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 0 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 1.0001220703125 1.0001220703125 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; hull 1.0001220703125 2.22044604925031E-16 0.50006103515625 -0.50006103515625 -0.50006103515625 0.50006103515625 0 1.0001220703125&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Square&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [0, 1], [1, 1], [1, 0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polygon properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; area&amp;nbsp;&amp;nbsp; 1.0002441555261612&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length 4.00048828125&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.50006103515625 0.50006103515625 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.50006103515625 0.50006103515625 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 0 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 1.0001220703125 1.0001220703125 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; hull 6.12398146082414E-17 1.0001220703125 1.0001220703125 1.0001220703125 1.0001220703125 0 0 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rectangle&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [0, 1], [2, 1], [2, 0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 2.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 2.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polygon properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; area&amp;nbsp;&amp;nbsp; 2.0003662258386612&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length 6.00048828125&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 1.00006103515625 0.50006103515625 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 1.00006103515625 0.50006103515625 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 0 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 2.0001220703125 1.0001220703125 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; hull 6.12398146082414E-17 1.0001220703125 2.0001220703125 1.0001220703125 2.0001220703125 -2.22044604925031E-16 0 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;close but no cigar, and not readily attributable to floating point representation (ie a unit square should yield an area of 1.0 or exceptionally close to it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Results using more classic pure Python methods from:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE class="plain"&gt;''' AreaCentroid.py  original source:&amp;nbsp; http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/python.txt  '''  def polygon_area(pnts): &amp;nbsp; '''determine the area given a list of points''' &amp;nbsp; area = 0.0 &amp;nbsp; n = len(pnts) &amp;nbsp; j = n - 1 &amp;nbsp; i = 0 &amp;nbsp; for point in pnts: &amp;nbsp;&amp;nbsp;&amp;nbsp; p0 = pnts&lt;I&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; p1 = pnts&lt;J&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; area += p0[0] * p1[1] &amp;nbsp;&amp;nbsp;&amp;nbsp; area -= p0[1] * p1[0] &amp;nbsp;&amp;nbsp;&amp;nbsp; j = i &amp;nbsp;&amp;nbsp;&amp;nbsp; i += 1 &amp;nbsp; area /= 2.0 &amp;nbsp; return area  def polygon_centroid(pnts): &amp;nbsp; '''return the centroid of a polygon''' &amp;nbsp; n = len(pnts) &amp;nbsp; x = 0.0 &amp;nbsp; y = 0.0 &amp;nbsp; j = n -1 &amp;nbsp; i = 0 &amp;nbsp; for point in pnts: &amp;nbsp;&amp;nbsp;&amp;nbsp; p0 = pnts&lt;I&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; p1 = pnts&lt;J&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; f = p0[0] * p1[1] - p1[0] * p0[1] &amp;nbsp;&amp;nbsp;&amp;nbsp; x += (p0[0] + p1[0]) * f &amp;nbsp;&amp;nbsp;&amp;nbsp; y += (p0[1] + p1[1]) * f &amp;nbsp;&amp;nbsp;&amp;nbsp; j = i &amp;nbsp;&amp;nbsp;&amp;nbsp; i += 1 &amp;nbsp; f = polygon_area(pnts) * 6 &amp;nbsp; return [x/f, y/f]  import os, sys  triangle = [[0,0],[0,1],[1,0]] square = [[0,0],[0,1],[1,1],[1,0]] rectangle = [[0,0],[0,1],[2,1],[2,0]] polygons = [triangle, square, rectangle] labels = ["Triangle", "Square", "Rectangle"]  for i in range(len(polygons)): &amp;nbsp; a_poly = polygons&lt;I&gt; &amp;nbsp; print "\n", labels&lt;I&gt;," Coordinates: ", a_poly &amp;nbsp; print "polygon area: ", polygon_area(a_poly) &amp;nbsp; print "polygon centroid: ", polygon_centroid(a_poly) &lt;/I&gt;&lt;/I&gt;&lt;/J&gt;&lt;/I&gt;&lt;/J&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;DIV style="display: none;"&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;yield correct results.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Triangle&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [0, 1], [1, 0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;polygon area:&amp;nbsp; 0.5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;polygon centroid:&amp;nbsp; [0.33333333333333331, 0.33333333333333331]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Square&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [0, 1], [1, 1], [1, 0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;polygon area:&amp;nbsp; 1.0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;polygon centroid:&amp;nbsp; [0.5, 0.5]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rectangle&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [0, 1], [2, 1], [2, 0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;polygon area:&amp;nbsp; 2.0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;polygon centroid:&amp;nbsp; [1.0, 0.5]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is this a bug? and can anyone else confirm?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This also extends to the polyline class as shown in the following&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE class="plain"&gt;''' LineDemo.py  Demonstrates calculating various properties for polylines  ''' import arcpy pnt = arcpy.Point()  simple = [[0,0],[1,1]] two_piece = [[0,0],[0,1],[1,1]] three_piece = [[0,0],[0,1],[1,1]] polylines = [simple, two_piece, three_piece] labels = ["simple", "two_piece", "three_piece"] array = arcpy.Array() polys = [] for i in range(len(polylines)): &amp;nbsp; a_poly = polylines&lt;I&gt; &amp;nbsp; print "\n", labels&lt;I&gt;," Coordinates: ", a_poly &amp;nbsp; for pair in a_poly: &amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.X = pair[0] &amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.Y = pair[1] &amp;nbsp;&amp;nbsp;&amp;nbsp; array.add(pnt) &amp;nbsp;&amp;nbsp;&amp;nbsp; print " X: %20.16f&amp;nbsp; Y: %20.16f" % (pnt.X, pnt.Y) &amp;nbsp; poly = arcpy.Polyline(array) &amp;nbsp; print "Polyline properties:" &amp;nbsp; print " length %20.16f" % (poly.length) &amp;nbsp; print " centroid %s\n true centroid %s " % (poly.centroid, poly.trueCentroid)  &amp;nbsp; print " first point %s\n last point %s " % (poly.firstPoint, poly.lastPoint) &amp;nbsp; print " extent %s " % (poly.extent) &amp;nbsp; print " hull %s\n " % (poly.hullRectangle) &amp;nbsp; array.removeAll() &amp;nbsp; polys.append(poly)&amp;nbsp; #for further use&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;DIV style="display: none;"&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;which for a simple two point line yields&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;simple&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [1, 1]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length&amp;nbsp;&amp;nbsp; 1.4143861958645956&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.50006103515625 0.50006103515625 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.50006103515625 0.50006103515625 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 1.0001220703125 1.0001220703125 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 1.0001220703125 1.0001220703125 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; hull 0 0 0 0 1.0001220703125 1.0001220703125 1.0001220703125 1.0001220703125&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;as output.&amp;nbsp; The only common thread seems to be the extent/last point is in error according to&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print 1 + (1.0/2.0**13)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1.00012207031&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;so is something being added to the coordinate(s)?&amp;nbsp; I will have to report this thread as a bug, I presume&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Aug 2010 09:55:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421913#M14211</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2010-08-05T09:55:39Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421914#M14212</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Yes it gets worse, even a two point line's properties can't be determined properly whether they are along the X or Y axis relative to the 0,0 origin...another example script and its output follow&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
'''
LineDemo2.py

Demonstrates errors in calculating various properties for polylines

'''
import arcpy
pnt = arcpy.Point()

polylines = []
vals = [0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0]
for a_val in vals:
&amp;nbsp; a_line = [[0.0,0.0],[a_val,0.0]]
&amp;nbsp; polylines.append(a_line)
array = arcpy.Array()
polys = []
for i in range(len(polylines)):
&amp;nbsp; a_poly = polylines&lt;I&gt;
&amp;nbsp; print "\n", " Coordinates: ", a_poly
&amp;nbsp; for pair in a_poly:
&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.X = pair[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.Y = pair[1]
&amp;nbsp;&amp;nbsp;&amp;nbsp; array.add(pnt)
&amp;nbsp;&amp;nbsp;&amp;nbsp; print " X: %20.16f&amp;nbsp; Y: %20.16f" % (pnt.X, pnt.Y)
&amp;nbsp; poly = arcpy.Polyline(array)
&amp;nbsp; print "Polyline properties:"
&amp;nbsp; print " length %20.16f" % (poly.length)
&amp;nbsp; print " centroid %s\n true centroid %s " % (poly.centroid, poly.trueCentroid) 
&amp;nbsp; print " first point %s\n last point %s " % (poly.firstPoint, poly.lastPoint)
&amp;nbsp; print " extent %s " % (poly.extent)
&amp;nbsp; #print " hull %s\n " % (poly.hullRectangle)
&amp;nbsp; array.removeAll()
&amp;nbsp; polys.append(poly)&amp;nbsp; #for further use
&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;with the results in changing x from 0.001 to 1000 by a factor of 10&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [0.001, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0010000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length&amp;nbsp;&amp;nbsp; 0.0010986328125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.00054931640625 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.00054931640625 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 0.0010986328125 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 0.0010986328125 0 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [0.01, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0100000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length&amp;nbsp;&amp;nbsp; 0.0100708007812500&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.005035400390625 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.005035400390625 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 0.01007080078125 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 0.01007080078125 0 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [0.10000000000000001, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.1000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length&amp;nbsp;&amp;nbsp; 0.1000976562500000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.050048828125 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.050048828125 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 0.10009765625 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 0.10009765625 0 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [1.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length&amp;nbsp;&amp;nbsp; 1.0001220703125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.50006103515625 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.50006103515625 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 1.0001220703125 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 1.0001220703125 0 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [10.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp; 10.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length&amp;nbsp; 10.0001220703125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 5.00006103515625 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 5.00006103515625 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 10.0001220703125 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 10.0001220703125 0 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [100.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X: 100.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length 100.0001220703125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 50.0000610351563 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 50.0000610351563 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 100.000122070313 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 100.000122070313 0 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [1000.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X: 1000.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length 1000.0001220703125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 500.000061035156 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 500.000061035156 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 1000.00012207031 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 1000.00012207031 0 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;so percentage wise, the greater the percentage error as you suggest...hope this gets fixed before the "Power of ArcPy" lecture gets delivered &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 19:04:10 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421914#M14212</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2021-12-11T19:04:10Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421915#M14213</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have reported this indirectly through Jim Barry since faculty for our site license, don't have the "magic numbers" to report bugs and I can't find any generic "bug report" site that allows users (and not administrators) to post bugs....perhaps Jim could add MVP's and frequent contributors etc to post bugs, or provide sites without a "magic number" to report bugs.&amp;nbsp; Perhaps putting a "bug" icon on the forum threads could serve as a direct link to notify the correct group, in this case, Geoprocessing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And on an aside, it would be inappropriate for any of these metrics to apply to geographic coordinates, which is even more disturbing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I will investigate other issues further and try the long slog through the official channels if no one here picks up on this...but lecture and manual notes can't wait until SP1 arrives, I am probably going to have to demonstrate the principles outside of the arcpy environment.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Aug 2010 19:47:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421915#M14213</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2010-08-05T19:47:00Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421916#M14214</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I searched and eventually found solid confirmation of your failure: there is no way for mere mortals to report a bug, no matter how big or how pressing it might be.&amp;nbsp; I am stunned.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyone can report a software defect to Esri regardless of maintenance status. To do so you can contact Esri Support through any of our media channels; phone, e-mail or chat. The most efficient way would be to go to &lt;/SPAN&gt;&lt;A href="http://support.esri.com"&gt;http://support.esri.com&lt;/A&gt;&lt;SPAN&gt; and click "New Support Request". You will then be asked to enter some information to validate you as a customer, but don't let this deter you as even if you are not an authorized maintenance caller you will still be able to submit a defect. On the next page there is a submission type option where you can select "Bug". &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Once you submit the defect report it will be routed to a Technical Support Analyst who will work with you to reproduce the issue and if it is confirmed to be a defect will go ahead and submit it to the Development team for review.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Chris&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Aug 2010 21:44:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421916#M14214</guid>
      <dc:creator>ChrisFox3</dc:creator>
      <dc:date>2010-08-05T21:44:58Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421917#M14215</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;That route sent me to ESRI Canada, who would have to process it and forward it on to ESRI Redlands.&amp;nbsp; I have never been able to file a bug report without the "magic" customer numbers which are housed within technical support somewhere within our university.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There has got to be a simpler solution to get to Redlands without the corporate/country travel stuff.&amp;nbsp; I have to unfortunately had to rely on "insiders" grace for a number of years.&amp;nbsp; As suggested, perhaps, MVP/Frequent Contributors/Pests be given a "Go Away" number to report bugs, particularly when they are more important that a color palette discrepencies and the like.&amp;nbsp; Pardon my frustration, but as you can see, the important issue being brought forward within this thread has been relegated to a lower status than that of how to report bugs.&amp;nbsp; Should you wish to contact me directly, I would appreciate it, in the interim, can the major issue here please be addressed&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Aug 2010 22:17:05 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421917#M14215</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2010-08-05T22:17:05Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421918#M14216</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hasn't this always been like this though? Even in v9.3 if you manually create a square having coordinate pairs of:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0,0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0,2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2,2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2,0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It reports the centroid as being:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1.000061, 1.000061&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and the area as:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4.000488&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and the perimeter as:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;8.000488&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Could be wrong here, but I was led to believe what Bill hinted at: ESRI's data models store/process coordinates as integers rather that double precision floats (seemingly to save space and speed processing). &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Seems like the larger the feature (relative distances) that, at least in v9.3, things become more "precise". For example, if you make a larger square of:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0,0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0,100000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;100000,100000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;100000,0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;the centroid is now "exactly":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;50000, 50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and the area:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;10000000000&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Aug 2010 22:53:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421918#M14216</guid>
      <dc:creator>ChrisSnyder</dc:creator>
      <dc:date>2010-08-05T22:53:49Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421919#M14217</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;That means that a solution, if that was the case, hasn't been provided after all these years.&amp;nbsp; I am trying to demonstrate to students that the new powers of GIS and its incorporation of Python within its framework will make a simpler work environment for them...so I gave a simple demonstration of calculating the area of a unit square (etc) using the new "arcpy" environment and all its useful utilities, then I go on to show them how to do it in other environments, particular, pure Python...I had hoped to show that if you have ArcGIS installed use "arcpy" to get basic metric properties without the need to code your own procedures or use other modules (like Shapely etc)...unfortunately, those notes are burning on the bonfire outback.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The more important issue is that there are many instances where feature geometry is manipulated (ie translated, rotated and scaled) to facilitate determinations of other geometric properties such as minimum area bounding circles, convex hulls, minimum area bounding ellipses, densifying features etc etc) since working in native projected coordinates is not appropriate (for a variety of reasons).&amp;nbsp; One would expect that any software would allow one to compute simple metrics for standard shapes centered at the origin and/or the minimum extent being at the origin.&amp;nbsp; If this is not the case (I never found an issue with this in AV3.x and/or calculations in 9.x that interfaced with Python), then a clear statement should be made that if you aren't using large coordinates, then you are going to get large errors.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;ESRI has made the move to Python as your field calculator language de jour (VB Script as well) and ESRI strongly supports NumPy for a lot of the SA stuff (I presume, but I am not finished testing), so why can't I get a simple area for a unit square with the lower left extent at the origin from a module called "ARCPY", I thought, perhaps erroneously, that a synergy had developed...please someone, fix the issue, rather than defending it or bringing up the arcinfo past or call the module "ARCPYish"...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;rant over...thanks for the comments Chris&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;PS&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Don't take offense, but this has serious ramifications for anyone that wants to use "a" GIS for any computational purposes.&amp;nbsp; The limitations have to be spelled out or addressed, there is no "silent" option&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;By the way intersection of two polylines doesn't work for simply line features either&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
'''
IntersectDemo.py

Demonstrates errors in calculating various properties for polylines

'''
import arcpy
pnt = arcpy.Point()
#
#NOTE vary the epsilon parameter 1.0/8192 = 1.0/(2**13
#&amp;nbsp; Try 1.0/2.0**14 etc etc
epsilon = 1.0/(2.0**13)
polylines = [[[0.0,0.0], [1.0,0.0]], [[1.0 + epsilon, 0.0],[2.0,0.0]]]
array = arcpy.Array()
polys = []
for i in range(len(polylines)):
&amp;nbsp; a_poly = polylines&lt;I&gt;
&amp;nbsp; print "\n", " Coordinates: ", a_poly
&amp;nbsp; for pair in a_poly:
&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.X = pair[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.Y = pair[1]
&amp;nbsp;&amp;nbsp;&amp;nbsp; array.add(pnt)
&amp;nbsp;&amp;nbsp;&amp;nbsp; print " X: %20.16f&amp;nbsp; Y: %20.16f" % (pnt.X, pnt.Y)
&amp;nbsp; poly = arcpy.Polyline(array)
&amp;nbsp; print "Polyline properties:"
&amp;nbsp; print " length %20.16f" % (poly.length)
&amp;nbsp; print " centroid %s\n true centroid %s " % (poly.centroid, poly.trueCentroid) 
&amp;nbsp; print " first point %s\n last point %s " % (poly.firstPoint, poly.lastPoint)
&amp;nbsp; print " extent %s " % (poly.extent)
&amp;nbsp; #print " hull %s\n " % (poly.hullRectangle)
&amp;nbsp; array.removeAll()
&amp;nbsp; polys.append(poly)
print "\n Does polyline 0 touch polyline 1?"
print "answer ", polys[0].touches(polys[1])
inter_pnt_dist = polys[0].lastPoint.X - polys[1].firstPoint.X
print "distance between last of 0 and 1st of 1 ", inter_pnt_dist

&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;results, vary the epsilon value to see different outcomes.&amp;nbsp; The results are wrong,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;the line segments should be separated by epsilon instead of 0.0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [1.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length&amp;nbsp;&amp;nbsp; 1.0001220703125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.50006103515625 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.50006103515625 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 1.0001220703125 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 1.0001220703125 0 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[1.0001220703125, 0.0], [2.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 1.0001220703125000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 2.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 1.5001220703125 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 1.5001220703125 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 1.0001220703125 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 2.0001220703125 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 1.0001220703125 0 2.0001220703125 0 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Does polyline 0 touch polyline 1?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;answer&amp;nbsp; True&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;distance between last of 0 and 1st of 1&amp;nbsp; 0.0&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 19:04:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421919#M14217</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2021-12-11T19:04:12Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421920#M14218</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Should you wish to contact me directly, I would appreciate it, in the interim, can the major issue here please be addressed&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Dan,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would really like to talk to you about this and see what we can do to address the technical issue in the short term and the process for submitting defects in the long term. Unfortunately, I don't have your contact information, could you contact me at &lt;/SPAN&gt;&lt;A href="mailto:chris_fox@esri.com"&gt;chris_fox@esri.com&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;-Chris&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Aug 2010 23:18:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421920#M14218</guid>
      <dc:creator>ChrisFox3</dc:creator>
      <dc:date>2010-08-05T23:18:40Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421921#M14219</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Contacted by ESRI (esri?), still awaiting the final means of officially reporting the bug, I can report that the simple line example is also directional, for example whether a line radiates outwards from the 0,0 origin in the positive direction, inward toward the origin and their complements in the negative direction along the x-axis (outward and inward).&amp;nbsp; Haven't finished varying along the y-axis or at angles, but the following code will allow others to investigate on their own.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
'''
LineDemo2.py

Demonstrates errors in calculating various properties for polylines

'''
import math
import arcpy
pnt = arcpy.Point()

polylines = []
#vals = [0.001, 0.01, 0.1, 1.0, math.sqrt(2.0), 2.0]
vals = [0.001, 0.01, 1.0 ]
for a_val in vals:
&amp;nbsp; polylines.append( [[0.0,0.0],[a_val,0.0]] )&amp;nbsp; #positive out
&amp;nbsp; polylines.append( [[0.0,0.0],[-a_val,0.0]] ) #negative out
&amp;nbsp; polylines.append( [[a_val,0.0],[0.0,0.0]] )&amp;nbsp; #positive in
&amp;nbsp; polylines.append( [[-a_val,0.0],[0.0,0.0]] ) #negative in
array = arcpy.Array()
polys = []
for i in range(len(polylines)):
&amp;nbsp; a_poly = polylines&lt;I&gt;
&amp;nbsp; print "\n", " Coordinates: ", a_poly
&amp;nbsp; for pair in a_poly:
&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.X = pair[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.Y = pair[1]
&amp;nbsp;&amp;nbsp;&amp;nbsp; array.add(pnt)
&amp;nbsp;&amp;nbsp;&amp;nbsp; print " X: %20.16f&amp;nbsp; Y: %20.16f" % (pnt.X, pnt.Y)
&amp;nbsp; poly = arcpy.Polyline(array)
&amp;nbsp; cal_leng = poly.length
&amp;nbsp; real_leng = max(abs(a_poly[1][0]), abs(a_poly[0][0]))
&amp;nbsp; diff_leng = cal_leng - real_leng
&amp;nbsp; print "Polyline properties:"
&amp;nbsp; print " length:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %20.16f" % (cal_leng)
&amp;nbsp; print " true length:&amp;nbsp;&amp;nbsp; %20.16f" % (real_leng)
&amp;nbsp; print " difference:&amp;nbsp;&amp;nbsp;&amp;nbsp; %20.16f" % (diff_leng)
&amp;nbsp; print " percent error: %20.16f" % (diff_leng/real_leng * 100)
&amp;nbsp; array.removeAll()
&amp;nbsp; polys.append(poly)&amp;nbsp; #for further use
&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;results for 3 simple lengths, outward from the origin, inward towards the origin in both the positive and negative x directions&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [1.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0001220703125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true length:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; difference:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0001220703125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; percent error:&amp;nbsp;&amp;nbsp; 0.0122070312500000&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[0.0, 0.0], [-1.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp; -1.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true length:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; difference:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; percent error:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[1.0, 0.0], [0.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0001220703125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true length:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; difference:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0001220703125000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; percent error:&amp;nbsp;&amp;nbsp; 0.0122070312500000&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Coordinates:&amp;nbsp; [[-1.0, 0.0], [0.0, 0.0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp; -1.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X:&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polyline properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true length:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; difference:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; percent error:&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;the gp group is on this and I will report when I can report&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 19:04:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421921#M14219</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2021-12-11T19:04:15Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421922#M14220</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Dan,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I appreciate your concern, and thanks for bringing light to the problem.&amp;nbsp; Looks like the geometry is essentially low-precision when created in this way.&amp;nbsp; As a workaround, I was able to get much better precision if I applied a SpatialReference object to the class' 2nd parameter.&amp;nbsp; Not ideal of course, but better than the alternative.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;# sr being a SpatialReference
poly = arcpy.Polyline(array, sr)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I will update this thread shortly when I have a proper Nimbus ID to track on.&amp;nbsp; I'm marking this issue as candidate for 10.0 sp1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Dave&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 19:04:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421922#M14220</guid>
      <dc:creator>DavidWynne</dc:creator>
      <dc:date>2021-12-11T19:04:18Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421923#M14221</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I will update this thread shortly when I have a proper Nimbus ID to track on.&amp;nbsp; I'm marking this issue as candidate for 10.0 sp1.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The Nimbus ID is NIM059845&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Aug 2010 23:57:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421923#M14221</guid>
      <dc:creator>DavidWynne</dc:creator>
      <dc:date>2010-08-09T23:57:39Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421924#M14222</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;One would expect high precision as the default... perhaps next time, in the interim&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;poly = arcpy.Polyline(array,arcpy.SpatialReference())&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;seemed to work for polylines and I presume polygons etc...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;perhaps, documentation on, arcpy.SpatialReference would be useful or go the high route by default.&amp;nbsp; If one isn't creating any output geometry (next lesson) the SR is not necessary.&amp;nbsp; A fix would be nice...thanks for getting on this.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Aug 2010 03:07:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421924#M14222</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2010-08-10T03:07:18Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421925#M14223</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;For polygons, the spatial reference (SR) needs to be explicit.&amp;nbsp; The original GeometryErrorsDemo.py is shown below with an example SR and its new output for a triangle, square and rectangle&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
'''
GeometryErrorsDemo.py

Demonstrates calculating various properties for polygons

'''
import arcpy
pnt = arcpy.Point()

triangle = [[0,0],[0,1],[1,0]]
square = [[0,0],[0,1],[1,1],[1,0]]
rectangle = [[0,0],[0,1],[2,1],[2,0]]
polygons = [triangle, square, rectangle]
labels = ["Triangle", "Square", "Rectangle"]
array = arcpy.Array()
polys = []

for i in range(len(polygons)):
&amp;nbsp; a_poly = polygons&lt;I&gt;
&amp;nbsp; print "\n", labels&lt;I&gt;," Coordinates: ", a_poly
&amp;nbsp; for pair in a_poly:
&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.X = float(pair[0])
&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt.Y = float(pair[1])
&amp;nbsp;&amp;nbsp;&amp;nbsp; array.add(pnt)
&amp;nbsp;&amp;nbsp;&amp;nbsp; print " X %20.16f&amp;nbsp; Y %20.16f" % (pnt.X, pnt.Y)
&amp;nbsp; array.add(array.getObject(0))
&amp;nbsp; #poly = arcpy.Polygon(array)&amp;nbsp;&amp;nbsp; #low precision
&amp;nbsp; #
&amp;nbsp; SR = arcpy.SpatialReference("c:/temp/NAD 1983 UTM Zone 18N.prj")
&amp;nbsp; #
&amp;nbsp; poly = arcpy.Polygon(array, SR)
&amp;nbsp; print "Polygon properties:"
&amp;nbsp; print " area %20.16f\n length %s" % (poly.area, poly.length)
&amp;nbsp; print " centroid %s\n true centroid %s " % (poly.centroid, poly.trueCentroid) 
&amp;nbsp; print " first point %s\n last point %s " % (poly.firstPoint, poly.lastPoint)
&amp;nbsp; print " extent %s " % (poly.extent)
&amp;nbsp; print " hull %s\n " % (poly.hullRectangle)
&amp;nbsp; array.removeAll()
&amp;nbsp; polys.append(poly)
&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Results below&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Triangle&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [0, 1], [1, 0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polygon properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; area&amp;nbsp;&amp;nbsp; 0.5000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length 3.41421356237&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.333333333333333 0.333333333333333 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.333333333333333 0.333333333333333 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 0 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 1 1 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; hull 1 2.22044604925031E-16 0.5 -0.5 -0.5 0.5 0 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Square&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [0, 1], [1, 1], [1, 0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 1.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polygon properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; area&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length 4.0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 0.5 0.5 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 0.5 0.5 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 0 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 1 1 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; hull 6.12323399573677E-17 1 1 1 1 0 0 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rectangle&amp;nbsp; Coordinates:&amp;nbsp; [[0, 0], [0, 1], [2, 1], [2, 0]]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 0.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 2.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 1.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; X&amp;nbsp;&amp;nbsp; 2.0000000000000000&amp;nbsp; Y&amp;nbsp;&amp;nbsp; 0.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Polygon properties:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; area&amp;nbsp;&amp;nbsp; 2.0000000000000000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; length 6.0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; centroid 1 0.5 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; true centroid 1 0.5 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; first point 0 0 NaN NaN&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; last point 0 0 NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; extent 0 0 2 1 NaN NaN NaN NaN &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; hull 6.12323399573677E-17 1 2 1 2 -2.22044604925031E-16 0 0&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 19:04:20 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421925#M14223</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2021-12-11T19:04:20Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421926#M14224</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;As a workaround, I was able to get much better precision if I applied a SpatialReference object to the class' 2nd parameter.&amp;nbsp; Not ideal of course, but better than the alternative.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've had some offline discussions recently about the best way to create a SpatialReference object for these circumstances; specifically regarding IsLowPrecision, IsHighPrecision.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you're describing data, most data is now high precision (unless you're working with an earlier version personal geodatabase or SDE geodatabase).&amp;nbsp; So if describing a 9.1 personal geodatabase feature class, and using it's spatialreference property, and you would get a low precision geometry.&amp;nbsp; You could try and manipulate the SpatialReference object, but adjusting a single property on a SpatialReference is fraught with perils (and likewise manipulating the string equivalent of the SpatialReference).&amp;nbsp; Its not as easy as just modifying a property, as many properties of the SpatialReference are interconnected.&amp;nbsp; A better way of ensuring HighPrecision would be creating a spatial reference not via data source, but a .prj file.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro"&gt;sr = arcpy.SpatialReference(r"C:\Program Files\ArcGIS\Desktop10.0\Coordinate Systems\Geographic Coordinate Systems\World\WGS 1984.prj")&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Dave&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Aug 2010 20:57:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421926#M14224</guid>
      <dc:creator>DavidWynne</dc:creator>
      <dc:date>2010-08-11T20:57:28Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421927#M14225</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I've always used the text contained in the .prj file. That way you don't have to rely on having a valid path to the system-stored .prj files, that, for 64 bit OS, are stored in a different directory that a 32 bit OS!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;sr = 'PROJCS["NAD_1983_HARN_StatePlane_Washington_South_FIPS_4602_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Foot_US",0.3048006096012192]]'&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Aug 2010 21:14:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421927#M14225</guid>
      <dc:creator>ChrisSnyder</dc:creator>
      <dc:date>2010-08-11T21:14:04Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421928#M14226</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I've always used the text contained in the .prj file. That way you don't have to rely on having a valid path to the &lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What I normally do to make my own code adaptable for location of the installed .prj files (or for that matter any of the installed files), is to use GetInstallInfo like below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;prjFile = os.path.join(arcpy.GetInstallInfo()['InstallDir'],
&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; "Coordinate Systems/Geographic Coordinate Systems/World/WGS 1984.prj")
sr = arcpy.SpatialReference(prjFile)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Dave&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 19:04:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421928#M14226</guid>
      <dc:creator>DavidWynne</dc:creator>
      <dc:date>2021-12-11T19:04:23Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421929#M14227</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;NIM059845 didn't make it into 10 SP1 and there is no indication as to when it is going to be fixed, nor does the NIM site indicate the temporary workaround.&amp;nbsp; Any further information?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 13 Nov 2010 12:50:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421929#M14227</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2010-11-13T12:50:15Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421930#M14228</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;NIM059845 didn't make it into 10 SP1 and there is no indication as to when it is going to be fixed, nor does the NIM site indicate the temporary workaround.&amp;nbsp; Any further information?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Sorry Dan, I was disappointed myself.&amp;nbsp; We have had it fixed in our 10.1 code base, and we will be pushing it through to service pack 2 in the next short while.&amp;nbsp; The projected date for SP2 I believe is still early 2011.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The NIM report has also been updated, and should get pushed to the web on the next flush.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Dave&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Nov 2010 16:28:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421930#M14228</guid>
      <dc:creator>DavidWynne</dc:creator>
      <dc:date>2010-11-18T16:28:18Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421931#M14229</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks David&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Nov 2010 19:31:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421931#M14229</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2010-11-18T19:31:57Z</dc:date>
    </item>
    <item>
      <title>Re: Errors in arcpy's Polygon class</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421932#M14230</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you David for the update.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Nov 2010 21:01:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/errors-in-arcpy-s-polygon-class/m-p/421932#M14230</guid>
      <dc:creator>TedCronin</dc:creator>
      <dc:date>2010-11-18T21:01:49Z</dc:date>
    </item>
  </channel>
</rss>

