Anda di halaman 1dari 7

11/04/2011 La programación en ArcGIS

La programación en ArcGIS utilizando Visual Basic para Aplicaciones

Al igual que muchos programas de Windows, ArcGIS soporta Visual Basic para Aplicaciones (VBA). También es compatible con Visual Basic e integra los archivos DLL que
se crearon con Visual Basic utilizando ESRI complementos. Ambos ambientes son apoyados a través de la ayuda de apoyo ArcObjects desarrolladores en línea.

Este ejercicio tiene su a través del entorno de programación VBA y dos Arcmap procesos código en VBA.

Cómo acceder al entorno de VBA en ArcGIS

programación VBA es accesible a través 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 información: Cómo 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, métodos y propiedades que están disponibles a través 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 específicos y ver lo que la
gente tenía problemas, o cómo los utiliza, y también hacer preguntas. Necesitas ser usuario registrado para poder hacer preguntas. No hay cuota de
inscripción 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 módulos
usando la opción de menú Insertar. Los módulos 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 través del ArcGIS personalizar botón (en la opción de menú Herramientas):

web.mit.edu/…/programming_iap2006/ 1/7
11/04/2011 La programación en ArcGIS

Este es vacía, 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
botón de cualquier barra de herramientas. También puede hacer una nueva barra de herramientas y añadir la macro a la misma.

Una estructura general para interactuar con ArcGIS

Una estructura común para la interacción con ArcGIS través de VB o VBA es tener un botón en una barra de herramientas que se pide un formulario. (Para usuarios de
ArcGIS, esto debe parecer una experiencia común.) Una vez que haya una forma, usted tiene el usuario introduzca información en el formulario. El formulario tiene un botón
que hace que una acción, como el procesamiento de algunos datos o la adición de una capa en el mapa. El código de procesamiento puede ser añadido directamente a la
forma. Un diagrama esquemático de la interacción típica podría tener este aspecto:

Vamos a utilizar esta estructura más 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 rápido, 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 sólo visible en el proyecto que se está
trabajando en (que debe estar en blanco). Comience por la inserción de un nuevo módulo ( bajo la opción del menú Insertar). Una vez hecho esto, debería 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 módulo para HelloWorld. Escriba el siguiente
texto en esta ventana (el anuncio de que el "fin de línea Sub se agrega automáticamente cuando se escribe en la línea 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 función 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 título. Esta característica de VB es muy útil para obtener más complicado método de
ArcGIS y propiedades que se van a utilizar.

Para agregar la macro, abra la ventana Personalizar (en el menú Herramientas). Ahora debería ver la macro:

web.mit.edu/…/programming_iap2006/ 2/7
11/04/2011 La programación en ArcGIS

Para agregar la macro a una barra de herramientas, basta con arrastrar el icono de la ventana de personalizar a cualquier barra de herramientas. Más tarde, para quitar el
icono, arrástrelo 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 añadir un formulario, entonces lo llaman. Por ahora, el formulario tiene un solo botón, que se cierra.

En primer lugar, cierre el módulo HelloWorld a continuación, crear un nuevo módulo (de nuevo, en el menú Insertar). Llame a este módulo "AbrirFormulario". A continuación,
inserte un formulario. Una vez que el formulario está abierto, podrás 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 debería ser "frmTest" y muestra su
título debería ser "Formulario de Prueba". A continuación, agregue un control, un botón de comando (segunda fila, a la derecha). Cambiar el nombre a "btnClose" y el título
cerca. Haga doble clic en el botón CloseForm. Ahora debería ver una ventana de código que está asociado con el formulario. Usted debe centrarse en el subcontinente que se
llama cuando se hace clic en el botón. El código en el sub debe tener este aspecto:

Private Sub btnClose_Click ()

End Sub

Añadir "me.hide" a este sub. "Yo" es la forma misma manera que el método es "ocultar", el objeto es la forma. Esto hará que la forma de ocultar.

Cuando el formulario está activo (en lugar del botón de comando), que la ventana debe tener este aspecto:

web.mit.edu/…/programming_iap2006/ 3/7
11/04/2011 La programación en ArcGIS

Ahora abra el módulo AbrirFormulario. Comience escribiendo el nombre de la subregión, "abrelatas", precedido por "Sub". Nótese de nuevo que la línea End Sub se añade
automáticamente. A continuación añadimos la línea:

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 línea. Una de las opciones
disponibles con un formulario se muestran. Tipo "." a continuación, escriba S. Usted debe ver "espectáculo" (puede que tenga que scrool abajo en la lista que aparece antes de
verlo). Haga clic en él. Ahora el código está listo.

Recordemos cómo se agregó la primera macro. Abra la ventana de personalizar. Si el primer botón 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 añadir tres widgets, una etiqueta, un campo de texto y un botón de comando. Cambiar el
título de la etiqueta "Escriba el nombre de marcos alemanes". Cambie el nombre del campo de texto para txtDEMname. Cambiar el título del botón de comando para
"Nombre de impresión".

web.mit.edu/…/programming_iap2006/ 4/7
11/04/2011 La programación en ArcGIS

A continuación, haga doble clic en el botón de comando para acceder al submenú que se ejecuta cuando se pulsa el botón. Añadir este texto:

Dim DEMname As String


DEMname = Me.txtDEMname.Text
MsgBox DEMname

Las dimensiones instrucción 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 instrucción MsgBox muestra el nombre en un cuadro de mensaje.

Añadir una capa en el mapa

Ahora vamos a ver la interacción con Arcmap directamente. En esta parte del ejercicio, vamos a añadir 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 añadir una nueva etiqueta de texto a la forma y un nuevo campo de texto. El nuevo campo de texto debe ser txtDEMfolder llamada. También debe
cambiar el título de "Nombre de impresión" a "Añadir marcos alemanes". Su forma debe parecerse a esto:

web.mit.edu/…/programming_iap2006/ 5/7
11/04/2011 La programación en ArcGIS

Ahora agregue el código para la opción "Añadir DEM" botón. Este es el código:

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 fábrica 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 método CreateFromRaster la hora de crear a partir de una trama.
Dim pRasterLy Como IRasterLayer
Establecer pRasterLy = Nueva RasterLayer
pRasterLy.CreateFromDataset RasterData

"Añadir la capa de trama a ArcMap


Dim pMxDoc Como IMxDocument
Establecer pMxDoc = ThisDocument
pMxDoc.FocusMap.AddLayer pRasterLy
pMxDoc.ActiveView.Refresh

Puede copiar el código de la addlayercode.txt archivo de texto.

Este código carga primero las variables que contiene la carpeta y el nombre de marcos alemanes. A continuación, se abre el espacio de trabajo y encuentra el DEM como
IRasterDataset. A continuación, crea una capa de trama, y ​añade que la capa al mapa.

Pruebe a ejecutar el código y permitir que el instructor de saber si usted tiene algún problema.

Caminar a través 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 métodos 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 mayoría de los lenguajes de programación). 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 través de la solución.

web.mit.edu/…/programming_iap2006/ 6/7
11/04/2011 La programación en ArcGIS
Procesamiento de datos de la trama mediante la interfaz de IRasterModel

En esta sección podrá aplicar y evaluar una pieza mayor de código. A continuación, modificar el código para no tomar un paso adicional en el programa original.

En primer lugar, crear una red de pendiente para el DEM. A continuación, añadir un nuevo botón a su formulario. Cambiar el título de "Proceso de marcos alemanes". A
continuación, agregue el código de processdemcode.txt en el sub que se ejecuta cuando se hace clic en este botón. A continuación añadimos las funciones complementarias
(que se encuentra capas y otras tareas de gestión de datos raster) de supplementalprocesscode.txt en el código de la ventana del formulario en la parte inferior - después de la
Subcomisión para el proceso de finalización del código de marcos alemanes.

Los elementos clave de este código son estas líneas:

"Mapa Especifique álgebra expresión, vbLf usar para crear líneas separadas
pRasModel.Script = "[SALIDA 1] = [dem] / 12 * 39.37" vbLf + + _
"[Salida 2] = ([pendiente] <3.0 y [dem] <400)> 0"
'Mapa de ejecución álgebra expresión (s)
pRasModel.Execute

Este código utiliza un IRasterModel para ejecutar una operación que podría usar en la calculadora de mapa de bits.

El código también 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 elevación de la original es de 400 metros de marcos alemanes, y 0 en el resto del DEM.

Antes de ejecutar el código que tendrá que alterar el código de processdemxode.txt de modo que la dimensión original de la variable de aplicación y ajuste de esta variable se
eliminan y su sustitución por una referencia a la aplicación (que es universalmente disponibles en VBA) y documento de la . El código para que esto podría tener este aspecto:

MyDocumentVariable = Application.Document

Prueba este código y que el profesor sabe cómo funcionaba.

Cuestionario: Modificar el código de la trama

Modificar el código para que una tercera capa de trama se crea en el IRasterModel. Esta trama debe tener la elevación de sólo aquellas células 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 cálculo debe incluir este).
Recordemos que los lugares fueron la condición 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 dónde ir desde aquí

Utilice los ejemplos!

web.mit.edu/…/programming_iap2006/ 7/7

Anda mungkin juga menyukai