code: def calc_geo_centre_point(node_source, node_target):
      
  
      proj_source = partial(
              pyproj.transform,
              pyproj.Proj(init='epsg:4326'),  # source coordinate system
              pyproj.Proj(init='epsg:3035'))  # destination coordinate system
  
      # ETRS (equidistant) to WGS84 (conformal) projection
      proj_target = partial(
              pyproj.transform,
              pyproj.Proj(init='epsg:3035'),  # source coordinate system
              pyproj.Proj(init='epsg:4326'))  # destination coordinate system
  
      branch_shp = transform(proj_source, LineString([node_source.geo_data, node_target.geo_data]))
  
      distance = vincenty((node_source.geo_data.y, node_source.geo_data.x),
                          (node_target.geo_data.y, node_target.geo_data.x)).m
  
      centre_point_shp = transform(proj_target, branch_shp.interpolate(distance/2))
  
      return centre_point_shp
docs: Calculates the geodesic distance between `node_source` and `node_target`
      incorporating the detour factor specified in config_calc.cfg.
      
      Parameters
      ----------
      node_source: LVStationDing0, GeneratorDing0, or CableDistributorDing0
          source node, member of GridDing0._graph
      node_target: LVStationDing0, GeneratorDing0, or CableDistributorDing0
          target node, member of GridDing0._graph
  
      Returns
      -------
      :any:`float`
          Distance in m.