[GRASS-user] Integrating multi tables

Richard Chirgwin rchirgwin at ozemail.com.au
Mon Mar 26 19:24:07 EDT 2007


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
>




More information about the grass-user mailing list