PHP - Sınır verilerden bir dünya haritası oluşturma

4 Cevap php

[(0)] bütün ülkelerin sınırları ve bunu işlemek için bir sınıf için şekil verileri bulduk ve ben bir görüntüde piksel konuma enlem ve boylam dönüştürmek ve {kullanarak ülkeleri çizmek için bir script yazdım } ve imageline. Her şey dışında büyük çalışıyor:

1) Ben değiştirebilirsiniz $ ölçek değişken var. $ Ölçek = 1 de görüntü 360x180 piksel (1 piksel = 1 derece enlem / boylam). İdeal istediğim son görüntü $ ölçek = 2 (720x360) hakkında ancak 1 pixel kalınlığında bakışta sınır çizgileri çok kalın olurdu. Bu yüzden en iyi çözüm $ ölçekte = 10 de harita oluşturmak ve daha sonra oluşturulan görüntüyü yeniden boyutlandırmak için olacağını düşündüm. Sorun imagecopyresized etmez Antialias onu boyutlandırır ve gerçekten pürüzlü bir görüntü ile beni bırakır ne zaman, nasıl yeniden boyutlandırmak ve Antialias olabilir mi?

2) Bir ülkenin bir çokgen oluşturmak için puan sayısı bir LOT olduğunu. Plan bağlantılar içine ülkeleri yapmak için bir HTML imagemap üretmek için aynı kodu kullanmaktır. Ben şu anda korku Ancak bir imagemap için çok sayıda puan (dosya boyutu çok büyük olabilir) vardır. Benim ilk yaklaşım ben 1 10 puan işlemek ben çoğunlukla kabul edilebilir bir sonuç almak, bazı başarıya götürecek puan x miktarı, atlamak oldu. Ben bazı ülke sınırları üst üste buldu ve ülkeler arasında bazı boşluklar vardı (ama yoğun kıyı bazı iyi baktı) 40 in 1 çalıştım İdeal ... daha da az olurdu. Makul bir doğruluk seviyesini korurken noktalarının sayısını azaltmak için mantıklı bir yolu nedir?

Herkes ilgi ise (Bir kez bitmiş.) Ben kod sonrası edeceğiz

4 Cevap

Eğrilerin basitleştirilmesi / yaklaşım http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker%5Falgorithm bakmak için

Yani ikinci sorun için, bu sadece bir fikir onun daha herhangi bir kod yok. Haritası oluşturmak sınıflar bir x / y koordinatı ve sen hangi ülke belirlemek alabilir miyim?

Eğer yapabilirseniz, bir görüntü eşlemesi kullanmaktan kaçınmak ve sadece x / y tıklama koordine belirlemek için javascript kullanabilirsiniz daha oldu. Bir yerde içine bu gidermek ve normalde yaptığınız gibi bu hareket. Bu elbette olumsuz javascript kapalı ise o iş olmaz olmasıdır.

Olsa temiz geliyor.

İlkini çözüldü:

imagecopyresampled Ben imagecopyresized değil needed fonksiyonu

Sorunun ikinci kısmı için, ne yapmanız gereken her 10. noktası kullanabilirsiniz, ancak haritaya şey eklemek olanları kullanmak değildir. Bu render son noktadan bazı eşik mesafesi üzerinde ise bir noktayı kullanarak sadece deneyebilirsiniz. Yani daha az puan kullanan daha yoğun bölgelerde anlamına gelecektir, ama onlar dışarı aralıklı olduğunuzda size ihtiyacınız kadar kullanın.