---
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

### 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:

## 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)