请帮我写一段python代码,需要使用Fiiona库实现‘F:\20240924-盐碱地\DATA\盐碱地DATA\标准化处理后市级盐碱地土壤图层’文件夹下所有的TAB文件转成shp格式,并保留原来的文件
时间: 2024-12-23 12:12:39 浏览: 16
好的,你可以使用 Fiona 和 Shapely 库结合GDAL工具来实现这个转换过程。以下是一个基本的 Python 代码示例:
```python
import os
from fiona import collection
import gdal
from shapely.geometry import shape
# 指定源文件夹路径
src_folder = r"F:\20240924-盐碱地(DATA\盐碱地DATA\标准化处理后市级盐碱地土壤图层)"
dst_folder = src_folder + "_shps" # 目标文件夹,假设原有文件夹下新建一个用于存放.shp文件
# 检查目标文件夹是否存在,如果不存在则创建
if not os.path.exists(dst_folder):
os.makedirs(dst_folder)
# 遍历源文件夹中的所有TAB文件
for filename in os.listdir(src_folder):
if filename.endswith(".tab"): # 检查是否为TAB文件
tab_file = os.path.join(src_folder, filename)
shp_file = os.path.join(dst_folder, filename.split('.')[0] + ".shp")
with gdal.OpenEx(tab_file) as src_ds:
driver = ogr.GetDriverByName("ESRI Shapefile")
dst_ds = driver.CreateDataSource(shp_file)
for i, feature in enumerate(collection(tab_file)):
geom = shape(feature["geometry"])
new_feature = ogr.Feature(dst_ds.GetLayer().GetLayerDefn())
new_feature.SetGeometry(geom)
new_feature.SetField("field_name", feature["properties"]["field_name"]) # 这里假设有一个名为"field_name"的属性字段
dst_layer = dst_ds.CreateLayer("", geom_type=ogr.wkbPolygon)
dst_layer.CreateField(feature["properties"].keys()[0]) # 创建第一个属性字段作为表头
dst_layer.WriteFeature(new_feature)
dst_ds.Destroy() # 关闭并清理临时文件
print("转换完成")
```
请注意,这只是一个基础模板,你需要根据你的实际情况调整字段名称、地理空间信息以及可能存在的特殊格式问题。另外,`field_name`应替换为你的TAB文件中实际的属性字段名称。
阅读全文