Customização | VBA e ArcObjects

Após uma longa semana quebrando a cabeça com uma customização gostaria de compartilhar um pouco da minha nova experiência com VBA e ArcObjects.

Não assustem mas esta semana como diz meu amigo sujei as mãos com VBA (Não entendem isto como ofensa.). Precisei desenvolver uma customização com uma linguagem rápida e aceitavel ao framework que estava trabalhando chamado ArcObject.

Como profissionais de TI, cientistas, engenheiros, não podemos nos fechar em uma única tecnologia. Mas sim nos atermos a solução.=)

O ArcObject é utilizado  em uma ferramenta GIS criada pela ESRI chamada de ArcMap que é conhecida também como um SIG ou seja todo mapeamento desde estradas ao tipo de solo é feito por ele. Para se ter idéia as empresas que fornecem Energia utilizam está ferramenta para manutenção de linhas.

Funciona assim:

Analista/Desenvolvedor [VBA -|conversa |- ArcObject -| conversa |- Geodatabase] = GUI – Usuário Final

Problema:

A empresa precisava de uma solução que através de um mapeamento definido através da roterização das estradas alocadas com GPS,   retornava a distância e o trecho percorrido. (Estilo Google Maps mas para um ambiente especifico).

Solução:

Comecei construindo em Python, mas como algumas funções do framework estão integradas ao VBA preferi não perder tempo com acessórios. Então desenvolvi a customização em VBA e em seguida aprendi a chamar algumas funções de Python dentro do VBA. (Isto é muito show). Poupou tempo!!! Além de permitir maior versatilidade na aplicação.

Se desejar conhecer um pouco mais, abaixo segue um exemplo de uma customização VBA com ArcObjects.

Exemplo VBA dentro do ArcGIS:

VBA dentro ArcGIS

Private Sub UIButtonControl1_Click()

Dim pMxDoc As IMxDocument ‘ArcObject pegando todo o ambiente do Mapa definido pelo ArcGIS
Dim pMap As IMap
Dim pFeatureLayer As IFeatureLayer
Dim ii As Integer
Set pMxDoc = ThisDocument Set
pMap = pMxDoc.FocusMap

‘ Loop através de cada Layer mostrando o nome.
For ii = 0 To pMap.LayerCount
Set pFeatureLayer = pMap.layer(ii)
MsgBox “The name of layer is: ” & pFeatureLayer.Name
Next

End Sub

Python dentro VBA e ArcObject

‘Create the Geoprocessing object and define its workspace.
Dim GP As Object
Set GP = CreateObject(“esriGeoprocessing.GpDispatch.1”)
GP.Workspace = “C:database.mdb”

Indispensável a leitura do livro: Programming ArcObjects with VBA 2a Edition – Kang-Tsung Chang 2007



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s