none
Erro ao obter a Latitude e a Longitude através do script RRS feed

  • Pergunta

  • Bom Dia a Todos.

    O Péricles do site http://blogsqlserver.blogspot.com.br/2011/03/google-maps-geocode-pelo-endereco.html disponibilizou uma script que obtem as coordenadas através do endereço, mas está retornando NULL na Latitude e Longitude. Porquê será?

    Segue o Script:

    use master;
    go
    exec sp_configure 'show advanced options', 1
    go
    reconfigure
    go
    exec sp_configure 'Ole Automation Procedures', 1
    go
    reconfigure
    -- Variaveis
    -- Variables
    DECLARE @Response VARCHAR(8000)
    DECLARE @XML XML
    DECLARE @Obj INT 
    DECLARE @Result INT
    DECLARE @HTTPStatus INT
    DECLARE @ErrorMsg VARCHAR(MAX)
    DECLARE @URL VARCHAR(MAX)
    DECLARE @GPSLatitude NUMERIC(20,6)
    DECLARE @GPSLongitude NUMERIC(20,6)
    DECLARE @Endereco VARCHAR(100)
    -- Endereco para teste
    -- Test address
    SELECT @Endereco = 'Av. Paulista, 500, Sao Paulo, SP'
    SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?sensor=false&address=' + @Endereco
    -- Criacao do objeto XMLHttp
    -- Object XMLHttp creation
    EXEC @Result = sp_OACreate 'MSXML2.ServerXMLHttp', @Obj OUT 
    -- Envio do comando GET
    -- GET command
    BEGIN TRY
    EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false
    EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL,
    'Content-Type', 'application/x-www-form-urlencoded'
    EXEC @Result = sp_OAMethod @Obj, send, NULL, ''
    EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT 
    EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml', @Response OUT 
    END TRY
    BEGIN CATCH
    -- Controle de Erro com bloco Try/Catch
    -- Error Control
    SELECT @ErrorMsg = ERROR_MESSAGE()
    END CATCH
    -- Destruicao do objeto
    -- Object free
    EXEC @Result = sp_OADestroy @Obj
    -- Transformacao do resultado em XML
    -- Convert result in XML Datatype
    SELECT @XML = CAST(@Response AS XML)
    -- Leitura dos valores desejados (latitude/longitude)
    -- Gathering coordinates from XML
    SELECT @GPSLatitude = @XML.value('(/GeocodeResponse/result/geometry/location/lat) [1]', 'numeric(10,6)')
    SELECT @GPSLongitude = @XML.value('(/GeocodeResponse/result/geometry/location/lng) [1]', 'numeric(10,6)')
    -- Exibicao dos resultados
    -- Results
    SELECT @GPSLatitude AS [Latitude], @GPSLongitude AS [Longitude], @XML AS [XML]


    Fabio Jacomini


    • Editado Fábio Jacomini sexta-feira, 9 de novembro de 2012 13:01 Erro no texto
    sexta-feira, 9 de novembro de 2012 12:56

Todas as Respostas

  • Fábio, como já deve ter notado, o retorno do XML é muito extenso para o tipo varchar(8000). Já tentou jogar diretamente para XML o resultado? Estou sem ambiente de teste, mas acho que você pode pegar este resultado já em XML

    EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml', @Response OUT 

    sexta-feira, 9 de novembro de 2012 17:39