I have a problem with creating a new shapefile ( for Points) with a midpoints from Line shapefile.

I cannot use FeatureVerticesTo Points_management because I only have access to Basic and Standard level licenses of ArcGIS Desktop 10.5.1.

Is there another way to do this using ArcGIS Desktop tools or ArcPy functions?

  • You could write it in python, have a read of working with geometry objects.resources.arcgis.com/en/help/main/10.2/index.html#//… Sep 11 '19 at 5:28
  • Welcome to GIS SE! We're a little different from other sites; this isn't a discussion forum but a Q&A site. Please check out our short tour to learn about our focussed Q&A format.
    – PolyGeo
    Sep 11 '19 at 5:35
  • 1
    Add xy fields, right click on a header, pick calculate geometry, mid point X etc.
    – FelixIP
    Sep 11 '19 at 6:03
  • And you are restricted to ArcGIS? Did you consider other approaches, like QGIS? Sep 11 '19 at 6:48
  • Unfortunately, in that case I am limited to the Arcmap and arcpy environment. Maybe if it could work as independent python script in Qgis (I don't know too much Qgis environment with python). But I prefer stay with Arcmap.
    – Agnes
    Sep 11 '19 at 8:41

Esri provides an How To: Create a start, midpoint, and/or endpoint feature class of a line with an ArcGIS for Desktop Basic or Standard license which describes:

how to create a start, midpoint, and/or endpoint feature class from the vertices of an existing line feature class. This can be useful when working with an ArcGIS for Desktop Basic (ArcView) or Standard (ArcEditor) license and the Feature Vertices to Points tool is unavailable.

  • Absence of vertex is highly likely at mid point. Perhaps "..feature class from the vertices" is not completely correct.
    – FelixIP
    Sep 11 '19 at 6:08

In arcpy, use the positionAlongLine() function with a distance of 50 and use_percentage=True. See the documentation at:


You would need to use an arcpy.da.SearchCursor() for the line feature class, then for each line feature's geometry, run:

pointGeom = lineGeom.positionAlongLine(50, True)

Then convert the point geometry to a point feature and use an arcpy.da.InsertCursor()` to add it to your point feature class.

NB: The point you get returned will NOT be one of the vertices. It will genuinely be the half-way point along the line in terms of distance between the start and end points.

  • PS. PolyGeo's answer would probably be easier, and doesn't require scripting. Ie, Add the MID_X and MID_Y geometry attributes, then use this to create an X/Y Event Layer, and then export this X/Y Event Layer as a feature class. Sep 11 '19 at 5:32
  • I'd be keen to know why somebody voted this answer down (as opposed to neutral). I prefer to learn from people's opinions rather than be oblivious to them. Please add a comment when voting down. Sep 11 '19 at 22:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.