Ne?
İlgilendiğimiz koordinat sistemleri, dünya yüzeyindeki herhangi wholesale jerseys bir noktayı karışıklığa mahal vermeden tarif etmeye yarar. Koordinat sistemi denildiğinde akla gelen Wholesale Miami Dolphins Jerseys ilk sistem x-y koordinatları olarak da hatırlanan bir 2 boyutlu dik koordinat sistemi olan kartezyen koordinat sistemidir.
Peki bahsettiğimiz gibi eğer bir koordinat sistemi karışıklığa mahal vermeden bir noktayı tarif edebiliyorsa farklı koordinat sistemlerine ne gerek var sorusu akla gelebilir, gelmelidir. Farklı koordinat sistemlerine olan ihtiyaç tamamen kullanım yeri ve kullanım kolaylığı ile ilgilidir.
Nedir?
İlgilendiğimiz koordinat sistemlerinden bahsetmeden önce harita yapımının bir aşaması olan izdüşüm (projection) almaktan bahsetmekte fayda var.
İzdüşüm Nedir?
En basit haliyle izdüşüm, bir noktanın bir yüzey üzerine düşen izidir. Biraz detaylandırırsak belli bir merkezden gelip bir noktadan veya bir noktalar kümesinin her bir noktasından geçen doğruların izdüşüm tarafından tanımlanmış olan yüzeyi kestiği noktaların geometrik yeridir diyebiliriz.
Bu biraz karışık olduysa merkezde Project bir ışık kaynağı olduğunu ve izdüşüm yüzeyinin bizim istediğimiz şekilde bir perde olduğunu düşünün. İzdüşümünü almak istediğimiz noktaları ışık kaynağı ile perde arasına koyarsak, perde üzerinde izdüşümünü cheap jerseys elde ederiz.
Bizim ilgilendiğimiz izdüşümü, dünyanın (noktalar) üzerinde geçirilmiş bir silindire (perde), dünyanın merkezinden (ışık kaynağı) olan izdüşümüdür.
Türkiye’de de tapu, ruhsat, askeri ve Streaking benzeri alanlarda en çok kullanılan koordinat sistemi UTM şeklinde kısaltılan Universal Transverse Mercator (Evrensel “Uzun eksene dik” Mercator) sistemidir.
KorTransLib
Koordinat Dönüşüm Kütüphanesinin yazılış amacı ileride düşünülen projelerde kullanılmak üzere olduğundan sadece 6 derece dilimli UTM, enlem-boylam ve derece-dakika-saniye olmak üzere üç adet koordinat sınıfı olmakla beraber istenilen koordinat sistemleri kolaylıkla eklenebilecek şekilde tasarlanmıştır.
Koordinat Sınıfları
- DecimalDegreeCoordinate
- DegreeMinuteSecondCoordinate
- UTMCoordinate
DecimalDegreeCoordinate
Ondalık dereceli gösterim. Matematiksel hesap yaparken kolaylıkla kullanılır.
DegreeMinuteSecondCoordinate
Derece, dakika, saniye sisteminde gösterim.
UTMCoordinate
6 derecelik dilimli Universal Jerzens Transverse Sekant Mercator izdüşüm sistemindeki koordinatlar. UTM koordinat cheap NFL jerseys sisteminde sağa ve yukarı değerden başka dilim bölgesi (UTM Zone) değeri de vardır. Bu değer sağa ve yukarı değerlerinin anlamını tanımlar. Türkiye’nin UTM dilimleri aşağıda gösterilmiştir.
Koordinatlar Sınıfları Arasında Matematiksel İşlemler
Örnek olarak herhangi iki koordinatın orta noktasının bulunmasını aşağıdaki şekilde yapabilmemiz için kullanılan TypeConverter sınıfı, kodun yazılmasında da kullanılmasında da büyük kolaylık sağlamıştır.
DecimalDegreeCoordinate dd = new DecimalDegreeCoordinate(38.4, 28.1); UTMCoordinate utm = new UTMCoordinate("35T", 663890, 4568130); DegreeMinuteSecondCoordinate dmsSonuc = new DegreeMinuteSecondCoordinate(); TypeConverter corcon = TypeDescriptor.GetConverter(typeof(DegreeMinuteSecondCoordinate)); dmsSonuc = (DegreeMinuteSecondCoordinate)corcon.ConvertFrom((dd + utm) / 2);
Yukarıda gösterildiği gibi koordinat dönüşüm işlemi sadece bir değişkene atama yapılmadan önce yapılıyor.
İki koordinatın ortalaması, karşılıklı iki with köşe koordinatı bilinen bir paftanın merkezini bulurken kullanılabilir.
TypeConverter Kullanımı
- System.ComponentModel içerisindeki TypeConverter sınıfı miras alınarak CanConvertFrom, ConvertFrom, CanConvertTo, ConvertTo fonksiyonları yazılır.
- Yaratılan TypeConverter mirasçısı sınıfının hangi tipi dönüştürdüğü Nitelik (Attribute) sınıfları kullanılarak tanımlanır.
- TypeDescriptor sınıfı yardımı ile of kullanılır.
Örnek:
public static Coordinate operator +(Coordinate c1, Coordinate c2) { DecimalDegreeCoordinate dd1 = (DecimalDegreeCoordinate)TypeDescriptor.GetConverter(c1).ConvertTo(c1, typeof(DecimalDegreeCoordinate)); DecimalDegreeCoordinate dd2 = (DecimalDegreeCoordinate)TypeDescriptor.GetConverter(c2).ConvertTo(c2, typeof(DecimalDegreeCoordinate)); return new DecimalDegreeCoordinate(dd1.lat + dd2.lat, dd1.lon + dd2.lon); }