Oracle Spatial Nedir Nasıl Kullanılır

advertisement
KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ
BİLGİSAYAR MÜHENDİSLİĞİ
DÖNEM PROJESİ
ORACLE SPATIAL İLE MEKANSAL SORGULAMALAR
100202075 TOLGA KAPLAN
100202020 METİN YILMAZ
OCAK, 2014
ÖNSÖZ VE TEŞEKKÜR
Projemiz adından da anlaşılacağı üzere Oracle ile spatial (mekansal) sorgular ve bu
sorguların nasıl çalıştırılacağı ile ilgilidir. Projemizde ilk olarak Oracle 11g r2 x64
sürümünü kurup, gerekli eklentileri yükledikten sonra, daha önceden de PostgreSQL
üzerinde denemiş olduğumuz mekansal sorguları Oracle syntax’ına çevirip
çalıştırdık. Ve görsel olarak (koordinat sistemine dayalı) ekrana getirdik.
Öncelikle proje çıkmaz bir haldeyken, bizi yönlendirip ilgili dokümanlarla yol
göstererek projemizi tamamlamamızı sağladığı için değerli hocamız Arş. Gör.
Süleyman Eken’e teşekkürü bir borç biliriz. Sorularımızla terlettiğimiz
Facebook/Turkish Oracle User Group & Oracle Forum Türkiye
grubuna
ve
stackoverflow.com teknik paylaşım sitesine katkılarından dolayı teşekkürlerimizi
sunarız. Ve son olarak; hayatımız boyunca bugünlere gelmemizde şüphesiz en büyük
katkıları yapmış olup, hiçbir özveriden kaçınmayan değerli ailelerimize çok teşekkür
ederiz.
Ocak – 2014
Metin Yılmaz – Tolga Kaplan
iv
İÇİNDEKİLER
ÖNSÖZ VE TEŞEKKÜR ........................................................................................... iv
İÇİNDEKİLER ............................................................................................................ v
ŞEKİLLER DİZİNİ..................................................................................................... vi
SİMGELER DİZİNİ ve KISALTMALAR ............................................................... viii
ÖZET........................................................................................................................... ix
ABSTRACT ............................................................................................................... 10
1. GİRİŞ ..................................................................................................................... 11
1.1. Tarihçe ............................................................................................................ 11
1.2. Mekansal Veritabanları Nedir? ...................................................................... 12
1.3. Oracle Spatial Niçin Vardır? .......................................................................... 13
2. MEKANSAL VERİTABANLARI ........................................................................ 14
2.1. Veritabanı Yönetim Sistemleri ....................................................................... 14
2.1.1 Hiyerarşik Veritabanları .................................................................................... 14
2.1.2 Ağ Veritabanları ................................................................................................ 15
2.1.3 İlişkisel Veritabanları ....................................................................................... 15
2.2. Mekansal Veritabanı Yönetim Sistemleri ...................................................... 17
3. ORACLE SPATIAL KURULUMU ...................................................................... 19
3.1. Oracle Spatial Teknolojisi Nedir? .................................................................. 19
3.2. OracleSpatial Kurulumu ................................................................................. 19
3.2.1 Oracle 11g R2 Kurulumu .................................................................................. 19
3.2.2 Spatial Bir Veritabanı Oluşturma ...................................................................... 28
4. ORACLE SPATIAL ÜZERİNDE MEKANSALSORGULAMA ÖRNEKLERİ . 48
4.1. Oracle Spatial Fonksiyonları .......................................................................... 48
4.2. Gerçekleştirilen Mekansal Sorgular ............................................................... 51
5. SONUÇLAR VE ÖNERİLER ............................................................................... 70
KAYNAKLAR .......................................................................................................... 71
ÖZGEÇMİŞ ............................................................................................................... 72
v
ŞEKİLLER DİZİNİ
Şekil 1.1.1854 Londra - Kolera salgını verileri ......................................................... 11
Şekil 1.2.Raster veri ................................................................................................... 12
Şekil 1.3.Vektörel veri ............................................................................................... 13
Şekil 3.1.Oracle download ......................................................................................... 20
Şekil 3.2.Oracle dosyalar ........................................................................................... 20
Şekil 3.3.Oracle kurulum e-mail ................................................................................ 21
Şekil 3.4.Oracle kurulum e-mail sorgulama .............................................................. 21
Şekil 3.5.Oracle kurulum create database .................................................................. 22
Şekil 3.6.Oracle kurulum desktop class ..................................................................... 23
Şekil 3.7.Oracle kurulum şifre belirleme ................................................................... 23
Şekil 3.8.Oracle kurulum gereksinimi kontrolü ......................................................... 24
Şekil 3.9.Oracle kurulum bilgiler ............................................................................... 25
Şekil 3.10.Oracle kurulum yükleme........................................................................... 25
Şekil 3.11.Oracle kurulum güvenlik duvarı izni ........................................................ 26
Şekil 3.12.Oracle kurulum orcl veritabanı ................................................................. 26
Şekil 3.13.Oracle kurulum orcl kurulumunun tamamlanması ................................... 27
Şekil 3.14.Oracle kurulumunun tamamlanması ......................................................... 28
Şekil 3.15. Başlat görünümü ...................................................................................... 29
Şekil 3.16.database configuration assistance ............................................................. 29
Şekil 3.17.DCA veritabanı oluşturma ........................................................................ 30
Şekil 3.18.DCA custom database ............................................................................... 30
Şekil 3.19.DCA veritabanı adı ................................................................................... 31
Şekil 3.20.DCA enterprise manager .......................................................................... 32
Şekil 3.21.DCA otomatik bakım ................................................................................ 32
Şekil 3.22.DCA şifre belirleme .................................................................................. 33
Şekil 3.23.DCA şifre uygunluğu ................................................................................ 34
Şekil 3.24.DCA file location ...................................................................................... 34
Şekil 3.25.DCA yedekleme ........................................................................................ 35
Şekil 3.26.DCA bileşenler.......................................................................................... 36
Şekil 3.27.DCA script ................................................................................................ 36
Şekil 3.28.DCA hafıza miktarını belirleme................................................................ 37
Şekil 3.29.DCA sizing ............................................................................................... 38
Şekil 3.30.DCA character sets ................................................................................... 38
Şekil 3.31.DCA connection mode .............................................................................. 39
Şekil 3.32.DCA database storage ............................................................................... 40
Şekil 3.33.DCA create database ................................................................................. 40
Şekil 3.34.DCA create database – özet ...................................................................... 41
Şekil 3.35.DCA kurulum başlangıç ........................................................................... 42
Şekil 3.36.DCA kurulum bitiş.................................................................................... 43
Şekil 3.37.DCA hata .................................................................................................. 44
Şekil 3.38.Listener durumları..................................................................................... 44
vi
Şekil 3.39.Enterprise manager ................................................................................... 45
Şekil 3.40.Enterprise manager giriş ........................................................................... 46
Şekil 3.41.Enterprise manager ekranı ........................................................................ 46
Şekil 4.1.Yeni bağlantı oluşturma .............................................................................. 51
Şekil 4.2.Yeni bağlantı bilgileri ................................................................................. 51
Şekil 4.3.Sqldeveloper tablo oluşturma ..................................................................... 52
Şekil 4.4.Sqldeveloper veri ekleme ............................................................................ 52
Şekil 4.5.MapView menüsü ....................................................................................... 60
Şekil 4.6.MapView’de görüntüleme .......................................................................... 60
Şekil 4.7.GeoRaptor yükleme .................................................................................... 61
Şekil 4.8.Referans veriyi GeoRaptor’a ekleme .......................................................... 62
Şekil 4.9.Tüm tabloyu GeoRaptor’a ekleme .............................................................. 62
Şekil 4.10.GeoRaptor’da görüntüleme ....................................................................... 63
Şekil 4.11.Bölgelerin alanını veren sorgu .................................................................. 64
Şekil 4.12.Nehirlerin alanını veren sorgu .................................................................. 64
Şekil 4.13.Nehirlerin uzunluklarını veren sorgu ........................................................ 65
Şekil 4.14.Bölgelerin uzunluklarını veren sorgu........................................................ 66
Şekil 4.15.Şehir7 ile diğer şehirler arasındaki mesafeyi hesaplayan sorgu ............... 67
Şekil 4.16. Bölgeler ile şehirlerin birbirini içerme durumlarını ve şehirlerin ortalama
sıcaklıkları ile nüfuslarını veren sorgu .................................................................. 68
Şekil 4.17. Nehir1’in geçtiği bölgeleri veren sorgu ................................................... 69
vii
SİMGELER DİZİNİ VE KISALTMALAR
Kısaltmalar
DCA
: Database Configuration Assistant(Oracle Veritabanı Oluşturma Aracı)
GIS
: Goegraphic Information System (Coğrafi Bilgi Sistemi - CBS)
HTML
: Hyper Text Markup Language (Zengin Metin İşaretleme Dili)
MVTYS
: Mekansal Veritabanı Yönetim Sistemleri
SID
: System Identifier (Sistem Tanımlayıcısı - Veritabanı Adı)
SQL
: Structured Query Language (Yapılandırılmış Sorgu Dili)
PC
: Personal Computer (Kişisel Bilgisayar)
PL/SQL
: Procedural Language/Structured Query Language (Prosedürel Sorgu
Dili)
RDBMS
: Relational Database Management System (İlişkisel Veritabanı
Yönetim Sistemi)
T-SQL
: Transact SQL (SQL Komut Yapısı)
VTYS
: Veritabanı Yönetim Sistemleri
viii
ÖZE
ORACLE SPATIAL İLE MEKANSAL SORGULAMALAR
ÖZET
Yaptığımız bu çalışmada mekansal sorgular ve bu sorguların görsel olarak ekrana
getirilmesi araştırılmıştır. İlk etapta özellikle Oracle’ın mekansal sorgulamalarıyla
ilgili Türkçe kaynakların yetersiz olması sebebiyle çalışmamızın her adımı için
İngilizce kaynaklar bulunup, Türkçe’ye çevrilmiş ve her aşama bu çevirilere göre
gerçekleştirilmiştir. Çeviri aşamasından sonra kurulum aşamasına geçilmiş, uygun
olan işletim sistemi ve Oracle versiyonu belirlenerek kurulum tamamlanmıştır.
Kurulumdan sonra elimizde mevcut olan PostgreSQL mekansal sorguları Oracle’a
uygun bir şekilde çevrilerek (fonksiyon isimlerinin düzenlenmesi, ID değerleri
eklenmesi vb.) başarıyla gerçeklenmiştir. Daha sonra ise Oracle üzerindeki MapView
ve GeoRaptor eklentileriyle sorguların görselleştirilmesi sağlanmıştır. Çalışmaların
tümü Windows 7 64-bit işletim sistemi üzerinde Oracle 11g R2 X64 sürümü
kullanılarak gerçekleştirilmiştir.
Anahtar Kelimeler: Veritabanı Tabloları Oluşturma, Oracle Veritabanları
Kullanımı, Mekansal Sorgular, Mekansal Sorguların Çizimi,
ix
İNGİLİ ZC E ÖZET
SPATIAL QUERIES ON ORACLE SPATIAL
ABSTRACT
Spatial queries and their visual forms were investigated in study which we prepared. In
first place, due to the lack of Turkish resources which related with Oracle’s spatial queries,
English resources were translated to Turkish in each stage. Every stage was realized
according to these translations. The installation stage was launched after translation stage.
And it was completed with appropriate operating system and the version of Oracle. After
the installation stage, the PostgreSQL queries which we have existing were translated
Oracle syntax and were realized successfully. Then the queries were visualized with the
MapView and the GeoRaptor addition on Oracle. All studies were realized with Oracle
11G R2 X64 on Windows 7 X64 Operating system.
Keywords :Creating the Database Tables, Usage of the Oracle Databases, Spatial Queries,
Visualization of the Spatial Queries
10
1. GİRİŞ
1.1. Tarihçe
Her ne kadar mekansal veritabanları çok uzak bir geçmişe sahip olmasa da aslında
yüzyıllar önce insanoğlunun üzerinde düşünmeye ve bir nevi prototip çizimler
gerçekleştirmeye başladığı Dünya haritaları bugünkü görsel veritabanı sistemlerinin atası
olarak kabul edilebilir. Hayvan derilerine ve parşömen kağıtlarınaharita çizimleri
yapılmasıyla başlayan bu süreç günümüzde GPS (Uydu Görüntüleme Sitemi) teknolojisi
ile de birleşerek Google Map benzeri uygulamaların hayatımıza girmesiyle devam
etmektedir. Ve 70’li yılların başında ortaya çıkan veritabanı teknolojisi “mekansal” olarak
da kategoriye ayrılmış ve günümüzde bu alanda da gelişmeye devam etmektedir.
Şekil 1.1. 1854 Londra - Kolera salgını verileri
11
1.2. Mekansal Veritabanları Nedir?
Mekansal veritabanlarının tanımını yapmadan önce mekansal verinin ne olduğunu
açıklamamız gerekir. Mekansal veri diğer bir deyişle “görsel veri”dir. Uydu görüntüleri,
haritalar, 3 boyutlu modellemeler, GPS, medikal görüntüler vb. hepsi birer mekansal
veridir. Ve mekansal veriler vektörel veri ve raster veri olarak 2’ye ayrılırlar.
Raster Veri
Raster formatındaki veriler, modellenecek alanı/bölgeyi piksel gruplar halinde veya daha
çok benzediği şekliyle satranç tahtası şeklinde gösterir. Her bir birim/hücre/piksel belli bir
coğrafik alanı temsil etmektedir. Uzaktan Algılama (remote sensing) verileri genellikle
raster formatındadır[1].
(R:yol L:arazi H:ev B:plaj C:koruma alanı S:deniz)
Şekil 1.2.Raster veri
Vektörel Veri
Vektörel veriler, nokta ve çizgilerin birleşmesi ile gerçek durumu temsil eder. Bunlar da
birleştirilerek poligonlar oluşturulur. Bu sayede her türlü coğrafi şekil vektör formatında
kolayca tanımlanabilmektedir. Coğrafi Bilgi Sistemi’nden elde edilen harita çıktıları
12
genellikle vektör formatındadır. Uzaktan Algılama verileri ise genellikle raster olduğu için
vektörel veriye dönüşümünün yapılması gerekmektedir.
Şekil 1.3. Vektörel veri
Bu açıklamalarla birlikte mekansal veritabanının tanımı daha kolay yapılabilir; mekansal
nesnelere ait verileri saklayabilen veritabanlarına mekansal veritabanı denir. Mekan bilgisi;
nokta, çizgi veya poligon olarak tutulabilir. Navigasyon, şehirleşme analizi, ulaştırma ağı
izleme sistemleri, suç izleme sistemleri, Google Earth mekansal veritabanlarına örnek
olarak verilebilir.
1.3. Oracle Spatial Niçin Vardır?
Oracle Spatial, vektörel ve raster tabanlı coğrafi veriler, topoloji ve ağ modelleri de dahil
olmak üzere yerküre üzerindeki tüm konum bilgilerini yönetmek için oluşturulmuş bir
Oracle veritabanı teknolojisidir. Yer yönetimi, kamu hizmetleri ve savunma/ülke güvenliği
gibi uygulamalar için ileri düzey coğrafi bilgi sistemi (GIS) uygulamalarının ihtiyaçlarını
karşılamak üzere tasarlanmıştır. Özellikle önceki sürümlere kıyasla 11g sürümünde daha
iyi performans, yönetim, ağ uygulamaları, coğrafi kodlama kolaylığı sağlıyor olması
Oracle Spatial’in en büyük artılarındandır.
13
2. MEKANSAL VERİTABANLARI
2.1. Veritabanı Yönetim Sistemleri
Günümüzde hemen hemen tüm veri kullanılan alanlarda Veritabanı Yönetim Sistemleri
(VTYS) olmadan hiçbir şey yapılamaz hale gelmiştir. Çok basit bir web uygulamasından,
çok büyük şirketlerin ağır verilerine kadar pek çok alanda veritabanı uygulamalarına
ihtiyaç duyulmaktadır. Birbirinden farklı isimlerle anılan bu programlar için bir çok nesne
birbiri ile aynı temel işlevi yerine getirmekte olup, yaklaşık olarak aynı teorilere dayanarak
çalışmaktadırlar. VTYS, bir veritabanı oluşturmak, veritabanını düzenlemek, geliştirmek
ve bakımını yapmak gibi çeşitli karmaşık işlemlerin gerçekleştirildiği birden fazla
programdan oluşmuş bir yazılım sistemidir. Ya da diğer bir deyişle veritabanlarını
kurmayı, yaratmayı, tanımlamayı, işletmeyi ve kullanmayı sağlayan programlar
topluluğuna “veritabanı sistemi” ya da “veritabanı yönetim sistemi” (database management
system –DBMS) denir[2].
VTYS’ler fiziksel hafızayı ve veri tiplerini kullanıcılar adına şekillendirip denetleyen ve
kullanıcılarına standart bir SQL arayüzü sağlayarak onların dosya yapılar, veri yapısı,
fiziksel hafıza gibi sorunlarla ilgilenmek yerine veri giriş-çıkışı için uygun arayüzler
geliştirmelerine olanak sağlayan yazılımlardır. VTYS’de verileri tutmak üzere bir çok
türde nesne ve bu nesnelere erişimleri düzenlemek üzere kullanıcılar, roller ve gruplar yer
alır. Her bir kullanıcının belli hakları vardır. Bu haklar kısıtlanabilir. Örneğin bir tablo ya
da programcığı bir kullanıcı kullanabilirken bir başkasının hakları veritabanı yöneticisi
tarafından kısıtlanmış olabilir. Veritabanları verileri saklama ve onlara erişme bakımından
farklı tiplere ayrılır:
2.1.1 Hiyerarşik Veritabanları
Bu
veritabanı
tipi,
ana
bilgisayar
ortamlarında
çalışan
yazılımlar
tarafından
kullanılmaktadır. Bu türde en çok kullanılan yazılım, IBM tarafından çıkarılan IMS' dir.
Uzun bir geçmişe sahip olmasına rağmen, PC ortamına uyarlanan hiyerarşik veri tabanları
14
yoktur. Hiyerarşik veri tabanları, bilgileri bir ağaç (tree) yapısında saklar. Kök (Root)
olarak bir kayıt ve bu köke bağlı dal (branch) kayıtlar bu tip veritabanının yapısını
oluşturur.
2.1.2 Ağ Veritabanları
Hiyerarşik veri tabanlarinin yetersiz kalmasından dolayı bilim adamlarının ortak çalışması
sonucu ortaya konulmuş bir veri tabanı türüdür. Ağ veri tabanları verileri ağaçların daha da
gelişmiş hali olan graflar (ağacın kendisi de özel bir graftır.) şeklinde saklarlar. Bu yapı en
karışık yapılardan biridir.
2.1.3 İlişkisel Veritabanları
Edgar Frank Codd Tarafından Geliştirilmiştir. Bu sistemde veriler tablo şeklinde saklanır.
Bu veri tabanı yönetim sisteminde; veri alış verişi için özel işlemler kullanılır. Bu
işlemlerde tablolar operandlar olarak kullanılır. Tablolar arasında ilişkiler belirtilir. Bu
ilişkiler matematiksel bağıntılarla (ilişkilerle) temsil edilir. Günümüzde hemen hemen tüm
veri tabanı yönetim sistemleri ilişkisel veri modelini kullanırlar. İlişkisel modeli 1970
yılında Codd önermiştir. Bu model, matematikteki ilişki teorisine (“the relational theory”)
dayanır. İlişkisel veri modelinde (Relational Data Model) veriler basit tablolar halinde
tutulur. Tablolar, satır ve sütunlardan oluşur.
Bilgisayar ortamında veri saklama ve erişiminde geçmişten günümüze değişik yöntemler
ve yaklaşımlar kullanılmıştır. Bunlardan Geleneksel Yaklaşım (Dosya - İşlem Sistemi)
verileri ayrı ayrı dosyalarda gruplamaya dayanır. Verileri saklamak için programlama
dillerinde kullanılan sıralı (Sequential) ve rastgele (Random) dosyalama sistemleri gibi.
Birbiriyle ilgili olan ve aynı gruba dahil olan veriler bir dosyada, bir başka gruba dahil olan
veriler de başka bir dosyada tutulurdu.Geleneksel Yaklaşımın birçok sakıncası vardır ve bu
sakıncaların beraberinde getirdiği sorunların üstesinden gelebilmek için de Veri Tabanı
Yaklaşımı zamanla Geleneksel Yaklaşımın yerini almıştır. Günümüzde veriler artık Veri
Tabanı Yaklaşımı ilkesine göre VTYS’ lerde tutulmakta ve işlenmektedir.
15
Aynı veri değişik kişilerin PC’lerinde veya değişik bilgisayarlarda tekrar tekrar tutulmaz;
veri tekrarı (data redundancy) azaltılır ya da yok edilir.
Veri tutarlılığı (data consistency) : Aynı verinin değişik yerlerde birkaç kopyasının
bulunması “bakım” zorluğu getirir: bir yerde güncellenen bir adres bilgisi başka yerde
güncellenmeden kalabilir ve bu durum veri tutarsızlığına (“data inconsistency”) yol açar.
Veri paylaşımı / Eşzamanlılık (concurrency) : Veri tabanı yönetim sistemi (VTYS)
kullanılmadığı durumlarda veriye sıralı erişim yapılır. Yani birden çok kullanıcı aynı anda
aynı veriye erişemez. Bir VTYS’de ise verinin tutarlılığını ve bütünlüğünü bozmadan aynı
veritabanlarına saniyede yüzlerce, binlerce erişim yapılabilir.
Veri bütünlüğü (data integrity): Bir tablodan bir öğrenci kaydı silinirse, öğrenci varolduğu
diğer tüm tablolardan silinmelidir.
Veri güvenliği (data security) : Verinin isteyerek ya da yanlış kullanım sonucu bozulmasını
önlemek için çok sıkı mekanizmalar mevcuttur. Veri tabanına girmek için kullanıcı adı ve
şifreyle korumanın yanı sıra kişiler sadece kendilerini ilgilendiren tabloları ya da tablo
içinde belirli kolonları görebilirler.
Veri Bağımsızlığı (data independence) : Programcı, kullandığı verilerin yapısı ve
organizasyonu ile ilgilenmek durumunda değildir. VERİ BAĞIMSIZLIĞI, VTYS’lerinin
en temel amaçlarındandır.
VTYS programlarından bazıları şunlardır;
ArcSDE : ArcSDE VTYS’si RDBMS içerisinde saklanan coğrafi verileri sorgulamak,
analiz etmek ve düzenlemek amacıyla kullanılan ESRI ArcGIS ailesi ürünlerindendir.
IBM, DB2, Informix, Microsoft SQL Server ve Oracle üzerindeki coğrafi verilerin
ArcView, ArcEditor ve ArcInfo gibi ArcGIS Desktop ürünlerine bilgi sunulmasını
sağlayan önemli bir bileşendir. Coğrafi veri için ortak bir model sunmaktadır. Mekansal
veriler, RDBMS için önem arzeden veri import ve export programları kullanmak suretiyle,
bir RDBMS’ten başka birine veri kaybı olmadan kolaylıkla taşınabilmektedir. ArcSDE,
nokta(point), çizgi(line) ve alan(polygon) gibi geometrik veriler veritabanına eklenirken
bozuk yapılı geometrilerin eklenmesine izin vermeyerek veri bütünlüğünü de
korumaktadır.
16
MS SQL Server : Bir orta ve büyük ölçekli VTYS’dir. SQL’e eklentiler yazmak için TSQL’i destekler.
Oracle : Daha çok yüksek ölçekli uygulamalarda tercih edilen bir VTYS’dir. SQL’e
eklentiler yapmak için PL/SQL geliştirilmiştir. OGC standartlarını desteklemektedir.
Spatial teknoloji; MDSYS şeması, spatial indeks mekanizması, spatial analiz işlemleri için
fonksiyonlar, prosedürler ve operatörler, tuning işlemleri için operatörler, topoloji veri
modeli, netwok data model oluşturulması, GeoRaster veriler üzerinde analizlerin
yapılabilmesi gibi özellikleri içerir.
MySQL : Genellikle Unix-Linux temelli Web uygulamalarında tercih edilen bir VTYS’dir.
Açık kod bir yazılımdır. Küçük-orta ölçeklidir. Özellikle Web için geliştirilmiş bir
VTYS’dir denilebilir.
Postgre SQL : Bu da MySQL gibi açık kod bir VTYS’dir.
MS Access : Çoklu kullanıcı desteği yoktur. İşletim sisteminin sağladığı güvenlik
seçeneklerini kullanır. Bunun yanında belli sayıda kayda kadar (1000000 civarı) ya da belli
bir boyutun (yaklaşık 25MB) altına kadar bir sorun çıkartmadan kullanılabilecek bir küçük
ölçekli VTYS’dir.
Advantage : Türk programcılar tarafından geliştirilen bir orta ve büyük ölçekli VTYS’dir.
2.2. Mekansal Veritabanı Yönetim Sistemleri
Mekansal Veritabanı Yönetim Sistemleri denince akla ilk gelen terim ise GIS’dır. Dilimize
ise CBS (Coğrafi Bilgi Sistemleri) olarak çevrilmektedir. Coğrafi Bilgi Sistemleri; konuma
dayalı gözlemlerle elde edilen grafik ve grafik-olmayan bilgilerin toplanması, saklanması,
işlenmesi ve kullanıcıya sunulması işlevlerini bütünlük içerisinde gerçekleştiren bir bilgi
sistemidir. Coğrafik bilgileri dijital bir yapıya oturtarak bilgisayarda yardımcı araçlar ile
veritabanımızda bu verileri saklayabilmemiz, düzenleyebilmemiz coğrafi bilgi sistemleri
sayesinde gerçekleşir. Kullanım alanları arasında ise; bilimsel araştırmalar, kaynak
yönetimi, altyapılar, peyzaj mimarlığı, kentsel planlama, kartografya, kriminoloji, coğrafi
tarih, lojistik, maden haritalama, haritacılık, meteoroloji, tarımsal araştırmalar, trafik
izleme – araç takip sistemleri, arama kurtarma gibi alanlar bulunmaktadır[3].
17
MVTYS programlarından bazıları şunlardır;
Oracle Spatial
Oracle Spatial en genel anlamda Oracle veritabanına mekansal yetenekler ilave eden bir
Oracle opsiyonudur. Daha teknik bir tanımla, çok boyutlu verilerin veya nokta, çizgi,
poligon gibi coğrafi şekillerin Oracle veritabanında saklanması, sorgulanması, update
edilmesi gibi işlemlerin yapılabilmesini sağlayan; özel bir SQL şeması ve özel SQL
fonksiyonlarını içeren Oracle opsiyonudur. Temelde 4 bileşenden oluşur:
- MDSYS isimli ve geometrik veri tiplerinin saklanması, syntax’I ve tanımlarını öngören
Oracle şeması.
- Mekansal indexleme
- Komşuluk ve yakınlık analizi, kesişme, içerme vb. mekansal sorguların
- yapılabilmesini sağlayan özel coğrafi fonksiyonlar.
- Yönetimsel araçlar
PostGIS
Coğrafi nesneler için PostgreSQL’e destek veren açık kaynaklı bir yazılımdır.
PostgreSQL’ e mekansal veri tabanı olma özelliği katan bir eklentidir[4].
18
3. ORACLE SPATIAL KURULUMU
3.1. Oracle Spatial Teknolojisi Nedir?
Spatial özelliğini açıklayabilmek için önce Oracle teknolojisinin ne olduğuna bakmak
gerekli. Oracle 1977 yılında Kaliforniya, ABD’de kurulmuş olan, Microsoft’un ardından
dünyanın en büyük ikinci yazılım şirketidir. Oracle; ilişkisel bir veritabanı yönetim
sistemidir. Oracle’ın özelliklerinden bazıları; büyük miktarda veri tutabilmesi ve verilerin
depolandığı alanları ayarlama imkanı verebilmesi, aynı anda çok sayıda kullanıcıya hizmet
verebilmesi, işletim sistemi, veri erişim dilleri ve ağ iletişim protokolleri standartlarıyla
uyumlu olması, yetkisiz erişimleri engelleme ve kontrol edebilme imkanı sağlamasıdır[5].
Spatial seçeneği ise Oracle Enterprise Edition sürümü ile birlikte gelmektedir. Standart
Edition’da Locator adlı, sadece temel mekansal fonksiyonalite sağlayan ve Spatial’ın “alt”
versiyonu diyebileceğimiz bir opsiyon mevcuttur. Kompleks GIS projelerinde Locator
muhtemelen yetersiz kalacağı için büyük projelerde Spatial’ı kullanmak daha doğru
olacaktır. Enterprise sürümü ile gelen SqlDeveloper kullanılarak sorgular çalıştırılabilir.
Ve spatial sorguların görselliği için ise aynı program üzerindeki MapView ve GeoRaptor
eklentileri kullanılmaktadır.
3.2. OracleSpatial Kurulumu
3.2.1 Oracle 11g R2 Kurulumu
Kurulum aşamalarına geçmeden önce işletim sistemi olarak Windows 7 64 bit
kullandığımızı
tekrar
edelim.http://www.oracle.com/technetwork/database/enterprise-
edition/downloads/index.html?ssSourceSiteId=ocomen adresine giderek
19
Şekil 3.1.Oracle download
Microsoft Windows x64’a ait iki dosyayı bilgisayarımıza indiriyoruz. İndirip aynı klasör
içine çıkardığımızda aşağıdaki gibi dosyalar gelmelidir;
Şekil3.2.Oracle dosyalar
Ve setup’a tıklayarak Oracle kurulumuna başlıyoruz.
20
Şekil 3.3.Oracle kurulum e-mail
Şekil 6’da gösterildiği üzere karşımıza gelen ilk ekranda “My Oracle Support” sistemine e
–mail adresimizi kayıt etmek isteyip istemediğimiz soruluyor. İstemiyorsak hiçbir alana
dokunmadan “İleri” diyoruz.
Şekil 3.4.Oracle kurulum e-mail sorgulama
21
“Geçerli bir e-mail adresi girmediniz.” uyarısına evet diyerek devam ediyoruz.
Şekil 3.5.Oracle kurulum create database
Şekil 8’de karşımıza 3 seçenek geliyor. Biz örnek “orcl” veritabanının da kurulmasını
istediğimiz için ilk seçeneği seçiyoruz. Fakat örnek veritabanının kurulmasını istemezsek
“install database software only” diyerek “ileri” diyoruz.
22
Şekil 3.6.Oracle kurulum desktop class
Gelen ekrandan “Desktop Class” ı seçiyoruz. Ve devam ediyoruz.
Şekil 3.7.Oracle kurulum şifre belirleme
23
Şekil 10’da ise “administrative password” ve “confirm password” alanları hariç diğer
alanlar dolu olarak karşımıza geliyor. Oracle’ın kurulacağı dizini değiştirmek istersek
üstteki
kısımdan
değiştirebiliriz.
Değiştirmek
istemezsek
ise;
sadece
password
belirlememiz yeterli.
Şekil 3.8.Oracle kurulum gereksinimi kontrolü
Kurulum için istenen gereksinimler (harddiskte yeterli boş alan, sistem gereksinimleri vb.)
kontrol ediliyor.
24
Şekil 3.9.Oracle kurulum bilgiler
Kontrol işlemi bittikten sonra kurulum sırasında vermiş olduğumuz bilgiler ( Oracle’ın
hangi dizine kurulacağı, örnek veritabanına ait sistem bilgileri vb. ) karşımıza
geliyor.“Bitir” diyerek yükleme aşamasına geçiyoruz.
Şekil 3.10.Oracle kurulum yükleme
25
Kurulum başlıyor.
Şekil 3.11.Oracle kurulum güvenlik duvarı izni
Kurulum belli bir aşamaya geldiğinde güvenlik duvarından Oracle için erişime izin
vermemiz isteniyor. “Allow access” diyerek devam ediyoruz.
Şekil 3.12.Oracle kurulum orcl veritabanı
26
Oracle kurulumu tamamlandıktan sonra otomatik olarak “orcl” veritabanının kurulmasına
geçiliyor.
Şekil 3.13.Oracle kurulum orcl kurulumunun tamamlanması
“orcl” veritabanının kurulumu tamamlandı. Bazı uyarılar ve “orcl” veritabanımıza ait
bilgiler ( adı, kurulduğu dizin ) ekrana geliyor[6].
27
Şekil 3.14.Oracle kurulumunun tamamlanması
Kurulumun tamamlandığına dair ekranda “kapat diyerek Oracle kurulumumuzu
tamamlamış oluyoruz.
3.2.2 Spatial Bir Veritabanı Oluşturma
Oracle kurulumu tamamlandıktan sonra Oracle’a ait programların Başlat’taki görünümü
aşağıdaki gibi olmalıdır;
28
Şekil 3.15. Başlat görünümü
Spatial bir veritabanı oluşturmak için ise Şekil 18’de de görülen “Database Configuration
Assistant”ı kullanıyoruz.
Şekil 3.16.database configuration assistance
Karşımıza gelen ilk ekrana “next” diyerek devam ediyoruz.
29
Şekil 3.17.DCA veritabanı oluşturma
“Create a database” diyoruz.
Şekil 3.18.DCA custom database
30
Şekil 21’de yer alan ekranda karşımıza 3 seçenek geliyor. Biz mekansal veritabanı
oluşturacağımız için 2.seçenek olan “Custom Database”i seçiyoruz. Eğer normal bir
veritabanı yaratmak isteseydik 1.seçeneği, datawarehouse ise de 3.seçeneği seçmemiz
gerekecekti.
Şekil 3.19.DCA veritabanı adı
Veritabanımıza isim veriyoruz. SID ( system indetifier ) da otomatik olarak
veritabanımızla aynı isimde oluyor.
31
Şekil 3.20.DCA enterprise manager
Şekil 23’te veritabanımızı konfigüre etmek için Enterprise Manager mi yoksa başka bir
yönetim aracı mı kullanacağımız soruluyor. “Configure Enterprise Manager” diyerek
“Automatic Maintenance Tasks” sekmesine geçiyoruz.
Şekil 3.21.DCA otomatik bakım
32
Şekil 24’te “enable automatic maintenance tasks” diyerek otomatik olarak bakım
yapılmasına izini veriyoruz.
Şekil 3.22.DCA şifre belirleme
Şekil 25’te gördüğümüz ekranda karşımıza iki seçenek geliyor. Bu seçeneklerin ilkinde
veritabanlarımız için önceden oluşturulmuş olan “SYS, SYSTEM, DBSNMP ve
SYSMAN” kullanıcıları için ayrı ayrı şifre belirleyebiliyoruz. İkinci seçenek de ise bu
kullanıcıların hepsi için tek bir şifre belirleyebiliyoruz. Biz 2.seçeneği seçerek devam
ediyoruz.
33
Şekil 3.23.DCA şifre uygunluğu
Gireceğimiz şifrenin en az 8 karakterli ve içinde en az bir büyük harf, bir küçük harf ve bir
de sayı olması isteniyor. Fakat aksi durumdaki şifreler de kabul ediliyor. Evet diyerek
devam ediyoruz.
Şekil 3.24.DCA file location
34
Next diyerek devam ediyoruz.
Şekil 3.25.DCA yedekleme
Bu kısımda yedekleme için 2 seçenek karşımıza geliyor. “Specify flash recovery area”
seçeneğinde yedekleme dizini ve yedekleme alanı boyutunu seçebiliyoruz. Eğer
verilerimizin tümüyle arşivlenmesini istersek ise “Enable Archiving” seçeneğini seçiyoruz.
Biz yedekleme istediğimiz için 1.seçeneği seçip dizin ve boyuta dokunmadan devam
ediyoruz.
35
Şekil 3.26.DCA bileşenler
Bu ekranda veritabanı türlerinin bileşenleri görüntüleniyor. Next diyerek devam ediyoruz.
Şekil 3.27.DCA script
36
Custom Scripts sekmesini de “no scripts to run” olarak ayarlayarak devam ediyoruz.
Şekil 3.28.DCA hafıza miktarını belirleme
Bu kısımda ne kadar hafıza kullanılacağını belirliyoruz. İstersek “use automatic memory
management” seçeneğini işaretleyerek hafızanın otomatik olarak belirlenmesini sağlıyoruz.
İstersek de sabit bir miktarı seçiyoruz.
37
Şekil 3.29.DCA sizing
Sizing sekmesini next diyerek geçiyoruz. Miktarlarda herhangi bir değişiklik yapmıyoruz.
Şekil 3.30.DCA character sets
38
Character Sets sekmesi ilk karşımıza geldiğinde “use the default” seçeneği işaretli olarak
geliyor.
Fakat
bu seçeneği
seçtiğimizde,
veritabanının herhangi
bir kısmında
kullanacağımız ( veritabanı adı, sorgular vb. ) yazılarda yabancı alfabelere ait harfleri
kullanmaya çalıştığımızda hata alırız. Bu yüzden 2.seçenek olan “Use Unicode” diyerek
çoklu dil desteği verilmesini sağlıyoruz. Bunu seçtiğimizde İngilizce, Türkçe vb. harfleri
isimlendirmede veya sorgularda kullanabiliriz.
Şekil 3.31.DCA connection mode
“Dedicated Server Mode” seçeneğini seçerek devam ediyoruz.
39
Şekil 3.32.DCA database storage
Database Storage ekranında veritabanı saklama ile ilgili olarak bilgilendiriliyoruz. İstersek
sol tarafta yer alan seçeneklerden birini seçip ( tablespaces, datafiles, redo log groups )
inceleyebiliriz. Next diyerek devam ediyoruz.
Şekil 3.33.DCA create database
40
Veritabanı oluşturacağımız için şekil 36’da karşımıza gelen ekranda “create a database”
seçeneğini seçerek devam ediyoruz.
Şekil 3.34.DCA create database – özet
Veritabanımıza ait
bilgiler
görüntüleniyor.
bilgisayarımıza kaydedebiliyoruz.
41
İstersek bir HTML belgesi
olarak
Şekil 3.35.DCA kurulum başlangıç
Veritabanımız kuruluyor. Bilgisayarımızın donanım ve yazılım gücüne bağlı olarak
kurulum süresi 1 saati bulabilmektedir.
42
Şekil 3.36.DCA kurulum bitiş
Veritabanımız kuruldu. Fakat zaman zaman bu ekran gelmeden önce kurulumun
tamamlanmasına yakın, bir hata oluşabilmektedir.
43
Şekil 3.37.DCA hata
Bu hatanın bize anlatmak istediği şudur;
1) Oracle ile ilgili servis’leri kontrol edin. Başlatılmamış veya disabled durumda olan
servisler’lar olabilir.
Şekil 3.38.Listener durumları
44
Ekranda görüldüğü üzere Oracle ile ilgili servisleri kontrol edip şekildeki durumlara
(status) getirmemiz gerekmektedir. ( Servisleri açabilmek için Başlat’ta “services.msc”
yazmamız gerekmektedir. )
2) Listener’ları düzeltmemize rağmen sorun hala devam ediyor olabilir. Bu durumda
Enterprise Manager ile ilgili problem vardır. Enterprise Manager ise veritabanı ve
kullanıcılarımıza ait bilgilerinbrowser’da görüntülenmesi ve bazı tanımlamaların
browser’da yapılmasıdır.
Şekil 3.39.Enterprise manager
Hatadan sonra “OK” diyerek hatalı kurulumu tamamlıyoruz. https://localhost:1158/em
adresine giderek Oracle Enterprise Manager’i açıyoruz. Karşımıza aşağıdaki gibi bir ekran
geliyor.
45
Şekil 3.40.Enterprise manager giriş
Bu ekranda kullanıcı adı olarak “system” , şifre olarak da veritabanı yaratırken
belirttiğimiz şifreyi yazarak sisteme giriş yapıyoruz.
Şekil 3.41.Enterprise manager ekranı
Karşımıza gelen ekranda 3 okun renginin de kırmızı ve aşağı yönlü olması veritabanının
hatalı
olduğunu
gösteriyor.
Bu
durumda
Enterprise
Manager’dan
da
user
oluşturamayacağımız için Başlat’taki Oracle programları arasından “SQLPLUS”ı açıyoruz.
46
Ve kullanıcı adı ile şifre soruyor. “system” kullanıcı adı ve veritabanı oluştururken
kullandığımız şifre ile giriş yapıyoruz. Amacımız; kullanıcı oluşturmak.
Önce;
CREATE TABLESPACE veri_tablespace
DATAFILE 'D:\data\metin_data_01.dat' SIZE 500K REUSE
AUTOEXTEND ON NEXT 500K MAXSIZE 500M;
komutunu yazarak tablespace oluşturuyoruz. Dizini ve maksimum boyutu da belirliyoruz
tabi. Daha sonra;
CREATE USER kullaniciadiniz IDENTIFIED BY veritabaniolustururkenyazdiginizsifre
DEFAULT TABLESPACE veri_tablespace
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON veri_tablespace;
komutuyla kullanıcımızı oluşturmuş oluyoruz.
47
4. ORACLE SPATIAL ÜZERİNDE MEKANSALSORGULAMA ÖRNEKLERİ
4.1. Oracle Spatial Fonksiyonları
Oracle Spatial için belirlenmiş, şekiller arasındaki ilişkileri belirleyen ve çeşitli ölçümleri
yapan
birçok
fonksiyonu
vardır.
Bu
fonksiyonlar
ise
SDO_GEOMETRY
ve
SDO_GEORASTER tiplerinin alt tipi olarak kullanılmaktadır. Vektör veriler için
SDO_GEOMETRY, raster veriler için SDO_GEORASTER tipi kullanılır.
SDO_GEOMETRY yapısı;
-SDO_GTYPE
number
-SDO_SRID
number
-SDO_POINT
sdo_point tipi
-SDO_ELEM_INFO sdo_elem_info dizisi
-SDO_ORDINATES sdo_ordinate dizisi
şeklindedir.
SDO_GEORASTER yapısı;
-RasterType
sayı
-SpatialExtent SDO_GEOMETRY
-RasteerDataTable varchar(32)
-RasterID
number
-Metadata XMLType
şeklindedir.
Çalışmalarımızda vektörel şekiller kullandığımız için biz de SDO_GEOMETRY tipine
uygun bir şekilde fonksiyonları oluşturduk. Bu fonksiyonlar;
SDO_GEOM.SDO_AREA
Seçilen şeklin alanını ölçer.
SDO_GEOM.SDO_Area(koordinat,0.005) şeklinde bir kullanımı vardır. 0.005 sayısı
ölçüm sonucunun toleransını belirler. Yani 0.005 oranında sapma oluşabilir[7].
48
SDO_GEOM.SDO_DISTANCE
Seçilen iki şekil arasındaki mesafeyi ölçer.
SDO_GEOM.SDO_DİSTANCE(şekil1, şekil2, 0.005) şeklinde bir kullanımı vardır.
SDO_GEOM.SDO_LENGTH
Seçilen şeklin uzunluğunu ölçer.
SDO_GEOM.SDO_LENGTH(şekil1, 0.005) şeklinde bir kullanımı vardır.
SDO_GEOM.SDO_BUFFER
Seçilen şeklin etrafında tampon bir çokgen oluşturur.
SDO_GEOM.SDO_BUFFER(şekil1, 0.005)
SDO_GEOM.SDO_CENTROID
Seçilen bir poligonun merkezini verir.
SDO_GEOM.SDO_CENTROID(şekil1, 0.005)
SDO_GEOM.SDO_DIFFERENCE
Seçilen iki şeklin topolojik farkını başka bir şekil olarak döndürür. (Topolojik farkını
çizer.)
SDO_GEOM.SDO_DIFFERENCE (şekil1, şekil2, 0.005)
SDO_GEOM.SDO_MBR
Seçilen bir şeklin etrafından minimum sınırlayıcı (tampon) dikdörtgen döndürür.
SDO_GEOM.SDO_MBR (şekil1, 0.005)
SDO_GEOM.SDO_ANYINTERACT
Seçilen 2 şeklin herhangi bir etkileşimde bulunup bulunmadığına bakar.
SDO_GEOM.SDO_ANYINTERACT(şekil1, şekil2, ‘mask=ANYINTERACT’, 0.005);
şeklinde kullanımı vardır.
SDO_GEOM.SDO_CONTAINS
Seçilen 2 şekilden birinin diğerini kapsayıp kapsamadığını kontrol eder.
49
SDO_GEOM.SDO_CONTAINS (şekil1, şekil2, ‘mask=CONTAINS’, 0.005); şeklinde
kullanımı vardır.
SDO_GEOM.SDO_COVERS
Seçilen 2 şekilden birinin diğerini kaplama durumunu kontrol eder.
SDO_GEOM.SDO_COVERS (şekil1, şekil2, ‘mask=COVERS’, 0.005); şeklinde bir
kullanımı vardır.
SDO_GEOM.SDO_EQUALS
Seçilen 2 şeklin aynı/denk olup olmadığını kontrol eder.
SDO_GEOM.SDO_EQUALS
(şekil1,
şekil2,
‘mask=EQUALS’,
0.005);
şeklinde
kullanımı vardır.
SDO_GEOM.SDO_INSIDE
Seçilen 2 şeklin birbirinin içinde olup olmadığını kontrol eder.
SDO_GEOM.SDO_INSIDE (şekil1, şekil2, ‘mask=INSIDE’, 0.005); şeklinde kullanımı
vardır.
SDO_GEOM.SDO_ON
Seçilen 2 şekilden birinin diğerinin üzerinde olup olmadığını kontrol eder.
SDO_GEOM.SDO_ON (şekil1, şekil2, ‘mask=ON’, 0.005); şeklinde kullanımı vardır.
SDO_GEOM.SDO_UNION
Seçilen 2 şeklin birleşimini döndürür.
SDO_GEOM.SDO_UNION (şekil1, şekil2, ‘mask=UNION’, 0.005); şeklinde kullanımı
vardır.
SDO_GEOM.SDO_OVERLAPS
Seçilen 2 şeklin üst üste gelme durumunu kontrol eder.
SDO_GEOM.SDO_OVERLAPS (şekil1, şekil2, ‘mask=OVERLAPS’, 0.005); şeklinde
kullanımı vardır.
50
SDO_GEOM.SDO_TOUCH
Seçilen 2 şeklin birbirine dokunup dokunmadığını kontrol eder.
SDO_GEOM.SDO_TOUCH (şekil1, şekil2, ‘mask=TOUCH’, 0.005); şeklinde kullanımı
vardır.
4.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.
Şekil 4.1.Yeni bağlantı oluşturma
Şekil 4.2.Yeni bağlantı bilgileri
51
Ş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.
Şekil 4.3.Sqldeveloper tablo oluşturma
Şekil 4.4.Sqldeveloper veri ekleme
52
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)
)
);
53
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)
)
);
54
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)
)
55
);
Üçü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,
56
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)
);
57
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,
58
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
59
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.
Ş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ç:
Şekil 4.6.MapView’de görüntüleme
60
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.
Şekil 4.7.GeoRaptor yükleme
61
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;
Şekil 4.9.Tüm tabloyu GeoRaptor’a ekleme
62
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;
Ş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;
63
Şekil 4.11.Bölgelerin alanını veren sorgu
2) 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ü.
Şekil 4.12.Nehirlerin alanını veren sorgu
64
3) Nehirlerin uzunluklarını veren sorgu:
select name, SDO_GEOM.SDO_Length(koordinat,0.005) as alan
from multilinenehir;
Şekil 4.13.Nehirlerin uzunluklarını veren sorgu
4) Bölgelerin uzunluklarını veren sorgu: (çevreleri hesaplanıyor)
select name, SDO_GEOM.SDO_Length(koordinat,0.005) as alan
from poligonbolge;
65
Şekil 4.14.Bölgelerin uzunluklarını veren sorgu
5) Ş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;
66
Şekil 4.15.Şehir7 ile diğer şehirler arasındaki mesafeyi hesaplayan sorgu
6) 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.
67
Şekil 4.16. Bölgeler ile şehirlerin birbirini içerme durumlarını ve şehirlerin ortalama
sıcaklıkları ile nüfuslarını veren sorgu
7) 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';
68
Şekil 4.17. Nehir1’in geçtiği bölgeleri veren sorgu
69
5. 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.
70
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-Tufar22052005.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
71
Ö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 : [email protected]
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 : [email protected]
72
Download