Writing only one of the input vector fields to output vector using Fiona/ Python The Next CEO of Stack OverflowFiona - Preffered method for defining a schemaChange Attirbute Name (Fiona)Add joined data in fiona with new schemaSelect by attributes within the fiona Python moduleAdd attributes to an output shapefile schema (via meta)Fiona + Shapely: Loading a set of LineStrings and writing their centroids to a shapefile, including original propertiesDifferent output for Fiona Shapefile CRSWhy Does Fiona Crash Python When Creating an Output File?GeoPandas to_file() saves GeoDataFrame without coordinate systemGeopandas not recognizing geometry typegdal/geopandas data object compatibility in pythonHow to prevent “Type error: unhashable type” while writing properties with Fiona?

sp_blitzCache results Memory grants

What happened in Rome, when the western empire "fell"?

Why don't programming languages automatically manage the synchronous/asynchronous problem?

Rotate a column

Why am I allowed to create multiple unique pointers from a single object?

Would this house-rule that treats advantage as a +1 to the roll instead (and disadvantage as -1) and allows them to stack be balanced?

If a black hole is created from light, can this black hole then move at speed of light?

What is the purpose of the Evocation wizard's Potent Cantrip feature?

How do I make a variable always equal to the result of some calculations?

MessageLevel in QGIS3

Are there any unintended negative consequences to allowing PCs to gain multiple levels at once in a short milestone-XP game?

Is it my responsibility to learn a new technology in my own time my employer wants to implement?

Can we say or write : "No, it'sn't"?

Contours of a clandestine nature

How to count occurrences of text in a file?

Make solar eclipses exceedingly rare, but still have new moons

Which kind of appliances can one connect to electric sockets located in an airplane's toilet?

WOW air has ceased operation, can I get my tickets refunded?

If the heap is initialized for security, then why is the stack uninitialized?

How do I transpose the first and deepest levels of an arbitrarily nested array?

What exact does MIB represent in SNMP? How is it different from OID?

Would a completely good Muggle be able to use a wand?

Why do professional authors make "consistency" mistakes? And how to avoid them?

What does convergence in distribution "in the Gromov–Hausdorff" sense mean?



Writing only one of the input vector fields to output vector using Fiona/ Python



The Next CEO of Stack OverflowFiona - Preffered method for defining a schemaChange Attirbute Name (Fiona)Add joined data in fiona with new schemaSelect by attributes within the fiona Python moduleAdd attributes to an output shapefile schema (via meta)Fiona + Shapely: Loading a set of LineStrings and writing their centroids to a shapefile, including original propertiesDifferent output for Fiona Shapefile CRSWhy Does Fiona Crash Python When Creating an Output File?GeoPandas to_file() saves GeoDataFrame without coordinate systemGeopandas not recognizing geometry typegdal/geopandas data object compatibility in pythonHow to prevent “Type error: unhashable type” while writing properties with Fiona?










0















I'm working on a function to perform operations on folders of vector files.



These files might have differing attribute fields but there will be a common field between them. I'm using fiona in python to do the work.



A section of code is attached below and I'm using meta = input.meta to gather all the information about the input file to write to the output file.



This is being designed to work on different vector files. So the common field may be different in each run. For example, it might be a string field in one instance or an integer in another.



Despite not knowing beforehand what type of field the input field would be, is it possible to only include the specified field in the output file?



Whilst keeping the other information, such as projection and geometry type, the same as the input.



for file in veclist:
with fiona.open(file) as input:
meta = input.meta
outfilename = os.path.join(outdir, os.path.basename(file).replace('.shp', "_d.shp"))
with fiona.open(outfilename, 'w', **meta) as output:


I've tried to edit the dictionary of the schema and I've had some success



for file in veclist:
with fiona.open(file) as input:

fieldvalue = input.schema['properties'][target_field]

input.schema['properties'].clear()

input.schema['properties'][target_field] = fieldvalue

meta = input.meta
outfilename = os.path.join(outdir, os.path.basename(file).replace('.shp', "_d.shp"))
with fiona.open(outfilename, 'w', **meta) as output:


As print(input.schema) listed this:



'geometry': 'Polygon', 'properties': OrderedDict([('Field_Name', 'str:254')])


And print(input.meta) listed this:



'crs': u'lon_0': -2, u'k': 0.9996012717, u'datum': u'OSGB36', u'y_0': -100000, u'no_defs': True, u'proj': u'tmerc', u'x_0': 400000, u'units': u'm', u'lat_0': 49, 'driver': u'ESRI Shapefile', 'crs_wkt': u'PROJCS["OSGB_1936_British_National_Grid",GEOGCS["GCS_OSGB 1936",DATUM["OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["Meter",1]]', 'schema': 'geometry': 'Polygon', 'properties': OrderedDict([('Field_Name', 'str:254')])


But I get this error on trying to write the shapefile:



 File "/.local/lib/python2.7/site-packages/fiona/collection.py", line 355, in write
self.writerecords([record])
File "/.local/lib/python2.7/site-packages/fiona/collection.py", line 349, in writerecords
self.session.writerecs(records, self)
File "fiona/ogrext.pyx", line 1168, in fiona.ogrext.WritingSession.writerecs
ValueError: Record does not match collection schema: [u'Field_Name', u'pH', u'P_PPM', u'P_Index', u'K_PPM', u'K_Index', u'Mg_PPM', u'Mg_Index', u'2018_y_t_h', u'Grid_ID'] != ['Field_Name']


I thought I had successfully changed my schema and meta when I printed out the results. But it still seems to have picked up the original.










share|improve this question
























  • With Fiona, the meta of a shapefile is a a simple dictionary with geometry and properties as keys that you can modify.( Change Attirbute Name (Fiona) or Fiona - Preffered method for defining a schema for example)

    – gene
    yesterday
















0















I'm working on a function to perform operations on folders of vector files.



These files might have differing attribute fields but there will be a common field between them. I'm using fiona in python to do the work.



A section of code is attached below and I'm using meta = input.meta to gather all the information about the input file to write to the output file.



This is being designed to work on different vector files. So the common field may be different in each run. For example, it might be a string field in one instance or an integer in another.



Despite not knowing beforehand what type of field the input field would be, is it possible to only include the specified field in the output file?



Whilst keeping the other information, such as projection and geometry type, the same as the input.



for file in veclist:
with fiona.open(file) as input:
meta = input.meta
outfilename = os.path.join(outdir, os.path.basename(file).replace('.shp', "_d.shp"))
with fiona.open(outfilename, 'w', **meta) as output:


I've tried to edit the dictionary of the schema and I've had some success



for file in veclist:
with fiona.open(file) as input:

fieldvalue = input.schema['properties'][target_field]

input.schema['properties'].clear()

input.schema['properties'][target_field] = fieldvalue

meta = input.meta
outfilename = os.path.join(outdir, os.path.basename(file).replace('.shp', "_d.shp"))
with fiona.open(outfilename, 'w', **meta) as output:


As print(input.schema) listed this:



'geometry': 'Polygon', 'properties': OrderedDict([('Field_Name', 'str:254')])


And print(input.meta) listed this:



'crs': u'lon_0': -2, u'k': 0.9996012717, u'datum': u'OSGB36', u'y_0': -100000, u'no_defs': True, u'proj': u'tmerc', u'x_0': 400000, u'units': u'm', u'lat_0': 49, 'driver': u'ESRI Shapefile', 'crs_wkt': u'PROJCS["OSGB_1936_British_National_Grid",GEOGCS["GCS_OSGB 1936",DATUM["OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["Meter",1]]', 'schema': 'geometry': 'Polygon', 'properties': OrderedDict([('Field_Name', 'str:254')])


But I get this error on trying to write the shapefile:



 File "/.local/lib/python2.7/site-packages/fiona/collection.py", line 355, in write
self.writerecords([record])
File "/.local/lib/python2.7/site-packages/fiona/collection.py", line 349, in writerecords
self.session.writerecs(records, self)
File "fiona/ogrext.pyx", line 1168, in fiona.ogrext.WritingSession.writerecs
ValueError: Record does not match collection schema: [u'Field_Name', u'pH', u'P_PPM', u'P_Index', u'K_PPM', u'K_Index', u'Mg_PPM', u'Mg_Index', u'2018_y_t_h', u'Grid_ID'] != ['Field_Name']


I thought I had successfully changed my schema and meta when I printed out the results. But it still seems to have picked up the original.










share|improve this question
























  • With Fiona, the meta of a shapefile is a a simple dictionary with geometry and properties as keys that you can modify.( Change Attirbute Name (Fiona) or Fiona - Preffered method for defining a schema for example)

    – gene
    yesterday














0












0








0








I'm working on a function to perform operations on folders of vector files.



These files might have differing attribute fields but there will be a common field between them. I'm using fiona in python to do the work.



A section of code is attached below and I'm using meta = input.meta to gather all the information about the input file to write to the output file.



This is being designed to work on different vector files. So the common field may be different in each run. For example, it might be a string field in one instance or an integer in another.



Despite not knowing beforehand what type of field the input field would be, is it possible to only include the specified field in the output file?



Whilst keeping the other information, such as projection and geometry type, the same as the input.



for file in veclist:
with fiona.open(file) as input:
meta = input.meta
outfilename = os.path.join(outdir, os.path.basename(file).replace('.shp', "_d.shp"))
with fiona.open(outfilename, 'w', **meta) as output:


I've tried to edit the dictionary of the schema and I've had some success



for file in veclist:
with fiona.open(file) as input:

fieldvalue = input.schema['properties'][target_field]

input.schema['properties'].clear()

input.schema['properties'][target_field] = fieldvalue

meta = input.meta
outfilename = os.path.join(outdir, os.path.basename(file).replace('.shp', "_d.shp"))
with fiona.open(outfilename, 'w', **meta) as output:


As print(input.schema) listed this:



'geometry': 'Polygon', 'properties': OrderedDict([('Field_Name', 'str:254')])


And print(input.meta) listed this:



'crs': u'lon_0': -2, u'k': 0.9996012717, u'datum': u'OSGB36', u'y_0': -100000, u'no_defs': True, u'proj': u'tmerc', u'x_0': 400000, u'units': u'm', u'lat_0': 49, 'driver': u'ESRI Shapefile', 'crs_wkt': u'PROJCS["OSGB_1936_British_National_Grid",GEOGCS["GCS_OSGB 1936",DATUM["OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["Meter",1]]', 'schema': 'geometry': 'Polygon', 'properties': OrderedDict([('Field_Name', 'str:254')])


But I get this error on trying to write the shapefile:



 File "/.local/lib/python2.7/site-packages/fiona/collection.py", line 355, in write
self.writerecords([record])
File "/.local/lib/python2.7/site-packages/fiona/collection.py", line 349, in writerecords
self.session.writerecs(records, self)
File "fiona/ogrext.pyx", line 1168, in fiona.ogrext.WritingSession.writerecs
ValueError: Record does not match collection schema: [u'Field_Name', u'pH', u'P_PPM', u'P_Index', u'K_PPM', u'K_Index', u'Mg_PPM', u'Mg_Index', u'2018_y_t_h', u'Grid_ID'] != ['Field_Name']


I thought I had successfully changed my schema and meta when I printed out the results. But it still seems to have picked up the original.










share|improve this question
















I'm working on a function to perform operations on folders of vector files.



These files might have differing attribute fields but there will be a common field between them. I'm using fiona in python to do the work.



A section of code is attached below and I'm using meta = input.meta to gather all the information about the input file to write to the output file.



This is being designed to work on different vector files. So the common field may be different in each run. For example, it might be a string field in one instance or an integer in another.



Despite not knowing beforehand what type of field the input field would be, is it possible to only include the specified field in the output file?



Whilst keeping the other information, such as projection and geometry type, the same as the input.



for file in veclist:
with fiona.open(file) as input:
meta = input.meta
outfilename = os.path.join(outdir, os.path.basename(file).replace('.shp', "_d.shp"))
with fiona.open(outfilename, 'w', **meta) as output:


I've tried to edit the dictionary of the schema and I've had some success



for file in veclist:
with fiona.open(file) as input:

fieldvalue = input.schema['properties'][target_field]

input.schema['properties'].clear()

input.schema['properties'][target_field] = fieldvalue

meta = input.meta
outfilename = os.path.join(outdir, os.path.basename(file).replace('.shp', "_d.shp"))
with fiona.open(outfilename, 'w', **meta) as output:


As print(input.schema) listed this:



'geometry': 'Polygon', 'properties': OrderedDict([('Field_Name', 'str:254')])


And print(input.meta) listed this:



'crs': u'lon_0': -2, u'k': 0.9996012717, u'datum': u'OSGB36', u'y_0': -100000, u'no_defs': True, u'proj': u'tmerc', u'x_0': 400000, u'units': u'm', u'lat_0': 49, 'driver': u'ESRI Shapefile', 'crs_wkt': u'PROJCS["OSGB_1936_British_National_Grid",GEOGCS["GCS_OSGB 1936",DATUM["OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["Meter",1]]', 'schema': 'geometry': 'Polygon', 'properties': OrderedDict([('Field_Name', 'str:254')])


But I get this error on trying to write the shapefile:



 File "/.local/lib/python2.7/site-packages/fiona/collection.py", line 355, in write
self.writerecords([record])
File "/.local/lib/python2.7/site-packages/fiona/collection.py", line 349, in writerecords
self.session.writerecs(records, self)
File "fiona/ogrext.pyx", line 1168, in fiona.ogrext.WritingSession.writerecs
ValueError: Record does not match collection schema: [u'Field_Name', u'pH', u'P_PPM', u'P_Index', u'K_PPM', u'K_Index', u'Mg_PPM', u'Mg_Index', u'2018_y_t_h', u'Grid_ID'] != ['Field_Name']


I thought I had successfully changed my schema and meta when I printed out the results. But it still seems to have picked up the original.







python fields-attributes fiona






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 4 hours ago









PolyGeo

53.8k1781245




53.8k1781245










asked yesterday









MattEnvSysMattEnvSys

234




234












  • With Fiona, the meta of a shapefile is a a simple dictionary with geometry and properties as keys that you can modify.( Change Attirbute Name (Fiona) or Fiona - Preffered method for defining a schema for example)

    – gene
    yesterday


















  • With Fiona, the meta of a shapefile is a a simple dictionary with geometry and properties as keys that you can modify.( Change Attirbute Name (Fiona) or Fiona - Preffered method for defining a schema for example)

    – gene
    yesterday

















With Fiona, the meta of a shapefile is a a simple dictionary with geometry and properties as keys that you can modify.( Change Attirbute Name (Fiona) or Fiona - Preffered method for defining a schema for example)

– gene
yesterday






With Fiona, the meta of a shapefile is a a simple dictionary with geometry and properties as keys that you can modify.( Change Attirbute Name (Fiona) or Fiona - Preffered method for defining a schema for example)

– gene
yesterday











0






active

oldest

votes












Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f317034%2fwriting-only-one-of-the-input-vector-fields-to-output-vector-using-fiona-python%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Geographic Information Systems Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f317034%2fwriting-only-one-of-the-input-vector-fields-to-output-vector-using-fiona-python%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

រឿង រ៉ូមេអូ និង ហ្ស៊ុយលីយេ សង្ខេបរឿង តួអង្គ បញ្ជីណែនាំ

Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given

Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221