Пытаюсь написать скрипт на питоне для пакетного склеивания MapInfo файлов .mif на базе скрипта для склеивания шейпов:
Код: Выделить всё
import sys
import glob
from osgeo import ogr
outfile = "merge.shp"
file_list = glob.glob('C:/1/Wiki/shp/*.shp')
# CREATE OUTPUT FILE
out_driver = ogr.GetDriverByName( 'ESRI Shapefile' )
out_ds = out_driver.CreateDataSource(outfile)
out_srs = None
out_layer = out_ds.CreateLayer(outfile, out_srs, ogr.wkbPolygon)
fd = ogr.FieldDefn('name', ogr.OFTString)
out_layer.CreateField(fd)
fd = ogr.FieldDefn('kV', ogr.OFTInteger)
out_layer.CreateField(fd)
# READ EACH INPUT FILE AND WRITE FIELDS TO NEW FILE
for shapefile in file_list:
print shapefile
[filename, extension] = shapefile.split('.')
in_drv = ogr.GetDriverByName( 'ESRI Shapefile' )
in_ds = in_drv.Open(shapefile)
in_layer = in_ds.GetLayer(0)
in_feature = in_layer.GetNextFeature()
kV_field = in_feature.GetFieldIndex('kV')
counter = 1
while in_feature is not None:
name = filename + "_" + `counter`
kV = in_feature.GetField(kV_field)
out_feat = ogr.Feature(out_layer.GetLayerDefn())
out_feat.SetField('name', name)
out_feat.SetField('kV', kV)
out_feat.SetGeometry(in_feature.GetGeometryRef().Clone())
out_layer.CreateFeature(out_feat)
out_layer.SyncToDisk()
out_feat.Destroy()
in_feature.Destroy()
in_feature = in_layer.GetNextFeature()
counter += 1
out_ds.Destroy()
С шейпом всё понятно, создаем слой с типом геометрии, как и в исходных файлах. А как быть со смешанным типом геометрии .mif ?
Во всех примерах разбирают только .shp
Спасибо!