# Identify outer most corner of Polygon [duplicate]

How can I create a point that identifies the outer most point/corner of a polygon (one point per polygon)?.

It is easy to identify the centre point, but I cannot find options for the outer most corner.

• Export the vertices to points. Generate a point for the polygon center. Use the near tool to generate a table of distances from the center point to the polygon vertices. Some knowledge of iterators or some Python/arcpy skills will help. An advanced license is required to use the necessary tools in ArcGIS. – GBG Jul 10 '17 at 15:34

I have created this python script, according to your query. please feel free to try it. I hope it helps;

``````# It is assumed that the polygon feature does not contain multipart

import arcpy
from arcpy import env

env.overwriteOutput = True
env.workspace = "c:/data/default.gdb" # define your workspace

in_fc = "polygon"   # input polygon
centre_point_out = "final_centre" # This will contain centre point for each polygon | ORIG_FID field refers to the polygon OID
final_points = "final_points" # This will contain furthest vertices from centre point | POLY_ID field refers to the polygon OID

sr = arcpy.Describe(in_fc).spatialReference

arcpy.FeatureToPoint_management(in_fc, centre_point_out, "")

# Create empty point featureclass
poly_verts_out = arcpy.CreateFeatureclass_management(env.workspace, "poly_verts", "POINT", "", "","", sr)

ic = arcpy.da.InsertCursor(poly_verts_out, ["POLY_ID", "SHAPE@"])

# Get points from the polygons
sc = arcpy.da.SearchCursor(in_fc, ["OID@", "SHAPE@"])
for row in sc:
poly_id = row
print "POLYGON : {}".format(poly_id)
for p in row.getPart(0):
ic.insertRow((poly_id, p))
del row

del sc
del ic

# Now iterating through original polygon OID to analyze each polygon individually
poids = []

sc = arcpy.da.SearchCursor(in_fc, ["OID@"])
for row in sc:
poids.append(row)
del sc

# Creates an empty Point featureclass to contain the furthest point for each polygon. This will be the final output

arcpy.CreateFeatureclass_management(env.workspace, final_points, "POINT", "", "","", sr)
ic = arcpy.da.InsertCursor(final_points, ["SHAPE@", "POLY_ID"])

# Iterate over each OID and calculates furthest ponit in each polygon feature
for poid in poids:
temp_origin = arcpy.Select_analysis(centre_point_out, "temp_origin", "{} = {}".format(arcpy.AddFieldDelimiters(in_fc, "OBJECTID"), int(poid)))
temp_verts = arcpy.Select_analysis(poly_verts_out, "temp_verts", "{} = {}".format(arcpy.AddFieldDelimiters(poly_verts_out, "POLY_ID"), int(poid)))
arcpy.Near_analysis(temp_verts, temp_origin)
sc = arcpy.da.SearchCursor(temp_verts, ["SHAPE@", "NEAR_DIST"])
marker = ["", 0.0]
for row in sc:
if marker < row:
marker = row
marker = row
ic.insertRow((marker, poid))
del marker
del sc
del ic
``````