Я пытаюсь извлечь и создать многоугольники из данных глубины из файла TIFF. У меня есть файл TIFF с глубинной моделью Дании, и я хочу создать многоугольники, которые будут напоминать места, где плавание невозможно (суша и вода менее 2 метров).
Я извлек точки данных, в которых глубина воды находится в диапазоне 2–2,2 метра.

но я не уверен, как соединить точки так, чтобы получить отдельные многоугольники, напоминающие каждый из массивов суши/островов страны. Я анализирую пиксели файла TIFF от верхнего левого угла до правого нижнего, а это значит, что если я просто соединяю их все, я получаю один большой многоугольник со всеми соединенными островами

,
что не является намерением.
Это код, который я использую для извлечения точек
импорт растрового изображения импортировать numpy как np метаданные = { «драйвер»: «GTiff», 'dtype': 'float32', 'ноданные': 3.4028234663852886e+38, 'ширина': 15798, 'высота': 8324, 'счет': 1, #'crs': CRS.from_epsg(3034), 'преобразование': Аффинное(50.0, 0.0, 3602375.0, 0.0, -50.0, 3471675.0) } # Загрузите файл GeoTIFF tif_file_path = "ddm_50m.dybde.tiff" с rasterio.open(tif_file_path,'r') как r: # Считайте данные глубины как массив NumPy глубина_данных = r.read(1) # Определить порог глубина_порог = 2 # Создаем маску для точек с глубиной в диапазоне 2-2,2 метра маска_глубины = (данные_глубины > -порог_глубины*1.1) & (данные_глубины < -порог_глубины) & (данные_глубины < метаданные['nodata']) # Получить координаты точек с глубиной меньше порога Points_below_threshold = np.where (глубина_маска) # Распечатываем точки в файл с open('PointsBelowThreshold.txt', 'w') в виде файла: для y, x в zip(*points_below_threshold): # Доступ к значению глубины в этой точке значение_глубины = данные_глубины[y, x] file.write((str(y) + "," + str(x) + "," + str(глубина_значение))) file.write("\n") Если существует более умный способ определить это, дайте мне знать!