Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ADMINISTRACIONDEL
PLUGINQGISSQL
Guaparalosadministradoresdesistemas
ProyectoCrditoMixtoSuizoparaelRICdeGuatemala
Julio2001
MANUALDEADMINISTRACINDEL
PLUGINQGISSQL
INTRODUCCIN
Viendolasnecesidadesdecontarconunaherramientaquepermitagestionarlaintegracinde
informacin vectorial (grafica) con informacin alfanumrica el Proyecto Crdito Mixto
desarrollparaelRICdeGuatemalaunplugindenominadoQgisSQL,programadoenC++con
librerasdeQuantumGIS(QGIS).
ElpluginQgisSQLescreadoconelfindeproporcionarunaherramientadeconsultaabasesde
datosintegradaalsistemadeinformacingeogrficaQGIS.Entreotrosepermiteporejemplo
realizarunaunin(join)entreinformacinpredialespacialylainformacindelostitularesy
desplegar el resultado de la consulta en la interfase de QGIS (tambin relaciones uno a
muchos). QgisSQL entonces no es un motor de base de datos sino ms bien es un plugin de
interfaseentremltiplesbasesdedatos.
Un objetivo a futuro para QgisSQL es mejorar su interaccin con la informacin geogrfica
presenteenlosdiferentestiposdecapasvectorialesquesepuedenmanipulardentrodeQGIS.
P r o y e c t o C r d i t o M i x t o
1|P g i n a
INSTALACIONPLUGINSQGISSQL
ElpluginparaWindowsesunarchivodeextensinDLL,llamadoqgisplugins.dll,descargablede
lapginahttp://code.google.com/p/girs/downloads/list.
Para su integracin o instalacin en el QGIS se debe copiar dicho archivo a la carpeta
C:\Program Files\Quantum GIS [nombre de la versin actual de QGIS]\apps\qgis\plugins es
dondeseencuentranlosdemspluginsconextensinDLL.Unavezcopiadodichoarchivoala
carpetarespectivasedebeactivarelpluginenelmenComplementos.
La opcin despliega una ventana con los complementos o plugins para habilitar o
deshabilitarlos. Para un rpido acceso al QGisSql plugin el mismo puede ser filtrado con el
respectivonombre.
P r o y e c t o C r d i t o M i x t o
2|P g i n a
P r o y e c t o C r d i t o M i x t o
3|P g i n a
FUNCIONAMIENTODELPLUGINQGISSQL
Al momento QgisSQL consta de tres diferentes widgets en su interfase grfica, el rbol de
conexinyelInterpretadordecdigo,ascomolabarradeherramientas.
Widgetsrboldeconexin
Elrboldeconexionesabasededatosyconsultas,esdondeseindicantodaslasconexiones
de las base de datos que existen en la mquina. Dentro de cada una de ellas se podrn
observarlasconfiguracionesdelasconsultasquecuentaelsistemaconlarespectivabasede
datos.
Enelwidgetexisten6botonesloscualessedescribenacontinuacin.
Botn Ayuda El botn de ayuda permite ver una pequea sintaxis para crear y
eliminar conexiones a diferentes bases de datos (al momento son PostgreSQL, MS SQL
ServerySQLite).
P r o y e c t o C r d i t o M i x t o
4|P g i n a
BotnEliminarConexineliminalaconexinoconsultaseleccionadaenelrbolde
conexiones
Botn Agregar Conexin permite realizar conexiones a las bases de datos
alfanumricasenlascualesserealizarlaconfiguracindelasdiferentesconsultas.Aldar
clicenelbotnsedespliegalapantallasiguiente
Sedebeingresartodoslosdatosdelaconexin.ClicenelbotnOKparacomprobar
laconexineintegrarlaenelrboldeconexionescomoenelgraficosiguiente.
BotnConectaroActivarConexinElbotnactivaoconectalabaseseleccionada
enelrboldeconexiones.Unavezconectadalabasededatossemuestraennegrillasy
marcadaconunaXcomoindicaelgraficosiguiente.
P r o y e c t o C r d i t o M i x t o
5|P g i n a
WIDGETINTERPRETADORDECDIGO
LapartemsimportantedelpluginQgisSQLeselwidgetinterpretadordecdigoparahacer
consultas cruzadas, conexiones a bases de datos o incluso edicin de tablas. Se trata de un
gestor diseado para soportar consultas complejas y la respectiva ventana se coloca por
defectoenlaparteinferiordeQGIS.
Elinterpretadorcuentaconuneditordondeseintroducelassentenciasytambinconlosdos
botonesRunyClean:
P r o y e c t o C r d i t o M i x t o
6|P g i n a
Runpermiteejecutarlasentenciaintroducidaeneleditor
Cleanlimpiaeleditorparaunanuevasentenciaaejecutar
AlmomentoelpluginpermiteconexionesatresDBMSs:PostgreSQL,SQLiteyMSSQLServer.
NotaAlmomentosoloenWindowssehaprobadolavalidezdelaconexinaMSSQLServer.
Enlassentenciasdeestemanual,laspalabrasdeltipo<palabra>debenserreemplazadaspor
elrespectivovalorquesugieraelmismo.Laspalabrasentrecorchetes[]sonopcionales.
LassentenciasquesepuedenutilizarenelInterpretadordecdigosonlassiguientes:
CONEXINAUNABASEDEDATOS
CrearunaconexinaunabasededatosdePostgreSQL
CREATECONNECTIONAS
<NombreReferentealaconexin>
TYPEPOSTGRESQL
DATABASE
<NombredelabasedeDatos>
USERNAME
<NombredelUsuario>
PASSWORD
<Contraseadelusuario>
HOST
<NombreHostoIP>
SCHEMA
<Schemadepreceated>
PORT
<NumerodePuerto>
CONNECT
[TRUE|FALSE]
CrearunaconexinalaunabasededatosdeMSqlServer
CREATECONNECTIONAS
<NombreReferentealaconexin>
TYPEMSQLSERVER
DATABASE
<NombredelabasedeDatos>
USERNAME
<NombredelUsuario>
PASSWORD
<Contraseadelusuario>
HOST
<NombreHostoIP>
CONNECT
[TRUE|FALSE]
CrearunaconexinaunabasededatosdeSQLite
CREATECONNECTIONAS
TYPESQLITE
DATABASE
PATH
INTERFACE
CONNECT
<NombreReferentealaconexin>
<NombredelarchivodelabasedeDatos>
<Ubicacindelarchivodelabasededatos>
[TRUE|FALSE]
[TRUE|FALSE]
EjemplodeunaconexinalabasededatosdePostgresSQL
CREATECONNECTIONAS
TYPEPOSTGRESQL
DATABASE
PostgresPrueba
SIGAT
P r o y e c t o C r d i t o M i x t o
7|P g i n a
USERNAME
PASSWORD
HOST
SCHEMA
PORT
CONNECT
postgres
postgres
localhost
public
5432
TRUE
ELIMINACIONDEUNABASEDEDATOS
Para eliminar una conexin a la base de datos desde el interpretador se debe ejecutar la
siguientesentencia(desconectayeliminaelproceso):
DELETECONNECTION
<nombredelaconexion>
Ejemplo
DELETECONNECTION
PostgresPrueba
ESTABLECERUNACONEXINPORDEFECTO
De todas las conexiones en el rbol, se puede definir una conexin por defecto. Eso se
establecedelasiguienteforma
SELECTINTERFACE
<nombredelaconexion>
Ejemplo
SELECTINTERFACE
PostgresPrueba
GUARDARUNACONSULTAENUNACONEXINEXISTENTE
Para la creacin de una consulta almacenada para la respectiva conexin se ejecuta el
siguientecomando:
CREATEQUERY
AS
TYPE
[WITHLAYER
[ONCONNECTION
"{"<CualquiersentenciaSQLvlida>"}"
<Nombre>
[ONLY|SIMLE|TOOL]
<Nombrecapa>]
<Nombreconexin>]
Ejemplo A continuacin se genera un ejemplo de un join entre una capa con informacin
espacialyunaconsultaenSQLite.
Conexinaunabasededatos(Postgres,SQLite,SQLServer),enesteejemploesunaconexin
aunabaseenSQLite.
CREATECONNECTIONAS
ConexionSQLite
P r o y e c t o C r d i t o M i x t o
8|P g i n a
TYPESQLITE
DATABASE
prueba.db
PATH
C:\QgisSQL
INTERFACE
FALSE
CONNECT
TRUE
Enelsiguientepasosegenerarunaconsultarelacionandounacapadeinformacinespaciala
unaconsultaenSQLite,paraestoseejecutalasiguientesentencia.
CREATEQUERY{SELECT*FROMtablaWHEREname=$name}
AS
Prueba_JOIN
TYPE
TOOL
WITHLAYER
Predios
ONCONNECTION
ConexionSQLite
Nota En la sentencia del query se ve un valor con un smbolo ($) delante, este smbolo
significaquedelatablaelcamponameseharreferenciayunaconsultaconelcamponame
delacapadepredios,deestamaneraserealizaunjoinentreunacapayvariasconsultasde
basesdedatos.
EnlasiguienteconsultasedesplieguenicamenteelcamponamedelabasedeSQLite.
CREATEQUERY{SELECTnameFROMtablaWHEREname=$name}
AS
Consulta_Predio
TYPE
TOOL
WITHLAYER
Predios
ONCONNECTION
ConexionSQLite
P r o y e c t o C r d i t o M i x t o
9|P g i n a
NotaLaconsultapermiteestablecerlaseleccindelacapade prediosyunirlaconlatabla
alfanumrica segn campo correspondiente. Al usar el botn de seleccin de la herramienta
QgisSQL haciendo clic sobre cualquier predio nos muestra la consulta en l interfase de QGIS
(tambinrelacionesunoamuchos,porejemplocuandohayunpredioyvariostitulares).
ENVIARCONSULTAAUNACONEXIONEXISTENTE
EnviarcualquierconsultaSQLaunaconexinestablecida
DIRECT<Nombreconexin>"{"<CualquiersentenciaSQLvlida>"}"
Ejemplo
DIRECTPostgresPrueba"{"SELECT*FROMT_Tenencia"}"
ELIMINARUNACONSULTAENUNACONEXINEXISTENTE
Eliminaunaconsultadeunaconexinexistente
DELETEQUERY<Nombreconsulta>ONCONNECTION<Nombreconexin>
Ejemplo.
DELETEQUERYPredio_TenenciaONCONNECTIONPostgresPrueba
MIGRARTABLAAUNABASEDEDATOS
Para migrar una tabla a una base de datos de una consulta de seleccin se debe ejecutar lo
siguiente.
CREATETABLENew<NombredelaTabla>
FROM (
DIRECT<Nombreconexin>
{
SELECTsenteciadeselectiondeunaconsultaexistente
}
)
[ONCONNECTION<Nombreconexin>]
o
CREATETABLENew<NombredelaTabla>
FROM (
SELECT[*|field1{,field2}]
FROMLAYER<nombredelacapa>
)
[ONCONNECTION<Nombreconexin>]
o
CREATETABLENew<NombredelaTabla>
FROM (
SELECTIONFROMLAYER<nombredelacapa>
)
[ONCONNECTION<Nombreconexin>]
P r o y e c t o C r d i t o M i x t o
10|P g i n a
EDITARUNATABLAENUNACONEXINEXISTENTE
Editarunatablapresenteenunaconexindebasededatos
EDIT<Nombretabla>ONCONNECTION<Nombreconexin>
Ejemplo
EDITT_TenenciaONCONNECTIONPostgresPrueba
Al ejecutar esta sentencia se permite desplegar la tabla con todos los campos y modificar
aquellos campos con permisos de edicin. En el ejemplo del grfico siguiente la tabla
T_Tenenciaestapreparadaparasuedicin.
WIDGETHERRAMIENTAQGISSQL
Estecapitulodescribeelusodelabarradeherramientas(NotaAlmomentolosiconosdela
barra de tareas no han sido debidamente escogidos sino tan solo se los ha colocado para
identificar la barra de la aplicacin, para probar la debida ejecucin de los botones. La
personalizacinadecuadadelabarradetareasserrealizadaprximamente).
2 3
P r o y e c t o C r d i t o M i x t o
11|P g i n a
restablece dicho widget (si se permite para el usuario, ver seguridad de botones de
configuracin).
3. El tercer botn de la izquierda (3), permite mostrar u ocultar el interpretador de
cdigo.Siporalgunaraznsecierraelwidgetinterpretadorconestebotnsepuede
restablecerdichowidget
4. ElcuartoBotndelaizquierda,permiteverunapequeasintaxis(Ayuda)delusodel
widget.
P r o y e c t o C r d i t o M i x t o
12|P g i n a
MIGRACIONDELACONFIGURACION
Toda la configuracin que se realiza en el plugin QgisSQL, se almacena en el registro de
Windows (ejecutar aplicando inicio ejecutar regedit), en la siguiente direccin:
HKEY_CURRENT_USER\Software\QgisSQL.
Nota Se recomienda realizar una configuracin en una mquina de TI del RIC de todas las
consultasparamigrarlamismaalasmaquinasclientes(ejemplodelaMunicipalidades).
Paraestosedebeexportarelregistrodelasiguienteforma:
ClicbotnderechosobrelacarpetaQgisSQL,seleccionarlaopcinExportar
Enlasiguienteventanaseeligeellugardondesevaaguardarelregistro(porejemploen
una memoria USB para la instalacin en las Municipalidades) asignando el nombre de
archivo(ejemploPluginsQGisSQL.reg).
Enlacomputadoradondeserequieremigrarlaconfiguracindelregistro,yconlasesin
delusuarioquevautilizarelplugin,seejecutadobleclicenelarchivoPluginsQGisSQL.reg
guardadoanteriormenteloquedespliegaelsiguientemensaje(confirmarconSi).
P r o y e c t o C r d i t o M i x t o
13|P g i n a
Deestamaneraunadministradordesistemapuederealizarlaconfiguracindelasconexiones
alasbasesdedatosyconsultasenunasolamquinaymigraratodaslasmaquinasdondese
utilizaraelpluginQgisSQL.
P r o y e c t o C r d i t o M i x t o
14|P g i n a
SEGURIDADENBOTONESDECONFIGURACIN
Esmuyimportantecontarconunaseguridadenlasconfiguracionesdelasconexionesyaque
unusuariosinexperienciapodrasinquererdesconfigurarlasconexionespreestablecidas(y
porendelasconsultasvinculadas).Pordicharaznelpluginpermitehabilitarodeshabilitarlos
botonesdeadicinoeliminacindeconexin.
En el registro del sistema se encuentra una variable llamada Edicion y en la misma se
encuentraunaclavedenominadaChecked,cuandoestaseencuentreenvalortruelosbotones
seencontrarnhabilitados
Agregary
eliminar
nuevas
conexiones
permitido
(checked=
true)
De esta forma se puede mantener la integridad de las conexiones y contar con la seguridad
queelusuariosinexperiencianoelimineporaccidentelasconexiones.
P r o y e c t o C r d i t o M i x t o
15|P g i n a
DESCARGADELPLUGINSQGSSQL
LosarchivosdelpluginQgisSQLsepuedendescargardelasiguientedireccinWeb:
http://code.google.com/p/girs/downloads/list
ActualmenteestndisponibleslosDLL(Windows)paralasversionesdeQGIS1.6(Copiap)y
QGIS1.7(Wroclaw).TambinseencuentraelpluginparalaversindeLinuxdeQGIS1.6
P r o y e c t o C r d i t o M i x t o
16|P g i n a
CONCLUSIONES
El interpretador de cdigo es el componente principal de QgisSQL. En el mismo se puede
ejecutar algunos tipos de sentencias SQL modificadas y tiles, aparte de algunas otras
sentenciaspropiasdelinterpretador.LaestructurainternadelinterpretadorQgisSQLgozade
ciertacomplejidaddebidoaqueatravsdelmismosedebepoderejecutardiversassentencias
de tipo SQL. Mejorar la calidad del mismo es uno de los mayores objetivos a futuro del
desarrollodelpluginQgisSQL.
Almomentolassintaxisdelinterpretadorespobreycarecedeunabuenaestructura,segnse
avanceeldesarrollodelaaplicacinseesperamejorarlasintaxis.
P r o y e c t o C r d i t o M i x t o
17|P g i n a