Blog Geo.NET Geoprocessamento, SIG e Sensoriamento Remoto

31jan/104

ArcObjects #1 – introdução

Boa tarde pessoal,

Mais uma vez venho a vocês com uma futura série de pequenos artigos, desta vez sobre ArcObjects, a API da ESRI para o desenvolvimento de funções que levam em conta o espaço e dados espaciais.

Bem, primeiramente devemos começar dizendo que ArcObjects não é um bicho de sete cabeças, é um bicho só de cinco. Não é nada complicado, quando você entende o que quer fazer e onde procurar.

Para quem está perdido, API é um conjunto de rotinas e funcionalidades já escritas que pode-se extender, através de programação. Ou seja, ArcObjects é essencialmente os blocos construtivos do software ArcGIS. Os caras na ESRI desenvolvem o ArcObjects e depois o usam para montar o ArcMap, por exemplo.

E realmente são muitos blocos. A API é composta (hoje, na versão 9.3) por quatro mil classes, cinco mil interfaces, mais de mil enumerações e cinquenta structs, isso sem contar os tipos escondidos e restritos!

Certo e o que mais precisamos saber sobre a API ArcObjects para começar a programar para o ArcGIS? Nada, na realidade, mas existem alguns conceitos que devem ser conhecidos.  Toda a API foi desenvolvida seguindo o modelo COM (Component Object Model), o padrão para distribuição de bibliotecas binárias em ambiente desktop, desenvolvido pela Microsoft.

E isto muda tudo. A tecnologia COM estabelece padrões e exige alguns requisitos para que um software seja COM-compatible. Finalmente, devemos entender que COM é uma arquitetura, uma forma de desenvolver software.

A arquitetura COM é baseada em servidores e clientes. O servidor, ou o objeto, dá uma funcionalidade e o cliente a utiliza. Para facilitar ainda mais, um servidor pode ser um cliente e vice-versa. A arquitetura COM facilita a comunicação entre estes dois processos (servidor/cliente). Existem muitas particularidades da tecnologia, que realmente não cabem no escopo deste post, mas todos devem ficar de olho nisto, pois software mal desenvolvido que utiliza COM é software que um dia irá explodir. Esta arquitetura tem sérios problemas de perfomance e coleta de lixo.

Para saber mais, visite esta página e esta página.

Certo, o que podemos fazer com ArcObjects? Tudo o que podemos fazer dentro do ArcGIS, podemos fazer utilizando ArcObjects. Tudo e muito mais, claro. Como o próprio ArcGIS foi construído sobre ArcObjects, estamos na realidade falando de uma coisa só!

O que preciso para desenvolver em ArcObjects?

Bem, a API está implementada em uma porção de linguagens, sendo possível utilizar qualquer uma e realizar as mesmas tarefas. As linguagens suportadas são: VC++ (Visual C++), C# (minha favorita), VB.NET, Java e até VBA (cuidado, o suporte para VBA ACABOU!).

Não existe melhor ou pior, apenas diferente :P . Caso você tenha experiência com uma ou outra, sugiro que comece pela linguagem que tem maior familiaridade, mas um aviso: existem tendências e a tendência é .NET (C# principalmente).

Após escolher sua linguagem de preferência, instale um IDE (Integrated Development Environment - como o Visual Studio, no caso de .NET) e instale as bibliotecas que veêm com o ArcGIS. Note que as bibliotecas já estão no CD de instalação do ArcGIS Desktop (as bibliotecas de programação para Desktop, claro).

Primeiro instale o ambiente de desenvolvimento e depois a biblioteca. Nunca o contrário.

instalacao sdk

Tela de Instalação dos SDK's ArcGIS Desktop

Depois que tudo estiver instalado, sugiro que passe um tempo se familiarizando com cada IDE e com a referência oficial da ESRI. Ache um pequeno problema que lhe incomoda no ArcGIS (algo que poderia ser mais fácil, ou poderia ser diferente e facilitaria seu trabalho - imagino que existem diversas coisas) e tente criar alguma coisa em ArcObjects para isto.

Como são muitas classes e interfaces, não se preocupe em conhecer todas, se preocupe em conhecer como achar na referência oficial dados sobre determinada classe/interface.

Aviso aos navegantes: é muito comum em ArcObjects você ter de instaciar dois, três ou quatro objetos para fazer uma coisinha simples (como é o caso das interfaces IFields e IFieldsEdit, IField e IFieldEdit, entre outras).

Os namespaces mais utilizados, provavelmente são esriSystem, ArcMap, ArcMapUI, Geometry e Geodatabase. Todos tem sua própria página na ESRI, incluindo um diagrama completo do mesmo.

Caso tenham dúvidas, estamos aqui! Próximo post: Hello World, ArcGIS style!

Abraços

George

Compartilhe:

Related posts:

  1. Máquina Virtual e Desenvolvimento para ArcObjects
  2. Brincando com ArcObjects
  3. ArcObjects e Class Extensions #1
  4. Brincando com ArcObjects #2
  5. Padrão de Projeto ActiveRecord e ArcObjects
Comentários (4) Trackbacks (0)
  1. Caro george, estou precisando desenvolver uma rotina em meu sistema para visualizar arquivo 3D de uma mina subterranea, até ai beleza….mas eu tenho que passar vários pontos (x,y,z) que seriam aposicao dos equipamentos (caminhoes, etc), assim o usuário saberia visualmente onde estao os equipamentos dentro da mina. O problema é que nao conheço nada de arcview, arcobjects, etc…a unica coisa que sei até o momento foi o que li no seu artigo acima…vc tem alguma dica de onde eu possa encontrar algo que me ajude? Agradeço.

  2. Olá Iurih,

    Ok, temos uma situação. Teu caso, utilizando ArcGis seria bem mais complexo, pois você teria de utilizar o ArcScene para desenvolver isto. Além disso existem rotinas e classes específicas para atualizações constantes em mapa/tela 3d.

    Sugiro que estude a API do ArcObjects (estou assumindo que você possui conhecimento de programação) e tente procurar a melhor maneira de resolver seu problema. Sinto muito não poder ajudar mais, mas sem detalhes é difícil.

    Existem softwares livres também que dão esta possibilidade (apenas em 2d) como o QGIS, que também é programável.

  3. Boa tarde, sou aluno de Universidade Nova de Lisboa, Portugal.

    Neste momento estou a desenvolver um projeto onde é necessário, a utilização da API java da ESRI. Tenho instalado no meu computador, a versão ARCGIS DESKTOP 10, onde já instalei ARCGIS develoment kit.

    Neste momento tenho um simulador a a criar um file raster grid. O meu objetivo é transformar este file, para ser mostrado num browser, por exemplo em google maps, ou através de GeoServer.

    O meu objectivo é obter uma conversão de ASCII raster to Raster, e posteriormente, Raster to Polygon e uma projeção para o sistema de coordenadas que irá ser utilizado.

    Ao utilizar qualquer uma função da API da ESRI, obtenho sempre o seguinte erro. Já tentei procurar em blogs, já tentei utilizar bibliotecas segundo alguns blogs mas o erro permanece. :(

    java.lang.UnsatisfiedLinkError: no ntvinv in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1028)
    at com.esri.arcgis.interop.NativeLoader.loadLibrary(Unknown Source)
    at com.esri.arcgis.system.EngineInitializer.initializeEngine(Unknown Source)

    é necessário o Engine para desenvolver aplicações ou utilizar a API?

  4. Olá André, tudo bom?

    Meu caro, pelo que percebo está tentando programar em Java e chamar as ferramentas contidas no ArcToolbox, estou correto?

    Nunca li nada sobre o assunto em Java, mas em .NET é possível compilar as assinaturas das toolboxes e utilizá-las como se estivessemos utilizando-as em Python.

    Não tenho experiência com o desenvolvimento de aplicações ESRI com java, sei que é possível, mas nunca tentei nem brincar. Precisa mesmo ser em Java?


Leave a comment

(required)


*

Sem trackbacks

Get Adobe Flash playerPlugin by wpburn.com wordpress themes