CURSO
POSTGRESQL /
POSTGIS
I
I
2013
2013
POSTGRESQL
Informacin en un SIG
Compuesto principalmente por datos Geogrficos y datos tabulares
Se estima que el 80% de los datos corporativos poseen un componente geogrfico
ipos de fuentes
Datos espaciales
Estructuracin
Identificacin mediante Cdigo.
Organizacin mediante capas segn el tipo de informacin y relacin espacial.
Geometra
Relaciones espaciales
Base de datos
Estructuracin
Identificacin mediante cdigos y usos de Indices yo !la"es #rimarias
Relaciones$ consultas o "istas$ %unciones$ etc...
&dministracin
Base de datos espacial
Igual a los dos anteriores
Inde'ado por relacin espacial
%unciones espaciales
Relaciones $ consultas$ "istas$ %unciones... etc.$ aplicadas al entorno espacial
Esquema conceptual
Esquema conceptual
Datos
Espaciales
Diferentes formatos
ase !e
Datos
Espacial
#roductos GI(
)odelo
Espacial
Basado
En las
Especific.
Del
OGC
*area +
,capa+
,capa-
, ...
*area -
,capa+
,capa-
, ...
*area .
/.
Esquema L"ico
Esquema L"ico
#PLIC#CIO$ES
%a&a/'$ET/'''
Ser&icios !e (apa
en )e*
#plicacin o ser&icios
!e (apa
en )e*
Internet / Intranet
(&il
+S,G-
PRODUCTO GIS
Datos
Espaciales
Datos
*a0ulares
&rc1i"os
Geograficos
!ase de datos
ase !e !atos
ase !e !atos
Introduccion
E! concepto de la 0ase de datos nace en +234$ usada por el
e5ercito norteamericano
!as 0ases de datos comerciales y li0res 6proyecto I7GRE(8
nacen apro'imadamente por el mismo tiempo 6+292 ,
+2:48
E'isten di"ersos tipos de 0ases de datos
#rimera generacin; #lanas y <erar=uicas
(egunda generacin; Relacionales
*ercera Generacin; O05etos relacionales y Orientadas
a o05etos
Otras tecnologas; >)!$ Orientadas a data ?sin forma@$
por e5emplo la Ae0$ Datos graficos$ espaciales$ etc.
Preliminar
Son .erramientas !e "ran importancia para el
almacenamiento/ a!ministracin 0 mane1o !e "ran!es
&ol2menes !e !atos'
Los sistemas "estores !e *ase !e !atos relacionales +SGDR
o RD(S en in"les- tienen como caracter3sticas principales4
Tolerancia a fallos
Transacciones #CID +#tomicit0/ Consistenc0/ Isolation/ Dura*ilit0-'
#cceso multiusuario a "ran!es &ol2menes !e !atos
Consultas escala*les a "ran!es &ol2menes !e !atos
Control !e se"uri!a!/ acceso 0 *loqueos
Len"ua1es !e pro"ramacin !e funciones
Len"ua1e !e consultas SQL 0 mo!ela!o DDL +Data Definition
Lan"ua1e-
Preliminar
El mo!elo relacional aplica!o a la "estin !e *ases !e
!atos es un mo!elo *asa!o en la l"ica !e pre!ica!os
0 teor3a !e con1untos'
5ue formula!a 0 propuesta por primera &e6 en 7898 por
E!"ar Co!! quien preten!3a e&itar sin p:r!i!a !e
!atos/ la necesi!a! !e escri*ir pro"ramas que
e;presen consultas !e la *ase !e !atos 0 ase"urar la
inte"ri!a! !e la *ase !e !atos'
<Relacin= es un t:rmino matem>tico para <ta*la?/ por lo
que ?relacional? *>sicamente si"nifica <*asa!o en
ta*las?' $o se refiere a enlaces o uniones entre ta*las/
!e forma contraria a la creencia "eneral'
La primera !escripcin !el mo!elo relacional !e E!"ar
Co!!l/ ?Deri&a*ilit0/ Re!un!anc0/ an! Consistenc0 of
Relations Store! in Lar"e Data an@s?/ se pu*lic en
un informe !el "rupo !e tra*a1o !e I( en 7898'
78AA Se crea la empresa SoftBare De&eloment La*s/
78A8 renom*ra!o a Relational SoftBare/
78CD renom*ra!o a Oracle Corporation
78AE In"res F I$teracti&e Grap.ics REtrie&al S0stem
+"8#$1""3 %ostgres
1""& %ost'()* cambiado por S'*+ %ostgres"&
1""# %ostgreS'* Global ,evelopment Group
2001 Soporte -.S /%ostG0S12
200& Soporte 3indo4s
1""2 0llustra
1""& 0llustra es comprado por 0nformi5
Preliminar
#Go !e aparicin apro;ima!a
(0SQL 788H
(SSQL Ser&er 78C8
Post"reSQL 78C9
I( DI 78CD
Oracle
6
Oracle J Oracle Corporation 78CD
6 5a*er*eta J Relational SoftBare 78AA
Preliminar
Las primeras &ersiones !e las *ases !e !atos espaciales
son relati&amente nue&as
Oracle Spatial
7889 SDO
788C Spatial
IHHH Ci' Spatial' Primera implementacin nati&a
Post"is H'7 (a0o !el IHH7
(0sql E'7'H #*ril !el IHHD
(S SQL Ser&er en IHHC
POSTGRESQL
Post"reSQL
Post"reSQL
Caracteristicas !e una *ase !e !atos
Con5unto de datos almacenados con una estructura lgica.
7ecesita de una Estructura conceptual con la =ue la informacin
se relacionan entre ellos.
En la prBctica$ es el con5unto de datos mBs los programas =ue
1acen de ellos un con5unto consistente.
Componentes
(er"idor
Base de datos
*a0la
Columnas o atri0utos
Cndices y !la"es
Distas
Disparadores 6*riggers8
%unciones #rocedimientos almacenados 6(tore
#rocedure8
Operadores
*ipos de datos
Post"reSQL
Post"reSQL
El softEare de 0ase de datos 1a e'perimentado un auge e'traordinario$ a
raz de la progresi"a informatizacin de casi la totalidad de las empresas de
1oy en da.
E'isten multitud de gestores de 0ases de datos o programas =ue permiten
mane5ar la informacin de modo sencillo.
F OR&C!E
F )icrosoft (G! (er"er
F Informi'
F DB-
En el mundo del softEare li0re$ E'isten 0ases de datos )uy potentes
F )y(G!
F #ostgre(G!
F (G!I*E
#ostgre(G! es softEare li0re.
F !i0erado 0a5o la licencia B(D$ lo =ue significa =ue cual=uiera puede
disponer de su cdigo fuente$ modificarlo a "oluntad y redistri0uirlo
li0remente.
#ostgre(G! ademBs de ser li0re es gratuito y se puede descargar
li0remente de su pBgina Ee0 para multitud de plataformas.
Post"reSQL
Post"reSQL
Es crea!o por una comuni!a!/ no pertenece a
nin"una compaG3a
E;isten cientos !e usuarios por to!o el mun!o
Las comuni!a!es est>n orienta!as al4
Desarrollo !e (otor 0 nue&as funcionali!a!es
Documentacin
Desarrollo !e aplicaciones o m!ulos a!icionales
Correccin !e errores en las &ersiones !e prue*a
Post"reSQL
Se inicia en la uni&ersi!a! !e er@le0 en 78AA *a1o el nom*re !e
pro0ecto I$GRES como un e1ercicio !e aplicacin !e las teor3as !e
las ases !e !atos relacionales'
En 78C9 se crea un pro0ecto POSTGRES/ *asa!o en I$GRES/ con
el o*1eti&o !e aplicar los conceptos !e o*1etos relacionales'
En 788K cam*ia el nom*re a Post"res8K que lue"o !eri&ar3a a
Post"reSQL
En 7889 se inte"ra al mun!o !el Open Source en la &ersin 9'H
En el IHHH se comien6a a implementar el soporte !el IP,9 +protocolo
!e Internet &ersin 9-
IHHE se lan6a Post"reSQL C'H/ se inicia su a!opcin en el mun!o
comercial/ se le calific como la Kta D(S mas popular en US#'
Las 2ltimas &ersiones son C'E'A/ un salto fuerte en su !esarrollo con
las &ersiones 8'HD/ 8'7'E/ 8'I'H/ actualmente 0a esta !isponi*le al
&ersin 8'D'H
Post"reSQL
Limites !el Post"reSql
TamaGo m>;imo para una *ase !e !atos4 sin limites +e;isten *ases
!e !atos !e DI T-
TamaGo m>;imo para una ta*la4 9E T
TamaGo m>;imo para un re"istro4 sin limites +!epen!en !e la
memoria sBap 0 el sistema operati&o-
$2mero m>;imo !e filas en una ta*la4 sin limites +!epen!en !e la
memoria sBap 0 el sistema operati&o-
$2mero m>;imo !e columnas en una ta*la4 79HH in!epen!iente !el
tipo !e columna
$2mero m>;imo !e 3n!ices en una ta*la4 sin limites +!epen!en !e la
memoria sBap 0 el sistema operati&o-
$umero !e len"ua1es en las que se pue!e pro"ramar las funciones4
apro;ima!amente 7H +pl/p"sql/ %a&a/ Pearl/ P0t.on/ tcl/ p.p/ C/ CLL/
Ru*0/ etc'-
El n2mero m>;imo !e columnas pue!e ser cua!ruplica!o por el
aumento !el tamaGo !e *loque por !efecto a DI@'
Post"reSQL
Post"reSQL
!os )ane5adores de 0ase de datos sir"en de
ayuda como una interfase para e5ecutar
instrucciones a la 0ase de datos
F %acilita las funciones de;
&lmacenamiento fsico.
Garantizar su consistencia.
Garantizar su integridad.
&tomicidad transaccional.
#rocesamiento espacial
7 Comparaciones logicas
7 Constructores geograficos
)ane5o de "istas a la informacin.
F #ara su uso directo empleamos sentencias en el
estandar (G!
Post"reSQL
Se pue!e a!ministrar me!iante
!i&ersas interfases como4
Consola J !i"itacin !e las
instrucciones !irectamente
Gr>fico +GUI- ' (e!iante a0u!as
"r>ficas/ los mas usa!os son4
PG#D(I$ III J en entorno !e
escritorio'
P.pP"#!minM en entorno
Be*'
Post"reSQL
CO$SOL#
Post"reSQL
P.pP"#!min
Post"reSQL
PG#D(I$ III
Post"reSQL
Post"reSQL
Caracter3sticas
Instalacin ilimita!a/ no esta !i&i!i!o por licencias !e
ser&i!or/ *asicas/ empresariales o por n2cleos/ la misma
*ase !e !atos pue!e ser confi"ura!a para !iferentes tipos
!e requerimientos !e ser&i!ores 0 capaci!a!es'
#.orros consi!era*les en costos !e operacin
Esta*ili!a! 0 confia*ili!a!
E;tensi*le
(ultiplataforma
DiseGa!o para am*ientes !e alto &ol2men
Soporte !e transacciones !e forma eficiente
Post"reSQL
Post"reSQL
Caracter3sticas
Dispara!ores +Tri""ers-/ ,istas +,ieBs-/ 0
funciones +functions 0 store proce!ures-'
Soporte para el almacenamiento !e LOs +*inar0
lar"e o*1ects-
Consultas 0 su*consultas
Soporte a cone;iones !e *ase !e !atos !e forma
se"ura +cripto"raf3a-
(o!elo !e se"uri!a! para acceso a o*1etos !e
*ase !e !atos por usuarios 0 "rupos !e usuarios'
Post"reSQL
Post"reSQL
Caractersticas
F DBMSObjeto-Relacional
)odelo o05eto,relacional$ )ane5a rutinas comple5as y
reglas.
(oporte de Consultas (G! declarati"as$ control de
concurrencia$ soporte multi,usuario$ transacciones$
optimizacin de consultas$ 1erencia$ y arreglos
F Altamente Extensible
(oporta operadores$ funcionales$ mHtodos de acceso y
tipos de datos definidos por el usuario.
F IntegridadReferencial
(oporta integridad referencial$ la cual es utilizada para
garantizar la "alidez de los datos de la 0ase de datos.
Post"reSQL
Post"reSQL
Caractersticas
F AI!lexible
!a fle'i0ilidad del &#I de #ostgre(G! #ermite la implementacin de
desarrollos usando O05ect #ascal$ #yt1on$ #erl$ #I#$ ODBC$
<a"a<DBC$ Ru0y$ *C!$ CCJJ$ y #iKe.
F "eng#ajesroced#rales
(oporte para lengua5es procedurales internos$ incluyendo un
lengua5e nati"o denominado #!pg(G!. !engua5e es compara0le al
lengua5e procedural de Oracle$ #!(G!.
Ia0ilidad para usar lengua5es de procedimientos nati"os como
pl#erl$ pl#yt1on$ pl*C! o (G! como lengua5e procedural
em0e0ido.
#osi0iliad de usar lengua5es de procedimientos no nati"os como
plua$ plp1p$ plr$ pl5a"ascript$ pllolcode$ plsc1eme$ pl5a"a$
etc.
F Cliente$Ser%idor
&r=uitectura proceso,por,usuario clienteser"idor. Esta es similar
al mHtodo del &pac1e +...' para mane5ar procesos. Iay un
proceso maestro =ue se ramifica para proporcionar cone'iones
adicionales para cada cliente =ue intente conectar a #ostgre(G!.
(oportado por; <a"a 6<DBC8$ ODBC$ #erl$ Ru0y$ C$ CJJ$ #I#$ !isp$
(c1eme$ G*$ etc.
Post"reSQL
Post"reSQL
Caracter3sticas
Usa un sistema !enomina!o (,CC +#cceso
concurrente multi&ersin/ por sus si"las en in"l:s-
Post"reSQL permite que mientras un proceso
escri*e en una ta*la/ otros acce!an a la misma
ta*la sin necesi!a! !e *loqueos'
Ca!a usuario o*tiene una &isin consistente !e lo
2ltimo a lo que se le .i6o commit' Esta estrate"ia es
superior al uso !e *loqueos por ta*la o por re"istros
com2n en otras *ases/ eliminan!o la necesi!a! !el
uso !e *loqueos e;pl3citos
Post"reSQL
Post"reSQL
#mplia &arie!a! !e tipos nati&os
$2meros !e precisin ar*itraria'
Te;to !e lar"o ilimita!o'
5i"uras "eom:tricas +con una &arie!a! !e funciones asocia!as-'
Direcciones IP +IP&E e IP&9-'
loques !e !irecciones estilo CIDR'
Direcciones (#C'
#rre"los +#rra0s-'
#!emas los usuarios pue!en crear sus propios tipos !e !atos/ los que
pue!en ser por completo in!e;a*les "racias a la infraestructura GiST
!e Post"reSQL' Por e1emplo los tipos !e !atos GIS crea!os por el
pro0ecto PostGIS'
Post"reSQL
Post"reSQL
Otras Caracter3sticas
Cla&es a1enas tam*i:n !enomina!as Lla&es a1enas o Cla&es
5or>neas +forei"n @e0s-'
Dispara!ores +tri""ers-4 es una accin espec3fica que se reali6a !e
acuer!o a un e&ento/ cuan!o :ste ocurra !entro !e la *ase !e !atos'
En Post"reSQL esto si"nifica la e1ecucin !e un proce!imiento
almacena!o *asa!o en una !etermina!a accin so*re una ta*la
espec3fica' To!os los !ispara!ores se !efinen por seis
caracter3sticas4
El nom*re !el !ispara!or o tri""er
El momento en que el !ispara!or !e*e arrancar
El e&ento !el !ispara!or !e*er> acti&arse so*re'''
La ta*la !on!e el !ispara!or se acti&ar>
La frecuencia !e la e1ecucin
La funcin que po!r3a ser llama!a
Post"reSQL
Post"reSQL
Otras Caracter3sticas
Uso !e ,istas'
Inte"ri!a! transaccional'
Nerencia !e ta*las'
Tipos !e !atos 0 operaciones "eom:tricas'
Soporte para transacciones !istri*ui!as' Permite
inte"rarse en un sistema !istri*ui!o forma!o por &arios
recursos +e1em' una *ase !e !atos Post"reSQL/ otra
Oracle/ una cola !e mensa1es I( (Q %(S 0 un ERP
S#P- "estiona!o por un ser&i!or !e aplicaciones !on!e
el :;ito +?commit?- !e la transaccin "lo*al es el
resulta!o !el :;ito !e las transacciones locales'
Post"reSQL
Post"reSQL
Requerimientos
Procesa!or4 se recomien!a un procesa!or !e 9E *its/ aunque es posi*le
instalar en procesa!ores !e DI *its para usos limita!os o locales'
(emoria4 se recomien!a al menos EG
Disco4 el espacio !epen!e !el &olumen !e !atos
SCSI4 para *ases !e !atos relati&amente me!ianas pero !on!e se
requiere un alto acceso !e !atos/ entorno mu0 propenso a cai!as
!el ser&i!or'
S#T#4 para *ases !e !atos mu0 "ran!es/ pero con no mu0 altos
requerimientos !e accesos a los mismos/ usar sistemas con
%ournalin" +e;tE por e1emplo- para minimi6ar los ries"os !e cai!as'
SSD4 para usar como cac.e !e la *ase !e !atos
#rre"lo !e !iscos4 para entornos mu0 "ran!es con muc.o acceso
a los mismos
Post"reSQL
Post"reSQL
Instalacin !e Post"reSQL en )in!oBs
E1ecucin !el pro"rama instala!or/ !escar"a!o !e la
pa"ina !e POSGRESQL o !e la !istri*ucin !e Gismap'
Locali6acin en el Disco +!irectorio- !on!e se instalar>/ se
recomien!a que no sea el !isco C4 ni en el !irectorio
<arc.i&os !el pro"rama=
$umero !e puerto/ por !efault es KEDI/ pero pue!e usarse
otros'
#!icionalmente se pue!e instalar los componentes
Post"is
Otros +ODC/ %DC/ OLD/ '$ET-'
Definicin !el SuperUsuario POSTGRES 0 su Cla&e
Confi"uracin 0 optimi6acin !e los arc.i&os p"O.*a'conf 0
post"resql'conf
Post"reSQL
Post"reSQL
Instalacin !e Post"reSQL en Linu;
Descar"a !el c!i"o 5uente o !e un paquete +rpm
o !e*- se"un el Tipo !e !istri*ucin !e Linu;
+Re!Nat/ Pu*untu/ 5e!ora/ etc'-/ se recomien!a
usar las .erramientas propias !e la !istri*ucin
para la *2sque!a 0 !escar"a !el pro!ucto 0 !e
to!os los !epen!ientes +QU(/ #PTMGET/ etc'-'
su!o aptM"et install post"resqlM8'; li*pqM!e&
Confi"uracin 0 optimi6acin !e los arc.i&os
p"O.*a'conf 0 post"resql'conf
#!ministracin me!iante P.pP"#!min 0 #pac.e o
!irectamente me!iante p"#!min III
Post"reSQL
Post"reSQL
#rocesos #rioritarios
F Copias de (eguridad
F Replicas
F Optimizacin
F Control de grupos y usuarios
&cciones
F Creacin de una 0ase de datos
F Creacin de ta0las
F Definicin de !la"es$ Indices y relaciones
F Definicin de Distas
F Consultas de datos
F Creacin de Disparadores 6triggers8
F Creacin de #rocedimientos &lmacenados o funciones
6(tore procedure8
Post"reSQL
Post"reSQL
Copias de (eguridad
F BacKup
En otros discos o almacenamiento remotos
(e de0e identificar claramente la fec1a en el nom0re del
arc1i"o
#uede ser total o parcial
Generalmente se utiliza el formato CL(*O)
F Restaurar
#uede ser total o parcial
#uede ser adicional 6control de "ersiones8 o (o0re escritura
6Reemplaza la data anterior8
Replicas
F Directas. )ediante indicaciones a la Base de datos o
*a0las o Campos especficos
F Indirectas. )ediante procedimientos y Disparadores.
Post"reSQL
Post"reSQL
Optimizacin
F )e5orar el modo de organizacin fsica de los datos
definiendo los parametros en el arc1i"o
postgres.conf
F Re"isar las relaciones entre las ta0las
F ReInde'ar los datos
Lsuarios y Grupos
F Creacin de usuarios y grupos
F Identificacin de los pri"ilegios de los grupos
Se"uri!a!
Se"uri!a!
Grupos4
Se pue!e tener "rupos !entro !e "rupos'
Si el usuario no se le asi"na fec.a !e e;piracin po!r> acce!er
siempre'
Si el usuario tiene la fec.a !e e;piracin ca!uca!a o no posee
contraseGa/ no po!r> conectarse a una D'
Para que un usuario/ que pertenece a un "rupo/ .ere!e los permisos
!el "rupo es necesario que en las propie!a!es !el usuario este
.a*ilita!o el c.ec@4 Inherits rights from parent roles='
Para que un usuario acce!a a los o*1etos/ es necesario que en las
propie!a!es !el o*1eto este .a*ilita!o el permiso al "rupo que
pertenece en la opcin pri&ile"ios'
En el esquema se pue!e !efinir no solo el pri&ile"io !e su acceso/ sino
tam*ien el !efault para las nue&as ta*las/ si .u*iera 0a crea!as ta*las
o funciones se pue!e usar el menu grant wizard+clic@ !erec.o so*re
Sc.emas-'
Se"uri!a!
Se"uri!a!
Se"uri!a!
Se"uri!a!
(ane1o !e Grupos
(implifica la asignacin de pri"ilegios
El grupo puede ser creado sin nom0re y puede estar
sin usuarios
(e pueden adicionar los usuarios =ue pertenecen al
grupo$ posteriormente a su creacin
(e asignan los permisos y pri"ilegios al grupo
CRE&*E RO!E consultaM
CRE&*E RO!E catastro D&!ID L7*I! NinfinityNM
CRE&*E RO!E mantenimiento D&!ID L7*I! N-4+-,
++,-. 44;44;44NM
CRE&*E RO!E mantenimiento- D&!ID L7*I!
N-4+-,++,-. 44;44;44N CO77EC*IO7 !I)I* +4M
Post"reSQL
Post"reSQL
(ane1o !e Usuarios
Permisos para los accesos a una *ase !e !atos/
esquema/ ta*la/ etc/ que la componen'
#cceso o restriccin a la *ase !e !atos o a ta*las
especificas
E1emplos4
Creacin
CRE#TE USER cons )ITN P#SS)ORD R$H"iASRT
CRE#TE USER cons )ITN P#SS)ORD R$H"iASU ,#LID
U$TIL RIH7EM77M77RT
(o!ificacin
#LTER USER cons
Eliminacin
DROP USER cons
Post"reSQL
Post"reSQL
(ane1o !e Pri&ile"ios
Descri0e =ue usuarios estBn autorizados para realizar
consultas$ actualizaciones$ etc.
E'isten #ri"ilegios de &ccesos y Restricciones
)odos;
GR&7* O7 (EGLE7CE ..
GR&7* O7 D&*&B&(E ..
GR&7* O7 %L7C*IO7 ..
GR&7* O7 !&7GL&GE /
GR&7* O7 (CIE)& /
GR&7* O7 *&B!E(#&CE /
E5m;
GR&7* &!! O7 *&B!E po0lados *O catastroM
Post"reSQL
Post"reSQL
BBsico
F Creacin de una 0ase de datos
F Creacin de un sc1ema 6o usar public8
F Creacin de ta0las y sus columnas
F Inde'ados
6
E5emplo;
CRE&*E *&B!E par=ues
6 OOgid serial 7O* 7L!!$ nom0Op= c1aracter "arying$
cenOpo0 c1aracter "arying$ areaOp= dou0le precision$
o0ser"acion c1aracter "arying$ u0igeo c1aracter "arying$
CO7(*R&I7* par=uesOpKey #RI)&RP QEP 6OOgid8
AI*I 6 OID(R*RLE 8M
&!*ER *&B!E par=ues OA7ER *O postgresM S, permisos
Post"reSQL
Post"reSQL
Insertar !atos
F I$SERT I$TO ta*la V+attr7/ '''attr$-W
,#LUES +e;pr7/''e;pr$- X SELECT VDISTI$CT VO$ attr$WW e;pr7/
'''e;pr$ V5RO( ta*laW V)NERE con!icinW VGROUP Q listaW VN#,I$G
con!icinW V Y U$IO$ V#LLW X I$TERSECT X EZCEPT [ SELECT '''WT
F E1emplo
I$SERT I$TO lotes ,#LUES +%uan Pere6R/ E9/ KH/ H'IK/ R77/IA/788ER-T
I$SERT I$TO pro!uctos +pro!uctOno/ name/ price- ,#LUES +7/ RC.eeseR/
8'88-T
I$SERT I$TO pro!uctos +pro!uctOno/ name- ,#LUES +7/ RC.eeseR-T
I$SERT I$TO pro!uctos ,#LUES +7/ RC.eeseR-T
I$SERT I$TO pro!uctos +pro!uctoOno/ name/ price- ,#LUES +7/ RC.eeseR/
8'88-/ +I/ Rrea!R/ 7'88-/ +D/ R(il@R/ I'88-T
Post"reSQL
Post"reSQL
#ctuali6acion !e !atos
F UPD#TE lotes SET esta!o F <malo=T
F UPD#TE pro!uctos SET precio F precio \ 7'7HT
F UPD#TE lotes SET esta!o F <malo=/ factor F factor M I
WHERE fecha > '11/28/2006'T
F UPD#TE 6onas SET a F K/ * F D/ c F 7 WHERE a >
0;
Eliminacin !e !atos
F DELETE 5RO( lotesT
F DELETE 5RO( lotes WHERE zona = 4BT
F DELETE 5RO( lotes WHERE area <= 10T
Post"reSQL
Post"reSQL
Consultas
F SELECT li!a"#e"ca$%o 5RO( !a&la [criterios]
Vin#icacione"#e"or#ena$ien!oW
F SELECT li!a"#e"ca$%o 5RO( !a&la' !a&la1'!a&la2' ()
[criterios_de_enlace_y_seleccin]
Vin#icacione"#e"or#ena$ien!oW
F E1emplo consultas simples
SELECT \ 5RO( lotesT
SELECT co!i"o/ man6 / propietario !ate 5RO( lotesT
SELECT co!i"o/ +man6LloteLuni!a!- #S co!i"Ocat/ fec.a
5RO( lotesT
F E1emplo Consultas con con!iciones
SELECT \ 5RO( lotes )NERE co!i"o li@e U]HE]R #$D
area ^ 7HHH'HT
SELECT DISTI$CT 6onas 5RO( lotes ORDER Q 6onasT
Post"reSQL
Post"reSQL
Con!icines +).ere-
F Retorna un &alor l"ico
SELECT _ )NERE pisos ^ D
SELECT _ )NERE esta!o F <*ueno=
SELECT _ )NERE material I$ +7/ I/ D-
SELECT _ )NERE material I$ +SELECT material 5RO(
listaO!eOmaterial-
SELECT _ )NERE material I$ +SELECT material 5RO(
listaO!eOmaterial )NERE cI F factor'c7 L 7H-
SELECT _ )NERE factores ET)EE$ +SELECT
listaO!eOmaterial 5RO( tI )NERE cI F factor'c7 L 7H-
#$D 7HH
SELECT _ )NERE EZISTS +SELECT !eu!a 5RO( rentas
)NERE !eu!a ^ 7HH-
Post"reSQL
Post"reSQL
Consultas con uso !e funciones
F SELECT ma;+altura- 5RO( ni&elesT
F SELECT 6ona 5RO( lotes )NERE altura F ma;+altura-T
#"rupamientos
F SELECT co!i"o 5RO( lotes )NERE !eu!a F +SELECT
ma;+!eu!a- 5RO( rentas-T
F SELECT 6ona/ ma;+altura- 5RO( lotes GROUP Q 6onaT
Post"reSQL
Post"reSQL
Consultas con uniones
SELECT t7'co!/ t7'man6 #S man6ana/ t7'r7A9EE #S !eu!a/
tI'6ona/ tI'mDEEK #S meses
5RO( lotes t1, rentas t2
)NERE t1.cod = t2.cod #$D t7'factor ^ tI'r7A9EET
SELECT \ 5RO( lotes LE! "#I$ rentas #$ lotes.cod =
rentas.codT
SELECT \ 5RO( t7 %LL "#I$ t2 #$ t1.n&m = t2.n&mT
SELECT \ 5RO( t7 LE! "#I$ t2 #$ t1.n&m = t2.n&m
'$( t2.)al&e = *+++*,
SELECT \ 5RO( t7 -I./! "#I$ t2 #$ t1.n&m = t2.n&m
'$( t2.)al&e = *+++*,
Post"reSQL
Post"reSQL
Consulta usan!o a"rupacion 0 O,ER
Consulta !e areas acumula!as por man6ana
or!ena!o por co!i"o catastral
SELECT co!i"ocata/ m6Ocat/ loteOcat/ co!O&ia
/area/ sum+area- O,ER +P#RTITIO$ *0 m6Ocat
ORDER Q co!i"ocata-
5RO( lotesH8
Post"reSQL
Post"reSQL
Consulta usan!o a"rupacion 0 O,ER
Consulta !e areas totales por man6ana/ prome!ios/
!es&iacion prome!io por lote con referencia a la man6ana
)ITN lotes as +select co!Ocatastral/ man6ana/ lote/
stOarea+"eometria- as area from test'lotesOmiraf-
select co!Ocatastral/ man6ana/ lote/ area/
sum+area- o)er 0partition 1y manzana order 1y
co!Ocatastral- as areaOacumula!a/
sum+area- o)er 0partition 1y man6ana - as areaOtotal /
count+\- o)er 0partition 1y man6ana - as canti!a!/
sum+area- o)er 0partition 1y man6ana - / count+\- o)er
0partition 1y man6ana - as prome!io/
a&"+area- o)er 0partition 1y man6ana - as prom/
sum+area- o)er 0partition 1y man6ana - / count+\- o)er
0partition 1y man6ana - M area as !es&iacionOprome!io
5RO( lotes
Post"reSQL
Post"reSQL
Consulta usan!o a"rupacion 0 O,ER
Uso !e ran@+- 0 !enseOran@+-
SELECT co!Ocatastral/ man6ana/ lote/ stOarea+"eometria-
as area/ roBOnum*er+- o&er +or!er *0 co!Ocatastral !esc
nulls last-/
ran203 o)er 0order 1y st_area0geometria3 desc n&lls
last3, dense_ran203 #4E- 0#-(E- 56
st_area0geometria3 (E78 $%LL7 L'7!3
5RO( test'lotesOmiraf ORDER Q stOarea+"eometria- !esc
Lista !e man6anas 0 lotes or!ena!os 0 numera!os por el
>rea por los lotes !e ca!a man6ana
SELECT co!Ocatastral/ man6ana/ lote/ stOarea+"eometria-
as area/ ran203 o)er 0partition 1y manzana order 1y
cod_catastral3
-#9 test'lotesOmiraf
Post"reSQL
Post"reSQL
,istas
Es una consulta almacena!a como una ta*la
&irtual' En la practica es una ta*la l"ica como
resulta!o !e una consulta almacena!a que
selecciona/ filtra 0 relaciona las ta*las in!ica!as'
La creacin !e una &ista pue!e ser tan simple
como !eclararlo 0 a"re"ar la sentencia SQL que
se !esea4
CRE#TE OR REPL#CE ,IE) nom*re #S
`sentencia SQL^
Post"reSQL
Post"reSQL
Transacciones
Permite la reali6acin !e m2ltiples operaciones 0
se"urar que to!as terminen satisfactoriamente para
re"istrar la operacin o en caso contrario mantenerlo
como era ori"inalmente'
Estructura4
EGI$
MMMMM operaciones MMMM
CO((IT / ROLL#CP
E1emplo !e na transaccion simple
BEGINT MMMM Inicia una transaccion
I$SERT I$TO po*lacion ,#LUES +RLI(#R/IDE'K9-T
I$SERT I$TO capital ,#LUES +RLI(#R/R#CTI,OR-T
COMMITT MMMM fin !e transaccion/ to!as las
operaciones son procesa!as
Post"reSQL
Post"reSQL
Transacciones
E1emplo !e una transaccion i"nora!a4
BEGINT MMMM Inicia una transaccion
I$SERT I$TO po*lacion ,#LUES +RIC#R/D9'7I-T
I$SERT I$TO capital ,#LUES +RIC#R/R#CTI,OR-T
ROLLBACKT MMMM fin !e la transaccion/ to!as las mo!ificaciones son
i"nora!as/ se retorna al esta!o anterior
E1emplo !e una transaccion con puntos !e "ra*a!o
BEGINT MMMM Inicia una transaccion
I$SERT I$TO po*lacion ,#LUES +RPISCOR/D9'7I-T
I$SERT I$TO capital ,#LUES +RPISCOR/R#CTI,OR-T
SAVEPOINT fase7 MMMM marca un punto !e "ra*a!o
I$SERT I$TO po*lacion ,#LUES +RP#R#C#SR/D9'7I-T
I$SERT I$TO capital ,#LUES +RP#R#C#SR/R#CTI,OR-T
ROLLBACK TO SAVEPOINT fase7 MMMM Retorna al punto !e "ra*a!o
anterior
I$SERT I$TO po*lacion ,#LUES +R(OQUEGU#R/D9'7I-T
I$SERT I$TO capital ,#LUES +R(OQUEGU#R/R#CTI,OR-T
COMMITT MMMM fin !e la transaccion/ procesa las operaciones
in!ica!as
5U$CIO$ES +>sico-
6
Son equi&alentes a los STORE PROCEDURE !e otras
*ases !e !atos/ pero con ma0ores capaci!a!es'
6
Para la creacin !e funciones se in!ican
8
Par>metros
8
Definicin !e &aria*les
8
Procesos !irectos o por la6os
8
Definicin !el retorno
8
#si"nacin !e pri&ile"ios
7
#!icionalmente se soporta como tipo !e par>metros
#$Q#RR#Q/ #$QELE(E$T/ #$Q$O$#RR#Q o
#$QE$U( para !eclararlo'
5U$CIO$ES +>sico-
C#ECER#
// !eclaracion !e la funcion/ in!ica el tipo !e !ato que se retornara
// a!emas se !eclaran las &aria*les internas que se usaran en la funcin
CRE#TE OR REPL#CE 5U$CTIO$ OO""Oclean"eometr0+geometry-
RETUR$S geometry #S
aODQaDECL#RE
inGeom #LI#S for a7T
outGeom "eometr0T
tmLine!tring "eometr0T
// una &aria*le pue!e tomar el tipo !e !ato !e la estructura !e una ta*la
&Otoponimia t*Olotes'toponima]TQPET MM para un tipo !e atri*uto
&Ofila t*Olotes]RO)TQPET MM para un re"istro !e !atos completo
&OfilaOactual recor!T
// o !efinir un &alor constante
&Onom*re CO$ST#$T &arc.ar 4F Reri@aRT
5U$CIO$ES +>sico-
CUERPO I
//Inicio !el conteni!o !e la funcin/ se .acen uso !e las &aria*les internas/ se in!ica el
retorno en !iferentes partes !e la funcin se"2n las con!iciones se cumplan
Begin
outGeom 4F $ULLT
I5 +Geometr0T0pe+inGeom- F RPOLQGO$R OR Geometr0T0pe+inGeom- F
R(ULTIPOLQGO$R- TNE$
if not is,ali!+inGeom- TNE$
tmpLinestrin" 4F
stOunion+stOmulti+stO*oun!ar0+inGeom--/stOpointn+*oun!ar0+inGeom-/7--T
outGeom F *uil!area+tmpLinestrin"-T
I5 +Geometr0T0pe+inGeom- F R(ULTIPOLQGO$R- TNE$ RETUR$
stOmulti+outGeom-T
ELSE RETUR$ outGeomT E$D I5T
else RETUR$ inGeomT E$D I5T
_''''''''''''''
5U$CIO$ES +>sico-
CUERPO II
_'''''''''
ELSI5 +Geometr0T0pe+inGeom- F RLI$ESTRI$GR- TNE$
outGeom 4F stOunion+stOmulti+inGeom-/stOpointn+inGeom/7--T RETUR$
outGeomT
ELSI5 +Geometr0T0pe+inGeom- F R(ULTILI$ESTRI$GR- TNE$
outGeom 4F multi+stOunion+stOmulti+inGeom-/stOpointn+inGeom/7---T RETUR$
outGeomT
ELSE R#ISE $OTICE REL tipo ] no es soporta!oR/Geometr0T0pe+inGeom-T
RETUR$ inGeomT
E$D I5T
En"#$BO%&$
5U$CIO$ES +>sico-
PIE
// fin !e la !eclaracin !e la funcin/ se in!ica el len"ua1e a usar/ as3 como los
permisos !e accesos a la funcin
L#$GU#GE lg!'l ,OL#TILE COST 7HHT
#LTER 5U$CTIO$ ((gg()leangeometry*geometry+ O)$ER TO post"resT
GR#$T EZECUTE O$ 5U$CTIO$ ((gg()leangeometry*geometry+ TO
pu*licT
GR#$T EZECUTE O$ 5U$CTIO$ ((gg()leangeometry*geometry+ TO
consultaT
5U$CIO$ES +>sico-
Se pue!en !eclarar parametros !e entra!a +I$-/ sali!a +OUT- o !e entra!a 0 sali!a +I$OUT-
CRE#TE OR REPL#CE 5U$CTIO$ funcion7 +te,to(-ia &arc.ar/ OUT nom.re &arc.ar/ OUT
tio &arc.ar- RETUR$S recor! as
aa
EGI$
tio 4F su*str+te,to(-ia/7/D-T
nom.re 4F su*str+te,to(-ia/E/DH-T
E$DT
aa L#$GU#GE plp"sqlT
CRE#TE OR REPL#CE 5U$CTIO$ funcionI +te;toO&ia &arc.ar- RETUR$S inte"er #S
aa
DECL#RE
nom*re &arc.arT
tipo &arc.arT
!atos recor!T
EGI$
SELECT \ I$TO nom*re/tipo from funcion7+te;toO&ia-T
R#ISE $OTICE Rtipo !e &ia es4]R/tipoT
R#ISE $OTICE R$om*re !e la &ia es4]R/nom*reT
RETUR$ 7T
E$DT
aa L#$GU#GE plp"sqlT
Se prue*a me!iante4
SELECT funcionI+R#,' %#,IER PR#DOR-T
Dispara!ores +Tri""ers-
6
Definicion !el !ispara!or
7 CRE#TE TRIGGER tri"OmencomOultO!ist
E5ORE I$SERT OR UPD#TE
O$ mo&ilsat'car!OlastO!ata
5OR E#CN RO)
)NE$ +$E)'\ IS DISTICT 5RO( OLD'\- b solo en 8';
EZECUTE PROCEDURE mo&ilsat't"O!istrito+-T
REGL#S +RULES-
$os permiten !esarrollar al"una accin ante un
e&ento pro!uci!o en una ta*la o &ista' # !iferencia
!el TRIGGER no se pue!e !esarrollar una l"ica
#ccesi*ili!a! a los o*1etos
#ccesi*ili!a! a los o*1etos
F
El acceso a cual=uier o05eto =ue contiene
El acceso a cual=uier o05eto =ue contiene
maysculas en su nom0re de0e estar descrito
maysculas en su nom0re de0e estar descrito
entre comillas y respetar estrictamente las
entre comillas y respetar estrictamente las
maysculas y minsculas. E5emplo;
maysculas y minsculas. E5emplo;
&b'Al#mno(
&b'Al#mno(
su acceso serB
su acceso serB
)&b'Al#mno*
)&b'Al#mno*
.
.
F
#ara o05etos cuyo nom0re esta totalmente en
#ara o05etos cuyo nom0re esta totalmente en
minsculas es indiferente la forma en =ue se
minsculas es indiferente la forma en =ue se
escri0a el acceso a ellas siendo indiferente la
escri0a el acceso a ellas siendo indiferente la
diferencia entre maysculas y minsculas y no
diferencia entre maysculas y minsculas y no
se necesita descri0irlo entre comillas do0les.
se necesita descri0irlo entre comillas do0les.
E5emplo;
E5emplo;
+r#eba
+r#eba
$ su acceso serB
$ su acceso serB
+r#eba
+r#eba
o
o
R,EBA
R,EBA
.
.
#ccesi*ili!a! a los o*1etos
#ccesi*ili!a! a los o*1etos
Post"reSQL 8'Z
Post"reSQL 8'Z
Las nue&as funcionali!a!es en Post"re 8'Z presenta a&ances en el ren!imiento
es escala1ilidad )ertical para que se pue!a mane1ar car"as !e tra*a1o ca!a &e6
mas "ran!es' #s3 mismo se inclu0en me1oras !e alta !isponi*ili!a! que !an a los
a!ministra!ores !e *ases !e !atos +D#s- mas opciones para confi"uraciones
!e alta !isponi*ili!a! +N#-'
En la replicas no es necesario que to!os los escla&os est:n conecta!os a un
solo maestro/ esto pue!e ser en casca!a/ es !ecir el maestro a aun escla&o7/
!el escla&o7 al escla&o I/ etc'/ me1oran!o 0 !istri*u0en!o el ren!imiento
correspon!iente'
(e1oras en el mantenimiento !e se"uri!a! 0 autentificacion me!iante el uso !e
.-'$!:-E4#;E I$ 78/E9'
GR#$T SELECT O$ #LL T#LES I$ SCNE(# e1ercicios TO consultaT
GR#$T SELECT O$ #LL SEQUE$CES I$ SCNE(# e1ercicios TO consultaT
GR#$T EZECUTE O$ #LL 5U$CTIO$S I$ SCNE(# e1ercicios TO consultaT
'L!E- (E'%L! <-#4ILE.E7
'L!E- (E'%L! <-I4ILE.E7 #- -#LE cons<a .-'$! 7ELE8! #$ !'5LE7
!# p&1lic,
Post"reSQL 8'Z
Un nue&o tipo !e !atos para el mane1o !e -'$.#7 +Ran"e T0pe-'
Similitu! P$$
Soporte !e !atos tipo %SO$
(,CC4 (ulti&ersion Concurrent Control
Dispara!ores !e columnas/ que se e1ecuta cuan!o uno o mas columnas
in!ica!as se actuali6an'
CRE#TE TRIGGER actuali6acol E5ORE UPD#TE O5 columna O$
e1ercicios'ta*la7 5OR E#CN RO) EZECUTE PROCEDURE !ispara!or+-T
Dispara!ores )NE$/ permite !efinir una con!icin en la !efinicin !el
!ispara!or/ e&itan!o a"re"ar con!iciones !entro !el mismo re!ucien!o el
numero !e !ispara!ores que se tienen que e1ecutar con la consi"uiente
!isminucion !el uso !el CPU en el ser&i!or'
CRE#TE TRIGGER c.ec@Oup!ate
E5ORE UPD#TE O$ accounts
5OR E#CN RO)
)NE$ +OLD'*alance IS DISTI$CT 5RO( $E)'*alance-
EZECUTE PROCEDURE c.ec@OaccountOup!ate+-T
Post"reSQL 8'Z
DE5ERR#LE CO$STR#I$TS/ que permite que la unici!a!
!e una restriccin es for6a!a al final !e la sentencia SQL 0 no
en ca!a tupla actuali6a!a'
En este e1emplo' En las &ersiones anteriores se o*ten3a un
error !e tipo ERROR4 !uplicate @e0 &alue &iolates unique
constraint ?testOp@e0? Pe0 +a-F+I- alrea!0 e;ists'
CRE#TE T#LE test +a int primar0 @e0 !eferra*le-T
I$SERT I$TO test &alues +7-/ +I-T
UPD#TE test set a F aL7T
Se acti&a me!iante el uso !e
SET CO$STR#I$TS #LL DE5ERREDT
O por !efecto 0a acti&a!o se secrea la ta*la como4
CRE#TE T#LE test +a int PRI(#RQ PEQ DE5ERR#LE
I$I!I'LL6 (EE--E(-T
Post"reSQL 8'Z
Or!enacin en funciones a"re"a!as/ los resulta!os !e una funcin a"re"a!a !el
tipo array_agg o string_agg/ !epen!er> !el or!en que se reci*a los !atos/ en
as &ersiones anteriores se o*ten3a los resulta!os sin or!enar o se requer3a !e
su*consultas para o*tener los !atos correctos' En la nue&a &ersin se pue!e
usar #-(E- 56 !entro !e la funcin a"re"a!a
#ntes se o*ten3a la lista !e nom*res por ca!a enti!a! pero en forma !esor!ena!a
SELECT enti!a!/strin"Oa""+nom*re/R/ R- 5RO( personal GROUP Q enti!a!
#.ora
SELECT enti!a!/strin"Oa""+nom*re/R/ R ORDER Q nom*re- 5RO( personal GROUP Q
enti!a!T
(antenimiento ,#CUU( 5ULL .a si!o me1ora!o en su rapi!e6/ sin em*ar"o/ en
sistemas en pro!uccin/ se !e*e consi!erar una *uena pol3tica !e ,#CUU( en
su sistema para e&itar usar este coman!o'
Eliminacin !e %OI$S Innecesarios en la sentencia SQL/ si los atri*utos !e
retorno no pertenecen a la otra ta*la
EL uso !e in!ices con IS $OT $ULL/ es parte !e la caracter3stica !e los in!ices/
as3 *usca el &alor en el in!ice sin tner que compro*ar los &alores en la ta*la'
Post"reSQL 8'Z
EZPL#I$ pue!e usar mo!os a!icionales para una me1or e;plicacion
EZPL#I$ +#$#LQcE true/ ,EROSE true/ U55ERS true/ COSTS true/
5OR(#T TEZT - _'
5unciones annimas/ que se pue!en e1ecutar al &uelo !es!e una linea
!e coman!os o script si necesi!a! !e crear una funcin
DO lan"ua"e plp"sql aa
DECL#RE
&r recor!T
EGI$
5OR &r I$ SELECT ta*lename 5RO( p"Ota*les )NERE ta*leoBner F
RconsultaR
#$D sc.emaname $OT I$ +Rp"Ocatalo"R/RinformationOsc.emaR-
LOOP
EZECUTE RGR#$T #LL O$ R XX &r'ta*lename XX R TO a!ministRT
E$D LOOPT
E$D
aaT
Post"reSQL 8'Z
Llama!as a los par>metros por sus nom*res/ permitien!o la
e1ecucin a lo tra!icional/ en el or!en que se especificaron
los par>metros o con la in!icacin !e ellas como4
Consi!erna!o una funcion test con !os parametros/ el
primero a que es entero 0 el se"un!o * que es te;to
SELECT test+7/Rta*laR-T
SELECT test+ a4F7/ *4FRta*laR-T
Conectores !e *ases !e !atos for>neos
Uso !e NSTORE inclu0en!o la posi*ili!a! !e e1ecutar
GROUP Q 0 DISTI$CT en estos atri*utos'
,istas actuali6a*les autom>ticas
%oins Laterales
Post"reSQL 8'Z
Replicas
Importancia !e las Replicas
Para tener un sistema tolera*le a fallas'
Para *alancear la car"a !e tra*a1o en !i&ersos ser&i!ores'
Para aplicaciones !e alto consumo en consultas +'I'-
Para tener un am*iente !e prue*as o !esarrollo lo mas
pareci!o al am*iente !e pro!uccin
Etc'
Que es )#L
)#L es un *uffer !on!e se lle&an a ca*o las operaciones a
la !ata una &e6 termina!a se pasan al almacenamiento !e
!atos principal/ si al"o pasara entonces el are !e !atos
permanecer> intacto/solo se per!er> lo que esta en el )#L'
)#L "enera se"mentos !e 79m* +confi"ura*le- en arc.i&os
fisicos que tienen pa"inas !e !atos !e C@* +confi"ura*le-'
Post"reSQL 8'Z
Replicas
Reli)a A!in)roni)a / Stream Reli)ation *SR+'
Esta funcionali!a! nos permite transferir
asincronicamente los re"istros )#L so*re la
marc.a +recor!M*ase! lo" s.ipin"- entre un
ser&i!or maestro 0 &arios escla&os' Consiste en un
tiempo !e !emora entre el ser&i!or (aestro
procesan!o la informacion 0 el escla&o
reci*ien!ola' Se utili6an los arc.i&os )#L que
permiten re"enerar la *ase !e !atos' E;iste un
pro*lema que si se cae el ser&i!os (aestro/ se
po!rian per!er al"unas transacciones'
Post"reSQL 8'Z
Replicas
Reli)a Sin)roni)a / Syn)ronou! Reli)ation *Reli)a)ion
Sin)roni)a+0 Controla!a por sesin/ permitien!o la alta
!isponi*ili!a! con consistencia entre m2ltiples ser&i!ores' $o
es necesario ser un super usuario' Las transacciones no se
completan a menos que se completen en el ser&i!or (aestro
0 en el Escla&o +esto "enera un tiempo !e proceso ma0or
para la transaccin-' La 2nica posi*ili!a! !e per!er !atos es
que se cai"an am*os ser&i!ores'
)aestro
Escla"o +
Escla"o - Escla"o .
Post"reSQL 8'Z
Replicas
Reli)a en Ca!)a"a0 Es asincronica/ funciona al
estilo !el primer tipo !e replicacion copian!o los
arc.i&os )#L'
*a0la +
*a0la -
*a0la .
*a0la +
*a0la -
*a0la .
*a0la +
*a0la -
Replica de
(er"+ a (er" -
Replica de
(er"- a (er" .
Ser% - Ser% . Ser% /
Post"reSQL 8'Z
Replicas
Las replicas / en la &ersin 8'D / se .an incrementa!o en E formas4
Streamin"MOnl0 Remasterin"
Es un proceso que replica un "rupo !e replicas !efinien!o un nue&o
maestro para las otras replicas'
(aestro (7 replica a R7/ RI 0 RD
(aestro (7 necesita apa"arse por actuali6acin !e .ar!Bare'
El D# promociona a R7 como el nue&o maestro
RI 0 RD se reMconfi"ura 0 reinician/ 0 a.ora replican !e R7
5ailo&er rapi!os +5ast failo&er-
Permite replicas a ser dpromo&i!as en menos !e un se"un!o encaso
!e fallas'
#rc.itectureMin!epen!ent streamin"
Permite replicas entre !iferentes sistemas operati&os'
p"O*ase*ac@up conf setup
Permite Crea un a recuperacin simple en un nue&o !irectorio clona!o'
Permite que se pue!a inme!iatamente empe6ar una nue&o ser&i!or !e
*ase !e !atos sin e!iciones a!icionales'
Soporte !e ta*las foraneas
Tra!icionalmente Post"reSQL soporta el acceso a !atos
!e otros motores !e *ases !e !atos me!iante paquetes
CO$TRI'
#ctualmente se pue!e confi"urar las cone;iones sin la
instalacin !e paquetes a!icionales e1ecutan!o coman!os
como4
CRE#TE 5OREIG$ T#LE VI5 $OT EZISTW ta*la
+VYcolumna tipo V$ULL X $OT $ULLW [ V/ _WW-
SER,ER ser&i!or VOPTIO$S +opciones V/ '''W-WT
#LTER _
DROP '''
Post"reSQL 8'Z
Post"reSQL
Post"reSQL
Soporte !e ta*las foraneas !e otras *ases !e !atos !e
Post"reSQL
En la &ersion 8'D se utili6a una e;tension
POSTGRESO5D)
Ofrece funciones que facilitan el acceso !e lectura /
escritura a ser&i!ores remotas !e post"resql
6 Se esta*lece la coneccion con CRE#TE SER,ER
6
Se !efine con CRET#RE USER (#PPI$G
6 Se !efine CRE#TE 5OREIG$ T#LE
6 Se se !a la coneccion/ se usa la ta*la foranea como
una ta*la propia en consultas/ 1oins/ actuali6aciones/
etc'
Post"reSQL 8'Z
1ot Stan".y *1S+' Esta nue&a funcionali!a! nos permite acce!er en
mo!o !e solo lectura a to!os los !atos !isponi*les en el ser&i!or escla&o
en !on!e estamos replican!o nuestra *ase !e !atos !es!e el ser&i!or
maestro'
(e1ora en la se"uri!a! 0 autentificacion'
Grante Re-o2e S)3ema4 Se pue!en !efinir pri&ile"ios para to!a las
ta*las/ secuencias 0 funciones en un esquema +sc.eme- con un solo
coman!o SQL'
GR#$T SELECT O$ #LL T#LES I$ SCNE(# pu*lic TO usuarioT
GR#$T SELECT O$ #LL SEQUE$CES I$ SCNE(# pu*lic TO usuarioT
GR#$T EZECUTE O$ #LL 5U$CTIO$S I$ SCNE(# pu*lic TO usuarioT
Estos coman!os solamente afectan a los o*1etos que e;istan en el
momento !e e1ecutar el coman!o 0 no a los que se creen en el futuro'
ALTER %E5A6LT PROVILEGES Para !efinir los pri&ile"ios por !efecto
!e o*1etos que se creen en el futuro
#LTER DE5#ULT PRI,ILEGES 5OR ROLE usuario GR#$TE SELECT O$
T#LES TO pu*licT
Post"reSQL 8'Z
%i!ara"ore! "e )olumna!4 Se e1ecutan cuan!o una o mas columnas !efini!as por
el usuario se actuali6an' Con este tipo !e !ispara!ores nos a.orraremos el tener que
utili6ar la l"ica con!icional 0 comparacin !e &alores en las funciones usa!as por
nuestro !ispara!or/ como se .a teni!o que .acer en las &ersiones pre&ias'
%i!ara"ore! 71EN4 con los !ispara!ores con!icionales se pue!en !efinir una
con!icin !el !ispara!or' De esta manera nos a.orramos el tener que usar una
con!icin I5 '' TNE$ !entro !el !ispara!or/ re!ucien!o el consumo !el CPU en el
ser&i!or'
Solo se e1ecutara la funcion c.ec@OaccountsOup!ate+- si el *alance &ie1o es !istinto que
el *alance nue&o'
CRE#TE TRIGGER c.ec@Oup!ate
E5ORE UPD#TE O$ cuentas
5OR E#CN RO)
71EN *OL%4.alan)e IS %ISTINCT 5ROM Ne84.alan)e+
EZECUTE PROCEDURE c.ec@OaccountsOup!ate+-T
Regionali9a)ion or )olumna!0 soportan!o la !efinicin !el enco!e por columnas '
7rita.le Common Ta.le E,re!ion0 E1ecuta actuali6aciones m2ltiples comple1as
en una simple consulta'
Post"reSQL 8'Z
%E5ERRABLE CONSTRAINTS4 Con esta funcionali!a! ' La
unici!a! !e una restriccin es for6a!a al final !e la sentencia
SQL e1ecuta!a 0 no en ca!a tupla actuali6a!a'
CRE#TE T#LE e1ercicios'test +a int primar0 @e0-T
I$SERT I$TO e1ercicios'test ,#LUES +7-/+I-T
UPD#TE e1ercicios'test set aFaL7T
JMMMMMMMMM
CRE#TE T#LE e1ercicios'test +a int primar0 @e0 I$ITI#LLQ
DE5ERRED-T
I$SERT I$TO e1ercicios'test ,#LUES +7-/+I-T
UPD#TE e1ercicios'test set aFaL7T
select \ from e1ercicios'test
NOT VALI% C1ECK CONSTRAINTS0 Se pue!e usar para
restrin"ir 0 optimi6ar el uso !el constraints
#LTER T#LE test #DD CNECP +a^7HH- $OT ,#LIDT
Post"reSQL 8'Z
Or"ena)i:n "e ;un)ione! agrega"a!0 El resulta!o !e una
funciona a"re"a!a !el tipo arra0Oa"" o strin"Oa""/ !epen!er> !el
or!en en que se reci*an los !atos/ o*tenien!ose una lista or!ena!a
SELECT oficina/strin"Oa""+nom*re/R/ R ORDER Q nom*re- 5RO(
suel!os GROUP Q oficinaT
SELECT man6ana/strin"Oa""+lote/R/ R ORDER Q lote- 5RO(
test'lotesOmiraf GROUP Q man6anaT
VAC6MM 56LL me<ora"o0 en &ersiones pre&ias un ,#CU((
5ULL era una operacin lenta 0 que consum3a muc.os recursos' En
la &ersin actual no reali6a la operacin por "rupo !e re"istros sino
crea una ta*la temporal que actuali6a a la ori"inal cuan!o la
operacin este termina!a/ !e esta forma es muc.o mas r>pi!o
In"e,amiento "e lo! K -e)ino! ma! )er)ano! *K/Neare!t/
Neig3t.or+4 In!ices so*re la <!istancia= entre re"istros para
consultas r>pi!as !e u*icacin +espacial- 0 !e seme1an6a !e te;tos
+al"oritmo P$$-'
#l"oritmo P$$
$os in!ica que tan similares son os o*1etos relati&os
a otros
La similitu! se mi!e por una R!istanciaR
Se usa en4
Geolocali6acion optima
Clasificacin
Similitu!
Post"reSQL soporta P$$ para tipos "eom:tricos
a!emas !e te;tos
(e1ora en los in!e;a!os
B/tree J Limita!o a un "rupo !e opera!ores
+`/^/F/`F/F^-
DISPO$ILE P#R# TODOS LOS TIPOS DE D#TOS
GiST J Generali6e! Searc. Tree' Usa en tipos !e !atos
comple1os/ no soporta su*!i&isiones !esM*alancea!as
POSTGIS/ Ltree/ .store/ p"Otr"m/ full te;t searc./
intarra0/ etc'
GIN J Generali6e! In&erte! In!e;J
Nstore/ p"Otr"m/ full te;t searc./ intarra0/ etc'
SPGIST M General In!e; 5ameBor@ for Space
Partitionin" Trees'
(e1ora en los in!e;a!os
Se utili6an funciones u opera!ores como4
similarit0+te;to7/te;toI-
$os in!ica que tan similares son os !os te;tos/ el
factor &a entre H 0 7/ sien!o 7 i"ual 0 H totalmente
!iferentes'
Te;to7 `M^te;toI
$os in!ica la !istancia entre la similitu! !e !os
te;tos/ el &alro &a entre H 0 7 / !on!e H es cerca 0 7
es mu0 le1ano
Te;to7 ] te;toI
$os in!ica un &alor lo"ico si son similares o no/ esto
es !a!o por la !efinicion !el limit +select
set_limit0=.13, show_limit03, -
Post"reSQL 8'Z
(e1oras en la !efinicin !e proce!imientos almacena!os
In)lu!i:n y me<ora! en el mo"ulo )ontri. 1!tore0 en el uso !e columnas
con !atos tipo lla&eM&alor
Se pue!en !efinir lla&es 0 sus &alores 0 se !isponen
.erramientas para la comparacin !e &alores/ seleccin !e
lla&es/ o*tencin !e &alores 0 mantenimiento/ as3 como para
con&ertirlas .ace o !es!e #rre"los/ (atrices/ Re"istros 0 %SO$'
El in!e;a!eo !e este tipo !e !atos se reali6a me!iante GISTM
6nlogge" Ta.le!0 Son ta*las especiales que me1oran el !esempeGo/ pues
son mas r>pi!as al escri*ir los !atos/ pero son suscepti*les a truncamientos
en caso !e fallos' Este tipo !e ta*las est>n pensa!as para !atos ef3meros
+!atos temporales/ cac.e/ etc'-
Post"reSQL 8'Z
$ue&os tipos !e !atos
Ran"e
Representan ran"o !e &alores/ se pue!en usar con
numeros enteros +normales 0 "ran!es-/ numericos/ .oras
0 fec.as/ se pue!en crear ran"os propios usan!o
<CRE#TE TQPE=
E1emplo 74
CRE#TE T#LE reser&aciones +.a*itacion
CN#R#CTER ,#RQI$G $OT $ULL/ !uracion
TSTcR#$GE/ EZCLUDE USI$G "ist +!uracion
)ITN ee--T
I$SERT I$TO reser&aciones ,#LUES
+7H7/RVIH7IMHIMH7 7E4IA4HH/ IH7IMHIMHK
7I4HH4HHWR-T
select \ from test'reser&aciones B.ere !uracion
f^ RIH7IMHIMHCR44timestamp
Post"reSQL 8'Z
$ue&os tipos !e !atos
Ran"e
E1emplo I4
CRE#TE TQPE floatran"e as R#$GE +su*t0pe F floatC/
su*t0peO!iffFfloatCmi-T
E1emplo D4
CRE#TE T#LE suel!os +OO"i! I$TEGER/ car"o
CN#R#CTER ,#RQI$G/ suel!o intEran"e-T
I$SERT I$TO suel!os ,#LUES
+7/RpracticanteR/RVEHH/CHHWR-T
I$SERT I$TO suel!os ,#LUES
+I/RpracticanteIR/RVKHH/8HHWR-T
I$SERT I$TO suel!os ,#LUES +D/Rin"enieroR/RV7KHH/WR-T
select \ from suel!os
select upper+suel!o-/loBer+suel!o- from suel!os
select suel!o f^ 8HH as o@/OO"i! 5RO( suel!os
Post"reSQL 8'Z
#mpliacin a L#TER#L %oin'
#!iciona (ateriali6e! ,ieB
Es un tipo especial !e &ista que se mane1a como una ta*la f3sica/
conceptualmente es seme1ante a CRE#TE T#LE #S/ pero la &ista
almacena!a ue!e ser refresca!a o actuali6a!a f>cilmente
La actuali6acion no es automatica/ 0 no son incrementales/ asi como los
conteni!os no pue!en ser manipula!os/ ellos son automatricamente
llena!os por RESTORE'
Permite tener &istas con accesos muc.o mas rapi!o
Recursi&e ,ieBs
Permite ofrecer formas !e formular una common ta*le e;pression +CTE-
como una &ista
#ctuali6acion !e &istas
Ta*las que que se pue!en actuali6ar no !e*en contener referencias a mas
!e una ta*la u opera!ores comple1os como %OI$S/ etc'
Las &istas comple1as pue!en ser actuali6a!as me!iante el uso !e e&entos
I$STE#D O5 o re"las I$STE#D
POSTGIS
Glosario !e T:rminos
OGC / *Oen Geo!atial Con!ortium+4 %e;ine e!e)i;i)a)ione! y regla! ara
lo! inter)am.io! "e "ato! geoe!a)iale! entre ro"u)to! o te)nolog=a!
EPSG M +European Petrolium Sur&e0 Group- #ctualmente !efine la especificacin
para una "ran canti!a! !e sistemas !e pro0eccin espacial' Usa!o por las
comuni!a!es 0 soluciones !e arquitectura a*ierta' En SRS se usa con el prefi1o
EPSG 0 se"ui!o por el c!i"o correspon!iente
Geo>SON M +.ttp4//"eo1son'or"/- Geo"rap.0 %a&ascript O*1ect $otation' Es un
nue&o est>n!ar/ inclui!o por OGC' Com*ina la estructura !e %SO$ 0 a"re"a la
!escripcin !e la "eometr3a
GEOS M +Geometr0 En"ine Open Source-' Es el motor usa!o por POSTGIS/
inclu0e funciones a&an6a!as en CLL/ Es un !eri&a!o !el pro0ecto %TS'
GML M +Geo"rap.0 (ar@up Lan"ua"e- Defini!o por OGC/ es un formato !e
almacenamiento 0 trasla!o !e !atos "eo"r>ficos/ *asa!o en Z(L/ usa!o como
sali!a por )5S'
KML M +Pe0.ole (ar@up Lan"ua"e-' Otro formato *asa!o en Z(L/ inclu0e
formato !e estilos/ emplea!o principalmente por Goo"le 0 posteriormente
a!opta!o como un est>n!ar !e transporte !e !atos por el OGC
Glosario !e T:rminos
SRI% J +Spatial Reference I!entifier-' El la cla&e primaria +"eneralmente
un numero- en un catalo"o !e pro0ecciones "eo"raficas' Se usa el
termino muc.o en *ases !e !atos espaciales *asa!as en las
especificaciones !el OGC'
SRS +ID-J +Spatial Reference S0stem-' Su concepto es similar al SRID'
Define el sistema !e pro0eccin "eo"rafico !e los !atos espaciales'
Generalmente se &e como EPSG4EDI9 +)GS CE lon" lat-/ EPSG4DIA7C
+UT( )GS CE cona 7C Sur-/ EPSG48HH87D +)e* mercator-'
7MS J +)e* (ap Ser&ice-' Crea!o por OGC' Permite trasla!ar +por
Internet- el mapa como ima"en 0 las ocnsultas respecti&as'
75S J +)e* 5eature Ser&ice-'Crea!o por OGC' Permite trasla!ar +por
Internet- los !atos &ectoriales 0 sus atri*utos'
G%AL?OGR J es una *i*lioteca con funcionali!a!es para la lectura 0
escritura a !iferentes formatos &ectoriales 0 raster'
@ue e! una .a!e "e "ato! e!a)ial
Es un sistema a!ministra!or !e *ases !e !atos que mane1a !atos e;istentes
en un espacio/ mo!ela!os 0 !efini!os me!iante los conceptos !e un GIS/ lo
cual implica un proceso !e a*straccin para representar el mun!o real/
or"ani6a!a por capas/ estructuras/ relaciones espaciales 0 elementos
Una *ase !e !atos espacial/ almacena 0 manipula o*1etos espaciales como
cualquier otro o*1eto en la *ase !e !atos
Contiene tres elementos *>sicos
Tipo !e !ato espacial
In!e;a!o espacial
5unciones espaciales
Son 2tiles para4
#se"urar que los !atos est:n correctamente estructura!os 0 "eoreferencia!os
5acilitar el an>lisis espacial
Distri*uir la informacin entre m2ltiples accesos
(antenimiento !e !atos en forma or"ani6a!a 0 controla!a
,isuali6acin !e los !atos en forma !e mapas
@ue e! una .a!e "e "ato! e!a)ial
Es un sistema a!ministra!or !e *ases !e !atos que mane1an !atos
e;istentes en un espacio o "eo"raf3a so*re la superficie !e la tierra'
Se *usca .acer una representacin simplifica!a o a*straccin !el
mun!o real en capas o ta*las !e !atos 0 sus relaciones espaciales'
Ofrece una serie !e funciones e in!ices para reali6ar consultas o
manipular los !atos usan!o SQL'
Criterios *>sicos en una *ase !e !atos espacial
7 Mo"elo "e "ato! e!a)iale!4 Tipos !e !atos espaciales
+tipo !e "eometr3a- 0 opera!ores espaciales +relaciones
espaciales/ topolo"ia/ etc'-'
7
Lengua<e "e )on!ulta!A "e ro)e!amiento y
otimi9a)i:n espacial para su acceso 0 representacin'
7 %ata mining e!a)ial +principio !e *uscar en "ran!es
&ol2menes !e !atos para o*tener informacin rele&ante-'
SER,IDOR DE D#TOS ESP#CI#L
Un ser&i!or !e *ase !e !atos esta compuesto principalmente por4
#l (enos Una ase De Datos
Con1unto De Ta*las
Con1unto De 5unciones
Con1unto De Re"las Q Restricciones
Con1unto De Tipos
La *ase !e !atos espacial tiene a!emas/ ta*las complementarias +lista
!e pro0ecciones "eo"r>ficas/ ta*las con "eometr3as/ ta*las raster/
etc'-/ $ue&as funciones espaciales +constructores/ an>lisis/
accesorios/ etc'-/ Definicin !e nue&as re"las/ especificaciones !e
nue&os tipos +"eometr0/ points/ linestrin"s/ etc'- Q su correspon!iente
in!e;a!o espacial/ *asa!o en el m3nimo rect>n"ulo que contiene el
elemento'
Un ser&i!or !e *ase !e !atos contiene to!as las *ases !e !atos 0
ta*las necesarias para un pro0ecto
La ase !e !atos espacial o "eo!ata*ase contiene to!o un "rupo !e
ta*las or"ani6a!as por esquemas
La ta*la espacial es equi&alente a un la0er que
contiene un con1unto !e elementos +feature
collection- o re"istros !e !atos'
El re"istro esta compuesto por su "eometr3a/ las
re"las 0 relaciones +topolo"3a-/ 0 es !efini!o como un
<elemento= +feature-
Ca!a elemento tiene una sola "eometr3a/ que esta
compuesto por uno o &arios tipos !e "eometr3as/
&:rtices/ coor!ena!as/ &alores ; e 0 correspon!ientes
a una pro0eccin "eo"r>fica +SRID-
El mo!elo espacial est> *asa!o en las
especificaciones !el OGC 0 otros est>n!ares para el
mane1o !e ID/ DD 0 raster'
SER,IDOR DE D#TOS ESP#CI#L
PRI$CIP#LES #SE DE D#TOS ESP#CI#L
EZISTE$TES
,arias *ases !e !atos .an implementa!o
funcionali!a!es !e *ase !e !atos espacial como4
Oracle RD(S con Oracle Spatial o Locator
Post"reSQL con POSTGIS
SQLite con SpataLite
En menor "ra!o est>n emplementa!as en4
SQLSer&er IHHC J IH7I
(0Sql
I( DI con Spatial E;ten!er
Tera!ata
I( Informi; con Spatial !atala!e
PRI$CIP#LES #SE DE D#TOS ESP#CI#L
EZISTE$TES
(0sql aun no es una *ase !e !atos espacial completa/ porque 4
no consi!era al"unos tipos e in!ices
Los tipos son !efini!os en ta*las (0IS#( solamente'
Las funciones solo operan con la ca1a +*oun!in" *o;-
Esta en !esarrollo
#rcSDE es un mane1a!or !e *ases !e !atos espaciales
Es un <mi!!leBare= espacial' Es !ecir se pone encima !e una *ase
!e !atos e interpreta los requerimientos/ Es in!epen!iente !e la
*ase !e !atos 0 mane1an las transacciones/ &ersionamiento o
&ali!aciones con re"las propias 0 no nati&as a la *ase !e !atos
como Oracle/ Post"reSQL'
Implica a!ministrar la *ase !e !atos 0 a!ministrar el #rcSDE
Es totalmente in!epen!iente !e la *ase !e !atos 0 potencia!o con
los pro!uctos !e la linea !e Esri
E,OLUCIg$ GIS M D#TOS
Primera "eneracin GIS
To!os los !atos espaciales son almacena!os en arc.i&os/ se requiere !e
un softBare GIS especifico/ propietario 0 cerra!o/ para interpretar 0
manipular los !atos'
Se"un!a "eneracin GIS
Relacin con las *ases !e !atos +atri*utos-/ la inte"racin se .ace a ni&el
!el softBare GIS especifico' #l"unos softBare inclu0en motores !e
almacenamiento 0 recuperacin !e !atos espaciales en la *ase !e !atos
'
GI(
)otor de
datos
&rc1i"os
GI(
&#I
propietario
&#I
propietario
&rc1i"os
GI(
&tri0utos
GI(
)otor de
datos
RDB)(
&#I
propietario
&#I
propietario
(G!
E,OLUCIg$ GIS M D#TOS
Tercera "eneracin GIS
Los !atos espaciales est>n totalmente inte"ra!os a una *ase !e !atos
espacial' La arquitectura !e !atos es a*iertaM se pue!en utili6ar
!iferentes tipos !e pro!uctos GIS para accesar 0 manipular los !atos
espaciales' La inte"racin con los !atos ta*ulares/ re"las/ restricciones/
etc/ se .acen al ni&el !e la *ase !e !atos'
*odo
GI( RDB)(
(G!
POSTGIS
E;tensin al Post"reSQL/ permite que el ser&i!or !e D sea utili6a!o
como una D espacial *ac@en! para aplicaciones GIS'
Se inte"ra al mismo ni&el que to!os los tipos 0 funciones
e;istentes permitien!o una a!ministracin/ uso !e recursos/
procesamiento 0 almacenamiento altamente eficiente'
Utili6a 3n!ices espaciales GIST para acelerar el acceso 0
consulta !e !atos
Inclu0e funciones !e construccin/ e!icin 0 an>lisis !e
!atos espaciales
PostGIS es para Post"reSQL lo que Oracle Spatial es para Oracle'
Se pue!e almacenar Puntos/ multipuntos/ linea/ multilinea/
poli"onos/ multipoli"onos/ 0 colleccion !e "eometr3as me!iante las
especificaciones S5S +Simple 5eature Specification para SQL- !el
OGC'
#!icionalmente se tiene soporte DD 0 Raster
POSTGIS
Garanti6a transacciones #CID
Atomi)i"a" *Atomi)ity+' #se"ura que la transaccion se reali6o o no/ ante un fallo el
sistema no que!a a me!ias/ si una parte !e la transaccin falla to!a la transaccin
falla/ el esta!o !e la *ase !e !atos no se mo!ifica'
Con!i!ten)ia *Con!i!ten)y+' #se"ura que solo se empie6a lo que se pue!e
aca*ar/ e&itan!o e1ecutar aquellas operaciones que no &ana romper las re"las 0
!irectrices !e la inte"ri!a! !e la *ase !e !atos'
Ai!lamiento *I!olation+' #se"ura que ase"ura que una operacin no pue!e afectar
a otras/ !e ese mo!o la reali6acion !e !os transacciones so*re la misma
informacion sean in!epen!ientes 0 no "eneren nin"un tipo !e error'
%ura.ili"a" *%ura.ility+4 #se"ura que una &e6 que la transaccin se .a confirma!o
Se"uir> sien!o as3/ incluso en caso !e ca3!a !e ener"3a/ acci!entes o errores'
#lto ren!imiento
Recuperacin !e ca3!as
Copias !e se"uri!a!
Replicacin
Soporte SQL
Post"is
#rquitectura
Li*lB"eom
Pro1E
GEOS
PostGis
E;tension
POSTGRESQL
Li*Z(LI
GD#L
Post"is
#rquitectura
POSTGRESQL' (otor !e la *ase !e !atos
Post"is' E;tensin espacial/ funciones 0 tipos'
GEOS' Li*reria en CLL para la implementacion !e
los al"oritmos !e funciones espaciales 0 topolo"ia
PRO%E' Para la implementacion !e funciones !e
pro0ecciones espaciales'
LIZml' (ane1o !e formatos Z(L +G(L/ P(LT S,G/
etc/-
GD#L' Li*reria en CLL para el acceso 0
procesamiento !e Raster +en la &ersion I';-
Instalacin !e Post"is
Instalar Post"reSQL
Instalar Post"is
#M Usan!o el *%%licacion +!ac, B-il#er
M !es!e una !irectorio e1ecutan!o el instala!or
Se in!ica la cla&e !el superusuario para la instalacin en el ser&i!or
$o es necesario crear una *ase !e !atos pre&ia
CM !es!e un !irectorio e1ecutan!o un con1unto !e instrucciones'
Se pue!en instalar la &ersin 7'K'; 0 la &ersin I'Z +en *ases !e
!atos !istintas pero en un mismo ser&i!or' # partir !e post"re 8'I
solo esta !isponi*le la &ersin I'H 0 I'7
Tipo !e O*1etos Geo"r>ficos
+)P 0 )PT-
OGC !efine !os est>n!ares para e;presar o*1etos espaciales4
)PT )ellMPnoB Te;t
)P )ellMPnoB inar0
#m*os inclu0en informacin !el tipo !e o*1eto 0 el sistema !e
pro0eccin !e coor!ena!as !el mismo'
Estos o*1etos son4
POI$T
LI$ESTRI$G
POLQGO$
(ULTIPOI$T
(ULTILI$ESTRI$G
(ULTIPOLQGO$
GEO(ETRQCOLLECTIO$
Tipo !e O*1etos Geo"r>ficos
+)P 0 )PT-
Geometria
(patial
Reference
Id 6(RID8
#oint Cur"e (urface
Geometry
Collection
!ine(tring #olygon
)ultipoint )ulticur"e )ultisurface
)ultipolygon
Geometry
)ultilinestring
Tipo !e O*1etos Geo"r>ficos
+E)P 0 E)PT-
Las especificaciones !el OGC solo soportan "eometr3as ID/ 0 el
SRID no esta inclui!o !entro !e su formato !e sali!a' Post"is
e;tien!e el formato como un "rupo e;ten!i!o !e los o*1etos
"eo"r>ficos !el OGC/ esto po!r3a &ariar en el futuro/ especialmente
si OGC !efine formatos DD'
E)PT 0 E)P a"re"a coor!ena!as tipo D!m/ D!6/ E!/ a!emas !e
incluir la informacin !el SRID'
POI$T +H H H- J ZQc
SRIDFEDI9TPOI$T+MA7 M7I- JZQ con SRID
POI$T+H H H H- MMZQc(
POLQGO$+++H H H/ E E H/ H E H/ H H H-/+7 7 H/ I 7 H/ I I H/ 7 I H/ 7 7 H--/++M
7 M7 H/ M7 MI H/ MI MI H/ MI M7 H/ M7 M7 H--- MM ZQc
ORG#$Ic#CIO$ DE L#S 5U$CIO$ES
ESP#CI#LES
Las funciones espaciales se a"rupan en4
Con!tru)tore! "e geometr=a! +crear con coor!ena!as
o !es!e un )PT/ G(L/ P(L/ GEO%SO$-'
E"itore! +remo&er/ cam*iar &:rtices/ snap/ transformar/
afinar la coor!ena!a/ mo!ificar la "eometr3a/ etc-'
A))e!orio! +mane1o !e &:rtices/
!imensiones/"eometr3as/SRID/ ;/ 0/ etc'-'
Sali"a! +*inario/ G(L/ P(L/ S,G/ etc'-'
Rela)ione! e!a)iale! y "imen!ione! +centroi!e/
punto mas cercano/ >rea/ per3metro/ contener/ traslapar/
cru6ar/ etc-'
ORG#$Ic#CIO$ DE L#S 5U$CIO$ES
ESP#CI#LES
Rela)ione! e!a)iale! y "imen!ione! +centroi!e/ punto
mas cercano/ >rea/ per3metro/ contener/ traslapar/ cru6ar/
etc-'
Oera"ore! +i"ual/ a la i6quier!a/ seme1antes/ a la
!erec.a/ etc'-'
Pro)e!amiento "e geometr=a! +coleccionar/ e;plotar/
*uffer/ interseccin/ no!os/ poli"oni6ar/ remo&er puntos
repeti!os/ etc'-'
Re;eren)ian"o a la linea +interpolacin en una linea/
locali6ar/ cortar/ e;ten!er/ se"mento !e linea/ etc'-
Tran!a))ione! gran"e! +autori6acin/ &erificacin/
*loqueo/ etc'-'
Relaciones espaciales
SI las !os
"eometr3as
tienen las
mismas
coor!ena!as
que !efinen su
forma'
Relaciones espaciales
SI la
interseccin !e
las !os
"eometr3as no
resulta en nulo'
Relaciones espaciales
Es lo opuesto a
interseccion'
Relaciones espaciales
Si las !os
"eometr3as se
cru6an' Se aplican
a4
multipoin0/pol0"on/
multipoint/linestrin"
/
linestrin"/linestrin"/
linestrin"/poli"on 0
linestrin"/pol0"on'
Relaciones espaciales
Compara !os
"eometr3as !e
una misma
!imensin/ si se
traslapan o
superponen'
Relaciones espaciales
Compara !os
"eometr3as que
se tocan en sus
*or!es 0 no en su
interior'
Relaciones espaciales
Compara !os
"eometrias si la
primera es
conteni!a /
contiene a la
se"un!a'
Relaciones espaciales
Compara si la
se"un!a
"eometr3a esta
!entro !e una
!istancia !e la
primera'
5ormato !e la "eometr3a )PT +)ell @noB te;t- 0
)P +)ell @noB inar0-
asa!a en )PT se"2n las especificaciones !el OGC
POINT*;7 07+
LINESTRING*;7 07/ ;I 0I/ ;D 0D/ ''+
POL&GON*+;7 07/ ;I 0I/ ;D 0D/ ''-/+;7 07/ ;I 0I/ ;D 0D/ ''-+
M6LTIPOINT*;7 07/ ;I 0I/ ;D 0D/ ''+
M6LTILINESTRING*+;7 07/ ;I 0I/ ;D 0D/ ''-/+;7 07/ ;I 0I/ ;D
0D/ ''-+
LI$E'--I$.0.1 /1' .2 /2' .0 /0' ()' .1 /13 0depreciado3
M6LTIPOL&GON*++;7 07/ ;I 0I/ ;D 0D/ ''-/+;7 07/ ;I 0I/ ;D
0D/ ''--/++;7 07/ ;I 0I/ ;D 0D/ ''--+
GEOMETR&COLLECTION*POI$T+Z7 Q7-/LI$ESTRI$G++;7 07/
;I 0I/ ;D 0D/ ''-/ _+
5ormato !e la "eometr3a )PT 0 )P
E1emplo )PT4
POINT*H H+
LINESTRING*H H/7 7/7 I+
POL&GON*+H H/E H/E E/H E/H H-/+7 7/ I 7/ I I/ 7 I/7 7-+
M6LTIPOINT*H H/ 7 7I+
M6LTILINESTRING*+H H/7 7/7 I-/+I D/D I/K E-+
LI$E'--I$.0.1 /1' .2 /2' .0 /0' ()' .1 /13
M6LTIPOL&GON*++H H/E H/E E/H E/H H-/+7 7/I 7/I I/7 I/7 7--/**/B /BA/B /CA/C /CA/
C /BA/B /B--+
GEOMETR&COLLECTION*POI$T+I D-/LI$ESTRI$G+I D/D E-+
E1emplo )P4
DBDBDDDDDDDDDDDDDDDDDD5DE5DDDDDDDDDDDD5DE5
DBDEDDDDCDCEF5DDDDDBDDDDDDDGDDDDDDCAHBDIBJHB5CBDKB%FF%K%IE
BCIJJDKBAA%DBDFHAK5CBDKBJ5GFE%AGBIIJJDKBHFBGHCFHIC5CBDKBE
GJBECIHBIIJJDKBKAIAIE5JFH5CBDKBAFBHKBJFBCIJJDKBCAHBDIBJHB
5CBDKB%FF%K%IEBCIJJDKB
,#LIDEc DE LOS O%ETOS ESP#CI#LES
6LINESTRING Validos (a) y (c) Invlidos (b) y (d)
6MULTILINESTRING Vlidos (e) y (f) Invlidos (g)
6POLGON Vlidos (!) y (i)
6MULTIPOLGON Vlido (l) y (")
a
c d
b
e g f
0
i j
1
l m
POSTGIS M GEOGR#PNQ
# partir !e la &ersion 7'K se utili6a un tipo !e !atos
llama!o GEOGR#PNQ
Se usan para coor!ena!as en latitu! / lon"itu!'
Principalmente para co*erturas "ran!es/
El tipo Geo"rap.0 siempre tiene un SRID i"ual a EDI9
E;isten IH funciones espaciales orienta!as
especialmente para este tipo !e !atos'
Se pue!e con&ertir .acia o !es!e un tipo GEO(ETRQ
+!e*e estar !efini!o con SRID EDI9-'
To!o calculo !e !istancia se retorna en metros'
POSTGIS
E1emplo4
SELECT STODistance+
STOGeo"rap.05romTe;t+RPOI$T+M77C'EHA8 DD'8EDE-R-/ MM Los #n"eles +L#Z-
STOGeo"rap.05romTe;t+RPOI$T+I'KKK8 E8'HHCD-R- MM Paris +CDG-
-T
J Con&ertir a "eometria
SELECT co!/ STOZ+"eo"44"eometr0- #S lon"itu! 5RO( "psOposT
POSTGIS
To!as las operaciones en la *ase !e !atos/ se
pue!en reali6ar en mo!o coman!o +escri*ien!o
sentencias SQL- o usan!o PG#D(I$ III'
#!icionalmente la creacin !e una ta*la espacial se
pue!e reali6ar automaticamente !es!e GIS(#P/ #s3
mismo las sentencias en SQL pue!en ser reali6a!as
+SI retorna una "eometr3a 0 solo una/ el resulta!o
sera mapea!o-'
Post"reSQL M Post"is
Creacin !e Ta*la en una ase !e !atos espacial
F Crear la ta*la
F #si"nar una GEO(ETRI# Q REGISTR#RLO
F In!e;ar espacialmente +GIST-
F Se recomien!a usar una Lla&e +Primar0 Pe0-'
Ta*las (eta!atas
F SPATIAL(RE5(S&S
Descripcin !el sistema !e coor!ena!as espacial que se pue!en usar
I!entifica por un SRI%
Utili6a EPSG como est>n!ar !e referencias 0 co!ificacin !e las pro0ecciones
Te;to !e la pro0eccin es in!ica!o en formato !e te;to )PT +OGC- 0 formato PRO%'E
F GEOMETR&(COL6MNS *e! una -i!ta en la -er!i:n C4,+
Re"istra las ta*las espaciales 0 sus caracter3sticas
Se especifica el SRID !e la ta*la/ si el SRID es M7 o H usa un sistema !e coor!ena!as
espacial li*re para el almacenamiento !e !atos/ pero no permite a1ustes ni cam*ios o
correcciones por pro0eccin "eo"r>fica
Se especifica si la !ata ser> ID o DD
En el tipo !e !atos se pue!e especificar POI$T/ LI$ESTRI$G/ POLQGO$/
(ULTQPOI$T/ GEO(ETRQCOLLECTIO$/ o GEO(ETRQ si es tipo &aria*le
+recomen!a!o/ es el que usa Gis(ap-'
&
Post"reSQL M Post"is
Creaci9n de tabla espacial /version 1:&2
7 CREA&E &AB"E calles6
__gid serial NOT NULL;
calleOid intT$
calleOnom0re "arc1ar6+-:8$
CONSTRAINS calles_pkey PRIMARY KEY (__gid;
7 (E!EC* Add2eometr3Col#mn6 Npu0licN$ NcallesN$
NgeometriaN$!"#$%$ NGEO)E*RPN $ . 8 M
Constraint 6depreciado en la "ersin -.'8
F #ara coordenadas -D o .D;
CONSTRAINT e&'(rce_di)s_ge()e*ria C+ECK (s*_&di)s(ge()e*ria , ";
F #ara tipo de proyeccin geogrBfica;
CONSTRAINT e&'(rce_srid_ge()e*ria C+ECK (s*_srid(ge()e*ria , (!"#$%;
F Opci(&al para -& *ip( de ge()e*ria e& par*ic-lar.
CONSTRAINT e&'(rce_ge(*ype_li&e C+ECK
(ge()e*ry*ype(li&e,/LINESTRIN0/..*e1* (r li&e is NULL;
Post"reSQL M Post"is
Post"reSQL M Post"is
,istas
Geogra3y Column!' Es una &ista pareci!a a Geometr0 Columns/
con la !iferencia que se almacenan solamente las ta*las espaciales
con tipo Geo"rap.0 +latitu! lon"itu!-
Des!e la &ersion I'H se a!icionaron4
Tipos
Raster
5unciones para car"a/ sali!a 0 procesamiento !e ima"enes'
,istas
RasterOColumns
RasterOO&er&ieBs
Sc.eme
Topolo"0
Ta*la la0er
Ta*la topolo"0
Post"reSQL M Post"is
Creacin !e ta*la espacial M coor!ena!as cartesianas
+!efault con SRID F H o M7-
8-E'!E !'5LE %ar1-e2
%ar1-e"i# in!4'
%ar1-e"no$&re 3archar21284'
%ar1-e"fecha #a!e4;
7ELE8! 'dd.eometry8ol&mn0 '%-&lic'' '%ar1-e'' '5eo$e!ria'' 61'
'7E89E:R;' ' 2 4 ;
En la &ersion I'; se pue!e reali6ar !irectamente +!efault
con SRID F H o M7-4
8-E'!E !'5LE %ar1-e2
%ar1-e"i# in!4'
%ar1-e"no$&re 3archar21284'
%ar1-e"fecha #a!e4'
geometria geometry0.eometry3;
9o#ifican#o -na !a&la
'L!E- !'5LE !a&la '(( 8#L%9$ 5eo$e!ria geometry0<oint,=3;
'L!E- !'5LE !a&la '(( 8#L%9$ 5eo$e!ria geometry0.eometry,>13;
Post"reSQL M Post"is
Creacin !e ta*la espacial +con SRID F DIA7C-
8-E'!E !'5LE %ar1-e2
%ar1-e"i# in!4'
%ar1-e"no$&re 3archar21284'
%ar1-e"fecha #a!e4;
7ELE8! 'dd.eometry8ol&mn0 '%-&lic'' '%ar1-e'' '5eo$e!ria'' ?2@1A'
'7E89E:R;' ' 2 4 ;
En la &ersion I'; se pue!e reali6ar !irectamente +con
SRID FDIA7C-4
8-E'!E !'5LE %ar1-e2
%ar1-e"i# in!4'
%ar1-e"no$&re 3archar21284'
%ar1-e"fecha #a!e4'
"eometria "eometr0+Geometr0/?2@1A3;
9o#ifican#o -na !a&la
'L!E- !'5LE !a&la '(( 8#L%9$ 5eo$e!ria geometry0<oint,B?2C3;
'L!E- !'5LE !a&la '(( 8#L%9$ 5eo$e!ria geometry0.eometry,?2@1A3;
Post"reSQL M Post"is
Insertar Datos espaciales usan!o SQL
F <=+ER: <=:8 calle 2calle"i#' "eometria/ calle"no$&re 4 >*?@E+ 21'
7!_.eometryrom!e+t 0*LI$E7!-I$.01D12?2 2B?11A,1D11=A
2B?2B23*,?2@1A3'28 #e A-lio'4;
F <=+ER: <=:8 calle 2calle"i#' "eometria/ calle"no$&re 4 >*?@E+ 21'
.eomrom!e+t 0*LI$E7!-I$.01AD1B1 2BB1EA,1AD2CE
2BBA1@3* 3''9iraflore'4;
F <=+ER: <=:8 calle 2calle"i#' "eometria/ calle"no$&re 4 >*?@E+ 21'
.eomrom!e+t 0*LI$E7!-I$.01D2@A? 22A1?A,1D2C12 22DA1B3*,
?2@1A3''?arco'4;
F <=+ER: <=:8 calle 2calle"i#' "eometria/ calle"no$&re 4 >*?@E+ 21'
7!_.eometryrom!e+t 0*LI$E7!-I$.01ADB12 2E2B?1,1ADC?1
2ED1223*, ?2@1A3''Bar#o'4;
F <=+ER: <=:8 calle2calle"i#' "eometria/ calle"no$&re 4 >*?@E+ 21'
7!_.eomrom!e+t 0*LI$E7!-I$.01D=1?1 22B1BA,1D=A@1
22A1?B3*,?2@1A3''ECe$%lo'4;
Post"reSQL M Post"is
Consulta de datos espaciales
!a geometria se almacena en modo codificado$ una
consulta simple de la ta0la nos retorna la geometria
del modo;
(elect calleOid$ geometria from callesM
N+U4+.:4-44344+NMN4+4.4444-4CE9%44444+444444:%444444B2U9D2D2&3B&+-T+E%U
94-4%-39U34T+43C+D3CB&9B&+-T+UC%+3UTU-39U34T+3T.BD%T%&:B&+-T+-2UC:%3-
-39U34T+CU-4B4%-&&B&+-T+3DE9%BBU-39U34T+93U+T4EB&CB&+-T+3T4T93E+-39U3
4T+-4&39&C%&DB&+-T+.DD34&%U-39U34T+:.DEB:+4B-B&+-T+BB-EBU.C-99U34T+..
.N
(e utiliza la funcin ?stOaste't68@ para "isualizar las
geometrias en formato AQ*
(elect calleOid$stOaste't6geometria8 from callesM
N+U4+.:4-44344+NMN#O!PGO766.43:U9.9+-9T.+U2
:3-:U-:.T324.349$.43:U9.2T243+T42 :3-:U.4.+3:32T+2$.43:U:.49:
:3-:U.+.4:$.43:U:.9.9 :3-:U...3:9$....88N
!a consulta de datos se puede realizar usando
funciones geograficas de comparacion y anBlisis
entre los o05etos 6registros8 y su geometra.
Post"reSQL M Post"is
Consultas simples
SE"EC& +ostgis'f#ll'%ersion456
SE"EC& lis*a de c(l-)&as from *a2la 70ere c(&dici(&es
En la lis*a de las c(l-)&as se pueden incluir funciones de logicas entre
geometrias$ o funciones de proceso geografico =ue retornen nue"as
geometras o sus "alores especificados.
En las c(&dici(&es se pueden comparar las geometrias para o0tener
"alores "erdaderos o falsos.
E5emplo;
SELECT \ from lotesT
SELECT i!/ nom*re/ A!Te,t+"eometria- #S "eometria/ !t(area+"eometria-
5ROM man6anasT
Select \ from lotes B.ere co!i"oFRH77IH8HH7HHIRT
SE"EC& id$ nom0re$ As&ext6geometria8 &( geometria$
st'area6geometria8 !ROM gtest 70ere st'area6geometria8V-4444M
Post"reSQL M Post"is
Consultas simples
select manzana$ sum6stOarea6geometria8+44448 as
1a
from test.lotesOmiraf
group 0y manzana order 0y manzana
select manzana$ sum6stOarea6geometria8+44448 as
1a$ stOunion6geometria8 as geometria
from test.lotesOmiraf
group 0y manzana
select manzana$ sum6stOarea6geometria8+44448 as
1a$ stOunion6stOmaKe"alid6geometria88 as geometria
from test.lotesOmiraf
group 0y manzana
Post"reSQL M Post"is
Consultas Simples
MM crea una ta*la
CRE#TE T#LE tmp'"eometrias +nom*re &arc.ar/ "eometria "eometr0-T
MM inserta conteni!os !e !iferentes "eometrias
I$SERT I$TO tmp'"eometrias ,#LUES
+RPuntoR/ RPOI$T+H H-R-/
+RLineaR/ RLI$ESTRI$G+H H/ 7 7/ I 7/ I I-R-/
+RPoli"onoR/ RPOLQGO$++H H/ 7 H/ 7 7/ H 7/ H H--R-/
+RPoli"ono con .uecoR/ RPOLQGO$++H H/ 7H H/ 7H 7H/ H 7H/ H H-/+7 7/ 7 I/ I I/ I 7/ 7
7--R-/
+RColeccion !e "eometriasR/ RGEO(ETRQCOLLECTIO$+POI$T+I H-/POLQGO$++H
H/ 7 H/ 7 7/ H 7/ H H---R-T
MM consulta
SELECT nom*re/ STO#sTe;t+"eometria- 5RO( tmp'"eometrias
SELECT nom*re/ STOGeometr0T0pe+"eometria-/ STO$Dims+"eometria-/
STOSRID+"eometria- 5RO( tmp'"eometriasT
#ccesan!o componentes !e la
#ccesan!o componentes !e la
"eometria
"eometria
# Punto
STOZ+"eometr3a-
STOQ+"eometr3a-
STOc+"eometr3a-
STO(+"eometr3a-
Lineas
STO$umPoints+"eometr3a- M Retorna un n2mero
STO$Points+"eometr3a- J Retorna un n2mero
STOPoint$+"eometr3a/ posicin- J Retorna un punto
Post"reSQL M Post"is
Consultas Simples
Puntos
SELECT STO#sTe;t+"eometria- 5RO( tmp'"eometrias
)NERE nom*re F RPuntoRT
SELECT STOZ+"eometria-/ STOQ+"eometria- 5RO(
tmp'"eometrias )NERE nom*re F RPuntoRT
Lineas
SELECT STO#sTe;t+"eometria- 5RO( tmp'"eometrias
)NERE nom*re F RLineaRT
SELECT STOLen"t.+"eometria-/STOStartPoint+"eometria-/
STOEn!Point+"eometria-/ STO$Points+"eometria-
5RO( tmp'"eometrias )NERE nom*re F RLineaRT
#ccesan!o componentes !e la
#ccesan!o componentes !e la
"eometria
"eometria
# Poli"ono
STO$umInteriorRin"s+"eometr3a- M Retorna un n2mero
STO$Rin"s+"eometr3a- M Retorna un n2mero
STOE;teriorRin"+"eometr3a- M Retorna un linestrin"
STOInteriorRin"$+"eometr3a/ posicin- M Retorna un
linestrin"
(ultiM"eometria
STO$umGeometries+"eometr3a- M Retorna un n2mero
STOGeometr0$+"eometr3a/posicin- J Retorna una
"eometr3a simple
Post"reSQL M Post"is
Consultas Simples
Poli"onos
SELECT STO#sTe;t+"eometria- 5RO( tmp'"eometrias
)NERE nom*re LIPE RPoli"ono]RT
SELECT STOPerimeter+"eometria-/ STO#rea+"eometria-
/STOE;teriorRin"+"eometria-/ STOInteriorRin"$+"eometria/7-
5RO( tmp'"eometrias )NERE nom*re LIPE RPoli"ono]RT
Coleccion !e Geometrias
SELECT STO#sTe;t+"eometria- 5RO( tmp'"eometrias )NERE
nom*re F RColeccion !e "eometriasRT
SELECT STOLen"t.+"eometria-/ STO#rea+"eometria-
/STO$umGeometries+"eometria-/ STOGeometr0$+"eometria/7-
5RO( tmp'"eometrias )NERE nom*re F RColeccion !e "eometriasRT
Post"reSQL M Post"is
5unciones !e sali!a
co!ifica!o
SELECT enco!e+STO#sinar0+STOGeometr05romTe;t+RLI$ESTRI$G+H H H/7
H H/7 7 I-R--/R.e;R-T
)PT
SELECT STO#sTe;t+STOGeometr05romTe;t+RLI$ESTRI$G+H H/7 H/7 7 -R--T
SELECT STO#sTe;t+STOGeometr05romTe;t+RLI$ESTRI$G+H H H/7 H H/7 7
I-R--T
SELECT STO#sE)PT+STOGeometr05romTe;t+RLI$ESTRI$G+H H H/7 H H/7 7
I-R--T
SELECT STO#sE)PT+STOGeometr05romTe;t+RLI$ESTRI$G+H H H/7 H H/7 7
I-R/DIA7C--T
Geo%SO$
SELECT STO#sGeo%SO$+STOGeom5romTe;t+RPOI$T+7 7-R--T
SELECT STO#sTe;t+STOGeom5romGeo%SO$+RY?t0pe?4?Point?/?coor!inates?4
V7/7W[R--T
Post"reSQL M Post"is
5unciones !e sali!a
G(L
SELECT STO#sG(L+STOGeom5romTe;t+RPOI$T+7 7-R--T
SELECT
STO#sTe;t+STOGeom5romG(L+R`"ml4Point^`"ml4coor!inates^7/7`/"ml4coo
r!inates^`/"ml4Point^R--T
P(L
SELECT STO#sP(L+STOGeom5romTe;t+RPOI$T+MAI'99KDI
M7I'IDIEKI-R/EDI9--T
SELECT STO#sTe;t+STOGeom5romP(L+R`Point^`coor!inates^M
AI'99KD7888888888E/M7I'IDIEKI`/coor!inates^`/Point^R--T
SELECT STO#seB@t+STOGeom5romP(L+R`Point^`coor!inates^M
AI'99KD7888888888E/M7I'IDIEKI`/coor!inates^`/Point^R--T
s&"
SELECT STO#sS,G+STOGeom5romTe;t+RPOI$T+MAI'99KDI
M7I'IDIEKI-R/EDI9--T
Post"reSQL M Post"is
5unciones !e sali!a
Con&ertir un te;to a "eometr3a
#!icionalmente alas funciones in!ica!as/
Post"reSQL pue!e !efinir un mo!o !irecto !e
con&ersin me!iante la sinta;is !ata44nue&otipo
SELECT H'844te;tT
SELECT RPOI$T+7H 7H-R44"eometr0T
SELECT RSRIDFEDIETPOI$T+H H-R44"eometr0T
Post"reSQL M Post"is
Consultas comple1as
SELECT Sum+STO#rea+"eometria-- / 7HHHH as
.ectarea 5RO( test'lotesOmiraf )NERE
6onO&ecFR7DDRT
SELECT count+\- 5RO( test'lotesOmiraf l/
test'6onificOmiraf 6 )NERE 6onificaciFRRDR an!
stOcontains+l'"eometria/stOcentroi!+6'"eometria--
E1emplos
7H Lotes !e ma0or area en el !istrito
SELECT co!Ocatastral/ stOarea+"eometria-/7HHH #S
areaOmtI 5RO( lotes ORDER Q areaOmtI DESC LI(IT
7H
El perimetro !e los 7H lotes ma0ores
SELECT co!Ocatastral/ stOarea+"eometria-/7HHH #S
areaOmtI/ stOperimeter+"eometria- #S perimetro 5RO(
lotes ORDER Q areaOmtI DESC LI(IT 7H
El perimetro !el lote H988HH7
SELECT co!Ocatastral/ stOarea+"eometria-/7HHH #S
areaOmtI/ stOperimeter+"eometria- #S perimetro 5RO(
lotes )NERE co!OcatastralFRH988HH7R
E1emplo
El area total !e los lotes !el !istrito en .ectareas
SELECT sum+stOarea+"eometria--/7HHHH as .ectarea
5RO( lotes
El area !e to!os los lotes a 7HH metros !e una
coor!ena!a/ a"rupa!os por man6ana
SELECT man6ana/sum+stOarea+"eometria--/7HHHH as
.ectarea 5RO( lotes B.ere STOD)ITNI$+"eometria/
STOGEO(5RO(TEZT+RPOI$T
+IACCKC'7877A9HCKAD C9K87DD'87HC9D7HK-R-/7HH-
GROUP Q (#$c#$#
Post"reSQL M Post"is
-peradores espaciales
F 88 Indica c#ado dos geometras se trasla+an
F 9: Indican si dos geometras son id;nticas
F : Indica c#ando dos geometra son ig#ales
F Ejem<
SELECT I34NOM5RE FROM calles WHERE
0EOMETRY6,ST_GeomFromText(/LINESTRIN0(7$7"!"
"8!77%47$779% "8!"8"/49;
7 L(s (perad(res espaciales *ra2a:a& s(2re el 2(-&di&g 2(1 (ca:a
e&;(l;e&*e de -& (2:e*(4 ge&eradas p(r el i&de1ad( espacial 0is*<
Post"reSQL M Post"is
Post"reSQL M Post"is
El in!e;a!o espacial
$o se utili6a siempre !e forma autom>tica en una
comparacin u operacin espacial'
7
De*i!o a la naturale6a rectan"ular !e los 3n!ices RM
Tree +que es *ase !el Gist !el post"is-/ los 3n!ices
espaciales slo reali6an comparaciones !e ca1a
+*oun!in" *o;-' Por ello/ casi to!as las *ases !e
!atos espaciales implementan la seleccin espacial
en !os fases4
6 2sque!a in!e;a!a por ca1a/ so*re to!a la ta*la '
6 2sque!a espacial !e elemento a elemento/ tenien!o
en cuenta to!a su "eometr3a'
Post"reSQL M Post"is
Post"reSQL M Post"is
El in!e;a!o espacial
7 En Post"is la primera fase !e la *usque!a la reali6a el
opera!or ee' #l i"ual que el si"no F si"nifica i"ual a/ el
s3m*olo ee si"nifica traslapan las ca1as'
7 La "ran ma0or3a !e coman!os !e PostGIS utili6an por
!efecto el opera!or ee/ por e1emplo STOIntersects o
STOD)it.in'
7 E;iste para ca!a una !e estas funciones/ la misma &ersin
que no utili6a la in!e;acin espacial4 son las que empie6an
con O +OSTOIntersects +-/ etc'-' Por e1emplo/ la !efinicin !e
la funcin STOIntersects +- es realmente una funcin !e
SQL que reescrita la consulta en t:rminos !e una
operacin in!e;a!a +ee- 0 una funcin no in!e;a!a'
Post"reSQL M Post"is
Post"reSQL M Post"is
Prue*as con sentencias in!e;a!as 0 sin usar in!ice
Sin usar in!ices
7 e,lain analy!e select stOintersection+l'"eometria/r'"eometria- from lotes l/ retiros r
83ere (!t(inter!e)t!*l4geometriaAr4geometria+
7 e,lain analy!e !ele)t
!t(inter!e)tion*!t(ma2e-ali"*l4geometria+A!t(ma2e-ali"*r4geometria++ ;rom
te!t4lote!(mira; lA te!t4retiro!(mira; r 83ere
(!t(inter!e)t!*l4geometriaAr4geometria+
LTotal runtime0 BFEKE4BEH m!L
Usan!o in!ices con un opera!or espacial
7 e,lain analy!e select stOintersection+l'"eometria/r'"eometria- from lotes l/ retiros r
83ere l4geometria MM r4geometria an" (!t(inter!e)t!*l4geometriaAr4geometria+
?Total runtime4 9KEK'A87 ms?
(as eficiente
7 e,lain analy!e select stOintersection+l'"eometria/r'"eometria- from lotes l/ retiros r
83ere !t(inter!e)t!*l4geometriaAr4geometria+
LTotal runtime0 JGJB4BCJ m!L
SRID +Spatial Reference ID-
SRID +Spatial Reference ID-
Es un c!i"o que sir&e para especificar para la ta*la 0 ca!a
re"istro/ en que pro0ecciones "eo"r>fica se encuentran
almacena!as' La llista !e las pro0ecciones "eo"r>ficas est>n
!efini!as en la ta*la %a!ial"ref"/ /
Si no se especifica un +R<D/ se toma por !efault M7 o H' EL
SRID se in!ica al momento !e crear la "eometr3a 0 al re"istrar
la ta*la en 5eo$e!r/"col-$n' EC$E
O*tener un SRID con &alor H o M7
6 SELECT sri!+stO"eomfromte;t+RPOI$T
+ IACCKC'7877A9HCKAD C9K87DD'87HC9D7HK -R--
O*rtener un SRID con &alor DIA7C
6 SELECT sri!+stO"eomfromte;t+RPOI$T
+ IACCKC'7877A9HCKAD C9K87DD'87HC9D7HK -R/02F18--
SRID +Spatial Reference ID-
SRID +Spatial Reference ID-
El c!i"o M7 o H in!ica que son coor!ena!as planas
cartesianas sin nin"2n tipo !e correccin por pro0eccin
"eo"r>fica
En Gismap/ al crear una capa 0 "ra*arlo al post"is/ se
asume un sri! i"ual a M7 o H/ si no se .a asi"na!o el
c!i"o correspon!iente/ en caso contrario se "ra*ara con
el SRID !e la pro0eccin in!ica!a'
En Post"is es posi*le corre"ir una asi"nacin SRID
erra!a o asi"nar a una ta*la su correspon!iente SRID
Se pue!e usar STOTR#$S5OR( para cam*iar la
pro0eccin "eo"r>fica +siempre 0 cuan!o no sea M7 o H-
por e1emplo !e la!/lon +EDI9- a G584 -!$ 18 -r 202F184
E1emplo !e SRID
Se utili6an pro0ecciones "eo"raficas !escritas en
)PT +se"2n las especificaciones !e OGC- 0 el
formato por la li*rer3a PRO%'E que utili6a a!emas los
co!i"os EPSG para una serie !e pro0ecciones 0a
!escritas'
Consulta !el SRID !e una ta*la
SELECT SRID+"eometria- 5RO( lotes
Consulta !e la !escripcion !el SRID EDI9
SELECT pro1Ete;t 5RO( spatialOrefOs0s )NERE
sri!FEDI9
Consulta !e la !escripcion !el SRID DIA7C
SELECT \ 5RO( spatialOrefOs0s )NERE sri!FDIA7C
,isuali6acion !e las consultas
,isuali6acion !e las consultas
Para &isuali6ar los !atos espaciales/ se utili6a Gismap
profesional' Se pue!e reali6ar esto !e !iferentes mo!os4
Car"an!o la ta*la completa/ seleccionan!o como formato
POSTGIS
E1ecutan!o sentencias SQL/ En el men2 ca%a/ seleccionar
con-l!a B#e+H?
En el !ialo"o4
Seleccionan!o el tipo !e *ase !e !atos +post"rsql-
7 In!ican!o la cone;ion url4 1!*c4post"resql4//ip4KEDI/d1name
7 In!ican!o el usuario 0 la cla&e
7 Escri*ien!o la sentencia SQL/ pue!en retornar multiples
columasn/ pero !e*e .a*er solamente una "eometr3a/ si el
resulta!o !el SQL no tiene "eometr3a/ se asume en las
coor!ena!as 7/7 como referencia'
Post"is J Tipos !e !atos
Post"is J Tipos !e !atos
Tipos !e !atos
o;I!
Se usa para representarla ca1a que encierra a una "eometr3a o "rupo !e
"eometr3as
o;D!
I"ual que el anterior pero en D !imensiones'
Geometr0O!ump
Un tipo !e !ato espacial con !os campos4 5eo$ 0 %a!h/ usa!o "eneralmente
por la funcion +:"D-$%25eo$e!ria4 para "eometrias comple1as +multis/ tin/
compun!cur&e/ pol0.e!ral/ etc'-/ es mu0 usa!o en las funciones raster'
Geometr0
Un tipo !e !atos con coor!ena!as planas/ es el mas usa!o'
Geo"rap.0
Un tipo !e !atos con pro0eccin elipsoi!al/ usa!o "eneralmente con
coor!ena!as en pro0eccin Lat / Lon'
Post"is M 5unciones
Post"is M 5unciones
#!ministrati&as
#!!Geometr0Column
#"re"a una columna 5eo$e!ria una ta*la e;istente'
SELECT #!!Geometr0Column+ sc.ema/ ta*la/
columnaO"eo/ sri!/ t0pe/ !imension-T
SELECT #!!Geometr0Column+Rpu*licR/ RlotesR/
R"eometriaR/DIA7C/ RGEO(ETRQR/ I-T
En la &ersion I'; es equi&alente a usar4
#LTER T#LE sc.ema'ta*la #DD COLU($ "eometria
"eometr0+Point/EDI9-T
#LTER T#LE ta*la #DD COLU($ "eometria
"eometr0+Geometr0/DIA7C-T
Post"is M 5unciones
Post"is M 5unciones
#!ministrati&as
DropGeometr0Column
Remue&e una columna "eometria !e una ta*la espacial'
DropGeometr0Column+Rpu*licR/ RlotesR/
R"eometriaR-T
En la &ersion I'; es equi&alente a usar #LTER T#LE o
`!elete^ a la columna !es!e el !ialo"o !e
correspon!iente en p"a!min III/ en esta &ersion la
eliminacion !e la ta*la elimina tam*ien to!as sus
!epen!encias +estricciones/ re"istros/ etc'-
#LER T#LE sc.ema'ta*la DROP "eometriaT
Post"is M 5unciones
Post"is M 5unciones
#!ministrati&as
DropGeometr0Ta*le
Elimina una ta*la 0 sus referencias en la columna
"eometria'
DropGeometr0Ta*le+&arc.ar ta*leOname-T
DropGeometr0Ta*le+&arc.ar sc.emaOname/ &arc.ar
ta*leOname-T
DropGeometr0Ta*le+&arc.ar catalo"Oname/ &arc.ar
sc.emaOname/ &arc.ar ta*leOname-T
En la &ersion I'H es equi&alente a usar DROP T#LE
!irectamente/ o eliminar la ta*la con el PG#!min III'
Post"is M 5unciones
Post"is M 5unciones
#!ministrati&as
PostGISO5ullO,ersion
$os muestra la &ersin !el Post"is 0 sus li*rer3as
SELECT Post"isO5ullO,ersion+-T
PostGISOGEOSO,ersion
PostGISOLi*Z(LO,ersion
PostGISOLi*Ouil!ODate
PostGISOLi*O,ersion
PostGISOPRO%O,ersion
Post"isO,ersion
(uestra la &ersin !e Post"is 0 si usa las li*rer3as Geos/ Por1E
Post"is M 5unciones
Post"is M 5unciones
#!ministrati&as
PopulateOGeometr0OColumns
#se"ura que la columna "eometr3a esta correctamente !efini!a con
los constrains espaciales correspon!ientes 0 esta re"istra!o en la
ta*la 5eo$e!r/"col-$n'
E1m4
7 select PopulateOGeometr0OColumns+-
7 select PopulateOGeometr0OColumns+RlotesR44re"class-
Pro*eOGeometr0OColumns +!eprecia!o en la &ersion I'H-
Scans to!as las ta*las con PostGIS "eometr0 constraints 0 los a"re"a
a la ta*la 5eo$e!r/"col-$n si no est>n re"istra!os +las &istas !e*en
re"istrarse manualmente-'
Up!ateGeometr0SRID
#ctuali6a el SRID !e to!os los elementos en una columna "eometr3a/
actuali6an!o sus restricciones 0 referencias'
7 SELECT Up!ateGeometr0SRID+Rpu*licR/ RlotesR/
R"eometriaR/ DIA7C-T
Post"is M 5unciones
Post"is M 5unciones
Constructores
STO!Pol05romTe;t
Constru0e un o*1eto poli"ono !a!o una coleccin !e linestrin"s cerra!os
como (ultiLineStrin" representa!os en )PT'
STO!(Pol05romTe;t
Constru0e un multipoli"ono !a!o una coleccin !e linestrin"s cerra!os
como (ultiLineStrin" representa!os en )PT'
STOGeo"5romTe;t / STOGeo"rap.05romTe;t
Retorna un o*1eto Geo"rap.0 !a!a su "eometria en )PT'
STOGeo"5rom)P
Retorna un o*1eto Geo"rap.0 !a!a su "eometria en )PT
STOGeomColl5romTe;t
Retorna un o*1eto Geometr0 Collection !a!a su "eometr3a en )PT' Si
no se especifica el SRID/ su &alor por !efault es M7'
Post"is M 5unciones
Post"is M 5unciones
Constructores
STOGEO(5RO(E)P / STOGEO(5RO(E)PT
Retorna una "emetr3a !el formato e;ten!i!o !el )PT o )P
E1em4
SELECT STOGeom5romE)PT+RSRIDFEDI9TLI$ESTRI$G+MA7'79HIC7
EI'IKCAI8/MA7'79HCDA EI'IK877D/MA7'7977EE EI'IK8DI-R-T
SELECT STOGeom5romE)PT+RSRIDFEI98T(ULTILI$ESTRI$G++MA7'79HIC7
EI'IKCAI8/MA7'79HCDA EI'IK877D/MA7'7977EE EI'IK8DI--R-T
SELECT STOGeom5romE)PT+RSRIDFEI98TPOI$T+MA7'H9EKEE EI'ICACA-R-T
STOGeom5romTe;t /STOGeometr05romTe;t
Retorna un o*1eto Geometr0 !a!a su "eometria en )PT' Si no se especifica
el SRID/ su &alor por !efault es M7 o H
E1em4
SELECT STOGeom5romE)PT+RLI$ESTRI$G+MA7'79HIC7 EI'IKCAI8/M
A7'79HCDA EI'IK877D/MA7'7977EE EI'IK8DI-R/EDI9-T
SELECT STOGeom5romE)PT+R(ULTILI$ESTRI$G++MA7'79HIC7 EI'IKCAI8/M
A7'79HCDA EI'IK877D/MA7'7977EE EI'IK8DI--R-T
SELECT STOGeom5romE)PT+RPOI$T+MA7'H9EKEE EI'ICACA-R/EDI9-T
Post"is M 5unciones
Post"is M 5unciones
Constructores
STOGeom5romG(L / G(LToSQL
Retorna un o*1eto Geometr0 !a!a su "eometria en G(L'
STOGeom5romP(L
Retorna un o*1eto Geometr0 !a!a su "eometria en
P(L'STOGeom5romP(L
STOGeom5rom)P
Retorna un o*1eto Geometr0 !a!a su "eometria en )P'
Si no se especifica el SRID/ su &alor por !efault es M7 o H'
STOGeom5rom%SO$
Retorna un o*1eto Geometr0 !a!a su "eometr3a en
formato %SO$'
Post"is M 5unciones
Post"is M 5unciones
Constructores
STOLine5rom(ultiPoint
Crea un LineStrin" !e una "eometria (ultiPoint'
SELECT
STOLine5rom(ultiPoint+STOGeom5romE)PT+R(ULTIPOI$T
+7 I D/ E K 9/ A C 8-R--T
STOLine5romTe;t
Crea un o*1eto "eometr0 !e un te;to )PT/ SI no se especifica un
sri!/ tomara el &alor por !efault !e M7'
SELECT STOLine5romTe;t+RLI$ESTRI$G+7 I/ D E-R- #S
aline/ STOLine5romTe;t+RPOI$T+7 I-R- #S nullOreturnT
STOLine5rom)P
Crea un o*1eto linestrin" !e un )P
STOLinestrin"5rom)P
Crea un o*1eto "eometr0 !e un )P'
Post"is M 5unciones
Post"is M 5unciones
Constructores
STO(a@eo;ID
Crea un o*1eto OZID !efini!o por !os puntos !e los &ertices o puestos' E1m4
SELECT STO(a@eo;ID+STOPoint+M8C8KHI'7CAK/ KICED8'K9IK-/ STOPoint+M
8CA7I7'DAK /KI88DD'7CAK--
STODD(a@eo;
Crea un o*1eto OZDD/ !efini!o por los puntos !e los &ertices opuestos' E1m4
7 SELECT STO(a@eo;DD+STO(a@ePoint+M8C8KHI'7CAK/ KICED8'K9IK/ 7H-/
STO(a@ePoint+M8CA7I7'DAK /KI88DD'7CAK/ 7H-- #s a**D!
Post"is M 5unciones
Post"is M 5unciones
Constructores
ST(Ma2eLine
6 Crea un o*1eto Linestrin" !e una "eometria !e puntos'
7 ST(Ma2eLine+"eometr0 set pointfiel!-T
7 ST(Ma2eLine+"eometr0 point7/ "eometr0 pointI-T
7 ST(Ma2eLine+"eometr0VW pointOarra0-T
6 E1em4
7 M Lectura !e los re"istros !e una ta*la con !atos !el GPS
7 SELECT "ps'"psOmensa1e/ STO(a@eLine+"ps'"eometria ORDER Q
"psOfec.a- #s neB"eom 5RO( "psOpuntos as "ps
GROUP Q "ps'"psOmensa1eT
7 M !a!o !os puntos
7 SELECT STO#sTe;t+STO(a@eLine+STO(a@ePoint+7/I-/
STO(a@ePoint+D/E---T
7 M !a!o !os puntos con c
7 SELECT STO#sE)PT+STO(a@eLine+STO(a@ePoint+7/I/D-/
STO(a@ePoint+D/E/K---T
7 M !e un arre"lo !e puntos
7 SELECT STO#sE)PT+STO(a@eLine+#RR#QVSTO(a@ePoint+7/I/D-/
STO(a@ePoint+D/E/K-/ STO(a@ePoint+9/9/9-W--T
Post"is M 5unciones
Post"is M 5unciones
Constructores
STO(a@eEn&elope
Crea un o*1eto rectan"ular +poli"ono- forma!o con las coor!ena!as minimas 0
ma;imas 0 especifican!o su SRID'
E1em4 SELECT STO#sTe;t+STO(a@eEn&elope+MAI'IDID/ M7I'DI7I/ MAI'EKEKE/M
77'IDI7ED/ EDI9--T
STO(a@ePol0"on
Crea un o*1eto pol3"ono !a!o un linestrin" cerra!o
E1em4 SELECT STO(a@ePol0"on+STOGeom5romTe;t+RLI$ESTRI$G+AK'7K
I8'KD/AA I8/AA'9 I8'K/ AK'7K I8'KD-R--T
M si el linestrin" no es cerra!o se pue!e a"re"ar la coor!ena!a !e cierre
SELECT STO(a@ePol0"on+STO#!!Point+foo'openOline/
STOStartPoint+foo'openOline--- 5RO( + SELECT
STOGeom5romTe;t+RLI$ESTRI$G+AK'7K I8'KD/AA I8/AA'9 I8'K-R- #s openOline-
#s fooT
M crea un poli"ono con un .ueco
SELECT STO(a@ePol0"on+STOE;teriorRin"+STOuffer+foo'linea/7H--/
#RR#QVSTOtranslate+foo'linea/7/7-/
STOE;teriorRin"+STOuffer+STOma@ePoint+IH/IH-/7--W
- 5RO( +SELECT STOE;teriorRin"+STOuffer+STO(a@ePoint+7H/7H-/7H/7H--
as linea- as fooT
Post"is M 5unciones
Post"is M 5unciones
Constructores
STO(a@ePoint / STOPoint
Crea un o*1eto punto in!ican!o las coor!ena!as'
STO(Line5romTe;t
Crea un o*1eto (ultiLineStrin" !e un te;to )PT'
STOPoint5romTe;t
Crea un o*1eto punto in!ican!o la "eometria en )PT'
STOPoint5rom)P
Crea un o*1eto punto !e un )P/ in!ican!o su SRID correspon!iente
STOPol0"on
Crea un o*1eto pol0"on construi!o !e una "eometria linestrin" con
SRID especifica!o'
E1em4 SELECT STOPol0"on+STOGeom5romTe;t+RLI$ESTRI$G+AK'7K
I8'KD/AA I8/AA'9 I8'K/ AK'7K I8'KD-R-/ EDI9-T
Post"is M 5unciones
Post"is M 5unciones
Constructores
STOPol0"on5romTe;t
Crea un o*1eto pol0"on !e un )PT/ si no se especifica el
SRID/ se asume el &alor M7'
E1em4
SELECT STOPol0"on5romTe;t+RPOLQGO$++M
A7'7AA9KCKHKI87A EI'D8HI8H8AD8KA7/MA7'7AA9CIHI9CC99
EI'D8HDAH7AEDID8/ MA7'7AA9H9DH7IK8K EI'D8HDCIK99HAKE/M
A7'7AAKCI9KCDHC7 EI'D8HDHDD9KDKD7/MA7'7AA9KCKHKI87A
EI'D8HI8H8AD8KA7--R/EDI9-T
STO)PTToSQL
Es i"ual que stO"eomfromte;t'
Post"is M 5unciones
Post"is M 5unciones
#ccesorios'
7 Geometr0T0pe
6 (uestra el tipo !e "eometr3a como un te;to 4 RLI$ESTRI$GR/ RPOLQGO$R/ R(ULTIPOI$TR/
etc' Ini!ca cuan!o la "eometr3a tiene el !ato ( +( !imensional-
STOCoorDim
6 Retorna la !imension !e la "eometr3a'
STOoun!ar0
6 Retorna el *or!e +frontera- !e una "eometria'
7 SELECT STO#sTe;t+STOoun!ar0+STOGeom5romTe;t+RLI$ESTRI$G+7 7/H H/ M7 7-R---T
8 Retorna4 (ULTIPOI$T+7 7/M7 7-
7 SELECT STO#sTe;t+STOoun!ar0+STOGeom5romTe;t+RPOLQGO$++7 7/H H/ M7 7/ 7 7--R---T
8 Retorna4 LI$ESTRI$G+7 7/H H/M7 7/7 7-
7 SELECT STO#sE)PT+STOoun!ar0+STOGeom5romE)PT+RPOLQGO$++7 7 7/H H 7/ M7 7 7/ 7 7
7--R---T
8 Retorna4 LI$ESTRI$G+7 7 7/H H 7/M7 7 7/7 7 7-
ST(En"Point
6 Retorna el ultimo punto !e una "eometria tipo LI$ESTRI$G como un POI$T/ cualquier otro
retorna un &alor nulo'
STOEn&elope
6 Retorna la ca1a que cpntiene a la "eometr3a +oun!s-/ como un pol3"ono'
Post"is M 5unciones
Post"is M 5unciones
#ccesorios
STOE;teriorRin"
6 Retorna un linestrin" que representa el e;terior !e una "eometr3a POLQGO$' #
!iferencia !e STOOU$D#RQ este retorna $ULL si la "eometr3a no es un pol3"ono
STOGeometr0$
6 Retorna la RnR "eometr3a !e un GEO(ETRQCOLLECTIO$/ (ULTIPOI$T/
(ULTILI$ESTRI$G/ (ULTICUR,E o (ULTIPOLQGO$' En cualquier otro caso/ retorna
$ULL'
STOGeometr0T0pe
6 (uestra el tipo !e "eometr3a como un te;to RSTOLineStrin"R/ RSTOPol0"onR/ etc'
STOInteriorRin"$
6 Retorna el <n= linestrin" rin" !el interior !e una "eometr3a pol3"ono Retorna $ULL si la
"eometria no es un poli"ono o la posicion n esta fuera !e ran"o'
STOIsClose!
6 Retorna TRUE si el punto inicial 0 el punto final !e un LI$ESTRI$G coinci!en'
STOIsCollection
6 Retorna TRUE si la "eometr3a es (ULTI\ o un GEO(ETRQCOLLECTIO$4
Post"is M 5unciones
Post"is M 5unciones
#ccesorios
STOIsEmpt0
6 Retorna true si la "eometr3a esta &ac3a E1em4 SELECT
STOIsE(pt0+STOGeom5romTe;t+RGEO(ETRQCOLLECTIO$ E(PTQR--'
STOIsRin"
6 Retorna TRUE si el LI$ESTRI$G es cerra!o 0 simple'
STOIsSimple
6 Retorna +TRUE- si la "eometr3a no tiene anomal3a/ como coor!ena!as mas !a!as/
interseccin consi"o mismo/ etc'
STOIs,ali!
6 Retorna true si STOGeometr0 esta correctamente forma!a'
STOIs,ali!Reason
6 Retorna un te;to !escripti&o si una "eometr3a es &ali!a o no/ un par>metro opciones es
un 5L#G que pue!e ser 7 +Interseccin consi"o mismo forman!o .uecos-'
STOIs,ali!Detail
6 Retorna el !etalle +&ali!o/ ra6n/locali6acin- !e una "eometr3a no &ali!a'
ST(NPoint!
6 Retorna el n2mero !e puntos +&:rtices-en una "eometr3a
Post"is M 5unciones
Post"is M 5unciones
#ccesorios
7 STO$Rin"s
6 Si la "eometr3a es un pol0"on o multiMpol0"on/ retorna el numero !e linestrin"'
7 STO$umGeometries
6 Si la "eometr3a es un GEO(ETRQCOLLECTIO$ +o (ULTI\-/ retorna el numero !e
"eometrias/ en caso contrario retorna nulo'
7 STO$umPoints
6 Retorna el numero !e puntos en un STOLineStrin"'
7 STOPoint$
6 Retorna la posicion <$= !e un linestrin"' Retorna $ULL si la "eometr3a no es un
linestrin"'
7 STOSRID
6 Retorna el Spatial Reference IDentifier !e la "eometria/ se"2n las !efiniciones en
la ta*la spatialOrefOs0s ta*le'
Post"is M 5unciones
Post"is M 5unciones
#ccesorios
STOStartPoint
6 Retorna el primer punto !e una "eometr3a tipo LI$ESTRI$G como un POI$T'
STOZ
6 Retorna la coor!ena!a Z !e un punto/ o $ULL si no s posi*le' Se aplica so*re
"eoemtrias tipo POI$T'
STO(a;Z/ STO(inZ
6 Retorna el Z m>;imo/ Z m3nimo !e una ca1a +oun!in" o;-'
STOQ
6 Retorna la coor!ena!a Q !e un punto/ o $ULL si no esta !isponi*le' Se aplica
so*re "eometr3a tipo POI$T'
STO(a;Q/ STO(inQ
6 Retorna el Q m>;imo/ (inimi6o !e una ca1a +oun!in" o;-
STOc
6 Retorna la coor!ena!a c !e un punto/ o $ULL si no esta !isponi*le' Se aplica
so*re "eometr3a tipo POI$T'
STO(a;c/ STO(inc
6 Retorna el c ma;imo/ c minimo !e una ca1a +oun!in" o;-
Post"is M 5unciones
Post"is M 5unciones
E!itores
STO#!!Point
6 #"re"a un punto a un LineStrin"/ la posicin es opcional +inicia
en cero-'
UPD#TE man6anas SET "eometria F STO#!!Point+"eometria/ STOStartPoint+"eometria-- )NERE STOIsClose!+"eometria- F
falseT J a"re"a el &ertice final a las polilineas no cerra!as
SELECT STO#ste;t+STO#!!Point+STOGeom5romE)PT+RLI$ESTRI$G+H H/ 7 7-R-/ STO(a@ePoint+7/ I---T
SELECT STO#ste;t+STO#!!Point+STOGeom5romE)PT+RLI$ESTRI$G+H H/ 7 7-R-/ STOGeom5romTe;tt+RPOI$T+7 I-R-/7--T
SELECT STO#sE)PT+STO#!!Point+STOGeom5romE)PT+RLI$ESTRI$G+H H 7/ 7 7 7-R-/ STO(a@ePoint+7/ I/ D---T
STO#ffine
6 Se aplica para transformar la "eometr3a me!iante su traslacin/
rotacin 0 escala en un solo paso/ se aplica una matri6 !e
transformacin'
MMRota una linea +D!- en 7CH "ra!os en el e1e Z 0 c
SELECT STO#sE)PT+STO#ffine+t.eO"eom/ cos+pi+--/ Msin+pi+--/ H/ sin+pi+--/ cos+pi+--/ Msin+pi+--/ H/ sin+pi+--/ cos+pi+--/ H/ H/ H-- 5RO(
+SELECT STOGeom5romE)PT+RLI$ESTRI$G+7 I D/ 7 E D-R- #s t.eO"eom- #s fooT
Post"is M 5unciones
Post"is M 5unciones
E!itores
STOLine(er"e
6 Retorna un LineStrin" o (ultiLineStrin" forma!o por la union !e
"eometria (ULTILI$ESTRI$G' Si e;iste continui!a! en las
lineas/ se unen forman!o una sola linea'
SELECT STO#sTe;t+STOLine(er"e+STOGeom5romTe;t+R(ULTILI$ESTRI$G++MI8 MIA/MDH MI8'A/MD9 MD7/MEK MDD-/+MEK
MDD/ME9 MDI--R---T
STOCollectionE;tract
6 E;trae un (ULTI\ !e un GEO(ETRQ COLLECTIO$/ filtra!o por el
tipo especifica!o/ si no e;iste una "eometria E(PTQ es retorna!o'
Los tipos son 7 FF POI$T/ I FF LI$ESTRI$G/ D FF POLQGO$'
SELECT STO#sTe;t+STOCollectionE;tract+STOGeom5romTe;t+RGEO(ETRQCOLLECTIO$+GEO(ETRQCOLLECTIO$+POI$T+H
H---R-/7--T J retorna un (ULTIPOI$T
SELECT
STO#sTe;t+STOCollectionE;tract+STOGeom5romTe;t+RGEO(ETRQCOLLECTIO$+GEO(ETRQCOLLECTIO$+LI$ESTRI$
G+H H/ 7 7--/LI$ESTRI$G+I I/ D D--R-/I--T J retorna un (ULTILI$ESTRI$G
Post"is M 5unciones
Post"is M 5unciones
E!itores
ST(5ORCE(C%
5uer6a a la "eometr3a a con&ertirse en I !imensiones
eliminan!o c'
ST(5ORCE(E% ? ST(5ORCE(E%N
6 5uer6a a la "eometr3a a un mo!o Z Q c'
STO5ORCEODD( / STO5ORCEOE(
6 5uer6a a la "eometr3a a un mo!o Z Q c (
ST(5ORCE(COLLECTION
6 5uer6a a la "eometr3a a un GEO(ETRQCOLLECTIO$
ST(5ORCE(R1R
6 5uer6a a la orientacin !e los &:rtices a se"uir la re"la !e la <mano
!erec.a=
Post"is M 5unciones
Post"is M 5unciones
E!itores
STOCollectionNomo"eni6e
Retorna una representacin simple !el contrni!o !e un GEO(ETRQ
COLLECTTIO$'
E1m4
SELECT
STO#sTe;t+STOCollectionNomo"eni6e+RGEO(ETRQCOLLECTIO$+POI$T+H
H-R--T
J retorna 4 POI$T+H H-
SELECT
STO#sTe;t+STOCollectionNomo"eni6e+RGEO(ETRQCOLLECTIO$+POI$T+H
H-/POI$T+7 7-R--T
J retorna 4 (ULTIPOI$T+H H/7 7-
STO(ulti
Retorna la "eometria como un (ULTI\ "eometr0' Si la "eometria 0a es un
(ULTI\/ es retorna!o sin cam*ios'
E1m4
SELECT STO#ste;t+STO(ulti+STOGeom5romTe;t+RPOLQGO$ +7HH 7HH/ 7HH
IHH' IHH IHH/ IHH 7HH/ 7HH 7HH-R---T
J Retorna (ULTIPOLQGO$++7HH 7HH/ 7HH IHH' IHH IHH/ IHH 7HH/ 7HH 7HH--
Post"is M 5unciones
Post"is M 5unciones
E!itores
STO5orceOID/ STO5orceODD/ STO5orceODD(/STO5orceOED
5uer6a a con&ertir una "eometria a +Z Q-/ +Z Q c-/ +Z Q (-/ +Z Q c (-'
STORemo&eOPoint
Remue&e el punto in!ica!o por su posicin
UPD#TE ta*la SET "eometriaF STORemo&ePoint+"eometria/STO$Points+"eometria-M
7- 5RO( ta*la ).ere STOIsclose!+"eometria-T J remo&er el ultimo punto !e un
linestrin"'
ST(Re-er!e
In&ierte el or!en !e los &:rtices !e una "eometr3a
STORotate
Rota una "eometr3a en un an"ulo in!ica!o en ra!ianes/ opcionalmente se pue!e
in!icar un &alor ;/0 como punto !e rotacin/ o una "eometr3a !e tipo punto'
STORotateZ/ STORotateQ/ STORotatec
Rota una "eometr3a en ra!ianes en el e1e Z / Q o c'
STOScale
Cam*ia la proporcin !e una "eometr3a se"2n un factor in!ica!o en el e1e Z/ Q'
opcionalmente c'
Post"is M 5unciones
Post"is M 5unciones
E!itores
ST(Segmenti9e
6 Retorna una "eometria mo!ifica!a/ se"mentan!o +a"re"an!o
&ertices- !a!a una !istancia'
SELECT STO#sTe;t+STOSe"menti6e+STOGeom5romTe;t+R(ULTILI$ESTRI$G++MI8 MIA/MDH MI8'A/MD9 MD7/MEK MDD-/+MEK MDD/ME9
MDI--R-/K- -T J se"menti6a ca!a K metros'
STOSetPoint
6 Reempla6a el punto en la posicion $ !e un linestrin"' El in!ice
empie6a en cero'
SELECT STO#sTe;t+STOSetPoint+RLI$ESTRI$G+M7 I/M7 D-R/ D/ RPOI$T+M7 7-R--T J retorna LI$ESTRI$G+M7 7/M7 D-
ST(SetSRI%
6 #si"na el SRID !e una "eometr3a +a!iciona el meta!ata / no lo
transforma-'
SELECT STOSetSRID+STOPoint+MAA'HIIKHHCDDDDDD/ M7I'7D89CC-/EDI9- #s B"sCElon"OlatT
SELECT STOTransform+STOSetSRID+STOPoint+MAA'HIIKHHCDDDDDD/ M7I'7D89CC-/EDI9-/DA7C- #s utmT
Post"is M 5unciones
Post"is M 5unciones
E!itores
STOSnapToGri!
6 #1usta to!os los puntos !e una "eometr3a a una malla !efini!o por
un ori"en 0 un tamaGo !e cel!a/ Eliminarlos &:rtices repetiti&os que
caen en una misma cel!a/ retorna $ULL si los puntos no son
suficientes para !efinirlo' Se usa principalmente para re!ucir
precisin
UPD#TE m0ta*le SET t.eO"eom F STOSnapToGri!+t.eO"eom/ H'HH7-T J re!ucir a tres !ecimales
SELECT STO#sTe;t+STOSnapToGri!+STOGeom5romTe;t+RLI$ESTRI$G+7'777K9AC I'7ID/ E'777777 D'IDAEC8A/ E'7777I
D'IDAEC99A-R-/H'HH7--T J re!ucir a tres !ecimales
SELECT STOSnapToGri!+"eometria/ H'7/ H'7/ H'7/ H'H7- from man6anas J !a!a un ori"en ;/0 0 tamaGo !e la cel!a en am*os
e1es
ST(Tran!;orm
6 Transforma la "eometr3a !e un c!i"o SRID a otro'
SELECT stOtransform+"eometria/EDI9- from man6anasT J transforma las coor!ena!as a latlon'
STOTranslate/STOTransScale
6 Transla!a la "eometr3a usan!o uin !eltaZ 0 un !eltaQ 0/o usan!o
un factorZ 0 un factorQ'
Post"is M 5unciones
Post"is M 5unciones
E!itores
STOSnap
#1usta los se"mentos 0 &:rtices !e una "eometr3a a los &:rtices !e otra "eometr3a !e referencia'
Se in!ica la tolerancia +en uni!a!es !e las coor!ena!as-'
E1m4
SELECT STOS$#P+"eometria7/"eometriaOref/7'HH7-
Geometria7FSTOGeom5romTe;t+R(ULTIPOLQGO$ +++ I9 7IK/ ED 78K/ 7HD 78C/ 7I9 7IK/ I9 7IK -/ + K7 7KH/ 7H7 7KH/ 8A 7AE/ KK
7AK/ K7 7KH --/ ++ 7K7 7DD/ 77C 78C/ 799 7CI/ 7K7 7DD --- R-
GeometriaIFSTOGeom5romTe;t+RLI$ESTRI$G + 7K 7H9/ KE CE/ 9E 8E/ 7H7 7HH -R-
a-
MM "eometria7 a "eometriaI/ tolerancia 7'H7
SELECT STO#ste;t+STOSnap+poli"ono/linea/STODistance+poli"ono/linea-\7'H7-- as a1usta!o 5RO( +SELECT "eometria7 as
poli"ono/ "eometriaI as linea- as fooT
J "eometria7 a "eometriaI/ tolerancia 7'EK
SELECT STO#ste;t+STOSnap+poli"onolineaTODistance+poli"ono/linea-\7'EK-- as a1usta!o 5RO( +SELECT "eometria7 as poli"ono/
"eometriaI as linea- as fooT
J "eometriaI a "eometria7/ tolerancia 7'H7
SELECT STO#ste;t+STOSnap+linea/poli"ono/STODistance+poli"ono/linea-\7'H7-- as a1usta!o 5RO( +SELECT "eometria7 as
poli"ono/ "eometriaI as linea- as fooT
J "eometriaI a "eometria7/ tolerancia 7'IK
SELECT STO#ste;t+STOSnap+linea/poli"ono/STODistance+poli"ono/linea-\7'EK-- as a1usta!o 5RO( +SELECT "eometria7 as
poli"ono/ "eometriaI as linea- as fooT
Post"is M 5unciones
Post"is M 5unciones
Sali!as
7 STO#sinar0
6 Retorna en formato +)P- sin incluir el SRID'
7 STO#sE)PT
6 Retorna en formato +)PT- inclui!o el SRID'
7 STO#sGeo%SO$
6 Retorna en formato Geo%SO$' Or"ani6acin
estructura!a !e la "eometr3a'
7 STO#sG(L
6
Retorna en formato G(L' Usa!o por aplicaciones
que cumplen las especificaciones !el OGC'
Post"is M 5unciones
Post"is M 5unciones
Sali!as
7 STO#sP(L
6 Retorna en formato P(L' Default &ersinFI +7/I/D/E-/ !efault
precisinF7K'
7 STO#sP(L+"eometr3a-T
7 STO#sP(L+"eometr3a / precisin-T
7 STO#sP(L+&ersin/ "eometr3a -T
7 STO#sP(L+&ersin/ "eometr3a / precisin-T
7 STO#sS,G
6 Retorna en formato S,G'
7 STOGeoNas.
6 Retorna en formato GeoNas. +"eo.as.'or"-'
7 STO#sTe;t
6 Retorna en )ellMPnoBn Te;t +)PT- sin usar SRID'
STO#sLatLonTe;t
Retorna la coor!ena!a !e una "eometr3a tipo punto a mo!o te;to
!e "ra!os minutos 0 se"un!os +se pue!e especificar el formato !e
sali!a-'
Post"reSQL M Post"is
Post"reSQL M Post"is
-peradores y operadores logicos
F A88B $ A888B
6 (i la ca5a circunscrita de & se
traslapa a la de B en -D.D
F A8=B
Ca5a =ue circunscri0e a &
superpone o esta a la iz=uierda
de la de .
F A8=>B
6 Ca5a =ue circunscri0e a &
superpone o esta de0a5o de B
F A8?B
Ca5a =ue circunscri0e a &
superpone o esta a la derec1a
de B.
F A==B
Ca5a =ue circunscri0e a & esta
estrictamente a la iz=uierda de
la de B.
F A==>
6 Ca5a =ue circunscri0e a & esta
estrictamente de0a5o de B
-peradores y operadores logicos
F A:B
6 Ca5a =ue circunscri0e a & es
igual a B
F A??B
6 Ca5a =ue circunscri0e a & estB
estrictamente a la derec1a de B
F A@B
6 Ca5a =ue circunscri0e a & es
contenido por B
F A>8?B
6 Ca5a =ue circunscri0e a &
traslapa o esta encima de B
F A>??B
6 Ca5a =ue circunscri0e a & esta
estrictamente encima de B
F A9B
Ca5a circunscrita de & esta
contendida en la de B.
F A9:B
(i la ca5a circunscrita de & se
superpone a la de B.
Post"is M 5unciones
Post"is M 5unciones
Relaciones espaciales 0 !e me!icin
Las funciones que empie6an con STODD;;;; procesan las coor!ena!as consi!eran!o la altura
+STODDClosestPoint/ STODDDista*ec/ STODDD)it.in/ STODDD5ullB)it.in/ STODDIntersects/
STODDLon"estLine/ STODD(a;Distance/ STOS.ortestLine-'
7 ST(Area
6 Retorna el >rea !e la superficie si es un pol3"ono o multipoli"ono' Las
uni!a!es son!a!as por el SRID usa!o'
7 STO#6imut.
6 Retorna el >n"ulo/ en ra!ianes/ !el &ector !efini!o por un puto # al punto '
7 ST(Centroi"
6 Retorna el centro "eom:trico
7 ST(Clo!e!tPoint
6 Retorna el punto mas cercano entre !os "eometr3as
7 ST(Contain!
6 Retorna true si la "eometr3a !e esta !entro !e la "eometr3a !e #'
7 ST(Cro!!e!
6 Retorna true si las "eometr3as tienen al"unos puntos en com2n'
Post"is M 5unciones
Post"is M 5unciones
Relaciones espaciales 0 !e me!icin
7 STOLineCrossin"Direction J E&alua !os linestrin"s/ retornan!o un n2mero
entre MD 0 D que in!ica el tipo !e cruce que se tiene'
6 H4 LI$E $O CROSS
6 M74 LI$E CROSS LE5T
6 74 LI$E CROSS RIGNT
6 MI4 LI$E (ULTICROSS E$D LE5T
6 I4 LI$E (ULTICROSS E$D RIGNT
6 MD4 LI$E (ULTICROSS E$D S#(E 5IRST LE5T
6 D4 LI$E (ULTICROSS E$D S#(E 5IRST RIGNT
SELECT STOLineCrossin"Direction+test'linea7/ test'lineaI- #s l7OcrossOlI / STOLineCrossin"Direction+test'lineaI/ test'linea7-
#s lIOcrossOl7 5RO( + SELECT STOGeom5romTe;t+RLI$ESTRI$G+IK 798/C8 77E/EH AH/C9 ED-R- #s linea7/
STOGeom5romTe;t+RLI$ESTRI$G+7A7 7KE/IH 7EH/A7 AE/797 KD-R- #s lineaI - #s testT J cruce multiple
SELECT STOLineCrossin"Direction+test'linea7/ foo'lineaI- #s l7OcrossOlI / STOLineCrossin"Direction+test'lineaI/ foo'linea7-
#s lIOcrossOl7 5RO( + SELECT STOGeom5romTe;t+RLI$ESTRI$G+IK 798/C8 77E/EH AH/C9 ED-R- #s linea7/
STOGeom5romTe;t+RLI$ESTRI$G +IH 7EH/ A7 AE/ 797 KD-R- #s lineaI - #s testT J cruce simple
7 STODis1oint
6 Retorna TRUE si las "eometr3as no comparten un mismo
espacio'
Post"is M 5unciones
Post"is M 5unciones
Relaciones espaciales 0 !e me!icin
7 ST(%i!tan)e
6 Retorna la m3nima !istancia +*asa!a en el spatialOref- entre !os
"eometr3as en uni!a!es !e la pro0eccin'
SELECT STODistance+ STOGeom5romTe;t+RPOI$T + MAA'7HEAH7HDE87KEC M7I'HECHCK7IE9IK8A9 -R/EDI9-/
STOGeom5romTe;t+RPOI$T + MA9'C8DIC88DAI9I8I M7I'7KE8ACDA9IECHKA -R/ EDI9- -T MM !istancia en uni!a!es lat
lon
SELECT STODistance+ STOTransform+STOGeom5romTe;t+RPOI$T + MAA'7HEAH7HDE87KEC
M7I'HECHCK7IE9IK8A9 -R/EDI9-/DIA7C-/ STOTransform+STOGeom5romTe;t+RLI$ESTRI$G + MAA'788A7AIKCKA8KE
M7I'IDDD99A9HAAH87D/ MA9'8KAA8H8988E9D M7I'7C8HIH78A9K -R/ EDI9-/DIA7C- -T MM !istancia en (etros
7 ST(1au!"or;;%i!tan)e
6 Retorna cuantitati&amente/ cuan seme1antes son !os "eometr3as/
opcionalmente !e pue!e in!icar un factor densityfrac/ que in!ica la
!ensificacion +o fraccionamiento- !e se"mentos a comparar con la
uni!a! antes !el procesamiento +
.ttp4//en'Bi@ipe!ia'or"/Bi@i/Naus!orffO!istance- '
7 STO(a;Distance
6 Retorna la ma0or !istancia entre !os "eometr3as'
Post"is M 5unciones
Post"is M 5unciones
Relaciones espaciales 0 !e me!icin
7 ST(%5ully7it3in
6 Retorna TRUE si to!as las "eometr3as est>n completamente
!entro !e la !istancia especifica!a !e la otra
7 ST(%7it3in
6 Retorna TRUE si las "eometr3as est>n !entro !e la !istancia
especifica!a !e la otra'
7 STOEquals
6 Retorna TRUE si am*as "eometr3as son i"uales/ el or!en !e los
&:rtices 0 la !ireccin es i"nora!a'
7 ST(Inter!e)t!
6 Retorna TRUE si las "eometr3as se intersectan'
7 ST(Lengt3
6 Retorna la lon"itu! !e un LI$ESTRI$G o (ULTILI$ESTRI$G'
Las uni!a!es !e me!icin !epen!en !el SRID'
Post"is M 5unciones
Post"is M 5unciones
Relaciones espaciales 0 !e me!icin
7 ST(Longe!tLine
6 Retorna un LI$ESTRI$G que es la linea mas lar"a +ma0or
!istancia- entre !os "eometr3as' EL primer &:rtice correspon!e a la
primera "eometr3a' La lon"itu! !e la l3nea es la misma que nos
retorna stOma;!istance'
7 STOOr!erin"Equals
6 Retorna TRUE si las "eometr3as representa la misma forma 0 los
puntos en el mismo or!en'
7 ST(O-erla!
6 Retorna TRUE si am*as "eometr3as comparten el mismo espacio
pero no son completamente conteni!os el uno por el otro'
7 ST(Perimeter
6 Retorna el per3metro !e un Pol0"on o (ultipol0"on'
7 STOPointOnSurface
6 Retorna un POI$T con la "arant3a que esta !entro !e la "eometr3a'
Post"is M 5unciones
Post"is M 5unciones
Relaciones espaciales 0 !e me!icin
7 STORelate
6 Retorna TRUE si las "eometr3as tienen relaciones espaciales/ cumplen
las especificaciones SQL/(('
7 ST(S3orte!tLine
6 Retorna la linea mas corta entre !os "eometr3as'
SELECT STO#sTe;t+ STOS.ortestLine+RPOI$T+7HH 7HH-R44"eometr0/ RLI$ESTRI$G +IH CH/ 8C 78H/ 77H 7CH/ KH AK -R44"eometr0- - #s
slineT J entre un punto 0 una linea
SELECT STO#sTe;t+ STOS.ortestLine+STOGeom5romTe;t+RPOLQGO$++7AK 7KH/ IH EH/ KH 9H/ 7IK 7HH/ 7AK 7KH--R-/
STOuffer+STOGeom5romTe;t+RPOI$T+77H 7AH-R-/ IH- - - #s slineB@tT J entre un punto 0 un poli"ono
7 STOPro1ect
6 Retorna un punto pro0ecta!o !es!e un punto inicial/ !a!a la !istancia 0
el an"ulo +"ra!os !ecimales-
7 ST(Tou)3e!
6 Retorna TRUE si las "eometr3as tienen al menos un punto en com2n/
pero sus interiores no se intersectan'
7 STO)it.in
6 Retorna TRUE si la "eometr3a # esta completamente !entro !e
Post"is M 5unciones
Post"is M 5unciones
Procesamiento !e "eometr3as
7
ST(Bu;;er
6 Retorna una "eometr3a que representa el corre!or !a!a
una !istancia 0 otros atri*utos opcionales'
6 STOuffer+"eometr0 "7/ !istancia-T
6 STOuffer+"eometr0 "7/ !istancia/ cantOse"mOcua!ranteO!elOcirculo-T
6 STOuffer+"eometr0 "7/ !istancia/ estiloOenOte;tos-T
6 Rqua!Ose"sF hR 4 +!efaults to C-'
6 Ren!capFroun!XflatXsquareR 4 +!efaults ?roun!?-'
6 R1oinFroun!XmitreX*e&elR 4 +!efaults ?roun!?-'
6 RmitreOlimitF h'hR 4 ra!io limite !e mitre'
7 STOCollect
6 Retorna una "eometr3a +(ULTI\- !e una coleccin !e
otras "eometr3as'
SELECT STOCollect+#RR#Q+SELECT "eometria 5RO( man6anas--T
SELECT sector/ STOCollect+f'"eometria- as sin"le"eom 5RO( +SELECT sector/+STODump+"eometria--'"eom #s
"eometria 5RO( man6anas - #s f GROUP Q sector
Post"is M 5unciones
Post"is M 5unciones
Procesamiento !e "eometr3as
7 ST(Con)a-e1ull
6 Representa una "eometr3a +pol3"ono cnca&o- que encierra to!as las
"eom:tricas !entro !el "rupo in!ica!o' Opcionalmente se in!ica un factor !e
co*ertura 0 la consi!eracin !el procesamiento !e los .uecos'
7 ST(Con-e,1ull
6 Representa el m3nimo pol3"ono con&e;o que encierra a to!as las "eometr3as
!el "rupo'
7 STODifference
6 Retorna una "eometr3a que representa a la parte que no intersecta # con '
SELECT STO#sTe;t+STODifference+STOGeom5romTe;t+RLI$ESTRI$G+KH 7HH/ KH IHH-R-/ STOGeom5romTe;t+RLI$ESTRI$G+KH KH/ KH
7KH-R---T
7 STODump
6 E;tra las "eometrias tipo (ULTI\ a "eometrias simples
SELECT STODump+"eometria-/stOaste;t++STODump+"eometria--'"eom- #S "eom 5RO( +SELECT
STOGeom5romE)PT+RGEO(ETRQCOLLECTIO$+LI$ESTRI$G+H H/ 7 7-/LI$ESTRI$G+I I/ D D-/POI$T+H H--R- #S "eometria- #S *
STODumpPoint
Retorna un "rupo !e "eometrias contenie!o to!os los puntos !e la
"eometria in!ica!a'
Post"is M 5unciones
Post"is M 5unciones
Procesamiento !e "eometr3as
7 ST(Inter!e)tion
6 Retorna una "eometr3a que representa la interseccin entre !os
"eometr3as'
7
ST(Ma2eVali"
6 Intenta .acer &ali!a una "eometr3a con o sin per!i!a !e &:rtices'
7 STO(emUnion
6 Seme1ante a STOUnion/ +usa menos memroia 0 mas tiempo !e
procesa!or-'
7 STOPol0"oni6e
6 Crea un GEO(ETRQ COLLECTIO$/ contenien!o posi*les
pol3"onos forma!os por LI$ESTRI$G !e un "rupo !e "eometr3as'
SELECT STO#ste;t+STOPol0"oni6e+"eometria-- #s "eomet 5RO( +SELECT "eometria 5RO( ta*laOlineas ORDER Q OO"i!
LI(IT EK- #s testT
MM pol3"onos in!i&i!uales
SELECT STO#s)PT++STODump+testI'pol0coll--'"eom- #s "eomte;trep 5RO( +SELECT STOPol0"oni6e+"eometria- #s pol0coll
5RO( +SELECT "eometria 5RO( ta*laOlineas ORDER Q OO"i! LI(IT EK- #s test7- #s testIT
Post"is M 5unciones
Post"is M 5unciones
Procesamiento !e "eometr3as
STO$o!e
Define no!os !e un LineStrin" +con&irtien!olo en (ultiLineStrin"'
SELECT STO#sE)PT+STO$o!e+RLI$ESTRI$G+H H/ 7H 7H/ H 7H/ 7H H-R44"eometr0-- as
sali!a
STOOffsetCur&e
Retorna una linea paralela a un LineStrin"
ST(Remo-eReeatPoint!
Remue&e los puntos repeti!os !e una "eometr3a tipo +(ulti-LineStrin"/ (ulti+Pol0"ons- 0
(ultipoint
STOS.are!Pat.s
Retorna una "eometr3a que contiene los se"mentos comparti!os entre !os LineStrin"'
ST(SPLIT
Retornauna collecion !e "eometrias resultante !e ser corta!o por otra' Esta !isponi*le en la
&ersin I'H
E1em4
SELECT STOSplit+circulo/linea-
5RO( + SELECT STO(a@eLine+STO(a@ePoint+7H/7H-/STO(a@ePoint+78H/78H-- #S linea/
STO*uffer+STOGeom5romTe;t+RPOI$T+7HH 8H-R-/KH- #S circulo- #S fooT
SELECT STO#sTe;t++STODump+STOSplit+circulo/linea---'"eom- #S B@t
5RO( + SELECT STO(a@eLine+STO(a@ePoint+7H/7H-/STO(a@ePoint+78H/78H-- #S linea/
STO*uffer+STOGeom5romTe;t+RPOI$T+7HH 8H-R-/KH- #S circulo- #S fooT
Post"is M 5unciones
Post"is M 5unciones
Procesamiento !e "eometr3as
7 ST(Simli;y
6 Retorna una simplificacin !e una "eometr3a usan!o el al"oritmo
Dou"lasMPeuc@er
+.ttp4//en'Bi@ipe!ia'or"/Bi@i/Ramer]EI]CH]8DDou"las]EI]CH]8DPeuc@erOal"orit.m -'
SELECT STO$points+"eometria- #s numOpuntos/ STO$Points+STOSimplif0+"eometria/H'7-- #s npH7OpocaOrecuccion/
STO$Points+STOSimplif0+"eometria/H'K-- #s npHKOre"ularOre!uccion/ STO$Points+STOSimplif0+"eometria/7-- #s
np7OaltaOre!uccion/ STO$Points+STOSimplif0+"eometria/7H-- #s np7HOmu0OaltaOre!uccion/ +STOSimplif0+"eometria/7HH-
is null- #s np7HHOsinO"eometria 5RO ( +SELECT STOuffer+RPOI$T+7 D-R/ 7H/7I- #s "eometria- #s fooT
7 ST(Simli;yPre!er-eToology
6 Similar al anterior/ no crea "eometr3as no &ali!as'
7 STOS0mDifference
6 Retorna una "eometr3a que es las porciones !e las "eometr3as
!e # 0 que no se intersectan'
7 STOUnion
6 Retorna una "eometr3a que representa la unin !e un "rupo !e
"eometr3as
Post"is M 5unciones
Post"is M 5unciones
Referencian!o a la linea
7 ST(Line(Interolate(Point
6 Retorna un punto interpola!o a lo lar"o !e una linea' El se"un!o
ar"umento es un &alor !ecimal !e H a 7 0 representa la fraccin
!el total !e la lon"itu! !e la linea en el cual el punto sera
locali6a!o'
SELECT STO#sE)PT+STOLineOInterpolateOPoint+"eometria/ H'IH-- 5RO( +SELECT
STOGeom5rom)PT+RLI$ESTRI$G+IK KH/ 7HH 7IK/ 7KH 78H-R- as "eometria- #s testT
7 ST(Line(Lo)ate(Point
6 Retorna un &alor entre H 0 7 que representa la posicin mas
cercana a la linea !e un punto'
6 STOLineOLocateOPoint+"eometriaO!eOlinestrin"/ "eometria !eOpoint-T
7 ST(Line(Su.!tring
6 Retorna un se"mento !e linestrin" !a!o el inicio 0 final !el
mismo/ in!ica!o me!iante fracciones con &alores entre H 0 7'
6 STOLineOSu*strin"+linestrin"/ inicio/ final-T
Post"is M 5unciones
Post"is M 5unciones
Referencian!o a la linea
7 STO#!!(easure
6 Retorna una "eometr3a con elemento ( +measure- como resulta!o !e interpolar
entre el punto inicial 0 final'
6 Si la "eometr3a no tiene !imensin / es a"re"a!o'
6 Si la "eometr3a tiene !imensin es so*rescrito con el nue&o &alor'
6 Solo se aplica a LI$ESTRI$G o (ultiLineStrin"
6 STO#!!(easure+"eometria linea/ float inicio/ float final-T
E1em4
SELECT STO#ste;t+STO#!!(easure+
STOGeom5romTe;t+RLI$ESTRI$G+7 H/ I H/ E H-R-7/E-- as se"mentoT
SELECT STO#ste;t+STO#!!(easure+
STOGeom5romE)PT+RLI$ESTRI$G+7 H H/ I H 7K/ E H 7I-R-7H/EH-- as se"mentoT
SELECT STO#ste;t+STO#!!(easure+
STOGeom5romE)PT+RLI$ESTRI$G+7 H H K/ I H 7K I'D/ E H 7I 77'7-R-7H'E/EH'7--
as se"mentoT
SELECT STO#ste;t+STO#!!(easure+
STOGeom5romTe;t+RLI$ESTRI$G (+7 H H/ I H I'D'D/ E H 77'7-R-7H'E/EH'7-- as
se"mentoT
Post"reSQL M Post"is
Interseccin entre geometras y comparacion de contener a
otra geometria
(E!EC* codOcatastral$ geometria %RO) lotes AIERE geometria WW
stOGeometry%rom*e't6N#O!PGO7 66 -92+4T.4242UT::3T3
:3U2-U4.T+2+:3UT3$ -9:UT3.+2U.-2+9243 :3U2+--.+T:44.U-:$
-9:2:T.--+:+TT-.- :3U:24..+.T93424U$ -92+U9.:3T4-9-T.:
:3U24.2.-T9:U4.+$ -92+4T.4242UT::3T3 :3U2-U4.T+2+:3UT3 88N8 &7D
stOcontains6stOGeometry%rom*e't6N#O!PGO7 66 -92+4T.4242UT::3T3
:3U2-U4.T+2+:3UT3$ -9:UT3.+2U.-2+9243 :3U2+--.+T:44.U-:$
-9:2:T.--+:+TT-.- :3U:24..+.T93424U$ -92+U9.:3T4-9-T.:
:3U24.2.-T9:U4.+$ -92+4T.4242UT::3T3
ABCD.CE<F-D-ABCFB 55N8$geometria 8M
Consulta de datos dentro de un corredor o cercana
F SELECT = >ROM ;ias ?+ERE ST_3is*a&ce(0e()e*ry>r()Te1*(/POINT (
"#$798<9$9$@8%%A8A %A@$"@9<87$7%A@8A /4B74ge()e*riaC799;
F SELECT = >ROM ;ias ?+ERE s*_dDi*Ei&(0e()e*ry>r()Te1*(/POINT
( "#$798<9$9$@8%%A8A %A@$"@9<87$7%A@8A /4B74ge()e*ria4799;
E1emplos
Cuantos cole"ios est>n a KHHH metros !e un Casino conocien!o sus
coor!ena!as
SELECT "eometria/ cole"io 5ROM cole"ios 71ERE
ST(%i!tan)e+"eometria/ STOGeom5romTe;t+RPOI$T+ICECHA'EAKAADAAD
C9K8IH7'DAK9KECE-R/H-- ` KHHH
F Es una *2sque!a !irecta/ no se usan 3n!ices espaciales/ proceso lento para
"ran!es &ol2menes !e !atos
SELECT "eometria/ cole"io 5ROM cole"ios 71ERE 5eo$e!ria II
7!_E+pand27eo$e!r/fro$!e.!2'B8<=: 2 28480F)4FJFF0FF0
86JK201)0FJ6J484 4''04'J0004 AN% ST(%i!tan)e+"eometria/
STO"eomfromte;t+RPOI$T + ICECHA'EAKAADAAD C9K8IH7'DAK9KECE -R/H-- `
KHHH
F Uso !e in!e;a!o espacial para i!entificar >reas que restrin"en el uni&erso !e la
*2sque!a
SELECT "eometria/ cole"io 5ROM cole"ios 71ERE
ST(%7IT1IN*"eometria/ "eometr0fromte;t+RPOI$T + ICECHA'EAKAADAAD
C9K8IH7'DAK9KECE -R/H-/ KHHH-
7 Uso !e una funcin post"is que emplea el in!e;a!o espacial para i!entificar
>reas que restrin"en el uni&erso !e la *2sque!a
Post"reSQL M Post"is
Unin de tablas
!a unin 6<OI78 es necesario cuando se
necesita asociar datos ta0ulares a datos
geogrBficos.
El !E%* <OI7 es necesario si se desea retener
*ODO( los datos espaciales y agregarles datos
ta0ulares en los casos =ue se puedan.
(e puede relacionar directamente$ para
uniones genHricas8 en %RO) mediante una
lista$ indicando en el AIERE la condicin
Post"reSQL M Post"is
Unin de tablas
);em:
lote 6con la columna ?codigoX y geometra8
propietarios 6con la columna ?codigoX e informacion del
propietario del predio
SE"EC& p.codigo as codigo$ o.propietario as propietario$
p.geometria as geometria !ROM lote p "E!& GOIH
propietarios o OH o.codigo R p.codigoM
Otros
(E!EC* l.Y$ z.zona from lotes l$ zonificacion z E1ere
stOintersects6l.geometria$z.geometria8
(E!EC* d.codigo$
d.nom0re$d.deuda$stOcentroid6l.geometria8 as geometria
%RO) lotes.l$ rentas d AIERE l.codOcatastralRd.codigo
Post"reSQL M Post"is
Union Espacial
Permite com*inar informacin !e !iferentes ta*las
usan!o relaciones espaciales como elementos !e
unin Casi to!as las .erramientas !e an>lisis GIS
se e;presan en uniones espaciales'
E1m4
SELECT \
5RO( 6onas 6
%OI$ calles as c
O$ STOContains+6'"eometria/ c'"eometria-
)NERE 6'6ona F Rsector7RT
Post"reSQL M Post"is
Union 0 sumari6acion
La com*inacion !e %OI$ 0 GROUP Q ofrece posi*ili!a!es !e
analisis que tra!icionalmente solo se po!ian realiar en sis0emas
GIS'
E1em4
SELECT nom*re/ Sum+censo'po*Ototal- #S po*lacion/
Roun!+7HH'H \ Sum+censo'po*O.om*res- /
Sum+censo'po*Ototal-/7- #S porcO.om*res/ Roun!+7HH'H \
Sum+censo'po*Omu1er- / Sum+censo'p*Ototal-/7- #S porcOmu1er
5RO( 6onas #S 6onas
%OI$ censoOI$EI #S censo
O$ STOIntersects+6onas'"eometria/ censo'"eometria-
)NERE 6ona'tipo F RIIR
GROUP Q 6onas'nom*re
ORDER Q po*lacion DESCT
Post"reSQL M Post"is
Union 0 sumari6acion
%OI$ crea una ta*la &irtual que inclu0e columnas !e am*as ta*las
)NERE filtra la ta*la en una con!icion
GROUP Q 0 ORDER Q permite a"rupar 0 or!enar los resulta!os
E1emplo con relacion ala cercania a un punto4
SELECT
7HH'H \ Sum+po*O.om*res- / Sum+po*Ototal- #S porcO.om*res/
7HH'H \ Sum+po*Omu1eres- / Sum+po*Ototal- #S porcOmu1eres/
Sum+po*Ototal- #S po*Ototal
5RO( censoOinei #S censo
%OI$ comisarias #S com
O$ STOD)it.in+censo'"eometria/ com'"eometria/ IHH-
)NERE strpos+comisaria'tipo/R(#R- ^ HT
Post"reSQL M Post"is
Union a&an6a!o
SELECT
lineas'ruta/
Roun!+7HH'H \ Sum+po*O.om*res- / Sum+po*Ototal-/ 7- #S
porcO.om*res/
Roun!+7HH'H \ Sum+po*Omu1eres- / Sum+po*Ototal-/ 7- #S
porcOmu1eres/
Sum+po*Ototal- #S po*Ototal
5RO( censoOinei #S censo
%OI$ comisarias #S com
O$ STOD)it.in+censo'"eometria/ com'comisaria/ IHH-
%OI$ calles #S lineas
O$ strpos+com'ruta/ lineas'ruta- ^ H
)NERE lineas'rutaFRr7R
GROUP Q lineas'ruta
ORDER Q lineas'ruta DESCT
Post"reSQL M Post"is
Traslape de tablas
&lgunos casos se re=uiere el resultado de traslapar
o de intersectar elementos dos ta0las espaciales$
manteniendo los datos indicados.
E5em.
Lna ta0la de zonificaciones o sectorizacion para
encuestas y otra ta0la de manzanas$ !as zonificaciones
son poligonos =ue contienen "arias manzanas.
CREA&E &AB"E resultados AS
SE"EC& S&'Intersection6f.geometria$
c.geometria8 &( geometria$ f.codOcatastral$
c.zona
!ROM lotes f$ zonas c
IJERE f.geometria WW c.geometria &7D
S&'Intersects6f.geometria$ c.geometria8
POSTGIS J ,ali!ar "eometr3as
OGC !escri*e que se !e*e .acer cuan!o una
"eometr3a !e un elemento +feature- no es &ali!a' Los
puntos 0 lineas son "eneralmente &ali!os +las lineas
pue!en ser cerra!as o no/ simples o no/ pero aun
una linea comple1a es &ali!a-' Pero los pol3"onos
!e*en ser construi!os en una forma en particular
Los pol3"onos son simples linestrin"s cerra!as'
El anillo o linestrin" cerra!a/ que !efine un .ueco/
!e*e estar !entro !e los anillos que !efinen el
e;terior'
Los anillos no !e*en cru6arse
Los anillos no !e*en tocar otro anillo a menos que
sea en un solo punto'
POSTGIS J ,ali!ar "eometr3as
Por E1emplo4
E pol3"onos en forma trian"ular que se
tocan por un &:rtice no son &ali!os a
menos que se !escri*an me!iante un
multipoli"ono
Es importante la &ali!acin !e los
elementos/ por cuanto permiten tener una
cali!a! !e !atos/ relaciones espaciales 0
topol"icas/ 0 principalmente por la
!efinicin !e su "eometr3a
Un pol3"ono cru6a!o +"eometr3a
incorrectamente !efini!a- !ar> como
resulta!o !el calculo !el >rea +STO#rea-
F H +cero-
POSTGIS J ,ali!ar Geometr3as
Una forma !e &erificar la "eometr3a es usar ST(I!Vali"*+ que nos retorna
el &alor TRUE o 5#LSE como resulta!o'
SELECT STOIs,ali!+"eometria- from ta*la T
ST(I!Vali"Rea!on nos retorna la !escripcin o moti&o por el cual no es
&ali!o' El numero al final son las coor!ena!as !e lo que no es &ali!o' SI
tiene muc.os puntos !e errores/ solo la primera se muestra'
SELECT STOIs,ali!Reason+"eometria- from ta*laT
Des!e la &ersin I'H se pue!e usar ST(I!Vali"%etail que nos muestra en
un solo atri*uto 4 si es &ali!o/ el moti&o/ su locali6acin/ &ali!+''- que
retorna TRUE o 5#LSE/ reason+'''- que retorna la !escripcin 0
principalmente location+''- que retorna la "eometr3a !e la locali6acin !el
error'
SELECT location+STOIs,ali!Detail+"eometria-- from ta*laT
Des!e la &ersin I'H se pue!e corre"ir usan!o la funcin ST(Ma2eVali"4
SELECT STO(a@e,ali!+"eometria- from ta*laT
E1emplo
SELECCIONAR TO%OS LOS LOTES A GD METROS %E LA AVENI%A ARE@6IPA
lotes
!istancia
#,' #requipa
Ca!a
Geometria
!e ca!a lote
una
Geometria
!e to!as
Las calles
Lista !e
lotes
E1emplo
SELECCIONAR TO%OS LOS LOTES A GD METROS %E LA AVENI%A ARE@6IPA
Seleccionar los e1es correspon!ientes a la a&eni!a arequipa
!e la ta*la e1esO&iales
select ST(A!te,t*geometria+ from &ias B.ere toonimia li2e
OPARE@6IPAPO
#"rupar en una sola "eometria +para poser comparar- to!os
los e1es
select aste;t+STOUnion+"eometria-- from 2elec! geometria fro$
3ia Ghere !o%oni$ia li,e 'L*REH@<B*L'4 a 5eo$e!ria;
E1emplo
SELECCIONAR TO%OS LOS LOTES A GD METROS %E LA AVENI%A ARE@6IPA
Comparar las !istancias !e ca!a lote a la "eometria anterior
F select \ from lotes B.ere
#i!ance25eo$e!ria'+:"5eo$fro$!e.!22elec!
a!e.!2+:"@nion25eo$e!ria44 fro$ 2elec! 5eo$e!ria fro$ 3ia
Ghere !o%oni$ia li,e 'L*REH@<B*L'4 a 5eo$e!ria4'6144 <=J0
Seleccionar por area
F select co!Ocatastral/ ST(Area*geometria+ from lotes B.ere
STO!istance+"eometria/STO"eomfromte;t++select
STOaste;t+STOUnion+"eometria-- from +select "eometria from
&ias B.ere toponimia li@e R]#REQUIP#]R- as "eometria-/M7--
`FKH an" ST(area*geometria+QCDDD
Comparar las !istancias !e ca!a lote a la "eometria
anterior
select \ from lotes B.ere
#i!ance25eo$e!ria'+:"5eo$fro$!e.!22elec!
a!e.!2+:"@nion25eo$e!ria44 fro$ 2elec! 5eo$e!ria fro$
3ia Ghere !o%oni$ia li,e 'L*REH@<B*L'4 a 5eo$e!ria4'6
144 <=J0
Seleccionar por area
select co!Ocatastral/ ST(Area*geometria+ from lotes
B.ere STO!istance+"eometria/STO"eomfromte;t++select
STOaste;t+STOUnion+"eometria-- from +select "eometria
from &ias B.ere toponimia li@e R]#REQUIP#]R- as
"eometria-/M7-- `FKH an" ST(area*geometria+QCDDD
E%E(PLO
Otra forma !e seleccionar Lotes cercanos a la &3a
in!ica!a +con lotes !uplica!as-
SELECT *'"eometria/ co!Ocatastral/ area+*'"eometria-
5RO( &ias n/ lotes *
)NERE toponimia li@e R]#REQUIP#]R an!
STOD)it.in+*'"eometria/ n'"eometria/KH- an!
stOarea+*'"eometria-^IHHH
Otra forma !e seleccionar Lotes cercano a a la &3a
in!ica!a +Sin lotes !uplica!os-
SELECT DISTI$CT co!Ocatastral/ *'"eometria/
area+*'"eometria- 5RO( &ias n/ lotes *
)NERE toponimia li@e R]#REQUIP#]R an!
STOD)it.in+*'"eometria/ n'"eometria/KH- an!
STO#rea+*'"eometria-^IHHH
E%E(PLO
Seleccionar lotes cerca !e un parque usan!o
stO!Bit.in
SELECT *'"eometria 5RO( parques n/ lotes * )NERE
STOD)it.in+*'"eometria/ n'"eometria/7HH-
)liminar lotes con "eometrias !uplica!as
select !istinct "eometria from lotes MM o*tenien!o solo la columna
"eometria
select !istinct on +"eometria- \ from lotes MM con to!o sus !atos
Post"reSQL M Post"is
Se pue!en crear muc.as nue&as funciones/ e;tensiones/ !ispara!ores
+tri""ers-/ re"las/ restricciones/ replica/ etc/ etc' Es necesario conocer lo
*>sico !e SQL 0 las funciones principales !e POSTGIS como STODBit.in/
STOIntersects/ etc'
Se po!r> !esarrollar mo!os !e tra*a1o *astante mas ela*ora!as 0
sofistica!as que se pue!en reali6ar simplemente con el uso !e SQL / como
complemento o apo0o a consultas !irectas o consultas reali6a!as +con su
correspon!iente &isuali6acin- !es!e un pro!ucto SIG como Gis(ap'
Usan!o GIS(#P/ po!emos f>cilmente ela*orar 0 !escri*ir el formato )PT
las coor!ena!as !e un o*1eto/ posi*ilitan!o un posi*le mo!o !e in"reso !e
coor!ena!as como las que se re"istren con un GPS'
Sentencias SQL como SELECT ''STOGeom5romTe;t+RPOI$T R XX Z XX R R XX Q
R-R- es las mas utili6a!a porque retorna las "eometr3as se"2n su conteni!o/
sin em*ar"o es posi*le utili6ar otras funciones como mo!o !e construccin
especifico como4
SELECT STO(a@ePoint+; / 0 / V6W/ VmW-
SELECT STO(a@eLine+STO(a@ePoint+;/0-/STO(a@ePoint+;/0--
Post"reSQL M Post"is
Post"reSQL M Post"is
Conectores para acceso desde las aplicaciones e5ternas
F ODBC
Creacin de un ODBC
F 7om0re
F I# de localizacion o ?local1ost@
F #uerto$ por omisin UT.-
F Base de datos
F Lsuario
F Cla"e
7 <DBC
F
Conector; org.postgres=l.Dri"er
5d0c;postgres=l;local1ost;UT.-catastro
F I# de localizacion o ?local1ost@
F #uerto$ por omisin UT.-
F Base de datos
F Lsuario
F Cla"e
Conecciones con %DC
Conecciones con %DC
. un -,!C
F sun.5d0c.od0c.<d0cOd0cDri"er
F 5d0c;od0c;D(7
. %-SG<)S'*
F org.postgres=l.Dri"er
F 5d0c;postgres=l;local1ost;UT.-0asedatos
. .S=00
F com.i0m.asT44.access.&(T44<DBCDri"er
F 5d0c;asT44;+9-.+3:.-U.3
Post"reSQL M Post"is
Post"reSQL M Post"is
Cone5i9n mediante -,!C o >,!C desde
F E'cell
F &ccess
F Reporteadores
Crystal Report
#enta1o
IReport
F Otros sistemas
Di"ersos programas
&plicaciones desarrolladas en <a"a$ CJJ$ .7et$
#I#$ etc.
Post"reSQL M Post"is
Post"reSQL M Post"is
E<emlo "e ):"igo en <a-a u!an"o "ire)tamente la
li.rer=a "e o!tgi!,,,4<ar0
import 1a&a'sql'\T
import 1a&a'util'\T
import 1a&a'lan"'\T
imort org4o!tgi!4R#
pu*lic class %a&aGIS Y
pu*lic static &oi! main+Strin"VW ar"s- Y
1a&a'sql'Connection connT
Post"reSQL M Post"is
Post"reSQL M Post"is
tr0 Y
/\Car"a el !ri&er %DC 0 esta*lece la cone;ion \/
Cla!!4;orName*Lorg4o!tgre!'l4%ri-erL+#
Strin" url F L<".)0o!tgre!'l0??lo)al3o!t0GKEC?"ata.a!eL#
conn F Dri&er(ana"er'"etConnection+url/ ?post"res?/ ??-T
/\ #"re"a el tipo "eometria' Primero se !e*e !e .acerla cone;in antes
!e .acerlo \/
**org4o!tgre!'l4PGConne)tion+)onn+4a""%ataTye*LgeometryLACla!
!4;orName*Lorg4o!tgi!4PGgeometryL++#
**org4o!tgre!'l4PGConne)tion+)onn+4a""%ataTye*L.o,E"LACla!!4;o
rName*Lorg4o!tgi!4PG.o,E"L++#
Post"reSQL M Post"is
Post"reSQL M Post"is
/\ Crea un statement 0 e1ecuta la consulta \/
Statement s F conn'createStatement+-T
ResultSet r F s'e;ecuteQuer0+?select "eometria/ OO"i! from
"eomta*la?-T
B.ile+ r'ne;t+- - Y
/\ Recupera la "eometria como un o*1eto \/
PGgeometry geom S *PGgeometry+r4getO.<e)t*B+#
int i! F r'"etInt+I-T
S0stem'out'println+?RoB ? L i! L ?4?-T
Post"reSQL M Post"is
Post"reSQL M Post"is
/\ imprime la "eometria \/
S0stem'out'println+geom4toString*+-T
[
s'close+-T
conn'close+-T
[
catc.+ E;ception e - Y
e'printStac@Trace+-T [
[
[
Post"reSQL M Post"is
Post"reSQL M Post"is
PGGEO(ETRQ es un o*1eto que contiene una !efinicin !e la
topolo"ia/ !epen!ien!o !el tipo +POI$T/ LI$ESTRI$G/ POLQGO$/
etc'-/ E1m +parte !el c!i"o-4
PGgeometry geom S *PGgeometry+r4getO.<e)t*B+#
if+ geom4getTye*+ SS Geometry4POL&GON - Y
Polygon l S *Polygon+geom4getGeometry*+#
for+ int r F HT r ` l4numRing!*+T rLL- Y
LinearRing rng S l4getRing*r+#
S0stem'out'println+?Rin"4 ? L r-T
for+ int p F HT p ` rng4numPoint!*+T pLL - Y
Point t S rng4getPoint*+#
S0stem'out'println+?Point4 ? L p-T
S0stem'out'println+t4toString*+-T [ [ [
POSTGIS M Recomen!aciones
Utili6ar el in!ice espacial +GIST- para consulta eficiente !e "ran!es &ol2menes !e
!atos +"eneralmente usa!os con STOD)it.in/ STOContains/
STOIntersects/STO)it.in 0 los opera!ores lo"icos'
Re&isar con el #!ministra!or/ la optimi6acin !e la memoria/ Por e1emplo para
mane1ar in!ices !e !atos !e 7HH( se recomien!a tener como m3nimo el para
metro )ORPO(E( F DG' Los procesos !e mantenimiento como ,#CUU(
requiere un incremento !e (#I$TE$E$CEO)ORPO(E('
SET Bor@O(E( TO IGT
SET maintenenceOBor@Omem TO 7GT
SET clientOminOmessa"e TO DEIGT
SI la *ase !e !atos es ma0or que la memoria principal/ se !e*e consi!erar que se
!e*e .acer crecer mas el ser&i!or
Procesos !e entra!a / sali!a son el <"ran cuello !e *otella= ' Consi!erar un arre"lo
R#ID 7H
Consi!erar un *uen arc.i&o !el sistema
uena memoria
#!ecua!o CPU+s-
POSTGIS I'H
Post"is I';
Post"is I'; trae un "rupo !e cam*ios fuertes a las
funcionali!a!es so*re post"is 7';
EL pro*lema es que no es compati*le con la &ersin 7'K
Na0 que mi"rar los !atos
Una opcin es usar Gismap para "ra*ar a I'H
La principal ra6n es que Post"is I'; incorpora una nue&a
seriali6acion para el almacenamiento !e las "eometr3as en !isco'
(e1ora la seriali6acion !e la &ersin 7'; para el soporte !e nue&os
tipos !e "eometr3as +cur&epol0"on/ multicur&e/ multisurface/
trian"le/ tin// pol0.e!ral surface/ etc'-
Soporte para "eometr3as D! 0 E! +calculo en I! 0 D! !e4 las
!istancia entre "eometr3as/ puntos mas cercanos/ per3metros/
interseccin/ contener/ etc'-/ .a*ilita!o para consultas SQL
usan!o compara!ores en DD
POSTGIS I'H
Soporte !e nue&os tipos DD4
TRI#$GLE
TI$
POLQNEDR#LSUR5#CE' Crear superficies en D! +*loques/ formas "eom:tricas
comple1as/ etc'-
Soporte !e formatos DD
STO#sZDD+"eometria-
STO#sG(L+D/''''-
STO#ste;t+"eometria-
STO#sinar0+"eometria-
#l"unos &isores DD usan!o formato ZDD
5ree)rl4 .ttp4//freeBrl'sourcefor"e'net
InstantRealit04 .ttp4//BBB'instantrealit0'or"/e;amples
ZDDom4 .ttp4//BBB';D!om'or"
,i&at0 Stu!io +fue compra!o por microsoft-'
Otros4 .ttp4//BBB'Be*D!'or"/;D!/&rml/tools/&ieBersOan!O*roBsers
POSTGIS I'H
La !efinicin !e la columna GEO(ETRQ !e la &ersion 7';4
calleOi! inte"er/
calleOnom*re c.aracter &ar0in"+7IC-/
"eometria "eometr0/
CO$STR#I$T enforceO!imsO"eometria CNECP +stOn!ims+"eometria- F I-/
CO$STR#I$T enforceO"eot0peO"eometria CNECP +"eometr0t0pe+"eometria- F
RLI$ESTRI$GR44te;t OR "eometria IS $ULL-/
CO$STR#I$T enforceOsri!O"eometria CNECP +stOsri!+"eometria- F +DIA7C---
Se requiere que en su creacin se realice sin la columna GEO(ETRQ/ 0
posteriormente usar A""GeometryColumn +_-
#.ora se &e 4
calleOi! inte"er/
calleOnom*re c.aracter &ar0in"+7IC-/
"eometria "eometr0+Geometr0/DIA7C-
Se utili6a el par>metro <t0mo!= !e Post"re 8'; en la !efinicin !el la estructura !e la
"eometr3a Esto permite !efinir la columna "eometr3a con la sentencia sql CRE#TE
T#LE opcionalmente a #DDGEO(ETRQCOLU($S+'''-/ as3 mismo se pue!e
eliminar la ta*la !irectamente o usan!o la funcin DROPGEO(ETRQT#LE'
POSTGIS I'H
Crear una ta*la se reali6a con4
CRE#TE T#LE calles +
calleOi! SERI#L PRI(#RT PEQ/
calleOnom*re c.aracter &ar0in"+7IC-/
geometria geometry0.eometry,?2@1A3
Esto permite que !efinir una &ista 0 que sea reconoci!a
autom>ticamente en el catalo"o GEO(ETRQOCOLU($S'
Se pue!e .acer cam*uios !irectos en la "eometr3a/ en el sri! etc'
#LTER T#LE ta*la
#LTER COLU($ "eometria
SET D#T# TQPE
"eometr0+GEO(ETRQ/EDI9-
USI$G
STO5orceOID+STOTRansform+"eometria/EDI9--
Las &istas requieren/ para su uso/ que se especifique +usan!o
STOTR#$S5OR(- la "eometria con un sri! si es necesario/ en caso
contrario se lee como M7 o H'
Incorpora Topolo"ia J SQL/((
POSTGIS I'H
Se utili6a la in!e;acion espacial/ a.ora en DD
POSTGIS I'H
Diferencias entre mo!elo topol"ico 0 mo!elo "eom:trico
La Topolo"3a es una representacin normali6a!a no re!un!ante !e *or!es/ no!os o
caras comparti!os'
Las "eometr3as son representaciones !e un espacio !on!e los o*1etos que comparten
*or!es/ no!os o caras son propietarios !e su propia coor!ena!as'
,enta1as !el mo!elo topol"ico
E!icin o actuali6acin consistente/ al e!itar un no!o to!as las "eometr3as que lo
comparten cam*ian'
Re!uce espacio !e almacenamiento
Usos recomen!a!o
To!o lo que se refiera re!es/ como calles/ re!es !e a"ua 0 alcantarilla!o/ re!es
el:ctricas/ etc'
Elementos que lo conforman4
E!"e M las lineas que conectan a los no!os'
5ace J !efine caras o pol3"onos
$o!e J los puntos !e unin !e las lineas/ in!ica conecti&i!a!'
Relation J !efine las relaciones entre un topo"eometr0 0 otros elementos !e la topolo"3a
POSTGIS I'H
Se a!iciona un nue&o tipo !e !ato4 TopoGeometr0'
Se a!iciona un sc.ema TOPOLOG& 0 !os ta*las4 toology 0 layer
Se a!icionaron KH funciones en POSTGIS para el mane1o !e la topolo"ia'
CreateTopolo"0
DropTopolo"0
,ali!ateTopolo"0
Topolo"0Summar0
#!!TopoGeometr0Column
Etc'
Como sali!a se pue!e o*tener
#sG(L
Geometr0
ToTopoGeom !e*er> con&ertir las "eometr3as a topo"eometria'
Procesamiento
Usa las funciones SQL/((
POSTGIS I'H
E1emplo
SELECT
topolo"0'CreateTopolo"0+R&iasOtopoR/DIA7C- as
topoi!T
CRE#TE T#LE &ias'calles+
OO"i! serial primar0 @e0/
nom*re &arc.ar+788-/
cua!ra inte"er-T
SELECT
topolo"0'#!!TopoGeometr0Column+R&iasOtopoR/R&iasR/
RcallesR/RtopoR/RLI$ER-T
Se usa toTopoGeom para pasar !e una ta*le con
"eometria a la ta*la crea!a con topo"eometria'
POSTGIS I'H
R#STER
Una nue&a e;tensin !e tipo !e columna se llama R#STER/
al i"ual que GEO(ETRQ/ est>n implementa!os en forma
nati&a a la *ase !e !atos'
Esto supone la !isponi*ili!a! !e funciones para la
recuperacin !e !atos 0 meta!atos/ !arle si"nifica!o a los
!atos 0 po!er reali6ar an>lisis entre ellos' Esta !iseGa!o
para inte"rarse con GEO(ETRQ 0 po!er reali6ar funciones
en las que inter&en"an raster 0 &ector simult>neamente
Los !atos se car"an !irectamente en las ta*las 0 ca!a una
!e ellas representa una co*ertura +co&era"e- completa
Una fila !e la ta*la correspon!e a una ima"en/ parte !e la
co*ertura o *loques +tile-'
POSTGIS I'H
R#STER
Se pue!en almacenar arc.i&os multi*an!a 0 mane1ar los
&alores $OD#T# +i"noran!o estos &alores para lo que son
las operaciones a reali6ar-'
Las im>"enes pue!en !i&i!irse en *loques 0 ca!a *loque
se almacena como una fila/ el tamaGo !el *loque es
in!ica!o al momento !e la car"a' Estos se recomien!a
para im>"enes mu0 "ran!es'
Los meta!atos se almacenan 1unto con los !atos !e la
ta*la/ as3 como su "eoreferencia' Si la ima"en tiene un
espacio pirami!al asocia!o +o&er&ieBs-/ *loques o teselas
+tiles- solapa!as o co*erturas no rectan"ulares/ Post"is
Raster tam*i:n almacenara esa informacin
POSTGIS I'H
R#STER
#rquitectura
Se usa el mo!elo 0 las li*rer3as GD#L
Se usan coman!os para car"ar 0 !escar"ar las
im>"enes
Se almacena como4
Dentro la *ase !e !atos como )P
5uera !e la *ase !e !atos como %PEG o GeoTI55
AQB
<#EG
Geo*I%%
POSTGIS I'H
R#STER
Se pue!e almacenar !e !iferentes formas
conceptuales4
Alma)enamiento "e la imagen !in .lo'ue! y !in
rela)ionar
Pue!en solapar 0 tener "eoreferencia o no'
Co.ertura "e .lo'ue! irregulare!
Pue!en no ser rectan"ulares 0 los *loques pue!en
ser !e !istintos tamaGos'
Co.ertura "e .lo'ue! regulare!
Pue!en no ser rectan"ulares 0 los *loque son !el
mismo tamaGo aunque pue!en faltar al"unos/ no se
traslapan'
POSTGIS I'H
R#STER
Co.ertura re)tangular "e .lo'ue! regulare!
Co*ertura rectan"ular !e *loques !el i"ual tamaGo sin
traslapes
Imagen "i-i"i"a en .lo'ue!
pareci!o al tipo anterior' Esto no representa una co*ertura
completa' Otras im>"enes pue!en formar el resto !e la
co*ertura' $o se recomien!a para el an>lisis porque .a0
que replicar las consultas en !istintas ta*las'
Co.ertura ra!ter re!ulta"o "e la ra!teri9a)ion "e una
)o.ertura -e)torial
Ca!a "eometr3a se con&ierte en un pequeGo raster con al
e;tensin !e la "eometr3a ori"inal' $o tiene por que ser
completa 0 los *loques pue!en ser !e !istintos tamaGos 0
traslaparse' Depen!e !e las caracter3sticas !e la capa
ori"inal'
POSTGIS I'H
R#STER
Confi"uraciones posi*les !e almacenamiento !e im>"enes
POSTGIS I'H
R#STER
$o .a0 limite en su tamaGo' 7G por Tile/ DI T por
co*ertura +ta*la-/ Se usa una compresin +por Post"resql-'
E;isten mas !e AH funciones !isponi*les 0 mas en
implementacin'
Car"a !e !atos/ in!e;a!o
Interseccin entre raster o con "eometr3a/ E;traccin !e
&alores !e un especifico pi;el
Opciones !e sali!a a formatos "eometr3a/ P$G/ %PG/
TI55/ o con apo0o !e GD#L
5unciones !e construccin/ para crear el raster me!iante
operaciones matem>ticas entre otras o !e "eometr3as
Esta!3sticos/ Procesamiento/ !eformacin/ a1ustes/
&alores/ etc'
POSTGIS I'H
E1emplo
Consulta !e formatos
rasterIp"sql MG
Con&ersin en *atc.
rasterIp"sql Ms DIA7C Mt 9E;9E MI MC arc.i&o'tif ta*lasali!a ^ proceso'sql
Con&ersin !irecta
rasterIp"sql Ms DIA7C Mt 9E;9E MI MC e4icursosiim"ifotosH7'tif sc.eme'ortofoto X psql MU post"res
M! HHtest Mp KEDI
Consulta !e la ta*la usan!o GD#L
"!alinfo ?PG4.ostFlocal.ost portFKEDD !*nameFRHHtestR userFRpost"resR passBor!FR;;;;;R
sc.emaFRtestR ta*leF!em mo"eSCL
Gra*ar a un arc.i&o
select oi!/loBrite+loOopen+oi!/7D7HAI-/pn"- as num*0tes from
+&alues+loOcreate+H-/STOasP$G++select rast 5RO( ortofoto )NERE ri!F7-- -- as &+oi!/pn"-T
select loOe;port+7KCDIA/Re4itest'pn"R-T // se usa el oi! !e la consulta anterior
select loOunlin@+7KCDIA-T // limpiar la memoria
Gra*ar a un arc.i&o usan!o GD#L
"!alOtranslate MaOno!ata ?MDIA9A? Mof GTI55 ?PG4.ostFlocal.ost portFKEDD !*nameFRHHtestR
userFRpost"resR passBor!FRa!minR sc.emaFRtestR ta*leF!em mo!eFI? !em'tif
"!alOcontour Ma ele& !em'tif contorno's.p Mi 7H'H
POSTGIS I'H
El tipo Raster 0 el tipo Geometr0 son totalmente inte"ra*les +a
!iferencia !e los tipos raster en otras *ases !e !atos espaciales-'
SELECT ortofoto'ri!/ +STOSummar0Stats+ST(Cli*ra!tAgeoemtria+--'\
#S esta!istica 5RO( ortofoto/ 6onas )NERE
!t(Inter!e)t!*geometriaAST()on-e,1ull*ra!t++ #$D 6onas'co!FRIDRT
El o*1eto Raster son fra"mento !e informacion que pue!en ser
manipula!os como o*1etos &ectoriales'
EL raster es un mo!elo !e una coleccin !e fra"mentos !e
informacin que lo conponen'
EL o*1eto R#STER pue!e ser anali6a!o/ com*inan!o con los o*1etos
&ectoriales'
El resulta!o !epen!e !el raster +alturas/ pen!ientes/ tipo !e suelo/
etc'-
POSTGIS I'H
Es posi*le com*inar !os ta*las me!iante sentencias SQL/ usar funciones
espaciales referi!as asl o*1eto Raster 0/o al o*1eto &ectorial
STO#sP$G+raster-
STO#sTI55+raster-
STO#sGD#LR#STER+raster-
STOPOLQGO$+raster/numeroO*an!a-
STO(a@eEmpt0Raster
STO#sRaster+"eometria-
STOan!+raster-
STO#SRaster
STOan!
STOReclass+raster-
STOResample+raster-
STOTransform+raster-
STO(ap#l"e*ra+raster-
POSTGIS I'H
E1emplo !e tipos !e operaciones
O*tener la !istri*ucion !el pi;el !e la *an!a 7 !e
to!as las partes +tiles- !e una ta*la raster
Consulta !e las primeras D *an!as
Consultar los &alores !e los pi;eles !e solo la *an!a I
Cam*iar el or!en !e las *an!as +!e 7/I/D a D/7/I-
Con&ertir un raster clasifica!o a poli"ono total o por ran"o
!e &alores !el pi;el
Reclasificacion !e pi;eles
Re!uce el tamaGo al IK] usan!o el meto!o Cu*eSpline
Re!uce el tamaGo al IK] usan!o el meto!o
$earest$ei".*or
POSTGIS I'H
E1emplo !e tipos !e operaciones
Prome!io !e &alor !e los pi;eles en un lote especifico/ por
e1emplo !e una ima"en lan!sat +area &er!e/ a"ua/ rans"os
!e &alores/ etc'-
Consulta !e Dri&ers GD#L !isponi*les
SELECT stOGD#LDri&ers+-T
Con&ierte a otro formato con GD#L
Select STO#sGD#LRaster+rast/RGTiffR- 5RO(
ortofotoO*tener la altura !e un "rupo !e puntos toman!o
como referencia un DE(
O*tener las alturas !e una re! !e caminos/ para ca!a
se"mento toman!o como referencia un DE(
O*tener los !atos !e to!as las alturas o prome!io !e alturas
para ca!a poli"ono !e una ta*la 0 usan!o como referencia
un DE(
POSTGIS I'H
CO$TROL DE C#LID#D
Se pue!en "enerar
en&ol&entes +Nulls- que se
a1usten a otras "eometr3as
Se pue!e .acer a1ustes
+snap- a los elementos mas
cercanos
Se pue!en !i&i!ir pol3"onos
usan!o una linea como
referencia
POSTGIS I'H
Se pue!en "enerar
paralelas a la i6quier!a o
!erec.a en forma lineal o
cur&a
Se pue!en re&isar la
&ali!e6 !e las "eometrias
Se pue!en mostrar en
formato lat lon"
formatea!o
POSTGIS I'H
Otras funciones
STORemo&eRepeate!Points+"eometria-
Elimina los puntos repeti!os !e una "eometria
STOS.are!Pat.+"eometria-
Retorna una "eometria con tramos comparti!os +e&alua
inclu0en!o la !ireccion-
STOCollectionNomo"eni6e+"eometria-
Nomo"eni6a o simplifica una "eometria +un "eometr0
collection con un punto/ retorna un punto/ un "eometr0
collection con !os puntos/ retorna un multipunto'
STOGeom5romGeo%SO$+"eometria-
Retorna la "eometria en formato "eo%SO$ +formato facil
!e leer en len"ua1es como C/ CLL/ Ch/ %a&a/ %a&aScript/
Perl/ P0t.on/ etc'-
POSTGIS I'H
Soporta un In!e;a!o P$$/ Se aplica principalmente para ta*las con "ran!es
&ol2menes !e !atos con irre"ular !ensi!a! !e puntos/ permite me1orar la
eficiencia en su acceso'
P$$ F P nearest $ei".*our
asa!o en un in!e;a!o en >r*ol
Restrin"i!o a in!e; @e0s +e1m/ *oun!in" *o;-
Puntos4 respuesta e;acta
Otros4 resulta!o *asa!o en la ca1a en&ol&ente
E1emplo4
To!os los centros po*la!os !el Per2 +puntos-
Seleccionar los 7H po*la!os mas cercanos a la CIUD#D !e #REQUIP# or!ena!os por
!istancia
SELECT OO"i!/nomccpp/nom*O!ist/ nom*Opro/ nom*O!ep/ nomcat
5RO( test'po*la!osOIH77 ORDER Q "eometria `M^ +SELECT "eometria 5RO(
test'po*la!osOIH77 )NERE nomccppFR#REQUIP#R #$D nomcatFRCIUD#DR- LI(IT 7H
El opera!os4
` M ^ calcula or!enan!o por la !istancia a los centros !e las ca1as
` h ^ calcula or!enan!o por la !istancia a los *or!es !e la ca1a
POSTGIS I'H
En "eneral las funcionali!a!es nue&as en la &ersin I'H compren!en4
5uncionali!a!es !e &ali!acin 0 correccin !e !atos
SELECT STOCollectionE;tract+STO(a@e&ali!+"eometria-/D- from ta*laT
Soporte !e topolo"3a e;ten!i!a +ISO SQLM((-
#"re"a un mo!elo *asa!o en no!os/ caras 0 e;tremos'
Usa!o principalmente para re!es 0 "rafos'
POSTGIS R#STER
Soporte !e raster en la *ase !e !atos para su almacenamiento/
procesamiento +*an!as/ filtros/ pen!ientes/ etc'- 0 sali!a +tiff/ 1p"/ pn"/ etc'-
In!ices multi!imensionales
In!ices ID 0 DD
O*1etos primiti&os en DD'
5unciones especiales 0 DD
GR&CI&(