I knew I was missing something really simple! - I guess more reading on my part into the data model is going to be important. I hadn't realised that it's okay to "split" the storage - to have the locations file in a database that didn't also contain the map outlines.
So now, my backside feels much safer, and next week the boss will have some lovely maps to use at a conference, and I will make damn sure that Grass-GIS gets identified as the source of the maps. So thanks again ...
A couple of things which should be asked/made known.
1) When importing CSVs (I tried from Excel and from MySQL), the dbf creates all the import tables as Character. I could not find any way to change column type to INT. Is this a limitation on the driver command set?
2) The Grass Manager db.copy seems to have a bug. With the "select" cursor empty, it tries to set a conditional default (where ...), generating the following error:
SQL parser error in statement:
select * from table where 0 = 1
Error in db_open_select_cursor ()
If I typed the command manually, it worked fine.
3) Are there programs known to create/edit/save "legal" DBF file formats? On the Mac, at least, creating straight textfiles for import does not work well. Open Office (NeoOffice) opens DBFs quite happily as spreadsheets, but Grass-GIS doesn't like the OO DBF save format (the same applies for Excel).
Cheers and thanks to everyone for the help!
Richard Chirgwin
Moritz Lennert wrote:
On 24/03/07 07:34, Richard Chirgwin wrote:
Trying to work this one out, and not getting anywhere!
I have imported Shapefiles into vector maps.
I have "population" data (not people but using the same cat column IDs as in the shapefile attribute tables).
How do I integrate the population data so that the shapefiles can be coloured in thematic maps?
I can add columns to the vector attribute tables - but I can't find a command that would mass-populate the column
(in MySQL it would be a simple UPDATE Table 1, Table 2 set column=column where table 1.cat=table 2.cat).
(It probably doesn't help that the population data is in MySQL but I am happy to import)
I fear that I am missing something *really* simple but am just about going spare trying to find out!
If you are using the default GRASS settings, your shapefile data gets imported as a dbf file. There is no way of combining this file with others, either in a database application or in GRASS (i.e. there is no equivalent of ArcView's "joining" tables).
However, you are not obliged to work with dbf files, you can import your shapefile attribute data into mysql and then either add the colums with your above 'update' command or just create a view combining the two tables and link your map to this view.
Use:
- db.connect to define a different database backend (Databases->Manage Databases->Connect to database in the GUI)
- db.copy to copy an existing table to another table, including between different backends, i.e. dbf to mysql (Databases->Manage Databases->Copy table)
- v.db.connect to link your map to the table or to the view (Vector->vector<->database connection->Set database connection...)
You can also begin by setting db.connect in a new location, and then import the shapefile with v.in.ogr. The attribute table is then automatically created in the database you connected to.
Moritz