docs: def intersect_with(self, polygon):
          """
          Calculates the intersection between the polygons in this surface
          and other polygon, in the z=0 projection.
          
          This method rely on the ``shapely.Polygon.intersects()`` method.
          The way this method is used is intersecting this polygon 
          recursively with all identified polygons which overlaps with it
          in the z=0 projection.
          
          :param polygon: Polygon to intersect with the Surface.
          :type polygon: pyny.Polygon
          :returns: Multiple polygons product of the intersections.
          :rtype: dict of ndarrays (keys are the number of the polygon
              inside the surface)
          """
          
          intersections = {}
          for i, poly in enumerate(self):
              if polygon.get_shapely().intersects(poly.get_shapely()):
                  inter = polygon.get_shapely().intersection(poly.get_shapely())
                  intersections[i] = np.array(list(inter.exterior.coords))[:-1]
          return intersections