首页 > 其他分享 >都什么年代了,还用传统矢量化 ?!都给我用raterio,快,不止一点点

都什么年代了,还用传统矢量化 ?!都给我用raterio,快,不止一点点

时间:2024-07-22 11:33:07浏览次数:12  
标签:raster raterio gdf src 矢量化 一点点 file os dir

都给我用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)

    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.to_file(os.path.join(dst_dir,file[0:-4]+".shp"))

    del image
    del results
    del geoms
    del gdf

    gc.collect() 

 

标签:raster,raterio,gdf,src,矢量化,一点点,file,os,dir
From: https://www.cnblogs.com/wszhang/p/18315702

相关文章

  • 一天一点点,第四天Python基础
    第一天:一天一点点。Python基础-CSDN博客第二天:一天一点点,接上章Python基础-CSDN博客第三天:一天一点点,第三天Python基础(循环语句)-CSDN博客推导式推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。推导式是一种强大且简洁的语法,适用于生......
  • 【吴恩达 机器学习 学习笔记】多元线性回归模型(1):矢量化及特征缩放
    文章目录多元线性回归模型矢量化用于多元线性回归的梯度下降法正态方程(只作了解即可)特征缩放回顾:线性回归模型及梯度下降的原理多元线性回归模型在前面的学习中,我们掌握了根据房屋的面积预测房屋价格的方法(单变量线性回归模型),如果我们的房屋特征增加(如增加了房间......
  • leetcode145. 二叉树的后序遍历,递归法+迭代法,全过程图解+步步解析,一点点教会你迭代法
    leetcode145.二叉树的后序遍历,递归法+迭代法给你一棵二叉树的根节点root,返回其节点值的后序遍历。示例1:输入:root=[1,null,2,3]输出:[3,2,1]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]递归法还是一如既往的简单。postorder函数是递归函数,用......
  • cdq分治/逆序对 一点点总结
    cdq分治/逆序对一点点总结归并排序求普通逆序对问题#include<bits/stdc++.h>#defineINinline#defineRregisterintusingnamespacestd;constintN=5e5+5;typedeflonglongll;INintread(){intf=1;charch;while((ch=getchar())<'0'||ch>&#......
  • NumPy 基础知识:数组和矢量化计算
    目录NumPyndarray:多维数组对象创建ndarraysndarrays的数据类型使用NumPy数组进行运算基本索引和切片使用切片编制索引布尔索引花式索引转置数组和交换轴伪随机数生成通用函数:快速的逐元素数组函数数组面向数组编程将条件逻辑表示为数组运算数学和统计方法布尔数组......
  • 关于CSRF跨站请求伪造的理解(只写了一点点,未写完)
    之前做一道题时遇到了这样一句CSRF(Cross—SiteRequestForgery)跨站请求伪造的预防措施:1、使用token2、加验证码3、http请求头设置referer字段有点不太理解什么时候请求头设置了referer字段发现是这种浏览器开发者页面看到的请求头里的ReferrerPolicy。这个的含义,用AI生成......
  • 每天进步一点点-nginx.conf配置文件解析转载
    #nginx.conf文件#定义Nginx运行的用户和用户组userwwwwww;#nginx进程数,建议设置为等于CPU总核心数。worker_processes8;#全局错误日志定义类型,[debug|info|notice|warn|error|crit]error_log/usr/local/nginx/logs/error.loginfo;#进程pid文件pid/u......
  • golang中关于map的value类型定义为函数类型时(方法值)的一点点思考
    文章的内容仅仅是自己关于map的value类型定义为函数类型时的一点点思考,如有不对的地方,请不吝赐教。学习过后才知道叫做方法值。1、起因最近在看老项目代码时,看到了一段类似于下面的定义,最开始看到的时候,对于LotMap的用法比较疑惑,为什么mapvalue定义的函数类型是func(r......
  • 2.16 闲话 & solution『漆黑的夜中透出了一点点微光/早就应该习惯/忽明忽暗酒阑人散』
    为啥只有我和CuFeO4【数据删除】,别人都没【数据删除】,血亏,下次绝对不【数据删除】了明天有CF,希望能打在写\(\text{NTT}\)惹,但是没有达成写4题呜呜明天有模拟赛唔,首先是朴素\(dp\)骗分,设\(dp_{i,j}\)表示已经取到了\(i\)个,其中取模后结果为\(j\)的方案数,容易有转移\[......
  • 每天进步一点点 - 优雅重试轮询,替代Thread.sleep()
    背景很多时候,在进行一个需要耗时等待的操作时,我们往往选择采用间隔一段时间进行轮询的方式。这个方式比较原始的写法如下,即循环+sleep:Guavaretry添加如下依赖:一个简单的示例如下图,除了图中的配置,还支持.retryIfException()发生错误时重试,.withRetryListener(...)设置重试......