16.2. Modelo de Objeto SImple ILSI

¿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).

Para obtener más información, eche un vistazo a ʻOGC Objeto Simple para SQL <https://www.opengeospatial.org/standards/sfs>`_ estándar.

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 the_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(the_geom) = 'ST_Point'::text
          OR the_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. Try Yourself hard

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.

Comprueba tus resultados

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','the_geom',2,4326,'POINT');

Porque? geometry_columns Algunas aplicaciones lo utilizan para saber qué tablas de la base de datos contienen datos geométricos.

Nota

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

select * from geometry_columns;

Si la columna f_table_name contiene el valor people, entonces esta tabla ya ha sido registrada y no necesita hacer nada más.

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

El valor 4326 se refiere a la proyección que estamos usando; en este caso, WGS 84, al que se hace referencia con el número 4326 (consulte la discusión anterior sobre EPSG).

16.2.6.1. Try Yourself basic

Agregue una entrada geometry_columns apropiada para su nueva capa de ciudades

Comprueba tus resultados

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, the_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.

Este es probablemente un buen momento para abrir QGIS e intentar ver su tabla people. Además, deberíamos intentar editar / agregar / eliminar registros y luego realizar consultas de selección en la base de datos para ver cómo han cambiado los datos.

To load a PostGIS layer in QGIS, use the Layer ► Add PostGIS 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:

Para ver si QGIS ha encontrado la base de datos address y si su nombre de usuario y contraseña son correctos, haga clic en Probar conexión. Si funciona, marque las casillas junto a Guardar nombre de usuario y Guardar contraseña. Luego haga clic en Aceptar para crear esta conexión.

Regresa al diálogo Añadir capas PostGIS, click Conectar y agregue capas a su proyecto como de costumbre.

16.2.7.1. Try Yourself moderate

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

Comprueba tus resultados

16.2.8. In Conclusion

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

16.2.9. What’s Next?

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