[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