需要使用到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的结果: