Está en la página 1de 7

La programacin en ArcGIS utilizando Visual Basic para Aplicaciones

Al igual que muchos programas de Windows, ArcGIS soporta Visual Basic para Aplicaciones (VBA). Tambin es compatible con Visual Basic e integra los archivos DLL que
se crearon con Visual Basic utilizando ESRI complementos. Ambos ambientes son apoyados a travs de la ayuda de apoyo ArcObjects desarrolladores en lnea.
Este ejercicio tiene su a travs del entorno de programacin VBA y dos Arcmap procesos cdigo en VBA.
Cmo acceder al entorno de VBA en ArcGIS
programacin VBA es accesible a travs de las herramientas-> opciones de macros-> men de Visual Basic Editor. Ver esta ventana al hacer clic en el Editor:
Pero antes de empezar:
- Para su informacin: Cmo ayudar a
Hay ayuda disponible amplia. En primer lugar, la ayuda en ArcObjects Desarrolladores (para VB, disponible desde el men Inicio -> Todos los
programas -> rbol ArcGIS) contiene todos los objetos, mtodos y propiedades que estn disponibles a travs de VB y VBA para ArcGIS.
En segundo lugar, ayudar a VBA est disponible en el men Ayuda en la ventana de VBA.
En tercer lugar, se puede encontrar ayuda, o no, utilizando el sitio web http://forums.esri.com. Usted puede buscar comandos especficos y ver lo que la
gente tena problemas, o cmo los utiliza, y tambin hacer preguntas. Necesitas ser usuario registrado para poder hacer preguntas. No hay cuota de
inscripcin para este servicio.
Volver a comenzar con el programa:
Usted puede agregar macros y formularios utilizando la interfaz de Visual Basic. Ambos pueden ser llamados directamente desde ArcGIS. Agrega las formas y los mdulos
usando la opcin de men Insertar. Los mdulos pueden contener subrutinas (Sub) y funciones. (Sub no devuelven valores mientras que las funciones no devuelven valores
Ambos pueden ser llamados con argumentos. - Los valores de las variables que el programa utiliza.) En este ejercicio agregar ambos.
Agrega las macros a travs del ArcGIS personalizar botn (en la opcin de men Herramientas):
11/04/2011 La programacin en ArcGIS
web.mit.edu//programming_iap2006/ 1/7
Este es vaca, como la ventana Personalizar debe ser. Una vez que haya esta ventana abierta, con una macro funcionamiento (o secundaria), puede agregar la macro como un
botn de cualquier barra de herramientas. Tambin puede hacer una nueva barra de herramientas y aadir la macro a la misma.
Una estructura general para interactuar con ArcGIS
Una estructura comn para la interaccin con ArcGIS travs de VB o VBA es tener un botn en una barra de herramientas que se pide un formulario. (Para usuarios de
ArcGIS, esto debe parecer una experiencia comn.) Una vez que haya una forma, usted tiene el usuario introduzca informacin en el formulario. El formulario tiene un botn
que hace que una accin, como el procesamiento de algunos datos o la adicin de una capa en el mapa. El cdigo de procesamiento puede ser aadido directamente a la
forma. Un diagrama esquemtico de la interaccin tpica podra tener este aspecto:
Vamos a utilizar esta estructura ms tarde, pero por ahora vamos a crear una macro simple que llama a un cuadro de mensaje con el mensaje "Hola a todos".
Un ejemplo rpido, Hola a todos
En este ejemplo, crear una macro simple que llama a un cuadro de mensaje, con un mensaje muy simple. Usted va a trabajar en la ventana de Microsoft Visual Basic.
Cambiar a la ventana Normal.Mxt (lo que significa que las macros se guardan de manera que sean visibles en ArcMap, en lugar de slo visible en el proyecto que se est
trabajando en (que debe estar en blanco). Comience por la insercin de un nuevo mdulo ( bajo la opcin del men Insertar). Una vez hecho esto, debera ver una ventana de
texto en la ventana de VB. Buscar la ventana Propiedades en la esquina inferior derecha de la pantalla. Cambie el nombre del mdulo para HelloWorld. Escriba el siguiente
texto en esta ventana (el anuncio de que el "fin de lnea Sub se agrega automticamente cuando se escribe en la lnea de sub):
Sub Hola ()
MsgBox "Hola a todos", vbExclamation, "Primer Programa"
End Sub
Tenga en cuenta que a medida que las funciones de tipo (como MsgBox), la estructura de la funcin se ilustra para usted. As que ya sabes que "Hola, mundo" es el
vbExclamation del sistema, es la variable vbMsgBoxStyle, y "Primer Programa" es el ttulo. Esta caracterstica de VB es muy til para obtener ms complicado mtodo de
ArcGIS y propiedades que se van a utilizar.
Para agregar la macro, abra la ventana Personalizar (en el men Herramientas). Ahora debera ver la macro:
11/04/2011 La programacin en ArcGIS
web.mit.edu//programming_iap2006/ 2/7
Para agregar la macro a una barra de herramientas, basta con arrastrar el icono de la ventana de personalizar a cualquier barra de herramientas. Ms tarde, para quitar el
icono, arrstrelo desde la barra de herramientas de nuevo a la abierta ventana Personalizar.
Para ejecutar la macro, haga clic en l. Funciona?
Llamar a un formulario desde una macro
Volviendo a la estructura anterior, vamos a aadir un formulario, entonces lo llaman. Por ahora, el formulario tiene un solo botn, que se cierra.
En primer lugar, cierre el mdulo HelloWorld a continuacin, crear un nuevo mdulo (de nuevo, en el men Insertar). Llame a este mdulo "AbrirFormulario". A continuacin,
inserte un formulario. Una vez que el formulario est abierto, podrs ver esta paleta de herramientas:
Estos son los widgets que se pueden agregar al formulario. Antes de agregar un widget, cambiar las propiedades del formulario. Su nombre debera ser "frmTest" y muestra su
ttulo debera ser "Formulario de Prueba". A continuacin, agregue un control, un botn de comando (segunda fila, a la derecha). Cambiar el nombre a "btnClose" y el ttulo
cerca. Haga doble clic en el botn CloseForm. Ahora debera ver una ventana de cdigo que est asociado con el formulario. Usted debe centrarse en el subcontinente que se
llama cuando se hace clic en el botn. El cdigo en el sub debe tener este aspecto:
Private Sub btnClose_Click ()
End Sub
Aadir "me.hide" a este sub. "Yo" es la forma misma manera que el mtodo es "ocultar", el objeto es la forma. Esto har que la forma de ocultar.
Cuando el formulario est activo (en lugar del botn de comando), que la ventana debe tener este aspecto:
11/04/2011 La programacin en ArcGIS
web.mit.edu//programming_iap2006/ 3/7
Ahora abra el mdulo AbrirFormulario. Comience escribiendo el nombre de la subregin, "abrelatas", precedido por "Sub". Ntese de nuevo que la lnea End Sub se aade
automticamente. A continuacin aadimos la lnea:
Carga frmTest
Esto carga el formulario para que pueda ser utilizado. Ahora muestra el formulario. Comience a escribir el nombre del formulario en la siguiente lnea. Una de las opciones
disponibles con un formulario se muestran. Tipo "." a continuacin, escriba S. Usted debe ver "espectculo" (puede que tenga que scrool abajo en la lista que aparece antes de
verlo). Haga clic en l. Ahora el cdigo est listo.
Recordemos cmo se agreg la primera macro. Abra la ventana de personalizar. Si el primer botn est ah, arrastrarlo a la ventana de personalizar. Dibuja el icono de la
nueva macro a cualquier barra de herramientas. Lo hace todo el trabajo?
Lectura de una variable en un campo en un formulario
Ahora vamos a obtener un valor del formulario y lo mostramos. Usted tendr que aadir tres widgets, una etiqueta, un campo de texto y un botn de comando. Cambiar el
ttulo de la etiqueta "Escriba el nombre de marcos alemanes". Cambie el nombre del campo de texto para txtDEMname. Cambiar el ttulo del botn de comando para
"Nombre de impresin".
11/04/2011 La programacin en ArcGIS
web.mit.edu//programming_iap2006/ 4/7
A continuacin, haga doble clic en el botn de comando para acceder al submen que se ejecuta cuando se pulsa el botn. Aadir este texto:
Dim DEMname As String
DEMname = Me.txtDEMname.Text
MsgBox DEMname
Las dimensiones instruccin Dim una variable como una cadena. La siguiente sentencia saca el texto en el campo txtDEMname y lo carga en la variable DEMname. Por ltimo,
la instruccin MsgBox muestra el nombre en un cuadro de mensaje.
Aadir una capa en el mapa
Ahora vamos a ver la interaccin con Arcmap directamente. En esta parte del ejercicio, vamos a aadir una capa de mapa de bits de datos para el mapa. Si usted no tiene un
DEM, siga las instrucciones del instructor.
Primero que hay que aadir una nueva etiqueta de texto a la forma y un nuevo campo de texto. El nuevo campo de texto debe ser txtDEMfolder llamada. Tambin debe
cambiar el ttulo de "Nombre de impresin" a "Aadir marcos alemanes". Su forma debe parecerse a esto:
11/04/2011 La programacin en ArcGIS
web.mit.edu//programming_iap2006/ 5/7
Ahora agregue el cdigo para la opcin "Aadir DEM" botn. Este es el cdigo:
Dim SDIR As String
Dim DEMname As String
SDIR = Me.txtDEMfolder.Text
DEMname = Me.txtDEMname.Text
'Abrir conjunto de datos raster en un espacio de trabajo
Dim pWsFact Como IWorkspaceFactory
Dim PWS Como IRasterWorkspace
'Crear un espacio de trabajo de la fbrica para abrir un espacio de trabajo (una carpeta) donde se almacena el DEM
Establecer pWsFact = Nueva RasterWorkspaceFactory
Establecer PWS = pWsFact.OpenFromFile (SDIR, 0)
Dim RasterData Como IRasterDataset
Establecer RasterData = pWS.OpenRasterDataset (DEMname)
pWsFact Set = Nothing
Establecer PWS Nada =
'Crear una capa de trama. Utilice el mtodo CreateFromRaster la hora de crear a partir de una trama.
Dim pRasterLy Como IRasterLayer
Establecer pRasterLy = Nueva RasterLayer
pRasterLy.CreateFromDataset RasterData
"Aadir la capa de trama a ArcMap
Dim pMxDoc Como IMxDocument
Establecer pMxDoc = ThisDocument
pMxDoc.FocusMap.AddLayer pRasterLy
pMxDoc.ActiveView.Refresh
Puede copiar el cdigo de la addlayercode.txt archivo de texto.
Este cdigo carga primero las variables que contiene la carpeta y el nombre de marcos alemanes. A continuacin, se abre el espacio de trabajo y encuentra el DEM como
IRasterDataset. A continuacin, crea una capa de trama, y aade que la capa al mapa.
Pruebe a ejecutar el cdigo y permitir que el instructor de saber si usted tiene algn problema.
Caminar a travs de concurso
Crear un script que hace que la capa invisible de marcos alemanes. Para hacer esto usted tendr que encontrar el documento y su Focusmap. Hay mtodos para la Focusmap
que devuelve capas. Supongamos que el DEM es la primera capa (o ndice = 0 - que es la primera celda de una matriz en la mayora de los lenguajes de programacin). Una
vez que encuentre la capa, se supone que hay una propiedad de una capa que se puede fijar como visible o invisible. Usted tendr que utilizar los desarrolladores ArcObjects
Ayuda para esto.
Vamos a trabajar en esto durante 15 minutos, tomar un descanso, y luego caminar a travs de la solucin.
11/04/2011 La programacin en ArcGIS
web.mit.edu//programming_iap2006/ 6/7
Procesamiento de datos de la trama mediante la interfaz de IRasterModel
En esta seccin podr aplicar y evaluar una pieza mayor de cdigo. A continuacin, modificar el cdigo para no tomar un paso adicional en el programa original.
En primer lugar, crear una red de pendiente para el DEM. A continuacin, aadir un nuevo botn a su formulario. Cambiar el ttulo de "Proceso de marcos alemanes". A
continuacin, agregue el cdigo de processdemcode.txt en el sub que se ejecuta cuando se hace clic en este botn. A continuacin aadimos las funciones complementarias
(que se encuentra capas y otras tareas de gestin de datos raster) de supplementalprocesscode.txt en el cdigo de la ventana del formulario en la parte inferior - despus de la
Subcomisin para el proceso de finalizacin del cdigo de marcos alemanes.
Los elementos clave de este cdigo son estas lneas:
"Mapa Especifique lgebra expresin, vbLf usar para crear lneas separadas
pRasModel.Script = "[SALIDA 1] = [dem] / 12 * 39.37" vbLf + + _
"[Salida 2] = ([pendiente] <3.0 y [dem] <400)> 0"
'Mapa de ejecucin lgebra expresin (s)
pRasModel.Execute
Este cdigo utiliza un IRasterModel para ejecutar una operacin que podra usar en la calculadora de mapa de bits.
El cdigo tambin se encuentra la salida de estas operaciones (hay dos tramas de salida) y los agrega como capas en el mapa. El raster de salida primero convierte las
unidades de marcos alemanes Z de metros a pies. El segundo crea una salida binaria - 1, donde la pendiente es menor que 3 grados (ya que el mapa de pendientes ejemplo es
en grados) y la elevacin de la original es de 400 metros de marcos alemanes, y 0 en el resto del DEM.
Antes de ejecutar el cdigo que tendr que alterar el cdigo de processdemxode.txt de modo que la dimensin original de la variable de aplicacin y ajuste de esta variable se
eliminan y su sustitucin por una referencia a la aplicacin (que es universalmente disponibles en VBA) y documento de la . El cdigo para que esto podra tener este aspecto:
MyDocumentVariable = Application.Document
Prueba este cdigo y que el profesor sabe cmo funcionaba.
Cuestionario: Modificar el cdigo de la trama
Modificar el cdigo para que una tercera capa de trama se crea en el IRasterModel. Esta trama debe tener la elevacin de slo aquellas clulas que cumplen con las
condiciones en el segundo paso actual del modelo. Usted debe asumir que la trama que ya ha producido no est disponible (por lo tanto su clculo debe incluir este).
Recordemos que los lugares fueron la condicin es verdadera, el valor de la celda es una trama. Puede multiplicar este para obtener el valor de marcos alemanes. Usted tendr
que buscar la forma en que la salida es manipulado en una capa de mapa de bits y se agrega al mapa.
A dnde ir desde aqu
Utilice los ejemplos!

11/04/2011 La programacin en ArcGIS
web.mit.edu//programming_iap2006/ 7/7

También podría gustarte