Feature request #13845
A simple method for adding data to exisitng polygons/lines
|Pull Request or Patch supplied:||No||Resolution:|
|Easy fix?:||No||Copied to github as #:||21869|
As far as I can tell there is still no simple method to attach field data to already mapped polygons/lines in such a way as a data manager can make full use of that data and keep it up to date within Qgis as information changes. This I see as a really important function of any GIS, I'm surprised it's still not been addressed (if I'm missing something please let me know as I need this functionality for work). Options which seem as though they address the issue but fail;
1. Table joins - if the survey data is in csv format it can't be edited later, leaving the data manager no choice but to re-survey every time information changes. Saving the csv to shapefile format leads to one entire set of shapefiles for the data and another for the shapes. Ten files for each layer, all of which are technically editable leaving it hugely prone to errors.
2. Merging layers, spatial joins etc. - all such processing options create a third layer out of the two to be joined. This renders any pre-written virtual fields useless as they are not carried over into the new layer, so the data manager has all the data but cannot process it or keep it up to date
3. Join attributes table - Does not add attributes to columns with the same name, but instead creates a new column labelled 'old column_2'. As above, this then renders pre-written virtual fields and further styling based on field names useless.
4. Cut and paste the data straight into the .dbf file - My current strategy, but very prone to creating errors if record order is disrupted or 'phantom' polygons are present (see bug #11007).
As I see it, the best solution would be a way of merging the attributes from one layer to the shapes of another (using a key field), but actually adding the data to the shapes layer, not creating a third layer out of the first two, and taking account of when the base layer already has a column of the same name as the data layer.