<?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: Polygon Creation from text file (min xy, max xy) ISSUE in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/polygon-creation-from-text-file-min-xy-max-xy/m-p/116796#M9182</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Robert,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I tried the code and resulted with the same problems as you encountered; some polygons have a zero area and all that draw are overlapping exactly. I thought that this might be caused by a lacking coordinate system and even tried to project the polygon to a projected coordinate system. After this I notices that both seem to work. See code below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
arcpy.env.overwriteOutput = True

infile = r'C:\Project\_Forums\CSV2Polygon\csv\Metadata_RP.csv'
outshp_gcs = r'C:\Project\_Forums\CSV2Polygon\shp\poly_gcs.shp'
outshp_pcs = r'C:\Project\_Forums\CSV2Polygon\shp\poly_pcs.shp'

&lt;STRONG&gt;sr_in&lt;/STRONG&gt; = arcpy.SpatialReference(4283) # GCS_GDA_1994
&lt;STRONG&gt;sr_out&lt;/STRONG&gt; = arcpy.SpatialReference(28355) # GDA_1994_MGA_Zone_55

lstPolsGCS = []
lstPolsPCS = []
with arcpy.da.SearchCursor(infile, ["o_minx","o_miny","o_maxx","o_maxy"]) as curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xvalues = [row[0], row[2]]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yvalues = [row[1], row[3]]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "{0}, {1}, {2}, {3}".format(row[0], row[1], row[2], row[3])

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt1 = arcpy.Point(min(xvalues),min(yvalues))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt2 = arcpy.Point(min(xvalues),max(yvalues))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt3 = arcpy.Point(max(xvalues),max(yvalues))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt4 = arcpy.Point(max(xvalues),min(yvalues))

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; polygon_gcs = arcpy.Polygon(arcpy.Array([pnt1, pnt2, pnt3, pnt4, pnt1]), &lt;STRONG&gt;sr_in&lt;/STRONG&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstPolsGCS.append(polygon_gcs)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; polygon_pcs = polygon_gcs.projectAs(&lt;STRONG&gt;sr_out&lt;/STRONG&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstPolsPCS.append(polygon_pcs)

arcpy.CopyFeatures_management(lstPolsGCS, outshp_gcs)
arcpy.CopyFeatures_management(lstPolsPCS, outshp_pcs)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In my case I create two outputs; both polygon shapefiles, one for the geographic coordinates and one for the projected coordinates. Essential is providing the proper spatial reference when creating the geometry (see &lt;/SPAN&gt;&lt;STRONG&gt;sr_in&lt;/STRONG&gt;&lt;SPAN&gt;). I create a new polygon with the projected copy of the input polygon. Both are added to a list and written to their corresponding shapefiles.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-style:italic;"&gt;BTW; the reason I first add the x and y coordinates of a row to lists, it to assure to get the minimum and maximum values and create polygons that are clockwise. There is one record (polygon # 10) where the xmin &amp;gt; xmax.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family:courier new;"&gt;o_minx&amp;nbsp;&amp;nbsp;&amp;nbsp; o_miny&amp;nbsp;&amp;nbsp;&amp;nbsp; o_maxx&amp;nbsp;&amp;nbsp;&amp;nbsp; o_maxy&lt;BR /&gt;144,820&lt;SPAN style="color:#ff0000;"&gt;&lt;STRONG&gt;3&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp; -37,7621&amp;nbsp; 144,820&lt;SPAN style="color:#ff0000;"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp; -37,761&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards,&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 06:52:02 GMT</pubDate>
    <dc:creator>XanderBakker</dc:creator>
    <dc:date>2021-12-11T06:52:02Z</dc:date>
    <item>
      <title>Polygon Creation from text file (min xy, max xy) ISSUE</title>
      <link>https://community.esri.com/t5/python-questions/polygon-creation-from-text-file-min-xy-max-xy/m-p/116794#M9180</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;We have been trying (for days) to create a polygon features from a CSV of min xy and max xy, held as GDA94 (lat,long) and it does not work for the majority of records.&amp;nbsp; Only one works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have added both the code and data.&amp;nbsp; We are creating the corresponding points to ensure the correct import and that works but when we Append to create the polygon it works but a feature of zero area is created.&amp;nbsp; There is no reported error in the script.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Python code&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-style:italic;"&gt;&lt;BR /&gt;import arcpy, fileinput, os&lt;BR /&gt;from arcpy import env&lt;BR /&gt;&lt;BR /&gt;env.overwriteOutput = True&lt;BR /&gt;infile = "C:/temp/M80/Metadata_RP.csv"&lt;BR /&gt;&lt;BR /&gt;pt1 = arcpy.Point()&lt;BR /&gt;pt2 = arcpy.Point()&lt;BR /&gt;pt3 = arcpy.Point()&lt;BR /&gt;pt4 = arcpy.Point()&lt;BR /&gt;ptGeoms = [] &lt;BR /&gt;&lt;BR /&gt;point = arcpy.Point()&lt;BR /&gt;array = arcpy.Array()&lt;BR /&gt;featureList= []&lt;BR /&gt;curXY = arcpy.da.SearchCursor(infile, ["o_minx","o_miny","o_maxx","o_maxy"])&lt;BR /&gt;&lt;BR /&gt;for row in curXY:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "{0}, {1}, {2}, {3}".format(row[0], row[1], row[2], row[3])&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddMessage(message)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o_minx= row[0]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o_miny=row[1]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o_maxx=row[2]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o_maxy=row[3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "{0}, {1}, {2}, {3}".format(o_minx,o_miny,o_maxx,o_maxy)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt1.X = o_minx&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt1.Y = o_miny&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptGeoms.append(arcpy.PointGeometry(pt1))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt2.X = o_maxx&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt2.Y = o_miny&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptGeoms.append(arcpy.PointGeometry(pt2))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt3.X = o_maxx&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt3.Y = o_maxy&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptGeoms.append(arcpy.PointGeometry(pt3))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt4.X = o_minx&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt4.Y = o_maxy&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptGeoms.append(arcpy.PointGeometry(pt4))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddMessage(message)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array = arcpy.Array([pt1,pt2,pt3,pt4,pt1])&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; polygon = arcpy.Polygon(array)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; featureList.append(polygon)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;arcpy.CopyFeatures_management(featureList, r"C:/temp/M80/polys.shp")&lt;BR /&gt;arcpy.CopyFeatures_management(ptGeoms, r"C:/temp/M80/points.shp")&lt;BR /&gt;&lt;BR /&gt;print arcpy.GetMessages()&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;CSV data&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-style:italic;"&gt;o_minx,o_miny,o_maxx,o_maxy&lt;BR /&gt;144.820900,-37.757700,144.827300,-37.755800&lt;BR /&gt;144.818700,-37.762200,144.823400,-37.759100&lt;BR /&gt;144.81900,-37.760800,144.824500,-37.758400&lt;BR /&gt;144.823800,-37.755800,144.829200,-37.753300&lt;BR /&gt;144.825500,-37.753400,144.832200,-37.75200&lt;BR /&gt;144.8209,-37.7577,144.8273,-37.7558&lt;BR /&gt;144.8187,-37.7622,144.8234,-37.7591&lt;BR /&gt;144.8268,-37.7524,144.8331,-37.7517&lt;BR /&gt;144.8292,-37.7506,144.8367,-37.7502&lt;BR /&gt;144.8203,-37.7621,144.8201,-37.761&lt;BR /&gt;144.8187,-37.7622,144.8234,-37.7591&lt;BR /&gt;144.8214,-37.7615,144.8224,-37.761&lt;BR /&gt;144.8192,-37.7622,144.8225,-37.7608&lt;BR /&gt;144.8209,-37.7577,144.8273,-37.7558&lt;BR /&gt;144.8187,-37.7622,144.8234,-37.7591&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Feb 2014 23:26:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/polygon-creation-from-text-file-min-xy-max-xy/m-p/116794#M9180</guid>
      <dc:creator>RobertPotter</dc:creator>
      <dc:date>2014-02-20T23:26:24Z</dc:date>
    </item>
    <item>
      <title>Re: Polygon Creation from text file (min xy, max xy) ISSUE</title>
      <link>https://community.esri.com/t5/python-questions/polygon-creation-from-text-file-min-xy-max-xy/m-p/116795#M9181</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;When creating features, it is important to specify the coordinate system.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The WKID of GDA_1994 is 4283.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So add this at the top of your script&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
SR = arcpy.SpatialReference(4283)
&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Then when you create the points and the polygon geometries, specify the SR as well.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
ptGeoms.append(arcpy.PointGeometry(pt4, SR))
....

array = arcpy.Array([pt1,pt2,pt3,pt4,pt1])
polygon = arcpy.Polygon(array, SR)
featureList.append(polygon)
&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;That fixed it for me.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Neil&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 06:51:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/polygon-creation-from-text-file-min-xy-max-xy/m-p/116795#M9181</guid>
      <dc:creator>NeilAyres</dc:creator>
      <dc:date>2021-12-11T06:51:59Z</dc:date>
    </item>
    <item>
      <title>Re: Polygon Creation from text file (min xy, max xy) ISSUE</title>
      <link>https://community.esri.com/t5/python-questions/polygon-creation-from-text-file-min-xy-max-xy/m-p/116796#M9182</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Robert,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I tried the code and resulted with the same problems as you encountered; some polygons have a zero area and all that draw are overlapping exactly. I thought that this might be caused by a lacking coordinate system and even tried to project the polygon to a projected coordinate system. After this I notices that both seem to work. See code below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
arcpy.env.overwriteOutput = True

infile = r'C:\Project\_Forums\CSV2Polygon\csv\Metadata_RP.csv'
outshp_gcs = r'C:\Project\_Forums\CSV2Polygon\shp\poly_gcs.shp'
outshp_pcs = r'C:\Project\_Forums\CSV2Polygon\shp\poly_pcs.shp'

&lt;STRONG&gt;sr_in&lt;/STRONG&gt; = arcpy.SpatialReference(4283) # GCS_GDA_1994
&lt;STRONG&gt;sr_out&lt;/STRONG&gt; = arcpy.SpatialReference(28355) # GDA_1994_MGA_Zone_55

lstPolsGCS = []
lstPolsPCS = []
with arcpy.da.SearchCursor(infile, ["o_minx","o_miny","o_maxx","o_maxy"]) as curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xvalues = [row[0], row[2]]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yvalues = [row[1], row[3]]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "{0}, {1}, {2}, {3}".format(row[0], row[1], row[2], row[3])

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt1 = arcpy.Point(min(xvalues),min(yvalues))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt2 = arcpy.Point(min(xvalues),max(yvalues))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt3 = arcpy.Point(max(xvalues),max(yvalues))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt4 = arcpy.Point(max(xvalues),min(yvalues))

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; polygon_gcs = arcpy.Polygon(arcpy.Array([pnt1, pnt2, pnt3, pnt4, pnt1]), &lt;STRONG&gt;sr_in&lt;/STRONG&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstPolsGCS.append(polygon_gcs)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; polygon_pcs = polygon_gcs.projectAs(&lt;STRONG&gt;sr_out&lt;/STRONG&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstPolsPCS.append(polygon_pcs)

arcpy.CopyFeatures_management(lstPolsGCS, outshp_gcs)
arcpy.CopyFeatures_management(lstPolsPCS, outshp_pcs)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In my case I create two outputs; both polygon shapefiles, one for the geographic coordinates and one for the projected coordinates. Essential is providing the proper spatial reference when creating the geometry (see &lt;/SPAN&gt;&lt;STRONG&gt;sr_in&lt;/STRONG&gt;&lt;SPAN&gt;). I create a new polygon with the projected copy of the input polygon. Both are added to a list and written to their corresponding shapefiles.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-style:italic;"&gt;BTW; the reason I first add the x and y coordinates of a row to lists, it to assure to get the minimum and maximum values and create polygons that are clockwise. There is one record (polygon # 10) where the xmin &amp;gt; xmax.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-family:courier new;"&gt;o_minx&amp;nbsp;&amp;nbsp;&amp;nbsp; o_miny&amp;nbsp;&amp;nbsp;&amp;nbsp; o_maxx&amp;nbsp;&amp;nbsp;&amp;nbsp; o_maxy&lt;BR /&gt;144,820&lt;SPAN style="color:#ff0000;"&gt;&lt;STRONG&gt;3&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp; -37,7621&amp;nbsp; 144,820&lt;SPAN style="color:#ff0000;"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp; -37,761&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards,&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 06:52:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/polygon-creation-from-text-file-min-xy-max-xy/m-p/116796#M9182</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-11T06:52:02Z</dc:date>
    </item>
  </channel>
</rss>

