2009-12-12 64 views
2

我已經找到所有國家和類的邊界的形狀數據來處理它,我寫了一個腳本來將經度和緯度轉換爲圖像上的像素位置並繪製使用imagefilledpolygonimageline的國家。一切都很好,除了:PHP - 從邊界數據生成世界地圖

1)我有一個$ scale變量,我可以改變。在$ scale = 1時,圖像是360x180像素(1像素= 1度緯度/經度)。理想情況下,我想要的最終圖像大約是$ scale = 2(720x360),但1像素厚的邊界線看起來很厚。所以我認爲最好的解決方案是生成$ scale = 10的地圖,然後調整生成的圖像的大小。問題是imagecopyresized調整大小時沒有抗鋸齒,它使我留下一張非常鋸齒的圖像,如何調整大小和抗鋸齒?

2)生成一個國家的多邊形的點數是LOT。該計劃是使用相同的代碼來生成一個HTML圖像地圖,使這些國家成爲鏈接。不過,我擔心目前圖像映射點太多(文件大小可能太大)。我最初的方法是跳過x點,這導致了一些成功,如果我在10分中處理1,我主要得到可接受的結果。理想情況下,我會更少...當我在40歲時嘗試1時,發現一些國家邊界重疊,並且國家之間存在一些差距(但一些繁忙的海岸線看起來更好)。在保持合理的準確度的同時減少點數的合理方法是什麼?

如果有人有興趣,我會張貼代碼(一旦它完成。)

+1

這不回答你的問題,但可能與圖像瑪姬,你會得到更好/更快的處理結果。 – AntonioCS 2009-12-12 22:22:14

回答

0

所以我沒有這方面的任何代碼,它更多的只是一個想法,爲您的第二個問題。您的生成地圖的課程能否採用x/y座標並確定您所在的國家/地區?

如果可以,比你可以避免使用圖像映射,並使用javascript來確定點擊的x/y座標是什麼。解決這個問題到一個位置,並像平常一樣對其進行處理。當然,這個問題的關鍵在於,如果關閉javascript,它將無法工作。

雖然聽起來很整齊。

+0

這可以與ajax一起工作:將所有點存儲在服務器上,然後當用戶單擊查詢xy鼠標單擊時......是的,我可以看到這個工作。問題是我想鼠標移動數據(國家名稱)...我想如果有每個鼠標移動的ajax請求可能會有點沉重:) – Mark 2009-12-12 21:15:17

+0

是啊...絕對不是每個動作:) – raytiley 2009-12-12 21:22:41

0

解決的第一個:

imagecopyresampled是我需要的不是imagecopyresized

0

對於你的問題的第二部分的功能,你需要做的是不使用每10個點,但只使用那些什麼在地圖上添加一些東西。如果距離最後一個點的距離超過某個閾值,則只能使用點。這意味着你可以在更密集的區域使用更少的點數,但是當它們分開時,可以使用盡可能多的點數。

+0

你好,我是考慮到......我有一種感覺,我可能仍然會遇到同樣的問題,它會在兩個國家之間留下差距或導致重疊。我想在嘗試中沒有傷害。 – Mark 2009-12-12 21:35:28

+0

那麼,如果你發現你得到太多或不足夠的點,你可以通過改變閾值距離來調整結果。 – justinlatimer 2009-12-12 21:45:20