Пакетное объединение .mif

Ответить
Nule
Завсегдатай
Сообщения: 276
Зарегистрирован: 26 дек 2011, 12:26
Репутация: 3

Пакетное объединение .mif

Сообщение Nule » 04 ноя 2012, 16:53

Здравствуйте!
Пытаюсь написать скрипт на питоне для пакетного склеивания 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()
Не знаю как переделать вот эту строку: out_layer = out_ds.CreateLayer(outfile, out_srs, ogr.wkbPolygon)
С шейпом всё понятно, создаем слой с типом геометрии, как и в исходных файлах. А как быть со смешанным типом геометрии .mif ?
Во всех примерах разбирают только .shp :(
Спасибо!
Последний раз редактировалось Nule 30 ноя 2012, 15:34, всего редактировалось 1 раз.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Пакетное объединение .mif

Сообщение Дмитрий Барышников » 04 ноя 2012, 19:39

Выберите подходящий тип геометрии здесь: http://www.gdal.org/ogr/ogr__core_8h.ht ... b65610f12a
Скорее всего wkbGeometryCollection

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Пакетное объединение .mif

Сообщение gamm » 04 ноя 2012, 20:45

а зачем все эти сложности при работе с текстовыми файлами? Файлы MID просто скопировать в один, один за другим (например, использовать copy ...), примерно то же то с MIF, копируем убрав у всех файлов, кроме первого, заголовки. В R, например, все можно сделать в несколько строк, не думаю, что на питоне больше ...

Nule
Завсегдатай
Сообщения: 276
Зарегистрирован: 26 дек 2011, 12:26
Репутация: 3

Re: Пакетное объединение .mif

Сообщение Nule » 04 ноя 2012, 20:56

gamm писал(а):а зачем все эти сложности при работе с текстовыми файлами? Файлы MID просто скопировать в один, один за другим (например, использовать copy ...), примерно то же то с MIF, копируем убрав у всех файлов, кроме первого, заголовки. В R, например, все можно сделать в несколько строк, не думаю, что на питоне больше ...
Надо именно на питоне, т.к. это лишь часть большого скрипта.

Ответить

Вернуться в «GDAL/OGR»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей