[GRASS-user] load vector map from PostGIS

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:

#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 has no primary key defined. Unable to
define DB links.
WARNING: Feature table 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 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
WARNING: Unable open database <host=172.21.3.20,dbname=macfishdb> by driver

WARNING: Unable to find table 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
ERROR: Unable to open database <host=172.21.3.20,dbname=mydb> by
driver

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

Le Tue, 13 Feb 2018 14:09:31 +0100 (CET),
"Vilem Ded" <Ded.V@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

On Tue, Feb 13, 2018 at 2:58 PM, Moritz Lennert <mlennert@club.worldonline.be> wrote:

Le Tue, 13 Feb 2018 14:09:31 +0100 (CET),
“Vilem Ded” <Ded.V@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.

Some more explanations:

db.connect + db.login determine where attribute tables of GRASS vectors are stored. These settings have nothing to do with OGR import. If you want to change the default database where GRASS vector attribute tables are stored, make sure you have write access to this database.

Regarding vector import, if in doubt, check with ogrinfo if the datasource and layer can be accessed by OGR. If yes, v.in.ogr should succeed.

Markus M

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 has no primary key defined. Unable
to define DB links.
WARNING: Feature table 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 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 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
WARNING: Unable open database <host=172.21.3.20,dbname=macfishdb> by
driver
WARNING: Unable to find table 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
ERROR: Unable to open database <host=172.21.3.20,dbname=mydb> by
driver

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@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user

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?

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
WARNING: Unable open database <dbname=mydb schema=myschema> by
driver
WARNING: Unable to find table linked to vector map

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
ERROR: Unable to open database <dbname=mydb schema=myschema> by
driver

---------- Původní e-mail ----------

Od: Moritz Lennert mlennert@club.worldonline.be

Komu: Vilem Ded Ded.V@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@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 has no primary key defined. Unable
to define DB links.
WARNING: Feature table 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 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 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
WARNING: Unable open database <host=172.21.3.20,dbname=macfishdb> by
driver
WARNING: Unable to find table 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
ERROR: Unable to open database <host=172.21.3.20,dbname=mydb> by
driver

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

On Wed, Feb 14, 2018 at 4:44 PM, Vilem Ded <Ded.V@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
WARNING: Unable open database <dbname=mydb schema=myschema> by
driver
WARNING: Unable to find table linked to vector map

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
ERROR: Unable to open database <dbname=mydb schema=myschema> by
driver

---------- Původní e-mail ----------
Od: Moritz Lennert <mlennert@club.worldonline.be>
Komu: Vilem Ded <Ded.V@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@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 has no primary key defined. Unable
to define DB links.
WARNING: Feature table 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 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 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
WARNING: Unable open database <host=172.21.3.20,dbname=macfishdb> by
driver
WARNING: Unable to find table 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
ERROR: Unable to open database <host=172.21.3.20,dbname=mydb> by
driver

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@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user

[ please keep it in the list ]

On Thu, Feb 15, 2018 at 8:52 AM, Vilem Ded <Ded.V@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@gmail.com>
Komu: Vilem Ded <Ded.V@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@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
WARNING: Unable open database <dbname=mydb schema=myschema> by
driver
WARNING: Unable to find table linked to vector map

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
ERROR: Unable to open database <dbname=mydb schema=myschema> by
driver

---------- Původní e-mail ----------
Od: Moritz Lennert <mlennert@club.worldonline.be>
Komu: Vilem Ded <Ded.V@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@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 has no primary key defined. Unable
to define DB links.
WARNING: Feature table 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 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 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
WARNING: Unable open database <host=172.21.3.20,dbname=macfishdb> by
driver
WARNING: Unable to find table 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
ERROR: Unable to open database <host=172.21.3.20,dbname=mydb> by
driver

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@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user