gvSIG + Python = accesing MySQL

Facebooktwitterredditpinterestlinkedinmail

La versión 2.3 de gvSIG Desktop no permite añadir capas a partir de una base de datos MySQL. Esto se puede resolver de forma sencilla usando la estupenda capacidad de scripting Python de gvSIG; basta con incluir el driver JDBC apropiado en el directorio de gvSIG, conectarse a la base de datos, y hacer la consulta deseada. A partir de ahí, pueden crearse las capas necesarias y añadirlas a nuestro proyecto, como se muestra en esta otra entrada del blog. Al final de la entrada (y también en mi repositorio GitHub) puede verse el código mínimo para acceder a la base de datos y hacer una consulta.

gvSIG Desktop 2.3 does not allow to add layers from a MySQL database. This can be easily solved using the great Python scripting utilities provided by gvSIG; you just have to include the proper JDBC driver in your gvSIG folder, then connect to the database and do your query. Those data can be stored in a new layer and then added into our proyect, as it is shown in this previous post. At the end of this post (and also in my GitHub repository) you can see the minimun code required to accesing a database and retrieving information.

 

import sys
import os
from gvsig import *
from gvsig import geom
from gvsig.geom import *
from java.util import Properties

sys.path.append(“/pathtomygvSIGfolder/mysql-connector-java-5.1.40-bin.jar”);
import org.gjt.mm.mysql.Driver as Driver

def main():

# Connect to the database
props = Properties()
props.put(“user”,”myuser”)
props.put(“password”,”mypasswd”)
db = Driver().connect(“jdbc:mysql://localhost/mydb”, props)
# Get geometry info from database and insert it into the new layer
c = db.createStatement()
rs = c.executeQuery(“select * from mytable where somecolumn=’somevalue'”)
while rs.next():
id = rs.getString(“somecolumn”)
rs.close()
c.close()
db.close()

 

Scripting in gvSIG 2.1 + PostGIS

Facebooktwitterredditpinterestlinkedinmail


[In English]
gvSIG 2.0 y posteriores permiten crear una capa directamente desde una tabla de una base de datos PostgreSQL/PostGIS, incluso añadiéndoles una restricción SQL, es decir, con una claúsula WHERE sobre la tabla, de manera que uses únicamente las columnas que te interesen.

Sin embargo, yo necesitaba crear una capa a partir de una tabla incluyendo, en la restricción SQL, un FROM que me permitiera combinar diferentes tablas de mi BD. Para ello he utilizado la opción de scripting con Jython que ofrece gvSIG (en mi caso, en la versión 2.1).

[NOTA: gvSIG 1.12 también tiene un módulo de scripting, pero a) es menos potente, y b) no ha sido capaz de cargar el script que he escrito, la consola de Jython me indica que “no module named gvsig”]

El primer paso para poder trabajar con los scripts Jython es instalar el módulo de scripting en gvSIG, si no está instalado por defecto. A partir de ahí, ya se pueden crear y lanzar los scripts Jython que queramos desarrollar. No es el objetivo de esta entrada explicar con detalle la instalación y el manejo del entorno de scripting; para ello, consultar la documentación de scripting de gvSIG,  las entradas de scripting del blog de gvSIG, o esta entrada del blog másquesig. Como veréis, crear nuestros propios scripts abre muchísimas posibilidades a la hora de trabajar con gvSIG.

Para acceder a BDs en Jython se puede usar el paquete zxJDBC, que es un estándar desde la versión 2.1 de Jython; aquí se puede encontrar mucha información sobre el mismo, pero resumiendo:

  • Es útil para scripts aislados y sin necesidad de portabilidad.
  • Comunica dos estándares: JDBC, el estándar de acceso a bases de datos de Java, y DBI, el estándar de acceso a bases de datos de Python.

Sin embargo, no he conseguido hacer que funcionara. Posiblemente el problema es el que se comenta y soluciona aquí, relativo al classpath; sin embargo, sospecho que como la herramienta de scripting está “dentro” de gvSIG, la solución que proponen no funciona. Tampoco funciona esta variante que he encontrado.

Así que la solución ha sido trabajar directamente en Java. Lo primero ha sido descargar el driver JDBC para PostgreSQL de aquí; he escogido el JDBC 4 para PostgreSQL 9.1 y me ha ido bien.

Para lograr acceder a la BD y ejecutar sentencias SQL me he basado en la información encontrada en este enlace, este enlace, y este otro. El driver lo guardo en el directorio donde he instalado el gvSIG (no en el directorio que crea gvSIG), y en el script primero accedo a él, y luego lo cargo. Una vez tengo acceso a la BD, puedo ejecutar la sentencia SQL que desee, con lo que la potencia de las búsquedas es mucho mayor. La única condición es que esa búsqueda devuelva las coordenadas X e Y de los puntos que queremos insertar en la capa.
Este es el código básico que resuelve el acceso a la BD, la ejecución de la sentencia, y la creación de la nueva capa con los datos devueltos por la misma.

 


[En español]

gvSIG 2.0 and later allow to create a layer from a table in a PostgreSQL/PostGIS database, even adding a SQL constraint, that is, a WHERE clause on the table, so you can recover only the columns you need.

However, I wanted to create a layer from a table including, in the SQL constraint, also a FROM clause which allowed me to combine different tables in my DB. So I have used the scripting possibilities that, via Jython, offers gvSIG (in my case, I am working with gvSIG 2.1)

[NOTE: gvSIG 1.12 has a scripting module too, but a) it is not as powerful, and b) it could not load the script I have written, and the Jython console shows the message “no module named gvsig”]

The first step in order to write Jython scripts in gvSIG is to install the scripting module (if it is not installed by default). From there on, you can create and launch your own Jython scripts. It is out of the scope of this post to explain in detail the installation process and how to work with the scripting module; the interested reader may consult the gvSIG scripting documentation,  the gvSIG blog’s posts about scripting, or this post on blog másquesig. As you can see, creating our own scripts offers a lot of possibilities when we work with gvSIG.

For accessing databases using Jython you can use the zxJDBC package, which is a standard since version 2.1 of Jython; you can find here much more information about it, though, to cut a long story short (I love that song by Spandau Ballet 🙂 !!):

  • It is useful for scripts that work in an isolated manner and do not have to assure portability.
  • It is a link between two standards: JDBC, the Java standard for accessing databases, and DBI, the Python standard for the same task.

However, I couldn’t make it work. I would say that the problem is the one commented and solved here, due to classpath issues; however, I guess that, since the scripting module is “inside” gvSIG, the proposed solution does not work, neither does this variation I have found.

So I have used Java. First, you have to download the JDBC driver for PostgreSQL from here; I have chosen JDBC 4 for PostgreSQL 9.1 and it works fine.

In order to connect to the DB and then execute SQL sentences, I have used the information I found in this link, this link, and this other link.  I stored the driver in the directory where I have installed gvSIG (not in the directory created by gvSIG), then the script appends that path, and finally the driver is uploaded. Any SQL sentence can be executed, so the searches in the BD are much more flexible. The only restriction that must be taken into account is that the search returns the X and Y coordinates of the points we want to insert into the new layer. This is the basic code that access to the DB, executes the query, and creates a new layer with the returned data.


import sys
import os
from gvsig import *
from geom import *
from java.util import Properties

sys.path.append(“/home/anita/gvSIG-desktop/gvSIG-desktop-2.1.0/postgresql-9.1-903.jdbc4.jar”);
import org.postgresql.Driver as Driver

def main():
# Create the new layer
projection = currentView().getProjection()
newLayerSchema = createSchema()
newLayerSchema.append(“ID”,”INTEGER”)
newLayerSchema.append(“GEOMETRY”,”GEOMETRY”)
newLayerName = “/home/anita/YOUR_PATH
newLayer = createShape(newLayerSchema,newLayerName,CRS=projection,geometryType=POINT)

# Connect to the database
props = Properties()
props.put(“user”,YOUR_USER)
props.put(“password”,YOUR_PASSWORD)
db = Driver().connect(“jdbc:postgresql://localhost/YOUR_DB“, props)

# Get geometry info from database and insert it into the new layer
c = db.createStatement()
rs = c.executeQuery(“select table.id, ST_X(table.coordinatesxy),ST_Y(table.coordenatesxy) from YOUR_TABLES where YOUR_WHERE_CLAUSE“)
data = {}
while rs.next():
id = rs.getInt(1)
newX = rs.getObject(2)
newY = rs.getObject(3)
print(id,newX,newY)
newGeom = createPoint(newX,newY)
dbValues = {“ID”:id,”GEOMETRY”:newGeom}
newLayer.append(dbValues)
rs.close()
c.close()
db.close()

currentView().addLayer(newLayer)
newLayer.commit()

PostgreSQL/PostGIS + gvSIG + Windows XP

Facebooktwitterredditpinterestlinkedinmail


[In English]
Finalmente, he instalado PostgreSQL/PostGIS y gvSIG en una máquina virtual Windows XP (creo que ya me quedan pocas combinaciones por probar :P). Estos son los puntos principales a tener en cuenta:

  • Primero he instalado gvSIG 2.1.0.2252 RC2. Los ráster los carga bien; en algunos me ha dado problema con la carga con teselado, pero se cargan bien sin esta opción.
  • La versión de PostgreSQL que he usado es la 9.3, y la versión de PostGIS es la 2.1. He instalado lo mínimo posible; la instalación de Apache y phpPgAdmin ha dado error (olvidé apuntarlo :(); he permitido que se actualicen las variables de entorno GDAL_DATA,POSTGIS_GDAL_ENABLED_DRIVERS, y POSTGIS_ENABLE_OUTDB_RASTERS.
  • En esta versión, PostGIS se añade como una extensión una vez creada nuestra base de datos.
  • Una cosa curiosa ha sido que, al cargar datos en la base de datos desde un fichero .csv, saltaba un error debido a que no tenía permisos de lectura en el fichero. Buscando un poco, he encontrado este foro en el que se explicaba la solución (¡gracias!): copiar el fichero .csv en un directorio visible como “Documentos Compartidos”
  • Para poder usar las opciones de scripting de gvSIG y conectarme con jython a la base de datos, he guardado el .jar con el driver de PostgreSQL (postgresql-9.1-903.jdbc4.jar) en el directorio gvSIG creado en la instalación, y ha ido todo estupendamente 🙂


[En español]

Finally, I have installed PostgreSQL/PostGIS and gvSIG on a Windows XP virtual machine (I would say that there are not much more possibilites I could try :P). These are the main issues to take into account:

  • Firstly, I have installed gvSIG 2.1.0.2252 RC2. Raster files are, in general, properly loaded; some files have shown errors if loaded with tiling options, but they load ok if tiling is not used.
  • Then I have installed PostgreSQL 9.3 and PostGIS 2.1. My installation was minimal; anyway, Apache and phpPgAdmin installation failed (I did not write down which were the errors :(); along the installation process, I updated enviroment variables GDAL_DATA, POSTGIS_GDAL_ENABLED_DRIVERS, and POSTGIS_ENABLE_OUTDB_RASTERS.
  • In this version, PostGIS is added as an extension, once we have created our database.
  • A funny issue was that, when I tried to load my data into the database from a .csv file, an error arose because I had not reading permissions on that file. Doing a little research, I found this forum which explained how to fix it (zanks!): just copy the .csv in a visible folder like “Shared Documents”.
  • In order to use the scripting utilities of gvSIG, and connecting from a jython script to the database, I have placed the .jar file with the PostgreSQL driver (postgresql-9.1-903.jdbc4.jar) in the gvSIG folder (the one created when gvSIG is installed), and everything went fine 🙂

PostgreSQL/PostGIS + Debian Wheezy

Facebooktwitterredditpinterestlinkedinmail


[In English]
He tenido que instalar PostgreSQL/PostGIS, esta vez en una máquina con Debian Wheezy. Estas son las diferencias respecto a la instalación en Xubuntu 14.04:

  • La versión de  PostgreSQL que hay disponible en el Synaptic para este Debian es la 9.1. Estos son los paquetes instalados, comparados con los que instalé en la versión 9.3:
    1. postgresql-server-dev-9.1
    2. postgresql-doc-9.1
    3. postgresql-client-9.1
    4. postgresql-client-common
    5. postgresql-9.1-postgis
    6. postgresql-9.1-postgis-2.1-scripts: no está en el repositorio.
    7. libpq-dv: no está en el repositorio.
    8. postgresql-common: ya estaba instalada.
    9. libpq5: ya estaba instalada.
    10. postgresql-doc: no está en el repositorio, pero está instalada postgresql-doc-9.1
    11. postgresql-client: no está en el repositorio, pero está instalada postgresql-client-9.1
    12. libreoffice-base-drivers: no está en el repositorio, pero están instaladas libreoffice-base-core y libreoffice-base
    13. postgresql-contrib-9.1
    14. postgis: ya estaba instalada.
    15. postgresql-9.1: no está en el repositorio.
    16. postgresql
    17. liblwgeom: no está en el repositorio.
  • La versión de PostGIS en el repositorio es la 1.5.3-2. Esto implica que no se puede añadir directamente como extensión, sino que hay que crear una plantilla o template (que es una base de datos que alberga las funciones PostGIS). En este enlace y en este otro se puede encontrar ayuda muy útil; los pasos que yo he seguido para crear la template a partir de ellos son los siguientes:
    1.  Crear la plantilla
      1. sudo -u postgres createdb template_postgis
      2. sudo -u postgres psql -d template_postgis -c “UPDATE pg_database SET datistemplate=true WHERE datname=’template_postgis'”
      3. sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
      4. sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql
    2. Crear la base de datos con dicha plantilla
      1. sudo -u postgres createdb -T template_postgis mibasedatos
        (pgAdmin debe estar cerrado, si no, da error indicando que otro usuario está utilizando template_postgis)


[En español]

I had to install PostgreSQL/PostGIS, though this time in a Debian Wheezy computer. These are the differences regarding to the installation in Xubuntu 14.04:

  • In  Debian Wheezy, Synaptic offers PostgreSQL 9.1. These are the packages I have installed, compared to those I installed in version 9.3:
    1. postgresql-server-dev-9.1
    2. postgresql-doc-9.1
    3. postgresql-client-9.1
    4. postgresql-client-common
    5. postgresql-9.1-postgis
    6. postgresql-9.1-postgis-2.1-scripts: not in Synaptic.
    7. libpq-dv:  not in Synaptic.
    8. postgresql-common: it is installed.
    9. libpq5: it is installed.
    10. postgresql-doc: not in Synaptic, but postgresql-doc-9.1
      is installed.
    11. postgresql-client: not in Synaptic, but postgresql-client-9.1
      is installed.
    12. libreoffice-base-drivers: not in Synaptic, but libreoffice-base-core and libreoffice-base are installed.
    13. postgresql-contrib-9.1
    14. postgis: it is installed.
    15. postgresql-9.1: not in Synaptic.
    16. postgresql
    17. liblwgeom: not in Synaptic.
  • The PostGIS version in Synaptic is 1.5.3-2. This means that it cannot be added directly as an extension, but as a template (i.e., a database that stores PostGIS functions).  In this this link and in this other you can find very useful information about how to create a template; using that information, these are the steps I have followed for creating my template:
    1.  Template creation
      1. sudo -u postgres createdb template_postgis
      2. sudo -u postgres psql -d template_postgis -c “UPDATE pg_database SET datistemplate=true WHERE datname=’template_postgis'”
      3. sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
      4. sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql
    2. Database creation using that template
      1. sudo -u postgres createdb -T template_postgis mydatabase
        (pgAdmin must be closed; if not, an error arises noting that other user is using  template_postgis)

PostgreSQL/PostGIS + WWW SQL Designer + gvSIG (III)

Facebooktwitterredditpinterestlinkedinmail


[In English]
Para terminar con esta serie de posts, esta es mi experiencia con WWW SQL Designer:

  • WWW SQL Designer permite importar una BD de un servidor en el entorno de diseño, pero no permite exportar un diseño directamente sobre una BD en un servidor. Para importar tu diseño en una BD, la opción más sencilla es Save/Load -> Generate SQL (seleccionar el SQL apropiado para la BD que uses) -> Copiar el código (recomendable guardarlo en fichero) -> Abrir la BD y ejecutar el SQL.
  • Estoy usando lampp, así que eso influye en dónde están instalados php y WWW SQL Designer.
  • Instrucciones de instalación:

https://code.google.com/p/wwwsqldesigner/wiki/Installation

  • Modificaciones a las instrucciones de instalación:

create user “sqlExample” with password ‘mypasswd’;

grant all privileges on database “sqlDesignerExample” TO “sqlExample” with grant option;

  • Modificaciones en fichero index.php en /opt/lampp/htdocs/wwwsqldesigner-2.7/backend/php-postgresql/index.php

// Parameters for the application database

function setup_saveloadlist() {

Define(“HOST_ADDR”, “localhost”);            // if the database cluster is on the same server as this application use ‘localhost’ otherwise the appropriate address (192.168.0.2 for example).

Define(“PORT_NO”, “5432”);                    // default port is 5432. If you have or had more than one db cluster at the same time, consider ports 5433,… etc.

Define(“DATABASE_NAME”, “sqlDesignerExample”);     // leave as is

Define(“USER_NAME”, “sqlExample”);        // leave as is

Define(“PASSWORD”, “mypasswd”);                    // leave as is

Define(“TABLE”, “wwwsqldesigner”);            // leave as is

}

// Parameters for the database you want to import in the application

function setup_import() {

Define(“HOST_ADDR”, “localhost”);    // if the database cluster is on the same server as this application use ‘localhost’ otherwise the appropriate address (192.168.0.2 for example).

Define(“PORT_NO”, “5432”);            // default port is 5432. If you have or had more than one db cluster at the same time, consider ports 5433,… etc.

Define(“DATABASE_NAME”, “mybd”);    // the database you want to import

Define(“USER_NAME”, “postgres”);    // role having rights to read the database

Define(“PASSWORD”, “mypasswd”);        // password for role

  • Para activar php

Cambiar php.ini: sudo leafpad php.ini en /opt/lampp/etc (leafpad es el editor que yo uso, puede emplearse cualquier otro)

La extensión que hay que descomentar es extension=”pgsql.so” (esa extensión está en /opt/lampp/lib/php/extensions/no-debug-non-zts-20121212 y /usr/lib/php5/20121212)


[En español]
Let’s finisht this set of posts with WWW SQL Designer:

  • WWW SQL Designer allows to import a DB from a server into the design environment, but the other way round (exporting the design directly into the DB server) is not possible.  For importing your design into a DB, the easiest option is Save/Load -> Generate SQL (you should use the proper SQL for your DB) -> Copy that code (it is a good idea to keep it in a file) -> Open your DB and run that code.
  • I am using lampp, so the installation path of php and WWW SQL Designer is related to lampp.
  • Installation instructions:

https://code.google.com/p/wwwsqldesigner/wiki/Installation

  • Some modifications to these instructions:

create user “sqlExample” with password ‘mypasswd’;

grant all privileges on database “sqlDesignerExample” TO “sqlExample” with grant option;

  • Some modifications on file index.php at /opt/lampp/htdocs/wwwsqldesigner-2.7/backend/php-postgresql/index.php

// Parameters for the application database

function setup_saveloadlist() {

Define(“HOST_ADDR”, “localhost”);            // if the database cluster is on the same server as this application use ‘localhost’ otherwise the appropriate address (192.168.0.2 for example).

Define(“PORT_NO”, “5432”);                    // default port is 5432. If you have or had more than one db cluster at the same time, consider ports 5433,… etc.

Define(“DATABASE_NAME”, “sqlDesignerExample”);     // leave as is

Define(“USER_NAME”, “sqlExample”);        // leave as is

Define(“PASSWORD”, “mypasswd”);                    // leave as is

Define(“TABLE”, “wwwsqldesigner”);            // leave as is

}

// Parameters for the database you want to import in the application

function setup_import() {

Define(“HOST_ADDR”, “localhost”);    // if the database cluster is on the same server as this application use ‘localhost’ otherwise the appropriate address (192.168.0.2 for example).

Define(“PORT_NO”, “5432”);            // default port is 5432. If you have or had more than one db cluster at the same time, consider ports 5433,… etc.

Define(“DATABASE_NAME”, “mybd”);    // the database you want to import

Define(“USER_NAME”, “postgres”);    // role having rights to read the database

Define(“PASSWORD”, “mypasswd”);        // password for role

  • php activation:

Change php.ini: sudo leafpad php.ini en /opt/lampp/etc (leafpad is my text editor, of course you can use any other)

The extension to be uncommented is  extension=”pgsql.so” (it can be found at /opt/lampp/lib/php/extensions/no-debug-non-zts-20121212 and /usr/lib/php5/20121212)

PostgreSQL/PostGIS + WWW SQL Designer + gvSIG (II)

Facebooktwitterredditpinterestlinkedinmail


[In English]
Respecto a gvSIG 1.12.0, hay que tener en cuenta que:

  • Instalar gvSIG sin sudo y con jre propia (la que tengo por defecto es openjdk, y no queda claro que no de problemas)
  • Para lograr que abra los rasters hay que instalar lib64ncurses5-dev:i386 y lib64ncurses5:i386 desde Synaptics (mi Xubuntu es 64 bits)
    (averiguado gracias a: http://osgeo-org.1560.x6.nabble.com/Solucion-a-Formato-no-valido-al-cargar-un-archivo-raster-Debian-Wheezy-64bit-gvSIG-1-1-y-gvSIG-2-1-td5130483.html)
  • Otros enlaces que intentan resolver el problema de apertura de los rasters, aunque a mí no me han servido:
    Solution for gvSIG 1.12 problems in Windows 64bits operative systems
    http://comments.gmane.org/gmane.comp.gis.gvsig.user.es/22669
  • Ni gvSIG 2.0 ni anteriores soportan PostGIS 2.0; gvSIG 2.1 sí, y también QGIS, OpenJump y uDig. ¿Cómo solucionarlo para gvSIG 1.12.0?
    http://mappinggis.com/2012/11/como-conectar-gvsig-con-postgis-2-0/
  • Es recomendable, para evitar problemas en la conexión de gvSIG 1.12.0  a PostGIS, que las tablas y las columnas estén todas en minúsculas: a veces, si el campo mezcla mayúsculas y minúsculas, puede no reconocerse en gvSIG.


[En español]
Regarding gvSIG 1.12.0, you should take into account the following issues:

  • gvSIG should be installed without sudo and with a jre of its own (my default jre is openjdk, and some problems could arise).
  • For opening raster files, you should install lib64ncurses5-dev:i386 and lib64ncurses5:i386 from Synaptics (I use a 64 bits Xubuntu version)
    (I learned that thanks to [in Spanish] a: http://osgeo-org.1560.x6.nabble.com/Solucion-a-Formato-no-valido-al-cargar-un-archivo-raster-Debian-Wheezy-64bit-gvSIG-1-1-y-gvSIG-2-1-td5130483.html)
  • Some other links for solving that raster issue, though they did not work for me [in Spanish]:
    Solution for gvSIG 1.12 problems in Windows 64bits operative systems
    http://comments.gmane.org/gmane.comp.gis.gvsig.user.es/22669
  • Neither gvSIG 2.0 nor previous versions work with  Postgis 2.0; gvSIG 2.1 does, and also también QGIS, OpenJump and uDig.  How solve this question for gvSIG 1.12.0 [in Spanish]?
    http://mappinggis.com/2012/11/como-conectar-gvsig-con-postgis-2-0/
  • In order to avoid problems in the conection between gvSIG 1.12.0  and PostGIS,  tables and columns should be lower case:  in some cases, columns with both lower and upper case may be not recognized in gvSIG.

PostgreSQL/PostGIS + WWW SQL Designer + gvSIG (I)

Facebooktwitterredditpinterestlinkedinmail


[In English]
Estoy trabajando con PostgreSQL/PostGIS como base de datos, WWW SQL Designer para el diseño de la misma, y gvSIG 1.12.0 como GIS, todo ello bajo Xubuntu 14.04 (64 bits). La instalación y el uso de las tres herramientas tiene algunos trucos, que comentaré en varios posts. Hoy empezamos con PostgreSQL/PostGIS:

  •  La instalación de las dos herramientas se hace desde Synaptic
  • No instalo phppagadmin (necesita apache2, y yo voy a usar lamp)
  • Cosas que instalo:
  1. postgresql-server-dev-9.3
  2. postgresql-doc-9.3
  3. postgresql-client-9.3
  4. postgresql-client-common
  5. postgresql-9.3-postgis-2.1
  6. postgresql-9.3-postgis-2.1-scripts
  7. libpq-dv
  8. postgresql-common
  9. libpq5
  10. postgresql-doc
  11. postgresql-client
  12. libreoffice-base-drivers
  13. postgresql-contrib-9.3
  14. postgis
  15. postgresql-9.3
  16. postgresql
  17. liblwgeom-2.1.2
  • Para la configuración, resulta útil este link de ayuda.
  • Configuración básica del servidor. El usuario postgres está creado por defecto, pero bloqueado por seguridad para que no pueda accederse; por eso lo primero es cambiar la clave:
    sudo -u postgres psql postgres
       \password postgres ( e introducir nueva password cuando se pida)
       Ctrl+D
  • Crear la extensión adminpack (igual sólo es necesario para PostgreSQL 9.1, no estoy segura):
    sudo -u postgres psql
       CREATE EXTENSION adminpack;
  • Crear el servidor en pgAdmin (usuario postgres, clave la que se ha cambiado antes)
  • Añadir extensiones, una vez creada la BD:
    · Botón derecho del ratón -> New object -> New extension -> postgis primero, postgis_topology después.
    · Esto añade la tabla spatial_ref_sys; la antigua tabla geometry_columns es ahora una vista.


[En español]
I work with PostgreSQL/PostGIS (DB), WWW SQL Designer for designing the DB, and my GIS is gvSIG 1.12.0; the OS is Xubuntu 14.04 (64 bits). Installing and using these tools can be tricky, so I plan to write several posts about it. Today I will focus on PostgreSQL/PostGIS:

  • I have installed both tools from Synaptic.
  • I do not install phppagadmin (it requires apache2, but I will use lamp)
  • List of elements to install:
  1. postgresql-server-dev-9.3
  2. postgresql-doc-9.3
  3. postgresql-client-9.3
  4. postgresql-client-common
  5. postgresql-9.3-postgis-2.1
  6. postgresql-9.3-postgis-2.1-scripts
  7. libpq-dv
  8. postgresql-common
  9. libpq5
  10. postgresql-doc
  11. postgresql-client
  12. libreoffice-base-drivers
  13. postgresql-contrib-9.3
  14. postgis
  15. postgresql-9.3
  16. postgresql
  17. liblwgeom-2.1.2
    • This link is quite useful for configuration issues.
    • Basic server configuration: user postgres is created by default, but it is blocked for security reasons; therefore, the first thing to do is to change the password:
      sudo -u postgres psql postgres
      \password postgres (type new password when required)
      Ctrl+D
    • Now we create adminpack extension (maybe it should be done only in PostgreSQL 9.1, not sure about that):
      sudo -u postgres psql
      CREATE EXTENSION adminpack;
    • Create the server in pgAdmin (user postgres, password the one we have changed previously)
    • Once we have created the DB, we add extensions:
      · Right-click -> New object -> New extension -> first postgis primero, then postgis_topology.
      · This adds spatial_ref_sys table; the old geometry_columns table is now a view.