Coordenadas de maps.google

05/12/2006 - 17:32 por kuki | Informe spam
Hola, aunque este no es mi primer mensaje, hace años
que no paso por aquí así que aprovecho para saludaros a todos.

Llevo un par de días dándole vueltas a un problema al que aún
no he encontrado solución en ningún sitio y que estoy seguro, alguno de
vosotros habrá resuelto.

Aquí va:

Tengo una base de datos donde almaceno la latitud y longitud, las
coordenadas las obtengo de maps.google
la longitud y latitud que obtengo del google queda como esto:

latitud 38.537692870902944
longitud -0.11707305908203125


los guardo como campos float en una bbdd sql server 2005

cuando intento acceder a ellos (asp.net)

(sqlDataReader.GetDouble(Latitud)).ToString();


38.537692870902944 se ha convertido en 3,85378942805173E+15

Una solución sería guardar las coordenadas en char pero eso me podría
limitar en un futuro.

¿A alguien se le ocurre algo?

Preguntas similare

Leer las respuestas

#1 Francisco Matamoros
05/12/2006 - 18:18 | Informe spam
¿Puedes aumentar la precisión del campo decimal donde lo guardas?
Es una opción, creo.
Saludos.

"kuki" escribió en el mensaje
news:%
Hola, aunque este no es mi primer mensaje, hace años
que no paso por aquí así que aprovecho para saludaros a todos.

Llevo un par de días dándole vueltas a un problema al que aún
no he encontrado solución en ningún sitio y que estoy seguro, alguno de
vosotros habrá resuelto.

Aquí va:

Tengo una base de datos donde almaceno la latitud y longitud, las
coordenadas las obtengo de maps.google
la longitud y latitud que obtengo del google queda como esto:

latitud 38.537692870902944
longitud -0.11707305908203125


los guardo como campos float en una bbdd sql server 2005

cuando intento acceder a ellos (asp.net)

(sqlDataReader.GetDouble(Latitud)).ToString();


38.537692870902944 se ha convertido en 3,85378942805173E+15

Una solución sería guardar las coordenadas en char pero eso me podría
limitar en un futuro.

¿A alguien se le ocurre algo?
Respuesta Responder a este mensaje
#2 kuki
07/12/2006 - 08:33 | Informe spam
Bueno, realmente nunca he operado con números de tanta precisión así que
si a alguien se le ocurre algún tipo mejor que float...

He probado con decimal y no me ha salido tampoco y real quiza no se
ajustar bien el tipo decimal

un saludo


Francisco Matamoros escribió:
¿Puedes aumentar la precisión del campo decimal donde lo guardas?
Es una opción, creo.
Saludos.

"kuki" escribió en el mensaje
news:%
Hola, aunque este no es mi primer mensaje, hace años
que no paso por aquí así que aprovecho para saludaros a todos.

Llevo un par de días dándole vueltas a un problema al que aún
no he encontrado solución en ningún sitio y que estoy seguro, alguno de
vosotros habrá resuelto.

Aquí va:

Tengo una base de datos donde almaceno la latitud y longitud, las
coordenadas las obtengo de maps.google
la longitud y latitud que obtengo del google queda como esto:

latitud 38.537692870902944
longitud -0.11707305908203125


los guardo como campos float en una bbdd sql server 2005

cuando intento acceder a ellos (asp.net)

(sqlDataReader.GetDouble(Latitud)).ToString();


38.537692870902944 se ha convertido en 3,85378942805173E+15

Una solución sería guardar las coordenadas en char pero eso me podría
limitar en un futuro.

¿A alguien se le ocurre algo?




Respuesta Responder a este mensaje
#3 Paco Ferre
07/12/2006 - 11:43 | Informe spam
Hola, una cosillas.

Acerca del tipo de datos, la mantisa en un tipo float es 15 y creo que
necesitas 17, ¿sabes cuantos metros/cms pierdes en esos 3 dígitos
finales?

>> 38.537692870902944 se ha convertido en 3,85378942805173E+15


¿E+15?, ¿no sería E+1?


Luego, para convertir a string prueba (con 15 #):

(sqlDataReader.GetDouble(Latitud)).ToString("0.###############");
String.Format(sqlDataReader.GetDouble(Latitud),
"{0:0.###############}");

O hasta puedes ver qué sale en la sentencia SQL:
CONVERT(varchar(30), Latitud) As LatitudString

Saludos,

Paco Ferre

kuki ha escrito:

Bueno, realmente nunca he operado con números de tanta precisión así que
si a alguien se le ocurre algún tipo mejor que float...

He probado con decimal y no me ha salido tampoco y real quiza no se
ajustar bien el tipo decimal

un saludo


Francisco Matamoros escribió:
> ¿Puedes aumentar la precisión del campo decimal donde lo guardas?
> Es una opción, creo.
> Saludos.
>
> "kuki" escribió en el mensaje
> news:%
>> Hola, aunque este no es mi primer mensaje, hace años
>> que no paso por aquí así que aprovecho para saludaros a todos.
>>
>> Llevo un par de días dándole vueltas a un problema al que aún
>> no he encontrado solución en ningún sitio y que estoy seguro, alguno de
>> vosotros habrá resuelto.
>>
>> Aquí va:
>>
>> Tengo una base de datos donde almaceno la latitud y longitud, las
>> coordenadas las obtengo de maps.google
>> la longitud y latitud que obtengo del google queda como esto:
>>
>> latitud 38.537692870902944
>> longitud -0.11707305908203125
>>
>>
>> los guardo como campos float en una bbdd sql server 2005
>>
>> cuando intento acceder a ellos (asp.net)
>>
>> (sqlDataReader.GetDouble(Latitud)).ToString();
>>
>>
>> 38.537692870902944 se ha convertido en 3,85378942805173E+15
>>
>> Una solución sería guardar las coordenadas en char pero eso me podría
>> limitar en un futuro.
>>
>> ¿A alguien se le ocurre algo?
>
>
Respuesta Responder a este mensaje
#4 kuki
07/12/2006 - 16:24 | Informe spam
bueno, al final descubrí el problema, lo cuento por si a alguien le ayuda

mi aplicación obtenía las coordenadas directamente de google, el formato
utilizado paraç
separar los decimales es: el maldito punto


así tenemos que las coordenadas

lat 38.5395726720391
long -0.1263427734375

al ser introducidas en la bbdd se convertian en

lat 385395726720391
long -1263427734375

que no es para nada lo mismo

así que al recuperarlas hay que convertir el punto en coma y viceversa al
enviarlas a las funciones de google maps

con respecto a la bbdd un campo float le viene perfecto aún así recortando
mucho las coordenadas no se pierde precisión (aunqeu en un futuro en el que
aumente la precisión de google maps si podríamos notarlo)

la prueba

http://maps.google.com/maps?q8.5395...3427734375
no pierde precisión con respecto
http://maps.google.com/maps?q8.5395...0.12634277
(5 menos de precisión)



Con respecto al formato de la cadena no hay que hacer nada
((Double)sqlDataReader.GetSqlDouble(Latitud)).ToString();

funciona perfectamente y me imagino que se puede simplificar (no me da
tiempo ahora)



bueno pues gracias por haber contestado de todas maneras y espero que ha
alguien le sirvan las neuronas que em he quemado






"kuki" escribió en el mensaje
news:%
Hola, aunque este no es mi primer mensaje, hace años
que no paso por aquí así que aprovecho para saludaros a todos.

Llevo un par de días dándole vueltas a un problema al que aún
no he encontrado solución en ningún sitio y que estoy seguro, alguno de
vosotros habrá resuelto.

Aquí va:

Tengo una base de datos donde almaceno la latitud y longitud, las
coordenadas las obtengo de maps.google
la longitud y latitud que obtengo del google queda como esto:

latitud 38.537692870902944
longitud -0.11707305908203125


los guardo como campos float en una bbdd sql server 2005

cuando intento acceder a ellos (asp.net)

(sqlDataReader.GetDouble(Latitud)).ToString();


38.537692870902944 se ha convertido en 3,85378942805173E+15

Una solución sería guardar las coordenadas en char pero eso me podría
limitar en un futuro.

¿A alguien se le ocurre algo?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida