Me gustaría hacer un buffer de una polilínea y obtener como salida un polígono con los mismos ángulos como la polilínea, teniendo no arcos, como buffers del ordinario.
he probado el FLAT
opción en ArcPy, pero ha aplicado sólo el ambos extremos.
Me gustaría hacer un buffer de una polilínea y obtener como salida un polígono con los mismos ángulos como la polilínea, teniendo no arcos, como buffers del ordinario.
he probado el FLAT
opción en ArcPy, pero ha aplicado sólo el ambos extremos.
Usted podría tratar de la Plana-final de la línea de amortiguamiento de la herramienta. Lo hice para un propósito específico para el cual funciona bien. A veces me combinar el resultado para crear un polígono. La herramienta debería funcionar bien con 10.0. No lo he probado en la versión 10.1.
EDITAR: Hay un par de parámetros que se pueden establecer; distancia, en inglete o biselados, extender la línea termina. (para mis propósitos me necesarias para extender la línea termina así hice que una opción) Porque fue hecho para el propósito específico que usted debe ser consciente de que de no resolver cruce de líneas (como mencioné en mi comentario anterior). Si alguien está interesado me puede ilustrar lo que esto se parece. Básicamente, resultante de cruzar las líneas tienen que ser resueltos manualmente antes de la creación de un polígono o polígonos va a resultar en una geometría simple.
Yo quisiera añadir algunos efectos visuales para mostrar lo que básicamente esto: Resultado: Como resultado de polígono (también el uso de una herramienta personalizada para que):
He realizado una función en ArcPy para compensar una polilínea. Esta es la función de mi script ArcPy y el resultado:
def offset(layer_in , layer_out , distance ):
arcpy.Select_analysis(layer_in , "line_offset")
arcpy.SplitLine_management("line_offset", "line_offset_split")
arcpy.Buffer_analysis("line_offset_split", "line_offset_split_buf", distance ,"FULL","FLAT","NONE")
arcpy.FeatureVerticesToPoints_management("line_offset","line_offset_points", "ALL")
arcpy.AddField_management("line_offset_points" , "X" , "DOUBLE" )
arcpy.AddField_management("line_offset_points" , "Y" , "DOUBLE" )
arcpy.CalculateField_management("line_offset_points", "X" , "!Shape.lastpoint.X!","PYTHON_9.3")
arcpy.CalculateField_management("line_offset_points", "Y" , "!Shape.lastpoint.Y!","PYTHON_9.3")
arcpy.Intersect_analysis(["line_offset_split_buf" ], "line_offset_split_buf_intersect" , "")
arcpy.SpatialJoin_analysis("line_offset_split_buf_intersect" , "line_offset_points" , "line_offset_split_buf_intersect_sj","JOIN_ONE_TO_ONE" , "KEEP_COMMON" , "" , "INTERSECT")##
rows = arcpy.UpdateCursor("line_offset_split_buf_intersect_sj")
for row in rows :
x = row.getValue("X")
y = row.getValue("Y")
polyOuter = arcpy.Array()
feat = row.Shape
part = feat.getPart(0)
for pt in iter(lambda:part.next(),None) : # iter stops on null pt
polyOuter.append(arcpy.Point( 2*x - pt.X ,2*y - pt.Y) )
row.setValue("Shape" , arcpy.Polygon(polyOuter))
rows.updateRow (row)
arcpy.Append_management("line_offset_split_buf_intersect_sj","line_offset_split_buf","NO_TEST")
arcpy.Dissolve_management("line_offset_split_buf", "line_offset_split_buf_disolv", "ID" , "", "SINGLE_PART")## the field is set to not dissolve all polygons
arcpy.Generalize_edit("line_offset_split_buf_disolv", "0.001")
arcpy.Select_analysis("line_offset_split_buf_disolv" , layer_out)
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.