2012-03-03 17 views
5

başlığından enlem ve boylam puanları verdiğimi okuyabilirsiniz. Onlar csv dosyasında saklanır. 40k'ya kadar satır var., kenar noktaları ve poligon alanı bulmak

"45.","9.12345" 
"46.11111","9.12345" 
"47.22222","9.98765" 
... 

ilk sorum nasıl ben kenar koordinatlarını bulabilirsiniz ve bitti sonra, ben bu kenar noktaları poligon alanından hesaplamak gerekir benim ikinci soruyla rulolar. Aşağıda bu noktaların nasıl göründüğü ve kenar noktalarının mavi çizgilerle nasıl bağlandığı resmidir.

coordinates

SO üzerinde google ve arama ve soruların bu tür bulundu: this, this, this ve this.

Öncelikle tüm enlem ve boylam noktalarını csv dosyasından arraylist olarak depolarım. Kenar noktalarının nasıl bulunacağına dair iyi bir fikrim yok. Ancak kenar noktaları bulunduğunda, çokgen alanını bulmak için bir yaklaşım, onu üçgenlere bölmek ve daha sonra Heron formülüyle üçgen alanlarını hesaplamaktır. Yeryüzü küreseldir, bu yüzden yukarıda verdiğim linklerde tavsiyeleri kullanmam gereken alanı hesaplamak için.

Sorunlarımın sorunlarını çözen çerçeveler var mı? Bunu kendim yapmak için yaklaşımlar nelerdir? Tabii ki kod, bellek ve CPU verimli olmalıdır.

+1

+1, resimler için +1, biraz geniş soru için -1. Net +1! – Perception

+0

@Perception bana inanmak için teşekkürler :) – Skyzer

cevap

2

Puanlarınızın convex hull modelini arıyorsunuz. Bu, akılda yinelenen bir soru: Araştırma çabası için Draw a convex hull using the given points in java/android

+0

teşekkürler, şimdi okuyor – Skyzer

+1

Aslında, enlem ve boylam noktaları ile çalıştığından, standart dışbükey gövde algoritmalarının en azından bağlantılarınızda açıklandığı gibi çalışmayacağını düşünmüyorum. Sorun şu ki, bu algoritmalar noktaların Kartezyen olduğunu varsayıyorlar, fakat (lat, lon) noktaları, kesinlikle, "1802-180 (anti-meridyen)" de "etrafı sarar" dan beri, "Kartezyen" lerdir. Böylece, anti-meridyeni kapsayan herhangi bir noktanız varsa, dünyanın dört bir yanındaki tüm yanlışları saracak büyük gövdelere sahip olacaksınız. –

İlgili konular