What I am going to say probably sounds very generic, and to a degree it is, but it can be applied to any engineering problem.
Software is generally used to deal with problems in the real world. In consequence it models those parts of the real world it deals with. The more accurate the model is, the better you can deal with the real problem, but at the same time generally the complexity of the model increases.
Your sample class is obviously an extremely simple model of a tower, more like a base class. Before you can make any further decisions of the modeling your 2d and 3d data, you need to ask yourself which aspects of this power grid to I need to deal with? And which properties do I need to for that?
Developing an appropriate data model can be done as a bottom-up approach or a top down approach. The bottom-up usually works well if you have a good understanding of the problem domain, and the data structures and class structures are inherently clear. However, if that is not the case, the top-down approach can also work, where you basically first create descriptions of all entities involved and then try and find some structure. Surprisingly you will find that often things you wouldn't normally have thought of as being of the same kind turn out to share properties or attributes.
Be prepared for a lot of refactoring when using the top-down approach. As your understanding of the problem domain grows, so will your understanding of the required data model.
Plus: for any work in 2D or 3D data I would recommend reading up about directed and undirected graphs.