Coğrafi ve Projeksiyon Koordinat Sistemleri

16 Mar

Coğrafi Koordinat Sistemleri

Bir coğrafi koordinat sistemi, (CKS) yeryüzündeki konumları tanımlamak için üç boyutlu küresel bir yüzey kullanır. CKS’ne genellikle datum şeklinde yanlış adlandırılır. Datum, CKS’nin yalnızca bir parçasıdır. Çünkü bir CKS, açısal bir ölçü birimi, bir ana meridyen ve bir datum içerir.

CKS’de bir nokta, boylam ve enlem değerleri ile belirtilir. Boylam ve enlem, dünyanın merkezinden dünyanın yüzeyinde bir noktaya kadar ölçülen açılardır. Bu açılar genellikle derece cinsinden ölçülür. Aşağıdaki şekil buna bir örnektir.

Küresel sistemde, yatay çizgiler veya doğu-batı çizgileri eşit aralıklı enlem veya paralel çizgilerdir. Dikey çizgiler veya kuzey-güney hatları eşit boylam çizgileri veya meridyenlerdir. Bu çizgilerin kesişimi dünyayı kaplar ve retükül adı verilen ızgaralı bir ağ oluşturur.

Sıfır enlem çizgisine ekvator, sıfır boylam çizgisine ana meridyen denir. Coğrafi koordinat sistemlerinin çoğunda, ana meridyen İngiltere’nin Greenwich kentinden geçen boylamdır. Diğer ülkeler ise Bern, Bogota ve Paris’ten geçen boylam çizgilerini ana meridyen olarak kullanırlar. CKS’de (0,0) yani orijin, ana meridyen ve ekvatorun kesiştiği nokta olarak tanımlanır.

CKS’de enlem ve boylam değerleri geleneksel olarak ondalık derece veya derece, dakika ve saniye (DMS) olarak ölçülür. Enlem değerleri ekvatora göre ölçülür ve Güney Kutbunda -90 ° ile Kuzey Kutbunda + 90 ° arasında değişir. Boylam değerleri, ana meridyene göre ölçülür. Batı yönünde seyahat ederken -180 ° ile doğu yönünde seyahat ederken 180 ° arasındadır.

Boylam değerlerini X ve enlem değerlerini Y ile eşitlemek yararlı olabilir. Coğrafi koordinat sisteminde tanımlanan veriler bir derece doğrusal bir ölçü birimi gibi görüntülenir. Bu yöntem temelde Plate Carrée projeksiyonu ile aynıdır.

Enlemlerin kutuplara doğru gittikçe boyları küçülür ve kutuplarda sıfır olur.  Enlem ve boylam derecelerinin standart bir uzunluğu olmadığından, mesafeleri veya alanları doğru bir şekilde ölçemez veya verileri düz bir haritada veya bilgisayar ekranında kolayca görüntüleyemezsiniz.

Projeksiyon Koordinat Sistemleri

Projeksiyon kelimesi yansıtma anlamına gelmektedir. Projeksiyon koordinat sistemi düz, iki boyutlu bir yüzey üzerinde tanımlanır. Coğrafi bir koordinat sisteminden farklı olarak, projeksiyon koordinat sisteminin sabit uzunlukları, açıları ve iki boyuttaki alanları vardır. Bir projeksiyon koordinat sistemi, her zaman bir küre veya küreye dayanan bir coğrafi koordinat sistemini temel alır. Yani küresel yer yüzünün, düz bir zemine yansıtılmış halidir.

Bir projeksiyon koordinat sisteminde, konumlar bir ızgara üzerinde x, y koordinatları ile belirlenir ve orijin merkezde bulunur. Her konumun, bu merkezi konuma referans veren iki değeri vardır. Biri yatay konumunu diğeri dikey konumunu belirtir. Bu iki değere x ve y koordinatı denir. Başlangıçtaki koordinatlar x = 0 ve y = 0’dır.

Eşit aralıklı yatay ve dikey çizgilerin oluşturduğu ızgaralı yapıda, merkezdeki yatay çizgiye x ekseni, orta dikey çizgiye y ekseni denir. Birimler tutarlıdır ve tüm x ve y aralıkları arasında eşit aralıklıdır. Başlangıç noktasının üzerindeki yatay çizgiler ve başlangıç noktasının sağındaki dikey çizgiler pozitif değerlere sahiptir; aşağıdaki veya soldaki negatif değerlere sahiptir. Dört çeyrek daire, pozitif ve negatif X ve Y koordinatlarının dört olası kombinasyonunu temsil eder.

Sonuç

Projeksiyon ve Coğrafi koordinat sistemleri birbirlerinin dönüşümüdür. Coğrafi koordinat sistemi küresel yer yüzünü temsil ederken, projeksiyon koordinat sistemi, küresel yapının düz bir kağıt üzerine yansıtılmış halidir.

Kaynaklar

  • http://resources.arcgis.com/en/help/main/10.1/index.html#//003r00000006000000
  • https://blogs.esri.com/esri/arcgis/2010/08/12/wgs84-vs-nad83/
  • http://resources.arcgis.com/en/help/main/10.1/index.html#/What_are_projected_coordinate_systems/003r0000000p000000/
  • https://communityhub.esriuk.com/geoxchange/2012/3/26/coordinate-systems-and-projections-for-beginners.html

Spatial WFS ve WMS Sorgularda SRS ve BBOX Kullanımı

27 Oca

Bu yazıda, OGC tarafından belirlenmiş standartlar olan WMS veya WFS gibi servislere yapılan sorgulara ait SRS, SrsName ve BBOX parametrelerinin kullanımı ve işlevleri incelenmektedir.

  • SRS (Spatial Reference System) parametresi, istenen çıktı verinin projeksiyonunu ifade eder. Projeksiyon belirteci olarak EPSG kodları kullanılır. (EPSG:4326 gibi)
  • BBOX parametresi, çıktı verinin içinde bulunduğu çerçeveyi ifade eder. Yani dörtgen şeklinde bir kutu belirler ve sunucudan bu kutu içerine düşen verileri ister. Çerçeve sınırları minX, minyY maxX, MaxY şeklinde belirlenir.

SRS parameteresi WMS sorgularında kullanılırken, SrsName parametresi ise WFS sorgularında kullanılmaktadır. Bu parametreler işlevsel olarak aynı görevi üstlenirler. Ancak kullanım zorunluluklarına bakıldığında;

  • WMS sorgularında SRS ve BBOX parametresi kullanmak zorunludur.
  • WMS sorgularında kullanılan SRS çıktı verinin projeksiyonunu ifade. Ayrıca BBOX ile ifade edilen sınırları da SRS koordinatları ile ifade edilir. WMS sorgularında bu iki parametre birlikte kullanılır.
  • WFS sorgularında SrsName parametresi kullanmak isteğe bağlıdır ve BBOX ile beraber kullanma zorunluluğu yoktur.

WFS sorgularında kullanılan SrsName parametresi bize istediğimiz koordinat sistemine göre coğrafi veri elde etmemizi sağlar. Örneğin bir WFS adresine birbirinden farklı SRS bilgileri ile sorgular göndererek sonuçlarını inceleyelim.

Sorgu 1- EPSG:4326 ile Point sorgusu:

 
 http://localhost:8080/geoserver/wfs?
      request=GetFeature&
      service=wfs&
      version=1.0.0&
      typename=GIS:poi&
      SrsName=EPSG:4326&
      BBOX=490867.51265,4515158.48547,490981.28371,4515253.73566

Cevap 1- Sorgu sonucu dönen nokta koordinatları: (29.89232754,40.77166657)

EPSG:4326 kodu ile WGS84 (World Geodetic System 1984) koordinat sistemi ifade edilmektedir. WGS84 Yeryüzü için standart bir coğrafi koordinat sistemi belirler.

Sorgu 2- EPSG:3857 ile Point sorgusu:

 
 http://localhost:8080/geoserver/wfs?
      request=GetFeature&
      service=wfs&
      version=1.0.0&
      typename=GIS:poi&
      SrsName=EPSG:3857&
      BBOX=490867.51265,4515158.48547,490981.28371,4515253.73566

Cevap 2- Sorgu sonucu dönen nokta koordinatları:  (3327598.68066687,4978720.64792567)

Sorgu 3- EPSG:900913 ile Point sorgusu:

 
 http://localhost:8080/geoserver/wfs?
      request=GetFeature&
      service=wfs&
      version=1.0.0&
      typename=GIS:poi&
      SrsName=EPSG:900913&
      BBOX=490867.51265,4515158.48547,490981.28371,4515253.73566

Cevap 3- Sorgu sonucu dönen nokta koordinatları:  (3327598.68066687,4978720.64792567)

3857 ve 900913 EPSG kodlarına sahip koordinat sistemleri aslında aynı şeyi ifade etmektedir. Bu nedenle sorgular aynı sonucu vermiştir. 900913 sayısı ile “google” kelimesi sayılarla ifade edilmeye çalışılmıştır. EPSG kodları arasında resmi olarak 900913 kodu yer almaz, bunun yerine 3857 kodu yer alır.(http://wiki.openstreetmap.org/wiki/EPSG:3857) İlk başlarda Google haritaları tarafından kullanılan Spherical Mercator projeksiyon koordinat sistemidir. Daha sonraları OpenStreetmap haritaları tarafından da kullanılmaya başlamıştır.

Sorgu 4- EPSG:41100 ile Point sorgusu:

 
 http://localhost:8080/geoserver/wfs?
      request=GetFeature&
      service=wfs&
      version=1.0.0&
      typename=GIS:poi&
      SrsName=EPSG:41100&
      BBOX=490867.51265,4515158.48547,490981.28371,4515253.73566

Cevap 4- Sorgu sonucu dönen nokta koordinatları: (490909.7666,4515222.0527)

EPSG:41100 kodu da resmi EPSG kodları arasında yer almaz. Eğer Coğrafi bir veri tabanına sahipseniz, özel bir projeksiyon koordinat sistemini bu veri tabanına kaydederek ona istediğiniz kodu verebilirsiniz. Bu kodu parametre ile gönderdiğinizde sizin belirlediğiniz koordinat sistemine göre sonuçlar alabilirsiniz.

Yukarıdaki sorgularda kullanılan BBOX parametresi, dörtgen bir sınır belirler ve veritabanında belirlenen bu sınırlar arasında kalan geometrik nesneler aranır.

Sorgu 5- BBOX ve SrsName ile Point sorgusu:

 
 http://localhost:8080/geoserver/wfs?
      request=GetFeature&
      service=wfs&
      version=1.0.0&
      typename=GIS:poi&
      SrsName=EPSG:3857&
      BBOX=490867.51265,4515158.48547,490981.28371,4515253.73566,EPSG:41100

Cevap 5- Sorgu sonucu dönen nokta koordinatları: (3327598.68066687,4978720.64792567)

Bu sorguda dikkat edilecek olursa BBOX parametresinin sonuna EPSG:41100 kodu eklenmiştir. Fakat SrsName parametresi ise EPSG:3857 olarak ayarlanmıştır. Burada yapılmak istenen BBOX koordinatlarının EPSG:41100 sisteminde verilmesi, ancak dönen sonuçların EPSG:3857 siteminde olmasıdır.

Bu parametrelerin doğru bir şekilde kullanımı, harita ve kaynak verinin projeksiyonları farklı olduğu durumlarda hayat kurtarır.

.Net Framework Spatial Data Desteği

22 Ağu

System.Data altında bulunan sınıflar(Class) sayesinde farklı veri kaynaklarına erişmek ve onlar üzerinde işlemler yapmak mümkündür.  Örneğin ADO.NET mimarisinde kullanılan SQL Server, Oracle, ODBC ve OleDB gibi veri sağlayıcılar bu namespace altında bulunurlar.

.Net Framework 4.5 versiyonundan önce mekansal verilere düz SQL sorguları ile veya veritabanı üzerine kaydedilen stored procedure’ler aracılığı ile erişilebilmekteydi. Ancak .Net 4.5 versiyonundan sonra System.Data  kütüphanesine eklenen System.Data.Spatial alanı ile artık mekansal verilere erişim ve onlar üzerinde yapılacak işlemler DbGeography ve DbGeometry nesneleri ile gerçekleştirmek mümkün hale gelmiştir.

DbGeography

DbGeography sınıfı, verilerin jeodezik(yer yüzeyindeki)  koordinat sisteminde temsil edilmesini sağlar. Yani belirli bir koordinat sistemine göre nesnelerin yeryüzündeki konumu ile ilgilenir. Örneğin bir noktanın yeryüzünde nereye karşılık geldiği DbGeography nesnesi ile temsil edilebilir.

DbGeometry

DbGeometry sınıfı, nesnelerin geometrik şekillerini tanımlayan nesneler için bir taban oluşturur. DbGeometry nesnelerin konumu ile ilgilenmez, sadece şekilleri ile ilgilenir. Nesnelerin geometrik şekilleri Point, Polygon, LineString v.b. olabilmektedir. Örneğin bir yolun şeklinin LineString olması DbGeometry nesnesi ile temsil edilir. Yolun nerede konumlandığı ise DbGeography nesnesi ile temsil edilir.

Geometry ve Geography kavramlarının ayrımı sadece .Net platformuna özgü bir mesele değildir. Bütün platformlarda bu şekilde organize olmuştur. Bu organizasyon yazılım platformundan ziyade Coğrafi Bilgi Sistemleri ile alakalı bir durumdur.

DbGeometry ve DbGeography kavramlarını bir örnek üzerinden inceleyerek devam edelim. Open Geospatial Consortium (OGC) standartlarında bir geometrik şeklin temsili Well Known Text (WKT) adında bir işaretleme dili ile belirlenmiştir. Örneğin bir noktanın WKT gösterimi şu şekildedir:

POINT (12.321876 24.981276)

Örneğin Gebze’de seçilen bir noktanın Pendik ve İzmit’te seçilen noktalara göre uzaklıklarını karşılaştıralım.


[Test]
public void ClosestPoint_WithThreePoints()
{
    var gebze = DbGeometry.FromText("POINT(40.803099 29.405076)");
    var pendik = DbGeometry.FromText("POINT(40.877359 29.254845)");
    var izmit = DbGeometry.FromText("POINT(40.764946 29.950905)");

    var gebze_pendik = gebze.Distance(pendik);
    var gebze_izmit = gebze.Distance(izmit);

    Assert.True(gebze_izmit > gebze_pendik);
}

gebzepoint

Burada gebze.Distance(pendik) metodunun yaptığı iş aslında Pisagor‘un iki nokta arasındaki uzaklık hesabıdır. Yani düzlemdeki iki noktanın bir birine olan uzaklığının hesaplanması işlemi gerçekleştirilmekte ve sonuç derece cinsinden bir değer olmaktadır.

Geometrik şekilleri yer yüzündeki konumu ile temsil etmek için DbGeography sınıfı kullanılır.

[Test] 
public void ClosestLocation_WithThreePoints() 
{ 
    var gebze = DbGeography.FromText("POINT(40.803099 29.405076)", 4326);
    var pendik = DbGeography.FromText("POINT(40.877359 29.254845)", 4326); 
    var izmit = DbGeography.FromText("POINT(40.764946 29.950905)", 4326);

    var gebze_pendik = gebze.Distance(pendik);
    var gebze_izmit = gebze.Distance(izmit);

    Assert.True(gebze_izmit > gebze_pendik);
}

gebzepoint
Sonuç olarak metre cinsinden uzaklıklar elde edilir. Gebze’de seçilen nokta ile İzmit’te seçilen nokta arasındaki uzaklık yaklaşık 6km şeklinde hesaplanmıştır.

DbGeography sınıfında geometrik şekil tanımlama işlemi DbGeometry ile aynıdır. Ancak ek parametre olarak koordinat sistemi kodu (coordinateSystemId) girilebilir. Bu kodlar European Petroleum Survey Group(EPSG) tarafından koordinat sistemlerine atanmıştır. Bilinen tüm koordinat sistemlerine karşılık bir tamsayı vardır. Bu konu ile ilgili detaylara Spatial Reference System başlıklı yazıdan ulaşabilirsiniz.

 

Spatial Reference System

26 May

Spatial Reference System

Spatial Reference System (SRS) veya Coordinate Reference System(CRS) coğrafi nesnelerin konumlarını bulmak için kullanılan koordinat tabanlı yerel, bölgesel veya küresel bir sistemdir. Bir SRS farklı mekansal referans sistemeler arasında dönüşümlerin yanı sıra, belli bir harita projeksiyonu tanımlar. Bazı koordinat sistemleri:

  • Universal Transverse Mercator koordinat sistemi
  • Birtish national grid reference system
  • Hellenic Geodetic Reference system 1987
  • Lambert conformal conic projection
  • United States National Grid
  • Jordan Transverse Mercator
  • International mapcode system
  • Irish grid reference system

Mekansal referans sistemleri SRID olarak ifade edilen benzersiz tamsayı kimlik numaraları ile ifade edilirler. European Petroleum Survey Group(EPSG) tarafından tanımlanmış olan SRID’ler de vardır ve bunlar EPSG kodu ile ifade edilirler. Örneğin “EPSG:4326” WGS84 projeksiyonu için EPSG kodudur. “EPSG:3857” ise WGS84 WebMercator için EPSG kodudur. Bu iki projeksiyon arasındaki fark “EPSG:4326” sisteminde dünya bir küre olarak ele alınırken “EPSG:3857” sisteminde dünya bir elips olarak düşünür. “EPSG:4326” enlem/boylam(lon/lat) koordinat sistemini kullanırken “EPSG:3857” x/y kartezyen koordinat sistemini kullanır. Bu sistemler sayesinde de yuvarlak yapıdaki dünya düz bir zemin üzerinde temsil edilebilmektedir.

SRS için tanımlanan bilgiler veritabanlarında OCG tarafından tanımlanan spatial_ref_sys metadata tablosunda tutulur. Bu tabloda SRID, AUTH_NAME, AUTH_SRID, SRTEXT gibi değerler bulunur. Konumsal veritabanı içinde birden fazla konumsal referansa sahip konumsal nesne tablosu veya raster veri bulunabilir.

Mekansal referans sistemleri (SRS) Open Geospatial Consortium (CRS) tarafından kolay bir şekilde erişim sağlamak amacıyla belli standartlarda herkesin anlayabileceği bir metin standardında tanımlanırlar. Bu standart Well Known Text(WKT) olarak isimlendirilir.

Well Known Text(WKT)

WKT bir harita üzerinde vektör geometri nesnesini temsil etmek için ve mekansal referans sistemleri arasında dönüşümler yapabilmek için geliştirlmiş bir metinsel işaretleme dilidir. WKT’nin binary karşılığı Well Known Binary (WKB)’dir. WKB ile WKT ile tanımlanan bilgilerin transferi ve veri tabanlarında saklanması için kullanılır. Bu formatlar OGC tarafından ISO/IEC 13249-3:2011 standardı olarak tanımlanmıştır.

WKT ile temsil edilen 18 adet geometri türü vardır. Bunlar:

  • Geometry
  • Point, Multipoint
  • LineString, MultiLineString
  • Polygon, MultiPoygon, Triangle
  • CircularString
  • Curve, MultiCurve, CompundCurve
  • CurvePolygon
  • Surface, MultiSurface, PolyhedralSurface
  • TIN, TINZ
  • GeometryCollection

Geometri koordinatları 2D (x,y), 3D (x,y,z), 4D (x,y,z,m) şeklinde temsil edilir.

Örnek WKT geometri gösterimleri:

  • POINT(25 18)
  • LINESTRING(10 15, 20 25, 50 55)
  • POLYGON((20 25, 50 55, 80 95, 20 25))
  • POLYGON((20 25, 50 55, 80 95, 20 25), (10 15, 18 22, 17 23, 10 15))
  • MULTIPOINT((11 12), (24 60), (40 40), (75 80))
  • MULTIPOINT(11 12, 24 60, 40 40, 75 80)
  • MULTILINESTRIN((15 15, 23 80, 10 40), (16 16, 33 10, 25 50, 38 09))

Well Known Binary(WKB)

Geometri nesnelerini taşınabilir ve veritabanlarında depolanabilir hale getirmek amacıyla bitişik byte dizisi şeklinde temsil eden ve OGC tarafından standartlaştırılan bir gösterim şeklidir. İki boyutlu(2D) geometrileri temsil eden bir kodlama şeklidir. WKB gösterimleri genellikle onaltılık sayı sistemindeki dizelerle yapılmaktadır.

SQL veritabanında WKB şeklinde depolanan geometrilere ODBC Client gibi veri sağlayıcılar aracılığı ile erişilebilmektedir. Konumsal veri üzerinde geometrik işlemleri gerçekleştirebilen fonksiyonlar SQL, Java veya C-API tarafından sağlanmaktadır.

Bir geometri için yapılan WKB gösterimi yapılırken, öncelikle geometri nesnesinin serileştirilmesiyle elede edilen sayı kümesinden alınan  işaretsiz tamsayı (Unsigned Integer) ve ondalık(Double) sayılar elde edilir. Daha sonra elde edilen her sayı, standart ikili(binary) sayı sistemine dönüştürülür.

Binary ifadelerin bilgisayar sisteminde serileştirilmesi sırasında işaret bitleri, en önemli ilk byte veya en az önemli ilk byte gibi bazı standartlar belirlenmiştir. Serileştirme işlemi, network ortamında bilgisayarlar arasında veri transferini gerçekleştirebilmek amacıyla gerçekleştirilir. Serileştirme için kullanılan iki tür kodlama vardır. Bunlar XDR ve NDR dir.

XDR (big-endian)

  • İşaretsiz tamsayının XDR gösterimin en önemli byte önce yazılır.

xdr1

  • Ondalik(Double) sayıların XDR gösteriminde işaret byte önce yazılır.

xdr2

NDR (little-endian)

  • İşaretsiz tamsayının NDR gösterimin en önemsiz byte önce yazılır.
  • Ondalik(Double) sayıların NDR gösteriminde işaret byte sona yazılır.

Geometri Nesnelerinin WKB Gösterimi

Geometri gösteriminde ilk byte veri için byte sırasını gösterir.

  • 00: Düşük son haneli (big endian)
  • 01: Büyük son haneli (little endian)

İkinci byte geometri türünü temsil eden bir tamsayıdır.

Type

2D

GEOMETRY

0000

POINT

0001

LINESTRING

0002

POLYGON

0003

MULTYPOINT

0004

MULTULINESTRING

0005

MULTIPOLYGON

0006

GEOMETRYCOLLECTION 0007
CIRCULARSTRING 0008
COMPUNDCURVE 0009
CURVEPOLYGON 0010
MULTICURVE 0011
MULTISURFACE 0012
CURVE 0013
SURFACE 0014
POLYHEDRALSURFACE 0015
TIN 0016
TRIANGLE 0017

 

Her geometrik veri türü benzersiz bir veri yapısına sahiptir. Koordinatlar double tipinde temsil edilir.

Örneğin: POINT(2.0, 4.0) geometrisi 000000000140000000000000004010000000000000 şeklinde 21 byte ile temsil edilir. Burada:

  • 1 byte integer 00 veya 0: Düşük son haneli
  • 4 byte integer 00000001 veya 1: POINT 2D
  • 8 byte float 4000000000000000 veya 2.0: X koordinatı
  • 8 byte float 4010000000000000 veya 4.0: y koordinatı

Kaynaklar:

Konumsal Veritabanlarına Özel SRID Eklemek

4 Haz

Mekansal veri depolayabilen veri tabanlarında SRID değerlerini listelemeyi ve herhangi bir tabloya ait geometri alanının SRID değerini güncellemeyi bir önceki yazımızda incelemiştik.

Oracle, PostGIS ve MsSQL gibi sık kullanılan veritabanlarında varsayılan olarak gelen bir çok SRID değeri mevcuttur. Bu SRID değerleri dünyada çok bilinen referans sistemlerine aittir. Ancak bazı ülkeler bu referans sistemleri yerine kendi özel referans sistemlerini kullanmayı tercih etmektedirler. Dolayısıyla bu özel referans sistemleri Çok bilinen SRID listesine dahil olmayabilir. Bu gibi durumlarda özel mekansal referansları veritabanlarına kendimiz eklemek durumunda kalırız.

Spatial Reference sitesi üzerinde aradığımız referansları bulabilmek mümkündür. Bu yazıda ki örnekte ülkemizde kullanılan IRTF96 koordinat sisteminin PostGIS veritabanına nasıl tanımlandığını inceliyor olacağız. Buradan ITRF96 projeksiyona ait bilgilere ulaşabilmek mümkündür.

PostGIS veritabanına ITRF96 koordinat sistemini tanıtabilmek için aşağıdaki SQL komutunu kullanmak yeterli olacaktır.


insert into spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext)
values ( 97835,
        'sr-org',
        7835,
        '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ',
        'PROJCS["ITRF96 / TM27",
          GEOGCS["GCS_ITRF_1996",
          DATUM["D_ITRF_1996",
                 SPHEROID["GRS_1980",6378137.0,298.257222101]],
                 PRIMEM["Greenwich",0.0],
                 UNIT["Degree",0.017453292519943295]],
                 PROJECTION["Transverse_Mercator"],
                 PARAMETER["central_meridian",27.0],
                 PARAMETER["latitude_of_origin",0.0],
                 PARAMETER["scale_factor",1.0],
                 PARAMETER["false_easting",500000.0],
                 PARAMETER["false_northing",0.0],UNIT["m",1.0]]');

Artık bu SRID değerini veritabanındaki tablolarımızın geometri alanlarına uygulayabiliriz.

Konumsal Veritabanı Tablolarında SRID Düzenlemesi

1 Haz

Coğrafi bilgi sistemleri uygulamalarında veritabanı içerisinde tutulan veriler, metinsel boyutunun yanında coğrafi boyutu yönünden de ele alınmaktadır. Coğrafi veya konumsal veya mekansal olarak adlandırılan verileri depolamak bu verilerin bazı özelliklerini bilmeyi ve kullanabilmeyi gerektirmektedir.

Bu yazıda coğrafi verilerin SRID özelliğini konu edinmiş olacağız. SRID açılımı “Spatial Reference System Identifier” ve Türkçe meali “Mekansal Referans Sistem Tanımlayıcısı” olan bir kavramdır. SRID coğrafi veri tutan tablolardaki geometri alanlarına ait projeksiyon sistemlerini belirtmek için kullanılan sayısal bir kimlik numarasıdır.

Bu yazıdaki örnek uygulamalar piyasada şu anda kullanılan popüler veritabanlarından Oracle, Postgresql veya MsSQL tabloları üzerinde bulunan geometri sütunlarının SRID özelliklerini belirlemek şeklinde olacaktır.

Bir veritabanında bulunan SRID listesini görebilmek için farklı veritabanlarına göre aşağıdaki komutlar kullanılmaktadır.

Oracle

SELECT * FROM sdo_coord_ref_sys

PostGIS

SELECT * FROM spatial_ref_sys

MsSql

SELECT * FROM spatial_reference_systems
SRID Listesi
SRID Listesi

Bir veritabanı tablosundaki geometri alanının SRID değerini değiştirmek için aşağıdaki komutlar kullanılmaktadır. Aşağıdaki örnekte tablo adı “roads” ve geometri alanının adı “geom” şeklinde düzenlenmiştir.

Oracle

UPDATE roads T
SET T.geom.SDO_SRID = 4326
WHERE T.geom IS NOT NULL

PostGIS

SELECT UpdateGeometrySRID('roads','geom',4326);

MsSQL

UPDATE dbo.roads SET geom.STSrid = 4326;

Artık “roads” tablosunun “geom” alanı için SRID değeri 4326 olarak düzenlenmiş oldu. SRID değeri düzenlenmemiş olan tablolar için varsayılan değer boş veya sıfır olacaktır. Bu durumda verilerin kullanılması için her defasında dönüşüm yapmak zorunda kalabiliriz. Verilerimizi Google, Bing veya Yandex gibi haritalarda kullanmayı planladıysak bu haritaların SRID değerlerini bilmemiz ve geometri alanlarımızı bu değer ile güncellemeliyiz.

Bir sonraki yazıda görüşmek dileğiyle.

Coğrafi Bilgi Sistemleri Uygulaması – Geoserver

16 Ağu

geoserver-logo

GeoServer, coğrafi verilerin dış dünyaya sunulması için hazırlanmış açık kaynak kodlu bir java uygulamasıdır. GeoServer ile coğrafi verileri işlemek, paylaşmak ve düzenlemek mümkündür. GeoServer ile paylaşılan verileri Google Earth gibi masaüstü uygulamalarda kullanmak mümkün olduğu gibi Open Layers, Google Maps ve Bing Maps gibi
web tabanlı haritalara da kullanmak mümkündür.

GeoServer uygulaması, OGC(Open Geospatial Consortium) uyumlu olup OGC standartlarında Web Map Service(WMS), Web Feature Service(WFS) ve Web Coverage Service(WCG) gibi hizmetleri sunabilmektedir. Bu sayede platform bağımsızlığı sağlanıp farklı uygulamaların birbiri ile konuşması mümkün hale gelmektedir.

GeoServer, birçok coğrafi veri kaynağı ile uyumlu çalışabilecek şekilde tasarlanmıştır. Örneğin:

  • PostGIS
  • Oracle Spatial
  • ArcSDE
  • DB2
  • MySQL
  • Shapefiles
  • GeoTIFF
  • ECW

Geoserver ile birçok standartta veriler üretmek de mümkündür. Örneğin:

  • KML
  • GML
  • GeoRSS
  • PDF
  • GeoJSON
  • JPEG
  • GIF
  • SVG
  • PNG

Yukarıda bahsettiğimiz bileşenlerin düzgün işleyen bir iş kuralına göre konumlandırılması gerekmektedir. Üretilen coğrafi verileri depolanmasından, bir uygulamada vücut bulmasına kadar ilerleyen bir dizi adım söz konusudur. Peki o halde Geoserver bu sistemin neresinde durur?

Geoserver Uygulama Mimarisi
Geoserver Uygulama Mimarisi

Şemada ifade edildiği üzere Geoserver, veri kaynağı ile uygulama arasında konumlanmış bulunuyor. Tabi arada bir de GeoWebCache denilen sistem iyileştirme eklentisi bulunmaktadır.

Coğrafi veri kaynağına herhangi bir CBS(Coğrafi Bilgi Sistemleri) Masaüstü uygulaması ile erişmek mümkündür. Bu uygulama açaık kaynak kodlu QGGIS olabileceği gibi ticari ürünlerden ArcGIS v.s de olabilmektedir. Masaüstü uygulamaları kullanılırken Geoserver kullanmamıza gerek yoktur.

Web tabanlı harita uygulamalarında verilerimizi kullanmak için piyasada bulunan açık kaynak veya ticari uygulamalardan faydalanabiliriz. Örneğin OpenLayers, Esri API, Google Maps, Bing Maps gibi haritalar üzerinde coğrafi verilerimizi kullanabilmekteyiz.

Geoserver WMS Yayını ve OpenLayers
Geoserver WMS Yayını ve OpenLayers

 Nerelerde Kullanılır?

Geoserver uygulamasını coğrafi veri depolama ve bu veriyi paylaşma ihtiyacı olan şirketler veya kamu kurumları kullanabilir. Ülkemizde en yoğun kullanım alanları olarak bazı bakanlıklar, belediyeleri ve altyapı kurumlarını görmekteyiz. Belediyelerde imar, yol, numarataj ve adres bilgisi gibi birçok coğrafi veri depolanmaktadır. Altyapı kurumlarında da tüm altyapı bilgisi koordinatlı bir şekilde saklanmakta ve sunulmaktadır.

(CBS)Coğrafi Bilgi Sistemleri’nde Geoserver’ın Yeri

Dünyada ve ülkemizde hızla yaygınlaşan Coğrafi Bilgi Sistemlerine karşı ilgi giderek artmaktadır. Üniversitelerde bu konu üzerine önlisans, lisans ve yüksek lisans programları açılmaktadır. CBS uygulamalarının yaygınlaşmasıyla ürün kullanım ihtiyacı da belli bir maliyeti beraberinde getirmektedir. Ticari ürünleri satın alma gücü olmayan kurum ve şirketler doğal olarak açık kaynak kodlu Geoderver veya benzeri ürünlere yönelmektedir. Geoserver bu nedenle azımsanmayacak oranda bir kullanıcıya sahiptir.

 Özet

Eğer coğrafi verilerinizi para harcamadan OGC standartlarında dış dünya ile paylaşmak istiyorsanız Geoserver sizin için çok pratik bir çözüm olacaktır.