当前位置:   article > 正文

python---shp文件裁剪tif文件(批量自动化)_python按照shp数据裁减多通道tif数据

python按照shp数据裁减多通道tif数据

运行如图:工作路径---选择tif文件夹

                  输出路径---选择输出tif文件夹

                  选择shp文件

                  运行

具体代码如下:

  1. from osgeo import gdal
  2. import tkinter as tk
  3. from tkinter import *
  4. from tkinter import filedialog
  5. import os
  6. # 选择路径函数
  7. def select_path1():
  8. global path_1
  9. path_1 = filedialog.askdirectory()
  10. print("工作路径:", path_1)
  11. return (path_1)
  12. # shp file
  13. def select_file():
  14. global file_shp
  15. root = tk.Tk()
  16. root.withdraw()
  17. file_shp = filedialog.askopenfilename()
  18. print("选择的文件:", file_shp)
  19. return file_shp
  20. def select_path3():
  21. global path_3
  22. path_3 = filedialog.askdirectory()
  23. print("输出路径:", path_3)
  24. return (path_3)
  25. def cut(x, y):
  26. folder_path = x # 指定文件夹路径
  27. output_folder = y
  28. if not os.path.exists(output_folder):
  29. os.makedirs(output_folder)
  30. file_path_list = [] # 存储文件路径的列表
  31. for root, dirs, files in os.walk(folder_path):
  32. for file in files:
  33. if file.endswith(".tif"):
  34. file_path = os.path.join(root, file)
  35. file_path_list.append(file_path)
  36. file_name_list = [] # 存储文件名的列表
  37. for root, dirs, files in os.walk(folder_path):
  38. for file in files:
  39. if file.endswith(".tif"):
  40. file_name_list.append(file)
  41. for i, n in zip(file_path_list, file_name_list):
  42. # 只需更换 dst(存放路径及文件名)
  43. # shp文件
  44. # 待裁剪的影像
  45. dst = output_folder + '/' + n
  46. shp = file_shp
  47. src = i.replace("\\", "/")
  48. ds = gdal.Warp(dst, # 裁剪图像保存完整路径(包括文件名)
  49. src, # 待裁剪的影像
  50. # warpMemoryLimit=500 内存大小M
  51. format='GTiff', # 保存图像的格式
  52. cutlineDSName=shp, # 矢量文件的完整路径
  53. cropToCutline=True,
  54. copyMetadata=True,
  55. creationOptions=['COMPRESS=LZW', "TILED=True"])
  56. print("正在裁剪:", src)
  57. # 创建窗口
  58. window = tk.Tk()
  59. # 设置长宽
  60. window.geometry("400x400")
  61. # 设置颜色
  62. window.configure(background="white")
  63. # 窗口标题
  64. window.title("nc转tif")
  65. LABLE = Label(window, bg="#8c52ff", fg="#ffffff", text="欢迎使用tif裁剪工具---Cuit", font=("Helvetica", 15, "bold"), pady=10)
  66. LABLE.place(x=90, y=0)
  67. # 工作路径
  68. button1 = tk.Button(window, text="工作路径", command=None)
  69. button1.place(x=55, y=60)
  70. button1.configure(command=select_path1)
  71. # 选择shp文件
  72. button1 = tk.Button(window, text="选择shp文件", command=None)
  73. button1.place(x=200, y=100)
  74. button1.configure(command=select_file)
  75. # 输出路径
  76. button3 = tk.Button(window, text="输出路径", command=None)
  77. button3.place(x=55, y=180)
  78. button3.configure(command=select_path3)
  79. # 运行
  80. button4 = tk.Button(window, text="运行", command=None)
  81. button4.place(x=200, y=200)
  82. button4.configure(command=lambda: cut(path_1, path_3))
  83. window.mainloop()

该程序解决了tif文件自动裁剪的问题,欢迎大家使用该程序,后续会继续写各种遥感数据处理中常见问题的处理程序!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/208241?site
推荐阅读
相关标签
  

闽ICP备14008679号