ArcGIS Explorer Online Beta!

imageComo vos falei neste post, o ArcGIS Explorer foi Online!

Podem experimentar esta versão Beta em: http://explorer.arcgis.com/

Para terem uma melhor experiênicia, principalmente na componente de partilha e colaboração sugiro que:

  1. Criem, gratuitamente, uma ESRI Global User Account: Aqui
  2. Associem a vossa conta, gratuitamente, ao ArcGIS.com: Aqui
  3. Naveguem e descubram o ArcGIS.com: Aqui
  4. Naveguem e descubram o ArcGIS Explorer Online: Aqui
    Enviem-me e partilhem os vossos Mapas e Aplicações!

Partilhar Partilhar no Facebook Partilhar no Twitter Enviar pelo Gmail Adicionar ao Google Reader Partilhar no LinkedIn Partilhar no WordPress Adicionar ao Del.icio.us Adicionar ao Technorati

Ficheiros xWMS e acesso a Servidores de Mapas

Alguns softwares permitem adicionar o formato de dados xWMS. Este formato de dados não é mais que um simples ficheiro XML com a extensão alterada para *.xWMS. Neste ficheiro encontram-se os parâmetros necessários para aceder ao um serviços WMS (Web Map Service do Open Geospatial Consortium).

Os parâmetros necessários de definir são os seguintes:

  • URL: O endereço do Serviço WMS
  • REQUEST:
    • VERSION: A versão do serviço WMS (para garantir maior compatibilidade o ideal é usar a versão 1.1.1 ou verificar as versões suportadas no software que estiverem a usar)
    • SRS: O código EPSG da referência espacial do serviço
    • LAYERS: O nome do Tema do Serviço.
    • BBOX: A extensão de mapa que pretendemos visualizar (no sistema de coordenadas do serviço)
    • WIDTH: Largura em pixeis
    • HEIGHT: Altura em pixeis
    • FORMAT: O formato de imagem devolvido (PNG = melhor imagem; JPG = melhor desempenho)

    Estes são so parâmetros necessários mas os restantes (existentes no Get Capabilities do WMS) também poderão ser adicionados.

Um exemplo da estrutura de um ficheiro xWMS que abre o WMS do MDT de 30 metros de Portugal encontra-se abaixo (alterar apenas zoom inicial – BBOX). Este ficheiro poderá ser usado directamente no MicroStation V8 XM.

Detalhes do Serviço: http://195.23.241.221/arcgis/rest/services/arcgis_online/MDT30m_PT_WGS84/MapServer

URL: http://195.23.241.221/arcgis/services/arcgis_online/MDT30m_PT_WGS84/MapServer/WMSServer?

Get Capabilities: http://195.23.241.221/arcgis/services/arcgis_online/MDT30m_PT_WGS84/MapServer/WMSServer?request=GetCapabilities&service=WMS

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>image
<BentleyWMSFile>
<VERSION>1.1</VERSION>
<URL>…/MDT30m_PT_WGS84/MapServer/WMSServer?</URL>
<REQUEST>
<VERSION>1.1.1</VERSION>
<SRS>EPSG:4326</SRS>
<LAYERS>Portugal Continental</LAYERS>
<BBOX>XMIN,YMIN,XMAX,YMAX</BBOX>
<WIDTH>850</WIDTH>
<HEIGHT>1000</HEIGHT>
<FORMAT>image/jpeg</FORMAT>
</REQUEST>
<IMAGESIZE>
<MINSIZE width="85" height="100" />
<MAXSIZE width="850000" height="100000" />
</IMAGESIZE>
<SERVERCAPABILITIES>
<MAXBITMAPSIZE width="1024" height="1024" />
</SERVERCAPABILTIES>
</BentleyWMSFile>

 

Caso os serviços sejam de imagem e estejam a ser disponibilizados usando o ArcGIS Image Server então será mais simples fazer o download do cliente gratuito adequado da seguinte página: http://resources.esri.com/raster/arcgisimageserver/index.cfm?fa=clients

Nesta página encontram-se clientes para:

  • ESRI
    • ArcGIS Desktop
    • Image Server Viewer
  • External
    • AutoCAD
    • GeoMedia
    • MicroStation
    • MapInfo
  • OGC
    • Web Mapping Service (WMS)
    • Web Coverage Service (WCS)

Anatomia de uma arquitectura Web SIG

Em destaque

Para a parte da comunidade que ainda não deslindou completamente os componentes duma arquitectura WEB SIG e os seus respectivos papéis, aqui vai um pequeno e modesto contributo.

Arquitectura Web SIG

Um Web SIG tem como objectivo fundamental disponibilizar, a uma dada comunidade de utilizadores, acesso facilitado a informação geográfica e a ferramentas de modelação e processamento. Oferece uma arquitectura aberta e distribuída para disseminação de dados espaciais e aplicações Web de processamento na Internet. Esta característica faz com que as organizações facilmente distribuam conteúdos e aplicações de geoprocessamento sem grandes restrições de tempo e custo para os seus utilizadores ou consumidores.

Para implementação duma solução Web SIG empresarial existem várias arquitecturas possíveis, apresentando cada uma deles, obviamente, vantagens e desvantagens, e sendo umas mais apropriadas que outras a determinados contextos organizacionais. Não obstante à configuração final que esta arquitectura possa assumir, existem no entanto, componentes básicos e obrigatórios; que se passam a enumerar e descrever:

 

  • GIS Web Service ArchitectureCliente: tipicamente refere-se ao Web browser na máquina do utilizador. Na esfera Web SIG o Cliente é normalmente o local onde os utilizadores interagem com os dados espaciais ou com as ferramentas de análise espacial. É também o local onde os programas SIG oferecem diferentes formas de output para o utilizador em função de comandos, funções, tarefas e/ou ferramentas que são despoletados por algumas acções executadas no lado do Cliente ou do Servidor e que podem ter alguma lógica de negócio associada.
  • Servidor: a arquitectura de Servidor dum Web SIG geralmente tem quatro componentes: Servidor Web, Servidor Aplicacional, Servidor de Mapas e Servidor de Dados.
  • Servidor Web: é o que responde a pedidos enviados pelo Web browser via HTTP.
  • Servidor Aplicacional: é na sua essência um software que apoia o desenvolvimento, implementação e gestão dum número alargado de aplicações num ambiente distribuído. Actua como middleware que define, mantém e termina uma dada ligação entre o Servidor Web e o Servidor de Mapas. Também gere os pedidos concorrentes e faz o balanceamento de carga entre os Servidores de Mapas. O principal objectivo do Servidor Aplicacional é a separação da lógica de negócio da lógica de apresentação e lógica de dados.
  • Servidor de Mapas: é considerado o “cérebro” de qualquer aplicação Web SIG. Disponibiliza funções SIG tradicionais, como análise espacial, pesquisa – queries – sobre componente alfanumérica ou geométrica dos dados, geoprocessamento, e gera e disponibiliza mapas dinâmicos ao Cliente de acordo com os pedidos dos utilizadores.
  • Servidor de Dados: gere os dados, espaciais ou não espaciais, num sistema de gestão de base de dados relacional ou não relacional. As aplicações Cliente acedem, através dos respectivos intermediários, aos dados através de declarações SQL.

Geralmente os componentes apresentados são implementados numa arquitectura multi-camada, em que as camadas de apresentação, aplicacional e de recursos estão logicamente separadas. No contexto Web SIG o Cliente envia um pedido HTTP para o Servidor Web que o reencaminha para o Servidor Aplicacional. O Servidor Aplicacional responde ao pedido reencaminhando-o para o Servidor de Mapas apropriado gerindo a carga entre os respectivos Servidores de Mapas existentes. O Servidor de Mapas sintetiza o pedido e executa as funções SIG apropriadas requisitando os respectivos dados ao Servidos de Dados.

Arquitectura Servidor ESRI

Fazendo o mapeamento da arquitectura atrás descrita na plataforma de software ESRI, e no contexto duma arquitectura dita tradicional, ou mais usual – do tipo multi-camada – temos algo como:

  • A componente Servidor Web da arquitectura ArcGIS Server actua como Servidor Aplicacional da arquitectura genérica Web SIG apresentada anteriormente, e aloja os Web services e aplicações Web que usam recursos a ser executados nos Servidores SIG. Recebe pedidos dos Clientes e distribui tarefas pelos Servidores SIG.
  • Os Servidores SIG são equivalentes ao Servidor de Mapas na arquitectura genérica Web SIG. Os Servidores SIG alojam recursos SIG, como mapas, globos, roteiros de moradas, e expõem-nos como serviços para as aplicações Cliente. O Servidor SIG é composto por duas partes distintas: o server object manager (SOM) e o (ou os) server object container (SOC). Como o nome indica, o SOM gere os serviços que estão a ser executados no Servidor. Quando um Cliente faz o pedido de um determinado serviço, é o SOM que o providencia i.e. o SOM liga-se a um ou mais SOC. Os SOC alojam serviços que o SOM gere. Dependendo da configuração física da arquitectura Web SIG implementada, o SOM e o, ou os, SOC podem estar instalados na mesma ou em diferentes máquinas.
  • O Servidor de Dados contem os recursos SIG que são publicados como serviços no Servidor SIG.

ArcGIS Server System Architecture

 

Tipicamente as aplicações Cliente são Web, móvel ou Desktop e ligam-se via HTTP aos Web services do ArcGIS Server ou via LAN/WAN aos serviços locais.

Os componentes de software da arquitectura ArcGIS Server podem ser implementados sob diferentes combinações de plataformas suportando tanto os requisitos disponíveis do sistema como capacidade de escalabilidade. Contudo, apesar da flexibilidade, a localização dos diferentes componentes e as configurações de software seleccionadas têm impacto directo na capacidade do sistema, na sua fiabilidade, e performance global.

Apresentação ESRI no Techdays 2010

Ontem houve a sessão Poder para Planear e Decidir Espacialmente: ESRI + Microsoft no Techdays 2010.

Para quem não pode estar presente aqui fica a apresentação efectuada bem como vídeos das demos que foram feitas!

 

Demonstração Azure + Silverlight + ArcGIS Server API for Silverlight:

 

Demonstração: Silverligh + Sharepoint + ArcGIS Mapping for Sharepoint (parte 1):

 

Demonstração: Silverligh + Sharepoint + ArcGIS Mapping for Sharepoint (parte 2):

Sessões Técnicas no Encontro de Utilizadores ESRI

 

Convido todos os interessados a estarem presentes no EUE – Encontro de Utilizadores ESRI e a assistirem às Sessões Técnicas. As sessões para este ano são as seguintes:

Para além destas sessões que têm, como sempre uma duração limitada, eu e os meus colegas especializados em cada um dos assuntos estará presente junto à área da ESRI Portugal para esclarecer qualquer questão que possa existir.

Tragam os vossos portáteis e desafiem-nos!

Sandro

Digitally Sign your code

In one of our R&D Department’s project (IDI), one feature needed was to let people select an extent and send the output data by mail, including an embedded picture of the map extent, its coordinates and other related info. All this has to be sent using the Outlook 2003/2007 mail client, installed on each of the client’s machines. This was a “must be/must have” requisits! Of course, installing the Outlook client on the server and make use of some webservices to call the Outlook stuffs was not a reliable solution, for several reasons, including server security.

The solution i found to let a webapplication, based on FLEX, to open on the client’s computer the Outlook mail editor was to deploy an ActiveX, preferably coded using the .NET Framework.

After some googling and coaching, one of my fellow colleagues made up his code and released a fully funcitional version of the ActiveX. One problem, though, was to let every client’s browsers to install and run the ActiveX control without the need to change the Security Features of each client’s browser.

The only way is to digitally sign the code! This is done by aquiring a certificate, sign your code with that certificate and deploy it on your webserver!

I found very little and confusing information about this subject on the web, and to help anyone with the same problems, i decided to publish this small how-to (also, this might help me too in the future… ).

After receiving your certificates from a certified CA (Certifacte Authority), install by clicking on each one.

Normally you should have received 3 certificates:
    – a root certificate
    – a private certificate
    – a public certificate

Open your VS2008 IDE, open your solution, and build *EACH PROJECT SEPARATELY*.
    – build your ActiveX Control first
        – go to the Bin folder of your project (might be bin/Debug or bin/Release, depending of your compiling setup)
        – check if the DLL or EXE (or other) exists
        – go to Start Button -> Microsoft Visual Studio 2008 (or any other version) -> Visual Studio Tools
        – open the Visual Sudio Command Prompt (note: NOT the Windows Command Prompt – aka cmd.exe)
        – enter: signtool signwizard
        – when asking for a file to sign, click on Browse, and go to your ActiveX Control Bin directory (might be bin/Debug or bin/Release, depending of your compiling setup)
        – select the DLL or EXE (or other)
        – NEXT
        – select Typical
        – NEXT
        – click on Select From Store
        – select the public certificate you wish to use to sign your code and then click Ok
        – NEXT
        – optionally, enter Description and Web Locator
        – Next and Finish
All these steps are not obligatory, as they only sign your DLL or EXE file. Personally, i like to make sure that all my builds are signed, so that there won’t be any browser security issues upon installing or running.

Create a Setup project (if not existing yet…), set it to View-> File System, and Add a File. Browse to your newly signed DLL or EXE and select it as your primary output.
Also, on your Setup project properties (right-click on the project and select properties), go to Pre-Requisits and select according to your needs.
Close the Properties window. Left click (once only) on the Setup project once again, and on the properties tab, change the ESRI Outlook ActiveX Control
to whatever you wish. Remember that this value will appear on the Control Panel’s "Add & Remove Software" applet, so chose the most userfriendly name possible.
You can now build the Setup project. This will deploy in the /bin/debug/ folder an .EXE and .MSI file.
Add a .INF file in that folder (preferably, name it as your .EXE or .MSI file).
Add these lines in the .INF file :

[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Setup Hooks]
hook1=hook1 

[hook1]
run=msiexec.exe /i "%EXTRACT_DIR%\Setup.msi" /qn 

Change the Setup.msi name to whatever .MSI filename you’ve set on your Setup project properties, and save.

Now for the Cab file…

Any ActiveX should be installed using a CAB file. Of course, you can use other methods on your own risks, but as this is a Best Practice, the less risk you use, the best results you get!

To deploy .CAB files, you can use the CAB Setup Project from your Visual Studio, but personally, i prefer to use the CAB SDK.

Download the CabArc SDK available at http://support.microsoft.com/kb/310618 .

Still in the Visual Studio Command Prompt, go to the bin/debug folder of your setup project, and type the following line:

cabarc n Setup.cab *

This will zip all the files (the .EXE, .MSI and .INF files) into a unique file, named Setup.cab.

Type once again: signtool signwizard, and do all these step again, but now selecting your .CAB file

- when asking for a file to sign, click on Browse, and go to your ActiveX Control Bin directory (might be bin/Debug or bin/Release, depending of your compiling setup)

        – select the .CAB file

        – NEXT

        – select Typical

        – NEXT

        – click on Select From Store

        – select the public certificate you wish to use to sign your code and then click Ok

        – NEXT

        – optionally, enter Description and Web Locator

        – Next and Finish

Et voilá! You now have a Digitally Signed .CAB file ready for install and a Digitally Signed your code.

You may now deploy it to your website.

You might want to check these websites for some more tips and tricks:

http://www.codeproject.com/KB/cs/C__Deployment.aspx

Other tips:

you may need (almost certainly) to let your ActiveX install as a Safe Plugin/Script or Executable. For that, add the following lines

    [ComImport()]
    [Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    interface IObjectSafety
    {
        [PreserveSig()]
        int GetInterfaceSafetyOptions(ref Guid riid, out int pdwSupportedOptions, out int pdwEnabledOptions);

        [PreserveSig()]
        int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions);
    }

 

On your main ActiveX Control class, implement the IObjectSafety interface and add these lines:

        private const int INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001;
        private const int INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002;
        private const int S_OK = 0;

#region IObjectSafety Members

        public int GetInterfaceSafetyOptions(ref Guid riid, out int pdwSupportedOptions, out int pdwEnabledOptions)
        {
            pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;
            pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;
            return S_OK;
        }

        public int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions)
        {
            return S_OK;

        }

        #endregion

 

Also, to automatically register/unregister the DLL or ActiveX control add:

/// <summary> /// Register the class as a control and set it's CodeBase entry /// </summary> /// <param name="key">The registry key of the control</param> [ComRegisterFunction()] public static void RegisterClass(string key) { // Strip off HKEY_CLASSES_ROOT\ from the passed key as I don't need it StringBuilder sb = new StringBuilder(key); sb.Replace(@"HKEY_CLASSES_ROOT\", ""); // Open the CLSID\{guid} key for write access RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(), true); // And create the 'Control' key - this allows it to show up in // the ActiveX control container RegistryKey ctrl = k.CreateSubKey("Control"); ctrl.Close(); // Next create the CodeBase entry - needed if not string named and GACced. RegistryKey inprocServer32 = k.OpenSubKey("InprocServer32", true); inprocServer32.SetValue("CodeBase", Assembly.GetExecutingAssembly().CodeBase); inprocServer32.Close(); // Finally close the main key k.Close(); MessageBox.Show("Registered"); } /// <summary> /// Called to unregister the control /// </summary> /// <param name="key">Tke registry key</param> [ComUnregisterFunction()] public static void UnregisterClass(string key) { StringBuilder sb = new StringBuilder(key); sb.Replace(@"HKEY_CLASSES_ROOT\", ""); // Open HKCR\CLSID\{guid} for write access RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(), true); // Delete the 'Control' key, but don't throw an exception if it does not exist k.DeleteSubKey("Control", false); // Next open up InprocServer32 //RegistryKey inprocServer32 = k.OpenSubKey("InprocServer32", true); // And delete the CodeBase key, again not throwing if missing k.DeleteSubKey("CodeBase", false); // Finally close the main key k.Close(); MessageBox.Show("UnRegistered"); }

 

That should do the trick!

Arquitectura para pequenas/médias aplicações em Silverlight

Assume-se que o leitor está familiarizado com Silverlight, Custom Controls e C# .net.

O objectivo deste texto consiste em apresentar uma arquitectura para aplicações de pequena/média dimensão em Silverlight.

As características principais que esta arquitectura tenta cumprir são simplicidade, modularidade e facilidade de desenvolvimento. 

Uma aplicação típica é constituída por um conjunto de contextos, cada um populado por um conjunto de controlos, os quais, quando activados, desencadeiam um conjunto de acções que alteram o estado interno da aplicação e actualizam a interface.

Nestes termos, é possível atribuir procedimentos a controlos, sendo estes executados mediante o estado interno da aplicação, e respectivos estímulos efectuado sobre os mesmos (controlos). A maneira mais simples de fazer esta atribuição de procedimentos consiste em especificá-los directamente dentro do corpo (ou classe) do controlo. Infelizmente, esta metodologia dificulta a reutilização de código desenvolvido e promove a replicação de código semelhante, o que por sua vez tem impacto sobre a manutenção, extensão e compreensão da aplicação à medida que esta vai crescendo. Aplicações desenvolvidas em Silverlight não fogem a esta regra. Por esta razão, proponho aqui uma solução que tenta resolver alguns destes problemas. O objectivo desta solução consiste em facilitar uma metodologia de desenvolvimento que promove uma separação entre controlos, contextos e comportamentos.

Neste texto, para simplificar, vamos assumir que a aplicação que queremos desenvolver necessita apenas de botões como controlos e de menus como contextos. Os botões, por sua vez, podem fazer aparecer e desaparecer menus e activar e desactivar outros botões.

Uma vista inicial da aplicação que propomos segue a seguinte estrutura:

clip_image002

É constituída por uma solução Silverlight, um projecto adicional chamado ApplicationFramework e quatro directórios iniciais: Attributes, Behaviours, Controls e Themes.

Continuar a ler

Calendário para Web… um desafio…?

Durante este último mês apresentou-se perante mim a oportunidade de desenvolver um calendário para Web que tivesse um funcionamento mais parecido com células do nosso conhecido “Microsoft Excel”. À partida, tal parece problemático, a não ser que ponhamos a séria hipótese de usar o nosso maior aliado para este fim: Javascript.

O Javascript permite-nos basear a funcionalidade do calendário mais em Client-Side do que em Server-Side, facilitando-nos variadas tarefas como mudar de cores ou fazer display de mensagens no ecrã – isto sem termos de submeter os dados regularmente.

Resta dizer que, apesar de ser um desafio, é bastante exequível, desde que partamos do pressuposto que vamos usar mais Javascript do que é habitual em maior parte das Web applications.

Segue-se um exemplo bastante simples da utilização de Javascript para adicionar funcionalidade a um calendário:

Code Snippet
  1. <script type=“text/javascript” language=“javascript”>
  2.    var daysToShow;
  3.    
  4.     function jsChangeColor(textBoxObj, parentCellID, daysRemaining, totalDays, originalValue) {
  5.         var radioButton = document.getElementById(“<%=this.radioBtnControl.ClientID %>”);
  6.         
  7.         if (radioBtnControl.checked)
  8.         {
  9.             
  10.             if (daysToShow == undefined)
  11.             {
  12.                 daysToShow = daysRemaining;
  13.             }
  14.             textBoxObj = document.getElementById(textBoxObj);
  15.             var textBoxValue = parseInt(textBoxObj.value);
  16.             var DBValue = originalValue;
  17.             if (textBoxValue == 10)
  18.             {
  19.                 textBoxObj.value = 7;
  20.                 ColorCells(textBoxObj.value, parentCellID);
  21.                 document.getElementById(“<%=this.labelToShowValue.ClientID %>”).innerHTML = “( “ + daysToShow + “/” + totalDays + ” )”;
  22.                 FillHdnField(daysToShow);
  23.                 objInputBuffer = document.getElementById(“<%=this.textBoxToReceiveChangedValues.ClientID %>”);
  24.                 var mynewvalue = textBoxObj.id + “=” + textBoxObj.value + “/” + DBValue + “;”;
  25.                 objInputBuffer.value = objInputBuffer.value.replace(textBoxObj.id + “=” + textBoxValue + “/” + DBValue + “;”, “”);
  26.                 objInputBuffer.value = mynewvalue + objInputBuffer.value;
  27.             }
  28.        }
  29.        
  30.        function ColorCells(cellObjectValue, parentCellID)
  31.        {
  32.              document.getElementById(parentCellID).style.background = “”;
  33.     
  34.              switch (parseInt(cellObjectValue))
  35.              {
  36.                 
  37.                  case 1:
  38.                      GetColorString(“#3F8FFF”, parentCellID, true);
  39.                      break;
  40.                  case 2:
  41.                      GetColorString(“#FFF65E”, parentCellID, true);
  42.              }
  43.        }
  44.        
  45.        function GetColorString(colorString, parentCellID, isBackColor)
  46.         {
  47.             if(isBackColor)
  48.             {
  49.                 document.getElementById(parentCellID).style.backgroundColor = colorString;
  50.             }
  51.             else
  52.             {
  53.                 document.getElementById(parentCellID).style.background = colorString;
  54.             }
  55.         }
  56.         
  57.         function FillHdnField(finalValue)
  58.         {
  59.             document.getElementById(“<%= this.hiddenField.ClientID %>”).value = finalValue;
  60.         }
  61. </script>

A função jsChangeColor recebe vários parâmetros e caso o radioButton esteja checked, processa e passa a colorir uma célula do calendário.

Resumindo, resta mais uma vez sublinhar o quão importante é compreendermos que o Javascript, embora “assuste” alguns programadores, é um aliado imprescindível para este tipo de controlos.

Isto não significa que a utilização do controlo de calendário de ASP .NET não tenha a sua quota de dificuldade. É um controlo que tem algumas limitações quanto à extensão da sua funcionalidade de base, como podemos ver na situação engraçada que se segue:

Continuar a ler

Cloudscape!

Um  termo que está muito na moda nos dias de hoje é o cloud-computing… Uma das possíveis definições é:

is a paradigm of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. Users need not have knowledge of, expertise in, or control over the technology infrastructure in the "cloud" that supports them. (fonte: Wikipedia)

Poderia entrar em pormenores e tentar explicar o que é, o que suporta, como funciona, etc.

Neste post apenas pretendo passar a mensagem da grandiosidade desta “cloud” e todas as mais valias que são geradas…

Sandro

 

Mapping for Everyone!

 

Encontra-se disponível online um novo site da ESRI – Mapping for Everyone!

Este site possui bastante informação e recursos para todos os utilizadores interessado em aprender mais sobre aplicações Geográficas para a internet e também aprender como os SIG tornam simples a a criação e partilha de informação.

 

O site surge dividido em três secções:

Mapping Home

Tutoriais, vídeos, comunidade, notícias, etc…

image

 Web Mapping APIs

Secção focada nas APIs de desenvolvimento web – Javascript, Flex e Silverlight/WPF

image

Virtual Globe

Secção dedicada a recursos, tutoriais e dicas sobre o ArcGIS Explorer

image

 

Sandro