0votos

Presentar un mapa de calor dadas coordenadas GPS en SQL

por josejuan hace 4 años

Usando las 3,2 millones de ciudades en el mundo, un mapa de densidad a caracteres.

Dada una lista de coordenadas GPS, dibujar algún tipo de mapa de calor (a más coordenadas concentradas en una zona más "temperatura").

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
-- Hacer un BULK INSERT del archivo a `worldcities` 
--      source: https://www.maxmind.com/en/worldcities 
 
set nocount on 
 
-- Ángulo en grados de precisión del mapa (inversa de) 
declare @angpp float = 1. / 5. 
 
-- Contamos ciudades por píxel 
declare @coords table (x int, y int, n int) 
    insert into @coords 
        select x, y, count(*) 
        from ( select x = Convert(int, (longitude + 180) * @angpp), 
                      y = Convert(int, (latitude  + 90 ) * @angpp) 
               from worldcities ) q 
        group by x, y 
 
-- Buscamos límites 
declare @maxn int, @maxx int, @maxy int 
    select @maxn = max(n), @maxx = max(x), @maxy = max(y) from @coords 
 
-- Cada posible píxel 
declare @xaxis table (x int) 
declare @yaxis table (y int) 
declare @c int 
    set @c = 0;    while @c <= @maxx begin insert into @xaxis values (@c); set @c = @c + 1; end 
    set @c = 0;    while @c <= @maxy begin insert into @yaxis values (@c); set @c = @c + 1; end 
 
-- Rellenamos ceros 
insert into @coords 
    select a.x, a.y, 0 
    from (select x, y from @xaxis, @yaxis) a 
    left outer join @coords b on a.x = b.x and a.y = b.y 
    where b.x is null 
 
-- Renderizamos el mapa 
declare @map varchar(max) 
    set @map = '' 
    select @map = @map + case when x = 0 then '< 
>' else '' end + case when f=0 then '  ' when f<0.1 then '· ' when f<0.3 then '+ ' when f<0.4 then '* ' else '@ ' end 
    from (select x, y, f=n*1./@maxn from @coords) q 
    order by y desc, x 
    print @map 
3 comentarios
0votos

Escrito por Nerea hace 4 años

Habría alguna función para que cuando pase el ratón por alguno de esos puntos me indicara el nombre de la ciudad que es??
0votos

Escrito por josejuan hace 4 años

¿Una función?, creo que te refieres a algún plugin o similar. Dependiendo de la plataforma en la que quieras presentar deberás usar una u otra forma. Por ejemplo en Microsoft Excel sería crear un gráfico. Si te refieres para ponerlo en la web hay muchos por ahí para representar planos.

De todos modos, no tiene sentido para el desafío, porque en el desafío, cada píxel "de calor" contiene miles de ciudades (aunque podría mostrarse el nº de ciudades, habitantes totales, etc...).

Usar Google Maps es muy fácil, pero hay otros como http://www.creativebloq.com/design-tools/data-visualization-712402

No se si es eso lo que preguntas...

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.