Domanda

SpatialKey genera alcuni bei heatmaps alla ricerca, e stiamo esaminando ciò che è coinvolto nel fare questo per un progetto interno per visualizzare grandi quantità di punti. Sto cercando un feedback su alcune idee su dove iniziare (ed è solo un problema davvero interessante).

SpatialKey heatmap http://img697.imageshack.us/img697/7964/resolutiondays508x17550. jpg

Sappiamo che stanno utilizzando Flash, e da quello che possiamo dire, le mappe di calore sono interattivi piuttosto che essere reso da un server di piastrelle. La nostra prima risposta a come questo viene implementato è che il server fornisce il client Flash con una griglia - ciascuna cella avendo un conteggio calcolato dal server. Il client Flash quindi non un po 'di interpolazione in base ai valori delle celle della griglia per fare la bella uscita che vedete qui sopra.

A questo punto, io sono solo interessato a come si potrebbe forse generare la griglia in modo efficiente sul lato server (se la nostra ipotesi sulla loro attuazione è ancora corretta). Sembra che comporterebbe:

  1. L'esecuzione di una query per ciò che è attualmente in mappa limiti
  2. Esecuzione di subquery di aggregazione per ogni cella all'interno di questi limiti (facendo un conteggio, somma o media come nell'esempio precedente).

Tiro a fare questo a più livelli di zoom a una risoluzione della griglia sano e sembra che avresti bisogno di un indice spaziale personalizzato per rendere questo efficiente.

Eventuali acquirenti a spiegare un percorso alternativo? Se è importante, siamo abituati qui per memorizzare i nostri dati in PostgreSQL con PostGIS per l'indice spaziale, ma sono aperto a provare qualcosa.

È stato utile?

Soluzione

Come solo una supposizione, mi immagino che hanno messo in atto una biblioteca GIS in Flash nel lato client e stanno usando questo per proiettare le coordinate di latitudine e longitudine in uno spazio di pixel. Poi si aggregano per pixel per determinare la "altezza" di ogni pixel e renderlo proprio come si farebbe rendere un cerchio, ma utilizzando un riempimento sfumato con una trasparenza, con le iniziali e finali colori del riempimento sfumatura determinati dalla altezza del pixel. cerchi multipli sovrapposti l'uno sopra l'altro creerà pixel più luminosi.

Un'alternativa potrebbe essere quella di fare questo in una scala di grigi, mappare il valore di luminosità di una scala di colori. Che potrebbe essere più efficiente.

Vendiamo i più tradizionali mappe di calore treemap per l'uso integrazione nelle applicazioni di analisi visive (ad esempio: il calore mappa SDK), e ora hanno le mappe di calore geografiche che Colorize aree. Leggiamo mappe standard file di forma ESRI e fare tutto la proiezione e il rendering sul lato client (in Java, non Flash, ma lo stesso concetto). Penso SpatialKey sta facendo lo stesso, dal momento che supportano il rendering dell'area pieno, che non può davvero essere fatto se si utilizza un server di piastrelle come Google Maps.

Non abbiamo ancora facendo mappe di calore densità come questo, ma abbiamo eseguito un test coppia utilizzando immagini statiche come sfondo. Se volete maggiori informazioni, fatemelo sapere e vi posso chiedere al mio sviluppatore come abbiamo fatto. So che siamo attualmente in fase di sviluppo su più caratteristiche del punto-base, anche se non so dove la densità mappe di calore sono in programma ancora.

SpatialKey solo in realtà ha scritto un buon post sul diverso tra le mappe della zona piena di calore (ad esempio: mappe tematiche) e mappe di calore densità. È possibile controllare fuori a http: // blog. spatialkey.com/2010/02/comparing-thematic-maps-with-density-heatmaps/.

Se non capire un buon modo di fare mappe di calore densità, sarei interessato ad imparare come avete fatto, come sarebbe una preziosa aggiunta alla nostra analisi SDK visivo. Buona fortuna.

Altri suggerimenti

MapReduce per i vostri effettivi mappa importi cumulati, e qualcosa con indicizzazione Geospatial per il database - per alimentare questi posti di lavoro MapReduce. Sto cercando in attuazione di questo stesso approccio esatto, ma per le interfacce, invece di mappe :) MongoDB sembra essere una buona misura al momento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top