Funções Geoespaciais do MS SQL Server 2008

O MS SQL Server 2008 (MSSQL) possui um tipo próprio para guardar geometrias: geometry (tem um geography também, mais útil para representar feições mais extensas).

E ainda implementa os métodos definidos pela OGC.

Isto possibilita operações CRUD sobre o dados georreferenciados, diretamente através de comandos SQL.

Os métodos estáticos, acessíveis através de geometry::NomeDoMétodo(),  são:

E os métodos do objeto geometry:

Estes métodos podem ser chamados da seguinte forma, por exemplo:


SELECT coluna1.STArea() FROM tabela

onde coluna1 é do tipo geometry.

Publicado em programação | Com a tag , | Deixar um comentário

Lua de Mel em Natal – Rio Grande no Norte

Em uma de minhas poucas viagens para fora de SP, fui conhecer em lua de mel, com minha querida esposa,  Natal  – RN.

A cidade possui praias lindas. Mesmo quem, como eu, não costuma mergulhar ou se banhar nas àguas do mar, não se cansa de admirar o visual. Areias claras contrastando com o um mar esverdeado brilhante,  com o céu azul  e límpido. Parecia que havia um photoshop em ação sobre minha visão.

Divi-Divi

Adeus, dividivi

Bar e psicina do Divi-Divi

Ficamos no hotel Divi-Divi, que apesar de pequeno, tinha o quarto e banheiros bem grandes. Duas piscinas — uma delas é aí na foto — e um jardim pequeno, mas bem colorido, cercando o bar.

Ponta Negra

Morro do careca

Vista para o Morro do Careca

O hotel fica na praia de Ponta-Negra, que me parece ser a porta de entrada para os turistas. Possui vários hotéis, pousadas, restaurantes, bares.

É nela que se encontra um dos cartões postais de Natal: o Morro do Careca. Antigamente faziam o ski-bunda para descer pelo morro, mas hoje a prática é proibida, mesmo subir o morro é proibido. Parece que a movimentação estava destruindo o morro, com a areia toda descendo morro abaixo.

A praia é bem urbanizada, tendo pela orla um calçadão correndo ao lado da rua. Durante a noite ela é bem iluminada, cheia de casais sentados nos bancos,  se pegando namorando. Apesar de alertas dos guias locais quanto à segurança e tudo mais, achei a praia bem calma para passear durante a noite. E anoitece bem rápido por lá: às 18 horas o céu já está escuro.

Durante o dia vários quiosques, restaurantes, bares e ambulantes.  Mas com a citada urbanização surgem os problemas que te impedem de relaxar.  A todo momento alguém te oferece alguma coisa, pede dinheiro, e, o pior e mais irritante,  os carrinhos de som . Estes carrinhos são empurrados pela areia, tocando invariavelmente alguma música que você não suporta, em um volume que você não agüenta. E existem VÁRIOS deles. Em um dia em que fui aproveitar a praia durante o dia, estacionaram uns três carrinhos logo ao lado, tocando algo que ainda escuto em meus pesadelos. Ok, forcei a barra, mas era duro de agüentar.

Outro problema era andar pelo calçadão. Deve-se tomar cuidado para não ser atropelado por ciclistas e motociclistas que correm entre os pedestres. Quase me levaram o braço. E, pelo que percebi, geralmente os motociclistas são entregadores, levando produtos para os quiosques e quase atropelando seus clientes.

Pensando bem, parecia uma praia de SP, mas com um visual lindo e águas limpas. Bom, mas se quiser sossego o jeito é ir para as outras praias da cidade.

Passeios

As agências oferecem vários passeios. Eu não fiz todos, na verdade não fechei quase nenhum pacote. Mas um que fechei e recomendo é o passeio de buggy. O buggy te leva desde a porta do hotel até a praia de Muriú (se não me engano), passando pela Via Costeira, pelo parque das Dunas e outras praias do litoral norte.

Em meio às Dunas tinham até dromedários, que podem ser montados caso você se disponha a gastar R$30 reais (nem só o mar é salgado). Muitos turistas se contentam em tirar fotos.

Outro passeio foi o City Tour, que passa pelo centro histórico da cidade e depois vai em visita ao maior cajueiro do mundo, uma anomalia genética que se estenderá por todo o planeta, ao lado da praia de Pirangi. Na praia fica a marina Badauê, que oferce passeio de barco e mergulho em piscinas naturais.

Na praia optei por não comer no resturante da marina, querendo experimentar o peixe preparado numa barraca na praia. O peixe estava bom, acompanhado de arroz e fritas.

Aliás, uma das coisas que mais fiz por lá foi comer. Comer camarão. Natal é a capital do camarão, sendo a principal exportadora do crustáceo no país – a “plantação” de camarões é chamada carcinicultura. E, comparando com São Paulo, o camarão lá é barato e sempre fresco. Para quem adora, como eu, dá para aproveitar para comer todo dia.

Outro passeio que eu queria experimentar era de ver  o pôr do Sol em João Pessoa, ao som do bolero de Ravel. Opa, João Pessoa? Também achei estranho que um dos passeios mais oferecidos na região fosse de ir para a capital do estado vizinho. Deve ser bacana mesmo! Mas eu não quis fechar pacote (economizar para comer camarão!) e pegamos um dia para alugar um carro e ir pro litoral Sul.

Passamos primeiro na praia de  Tibau do Sul. Lá um garoto, um dos guias mirins da região, se ofereceu para nos levar para a praia de Pipa.  Aliás, este garoto contava umas histórias muito curiosas. Ao chegar na gente, ele disse ser amigo do Sérgio, da locadora em que alugamos o carro.  Super simpático, disse que às vezes passeava com o Sérgio e tudo mais.  Após darmos uma volta pela praia e tomar uma água de coco, aceitamos a oferta e pegamos o carro e o garoto em direção à praia de Cacimbinha e Ponta da Madeira.

Não lembro bem em qual delas é preciso descer uma escadaria de madeira. Deve ser a Ponta da Madeira, acho. Só sei que se não fosse o garoto eu teria passado direto por esta praia. E perdido a bela paisagem.  A entrada é direto pela estrada, por um portão estreito em um muro. Estranho, mas verdade. Tiramos fotos, demos outra volta, olhamos de longe a Praia do Amor e  rumamos para Pipa, afinal, teríamos de estar em João Pessoa antes do anoitecer.  E na viagem a gente ia conversando, e o menino disse saber falar várias línguas, por conta do bico de guia. Até já tinha tinha ido para a Suíça para a casa da tia. Mas lá era chato e ele preferia o Brasil.

Chegamos a última praia em nosso roteiro. Todas as praias são lindas, e Pipa não é exceção. Mas Pipa é mais badalada, tem um cidadezinha antes da praia que se parece com um vilarejo rústico. E é um vilarejo rústico, a não ser por várias lojas de moda praia, decoração presentes etc, que se encontram por lá, além de restaurantes e café, que pareciam bem caros.

Bom, demos uma volta, tiramos umas fotos, cortei a sola do pé nas pedras da praia, comemos alguns pastéis, largamos o garoto na saída da cidade e zarpamos para Paraíba. Pelo caminho ainda acompanhamos a orla de algumas praias, uma mais linda que a outra. Durante a viagem a gente ia acompanhando o sol já descendo no horizonte… Será que vai dar tempo?

Rumo a Paraíba

Seguindo placas finalmente chegamos em João Pessoa. Restava achar o pôr do Sol. A informação que tínhamos era que existia, em João Pessoa, um pôr do Sol ao som do bolero de Ravel. Onde? Paramos num posto e perguntamos ao frentista:

- Onde a gente consegue ver o pôr do Sol ao som do bolero de Ravel?

E ele responde de bate pronto:

- Em Cabedelo, é só seguir adiante e ir vendo as placas.

Parecia um diálogo cifrado do Agente 86…

E com Sol já meio baixo, rumamos para Cabedelo. Chegando em Cabedelo me lembrei de um tal de praia do Jacaré, onde ficava o pôr do Sol. E fizemos um retorno seguindo para a praia do Jacaré. Chegamos! Uns 15 minutos antes do Sol ir embora. E o mistério de ver o pôr do Sol na praia, no Brasil, foi desvendado. A gente assistiu o Sol se pondo na margem oposta do Rio Jacaré.  Com o Jurandy do Sax tocando o bolero de Ravel, com a última nota sendo lançada no momento do último brilho do Sol.  Espetacular!

Pôr do Sol na praia do Jacaré

Pôr do Sol na praia do Jacaré

Depois da epopéia de um dia, voltamos para descansar em Natal. No dia seguinte devolvemos o carro e descobrimos que o garoto, guia mirim, era paieiro. Não conhecia Sérgio nenhum e que na verdade todos os guias mirins da cidade conheciam de cor os carros de locadoras, inclusive sabendo a placa e de que locadora era, inclusive o nome das pessoas responsáveis pelas locadoras. o.O

E a história de vários idiomas e ter ido para a Suíca? Mistério…

Restaurantes

Comer é viver, e vice-versa. Então relaciono os lugares em que comi:

  • Camarões e Camarões – Potiguar – EXCELENTE:  ótimos restaurantes,  comida muito boa, assim como o atendimento. O preço é razoável, mas pensando num restaurante do mesmo nível em  Sampa, fica barato. Se puder comer fora apenas uma vez quando estiver na cidade, coma em algum deles. Mas escolha mesa para não-fumante. A proibição só existe em São Paulo!
  • O Peixe -  BOM: prato bom e bem servido por um preço camarada. Fica ao lado do restaurante Camarões. Muito bom para comer camarão no almoço sem esvaziar (muito) a carteira. Encher a barriga de camarão ficou em torno de 30 ~40 reais para o casal.
  • Taiyo -BOM: comida japonesa, passei lá para jantar e comer um teppan de, adivinhe. Isso, camarão. Muito boa comida e os donos são excelentes pessoas, daquelas de passar a noite toda conversando, mesmo sendo a primeira vez que encontra na vida.
  • Divi Divi – BOM: o restaurante do próprio hotel em que fiquei também tinha uma comida muito boa . O preço ficava na média da região.
  • Terra do Camarão – BOM para RUIM: este oferecia um rodízio de camarão.  Tinha desde estrogonofe de camarão até espaguete ao sugo com camarão, camarão frito e tudo mais.  Alguns pratos eram bons. Por exempo,  o caldinho estava uma delícia, assim como o bobó. Mas alguns pecavam e não tinham muito gosto, como o espaguete e outros cheios de óleo, como o à francesa. Pelo preço achei que não compensou.
  • Parada Obrigatória – RUIM: atendimento muito demorado, mesmo considerando o talento da região. E meio ríspido também. A comida também deixou a desejar. Existem muito lugares para comer na cidade. Pule este.
  • Pittsburg – RAZOÁVEL: nem toda refeição pode ter camarão. Esta é uma hamburgueria estilo McDonalds, Bobs etc.  Enfim, a comida da minha terrinha: fast food. Mas pelo menos pedi uma porção de macaxeira frita, ao invés das batatas de sempre.
  • Pastelaria na Praia de Pipa – BOM: lá comi um pastel que nunca tinha experimentado. Pastel de lagosta. Era a carne de lagosta desfiada, recheando bem um pastel frito na hora. Nipônico de São Paulo,  já comi muitos pastéis nesta vida, e os da praia estavam apenas ok. Mas vale a pena pelos recheios: lagosta, caranguejo etc.
Publicado em vida® | Com a tag , | Deixar um comentário

Inserindo registros geoespaciais: ArcSDE e SQL Server

Inserir registros diretamente através de comandos SQL é bem simples. Note que estou usando como tipo de dado geoespacial o GEOMETRY, nativo do SQL Server 2008.

Primeiro  é necessário criar uma tabela no SQL Server e registrá-la junto ao ArcSDE. Isto é bem simples de se realizar utilizando o ArcCatalog (note que também dá para se criar a tabela via SQL e registrá-la no ArcSDE via linha de comando).  Basta entrar no ArcCatalog, conectar-se com sua instância do ArcSDE e clicar com o botão direito no ícone do banco de dados. Depois é só escolher o Feature Class:

Feature Class

Criando um Feature Class

É apresentada então uma caixa de diálogo para criar sua tabela que conterá sua feição. Criei uma tabela chamada MeuFeatureClass. As colunas OBJECTID e SHAPE são criadas por padrão. Adicionei um campo1 e um campo2 também. E escolhi o tipo da geometria como POINT.

Criada a tabela é bem simples de se inserir um registro através de comando SQL:

INSERT INTO
MeuBD.sde.MeuFeatureClass
(OBJECTID, campo1, campo2, shape)
VALUES
(1, valor1, valor2, geometry::STGeomFromText('POINT (-46.616667 -23.533333)', 4674))

O comando acima insere um registro na tabela contendo um ponto localizado no município de São Paulo – SP, usando o SRID 4674 (SIRGAS 2000).

Note que não usamos uma função típica do T-SQL  para transformar o texto dado em uma coordenada válida pro sistema.  Isto me deixou confuso no início, pois eu não encontrava funções geoespaciais no banco de dados. Liste as funções existentes no banco de dados do ArcSDE que oê não encontrará nada relacionado ao sistema geo.

Estas funções ficam disponíveis como métodos da classe e objetos  geometry.  No caso acima, o STGeomFromText é um método estático da classe geometry. Os mundos da Orientação a Objetos e do SQL se mesclam cada vez mais…

Publicado em programação | Com a tag , | Deixar um comentário

Cache e camadas no ArcGIS Server

Estou trabalhando com o ArcGIS Server 9.3.1 e tenho de inserir alguns serviços nele. Cada serviço corresponde à uma camada, ou  layer, em meu mapa.

Para melhorar o  desempenho – sofrível se comparado com o MapServer – existe uma opção para a utilização de cache no ArcGIS Server que funciona bem. Ao invés do servidor ter de reconstruir a imagem, toda vez que ela é requisitada, ele gera esta imagem apenas uma vez, grava em algum lugar e depois apenas a repassa para o servidor de aplicação.

Isto gerou um problema. Quando as imagens era geradas dinamicamente, havia a possibilidade do ArcGIS Server reprojetar e/ou reposicionar o mapa para  combiná-la com todos os layers.  Se um serviço usa EPSG:4618 e outro usa SR-ORG:95,  por exemplo. Mas com o uso do cache, a imagem criada possui apenas o sistema de referenciamento definida no serviço, não podendo mudar.

Assim, ao combinar dois layers cujos sistemas de referenciamento espacial são diferentes, temos as seguintes situações:

  • Os dois layers são dinâmicos:  um sistema é escolhido e os dois layers utilizam este;
  • Um dos layers é dinâmico e o outro possui cache: o dinâmico é projetado/adaptado ao sistema do que tem cache;
  • Os dois layers usam cache: apenas um deles é exibido. Não há reprojeção.

O ideal então é manter um único sistema de referenciamento espacial nos serviços. E aproveitar para deixar todos no SIRGAS2000.

Publicado em software, web | Com a tag , | Deixar um comentário

Carregando bibliotecas Javascript abertas

Ext, jQuery, prototype, MooTools, Dojo, scrip.taculo.us, YUI. São algumas das feras que um desenvolvedor web tem de enfrentar, no caminho para matar o Dragão.

Algo que pode ajudar nesta tarefa é usar a própria API Google para carregar estas outras APIs:

http://code.google.com/apis/ajaxlibs/

O código, retirado direto do site, é o seguinte:

// Load Google JS API
<script src="http://www.google.com/jsapi"></script>
<script>
// Load jQuery
google.load("jquery", "1");
</script>

Você simplesmente:

  • carrega a API javascript do Google;
  • utiliza a API do Google para carregar as outras APIs, podendo escolher a versão, inclusive.

A opção de escolher a versão do script ajuda bastante a manter seus sistemas atualizados de forma bem simples.

O problema é apenas não poder guardar as APIs no servidor. Em uma rede local sem acesso à internet, por exemplo, isto já não serve.

Publicado em programação | Com a tag | 2 comentários

Bluebirds.exe ??

Em minha última montagem de PC, acabei comprando um gravador de DVD, desses comuns, da LG.

Instalado o sistema operacional, e configurada a conexão com a internet, removi o DVD de instalação do SO. Foi quando notei que uma mídia ainda era detectada, mesmo não havendo disco algum no drive. E além de tudo ainda apresentava um executável no autorun.

Muito estranho! Não tem disco nenhum no drive e o sistema me diz que tem, e ainda por cima pede para executar um tal de Bluebirds.exe?  Já teria pego um vírus?

Na verdade se tratava do firmware do drive, que, quando vazio, achava por bem simular  um disco de instalação de software.  Daqueles que vem junto do drive e você usa de porta-copo ou de frisbee.

A solução é atualizar o firmware. É só baixar e executar:

http://www.lge.com/us/support/product/support-product-profile.jsp?customerModelCode=GH22NS50

Pronto. Seu drive vazio continuará vazio.

Referência: http://www.msfn.org/board//index.php?act=ST&f=5&t=135300

Publicado em cacarecos | Com a tag | 2 comentários

SIRGAS 2000

Antes Sistema de Referencia Geocéntrico para America del Sur e agora Sistema de Referencia Geocéntrico para las Américas, o SIRGAS é o sistema de referenciamento espacial padrão do Brasil, definido pelo IBGE.

Seu SRID, num sistema geográfico, é  EPSG:  4674:

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"]]

Na prática o SIRGAS utiliza o mesmo elipsóde de referência do WGS84 – GRS 1980. Veja mais no site da UFRGS. O mesmo ocorre com o posicionamento do elipsóide, com seus centros situando-se bem próximos um do outro.

Isto significa que as medidas dados pelo SIRGAS são quase iguais aos dados pelo WGS84,  onde uma diferença entre as medidas pode ser menor que o erro aproximado de seu instrumento GPS, pois esta diferença está na ordem de centímetros.

Assim, se seu equipamento for antigo é bem provável que ocorram duas coisas:

  • ele não tenha uma precisão tão boa a ponto de se distinguir entre WGS84 e SIRGAS 2000;
  • ele não possua o SIRGAS 2000 em seu rol de referências.

Então use o WGS84 e seja feliz.

Publicado em programação | Com a tag , | 2 comentários

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.

Publicado em programação | Com a tag , | 2 comentários

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.

Publicado em programação | Com a tag | 3 comentários

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…

Publicado em linux | Com a tag | Deixar um comentário