SQL Server’da Geography Veri Tipini Kullanmak

SQL Server'da Geography Veri Tipini Kullanmak
SQL Server'da Geography Veri Tipini Kullanmak

Herkese merhaba. Bu yazıda SQL Server’da Geography veri tipini kullanmak ile ilgili bilgi vermeye çalışacağım.

SQL Server’da bazı durumlarda Geography veri tipini kullanma durumunuz olabilir.

SQL Server’da kordinatları tutmamıza yarayan veri tipi Geography veri tipidir.

SQL Server bu hizmetin yanında, bize bu kordinatlar üzerinde bazı işlemler yapma olanağı sağlayan metodlar da sunar.  Aşağıda örnek bir kullanım görmektesiniz.

DECLARE @geo_istanbul geography
SET @geo_istanbul = geography::Point(41.010467,28.939179 , 4326)
SELECT @geo_istanbul

Point(Enlem,Boylam,SRID) ifadesi 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 bir referanstır, sistemin düzlemsel mi yoksa dünyanın şekli gibi mi olduğunu bizlere söyler. Bizim kullandığımız 4326 ise normal GPS sistemlerinde kullanılandır. Biz her zaman bunu kullanacağız.

Koordinat bilgisini direkt olarak yukarda gördüğünüz “Point(41.010467,28.939179 , 4326)” kısmını tabloya yazamaz mıyız diye düşünülebilirsiniz ama malesef yukarıdaki gibi bir tanımlama yapmanız gerekiyor. Bunun sebebi de bu sistemin Geography tipinden verileri binary olarak veritabanında depolamasıdır.

Aşağıdaki örnekte bir tabloya nasıl Geography veri tipi ekleneceğini görmektesiniz.

IF OBJECT_ID('tempdb..#GeoTest') IS NOT NULL
    DROP TABLE #GeoTest
CREATE TABLE #GeoTest ([CoordinateLocation] [geography] NULL);
INSERT INTO #GeoTest (CoordinateLocation)
SELECT GEOGRAPHY::STPointFromText('POINT(41.010467 28.939179)', 4326);
SELECT *
FROM #GeoTest;

Bizim en çok kullanabileceğimiz metot STDistance() metodudur. Bu metot dünya üzerineki iki nokta arasındaki uzaklığı hesaplar. Aşağıda bu konu ile ilgili bir örnek görmektesininiz.

DECLARE @istanbul geography, @izmir geography
SET @istanbul = GEOGRAPHY::STPointFromText('POINT(41.00527 28.97696)', 4326)
SET @izmir = GEOGRAPHY::STPointFromText('POINT(38.41885  27.12872)', 4326)
SELECT @istanbul.STDistance (@izmir)/1000

Yukarıdaki sorgu ile İstanbul ve İzmir arasındaki uzaklık koordinatları kullanarak km cinsinden hesaplanmış oldu. Dileyenler

https://www.meridianoutpost.com/resources/etools/calculators/calculator-latitude-longitude-distance.php sitesinden kontrol edebilirler.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

153 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!