本文整理汇总了Python中shapefile.Reader.iterRecords方法的典型用法代码示例。如果您正苦于以下问题:Python Reader.iterRecords方法的具体用法?Python Reader.iterRecords怎么用?Python Reader.iterRecords使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类shapefile.Reader
的用法示例。
在下文中一共展示了Reader.iterRecords方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _convert_csv_to_dbf
# 需要导入模块: from shapefile import Reader [as 别名]
# 或者: from shapefile.Reader import iterRecords [as 别名]
def _convert_csv_to_dbf(input_file, output_file, mapping_file=None,
mapping_from=None, mapping_to=None, print_data_dict=False):
if output_file is None:
name = new_file_ending(input_file.name, '.dbf')
output_file = open(name, 'w')
if mapping_file:
#Read this file and map it
try:
from shapefile import Reader
except ImportError:
print "pyshp required for mapping feature"
raise
dbfr = Reader(dbf=mapping_file)
#find field thath as the mapping_from name
#use -1 because pyshp adds a column for flagging deleted fields
name_i = _find_field_index_dbf(dbfr.fields, mapping_from) - 1
map_values = [rec[name_i] for rec in dbfr.iterRecords()]
# Parse the csv.
parser = csv_parser(handle=input_file)
header, fieldspecs, records = parser.parse()
if mapping_file:
csv_name_i = header.index(mapping_to)
#be conservative and make sure they match
if len(records) != len(map_values):
raise Exception('mapping records lengths must match')
#reorder the records so they match the original
#This will reaise an error if something does not map
mapped_records = [None]*len(map_values)
for i in xrange(len(map_values)):
mv = map_values[i]
try:
old_i = collect(records, csv_name_i).index(mv)
except ValueError:
raise ValueError('Could not find record name %s in csv' % mv)
mapped_records[i] = records[old_i]
records = mapped_records
# Write to dbf.
dbfwriter(output_file, header, fieldspecs, records)
if print_data_dict:
parser.write_dd(input_file.name, output_file)