Strona 1 z 1

Sprawdzenie aplikacji

: 8 lip 2018, 18:18
autor: Snikers
Hej, móglby mi ktoś pomóc w sprawdzeniu aplikacji. Nie chce coś działać.

Potrzebuję aby aplikacja liczyła centroidy poligonów i tworzyła z nich czworościan. Czwrościan powinien byc zapisywany do nowego pliku w pliki ShapeFile.

# -*- coding: cp1250 -*-
#skrypt wgrywanie pliku
import arcpy, os

def dzialania():
try:
arcpy.AddWarning(20*"+")
arcpy.AddMessage ( "Początek pracy narzędzia " )

#otwarcie warstwy:
poligon = arcpy.GetParameterAsText(0)

wyjscie = arcpy.GetParameterAsText(1) + "\wynik.shp"

input_fc = os.path.dirname(poligon) + "/" + os.path.basename(poligon)

arcpy.env.workspace = input_fc

# Set local variables
inFeatures = input_fc
fieldName1 = "xCentroid"
fieldName2 = "yCentroid"
fieldPrecision = 18
fieldScale = 11

#Dodanie pól X Y
arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE", fieldPrecision, fieldScale)
arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE", fieldPrecision, fieldScale)
arcpy.CalculateField_management(inFeatures, fieldName1, "!SHAPE.CENTROID.X!", "PYTHON_9.3")
arcpy.CalculateField_management(inFeatures, fieldName2, "!SHAPE.CENTROID.Y!", "PYTHON_9.3")


#kursor szukania
cursor = arcpy.da.SearchCursor(input_fc, ["xCentroid", "yCentroid"])

#utworzenie nowej klasy obiektów
arcpy.env.overwriteOutput = True
arcpy.CreateFeatureclass_management(os.path.dirname(wyjscie), os.path.basename(wyjscie), "POLYGON")

#uruchomienie kursora tworzenia
cur = arcpy.da.InsertCursor(wyjscie, ["SHAPE@"])

#pętla zapisująca:
i = 0
xx = []
yy = []

for wsp in cursor:
x = wsp[0]
y = wsp[1]
xx.append(x)
yy.append(y)

i =+ 1

x4 = ( ( xx[0] + xx[1] + xx[2] ) /3 )
y4 = ( ( yy[0] + yy[1] + yy[2] ) /3 )

xx.append(x4)
yy.append(y4)

arcpy.AddMessage (xx)
arcpy.AddMessage (yy)

# Lista funkcji i par współrzędnych
feature_info = [[[xx[0], yy[0]], [xx[1], yy[1]], [xx[2], yy[2]], [xx[3], yy[3]]]]

# Lista, która będzie przechowywać każdy z obiektów wieloboków
features = []

for feature in feature_info:
# Dołącz do listy obiektu wielokąta
features.append(
arcpy.Polygon(
arcpy.Array([arcpy.Point(*coords) for coords in feature])))

# Zatrzymaj kopię obiektów Polyline
arcpy.CopyFeatures_management(features, wyjscie)

arcpy.DeleteField_management(inFeatures, ["xCentroid", "yCentroid"])


except Exception, err:
arcpy.AddError ("blad ZAPISU")
arcpy.AddError (sys.exc_traceback.tb_lineno)
arcpy.AddError (err.message)

#sekcje końcowe:
finally:
pass

if __name__ == '__main__':
dzialania()