AnsweredAssumed Answered

polyline to polygon (comparison tool and own code)

Question asked by sibghatullah86 on May 22, 2017
Latest reply on Jun 6, 2017 by LukeW

I am trying to convert a ploy line feature class to polygon without using Arc info Advanced Licence.The code i am using runs fine and converts polyline to polygon. I have run the "tool feature to polygon" to make a comparison.My code is not converting all lines to polygon(See Screenshot).I have also attached my code.please guide me to get the same results.

Polyline :Red(to be converted)

Mycode:Brown

Feature to polygon: Blue

 

 

 

 

import arcpy

import arcpy
import os
from arcpy import env
env.overwriteOutput = True
starttime = time.time()
localtime = time.asctime( time.localtime(time.time()) )

# Create a value table that will hold the input feature classes for Merge

mxd=arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd, "")[0]

for lyr in arcpy.mapping.ListLayers(mxd,"",df):
    if not lyr.isGroupLayer:
        arcpy.AddMessage(lyr.name)
        if "Export" in lyr.name :
            break

desc = arcpy.Describe(lyr)
shapefieldname = desc.ShapeFieldName
outPolys=r'C:\RAECGIStoCAD\test.gdb\temp'
arcpy.DeleteFeatures_management(r'C:\RAECGIStoCAD\test.gdb\temp')
joinoutput=r'C:\RAECGIStoCAD\test.gdb\join'
spatialRef = arcpy.Describe(lyr).spatialReference
featureList = []

#array = arcpy.Array()
cursor = arcpy.da.InsertCursor(outPolys, ['SHAPE@'])
rows = arcpy.SearchCursor(lyr)
for row in rows:
    # Create the geometry object
    feat = row.getValue(shapefieldname)
    #print "Feature %i: " % row.getValue(desc.OIDFieldName)
    partnum = 0
    part_list = []
    # Step through each part of the feature
    for part in feat:

        polygonArray = arcpy.Array()
        for pnt in feat.getPart(partnum):
            if pnt:
                # Add to list
                part_list.append([pnt.X, pnt.Y])
                polygonArray.add(arcpy.Point(pnt.X,pnt.Y))


                partnum += 1
    print partnum
    print part_list
    polygon = arcpy.Polygon(polygonArray)
    featureList.append(polygon)


    cursor.insertRow([polygon])
del cursor
endtime = time.time()
totaltime = endtime-starttime
print "\nScript took " + str(totaltime/60) + " minutes to run"

Attachments

Outcomes