mxd = arcpy.mapping.MapDocument ("CURRENT")df = arcpy.mapping.ListDataFrames (mxd)[0]lyr = arcpy.mapping.ListLayers(mxd, df)EW = arcpy.GetParameter(0)NS = arcpy.GetParameter(1)#orig extentext = lyr.extent#modsext.XMin += EWext.XMax += EWext.YMin += NSext.YMax += NS#new extentlyr.extent = ext
rai = arcpy.mapping.ListLayers(mxd, "Railroads", df)[0] EWmove = float(arcpy.GetParameter(0)) NSmove = float(arcpy.GetParameter(1)) def shift_features(in_features, EWmove=None, NSmove=None): in_features = rai point.X += EWmove point.Y += NSmove with arcpy.da.UpdateCursor(rai, ['SHAPE@XY']) as cursor: for row in cursor: cursor.updateRow([[row[0][0] + (EWmove or 0), row[0][1] + (NSmove or 0)]]) return arcpy.RefreshActiveView() shouldn't this be... rai = arcpy.mapping.ListLayers(mxd, "Railroads", df)[0] EWmove = float(arcpy.GetParameter(0)) NSmove = float(arcpy.GetParameter(1)) def shift_features(in_features, EWmove=None, NSmove=None): rai = in_features with arcpy.da.UpdateCursor(rai, ['SHAPE@XY']) as cursor: for row in cursor: cursor.updateRow([[row[0][0] + (EWmove), row[0][1] + (NSmove)]]) return arcpy.RefreshActiveView() Cheers,Neil
rai = arcpy.mapping.ListLayers(mxd, "Railroads", df)[0] EWmove = float(arcpy.GetParameter(0)) NSmove = float(arcpy.GetParameter(1)) def shift_features(in_features, EWmove=None, NSmove=None): in_features = rai point.X += EWmove point.Y += NSmove with arcpy.da.UpdateCursor(rai, ['SHAPE@XY']) as cursor: for row in cursor: cursor.updateRow([[row[0][0] + (EWmove or 0), row[0][1] + (NSmove or 0)]]) return arcpy.RefreshActiveView()
rai = arcpy.mapping.ListLayers(mxd, "Railroads", df)[0] EWmove = float(arcpy.GetParameter(0)) NSmove = float(arcpy.GetParameter(1)) def shift_features(in_features, EWmove=None, NSmove=None): rai = in_features with arcpy.da.UpdateCursor(rai, ['SHAPE@XY']) as cursor: for row in cursor: cursor.updateRow([[row[0][0] + (EWmove), row[0][1] + (NSmove)]]) return arcpy.RefreshActiveView()
You don't actually have to update each vertex according to the Café Python page..http://arcpy.wordpress.com/page/2/just update the SHAPE@XY token instead, then the whole feature moves.like : with arcpy.da.UpdateCursor(in_features, ['SHAPE@XY']) as cursor: for row in cursor: cursor.updateRow([[row[0][0] + (x_shift or 0), row[0][1] + (y_shift or 0)]]) Cheers,Neil
with arcpy.da.UpdateCursor(in_features, ['SHAPE@XY']) as cursor: for row in cursor: cursor.updateRow([[row[0][0] + (x_shift or 0), row[0][1] + (y_shift or 0)]])
import arcpy rai = arcpy.mapping.ListLayers(mxd, "Railroads", df)[0] EWmove = float(arcpy.GetParameter(0)) NSmove = float(arcpy.GetParameter(1)) update_cursor = arcpy.da.UpdateCursor(rai, 'SHAPE@') for row in update_cursor: array = arcpy.Array() for part in row[0]: for point in part: point.X += EWmove point.Y += NSmove array.add(point) new_line = arcpy.Polyline(array) row[0] = new_line update_cursor.updateRow(row) del update_cursor
rai = arcpy.mapping.ListLayers(mxd, "Railroads", df)[0] EW = arcpy.GetParameter(0) NS = arcpy.GetParameter(1) with arcpy.da.UpdateCursor(rai, ['OID@', 'SHAPE@X', 'SHAPE@Y']) as cursor: EWmove = 0 NSmove = 0 for row in cursor: if row[1] >= '0': cursor.updateRow(row) elif row[2] >= '0': cursor.updateRow(row) else: arcpy.AddMessage("Feature(s) not moved")
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.