--- title: Bases de datos espacial --- # Bases de datos espacial predial ## Herramientas de modelado * https://vertabelo.com/ * [Spatialite-gui](http://www.gaia-gis.it/gaia-sins/windows-bin-amd64-prev/spatialite_gui-NG-5.0.0-win-amd64.7z) * [JTS](https://github.com/locationtech/jts) --- ### Vertabelo * Crear el MER * Pasar del modelo conceptual al mdeolo logico/fisico ### MER predial ![](https://i.imgur.com/8NDSYab.png) ### Spatialite-gui y QGIS para SGBD Para agregar la columna de geometria se realiza con lo siguiente: ```sql SELECT AddGeometryColumn('barrio', 'geom', 9377, 'POLYGON', 'XY'); ``` * Primer parámetro: nombre de la tabla a convertir en espacial * Segundo parámetro: nombre de la geometría * Tercer parámetro: SRID del sistema de referencia de coordenadas * Cuarto parámetro: tipo de geometría de acuerdo a [spatialite](http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/new-geom.html) * Quinto paramétro: dimensión de la geometría de acuerdo a [spatialite](http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/new-geom.html) Para agregar índice espacial: ```sql SELECT CreateSpatialIndex('barrio', 'geom'); ``` #### Para Geopackage Más información en http://opengeospatial.github.io/e-learning/geopackage/text/basic-index.html Agregar a cada CREATE TABLE con geometría lo siguiente: ```sql CREATE TABLE barrio ( ... geometry MULTIPOLYGON NOT NULL, ... ); ``` Donde MULTYPOLIGON puede ser: POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION. Por último agregar los metadatos: ```sql insert into gpkg_contents values ( 'barrio', 'features','barrio','geometry', '2022-01-27T15:00:00.000Z', NULL,NULL,NULL,NULL,9377 ); ``` ```sql insert into gpkg_geometry_columns values( 'barrio', 'geometry', 'MULTIPOLYGON', 9377, 0, 0 ) ``` Los últimos parámetros indican si tienen información de Z y M. Para las tablas de atributos: ```sql insert into gpkg_contents values ( 'propietario', 'attributes','propietario', NULL, '2022-01-27T15:00:00.000Z', NULL,NULL,NULL,NULL,NULL );̀ ``` ## Formularios Para la configuracion de un enlace Web y su despliegue: ![](https://i.imgur.com/03O73bi.png) ## Consultas SQL Ejemplo de join entre capa y tabla de atributos por campo común de FORMULARIO. ```sql SELECT c.NOMBRE, c.TIPO_CAUSA, count() AS conteo FROM accidente_cr30cll45 AS a JOIN causa AS c ON a.FORMULARIO = c.FORMULARIO WHERE a.GRAVEDAD LIKE '%muerto%' OR a.GRAVEDAD LIKE '%herido%' GROUP BY c.NOMBRE, c.TIPO_CAUSA ORDER BY conteo DESC ``` ## Referencias * [Cheatsheet 1](https://pbs.twimg.com/media/E_uirTGWEAIU2Gr?format=jpg&name=large) * [SQL Joins](https://pbs.twimg.com/media/EXF28CgWkAABpiU?format=jpg&name=900x900)