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.