docs: def _pnpoly(x, y, coords):
      """
      the algorithm to judge whether the point is located in polygon
      reference: https://www.ecse.rpi.edu/~wrf/Research/Short_Notes/pnpoly.html#Explanation
      """
      vert = [[0, 0]]
  
      for coord in coords:
          for node in coord:
              vert.append(node)
          vert.append(coord[0])
          vert.append([0, 0])
  
      inside = False
  
      i = 0
      j = len(vert) - 1
  
      while i < len(vert):
          if ((vert[i][0] > y) != (vert[j][0] > y)) and (x < (vert[j][1] - vert[i][1])
                                                         * (y - vert[i][0]) / (vert[j][0] - vert[i][0]) + vert[i][1]):
              inside = not inside
          j = i
          i += 1
  
      return inside