都什么年代了,还用传统矢量化 ?!都给我用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()
复制代码

 

 
posted @   wsZhang  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示