Importante

La traducción es un esfuerzo comunitario puede unirse. Esta página está actualmente traducida en |progreso de traducción|.

16.2. Lección: Modelo de objeto espacial simple

¿Cómo podemos almacenar y representar entidades geográficas en una base de datos? En esta lección, cubriremos un enfoque, el Modelo de objetos simples como lo define el OGC.

El objetivo de esta lección: Aprender qué es el modelo SFS y cómo utilizarlo.

16.2.1. Qué es OGC

El Consorcio Geoespacial Abierto (OGC), una organización internacional voluntaria de estándares de consenso, se originó en 1994. En el OGC, más de 370+ organizaciones comerciales, gubernamentales, sin fines de lucro y de investigación en todo el mundo colaboran en un proceso de consenso abierto que fomenta el desarrollo e implementación de estándares para geoespacial contenido y servicios, procesamiento de datos GIS e intercambio de datos. * - Wikipedia *

16.2.2. ¿Qué es el modelo SFS?

El modelo de Objeto Simple para SQL (SFS) es una forma no topológica de almacenar datos geoespaciales en una base de datos y define funciones para acceder, operar y construir estos datos.

../../../_images/ogc_sfs.png

El modelo define datos geoespaciales de los tipos de punto, cadena de líneas y polígono (y agregaciones de ellos a objetos múltiples).

For further information, have a look at the OGC Simple Feature for SQL standard.

16.2.3. Añadir un campo geometría a la tabla

Agreguemos un campo de puntos a nuestra tabla de gente:

alter table people add column geom geometry;

16.2.4. Añadir una restricción basada en el tipo de geometría

Notará que el tipo de campo de geometría no especifica implícitamente qué tipo de geometría para el campo; para eso, necesitamos una restricción:

alter table people
add constraint people_geom_point_chk
    check(st_geometrytype(geom) = 'ST_Point'::text
          OR geom IS NULL);

Esto agrega una restricción a la tabla para que solo acepte una geometría de punto o un valor nulo.

16.2.5. ★★★ Pruébese:

Cree una nueva tabla llamada ciudades y asígnele algunas columnas apropiadas, incluido un campo de geometría para almacenar polígonos (los límites de la ciudad). Asegúrese de que tenga una restricción que obligue a que las geometrías sean polígonos.

16.2.6. Rellenar geometry_columns de tabla

En este punto, también debe agregar una entrada en geometry_columns de la tabla:

insert into geometry_columns values
  ('','public','people','geom',2,4326,'POINT');

Why? geometry_columns is used by certain applications to be aware of which tables in the database contain geometry data.

Nota

Si la declaración «INSERT» anterior provoca un error, primero ejecute esta consulta:

select * from geometry_columns;

If the column f_table_name contains the value people, then this table has already been registered and you don’t need to do anything more.

El valor 2 se refiere al número de dimensiones; en este caso, dos: X e **Y **.

The value 4326 refers to the projection we are using; in this case, WGS 84, which is referred to by the number 4326 (refer to the earlier discussion about the EPSG).

★☆☆ Ponte a prueba:

Add an appropriate geometry_columns entry for your new cities layer

16.2.7. Agregar registro de geometría a la tabla usando SQL

Ahora que nuestras tablas están geo-habilitadas, podemos almacenar geometrías en ellas:

insert into people (name,house_no, street_id, phone_no, geom)
        values ('Fault Towers',
                 34,
                 3,
                 '072 812 31 28',
                 'SRID=4326;POINT(33 -33)');

Nota

En la nueva entrada anterior, deberá especificar qué proyección (SRID) desea usar. Esto se debe a que ingresó la geometría del nuevo punto utilizando una cadena de texto simple, que no agrega automáticamente la información de proyección correcta. Obviamente, el nuevo punto debe usar el mismo SRID que el conjunto de datos al que se está agregando, por lo que debe especificarlo.

Si en este punto estuviera utilizando una interfaz gráfica, por ejemplo, especificar la proyección para cada punto sería automático. En otras palabras, normalmente no tendrá que preocuparse por utilizar la proyección correcta para cada punto que desee agregar si ya lo ha especificado para ese conjunto de datos, como hicimos anteriormente.

Now is probably a good time to open QGIS and try to view your people table. Also, we should try editing / adding / deleting records and then performing select queries in the database to see how the data has changed.

To load a PostgreSQL layer in QGIS, use the Layer ► Add PostgreSQL Layers menu option or toolbar button:

addPostgisLayer

Esto abrirá el diálogo:

../../../_images/add_postgis_layer_dialog.png

Click en el botón Nuevo para abrir este diálogo:

../../../_images/new_postgis_connection.png

Luego defina una nueva conexión, por ejemplo:

Name: myPG
Service:
Host: localhost
Port: 5432
Database: address
User:
Password:

To see whether QGIS has found the address database and that your username and password are correct, click Test Connect. If it works, check the boxes next to Save Username and Save Password. Then click OK to create this connection.

Back in the Add PostgreSQL Layers dialog, click Connect and add layers to your project as usual.

★★☆ Ponte a prueba:

Formule una consulta que muestre el nombre de una persona, el nombre de la calle y la posición (de la columna geom) como texto sin formato.

16.2.8. En conclusión

Ha visto cómo agregar objetos espaciales a su base de datos y visualizarlos en el software GIS.

16.2.9. ¿Y ahora qué?

A continuación verá cómo importar data a, y exportar data desde, su base de datos.