Sistema de Referenciamento Espacial

Spatial Reference System,  ou Sistema de Referenciamento Espacial, define como descrever uma posição, uma localização no espaço.

Para determinarmos essa posição precisamos de duas coisas: um ponto de referência e um sistema de coordenadas.

Datum

Para descrever esta localização temos de levar em conta algumas coisas. Primeiro, a Terra não é plana. Verdade. E nem uma bola.  Mas podemos aproximar sua superfície à algumas formas geométricas.  A primeira que vem à mente é a esfera. É boa para se montar globos escolares e pintar os continentes em  bolas de  praia. Mas, como aprendemos na escolinha, a Terra é achatada nos pólos. Mas a aproximação com a esfera serve para qualquer coisa que conte com uma escala pequena.

Globo terrestre

Segue então uma segunda aproximação: um elipsóide ou esferóide. Ou uma esfera achatada.  Esta forma geométrica é bastante utilizada para descrever a superfície do planeta,  parte por facilitar bastante os cálculos envolvidos e parte por se adequar razoavelmente à superfície verdadeira da Terra. Para obter um grau maior de aproximação modificamos os tamanhos dos eixos do elipsóide e também deslocamos seu centro, ajeitando-o com relação à Terra.

Ou seja, se a Terra fosse um esferóide perfeito, todos os pontos de sua superfície iriam tocar nos pontos do esferóide de referência.  Como isso não ocorre, a gente ajeita o esferóide, definindo em que pontos o esferóide toca a superfície do planeta.  Note que definição de pontos tem data de validade, ou pelo menos data de referência, visto que a posição relativa entre os continentes muda com o tempo. Digamos que nosso esferóide toca a superfície do planeta em um ponto específico de Pindamonhangaba e em outro em Paris. Infelizmente estes pontos não corresponderão exatamente ao mesmo local no dia seguinte. Por isso temos nomes como WGS84, SAD69. Os números se referem ao ano .

Esferóide

Uma outra forma é a geóide. A geóide se trata de uma figura geométrica cuja superfície possui sempre a mesma força gravitacional, correspondendo mais ou menos ao nível médio do mar. Uma esfera não rolaria para lado nenhum em cima da superfície de uma geóide. Os cálculos sobre esta figura são mais complicados, mas é uma aproximação bastante útil para analisar a construção de canais, rodovias extensas e redes de água e esgoto.

Geóide

A escolha da figura geométrica, a definição de suas dimensões e o posicionamento desta figura com relação à Terra nos dá o datum (nota: só estou considerando sistema geocêntricos, deixando os topocêntricos de lado).

Espermatozóide

Sistema Geográfico de Coordenadas

Temos um datum. Mas isto não basta. Precisamos de um sistema de coordenadas para localizar o que quer que seja. Para isto temos um Sistema Geográfico de Coordenadas (geographic coordinate system ou GCS), também conhecido como sistema esférico de coordenadas,  que inclui uma unidade de medida angular, um meridiano principal e um datum.

Latitude (φ) e Longitude (λ)

Com o datum, o equador e o meridiano principal, geralmente o de Greenwich, conseguimos um ponto de referência,  onde φ = 0° e λ = 0°,  e o centro do esferóide, a partir do qual todas as medidas são baseadas. Só para constar, a cidade de São Paulo se encontra em 23°33′0″ S, 46°38′0″ W, ou seja, latitude  -23°33′0″ e longitude -46°38′0″.

Sistema de Coordenadas Projetadas

O GCS ajuda a localizar algum ponto. Mas para visualizar o mapa no papel, ou na tela do computador, precisamos levar tudo que está em um objeto 3D em pontos correspondentes em um plano 2D. Isto se chama projeção. A mesma projeção que se ensina nas aulas de matemática da escolinha, mas aplicada em nossos mapas.

Pensando na superfície da Terra, podemos pensar em algumas características:

  • Área
  • Forma
  • Direção
  • Posicionamento relativo
  • Distância
  • Escala

Quando projetamos esta superfície em um plano, podemos preservar algumas delas. Mas não todas. Por isto existem vários tipos de projeção. Cada uma prioriza alguma das propriedades descritas. A mais famosa é a Projeção de Mercator, que privilegia direção e posicionamento relativo.

Projeção de Mercator

A projeção de Mercator é do tipo cilíndrica. Pense em uma bola de tênis enfiada em uma lata de batatas Pringles.  O problema dela é que deforma bastante a área conforme nos afastamos da linha do Equador. É só reparar no tamanho da Ántártica, que não é nem o dobro da do Brasil.

O cilindro em que é projetado o mapa tem seu eixo na mesma direção do eixo de rotação da Terra,  ou seja, o cilindro toca a Terra ao longo da linha do Equador.

Projeção cilíndrica

Isto nos leva à outra projeção importante: o Sistema Universal Transverso de Mercator (UTM). Ele é bastante semelhante à projeção de Mercator tradicional.

As diferenças são que o eixo do cilindro faz 90° com o eixo de rotação da Terra e o próprio cilindro é rotacionado  para obtermos projeções  mais precisas em cada fatia em que o cilindro toca a Terra.

Universal Transverse of Mercator

Estas fatias são então quadriculadas em uma grade. Cada quadrado desta grade forma então um sistema de coordenadas cartesianas, onde a unidade de medida é o metro.

Sistema de Referenciamento Espacial (Spatial Reference System)

E por fim temos o sistema de referencimento espacial, que nada mais é que a descrição de um conjunto que tem tudo que esta aí em cima. Um exemplo:

GEOGCS["SAD69",
    DATUM["South_American_Datum_1969",
        SPHEROID["GRS 1967 (SAD69)",6378160,298.25,
            AUTHORITY["EPSG","7050"]],
        AUTHORITY["EPSG","6618"]],
    PRIMEM["Greenwich",0,
        AUTHORITY["EPSG","8901"]],
    UNIT["degree",0.01745329251994328,
        AUTHORITY["EPSG","9122"]],
    AUTHORITY["EPSG","4618"]]

O que é descrito acima, num formato conhecido como Well Known Text (WKT),  é o sistema SAD 69. Note é descrito o sistema geográfico de coordenadas (GEOGCS) com o datum utilizado,  o meridiano principal – Greenwich e a unidade de medida – degree,  assim como outras informações.  É comum utilizar apenas um número para nos referir a esta referência espacial. Este número, o SRID,  pode ser visto na última linha: EPSG 4618. Muito mais exemplos em SpatialReference.org.

Outro exemplo:

PROJCS["SIRGAS 2000 / UTM zone 23S",
    GEOGCS["SIRGAS 2000",
        DATUM["Sistema_de_Referencia_Geocentrico_para_America_del_Sur_2000",
            SPHEROID["GRS 1980",6378137,298.257222101,
                AUTHORITY["EPSG","7019"]],
            TOWGS84[0,0,0,0,0,0,0],
            AUTHORITY["EPSG","6674"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.01745329251994328,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4674"]],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",-45],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",10000000],
    AUTHORITY["EPSG","31983"],
    AXIS["Easting",EAST],
    AXIS["Northing",NORTH]]

Neste caso é descrito um sistema de coordenadas projetadas (PROJCS), o que requer, além das informações previstas para o GEOGCS, qual o tipo de projeção – Transverse Mercator – e localização do ponto de referência  que determina o origem do sistema de medidas, no caso  em metros.  O srid é 31983.

Ao invés de passar toda estas informações para alguém, basta informar o SRID.  Finalmente sabemos de onde vem o tal SRID que popula nossos banco de dados geográficos, e que devemos passar como parâmetro para as APIs Geo deste  mundão esferóide afora.

Posted in programação | Tagged , | 2 Comments

O Menu Asp.NET e o Chrome (e Safari)

Existe um problema no controle Menu no Asp.NET WebForms que faz com que ele não seja renderizado corretamente no Safari e no Google Chrome. O que acontece é que o servidor detecta o user-agent do navegador do cliente e monta a página de acordo.  Mas o  Asp.NET não reconhece o Safari e o Chrome como navegadores capazes, e por isso não conseguem renderizar um Menu em toda sua glória infestada de table’s, tr’s e td’s. Então lhes é servido um menu mais pobre, feio e maltratado .

O jeito é então alertar o Asp.NET  da existência destes navegadores.  E para isto basta criar uma pasta e um arquivo.

Se já não existir, crie em seu projeto uma pasta App_Browsers. E dentro dela crie um arquivo chamado safari.browser, que deve conter o seguinte:

<browsers>
    <browser refID="Safari1Plus">
        <controlAdapters>
            <adapter controlType="System.Web.UI.WebControls.Menu" adapterType="" />
        </controlAdapters>
    </browser>
</browsers>

E pronto! Tanto Safari quanto Chrome agora poderão mostrar seus lindos menus tablefull.

Posted in programação | Tagged | 7 Comments

Desligando o automount no Ubuntu

Meu cartão micro SD de 16GB resolveu deixar de funcionar. Embora ele possa ser aberto e eu até consiga listar o primeiro nível de diretórios, não há jeito de abrir arquivos, ou mesmo copiar muitos deles. Sorte que, salvo algumas fotos recentes, quase todos os arquivos eu tenho guardado no HD ou no Google ou no Flickr.

A parte chata é tentar desmontar, no Ubuntu,  o cartão. Como o cartão estava com defeito o gnome travava e era preciso matar uns processos. A fato é que não conseguia desmontar o cartão, que era montado automaticamente. E eu precisava dele desmontado, mas inserido no sistema, para tentar rodar um dosfsck ou  uma formatação.

A solução foi desligar o automount do Ubuntu 9.10 – Karmic Koala. Como? Assim:

gconftool-2 --type bool --set /apps/nautilus/preferences/media_automount false

E pronto! Pena que o cartão não teve jeito. RIP, cartão de 16GB…

Posted in linux | Tagged | Leave a comment

Sincronizando a agenda do Google e a do Google Apps

Após alguns problemas associando minhas duas contas do Google no Milestone, restou apenas o problema da agenda.  Recapitulando, tenho duas contas: uma do Google, comum, e outra do Google Apps for Your Domain (GAFYD ou apenas Google Apps).

Cada uma delas conta com sua própria agenda, mas eu só utilizo a do Google Apps.  Mas o Milestone  sincroniza a agenda com apenas uma conta, a primeira que você cadastrar. E para solucionar o problema do post anterior tive de cadastrar primeiro minha conta Google comum.

Algo estranho, deveria ser possível ao menos escolher com qual conta sincronizar. Bom, o jeito é remediar. Como? Primeiro entre na seção de configuração do calendário, na interface administrativa do Google Apps. O endereço é algo assim:

https://www.google.com/a/cpanel/example.com/CalendarSettings

Claro que você deve substituir example.com por seu próprio domínio.  Note o item “Sharing options“. Assegure-se de escolher o item ““.

Atenção!  Para que esta configuração tenha efeito pode demorar alguns minutos. Caso os passos seguintes não dêem resultado, tnte novamente depois.

Bom, agora você pode compartilhar sua agenda do Google Apps e inserí-la na agenda do Google, através do  My CalendarsSettings Sharing.  Coloque seu email @gmail.com e escolha na caixa a opção Make changes AND manage sharing. Pronto!

Compartilhando o Google Calendar

Agora você conseguirá visulizar ambas as agendas em seu Motorola Milestone. só espero que em um próximo update do Android isto deixe de ser necessário.

Posted in cacarecos, web | Tagged , | Leave a comment

Não consegue adicionar outra conta Google no Motorola Milestone?

Um problema vinha me atormentando no Motorola Milestone. Adicionei através do Android Market os aplicativos Google Listen e Google My Maps Editor. Mas infelizmente não pude testá-los, pois foi exigida a adição de uma conta Google para tanto. Ué, mas já tenho uma conta  do Google Apps  configurada no aparelho. Aparentemente minha conta do Google Apps for Your Domain (conhecido também como GAFYD ou simplesmente Google Apps) não é suficiente para utilizar serviços como o Listen.

Vamos então cadastrar no aparelho outra conta Google. O problema é este: após já ter configurado uma conta do GAFYD, não consigo criar  ou vincular uma conta comum do Google no Milestone. Sempre surge um problema de conexão do tipo ” o servidor não responde, tente novamente mais tarde”.  Mas o resultado é sempre o mesmo, seja via Wi-Fi, seja via HSPA/3G.

Procurando pela internet, parece que a ordem em que se inclui as contas Google nos Androids influencia no resultado final: nos calendários, nos contatos e no Google Talk.  O jeito é tentar então adicionar primeiro minha conta  Google e só depois o do GAFYD. Mas como alterar a ordem de cadastro de contas?

Primeiro é preciso limpar o aparelho através de um hard reset. O procedimento, simples, é diferente do usado no Droid (o Milestone dos americanos):

  1. Desligue o aparelho;
  2. Aperte e segure o botão da câmera, e depois pressione o de ligar. Continue apertando o botão da câmera até surgir um triângulo na tela;
  3. Com o triângulo na tela, pressione ao mesmo tempo os botões de aumentar volume e o da câmera – é difícil, podem ser necessárias várias tentativas – até surgir um menu;
  4. No menu selecione o item clear user data (ou algo semelhante), através do direcional;
  5. Pronto! Selecione o reboot e aguarde. O aparelho está como saiu da caixa novamente!

Agora tome o cuidade de registrar no Milestone alguma conta Google comum,  sem ser do GAFYD.  Pronto! Agora sim,  adicione quantas contas  quiser, inclusive a do GAFYD. Finalmente consigo acessar o Listen e o My Maps Editor.

PS: Um problema que agora preciso resolver é fazer o diabo do calendário sincronizar com o calendário do GAFYD.  Ele só sincroniza no Google comum.  Não há opção de qual conta sincronizar, diferente fo Gmail e dos contatos…

Posted in cacarecos | Tagged , , | 2 Comments

Milestone e o Android Market

image

Inserido via wpToGo

Um dos principais motivos para um geek querer um cacareco do calibre do Milestone, é poder instalar os famigerados apps (embora tenha quem queira controlar isso). Listo então aquilo que vale a pena, levando em conta o acesso restrito dado aos brasileiros – não podemos pagar por nenhum aplicativo, por exemplo, então eles nem são listados (o que não te impede de efetuar uma compra direta com o desenvolvedor).

Continue reading

Posted in cacarecos | Tagged , , , | 24 Comments

Motorola Milestone (Droid)

Estava eu, pensando e contando moedas para comprar meu Android, quando finalmente a Vivo lança o Samsung Galaxy. Viva! Um Android que posso comprar!

Tentei achar o dito aparelho nas lojas a Vivo, sem sucesso.  E  tive de ser atendido pelos despreparados vendedores da Vivo, que sequer sabiam me informar o preço do aparelho para o meu plano.

Milestone aberto

Motorola Milestone

Minha sorte mudou quando vi a notícia no Gizmodo de que a Vivo havia lançado, em primeira mão, o Motorola Milestone no Brasil. E por um preço surpreendente! Eu achava que o Milestone chegaria ao Brasil com um valor semelhante ao N97 (um olho e  um braço), quando na verdade ele chegou com um preço igual ao Samsung Galaxy.

Android, finalmente

Fui à loja conceito da Vivo no Shopping Morumbi, a primeira loja oficial da Vivo em que fui bem atendido, com um vendedor que sabia responder  minhas perguntas – mas atenção, ser bem atendido é diferente de ser rapidamente atendido. Minha espera foi de cerca de 40 minutos. Por outro lado, sempre fui bem atendido por vendedores de lojas autorizadas, mas enfim.

Após a compra me ofereceram um suporte pós-compra, para aprender a destrinchar as funções do dito cujo, que prontamente recusei, pois não via a hora de eu mesmo fuçar o cacareco. Mesmo assim fiquei surpreso por existir e oferecerem este serviço. Fiquei depois curioso para conhecer sua qualidade. Fica para outra vez.

Vamos ver agora o que o Milestone tem a oferecer para um ex-dono de um N95.

Continue reading

Posted in cacarecos | Tagged , , | 26 Comments

ArcSDE e MS SQL Server 2008

O ArcSDE é um produto da ESRI que consiste-se em uma camada sobre bancos de dados relacionais, tornando-os capazes, se já não forem, de manipular informações geograficamente referenciadas, ou dados geo.

O MS SQL Server 2008 é o banco de dados relacionais da Microsoft.

A versão mais recente do ArcSDE, a 9.3, tornou possível utilizar o tipo de geometria nativa: o ‘GEOMETRY’ . Mas como configurar o sistema de forma a utilizá-lo?

Existe uma entrada no banco de dados que deve ser alterada. Ela se encontra na tabela sde.db_tune. Dê uma xeretada para verifcar seu conteúdo:

SELECT *
FROM sde.dbtune
WHERE
    keyword like 'DEFAULTS'    AND
    parameter_name like 'GEOMETRY_STORAGE'

A entrada que deve ser alterada é esta:

UPDATE sde.dbtune
SET config_string = 'GEOMETRY'
WHERE
    keyword like 'DEFAULTS'    AND
    parameter_name like 'GEOMETRY_STORAGE'

A listagem de tipos disponíneis em seus respectivos sistema pode ser obtido no help do ArcSDE.

Posted in software | Tagged , | 1 Comment

ajudando o próximo com o Kiva

Costumo usar o Google Reader  – tanto que está se tornando mais um vício – e sigo alguns blogs de programadores e entusiastas linux. Em meio aos textos, li um post de Nat Friedman – criador do SUSE Studio, que me tocou.

Já viu o post? Vá lá ver, eu espero.

Ele doou USD 169,00 à uma escola pobre para a compra de lápis de cor e apontadores.  E recebeu algumas cartas das mesmas crianças que receberam os lápis.  Uma ação tão pequena, gerando uma dose de emoção tão grande. Fiquei com inveja.

Uma característica que admiro em uma pessoa é a capacidade de transformar coisa ruins em coisas boas.  Eu, como toda pessoa, estou repleto de coisas ruins. Eu quero me admirar. Eu tenho inveja do Nat. Eu acredito no capitalismo.

Como tirar algo bom disto tudo? Eu encontrei o Kiva. O Kiva é um sistema de microcrédito para minúsculos empreendedores em partes pobres do mundo.  Você adere ao Kiva para agir como um financiador de empreendimentos alheios, emprestando dinheiro, de forma a fornecer crédito para estas pessoas, presas à informalidade e sem acesso ao tipo de crédito que bancos fornecem.

Choose an Entrepreneur, Lend, Get Repaid

Eu? Financiando alguém? Um banco financia, uma grande instituição financia, como alguém como eu pode financiar alguma coisa? Ora, emprestando o valor de USD25,00! Note o emprestar. Ele será devolvido, com algum juro. Como todo empréstimo ele tem seus riscos, e um deles é você conseguir ajudar e mudar a vida de alguém, e ainda ter seu dinheiro de volta.

De um modo geral eu sou contra doações. A não ser que elas gerem oportunidades. E o  que o Kiva faz é exatamente isto, dar oportunidade às pessoas – isto é humano, e sob a forma de crédito, não doação – isto é capitalismo.  Este dinheiro que volta pode ser investido em outro empreendedor. Nota o ciclo virtuoso?

Pronto, não tenho mais inveja do Nat.  Só um pouco.

PS: Aqui está meu perfil no Kiva: http://www.kiva.org/lender/seiti. Sim, eu fiz bem pouco, eu sei. Mas o que você já fez? Me conte, logo abaixo =)

Posted in vida® | Tagged , , | 2 Comments

Programar é arte

O tema é recorrente.  Desde o monumental The Art of Computer Programming ao, hmm…, pragmático  The Pragmatic Programmer existe a noção de que programar não é uma ciência exata. Não é produção, tampouco engenharia. Programar é uma atividade que requer criatividade, visão, trabalho e destreza. É arte.

Vem daí a dificuldade de se estabelecer prazos. De gerar metodologias. De ser produtivo, ter qualidade e criar soluções. Como apressar, controlar e gerenciar algo tão pessoal quanto a produção de código? Talvez tornando-o impessoal e automático. Mas não seria isto remover as características que diferenciam um software bom de um ótimo?

Pode-se criar arte em massa. Pode-se criar obra únicas. Pode-se apreciar ou não uma obra-prima. Não é tão diferente no mundo do código fonte. Quem já não vislumbrou, modificando um programa qualquer, uma obra de arte barroca? Cheia de meandros, voltas, incertezas e becos sem saída. Um labirinto a provocar emoções: fúria, alegria,  raiva, medo, alívio (bom, este só quando o código compila e/ou passa nos testes). Estou divergindo…

E quem programa pode ser entendido como um artesão. Alguém que martela teclas para produzir, vez ou outra, um pouco de arte. E podemos encontrar, procurando bastante, entre estes artesãos, um verdadeiro artista.

Why?

É o caso de Why the Luck Stiff, ou simplesmente _why. Seu trabalho mais conhecido é seu livro: Why’s (poignant) Guide to Ruby. Mesmo que você não programe, mesmo que você não entenda nem mesmo HTML, dê uma olhada.  O livro é excelente. Se parece com algo saído de uma viagem  de LSD, misturado com Alice no País das Maravilhas e lições de Ruby. E existe até uma trilha sonora para acompanhá-la!

Mas, onde encontro este livro? O site do _why saiu do ar. Assim como muitos outros projetos pertencentes a ele. Até a conta no twitter, @_why, sumiu. _why desapareceu. Ninguém sabe ninguém viu.

Where´s why?

É um feito notável para alguém que alcançou certa notoriedade online, e com uma presença forte na internet. Participou de palestras e eventos, mas sempre se identificando por seu pseudônimo.  Ainda existe o anonimato, afinal (há quem diga que _why apenas está dando um tempo e retornará como _because).

Mas dá para apreciar sua obra em alguns mirrors.  E já tratei de guardar a trilha sonora para ouvir enquanto programo. Quem sabe não tenho uma epifania (ou uma síncope, dependendo do código a editar). E tem até tradução para o português, que até onde vi está ótima.

As raposas de _why

So long _why, and thanks for all the chunky bacon.

Posted in programação | Tagged , , , , | Leave a comment