, sana latitude ve longitude ters olduğunu düşünüyorum. Boylam ölçümleri X ve enlem ölçümleri Y.
Enlem, kuzey-güney mesafesine dönüşmek kolaydır. 360 derecenin kutupların arasından dünyanın etrafında tam bir daire ve that distance is 40008000 meters olduğunu biliyoruz. Yeryüzünün küresel olmasından kaynaklanan hataları hesaba katmanız gerekmediği sürece, formül deltaLatitude * 40008000/360
'dur.
Zor olan bölüm, şüphelendiğiniz gibi, boylamı X'e dönüştürmektir. Enlemine bağlı olduğundan, hangi enlemi kullanacağınıza karar vermeniz gerekir - kaynağınızın enlemini, hedefinizin enlemini veya aralarında rastgele bir noktayı seçebilirsiniz. Ekvatordaki çevre (enlem 0) 40075160 metredir. Belirli bir enlemdeki bir çemberin çevresi, kosinüsle orantılı olacaktır, bu yüzden formül, deltaLongitude * 40075160 * cos(latitude)/360
olacaktır.
Düzeltme: Yorumunuz, boylam formülü ile ilgili bir sorun olduğunu gösterir; cos
numaralı çağrıda radyan yerine derece kullanmış olabilirsiniz, bu yaygın bir çaylak hatasıdır. Belirsizlik olmadığından emin olmak için, işte Python'da çalışma kodu.
def asRadians(degrees):
return degrees * pi/180
def getXYpos(relativeNullPoint, p):
""" Calculates X and Y distances in meters.
"""
deltaLatitude = p.latitude - relativeNullPoint.latitude
deltaLongitude = p.longitude - relativeNullPoint.longitude
latitudeCircumference = 40075160 * cos(asRadians(relativeNullPoint.latitude))
resultX = deltaLongitude * latitudeCircumference/360
resultY = deltaLatitude * 40008000/360
return resultX, resultY
X hesaplaması için relativeNullPoint enlemesini kullanmayı seçtim. Bu, birden fazla noktayı aynı boylamla dönüştürdüğünüzde, aynı X değerine sahip olacaklar; kuzey-güney hatları dikey olacaktır.
Tekrar düzenleme yapın: Bunun çok basit bir formül olduğunu ve sınırlamalarını bilmeniz gerektiğini belirtmeliydim. Açıkçası yeryüzü düz değil, bu yüzden onu XY koordinatlarıyla eşleştirmek için herhangi bir girişimde bazı tavizler yer alacaktır. Yukarıda türetilen formül I, dönüştürdüğünüz alanın düz olarak düşünülecek kadar küçük olduğu ve kuzey-güney hatlarının küçük eğriliğinin ve paralel olmayanlığının göz ardı edilebileceği durumlarda en iyi şekilde çalışır. Projeksiyonları haritalamak için bütün bir bilim var; Bazı olasılıklar görmek istiyorsanız iyi bir başlangıç noktası Wikipedia olacaktır. Bu spesifik projeksiyon, bazı eklenmiş ölçekleme ile the Equirectangular projection olarak bilinir.
Tamam, bunu denedim, ve enlem hesaplaması çok doğrudur :) ama boylam-metre değerleri her zaman enlemin testi için büyük olan 1.3 faktörüdür. Bence bu faktöre göre bölünmesi iyi bir fikir değil çünkü muhtemelen farklı enlemler için farklılık gösterebilir, belki de dünya çevresinin mevcut enlemlere göre hesaplanması gerekir? –
@Sponge, güncellemeyi kontrol edin. –
çok teşekkürler! harika çalışıyor :) –