ÖNSÖz ve teşekküR


sayfa8/8
o.ogren-sen.com > Tıp > Evraklar
1   2   3   4   5   6   7   8

9.2.Gerçekleştirilen Mekansal Sorgular


Verileri yine Oracle’ın bir programı olan SqlDeveloper aracılığıyla veritabanımıza aktardık. Bunun için önce aşağıda yer alan 2 şekildeki gibi bağlantı oluşturmamız gerekiyor.

15.png (381×229)

Şekil 4.1.Yeni bağlantı oluşturma

16.png (699×500)

Şekil 4.2.Yeni bağlantı bilgileri
Şekil 46’da yer alan bağlantı ekranında da görüldüğü üzere bir bağlantı adı belirleyip, oluşturduğumuz kullanıcı adı ve şifresini yazıp, ve son olarak da SID kısmına veritabanımızın adını yazarak giriş yapıyoruz.

c:\users\metin\appdata\local\temp\rar.637\3.png

Şekil 4.3.Sqldeveloper tablo oluşturma

c:\users\metin\appdata\local\temp\rar.031\1.png

Şekil 4.4.Sqldeveloper veri ekleme

Giriş yaptıktan sonra direkt olarak ekrana gelen “worksheet” kısmına sorgularımızı yazarak veritabanımızı şekillendirmeye başlayabiliriz.
Bizim projemizde yarattığımız tablolar ve bu tablolara eklediğimiz değerler ise şu şekilde;
İlk tablomuz “poligonbolge” tablosu:
CREATE TABLE poligonbolge (name varchar(50), koordinat sdo_geometry);
poligonbolge” tablosuna eklediğimiz değerler ise şu şekilde;
INSERT INTO poligonbolge VALUES(

'bolge1',

SDO_GEOMETRY(

2003,

null,

null,

MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),

mdsys.sdo_ordinate_array(-10,10 ,0,10, 0,0, -10,0, -10,10)

)

);

INSERT INTO poligonbolge VALUES(

'bolge2',

SDO_GEOMETRY(

2003,

null,

null,

MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),

mdsys.sdo_ordinate_array(-10,0 ,0,0, 6,-5, 0,-10, -10,-10, -16,-5, -10,0)

)

);

INSERT INTO poligonbolge VALUES(

'bolge3',

SDO_GEOMETRY(

2003,

null,

null,

MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),

mdsys.sdo_ordinate_array(0,10 ,10,0, 0,0, 0,10)

)

);

INSERT INTO poligonbolge VALUES(

'bolge4',

SDO_GEOMETRY(

2003,

null,

null,

MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),

mdsys.sdo_ordinate_array(0,0 ,10,0, 10,-10, 0,-10, 6,-5, 0,0)

)

);

INSERT INTO poligonbolge VALUES(

'bolge5',

SDO_GEOMETRY(

2003,

null,

null,

MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),

mdsys.sdo_ordinate_array(0,10 ,15,10, 15,-5, 10,-5, 10,0, 0,10)

)

);

Komutları yazarken SDO_GEOMETRY tipinden sonra yazdığımız “2003” şeklindeki sayılar, şeklin id numarasını belirtmektedir. Her şekil için farklı bir id numarası vardır. Projemizde kullandığımız geometrik şekillerin id numaraları ise şu şekildedir:

Poligon = 2003 (poligonbolge tablomuz için)

Çizgi = 2002 (multilinenehir tablomuz için)

Nokta = 2001 (noktasehir tablomuz için)
İkinci tablomuz “multilinenehir” tablosu:
CREATE TABLE multilinenehir (name varchar(50), koordinat sdo_geometry);
multilinenehir” tablosuna ait değerler ise şu şekilde;
INSERT INTO multilinenehir VALUES(

'nehir1',

SDO_GEOMETRY(

2002,

null,

null,

MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),

mdsys.sdo_ordinate_array(-3,5, -6,1, -8,-4, -6,1, 0,3, 3,4)

)

);

INSERT INTO multilinenehir VALUES(

'nehir2',

SDO_GEOMETRY(

2002,

null,

null,

MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),

mdsys.sdo_ordinate_array(11,6, 8,-1, 9,7, 8,-1, 0,-4, -1,-6)

)

);
Üçüncü tablomuz “noktasehir” tablosu:
CREATE TABLE noktasehir (name varchar(50),isiort numeric,nufus numeric(10), koordinat sdo_geometry);
noktasehir” tablosuna ait değerler şu şekilde;
INSERT INTO noktasehir VALUES(

'sehir1',9, 650000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (-9,8,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir2',8, 530000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (-6,6,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir3',8, 700000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (-3,2,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir4',6, 450000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (-4,5,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir5',8, 1600000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (-11,4,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir6',9, 1400000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (-9,-9,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir7',9, 2200000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (-3,-3,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir8',10, 820000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (-2,-8,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir9',11, 930000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (3,-6,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir10',12, 640000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (-5,-5,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir11',9, 650000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (3,3,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir12',8, 530000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (7,2,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir13',8, 700000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (1,7,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir14',6, 450000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (4,-9,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir15',8, 1600000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (8,-7,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir16',9, 1400000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (7,-4,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir17',9, 2200000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (3,-1,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir18',10, 820000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (12,-3,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir19',11, 930000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (13,0,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir20',12, 640000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (14,2,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir21',9, 650000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (8,8,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir22',8, 530000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (11,9,NULL), NULL, NULL)

);

INSERT INTO noktasehir VALUES(

'sehir23',8, 700000,

SDO_GEOMETRY(2001, null,

SDO_POINT_TYPE (4,9,NULL), NULL, NULL)

);
3 tabloyu ve bu tablolara ait değerleri veritabanımızda oluşturduk. Bu işlemden sonra bir de bu verilerin görüntülerini oluşturmamız gerekli. Bunun için aşağıdaki şekilde de görüldüğü üzere görüntülemek istediğimiz tabloya çift tıklayarak açıyoruz ve “data” sekmesiyle içindeki değerleri görüyoruz.

c:\users\metin\desktop\sqldeveloperrr.png

Şekil 4.5.MapView menüsü
Bu değerlerden istediğimiz birine sağ click ile tıklayarak gelen menüden “İnvoke Map View on result set” seçeneğine tıklıyoruz. Ve sonuç:

c:\users\metin\desktop\mapview.png

Şekil 4.6.MapView’de görüntüleme

MapView, SqlDeveloper içerisinde yer alan mekansal verileri görüntülemeye yarayan bir araç. Fakat bu araç çoklu gösterim konusunda yetersiz kalıyor. Peki çoklu gösterimden kastımız ne? Yukarıdaki sorgularımızda da görüldüğü gibi 3 tane tablo ekledik veritabanımıza. Bunların bir tanesi poligon (poligonbolge), bir tanesi çizgi (multilinenehir), bir tanesi de nokta (noktasehir). Yani her biri farklı geometrik şekil. MapView sadece nokta veya sadece poligonları bir arada gösterebiliyor. Veritabanındaki bütün kayıtların bir arada gösterilmesini istiyorsak GeoRaptor kullanmamız gerekiyor.
GeoRaptor da SqlDeveloper üzerine bir .jar dosyası olarak eklenen ve kullanılan bir araç.

http://sourceforge.net/projects/georaptor/adresinden .jar dosyasını bilgisayarımıza indiriyoruz. SqlDeveloper’da Help sekmesinden “Check for Updates”e tıklayarak GeoRaptor yükleme ekranını açıyoruz.
c:\users\metin\desktop\georaptor2.png

Şekil 4.7.GeoRaptor yükleme

Bu ekranda “Add” diyerek GeoRaptor’u eklememiz gerekiyor. “Name” kısmına “GeoRaptor” , “Location” kısmına da http://georaptor.sourceforge.net/install.xml yazarak

GeoRaptor’u eklemiş oluyoruz. İşlem tamamlandıktan sonra veritabanındaki değerlerimize geri dönüyoruz. Poligonbolge’nin data’sına giriyoruz. Sağ tıklayıp GeoRaptor -> Create and Display Query Layer diyerek bolge1’i GeoRaptor’a eklemiş oluyoruz.



Şekil 4.8.Referans veriyi GeoRaptor’a ekleme

Daha sonra bütün tablonun GeoRaptor’a eklenmesi için de;

c:\users\metin\desktop\addtomap.png

Şekil 4.9.Tüm tabloyu GeoRaptor’a ekleme

Tabloya sağ tıklayıp GeoRaptor -> Add to Map diyoruz. “Poligonbolge” tablosunu GeoRaptor’a eklemiş olduk. Bu işlemleri kalan tablolarımız için de ( önce referans olarak bir değere create and display query layer diyip, daha sonra tabloya sağ tıklayıp add to map diyoruz ) yapıyoruz. Ve bütün tabloların birleşmiş hali;

c:\users\metin\desktop\georaptorson.png

Şekil 4.10.GeoRaptor’da görüntüleme
Gerçekleştirdiğimiz sorgular şunlardır:

  1. Bölgelerin alanlarını veren sorgu:

select name, SDO_GEOM.SDO_Area(koordinat,0.005) as alan

from poligonbolge;

c:\users\metin\desktop\sorgu1.png

Şekil 4.11.Bölgelerin alanını veren sorgu

  1. Nehirlerin alanlarını veren sorgu:

select name, SDO_GEOM.SDO_Area(koordinat,0.005) as alan

from multilinenehir;

*Nehirler, çizgi şeklinde oldukları için alanları sıfır olarak döndürüldü.

c:\users\metin\desktop\sorgu2.png

Şekil 4.12.Nehirlerin alanını veren sorgu




  1. Nehirlerin uzunluklarını veren sorgu:

select name, SDO_GEOM.SDO_Length(koordinat,0.005) as alan

from multilinenehir;
c:\users\metin\desktop\sorgu3.png

Şekil 4.13.Nehirlerin uzunluklarını veren sorgu


  1. Bölgelerin uzunluklarını veren sorgu: (çevreleri hesaplanıyor)

select name, SDO_GEOM.SDO_Length(koordinat,0.005) as alan

from poligonbolge;

c:\users\metin\desktop\sorgu4.png

Şekil 4.14.Bölgelerin uzunluklarını veren sorgu


  1. Şehir 7 ile diğer şehirler arasındaki mesafeyi hesaplayan sorgu:

select b.name, sdo_geom.sdo_distance(a.koordinat,b.koordinat,0.005) uzaklik

from noktasehir a,noktasehir b

where a.name='sehir7'

order by uzaklik DESC;

c:\users\metin\desktop\sorgu5.png

Şekil 4.15.Şehir7 ile diğer şehirler arasındaki mesafeyi hesaplayan sorgu


  1. Bölgeler ile şehirlerin birbirini içerme durumlarını ve şehirlerin ortalama sıcaklıkları ile nüfuslarını veren sorgu:

select s.name, SDO_GEOM.RELATE(b.koordinat, 'contains', s.koordinat, 0.005) RELATIONSHIP

from noktasehir s, poligonbolge b;

*Bu sorguda ekrana getirilmesi gereken nüfus ve ortalama sıcaklık değerleri, SUM ve AVG fonksiyonlarını SqlDeveloper’da çalıştıramadığımızdan dolayı sadece içerme durumları ekrana getirilmiştir.

*23 şehir ve 5 bölge olduğu için toplamda 115 tane içerme durumu döndürülmüştür.

c:\users\metin\desktop\sorgu6.png

Şekil 4.16. Bölgeler ile şehirlerin birbirini içerme durumlarını ve şehirlerin ortalama sıcaklıkları ile nüfuslarını veren sorgu


  1. Nehir1’in geçtiği bölgeleri veren sorgu:

select b.name, SDO_GEOM.RELATE(n.koordinat, 'anyinteract', b.koordinat, 0.005) relationship

from poligonbolge b,multilinenehir n

where n.name='nehir1';

c:\users\metin\desktop\sorgu7.png

Şekil 4.17. Nehir1’in geçtiği bölgeleri veren sorgu

10.SONUÇLAR VE ÖNERİLER


Projemizde coğrafi-geometrik verilerin veritabanına nasıl aktarılacağı, gelişmiş düzeydeki coğrafi bilgisayar programlarının temelde ne tip prosedürlerle başlayıp karmaşık seviyelere geldikleri incelenmiştir.

Sonuç olarak coğrafi işlem yapan programlarının hepsinin temelinde verileri depolamak için mekansal bir veritabanı, ve bu veritabanında sorgulamalar yapabilmek için mekansal veriler olması gerekmektedir. Bu komutlara bağlı olarak karmaşık seviyede çizimler yapılabilmekte ve sorgulamalar yapılabilmektedir. Bizim incelemiş olduğumuz kısım ise; karmaşıklıktan ziyade temelde hangi sorguların ve ne tür çizimlerin basit seviyede yapılabileceğidir. Bu bilgiye dayanarak sadece nokta, çizgi ve poligon tipindeki geometriler için sorgular oluşturulup, çizimler gerçeklenmiştir.

Oracle’ın sistemimize kurmuş olduğu programların hiyerarşik yapısına bakıldığında mekansal işlemler yapmak için sqldeveloper aracının kullanılması gerektiği ilk bakışta anlaşılmayabilir. Bu durumdan dolayı, mekansal işlemleri sqldeveloper’da eklentilerle yapmak yerine direkt olarak mekansal işlemleri yapabilen ayrı bir program yazılabilir/oluşturulabilir.

kaynaklar



  1. http://www.coastlearn.org/tr/gis/format.htm

  2. www.kirklareli.edu.tr/download//by-files/57570443.html

  3. http://tr.wikipedia.org/wiki/Co%C4%9Frafi_bilgi_sistemi

  4. http://www.gunduz.org/seminer/GIS/AKK_GIS_Uygulamalari-Nicolai-Tufar-22052005.pdf

  5. http://tr.wikipedia.org/wiki/Oracle

  6. Oracle Database 11g R2 , Talip Hakan ÖZTÜRK, Pusula Yayıncılık, 2012

  7. http://docs.oracle.com/cd/B19306_01/appdev.102/b14255/sdo_operat.htm



ÖZGEÇMİŞ


Tolga Kaplan, 6 Nisan 1991 yılında Sivas’ta doğdu. İlköğretimi ve liseyi Sivas’ın

Gürün ilçesinde tamamladıktan sonra 2010 yılında YGS ve LYS sınavlarına girerek

Kocaeli Üniversitesi Bilgisayar Mühendisliği bölümüne girmeye hak kazandı. Halen bu

bölümde 4.sınıf öğrencisi olarak öğrenim hayatına devam etmektedir. Veritabanı

Sistemleri konusunda araştırmaya ve çalışmalar yapmaya devam etmektedir.
E-mail : tlgakaplan@gmail.com

Metin Yılmaz, 26 Nisan 1992 yılında İstanbul’da doğdu. İlköğretimini Çağrıbey İlköğretim Okulu’nda, liseyi ise Kadıköy Kenan Evren Anadolu Lisesi’nde tamamladı. 2010 yılında girdiği YGS ve LYS sınavları sonucunda Kocaeli Üniversitesi Bilgisayar Mühendisliği bölümünde okumaya hak kazandı. Halen aynı bölümde 4.sınıf öğrencisi olarak öğrenim hayatına devam etmektedir.

E-mail : metinyilmaz_92@hotmail.com
1   2   3   4   5   6   7   8


öykü




© 2000-2018
kişileri
o.ogren-sen.com