选择多个文件进行输入并获得相应的输出

时间:2019-08-01 08:41:35

标签: python python-3.x

所以我有这段代码,可以从Lidar Pointcloud中裁剪出树的shapefile。当对单个shapefile执行此操作时,效果很好。

我想做什么:我有180个单独的树shapefile,并想将每个文件从同一个点云中裁剪出来,并将其另存为单独的.las文件。 所以最后我应该有180个.las文件。 例如Input_shp:Tree11.shp-> Output_las:Tree11.las

我确信有一种方法可以一次完成所有这些操作。我只是不知道如何选择所有shapefile并将输出保存到180个单独的.las文件。

我对Python真的很陌生,任何帮助将不胜感激。

我已经尝试使用占位符(.format())来实现此目的,但实际上并没有到达任何地方。

from WBT.whitebox_tools import WhiteboxTools

wbt = WhiteboxTools()

wbt.work_dir = "/home/david/Documents/Masterarbeit/Pycrown/Individual Trees/"
wbt.clip_lidar_to_polygon(i="Pointcloud_to_clip.las", polygons="tree_11.shp", output="Tree11.las")

1 个答案:

答案 0 :(得分:-1)

我没有正在使用的插件,但您可能正在寻找以下代码片段:

from WBT.whitebox_tools import WhiteboxTools

wbt = WhiteboxTools()

workDir = "/home/david/Documents/Masterarbeit/Pycrown/Individual Trees/"
wbt.work_dir = workDir

# If you want to select all the files in your work dir you can use the following.
# though you may need to make it absolute, depending on where you run this:
filesInFolder = os.listDir(workDir)
numberOfShapeFiles = len([_ for _ in filesInFolder if _.endswith('.shp')])

# assume shape files start at 0 and end at n-1
# loop over all your shape files.
for fileNumber in range(numberOfShapeFiles):
    wbt.clip_lidar_to_polygon(
        i="Pointcloud_to_clip.las",
        polygons=f"tree_{fileNumber}.shp",
        output=f"Tree{fileNumber}.las"
    )

这利用了python format string templates
连同os.listdir函数。