[GRASS-user] Connecting table

Bulent Arikan bulent.arikan at gmail.com
Tue Jan 3 15:44:14 EST 2012


Thank you! This seems to be an interesting solution to the problem
especially because it involves changing the driver from DBF to SQLITE. I
ended up using 'v.rast.stats', which adds columns for extended statistics
and uploads values all at once. The only thing is: data are recorded as
part of the same layer (i.e., Layer 1). So, I cheated!

However, I started trying your method. I created a new mapset to use sqlite
and copied some vector maps from a mapset where default driver is DBF. I
defined SQLITE as the new driver in the new mapset using 'db.connect'
(driver=sqlite, database='$GISDBASE/$LOCATION_NAME/$MAPSET/sqlite.db', no
flags checked). Then I wanted to use 'v.db.connect' for a vector map but I
cannot select table name etc. I also tried just using 'v.db.connect' but I
still cannot see anything under Table. So. I am confused about how to
define a new driver in a mapset.

Thank you again,

Bulent

On Tue, Jan 3, 2012 at 9:13 PM, Micha Silver <micha at arava.co.il> wrote:

> **
> On 01/03/2012 04:50 PM, Bulent Arikan wrote:
>
> Dear List,
>
>  I rasterized a centroid and ran 'r.univar', whose extended stats are
> saved as a text file. Then, I ran 'v.db.addtable' to create a second layer
> in the attribute table of the centroid and I had columns added in this
> second layer using 'v.db.addcol'. I want GRASS to upload values from the
> text file but I am not sure how to perform this task.
>
>  Is there a shorter way of creating a second layer and uploading values
> from the text file or what should I do next so that the columns in the
> second layer will be populated using the text file I have?
>
>
> I'm not sure about a shorter way, but here's an option:
> First setup your mapset to save attributes to sqlite.
> > v.db.connect centroid driver=sqlite database=....
>
> Now add the columns which will accept r.univar values to the sqlite table:
> > v.db.addcol centroid col="n double, null_cells double, cells double, min
> double, max double, range double, mean double, mean_of_abs double, stddev
> double, variance double, coeff_var double, sum double"
>
> Run r.univar on your raster, putting results into a text file
> > r.univar your_rast -g  > univar.txt
>
> Now do this loop to update values for the centroid:
> > while read l; do \
>     col=`echo $l | cut -d= -f1`; val=`echo $l | cut -d= -f2`; \
>     sqlite3 sqlite.db "UPDATE centroid SET ${col}=${val} ;"; \
> > done < univar.txt
>
> Assuming you want to run this for several centroids/areas, you'll probably
> want to add a WHERE clause to the UPDATE statement so as to put values for
> only one certain row (centroid).
>
> HTH, Micha
>
>
>  Thank you for your time.
>
>  GRASS 6.5 svn on Snow Leopard
>
>
>  --
> BÜLENT
>
> This mail was received via Mail-SeCure System.
>
>
> _______________________________________________
> grass-user mailing listgrass-user at lists.osgeo.orghttp://lists.osgeo.org/mailman/listinfo/grass-user
>
> This mail was received via Mail-SeCure System.
>
>
>
>
>
> --
> Micha Silver
> GIS Consultant, Arava Development Co.http://www.surfaces.co.il
>
>


-- 
BÜLENT ARIKAN, PhD
Senior Research Fellow
Research Center for Anatolian Civilizations
Koç University
İstiklal Caddesi No: 181 Merkez Han
Beyoğlu - ISTANBUL
TURKEY
34433
(+ 90) 212-393-6036
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/grass-user/attachments/20120103/86269449/attachment.html


More information about the grass-user mailing list