Problem mit ArcGIS Skript zum Auslesen von Polygonstützpunkten

Hallo

ich habe ein kleines Problem mit einem ArcGIS Skript. Das Skript an sich wandelt mir ein Polygon in seine Punkte (Stützpunkte) um und speichert sie mir anschließend in einer txt Datei.

Mein Problem dabei ist jedoch, dass er immer alle Punkte ausliest. Das bedeutet, dass z.B. bei einem einzelnen Polygon der letzte Punkt identisch ist mit dem ersten. Und das möchte ich verhindern. Ich habe schon versucht die Anzahl der gezählten Punkte eines Multipartfeatures (partcount = feat.partcount) um eins zu verringern, so das einfach der letzte Punkt beim auslesen immer weg gelassen wird aber irgendwie funktioniert das bei mir nicht .

Kann mir jemand dabei ein wenig Hilfestellung leisten? In Python bin ich nämlich nicht besonders gut.....


Hier das Skript:



import string, os, sys, locale, arcgisscripting
gp = arcgisscripting.create()
gp.overwriteoutput = 1

msgNotEnoughParams = "Incorrect number of input parameters."
msgUseValidDecimalPointSep = "Please use one of the valid decimal point separators."

try:

if len(sys.argv) < 4: raise Exception, msgNotEnoughParams
inputFC = sys.argv[1]
outFile = open(sys.argv[2], "w")

arg3poss = ['default python output', 'locale decimal point', 'comma', 'period', '$sep$']
if sys.argv[3].lower() not in arg3poss: raise Exception, msgUseValidDecimalPointSep

if sys.argv[3].lower() == arg3poss[1]:
locale.setlocale(locale.LC_ALL, '')
sepchar = locale.localeconv()['decimal_point']
elif sys.argv[3].lower() == arg3poss[2]: sepchar = ','
elif sys.argv[3].lower() == arg3poss[3]: sepchar = '.'
elif sys.argv[3].lower() == arg3poss[4]: sepchar = '$SEP$'
elif sys.argv[3].lower() == arg3poss[0]: sepchar = ""

inDesc = gp.describe(inputFC)

inRows = gp.searchcursor(inputFC)
inRow = inRows.next()
outFile.write("X" + ";" + "Y" + ";" + "Z" + ";" + "M" + ";" + "Order" + ";" + inDesc.ShapeType+ "\n")

while inRow:
feat = inRow.GetValue(inDesc.ShapeFieldName)
partnum = 0
partcount = feat.partcount
while partnum < partcount:
part = feat.getpart(partnum)
part.reset()
pnt = part.next()
interiorring_count = 0
pnt_count = 0
while pnt:
outLine = str(pnt.x) + ";" + str(pnt.y) + ";" + str(pnt.z) + ";" + str(pnt.m) + ";" + str(pnt_count) + ";" + "'" + str(inRow.GetValue(inDesc.OIDFieldName)) + "_" + str(interiorring_count) + "'" + "\n"
if sepchar == "": outFile.write(outLine)
else: outFile.write(outLine.replace(".", sepchar))
pnt = part.next()
pnt_count += 1
if not pnt:
pnt = part.next()
if pnt:
pnt_count = 0
interiorring_count += 1

partnum += 1
inRow = inRows.next()
outFile.flush()
outFile.close()

except Exception, ErrorDesc:
gp.AddError(ErrorDesc[0])
if outFile: outFile.close()
gp.AddError(gp.getmessages(2))
Kannmir den bei meinem Problem keiner helfen?
Wie es scheint ist mein Problem doch nicht so trivial wie ich dachte....