POSTGRESQL’DE MEKANSAL SORGULAR

Slides:



Advertisements
Benzer bir sunumlar
Iletisim Icin : Blog : E - Mail :
Advertisements

PHP ve MYSQL.
Fonksiyonlar.
Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
Bilgisayar Programlama Güz 2011
BPR152 ALGORİTMA VE PROGRAMLAMA - II
PL/SQL üzerinden Web Sayfası üretmek
ATALET(EYLEMSİZLİK) MOMENTİ
VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş
SQL’e Giriş.
SQL de Değişken Tanımlama
SQL Komutlar 5 Sibel SOMYÜREK.
KARTOGRAFİK TASARIM ÜRETİM
Iletisim Icin : Blog : E - Mail :
İndeksler Sibel SOMYÜREK.
VERİ TABANI ve YÖNETİMİ
Oracle Spatial ve Veri Kalitesi Murat HANÇEROĞLU 16 Ocak 2014 TROUG.
Fonksiyonlar Hafta 4.
T-SQL-2.Konu Akış Kontrolleri.
Iletisim Icin : Blog : E - Mail :
BÖLÜM 6 SQL SERVER KOMUTLARI.
Tetikleyici. Nedir? Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır.
SQL (STRUCTURED QUERY LANGUAGE)
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
11 ekim 2011 VTYS –II Dersi. Kalıp İfadelerle Sorgu (Pattern) Eğer bir sözel verinin sadece belli kriterlere uyanlarını seçeceksek sütun_adı LIKE kalıp.
MYSQL 4. HAFTA. mySQL veri türleri INTTamsayı: 'den kadar değişen diziye "signed" (işaretli), 0'dan 'e kadar değişenine.
VIEW lerle çalışmak 11.BÖLÜM.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
SQL Dili ve MySQL Komutları
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 8: Windows Formları
PHP ve MYSQL.
Iletisim Icin : Blog : E - Mail :
PHP ve MYSQL Veritabanı Sunucusu
COĞRAFİ MATEMATİK KONUM
Araç Takip Sistemleri Ramazan ULUÇAY
Görsel Programlama II Ders 5 Öğr.Gör. Mustafa KARABULUT.
ETKİLEŞİMLİ TÜRKİYE APPLETİ
SQL Komutları (2) Uzm. Murat YAZICI.
RAISE RECORD/CURSOR TRIGGER
HARİTALARDA UZUNLUK HESAPLARI
Veri Tabanı Yönetim Sistemleri 2 Ders 2 Oracle 11g Kurulumu
M.Fatih AMASYALI Uzman Sistemler Ders Notları
Yrd. Doç. Dr. Mustafa Akkol
3 Boyutlu Uzay; 2 Üçgen Kesişir mi?
ELİF KORKMAZ İlköğretim Matematik Öğretmenliği
Javascriptte Olay Fonksiyonları (Events)
Bilgisayar Mühendisliği Bölümü
HERE Reality Lens. Reality Lens yüksek özellikleri, sokak düzeyine kadar panoramik görüntü ve yüksek prezisyon Lidar verileri sayesinde bilgisayarınızda.
Mühendislikte Bilgisayar Uygulamaları Mustafa Öztürk.
Yeni Veritabanı Oluşturma
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı Arş. Gör. Pınar CİHAN.
S ORGU / DML / DDL KOMUTLARı İbrahim Onur Sığırcı.
Altıncı hafta. Müfredat programı Ödev teslim edenler Mantıksal tasarım ödevini teslim edenler: Belediye Projesi Valilik Projesi Mekan Projesi Konaklama.
Türkiye'de Internet Konferansı PostgreSQL Veritabanı Sunucusu 8.2 neler getiriyor? Devrim GÜNDÜZ PostgreSQL Geliştiricisi PostgreSQL Kullanıcıları Derneği.
Yapısal Sorgulama Dili SQL Hafta 6 Ders Notu
Dünyanın bilgisine açılan pencere...
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
DÜNYA’YI KEŞFEDİYORUZ
VIEW lerle çalışmak 11.BÖLÜM.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
TETİKLEYİCİLER ve HATA KONTROLÜ
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
VERİ TABANI VE VISUAL STUDIO SQL LOCAL DB(YEREL VERİ TABANINI SAYFAYA BAĞLAMA Savaş TUNÇER.
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
Mekansal Veritabanlarında Hızlı Sorgulama
Sorgu / dml / ddl komutları
HARİTALARDA UZUNLUK ve
Sunum transkripti:

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

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

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

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,-10 -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))');

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

Poligonbolge Table Görünüş

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))');

Multilinenehir Table

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,1600000,'POINT(-11 -4)'), ('Sehir6' ,9,1400000,'POINT(-9 -9)') ('Sehir7' ,9,2200000,'POINT(-3 -3)'), ('Sehir8' ,10,820000,'POINT(-2 -8)'), ('Sehir9' ,11,930000,'POINT(3 -6)'), ('Sehir10' ,12,640000,'POINT(-5 -5)'), ...........................

Noktasehir Table

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

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

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.

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

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.

Ş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.

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

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.

Intersects Özellikleri

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

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);

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

Nehir1 ve Nehir2 hangi bölgelerden geçiyor

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.

Dünya Haritası (world)

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

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

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.

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

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

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

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

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

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

Koordinat değerlerini bulma ST_AsText(geometry) text ST_AsText(geometry g1); SELECT ST_AsText('01030000000100000005000000000000000000 000000000000000000000000000000000000000000000000 F03F000000000000F03F000000000000F03F000000000000F03 F000000000000000000000000000000000000000000000000'); st_astext -------------------------------- POLYGON((0 0,0 1,1 1,1 0,0 0)) (1 row)

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

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

Kaynakça http://www.postgis.org/docs/ http://jaspa.forge.osor.eu/spatial_data.html http://www.mapcruzin.com/free-turkey-arcgis-maps-shapefiles.htm http://www.mapcruzin.com/download-free-arcgis-shapefiles.htm http://revenant.ca/www/postgis/workshop/index.html http://workshops.opengeo.org/postgis-intro/index.html http://workshops.opengeo.org/stack-intro/contents.html