Ari Simmons
2014-05-28 22:04:06 UTC
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
(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'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...
An HTML attachment was scrubbed...
URL: <http://lists.gispython.org/pipermail/community/attachments/20140528/2788d117/attachment.htm>
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')])}
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()}
-------------- next part --------------{'geometry': 'LineString', 'properties': OrderedDict()}
An HTML attachment was scrubbed...
URL: <http://lists.gispython.org/pipermail/community/attachments/20140528/2788d117/attachment.htm>