autor: Snikers » 8 lip 2018, 18:18
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()
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()