docs: def point(self):
          """ returns location of node. If node geometry is not a point a center  point will be returned """
          if not self.geometry:
              raise ValueError('geometry attribute must be set before trying to get point property')
          if self.geometry.geom_type == 'Point':
              return self.geometry
          else:
              try:
                  # point_on_surface guarantees that the point is within the geometry
                  return self.geometry.point_on_surface
              except GEOSException:
                  # fall back on centroid which may not be within the geometry
                  # for example, a horseshoe shaped polygon
                  return self.geometry.centroid