gpt4 book ai didi

python - 如何将在 scikit-image find_contours 中创建的轮廓导出到 shapefile 或 geojson?

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:06 33 4
gpt4 key购买 nike

在卫星图像上运行后,我试图将 scikit-image.measure.find_contours() 函数的结果导出为 shapefile 或 geojson。

输出是一个类似(行,列)的数组,坐标沿等高线,有很多。

如何绘制各种等高线的坐标,并将其导出到 shapefile(可以设置适当的投影等)?

我当前的代码,其中“mask”是我处理过的图像:

from skimage import measure
import matplotlib.pyplot as plt

contours = measure.find_contours(mask, 0.5)

plt.imshow(mask)
for n, contour in enumerate(contours):
plt.plot(contour[:,1], contour[:, 0], linewidth=1)

最佳答案

内容大致如下,改编自 postrasteriofiona 的主要开发人员编写,应该可以工作,但我相信您需要多做一些调整。它使用 rasterio.features.shapes 来识别图像中具有某些值的连续区域,并根据光栅的变换返回关联的坐标。然后使用 fiona 将这些记录写入 shapefile。

import fiona
import rasterio.features

schema = {"geometry": "Polygon", "properties": {"value": "int"}}

with rasterio.open(raster_filename) as raster:
image = raster.read()
# use your function to generate mask
mask = your_thresholding_function(image)
# and convert to uint8 for rasterio.features.shapes
mask = mask.astype('uint8')
shapes = rasterio.features.shapes(mask, transform=raster.transform)
# select the records from shapes where the value is 1,
# or where the mask was True
records = [{"geometry": geometry, "properties": {"value": value}}
for (geometry, value) in shapes if value == 1]
with fiona.open(shape_filename, "w", "ESRI Shapefile",
crs=raster.crs.data, schema=schema) as out_file:
out_file.writerecords(records)

关于python - 如何将在 scikit-image find_contours 中创建的轮廓导出到 shapefile 或 geojson?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41487642/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com