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?
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
add a comment |
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
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
add a comment |
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
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
python fields-attributes fiona
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
add a comment |
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
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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