Domanda

Ho trovato i dati di forma per i confini di tutti i paesi e di una classe per elaborare e ho scritto uno script per convertire la longitudine e la latitudine in una posizione di pixel in un'immagine e di disegnare i paesi che utilizzano imagefilledpolygon e imageline . Tutto sta funzionando ottimo, tranne:

1) Ho una variabile di scala $ che posso cambiare. A $ scale = 1 l'immagine è 360x180 pixel (1 pixel = 1 grado di latitudine / longitudine). Idealmente l'immagine finale che voglio sarebbe di circa $ scale = 2 (720x360), tuttavia i confini a 1 pixel sguardo di spessore molto spessa. Così ho pensato che la soluzione migliore sarebbe quella di generare la mappa a $ scala = 10 e quindi ridimensionare l'immagine generata. Il problema è imagecopyresized non antialias quando ridimensiona e mi lascia con un'immagine davvero frastagliata, come posso ridimensionare e antialias?

2) Il numero di punti per generare un poligono di un paese è molto. Il piano è quello di utilizzare lo stesso codice per produrre una mappa immagine HTML per rendere i paesi in link. Tuttavia temo in questo momento ci sono troppi punti per una mappa immagine (la dimensione del file potrebbe essere troppo grande). Il mio approccio iniziale era quello di saltare x quantità di punti, che portano a un certo successo, se io processo 1 a 10 punti ottengo un risultato accettabile per lo più. Idealmente avrei ancora meno ... quando ho provato 1 a 40 ho trovato qualche paese confini sovrapposti e c'erano alcune lacune tra i paesi (ma alcune delle coste più frequentate guardato meglio). Che è un modo ragionevole per ridurre il numero di punti, pur mantenendo un ragionevole livello di accuratezza?

Se qualcuno è interessato vi posterò il codice (una volta che è finito.)

È stato utile?

Soluzione

Per la semplificazione / ravvicinamento delle curve dare un'occhiata a http: // it .wikipedia.org / wiki / Ramer-Douglas-Peucker_algorithm

Altri suggerimenti

Quindi non ho alcun codice per questo, la sua più di una semplice idea per il secondo problema. Può il vostro classi che generano la mappa prendere un x / y coordinate e determinare quale paese ci si trova?

Se è possibile, di quanto si potrebbe evitare di utilizzare una mappa immagine e basta usare javascript per determinare ciò che il coordinate x / y del click è stato. Risolvere questo in una posizione e agire su di esso, come si farebbe normalmente. Lato negativo di questo, naturalmente, è che se javascript è disattivato non funzionerà.

Suoni pulito però.

Risolto il primo:

imagecopyresampled è la funzione che non aveva bisogno di imagecopyresized

Per la seconda parte del problema, ciò che devi fare è non usare tutti i 10 punti, ma utilizzare solo quelli che aggiungono qualcosa alla mappa. Si potrebbe provare solo con un punto se è sopra una certa distanza di soglia dall'ultimo punto reso. Ciò significherebbe nelle aree più dense si utilizza meno punti, ma quando sono ripartite si utilizza come molti come avete bisogno.

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