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

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

QGIS export composer to PDF scale the map [closed] Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Print Composer QGIS 2.6, how to export image?QGIS 2.8.1 print composer won't export all OpenCycleMap base layer tilesSave Print/Map QGIS composer view as PNG/PDF using Python (without changing anything in visible layout)?Export QGIS Print Composer PDF with searchable text labelsQGIS Print Composer does not change from landscape to portrait orientation?How can I avoid map size and scale changes in print composer?Fuzzy PDF export in QGIS running on macSierra OSExport the legend into its 100% size using Print ComposerScale-dependent rendering in QGIS PDF output

PDF-ში გადმოწერა სანავიგაციო მენიუproject page