Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

POSTGRESQL’DE MEKANSAL SORGULAR

Benzer bir sunumlar


... konulu sunumlar: "POSTGRESQL’DE MEKANSAL SORGULAR"— Sunum transkripti:

1 POSTGRESQL’DE MEKANSAL SORGULAR
KOCAELİ ÜNİVERSİTESİ Bilgisayar Mühendisliği Hazırlayan : Atalay ATAR Danışman : Yrd. Doç. Dr. Ahmet SAYAR

2 MEKANSAL VERİLER - GİRİŞ
Hangi mekansal veriler üzerinden sorgular yapacağız? 1-Kendi mekansal verilerilerimizi oluşturalım. Polygon MultiLineString Point 2-Gerçek mekansal verilerileri inceleyelim. Dünya Haritası Türkiye İller Haritası Türkiya Demir Yolları Türkiya Nehirleri ve Gölleri

3 Kendi Verilerimizi Oluşturalım...
Mekansal Sorgular için PosrtgreSQL’ de 3 tane table oluşturalım. Bunun için mekansal bir veritabanı oluşturmalıyız. Bölgeler table Polygon veri tipinde Nehirler table MultiLineString veri tipinde Şehirler table Point veri tipinde

4 Kendi Verilerimizi Oluşturalım...
1 - ‘‘poligonbolge’’ adında bir table in alan adları ‘name’ varchar ‘koordinat’ geometry CREATE TABLE poligonbolge (name varchar, koordinat geometry); INSERT INTO poligonbolge VALUES ('bolge1', 'POLYGON((-10 10,0 10,0 0,-10 0,-10 10))'), ('bolge2', 'POLYGON((-10 0,0 0,6 -5,0 -10, ,-16 -5,-10 0))'), ('bolge3', 'POLYGON((0 10,10 0,0 0,0 10))'), ('bolge4', 'POLYGON((0 0,10 0,10 -10,0 -10,6 -5,0 0))'), ('bolge5', 'POLYGON((0 10,15 10,15 -5,10 -5,10 0,0 10))');

5 Poligonbolge Table Sorguyu yürüttüğümüzde table oluşuyor ve 5 bölge table a ekleniyor.

6 Poligonbolge Table Görünüş

7 Kendi Verilerimizi Oluşturalım...
2 - ‘‘multilinenehir’’ adında bir table in alan adları ‘name’ varchar ‘koordinat’ geometry CREATE TABLE multilinenehir (name varchar, koordinat geometry); INSERT INTO multilinenehir VALUES ('nehir1', 'MULTILINESTRING((-3 5,-6 1,-8 -4),(-6 1,0 3,3 4))'), ('nehir2', 'MULTILINESTRING((11 6,8 -1,9 7),(8 -1,0 -4,-1 -6))');

8 Multilinenehir Table

9 Kendi Verilerimizi Oluşturalım...
3 - ‘‘noktasehir’’ adında bir table in alan adları ‘name’ varchar ‘isiort’ numeric ‘nufus’ numeric(10) ‘koordinat’ geometry CREATE TABLE noktasehir (name varchar,isiort numeric,nufus numeric(10), koordinat geometry); INSERT INTO noktasehir VALUES ('Sehir1' ,9,650000,'POINT(-9 8)'), ('Sehir2' ,8,530000,'POINT(-6 6)'), ('Sehir3' ,8,700000,'POINT(-3 2)'), ('Sehir4' ,6,450000,'POINT(-4 5)'), ('Sehir5' ,8, ,'POINT(-11 -4)'), ('Sehir6' ,9, ,'POINT(-9 -9)') ('Sehir7' ,9, ,'POINT(-3 -3)'), ('Sehir8' ,10,820000,'POINT(-2 -8)'), ('Sehir9' ,11,930000,'POINT(3 -6)'), ('Sehir10' ,12,640000,'POINT(-5 -5)'),

10 Noktasehir Table

11 Poligonbolge-Multilinenehir-Noktasehir Son Görünüm

12 Mekansal Sorgulara Başlangıç
1- Bölgelerin Alanlarını Hesaplama Poligonbolge (Polygon) 2- Nehirlerin Uzunluklarını Bulma Multilinenehir(Multistring) 3- Şehir7’in diğer şehirlere uzaklıkları Noktasehir(Point) 4- Bölgelerin Yıllık Sıcaklık Ortalaması ve Nüfus Sayısı Poligonbolge - Noktasehir 5- Nehir1 ve Nehir2 hangi bölgelerden geçiyor Poligonbolge - Multilinenehir

13 Bölgelerin Alanlarını Hesaplama
Alan hesabı için ST_AREA fonksiyonunu kullanabilir. Bu fonksiyon geometry veri tipinden bir değişken alır ve geri foat tipinde bir sayı döndürür. float ST_Area(geometry g1); Geometry veri tipi bir polygon veya multipolygon ise alanını hesaplar. Bunlar dışında bir değer ise örneğin point,line gibi hata vermez. Fakat Sıfır döndürür.

14 Bölgelerin Alanlarını Hesaplama Harita Çıktı

15 Nehirlerin Uzunluklarını Bulma
Nehir uzunlukları için ST_Lenght fonksiyonu kullanılır. Bu fonksiyon geometry veri tipinden bir değişken alır ve geri foat tipinde bir sayı döndürür. float ST_Lenght(geometry g1); Bu fonksiyon line, linestring, multilinestring vb. veri tipi dışında bir veri alırsa hata vermez; fakat sıfır döndürür.

16 Şehir7’nin Diğer Şehirlere Olan Uzaklığı
Burada ST_Distance fonksiyonunu kullanıyoruz. Geomtry veri tipinde değişken alır ve float bir değer döndürür. float ST_Distance(geometry g1, geometry g2); Geometry veri tipi herhangi bir tür olabilir. Point – Point, Polygon – Point, Polygon – Line , Linestring – Multi Polygon vb. Aradaki en kısa mesafeyi hesaplar.

17 Şehir7’nin Bazı Şehirlere Olan Uzaklığı Gösterim

18 Bölgelerin Yıllık Sıcaklık Ortalaması ve Nüfus Sayısı
Poligonbolge tablomuzda bölgelerin nüfus bilgisi ve yıllık sıcaklık ortalaması bilgisi yoktur. Bu bilgiler noktasehir tablosunun içindedir. Yapmamız gereken şehirlerin hangi bölgede olduklarını bulup bölgeler için bu bilgileri şehirlerinden almaktır. Hangi şehrin hangi bölgede olduğunu ST_Intersects fonksiyonu ile buluyoruz. boolean ST_Intersects( geometry geomA , geometry geomB ); Geometry tipinde iki veri alır ve geriye true ya da false sonucu dönderirir. Geometrilerin birbirini kapsama ya da kesişme durumunu inceler.

19 Intersects Özellikleri

20 Bölgelerin Yıllık Sıcaklık Ortalaması ve Nüfus Sayısı
Sorgu Analiz Planı

21 Nehir1 ve Nehir2 hangi bölgelerden geçiyor
Nehirlerin hangi bolgelerden geçtiğini ST_Crosses fonksiyonunu kullanarak bulalım. boolean ST_Crosses(geometry g1, geometry g2);

22 Nehir1 ve Nehir2 hangi bölgelerden geçiyor
Sorgu Analiz Planı :

23 Nehir1 ve Nehir2 hangi bölgelerden geçiyor

24 Gerçek Mekansal Veriler
Haritaların shape uzantılı dosya biçiminden PostgreSql’e aktarabiliriz. Postgresql’de ‘Plungins/PSQL console’ tıkladığımızda karşımıza çıkan pencereden yükleme yapabiliriz. Dünya haritası (world table) Türkiye iller haritası (adms table) Türkiye nehirleri (waterlines) Bu haritaları yükleyip sorgularımıza başlamadan görünüşlerini alalım.

25 Dünya Haritası (world)

26 Türkiye İller ve Nehirler Haritası (adms - waterlines)

27 Mekansal Sorgulara Başlangıç
1- Ankara’nın komşularını bulmak 2- İlleri Yüz Ölçümlerine Göre Sıralayalım 3- Ülkelerin Türkiye’ye Olan Uzaklıkları 4- Türkiye’nin komşularının sınır uzunlukları 5- Kızılırmak hangi illerden ne uzunluklarda geçer? 6- Koordinat değerlerini bulma

28 Ankara’nın komşularını bulmak
Komşulukları bulmak için geometrilerin birbirlerine göre durumlarına bakarız. Bunun için ST_Touches fonksiyonu kullanılır.

29 Ankara’nın komşularını bulmak
boolean ST_Touches(geometry g1, geometry g2);

30 İlleri Yüz Ölçümlerine Göre Sıralayalım

31 Ülkelerin Türkiye’ye Olan Uzaklıkları

32 Türkiye’nin komşularının sınır uzunlukları
Ülkeler polygon tipinde tanımlanmıştır. ST_Length fonksiyonu poligonların uzunluklarını sıfır döndürmektedir. Bu yüzden ST_Lenght ve ST_Boundary fonksiyonlarını kullanacağız. geometry ST_Boundary(geometry geomA); Geri geometry tipinde değişken dönderir. Değerin sınır hatlarını belirtir. LineString MulitiPoint Polygon LineString MultiLineString MultiPoint

33 Türkiye’nin komşularının sınır uzunlukları

34 Kızılırmak hangi illerden ne uzunluklarda geçer?
ST_Length ST_Intersects

35 Koordinat değerlerini bulma
ST_AsText(geometry) text ST_AsText(geometry g1); SELECT ST_AsText(' F03F F03F F03F F03 F '); st_astext POLYGON((0 0,0 1,1 1,1 0,0 0)) (1 row)

36 Hangi mekansal fonksiyonları gördük
ST_AREA ST_LENGTH ST_DISTANCE ST_INTERSECTS ST_CROSSES ST_TOUCHES ST_BOUNDARY ST_ASTEXT

37 Kullanılan Yardımcı Programlar
OpenGeo Suite Quantum Gis uDig

38 Kaynakça


"POSTGRESQL’DE MEKANSAL SORGULAR" indir ppt

Benzer bir sunumlar


Google Reklamları