J'ai trouvé les données de forme pour les frontières de tous les pays et une classe pour le traiter et j'ai écrit un script pour convertir la longitude et la latitude en pixels sur une image et pour dessiner les pays en utilisant imagefilledpolygon
et imageline
. Tout fonctionne bien sauf:PHP - générer une carte du monde à partir des données de frontière
1) J'ai une variable d'échelle $ que je peux changer. A $ scale = 1, l'image est de 360x180 pixels (1 pixel = 1 degré latitude/longitude). Idéalement, l'image finale que je souhaite serait environ $ scale = 2 (720x360) mais les lignes de bordure à 1 pixel d'épaisseur semblent très épaisses. Donc, je pensais que la meilleure solution serait de générer la carte à $ scale = 10 puis redimensionner l'image générée. Le problème est imagecopyresized
ne pas antialias quand il redimensionne et il me laisse avec une image vraiment déchiquetée, comment puis-je redimensionner et antialias?
2) Le nombre de points pour générer un polygone d'un pays est BEAUCOUP. Le plan est d'utiliser le même code pour produire un imagemap HTML pour faire des pays des liens. Cependant, je crains pour l'instant qu'il y ait trop de points pour un imagemap (la taille du fichier peut être trop grande). Mon approche initiale était de sauter x nombre de points, ce qui conduit à un certain succès, Si je traite 1 sur 10 points, je reçois un résultat acceptable la plupart du temps. Idéalement j'aurais encore moins ... quand j'ai essayé 1 sur 40, j'ai trouvé que certaines frontières de pays se chevauchaient et qu'il y avait quelques écarts entre les pays (mais certaines des côtes les plus fréquentées semblaient mieux). Quel est le moyen sensé de réduire le nombre de points tout en maintenant un niveau de précision raisonnable?
Si quelqu'un est intéressé je posterai le code (une fois terminé.)
Cela ne répond pas à votre question, mais peut-être avec l'image Magik vous obtiendrez de meilleurs résultats plus rapides/de traitement. – AntonioCS