2011-01-18 16 views
6

Sto cercando di generare mappe di trasporto in uno stile simile all'iconica mappa [metropolitana] di Londra.Generazione mappe dinamicamente

Queste mappe cambieranno di volta in volta e molte saranno richieste così invece di disegnarle manualmente in inkscape [o simili] spero di averli generati dinamicamente da un db o un dataset.

Qualcuno sa se ci sono delle API delle librerie ecc là fuori che avrebbe aiutato in questo compito, o qualche suggerimento in generale di come [o come non] per andare su questo?

sto pensando svg di sarebbe il modo migliore per andare con questo, in più ci potrebbe essere la necessità di interattività di base su tutta la linea.

Sto lavorando in php in modo altrimenti è GDlib, ImageMagick?

Grazie in anticipo.

.k

+0

Si può effettivamente disegnare al volo. Vedi: php.net/manual/en/book.image.php. Ma l'elaborazione delle immagini richiede un'enorme quantità del limite massimo di memoria. Hai considerato di avere un'interfaccia di amministrazione (o l'attivazione di script laterali su qualsiasi modifica di dati) di un certo tipo a) collegare i numeri ogni volta che vengono modificati, quindi b) ricreare un'immagine statica? In questo modo le richieste dei client non devono occuparsi di alcuna creazione di immagini effettiva. –

risposta

1

Bene, la risposta in realtà è neanche su come utilizzare GD o ImageMagick, ci sono manuali per questo. Per quanto riguarda le librerie di helper, la maggior parte delle librerie si concentra sulla grafica e su qualsiasi altra cosa tu debba scrivere da solo. La soluzione migliore è che l'interfaccia di amministrazione genera le immagini quando i dati nel back-end cambiano e memorizzano nella cache le immagini, poiché non c'è motivo di creare l'immagine ogni volta che qualcuno vi accede.

Per generare mappe, penso che la soluzione migliore sarebbe definire le stazioni con una o più 'linee' che determinano una sorta di indicatore di relazione con le stazioni in giro e una x, y. Probabilmente dovresti solo determinare una stazione "genitore" dato che stai semplicemente disegnando linee da a-b. In questo modo è possibile posizionarli nello stesso modo in cui vengono tipicamente visualizzati sui treni reali, utilizzare le linee e le stazioni circostanti per tracciare le mappature.

Non sembra un problema troppo difficile. 3 tabelle:

  • stazioni [StationID, nome, x, y, meta1, meta2],
  • posizionamenti [placementId, StationID, LineID, parentstationid],
  • linee [LineID, nome, meta1, meta2 , colore, ecc].

SVG sarebbe abbastanza buono a questo genere di cose, e si eviterebbe l'intero processo di costruzione e memorizzazione nella cache dell'immagine, ma si guardi bene dai problemi di supporto del browser.

Suona come un progetto piuttosto interessante, però, buona fortuna :)

0

Una strategia che uso quando ho bisogno di generare grafici da dati in un db è quello di estrarre i dati in una sorta di modo XML (ad esempio Oracle SQLX o Cocoon XSP/ESQL o eXist-db XQuery) e elaborarlo tramite un XSLT per generare SVG. Il buon vecchio Cocoon va bene per questo tipo di lavoro se non vuoi scrivere alcun codice (tranne l'XSL, ovviamente ;-).

Lo SVG stesso può essere caricato in alcuni strumenti grafici rielaborare.

0

Queste mappe cambieranno di volta in tempo e molti saranno tenuti in modo invece di elaborare manualmente in Inkscape [o simili] Spero di li hanno generati dinamicamente da un db o set di dati .

Se fossi nei vostri panni, la prima cosa che farei è provare a dimostrare che l'API di Google Maps non funzionerà per la vostra applicazione. Quindi, forse, prova che ArcGIS non funzionerà. (Anche se non funzionano, sono ampiamente utilizzati, e puoi aggiungere linee al tuo CV.)