Struttura dei dati ideale per l'archiviazione dei dati della mappa?


12

Mi è stato chiesto questo in un test di intervista. Ho fatto bene il test ma non sapevo abbastanza per rispondere a questa domanda. Sono curioso di sapere quali strutture di dati posso usare per interrogare rapidamente i dati.

Fondamentalmente l'idea è che ci sarebbero sezioni stradali (linee, costituite da punti) memorizzate in un qualche tipo di struttura di dati. Dovrebbe essere rapido interrogare quali tratti stradali (o punti) si trovano ad una certa distanza da un punto (raggio).


Per saperne di più, vorrei leggere su: cgal.org , quindi guardare questi progetti: cgal.org/projects.html#gis , trovare quello che assomiglia a quello che vuoi, e quindi studiare l'uso dell'API e infine il trucco dell'API.
Giobbe

Risposte:


16

Il modo tipico di archiviare i dati geografici è con una struttura di dati spaziali come un R-tree (o qualche variante, come R + tree, R * tree, ecc.) Ecco come i tipi di dati geografici vengono normalmente implementati in GIS RDBMS. (So ​​che sia SQL Server 2008 che PostGIS di Microsoft utilizzano alberi R per i tipi geografici.) Soddisfano tutti i requisiti di base descritti e supportano banalmente intersezioni, ubicazioni, distanze e altri tipi di query.

A seconda del tipo di dati, potresti anche trovare cose come alberi di kD, alberi di quad, ocre, gerarchie di volumi di delimitazione (inclusi alberi di delimitazione allineati ad asse), ecc. Di uso comune. Questo è in realtà molto più comune nei giochi 3D, poiché le dimensioni e la forma di un oggetto sono più rilevanti per le query di intersezione. Sono meno usati per GIS che R-alberi.


0

Diversi tipi di operazioni sui dati della mappa richiedono formati di archiviazione diversi per risultati ottimali. Considerare, ad esempio, le tre attività seguenti:

  1. Dato un punto, trova la strada più vicina a quel punto
  2. Data una zona geografica di una certa dimensione, trova tutte le strade che si trovano all'interno di quella zona.
  3. Date due strade, trova il percorso più breve tra loro.

Le differenze nei requisiti sono sufficientemente grandi che, a meno che uno non debba adattarsi a modifiche "in tempo reale" della mappa, è probabile che si stia meglio con l'archiviazione di tre copie separate dei dati - ciascuna ottimizzata per una delle attività di cui sopra - piuttosto che provare trovare un formato in grado di gestire bene tutte e tre le attività.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.