I am trying to copy the schema of an existing shapefile and add to it in an
output shapefile. Somehow I am not getting anywhere with this...though the
docs seem very clear (and the download page :
https://pypi.python.org/pypi/Fiona) and it is just adding to a dictionary.

For this object, I have this schema

>>> c =
fiona.open(r'I:\It_24\115507_Road_Shields_Label_Processing\data\test_data.shp')
>>> c.schema
{'geometry': 'LineString', 'properties': OrderedDict([(u'ID', 'float:11'),
(u'OSM_ID', 'float:19'), (u'NAME', 'str:254'), (u'TYPE', 'str:254'),
(u'TUNNEL', 'int:6'), (u'BRIDGE', 'int:6'), (u'ONEWAY', 'int:6'), (u'REF',
'str:254'), (u'Z_ORDER', 'int:6')])}

and I want to return:

>>> c =
fiona.open(r'I:\It_24\115507_Road_Shields_Label_Processing\data\test_data_copy.shp')
>>> c.schema
{'geometry': 'LineString', 'properties': OrderedDict([(u'ID', 'float:11'),
(u'OSM_ID', 'float:19'), (u'NAME', 'str:254'), (u'TYPE', 'str:254'),
(u'TUNNEL', 'int:6'), (u'BRIDGE', 'int:6'), (u'ONEWAY', 'int:6'), (u'REF',
'str:254'), (u'Z_ORDER', 'int:6'), (u'shield_type', 'str:254'), (u'label',
'str:254'),  (u'label_len', 'int:10'), (u'zoom', 'int:10')])}

to do so I am running:

   def process_file(self, inFile, outFile):
        with fiona.open(inFile, 'r') as input:
            meta = input.meta
            # create new fields for the new schema
            meta['schema']['properties']['shield_type'.encode("utf-8")] =
'str:254'
            meta['schema']['properties']['label'.encode("utf-8")] =
'str:254'
            meta['schema']['properties']['label_len'] = 'int:10'
            meta['schema']['properties']['zoom'] = 'int:10'

            with fiona.open(outFile, 'w', **meta) as output:
                  for item in input:
                    n = item.copy()
                    new_data_attributes =
function_using_some_regex_parsing(item['properties']['REF']
                    ...

Right now running this I just get an empty dictionary...I'm not sure what
I'm missing...

>>> c =
fiona.open(r'I:\It_24\115507_Road_Shields_Label_Processing\data\test_data_copy.shp')
>>> c.schema
>>> {'geometry': 'LineString', 'properties': OrderedDict()}
_______________________________________________
Community mailing list
Community@lists.gispython.org
http://lists.gispython.org/mailman/listinfo/community

Reply via email to