the attributes of a shapefile are stored in an extra dbase-file. for example: mypolygons.shp contains geometries, mypolygons.dbf contains attributes. via an id the attributes are connected to the polygons. so just simple load your dbf file into capable software (e.g libreoffice) , edit attributes and your done
Having come across the same problem, I have develop a rudimentary workaround, which is pretty quick and dirty. It almost halves the KML size but with a cost, it removes of all HTML popups and symbology/style specifications. It is good for pure viewing purposes.
I usually prefer using Generalize tool (requires at least Editor licence) to test various options until I am satisfied with the shapes that I want to process. Usually a value in between 0.5 and 0.8 meters gives me a decent outcome. A warning, the Generalize tool modifies the input data, so the best practice is to take a copy of it beforehand.
After reading the suggestions and doing some research, I have decided to develop a pretty rough python script for KML stripping process by using regular expression (intentionally avoiding XML parsing process). The code is as follows:
import re,os
kml_loc=r"C:\Temp\doc.kml"
f=open(kml_loc)
lines=f.readlines()
f.close()
all_text_0=''.join(lines)
all_text_0=' '.join(all_text_0.split())
# Remove HTML popup and shape styles
all_text_1=re.sub('<description>.*?</description>','<description></description>',all_text_0)
all_text_1=re.sub('<styleUrl>.*?</styleUrl>','',all_text_1)
all_text_2=all_text_1
# Round the coordinates to desired resolution
decimal_places_of_xy_resolution=6
for i in re.findall('<coordinates>(.*?)</coordinates>',all_text_1):
fixed_part=' '.join([','.join(['{0:.{1}f}'.format(float(c),
[decimal_places_of_xy_resolution,0][c=='0']) for c in b.split(',') if c])
for b in i.split(' ') if b])
all_text_2=re.sub(i,fixed_part,all_text_2,1)
# Write bew KML with a new name
new_kml=list(os.path.splitext(kml_loc))
new_kml[0]+='_REDUCTED'
f=open(''.join(new_kml),'wb')
f.write(all_text_2)
f.close()
Best Answer
The
Numerical Vertex Edit
from theNumericalDigitize
Plugin should do what you want.It shows you the current coordinates in the layers CRS, and lets you change them to the values you want.