0
点赞
收藏
分享

微信扫一扫

线下使用python将多个shp要素文件批量转为tif文件(二值图,不含经纬度信息)

yeamy 2022-04-18 阅读 30
需要使用到arcpy这个库,但是目前常用的python3不支持这个库,因此需要切换到python2.7之后,再继续运行代码.
# -*- coding: UTF-8 -*-
# 作    者  : PeiQi
# 开发时间  : 2021/9/20 0020  下午 9:17
# 文件名称  :  0920test.PY
# 开发工具  :  PyCharm
import arcpy
from arcpy import env
import os.path
import arcgisscripting

# ArcGIS帮助中貌似每个都会出现工作空间,但是我不知道有什么用,猜测应该是arcpy.FeatureToRaster_conversion读取的路径
env.workspace = r"H:\python_code_y\Test_Demo\paper2\0418random100test15\shp"
# Shp文件的存放地址
dir = r"H:\python_code_y\Test_Demo\paper2\0418random100test15\shp"

# os.walk()方法是一个简单易用的文件、目录遍历器
# root正在遍历的这个文件夹的本身的地址
# dirname是一个list,内容是该文件夹中所有的目录的名字(不包括子目录)
# filenames同样是list,内容是该文件夹中所有的文件名字(不包括子目录)
for root, dirname, filenames in os.walk(dir):
    # 一般使用ArcGIS的“按属性分割”或者迭代器得到的单要素文件一般会伴随着另外七个文件,
    #下面两句就是简单的输出一下文件夹中shp文件的个数,如不需要或者是文件数量不对,可以将下面两句删除
    size = len(filenames) / 8
    print size

    #文件夹中所有的文件名字都在filenames中,通过遍历判断得到shp文件
    for filename in filenames:
        # os.path.splitext()是一个元组,类似于('name','.shp'),索引1可以获得文件的扩展名

        #获得“name”
        file_name = os.path.splitext(filename)[0]
        #获得“.shp”
        file_class=os.path.splitext(filename)[1]

        #如果此时遍历的文件类型为“.shp”,就进入if判断
        if file_class == '.shp':
            try:
                print("the SHP file named %s is being processed..." %file_name)
                #FeatureToRaster_conversion(“要转换的shp文件”,“FID”,“转换tif结果的存放路径及命名”)
                arcpy.FeatureToRaster_conversion("%s.shp" %file_name, "FID", r"H:\python_code_y\Test_Demo\paper2\0418random100test15\tif\%s.tif" %file_name)
            except arcgisscripting.ExecuteError:
                continue

shp矢量文件:
在这里插入图片描述
转为tif的结果:
在这里插入图片描述

举报

相关推荐

0 条评论