[GRASS-user] load vector map from PostGIS

Markus Metz markus.metz.giswork at gmail.com
Thu Feb 15 00:12:44 PST 2018


[ please keep it in the list ]

On Thu, Feb 15, 2018 at 8:52 AM, Vilem Ded <Ded.V at seznam.cz> wrote:
>
> Hi,
> now it works!
> Can you please briefly elaborate, why setting dbname, dbschema by
db.connect + user,password by db.login does not work?

I don't know really, maybe no write permissions? Maybe something collides
when trying to read from and write to the same db + schema at the same time?

> The v.in.ogr is working now, but it doesnt seem very safe to leave
password in input string in the script (it is not so serious with only
SELECT priviledges though)

you can add a .pgpass file entry as such:

thehost:5432:thedb:theuser:thepasswd

then you don't need to provide username and password in the script, the PG
client library will fetch them from the .pgpass file.

Markus M

> Thank you very much
> Vil
> ---------- Původní e-mail ----------
> Od: Markus Metz <markus.metz.giswork at gmail.com>
> Komu: Vilem Ded <Ded.V at seznam.cz>
> Datum: 14. 2. 2018 18:01:11
>
> Předmět: Re: [GRASS-user] load vector map from PostGIS
>
>
>
> On Wed, Feb 14, 2018 at 4:44 PM, Vilem Ded <Ded.V at seznam.cz> wrote:
> >
> > Thank you a lot. I have managed to move forward, but i am not there
yet:/
> > I can definitely reach the database since the command:
> >  v.in.ogr -l input= "PG:host=172.21.3.20 dbname=mydb user=dbusername
password=passwd"
> > prints out names of my tables in database.
> > But command
> > v.in.ogr input= "PG:host=172.21.3.20 dbname=mydb user=dbusername
password=passwd" output=outpoint  layer=myschema.mytable
> > prints an error about "missing '=' after 'mydb' in connection info
string" (at the end). This seems maybe like pg error than grass.script,
doesnt it?
>
> Try to reset the default GRASS db connection to the default (sqlite) with
>
> db.connect -d
>
> and test again
>
> Markus M
> >
> > Thx.
> > Vil
> >
> > DBMI-PostgreSQL driver error:
> > Connection failed.
> > missing "=" after "mydb" in connection info string
> >
> > DBMI-PostgreSQL driver error:
> > Connection failed.
> > missing "=" after "mydb" in connection info string
> >
> > WARNING: Unable to open database <dbname=mydb schema=myschema> by
> >          driver <pg>
> > WARNING: Unable open database <dbname=mydb schema=myschema> by
> >          driver <pg>
> > WARNING: Unable to find table <outputpoint> linked to vector map
> >          <outputpoint>
> > Creating attribute table for layer <myschema.mytable>...
> > DBMI-PostgreSQL driver error:
> > Connection failed.
> > missing "=" after "mydb" in connection info string
> >
> > DBMI-PostgreSQL driver error:
> > Connection failed.
> > missing "=" after "mydb" in connection info string
> >
> > WARNING: Unable to open database <dbname=mydb schema=myschema> by
> >          driver <pg>
> > ERROR: Unable to open database <dbname=mydb schema=myschema> by
> >        driver <pg>
> >
> >
> >
> > ---------- Původní e-mail ----------
> > Od: Moritz Lennert <mlennert at club.worldonline.be>
> > Komu: Vilem Ded <Ded.V at seznam.cz>
> > Datum: 13. 2. 2018 14:58:22
> > Předmět: Re: [GRASS-user] load vector map from PostGIS
> >
> > Le Tue, 13 Feb 2018 14:09:31 +0100 (CET),
> > "Vilem Ded" <Ded.V at seznam.cz> a écrit :
> >
> > > Hi,
> > > is there any possibility to download data  into local grass database
> > > (topologcal) from remote postgis server? (without getting error)
> > > Or is the issue still pending?
> > > (http://osgeo-org.1560.x6.nabble.com/Unable-
> > > to-link-to-postgis-postgresql-td5285313.html) I am using Python to
> > > work with GRASS. And honestly, I got lost in outputs of db.*
> > > functions:
> >
> > AFAIK, you should not need to go through all the db.* functions to
> > import your data. Not much time to look any further into this, but check
> > this thread:
> > https://lists.osgeo.org/pipermail/grass-dev/2017-May/085032.html/
> >
> > In brief, you should be able to import your data with a simple v.in.ogr
> > call, without any db.connect/db.login magic.
> >
> > Moritz
> >
> > >
> > > #set database and login
> > > gscript.run_command('db.connect',
> > > database="host=172.21.3.20,dbname=mydb", driver="pg",  verbose = True)
> > > gscript.run_command('db.login', user="dbusername", password="passwd",
> > > overwrite = True)
> > >
> > > #verifying connection
> > > gscript.run_command('db.connect', flags='p')
> > > output:
> > > driver: pg
> > > database: host=172.21.3.20,dbname=mydb
> > > schema:
> > > group:
> > > #so everything looks fine so far
> > >
> > > #here comes the trouble - simple list tables in db
> > > gscript.run_command('db.tables', flags='p', verbose = True)
> > > output:
> > > DBMI-PostgreSQL driver error:
> > > Connection failed.
> > > could not connect to server: No such file or directory
> > >     Is the server running locally and accepting
> > >     connections on Unix domain socket
> > > "/var/run/postgresql/.s.PGSQL.5432"?
> > >
> > > DBMI-PostgreSQL driver error:
> > > Connection failed.
> > > could not connect to server: No such file or directory
> > >     Is the server running locally and accepting
> > >     connections on Unix domain socket
> > > "/var/run/postgresql/.s.PGSQL.5432"?
> > >
> > > ERROR: Unable to open database <host=172.21.3.20,dbname=mydb>
> > >
> > > #but for example:
> > > gscript.run_command('v.external',
> > >                     input="PG:dbname=mydb host=172.21.3.20",
> > >                     flags='l', overwrite =  True)
> > > output:
> > > --actuall list of all tables in mydb - so i CAN connect to the server!
> > >
> > > #same for mapping external link - following will create external link
> > > gscript.run_command('v.external',
> > >                     input="PG:dbname=mydb host=172.21.3.20
> > > user=dbusername password=password",
> > >                     layer="myschema.mytable", output='outpoints,
> > > overwrite = True)
> > > output:
> > > WARNING: No key column detected.
> > > WARNING: Feature table <outpoints> has no primary key defined. Unable
> > > to define DB links.
> > > WARNING: Feature table <outpoints> has no primary key defined
> > > WARNING: Random read is not supported for this layer. Unable to build
> > >          topology.
> > > v.external complete. Link to vector map <outpoints> created.
> > >
> > > #weird, because i have primary key defined in the table, following is
> > > printing description of that external link
> > > gscript.vector_info("outpoints")
> > >
> > > #if i try to load data from database
> > > gscript.run_command('v.in.ogr',
> > >                     input="PG:dbname=mydb host=172.21.3.20",
> > >                     layer='myschema.mytable',geometry="mygeomcolumn",
> > > output = "outpoints2", overwrite =  True, type="point")
> > > output:
> > > Check if OGR layer <myschema.mytable> contains polygons...
> > >  100%�����
> > > WARNING: Vector map <outpoints2> already exists and will be
> > > overwritten DBMI-PostgreSQL driver error:
> > > Connection failed.
> > > could not connect to server: No such file or directory
> > >     Is the server running locally and accepting
> > >     connections on Unix domain socket
> > > "/var/run/postgresql/.s.PGSQL.5432"?
> > >
> > > DBMI-PostgreSQL driver error:
> > > Connection failed.
> > > could not connect to server: No such file or directory
> > >     Is the server running locally and accepting
> > >     connections on Unix domain socket
> > > "/var/run/postgresql/.s.PGSQL.5432"?
> > >
> > > WARNING: Unable to open database <host=172.21.3.20,dbname=macfishdb>
> > > by driver <pg>
> > > WARNING: Unable open database <host=172.21.3.20,dbname=macfishdb> by
> > > driver <pg>
> > > WARNING: Unable to find table <outpoints2> linked to vector map
> > > <lp_grass> Creating attribute table for layer
> > > <at_macfish.loggerpos>... DBMI-PostgreSQL driver error:
> > > Connection failed.
> > > could not connect to server: No such file or directory
> > >     Is the server running locally and accepting
> > >     connections on Unix domain socket
> > > "/var/run/postgresql/.s.PGSQL.5432"?
> > >
> > > DBMI-PostgreSQL driver error:
> > > Connection failed.
> > > could not connect to server: No such file or directory
> > >     Is the server running locally and accepting
> > >     connections on Unix domain socket
> > > "/var/run/postgresql/.s.PGSQL.5432"?
> > >
> > > WARNING: Unable to open database <host=172.21.3.20,dbname=mydb> by
> > >          driver <pg>
> > > ERROR: Unable to open database <host=172.21.3.20,dbname=mydb> by
> > >        driver <pg>
> > >
> > > My version of grass:
> > > GRASS version:
> > > 7.4.0
> > > GRASS SVN revision:
> > > exported
> > > Build date:
> > > 2018-01-26
> > > Build platform:
> > > x86_64-pc-linux-gnu
> > > GDAL:
> > > 2.2.2
> > > PROJ.4:
> > > 4.9.2
> > > GEOS:
> > > 3.5.1
> > > SQLite:
> > > 3.11.0
> > > Python:
> > > 2.7.12
> > > wxPython:
> > > 3.0.2.0
> > > Platform: Linux-4.4.0-112-generic-x86_64-with-Ubuntu-16.04-xenial
> > >
> > > Version of python:
> > >
> > > Python 2.7.12 64bits
> > >
> > > Content of my .grass7/dblogin:
> > > pg|host=172.21.3.20, dbname=mydb|dbusername|passwd||
> > >
sqlite|$GISDBASE/$LOCATION_NAME/$MAPSET/sqlite/sqlite.db|dbusername|passwd||
> > > pg|macfishdb|dbusername|passwd||
> > > pg|host=172.21.3.20,dbname=mydb|dbusername|passwd||
> > >
> > > Thank you for any comment
> > > Dead Vil
> > >
> > >
> >
> >
> > _______________________________________________
> > grass-user mailing list
> > grass-user at lists.osgeo.org
> > https://lists.osgeo.org/mailman/listinfo/grass-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20180215/0ad86f29/attachment.html>


More information about the grass-user mailing list