Sunteți pe pagina 1din 250

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&lta .-'$! 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&(

S-ar putea să vă placă și