Geography Tipi Kullanımı (SQL Server 2008)
Geography veri tipi aslında orache mimarisinde görmeye alışık olduğumuz bir veri tipi. Sql Server 2008 R2 ile benim, SqlServer tarafında da rastladığım ancak şu zamana kadar herhangi bir projede kullanma fırsatı bulamadığım bir veri tipi.
Şu an Dijital Ajans Metromedya ‘nın geliştirdiği Lokasyon Bazlı iPhone Uygulamasında kullanmaya niyet ederek biraz araştırma yaptım.
Geography veri tipi genel olarak , geospatial datalar olarak sınıflandırılıyorlar.Bu yazıda geospatial dataların depolanma ve kullanımlarını basit olarak anlatıyor olacağım.
Geo Spatial Data konusunda bilmemiz gereken en önemli şeylerden birisi de SQL Server 2008 ile bizlere sunulan yeni data tipleri olmalarıdır. Daha öncede bahsettiğim gibi aslında Oracle bize aynı olanağı çok daha önce de sunmaktaydı. SpatialData Types olarak adlandırılan bu yeni data tipleri, bize dünya üzerindeki bir noktayı enlem ve boylam bilgileriyle depolama şansı verir.
Kordinatları tutmamıza yarayan data tipi geography dir. Ayrıca SQL Server bu hizmetin yanında, bize bu kordinatlar üzerinde bazı işlemler yapma olanağı sağlayan metodlar da sunuyor. Zaten dananın kuyruğunun koptuğu yerde burası. 🙂
Bu dökümantasyonda geography tipinden dataların nasıl depolanıp, nasıl kullanılacağını göreceğiz.
Geography tipinden verilerin tanımlanması:
DECLARE @geo geography
SET @g eo = geography::Point(41.010467,28.939179 , 4326)
Point(…) bize dünya üzerindeki bir noktanın kordinatlarını verir. Point’in içindeki değişkenler ise sırasıyla enlem,boylam ve SRID’dir. SRID ise bri referanstır, sistemin düzlemsel mi yoksa dünyanın şekli gibimi olduğunu belirtir. Bizim kullandığımız 4326 ise normal gps sistemlerinde kullanılandır. Ve herzaman bunu kullanacağız.
Direk olarak yukarda gördüğümüz “Point(41.010467,28.939179 , 4326)” kısmını tabloya yazamaz mıyız diye düşünülebilir ama malesef yukarıdaki gibi bir tanımlama yapmamız gerekiyor. Bunun sebebi de bu sistemingeography tipinden verileri binary olarak database’te depolamasıdır.
Örnek:
Geography tipi verilerin database de depolanması
yukarıdaki gibi bir sorgu kullanarak database’e kordinat bilgisini ekleyebilirsiniz.
Geography tipi verilerin doğru görüntülenmesi
Geography tipinden datalar binary olarak kaydedildiği için bunları görüntüleyeceğimizde dönüşüm yapmamız gerekir. Bunu da şöyle bir kod kullanarak yapabiliriz;
Geography Tipinden veriler üzerinde metodların kullanımına örnekler
Bizim en çok kullanacağımız metod STDistance() metodudur. Bu metod dünya üzerineki iki nokta arasındaki uzaklığı hesaplar. Bu metod sayesinde bir noktaya en yakın hastaneleri bulma ve bunun gibi pek çok işlemi gayet basit bir şekilde bulabiliriz. Bunu pek çok şekilde örnekleyebiliriz.
Örnek 1: Belirlediğimiz bir noktaya en yakın 3 noktayı bulan sorguyu yazalım.
Bunun sonucu şöyle olacaktır;
Örnek 2: Belirlediğimiz bir noktaya 100 metreden yakın noktaları bulan sorguyu yazalım.
bu sorgunun sonucu da şöyle olacaktır;
Şimdilik bu kadar. iphone uygulama geliştirme konusu ile ilgili yazılarım yolda.Görüşmek üzere.
ilginc bilgiler icin tesekkurler
http://www.ugurethemaydin.com is super, bookmarked!
Vermiş olduğunuz önemli bilgilerden dolayı teşekkür ederim.