Está en la página 1de 29

Herram. Inf. para el Geoprocesado.

Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

1 ALGUNOS PROGRAMAS NECESARIOS.


Cuando diseamos un Sistema de Informacin Geogrfica, nos puede interesar
distribuir el SIG generado para que lo puedan consultar personas que no tengan una
aplicacin de SIG instalada en su ordenador. La idea ser crearse una aplicacin propia
que permita la visualizacin del mapa y la consulta de los datos necesarios. Una opcin
para hacerlo sera con las herramientas de Map Object de ArcGis. Dada la naturaleza
semipresencial del Master, y puesto que muchos alumnos tendrn que realizar las
prcticas con medios propios, nos hemos decidido a utilizar MapWindow. Se puede
conseguir en la web http://www.mapwindow.org/. En concreto el enlace de descarga es:
http://www.mapwindow.org/download.php?file_name=http://svn.mapwindow.org/svnro
ot/InstallationProjects/4.6/Release/MapWindow46SR.exe&show_details=1&dl=1
Aqu podemos descargar solo el control Active X para utilizar en nuestros programas:
http://www.mapwindow.org/download.php?file_name=http://svn.mapwindow.org/svnro
ot/InstallationProjects/4.6/Release/MapWinGIS46OCXOnly.exe&show_details=2&dl=
1
En este enlace tenemos otros Plugins para utilizar con el programa.
http://www.mapwindow.org/download.php
Instalaremos los programas indicados para utilizarlos en Ejercicios posteriores.
Otra herramienta que nos puede venir bien es un conversor de archivos SHP a formato
DXF para ver su contenido en aplicaciones CAD. Aqu tenemos el enlace al mismo en
la pgina de la JCYL.
http://www.sitcyl.jcyl.es/smap/download/shpdxf_v2.exe

2 Utilizar MapWindow.
Abrimos el programa MapWindow, y localizamos un mapa de Ejemplo en la carpeta
C:\Archivos de Programa\MapWindow\ Sample Projects, en la imagen siguiente se ve
la pantalla que presenta si el elegido es World, despus de hacer zoom hacia Espaa.

Adems se ha seleccionado la herramienta de informacin y se consultan los atributos.


Escuela Politcnica Superior de vila
Universidad de Salamanca

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

3 Crear un visualizador de Mapas SHP.


Vamos a comenzar el desarrollo de una aplicacin que nos permita visualizar este tipo
de mapas. Crearemos un formulario, importaremos un objeto Mapa, un objeto Leyenda,
crearemos un men y una barra de herramientas. En este primer ejercicio, slo vamos a
permitir agregar datos, eliminarlos, y trabajar con el zoom. No vamos a permitir
visualizar los atributos de las entidades seleccionadas. Eso lo dejaremos para futuras
aplicaciones. Creamos entonces un programa nuevo al que llamaremos VisorSHP, al
formulario principal le damos el nombre frm_Visor.
A este formulario le aadimos un men y una barra de herramientas. En el grupo Mens
y barras de herramientas cogemos MenuStrip y lo llevamos al formulario, y ToolStrip y
lo llevamos igualmente. (Detallo este paso porque algunas personas decan en clase que
luego no encuentran alguno de los componentes necesarios).

Aadimos tambin el cuadro de dilogo de abrir en el grupo Cuadros de dilogo de las


herramientas:

Al seguir estos pasos nuestro formulario tendr el aspecto:

Escuela Politcnica Superior de vila


Universidad de Salamanca

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

En la parte inferior del formulario, ya fuera del mismo se observan los nombres de los
componentes creados. Con ese nombre haremos referencia a ellos desde el cdigo
cuando los necesitamos. Por ejemplo, para el cuadro de dilogo de apertura cuando lo
queramos utilizar escribiremos OpenFileDialog1.
Escribimos ahora las opciones del men. De momento ponemos:
Archivo
Agregar Tema
Salir

Ver
Leyenda

Adems aadimos los botones a la Barra de herramientas utilizando los iconos


proporcionados. Pulsamos sobre la barra y en la flechita de nuevo botn que muestra,
pulsamos y seleccionamos Button. Usaremos separadores cuando creamos conveniente.

En la propiedad Imagen del botn aadido elegimos el icono correspondiente. Al


pinchar sale:

Luego al pulsar importar seleccionamos el icono y Aceptamos. En la propiedad Text de


cada botn vamos escribiendo una descripcin como aclaracin que se copiar en
ToolTipText, que corresponde al mensaje que nos muestra al colocarnos sobre ellos. La
barra nos quedar:
Zoom
Previo

Agregar
Tema

Eliminar
Tema

Encuadre

Escuela Politcnica Superior de vila


Universidad de Salamanca

Zoom
Extensin

Zoom
Aumentar

Zoom
Disminuir
3

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Ahora vamos con el diseo interior del formulario. Colocaremos el Mapa y la leyenda.
Para utilizar estos controles que nos proporciona MapWindow, agregamos al panel de
herramientas de Visual un grupo que se llame Componentes SIG. Pulsamos con el
botn derecho del ratn en la parte inferior del panel de herramientas dnde pone
General y seleccionamos Agregar Ficha, luego ponemos el nombre Componentes SIG.

Ahora pulsamos al botn derecho del ratn en la ficha creada y seleccionamos elegir
elementos, aadiremos el componente de MapWindow, en la ficha Componentes COM,
seleccionamos Map Control.

Repetimos el proceso para la leyenda, pero ahora pulsamos el botn Examinar y


localizamos la dll MapWinInterfaces.dll que encontraremos en la ruta C:\Archivos de
Programa\MapWindow, si realizamos la instalacin con la configuracin por defecto.
Tras esto la ficha de herramientas creada se mostrar:

Para facilitar la colocacin de estos componentes en la pantalla vamos a utilizar un


panel partido como contenedor de los mismos. De este modo podremos cambiar el
tamao de la zona que ocupa la leyenda si necesitamos visualizar nombres largos de
capas. El componente a incorporar se llama SplitContainer del grupo contenedores en
Escuela Politcnica Superior de vila
Universidad de Salamanca

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

las herramientas. Al colocarlo en el formulario le nombra SplitContainer1 y ocupa todo


el rea del mismo al tener la propiedad Dock a Fill.

En la barra vertical de separacin nos permite modificar el rea dedicada a cada uno de
los paneles. El aspecto ser:

Sobre el Panel1 colocaremos la leyenda a la que pondremos nombre Leyenda y en la


propiedad Dock le asignaremos Fill. En el Panel2 colocamos el mapa, le llamamos
Mapa y en la propiedad Dock asignamos igualmente Fill.
El aspecto final ser:

Escuela Politcnica Superior de vila


Universidad de Salamanca

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Comenzamos a asignar el cdigo. A la opcin del men Archivo/Agregar Tema le


asignaremos el cdigo siguiente:
Private Sub AgregarTemaToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
AgregarTemaToolStripMenuItem.Click
'Nueva Forma a aadir
Dim formaSF As MapWinGIS.Shapefile
Dim nombreTema As String
Dim unacapa As Integer
OpenFileDialog1.Filter = "Archivos de Formas
SHP(*.shp)|*.shp"
If OpenFileDialog1.ShowDialog() =
Windows.Forms.DialogResult.OK Then
formaSF = New MapWinGIS.Shapefile
'Asignamos el mapa a la leyenda para enlazarlos
Leyenda.Map = Mapa.GetOcx()
'Cogemos el nombre seleccionado
nombreTema = OpenFileDialog1.FileName
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Ponemos como nombre de la capa en la leyenda el nombre
del archivo
Leyenda.Map.LayerName(unacapa) =
System.IO.Path.GetFileNameWithoutExtension(nombreTema)
'Cambiamos el grosor de Linea de la capa aadida
Mapa.set_ShapeLayerLineWidth(unacapa, 2)
'Cambiamos el Color de linea de la forma
Mapa.set_ShapeLayerLineColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Red)))
End If
End Sub

Este mismo cdigo le asignamos tambin al botn de Agregar tema.


Escuela Politcnica Superior de vila
Universidad de Salamanca

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Al botn de Eliminar Tema le asignamos:


Private Sub btn_Eliminar_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btn_Eliminar.Click
Leyenda.Layers.Remove(Leyenda.SelectedLayer) 'Borramos la
capa seleccionada
Leyenda.Refresh() 'Refrescamos la leyenda
End Sub

Al botn de Encuadre le ponemos:


Mapa.CursorMode = MapWinGIS.tkCursorMode.cmPan
'Establecemos el modo del Cursor a Encuadre.
'De este modo cambia la forma de la flecha del ratn por una
'mano y podemos cambiar la zona de mapa que se muestra en la
pantalla.

Al de Zoom Extensin:
Mapa.ZoomToMaxExtents()

Al de Aumentar
Mapa.CursorMode = MapWinGIS.tkCursorMode.cmZoomIn

Al de Reducir
Mapa.CursorMode = MapWinGIS.tkCursorMode.cmZoomOut

Al de Zoom Previo
Mapa.ZoomToPrev()

Vamos ahora con el men Ver/Leyenda. Lo primero ser poner la propiedad Checked
del mismo a true. Eso lo hacemos seleccionndolo y cambiando el valor en la lista de
propiedades. Luego le asignamos el cdigo:
Private Sub LeyendaToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles LeyendaToolStripMenuItem.Click
If SplitContainer1.Panel1Collapsed = False Then 'Si la leyenda se ve
SplitContainer1.Panel1Collapsed = True 'Escondo el panel de la
Izquierda, el de la leyenda
LeyendaToolStripMenuItem.Checked = False 'Quito la marca al men
Else
SplitContainer1.Panel1Collapsed = False 'Si no muestro el panel
de la leyenda
LeyendaToolStripMenuItem.Checked = True 'Pongo la marca al menu
End If
End Sub

Escuela Politcnica Superior de vila


Universidad de Salamanca

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Probamos a ejecutar el programa. Si cargamos los archivos World_adm0.shp,


river_quality_li.shp y cities_capital_pt.shp que se proporcionan como ejemplos.
Tendremos una capa de tipo poligonal, otra lineal y otra puntual. Al asignar el mismo
color de lnea a todas las capas el dibujo queda poco claro. Intentaremos arreglarlo en
futuros ejercicios.

Escuela Politcnica Superior de vila


Universidad de Salamanca

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

4 Visor de Informacin Fija.


Lo normal es que queramos facilitar la visualizacin y consulta de la informacin que
hayamos generado. Esa informacin ser la que nosotros hemos obtenido, siempre la
misma. En vez de permitir mostrar cualquier archivo SHP, creamos a hora un programa
que cargar los archivos que tengamos preparados y les asignar las propiedades que
decidamos. El usuario se limitar a consultar esa informacin. Ahora creamos otra
aplicacin con nombre MundoSIG, para no repetir la parte de la barra de botones y el
diseo del formulario importaremos el formulario del programa anterior.
Cuando utilizamos algn componente aadido, en ocasiones nos da problemas la
importacin de un formulario si no hemos cargado la referencia en el proyecto. Para no
cargar las referencias otra vez, Aadimos al form1 un control MapControl y un control
Legend. Luego aadimos el formulario frm_Visor.vb del ejercicio anterior en el men
Proyecto/Agregar elemento existente, lo localizamos y lo aadimos. En proyecto
propiedades del proyecto, en la seccin Aplicacin le indicamos como formulario de
inicio el nuestro.

Borramos el formulario form1 que nos crea con el botn derecho sobre l en el
Explorador de Soluciones y pulsando Eliminar.
Tendramos una aplicacin igual a la de antes. Ahora eliminamos la opcin del men
Agregar/Tema, y los botones de Aadir y eliminar capas. Cargaremos la informacin en
el evento Load del formulario. Quitamos tambin el control OpenFileDialog1. Si
seleccionamos el formulario, en el evento Load, (lo vemos en las propiedades dando al
rayo
), le escribimos lo siguiente:

Private Sub frm_Visor_Load(ByVal sender As System.Object, ByVal e


As System.EventArgs) Handles MyBase.Load
Dim formaSF As MapWinGIS.Shapefile 'Nueva Forma a aadir
Dim nombreTema As String 'Nombre del tema para la leyenda
Dim unacapa As Integer 'Variable para manejar la capa
cargada y modificar sus propiedades
'Asignamos el mapa a la leyenda para enlazarlos
Leyenda.Map = Mapa.GetOcx()

Escuela Politcnica Superior de vila


Universidad de Salamanca

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura
'AGREGAMOS LOS PAISES QUE ES UNA CAPA POLIGONAL
'Creamos una forma nueva
formaSF = New MapWinGIS.Shapefile
'Cogemos el nombre seleccionado
nombreTema = Application.StartupPath +
"\World\Shapefiles\world_adm0.shp"
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Pone el nombre de la capa en la leyenda con el del archivo
Leyenda.Map.LayerName(unacapa) =
System.IO.Path.GetFileNameWithoutExtension(nombreTema)
'Cambiamos el grosor de Linea de la capa aadida
Mapa.set_ShapeLayerLineWidth(unacapa, 2)
'Cambiamos el Color de linea de la forma
Mapa.set_ShapeLayerLineColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Black)))
'Cambiamos el Color del relleno de la forma poligonal
Mapa.set_ShapeLayerFillColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.LightGray)))
'AGREGAMOS LOS RIOS QUE ES UNA CAPA LINEAL
'Creamos una forma nueva
formaSF = New MapWinGIS.Shapefile
'Cogemos el nombre seleccionado
nombreTema = Application.StartupPath +
"\World\Shapefiles\river_quality_li.shp"
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Pone el nombre de la capa en la leyenda con el del archivo
Leyenda.Map.LayerName(unacapa) =
System.IO.Path.GetFileNameWithoutExtension(nombreTema)
'Cambiamos el grosor de Linea de la capa aadida
Mapa.set_ShapeLayerLineWidth(unacapa, 1)
'Cambiamos el Color de linea de la forma
Mapa.set_ShapeLayerLineColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Blue)))
'AGREGAMOS LAS CAPITALES.UNA CAPA CON INFORMACIN PUNTUAL
'Creamos una forma nueva
formaSF = New MapWinGIS.Shapefile
'Cogemos el nombre seleccionado
nombreTema = Application.StartupPath +
"\World\Shapefiles\cities_capital_pt.shp"
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Pone el nombre de la capa en la leyenda con el del archivo
Leyenda.Map.LayerName(unacapa) =
System.IO.Path.GetFileNameWithoutExtension(nombreTema)
'Cambiamos el grosor de Linea de la capa aadida
Mapa.set_ShapeLayerLineWidth(unacapa, 1)
'Cambiamos el Color de los puntos de la forma
Mapa.set_ShapeLayerPointColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Red)))

Escuela Politcnica Superior de vila


Universidad de Salamanca

10

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura
'Indicamos el tamao del punto
Mapa.set_ShapeLayerPointSize(unacapa, 6)
'Especificamos la forma del punto.
Mapa.set_ShapeLayerPointType(unacapa,
MapWinGIS.tkPointType.ptDiamond)
'Con las lineas Siguientes comentadas las reemplazaramos
por las 2 anteriores para mostrar
'Como smbolo una foto con forma de estrella en vez de los
smbolos predeterminados.
'Mapa.set_ShapeLayerPointSize(unacapa, 0.8)
'Mapa.set_ShapeLayerPointType(unacapa,
MapWinGIS.tkPointType.ptUserDefined)
'Dim simboloimagen As New MapWinGIS.Image
'simboloimagen.Open(Application.StartupPath +
"\World\estrella.png")
'Mapa.set_UDPointType(unacapa, simboloimagen)
End Sub

Como vemos hay tres bloques que aaden una capa con informacin de polgonos, otra
con informacin lineal y otra con informacin puntual. Adems modifican el aspecto de
las formas creadas. Al elegir el tipo de punto cabe la posibilidad de utilizar smbolos a
procedentes de imgenes que se cargan con las instrucciones de las ltimas lineas
comentadas.
Con esto ejecutamos el programa. Ahora sera un mapa previamente preparado. El
usuario se limitara a ampliar y reducir el mapa y ha desplazar la zona visualizada. El
aspecto que presentara es:

En el Ejercicio anterior cogamos el nombre de la capa para la leyenda del nombre del
archivo SHP cargado. Ahora como los archivos de forma a cambiar son fijos podemos
poner el nombre a mano. Cambiamos:

Escuela Politcnica Superior de vila


Universidad de Salamanca

11

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

La lnea
Leyenda.Map.LayerName(unacapa) =
System.IO.Path.GetFileNameWithoutExtension(nombreTema)

Por
Leyenda.Map.LayerName(unacapa) = "PAISES DEL MUNDO"
Leyenda.Map.LayerName(unacapa) = "PRINCIPALES RIOS"
Leyenda.Map.LayerName(unacapa) = "CAPITALES"

Para cada una de las capas cargadas segn el caso. Ahora nos queda:

4.1 Consultar los atributos.


Asociado a los archivos SHP con informacin grfica podemos tener bases de datos con
valores asociados. Generalmente estar en archivos DBF. Vamos a intentar mostrar los
atributos asociados a una capa.
Incorporamos una nueva opcin del men Atributos/Ver Tabla. Aadimos un
formulario al que llamamos frm_tabla.vb. En este formulario incorporamos un panel en
el que establecemos la propiedad Dock a Bottom, en este panel colocamos un botn.
Aadimos tambin un DataViewGrid al que llamamos dvg_tabla. En la propiedad
Dock de la tabla seleccionamos Fill.
El formulario presentar el aspecto siguiente:

Escuela Politcnica Superior de vila


Universidad de Salamanca

12

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Ahora mostramos el cdigo del formulario, podemos hacerlo pulsando con el botn
derecho sobre su nombre en el explorador de Soluciones y eligiendo Ver Cdigo.
Vamos a incorporar un constructor sobrecargado para este formulario de modo que
admita una capa, que ser la capa de la que queremos visualizar sus atributos. Adems
creamos una variable privada para manejar esa capa. En el constructor asignamos la
capa pasada a esta variable creada y el nombre de la capa. El cdigo para el constructor
queda:
Public Class frm_tabla
Private capa_a_mostrar As MapWinGIS.Shapefile 'Variable para
manejar la capa actual
Private titulo As String 'Para poner el ttulo en el formulario
Public Sub New(ByVal capa As MapWinGIS.Shapefile, ByVal untitulo
As String)
capa_a_mostrar = capa 'asigno la variable el valor pasado en
el constructor
titulo = untitulo 'Lo mismo para el nombre de la capa en la
leyenda
InitializeComponent() 'Para que nos cree los componentes
aadidos
End Sub

En el mtodo Load del formulario aadimos:


Private Sub frm_tabla_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim mitabla As New DataTable 'Creo una tabla para aadir la
informacin
Dim mifila As DataRow 'Para manejar una Fila
Dim i, j As Integer 'Contadores para los bucles
Me.Text = "Atributos de la capa " & titulo 'Pongo en el
Titulo del Formulario el nombre de la capa
For i = 0 To capa_a_mostrar.NumFields - 1 'Recorro los
campos de los atributos de la capa
mitabla.Columns.Add(capa_a_mostrar.Field(i).Name) 'Aado
una columna a la tabla con el nombre de cada campo de la capa
Next

Escuela Politcnica Superior de vila


Universidad de Salamanca

13

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura
For i = 0 To capa_a_mostrar.NumShapes - 1 'Recorro las
formas de la capa
mifila = mitabla.NewRow 'Creo una fila para cada forma
For j = 0 To capa_a_mostrar.NumFields - 1 'Recorro los
campos que sern las columnas
mifila(j) = capa_a_mostrar.CellValue(j, i)'Pongo en
cada fila el campo j de la forma i
Next
mitabla.Rows.Add(mifila) 'Aado la fila a la tabla
cuando tiene todos los campos de la forma
Next
dvg_tabla.DataSource = mitabla 'Asigno la tabla creada al
DataViewGrid para mostrarla
End Sub

Lo que hacemos es aadir una columna para cada campo de la tabla seleccionada.
Luego recorremos las formas y agregamos una fila para los datos de cada una ellas. Al
final asignamos la tabla formada al DataViewGrid.
Para que nos muestre el formulario le ponemos el cdigo al men Atributos/Ver Tabla
creado:
Private Sub VerTablaToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
VerTablaToolStripMenuItem.Click
Dim miCapa As New MapWinGIS.Shapefile 'Variable de tipo
forma para manejar la capa
miCapa = Mapa.get_GetObject(Leyenda.SelectedLayer) 'Tomo la
capa correspondiente al elementoseleccioando en la Leyenda
'Creo una instancia del formulario que nos mostrar los
atributos
'Pasandole el manejador de la capa y el ttulo
Dim visorAtributos As New frm_tabla(miCapa,
Leyenda.Map.LayerName(Leyenda.SelectedLayer))
'Muestro el formulario
visorAtributos.ShowDialog()
End Sub

Si ejecutamos el programa con la capa de capitales seleccionada la informacin que nos


muestra ser:

Escuela Politcnica Superior de vila


Universidad de Salamanca

14

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

4.2 Consultas. Resaltar Formas.


Otra cosa interesante es poder destacar alguna de las formas en el mapa segn el valor
de uno de los campos. Intentaremos localizar el pas a partir de su nombre, Si lo
encontramos lo coloreamos de amarillo si no ponemos un mensaje.
Creamos otra opcin en el men Consultas/Localizar Pas, quedar:

Agregamos un formulario al que llamamos frm_BuscarPais.vb. En este formulario


agregamos un botn y un campo de texto txt_pais. Tendr el aspecto:

En el formulario declaramos una variable para recibir el mapa del principal y creamos
un constructor sobrecargado quedar:
Public Class frm_BuscarPais
Private miMapa As AxMapWinGIS.AxMap 'Variable para recibir el
mapa
Public Sub New(ByVal unMapa As AxMapWinGIS.AxMap)
miMapa = unMapa 'Asigno a la variable el mapa pasado
InitializeComponent()
End Sub

Ahora en el botn Resaltar asignamos:


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Dim encontrado As Boolean 'PAra informar si no existe el
nombre indicado
Dim micapa As New MapWinGIS.Shapefile
encontrado = False
micapa = miMapa.get_GetObject(0) 'Cojo la capa 0 que es la
de los paises por el orden de carga
For i As Integer = 0 To micapa.NumShapes 'recorro las formas
de la capa
If UCase(micapa.CellValue(0, i)) = UCase(txt_pais.Text)
Then 'Comparo el primer campo de cada forma que ser el nombre del
pas

Escuela Politcnica Superior de vila


Universidad de Salamanca

15

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura
'Pongo color amarillo a la forma que se encuentra en
la posicin indicada
miMapa.set_ShapeFillColor(0, i,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Yellow)))
'Para saber que s exista el pas
encontrado = True
Exit Sub 'Salgo para no seguir buscando cuando
encuentro el primero
End If
Next
If Not encontrado Then 'Si no lo ha encontrado se lo indico
MessageBox.Show("No se encontr el Pais", "Resaltar
Paises")
End If
End Sub

Para que nos muestre el formulario aadimos este cdigo en el men:


Private Sub LocalizarPaisToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
LocalizarPaisToolStripMenuItem.Click
Dim localizarPais As New frm_BuscarPais(Mapa) 'Creo una
instancia del formulario para resaltar el pais
localizarPais.Show() 'Le muestro de forma no modal y as
podr seguir trabajando en el mapa
End Sub

Lo ejecutamos y probamos. Con Espaa (Spain), Alemania (Germany) e Italia (Italy)


resaltados nos queda:

Guardamos el proyecto.

Escuela Politcnica Superior de vila


Universidad de Salamanca

16

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

5 Mejorar la apariencia de las capas.


En el ejercicio anterior al cargar capas, Representbamos todas las formas de la capa
con el mismo color. Si queremos aplicar un degradado a los tonos de las formas de una
capa utilizamos esquemas de color.

5.1 Esquemas de color


Para declarar un esquema de color utilizamos la clase ShapefileColorScheme del
espacio de nombres MapWinGIS. Dentro de un esquema de color definimos varios
intervalos, cada uno de ellos puede definir un degradado de colores. La clase que nos
permite definir un intervalo es ShapefileColorBreak.
Crearemos una instancia de la variable con:
esquemaColor = New MapWinGIS.ShapefileColorScheme
Tenemos que asociar el manejador de capa a la capasobre la que queremos crear el
esquema
esquemaColor.LayerHandle = unacapa
Adems hay que indicarle el campo en el que se encuentran los valores que tomaremos
para crear el esquema.
esquemaColor.FieldIndex = 1
Para definir un intervalo creamos la instancia de la variable con:
intervalo = New MapWinGIS.ShapefileColorBreak
Podemos poner un ttulo para la leyenda en la propiedad Caption:
intervalo.Caption = "TITULO DEL INTERVALO"
Indicamos el valor de comienzo del intervalo:
intervalo.StartValue = min
El valor de final:
intervalo.EndValue = max
El color inicial en este caso Rojo:
intervalo.StartColor = Convert.ToUInt32(
Drawing.ColorTranslator.ToOle(Color.Red))
El color final para el degradado en este caso Azul:
intervalo.EndColor = Convert.ToUInt32(
Drawing.ColorTranslator.ToOle(Color.Blue))
Escuela Politcnica Superior de vila
Universidad de Salamanca

17

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Ahora tenemos que aadir el intervalo creado al esquema de color.


esquemaColor.Add(intervalo)
Tambin aplicamos el esquema al mapa
Mapa.ApplyLegendColors(esquemaColor)
Y tenemos que actualizar la leyenda para que aparezca el intervalo aadido en la misma.
Leyenda.Layers.ItemByHandle(unacapa).Refresh()
Se pueden repetir los pasos para establecer las propiedades del intervalo, para crear
varios de ellos, y aadirlos al mismo esquema de color. El color inicial y final del
intervalo podra ser el mismo. Tambin el valor inicial y final sera el mismo si
queremos asignar un color para un valor fijo.

5.2 Aadir etiquetas a una capa segn el texto de uno de los campos.
Puede que en la tabla de atributos asociada a una capa tengamos un campo con
etiquetas que queremos que se visualicen en el mapa.
Si

tenemos

una

capa manejada por una variable formaSF de tipo


podemos recorrer el nmero de formas existentes en la misma

MapWinGIS.Shapefile,

con:
For i = 0 To formaSF.NumShapes - 1
Podemos asignar auna variable de tipo String(texto) el valor del campo en el que se
encuentra la etiqueta para cada forma
texto = formaSF.CellValue(campo, i)
Necesitamos indicarle en qu posicin deber colocar la etiqueta, una posibilidad es
usar las propiedades Extents.xMin y Extents.yMin, y las mismas para las mximas para
calcular el punto medio en orizontal y en vertical de la forma.
x = formaSF.Shape(i).Extents.xMin + ((formaSF.Shape(i).Extents.xMax formaSF.Shape(i).Extents.xMin) / 2)
y = formaSF.Shape(i).Extents.yMin + ((formaSF.Shape(i).Extents.yMax formaSF.Shape(i).Extents.yMin) / 2)

Aadimos la etiqueta al mapa en unacapa, con un color, en la posicin calculada y en


este caso le indicamos la posicin centrada sobre ese punto:
Mapa.AddLabel(unacapa, texto, uncolor, x, y,
MapWinGIS.tkHJustification.hjCenter)

Por ltimo pomos modificar el tipo y el tamao de las etiquetas para la capa que
estamos rotulndo.
Mapa.LayerFont(unacapa, "Times new roman", 8)

Escuela Politcnica Superior de vila


Universidad de Salamanca

18

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

5.3 Rotular capas puntuales con imgenes personalizadas.


As cambiamos el tamao del punto para la capa indicada. Dependiendo de las
dimensiones de la imagen utilizada podemos necesitar modificar el tamao
proporcionado.
Mapa.set_ShapeLayerPointSize(unacapa, 0.8)

Ahora le ponemos que utilice como tipo de punto para la capa uno definido por el
usuario.
Mapa.set_ShapeLayerPointType(unacapa,
MapWinGIS.tkPointType.ptUserDefined)

Creamos una imagen y la cargamos con el icono a utilizar.


Dim simboloimagen As New MapWinGIS.Image
simboloimagen.Open(Application.StartupPath + "estrella.png")

Asociamos a la capa el smbolo cargado


Mapa.set_UDPointType(unacapa, simboloimagen)

6 Crear una interfaz para SIG: AvilaSIG.


Al igual que en el ejercicio anterior, creamos ahora un programa que cargar los
archivos que tengamos preparados y les asignar las propiedades que decidamos.
Creamos otra aplicacin con nombre AvilaSIG, para no repetir la parte de la barra de
botones y el diseo del formulario importaremos el formulario del programa anterior
MundoSIG.
Cuando utilizamos algn componente aadido, en ocasiones nos da problemas la
importacin de un formulario si no hemos cargado la referencia en el proyecto. Para no
cargar las referencias otra vez, Aadimos al form1 un control MapControl y un control
Legend. Luego aadimos el formulario frm_Visor.vb y frm_tabla.vb del ejercicio
anterior en el men Proyecto/Agregar elemento existente, lo localizamos y lo aadimos.
El formulario para consultar por pas no lo necesitamos y podemos borrar la referencia a
l en el men principal, borrando la opcin del men que lo llamaba y la funcin
asociada. En proyecto propiedades del proyecto, en la seccin Aplicacin le indicamos
como formulario de inicio el nuestro.

Borramos el formulario form1 que nos crea con el botn derecho sobre l en el
Explorador de Soluciones y pulsando Eliminar.
Escuela Politcnica Superior de vila
Universidad de Salamanca

19

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Tendramos una aplicacin igual a la de antes. Ahora eliminamos la opcin del men
Consultas. Cargaremos la informacin en el evento Load del formulario. Si
seleccionamos el formulario, en el evento Load, (lo vemos en las propiedades dando al
rayo
), tambin haciendo doble-clic sobre l. Escribimos lo siguiente para cargar la
capa del lmite provincial. Antes deberemos guardar el proyecto y copiar los temas que
se proporcionan en una subcarpeta llamada vila dentro de la carpeta Debug en la
ruta de la aplicacin:
Private Sub frm_Visor_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
Dim formaSF As MapWinGIS.Shapefile 'Nueva Forma a aadir
Dim nombreTema As String 'Nombre del tema para la leyenda
Dim unacapa As Integer 'Variable para manejar la capa
cargada y modificar sus propiedades
'Asignamos el mapa a la leyenda para enlazarlos
Leyenda.Map = Mapa.GetOcx()
'AGREGAMOS EL LIMITE PROVINCIAL DE LA PROVINCIA DE VILA
'Creamos una forma nueva
formaSF = New MapWinGIS.Shapefile
'Cogemos el nombre seleccionado
nombreTema = Application.StartupPath + "\Avila\Avila.shp"
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Ponemos como nombre de la capa en la leyenda el nombre del
archivo
Leyenda.Map.LayerName(unacapa) = "LIMITE PROVINCIAL"
'System.IO.Path.GetFileNameWithoutExtension(nombreTema)
'Cambiamos el grosor de Linea de la capa aadida
Mapa.set_ShapeLayerLineWidth(unacapa, 2)
'Cambiamos el Color de linea de la forma
Mapa.set_ShapeLayerLineColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Black)))
'Cambiamos el Color del relleno de la forma poligonal
Mapa.set_ShapeLayerFillColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Orange)))

Repetiremos el proceso aadiendo a continuacin la capa con la delimitacin de la


comarca de la Zona de Gredos en la provincia de vila. El cdigo queda:
'AGREGAMOS LA DELIMITACIN DE LA COMARCA DE GREDOS
'Creamos una forma nueva
formaSF = New MapWinGIS.Shapefile
'Cogemos el nombre seleccionado
nombreTema = Application.StartupPath + "\Avila\comarca.shp"
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Ponemos como nombre de la capa en la leyenda el nombre del
archivo
Leyenda.Map.LayerName(unacapa) = "COMARCA"
'Cambiamos el grosor de Linea de la capa aadida

Escuela Politcnica Superior de vila


Universidad de Salamanca

20

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura
Leyenda.Map.LayerName(unacapa) = "COMARCA"
'Cambiamos el grosor de Linea de la capa aadida
Mapa.set_ShapeLayerLineWidth(unacapa, 2)
'Cambiamos el Color de linea de la forma
Mapa.set_ShapeLayerLineColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Black)))
'Cambiamos el Color del relleno de la forma poligonal
Mapa.set_ShapeLayerFillColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.OrangeRed)))

La siguiente capa que aadiremos es la capa Gredos.shp que tiene informacin con los
municipios de la comarca.
'AGREGAMOS LOS MUNICIPIOS DE LA ZONA
'Creamos una forma nueva
formaSF = New MapWinGIS.Shapefile
'Cogemos el nombre seleccionado
nombreTema = Application.StartupPath + "\Avila\gredos.shp"
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Ponemos como nombre de la capa en la leyenda el nombre del
archivo
Leyenda.Map.LayerName(unacapa) = "GREDOS"
'System.IO.Path.GetFileNameWithoutExtension(nombreTema)
'Cambiamos el grosor de Linea de la capa aadida
Mapa.set_ShapeLayerLineWidth(unacapa, 2)
'Cambiamos el Color de linea de la forma
Mapa.set_ShapeLayerLineColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Black)))
'Cambiamos el Color del relleno de la forma poligonal
Mapa.set_ShapeLayerFillColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Chocolate)))

Si comparamos los tres bloques de cdigo anteriores comprobaremos que son


prcticamente iguales, solo cambiamos el nombre del SHP cargado, el ttulo para la
leyenda y el color de relleno de la capa.
Vamos a ejecutar el programa. Vemos el aspecto:

Escuela Politcnica Superior de vila


Universidad de Salamanca

21

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Seleccionamos la capa GREDOS en la leyenda y accedemos al men Atributos/Ver


tabla. Nos presentar:

Si nos fijamos la segunda columna presenta el campo Area con la superficie de los
municipios en m2. La columna Hectares tiene la superficie en Hectreas. El campo area
aunque es la segunda columna tiene el ndice 1, ya que los ndices para manejar campos
comienzan en 0. Aprovechamos los valores de esta columna para crear un esquema de
color segn la superficie. Utilizamos las clases comentadas en el captulo anterior para
esquemas de color.
'CREAR ESQUEMA DE COLOR PARA LA CAPA GREDOS SEGUN LA
SUPERFICIE DE LOS MUNICIPIOS
Dim esquemaColor As MapWinGIS.ShapefileColorScheme
Dim intervalo As MapWinGIS.ShapefileColorBreak
Dim i As Long
Dim min, max As Double
'Creamos una forma nueva
formaSF = New MapWinGIS.Shapefile
'Cogemos el nombre seleccionado
nombreTema = Application.StartupPath + "\Avila\gredos.shp"
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'Buscamos el mayor y el menor de los valores para el campo 1
que es el rea
For i = 0 To formaSF.NumShapes - 1
If i = 0 Then
max = formaSF.CellValue(1, i)
min = formaSF.CellValue(1, i)
End If
If formaSF.CellValue(1, i) > max Then
max = formaSF.CellValue(1, i)
ElseIf formaSF.CellValue(1, i) < min Then
min = formaSF.CellValue(1, i)
End If
Next

En esta primera parte declaramos las variables que utilizaremos, entre ellas la
correspondiente al esquema de color y la correspondiente al intervalo.
Escuela Politcnica Superior de vila
Universidad de Salamanca

22

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Al final de este bloque recorremos todas las formas de la capa analizando el valor del
rea, comparamos con el almacenado para las variables max y min, de modo que al
terminar el recorrido, estas variables tendrn el valor menor para el rea y el valor
mayor respectivamente.
Ahora continuamos creando el esquema de color:
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Ponemos como nombre de la capa en la leyenda el nombre del
archivo
Leyenda.Map.LayerName(unacapa) = "MUNICIPIOS DE GREDOS"
'Cambiamos el Color del relleno de la forma poligonal
Mapa.set_ShapeLayerFillColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.LightSteelBlue)
))
'Creamos un objeto Esquema de Color asociado al campo 1
esquemaColor = New MapWinGIS.ShapefileColorScheme
esquemaColor.LayerHandle = unacapa
esquemaColor.FieldIndex = 1
'Creamos un degradado del mayor al menor de los valores
intervalo = New MapWinGIS.ShapefileColorBreak
'Ttulo para el intervalo
intervalo.Caption = "Degradado segn superficie"
'Valor de comienzo la superficie mnima de las existentes
intervalo.StartValue = min
'Valor de final, la superficie mayor
intervalo.EndValue = max
'Color de comienzo en este caso Azul claro metalizado
intervalo.StartColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.LightSteelBlue)
)
'Color de fin Verde
intervalo.EndColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Green))
'Aadimos el intervalo
esquemaColor.Add(intervalo)
'Aplicamos el esquema al mapa
Mapa.ApplyLegendColors(esquemaColor)
'Refrescamos la leyenda para que refleje el degradado
Leyenda.Layers.ItemByHandle(unacapa).Refresh()

Vamos a ejecutar el programa y comprobamos el aspecto que presenta el degradado, as


como la leyenda con el intervalo aadido.

Escuela Politcnica Superior de vila


Universidad de Salamanca

23

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Intentaremos ahora el uso de etiquetas para la capa Municipios de Gredos que acabamos
de aadir. Si volvemos a mirar la tabla de datos mostrada anteriormente nos daremos
cuenta que la primera columna contiene los nombres de los municipios. Esas son las
etiquetas que queremos colocar.
'COLOCAMOS LOS NOMBRES DE LOS MUNICIPIOS COMO ETIQUETAS
Dim campo As Integer
Dim texto As String
Dim x As Double, y As Double
Dim uncolor As UInt32
'Asignamos a la variable el manejador de la capa 3, la 4
que es la que vamos a rotular
unacapa = Mapa.get_LayerHandle(3)
'Asignamos a la variable de forma la capa anterior
formaSF = Mapa.get_GetObject(unacapa)
'Asignamos el campo que contiene los rtulos, el 0
campo = 0
'Para no tener una llamada a la funcin muy larga asignamos
el color a esta variable
uncolor =
System.Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Black))
'Recorremos todas las formas de los municipios para poner el
nombre a cada una
For i = 0 To formaSF.NumShapes - 1
'Tomamos en la variable texto el nombre que est en la
columna 0 y fila la forma contemplada
texto = formaSF.CellValue(campo, i)
'Calculamos la x y la y dnde colocar los textos. Ser
el centro aproximado de la forma
x = formaSF.Shape(i).Extents.xMin +
((formaSF.Shape(i).Extents.xMax - formaSF.Shape(i).Extents.xMin) / 2)
y = formaSF.Shape(i).Extents.yMin +
((formaSF.Shape(i).Extents.yMax - formaSF.Shape(i).Extents.yMin) / 2)

'Aadimos la etiqueta a la capa en la posicin y con el


color indicados. La colocamos centrada
Mapa.AddLabel(unacapa, texto, uncolor, x, y,
MapWinGIS.tkHJustification.hjCenter)
'Indicamos el tamao del texto y el tipo de letra
Mapa.LayerFont(unacapa, "Times new roman", 8)
Next

Si lo ejecutamos y ampliamos a la zona de la comarca tendremos:

Escuela Politcnica Superior de vila


Universidad de Salamanca

24

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

6.1 Crear esquema de color con varios intervalos.


En la tabla de atributos de la capa Gredos.shp, tenemos un campo con nombre
Causalidad:

En ese campo los valores son: Muy alto, Alto, Moderado, Bajo, Muy bajo. Queremos
asignar un color para cada uno de los valores. Utilizaremos esquemas de color, con
varios intervalos uno para cada valor:
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Ponemos el nombre de la capa en la leyenda
Leyenda.Map.LayerName(unacapa) = "RIESGO INCENDIOS"
'Cambiamos el Color del relleno de la forma poligonal
Mapa.set_ShapeLayerFillColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Red)))
'Creamos un objeto Esquema de Color asociado al campo 1
esquemaColor = New MapWinGIS.ShapefileColorScheme
'Le asociamos el manejador a la capa
esquemaColor.LayerHandle = unacapa
'El campo que tiene los valores es el 6
esquemaColor.FieldIndex = 6
'Creamos un intervalo para el valor muy alto
intervalo = New MapWinGIS.ShapefileColorBreak
'Titulo del intervalo
intervalo.Caption = "MUY ALTO"
intervalo.StartValue = "Muy alto" 'Cuidado con la
coincidencia exacta. Tambin sensible a maysculas
intervalo.EndValue = "Muy alto" 'Mismo valor de final
intervalo.StartColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.DarkRed))
'Color de comienzo y fin iguales
intervalo.EndColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.DarkRed))
'Aadimos el intervalo
esquemaColor.Add(intervalo)

Hasta aqu hemos creado el esquema, y el primer intervalo para el valor Muy alto,
ponemos un nico color y un nico valor en comienzo y fin.
Escuela Politcnica Superior de vila
Universidad de Salamanca

25

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Vamos con los siguientes intervalos. Como vemos solo cambian los ttulos, valores y
colores, se van aadiendo al esquema cada uno de ellos. Al final aplicamos el esquema
al mapa y reflejamos la leyenda:
'Creamos un intervalo para el valor alto
intervalo = New MapWinGIS.ShapefileColorBreak
intervalo.Caption = "ALTO"
intervalo.StartValue = "Alto"
intervalo.EndValue = "Alto"
intervalo.StartColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Red))
intervalo.EndColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Red))
'Aadimos el intervalo
esquemaColor.Add(intervalo)
'Creamos un intervalo para el valor moderado
intervalo = New MapWinGIS.ShapefileColorBreak
intervalo.Caption = "MODERADO"
intervalo.StartValue = "Moderado"
intervalo.EndValue = "Moderado"
intervalo.StartColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Orange))
intervalo.EndColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Orange))
'Aadimos el intervalo
esquemaColor.Add(intervalo)
'Creamos un intervalo para el valor bajo
intervalo = New MapWinGIS.ShapefileColorBreak
intervalo.Caption = "BAJO"
intervalo.StartValue = "Bajo"
intervalo.EndValue = "Bajo"
intervalo.StartColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Yellow))
intervalo.EndColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Yellow))
'Aadimos el intervalo
esquemaColor.Add(intervalo)
'Creamos un intervalo para el valor muy bajo
intervalo = New MapWinGIS.ShapefileColorBreak
intervalo.Caption = "MUY BAJO"
intervalo.StartValue = "Muy bajo"
intervalo.EndValue = "Muy bajo"
intervalo.StartColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.LightYellow))
intervalo.EndColor =
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.LightYellow))
'Aadimos el intervalo
esquemaColor.Add(intervalo)
'Aplicamos el esquema al mapa
Mapa.ApplyLegendColors(esquemaColor)
'Refrescamos la leyenda para que refleje el degradado
Leyenda.Layers.ItemByHandle(unacapa).Refresh()
End Sub

Escuela Politcnica Superior de vila


Universidad de Salamanca

26

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Ejecutamos el programa de nuevo:

Guardamos el Proyecto.

7 Cargar capa de tipo imagen.


Recuperamos el programa MundoSIG de unos ejercicios atrs. Vamos a cargar una capa
de tipo Imagen como fondo a modo del fondo ocenico. Para ello copiamos la carpeta
mundo con los archivos necesarios a la carpeta Debug en la ruta del programa,
normalmente en:
Mis documentos\Visual Studio 2005\Projects\MundoSIG\MundoSIG\bin\Debug
Ahora hacemos doble-clic sobre el ttulo del formulario frm_visor de esta aplicacin y
aadimos en el Form_Load, como primera capa la imagen del fondo marino.
'Debajo de la lnea Leyenda.Map = Mapa.GetOcx()
'AGREGAMOS EL FONDO OCENICO QUE ES UNA CAPA IMAGEN
Dim formaImagen As MapWinGIS.Image
'Creamos una imagen nueva
formaImagen = New MapWinGIS.Image
'Cogemos el nombre seleccionado
nombreTema = Application.StartupPath + "\Mundo\image.bmp"
'Abrimos el archivo indicado como Objeto Imagen
formaImagen.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaImagen, True)
'Ponemos como nombre de la capa el indicado
Leyenda.Map.LayerName(unacapa) = "FONDO OCENICO"

Escuela Politcnica Superior de vila


Universidad de Salamanca

27

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Si probamos a ejecutarlo comprobamos el fondo cargado.

7.1 Cargar smbolo de tipo imagen.


En el cdigo que tenamos para cargar el rombo en la capa puntual de las ciudades,
hacemos algunas modificaciones para que tome como smbolo una imagen.
Este es el cdigo actual:
'AGREGAMOS LAS CAPITALES QUE ES UNA CAPA CON INFORMACIN PUNTUAL
'Creamos una forma nueva
formaSF = New MapWinGIS.Shapefile
'Cogemos el nombre seleccionado
nombreTema = Application.StartupPath +
"\Mundo\cities_capital_pt.shp"
'Abrimos el archivo indicado como Objeto de forma
formaSF.Open(nombreTema)
'aadimos la capa a la leyenda
unacapa = Leyenda.Layers.Add(formaSF, True)
'Ponemos como nombre de la capa en la leyenda el nombre del
archivo
Leyenda.Map.LayerName(unacapa) = "CAPITALES"
'Cambiamos el grosor de Linea de la capa aadida
Mapa.set_ShapeLayerLineWidth(unacapa, 1)
'Cambiamos el Color de los puntos de la forma
Mapa.set_ShapeLayerPointColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Red)))
'Indicamos el tamao del punto
Mapa.set_ShapeLayerPointSize(unacapa, 6)
'Especificamos la forma del punto.
Mapa.set_ShapeLayerPointType(unacapa,
MapWinGIS.tkPointType.ptDiamond)

Cambiamos las ltimas lneas desde el color para dejar:


Mapa.set_ShapeLayerPointColor(unacapa,
Convert.ToUInt32(Drawing.ColorTranslator.ToOle(Color.Red)))
'Como smbolo una foto con forma de estrella en vez de los
smbolos predeterminados.
Mapa.set_ShapeLayerPointSize(unacapa, 0.8)
'Asignamos el punto a la capa como definido por el usuario
Mapa.set_ShapeLayerPointType(unacapa,
MapWinGIS.tkPointType.ptUserDefined)
'Creamos el nuevo objeto imagen
Dim simboloimagen As New MapWinGIS.Image
'Cargamos la imagen
simboloimagen.Open(Application.StartupPath +
"\Mundo\estrella.png")
'Le asignamos el smbolo cargado al mapa
Mapa.set_UDPointType(unacapa, simboloimagen)

Probamos a ejecutar el programa para contemplar la apariencia que nos ofrecen los
cambios introducidos:

Escuela Politcnica Superior de vila


Universidad de Salamanca

28

Herram. Inf. para el Geoprocesado. Procesamiento y Gestin de datos GPS y SIG


Geotecnologas Cartogrficas en Ingeniera y Arquitectura

Guardamos el Proyecto.

Escuela Politcnica Superior de vila


Universidad de Salamanca

29

También podría gustarte