都什么年代了,还用传统矢量化 ?!都给我用raterio,快,不止一点点
都给我用rasterio!快,不止一点点
# Convert bitmask to polygon (zero values only) import rasterio from rasterio.features import shapes from shapely.geometry import shape import geopandas as gpd import os,shutil import gc # Open the raster file src_dir = "/" dst_dir = "/" if os.path.exists(dst_dir): shutil.rmtree(dst_dir) os.mkdir(dst_dir) for file in os.listdir(src_dir): if not file[-4:] == ".tif": continue src_raster = os.path.join(src_dir,file) print(src_raster) with rasterio.open(src_raster) as src: image = src.read(1) # Read the first band # Convert raster band into polygons results = [{'properties': {'raster_val': v}, 'geometry': s} for i, (s, v) in enumerate(shapes(image, transform=src.transform))] # Transform GeoJSON features into shapely geometries geoms = [shape(geom['geometry']) for geom in results] # Create a GeoDataFrame gdf = gpd.GeoDataFrame.from_features(results) crs = src.crs src.close() # Now you have a GeoDataFrame with shapely polygons gdf = gdf[gdf['raster_val'] == 1] #dissolved = gdf.dissolve(by = 'raster_val') #dissolved['dem_id'] = (os.path.split(src_raster)[1]) #print(dissolved.head()) #dissolved.to_file(os.path.join(dst_dir,file[0:-4]+".shp")) gdf.crs = crs gdf.to_file(os.path.join(dst_dir,file[0:-4]+".shp")) del image del results del geoms del gdf gc.collect()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)