ANALİTİK KARTOGRAFYA Lisansüstü Ders Notu Hazırlayan Yrd.Doç.Dr. İ.Öztuğ BİLDİRİCİ Konya 2004 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ GİRİŞ Bilgisayar teknolojisinin ve bilgisayar grafiğinin ya da bilgisayarın grafik kullanımının kartografyaya çok güçlü bir etkisi olmuştur. “Automated cartography” , “computer aided cartography”, “computer assisted cartography” gibi terimler bu gelişmenin sonucu ortaya çıkmıştır. Bilgisayarın kartografyaya girişi kartografyanın hem kavram hem de uygulama olarak değişmesine neden olmuştur. Bilgisayar ayrıca kartograf olmayanların da harita vb. ürünleri yapmasını kolaylaştırmıştır. Bilgisayar kartografın yardımcısıdır ve onun çevresel birimleri yeni kartografyanın araçlarıdır. Biz bunu “dijital kartografya” olarak tanımlıyoruz. Bu ders dijital kartografya ya da kartografyada sayısal yöntemler gibi isimler de alabilirdi. Morison (1980) bilgisayar destekli kartografyayı üç aşamaya ayırmıştır. • Kartografların bekle gör davranışı gösterdikleri 1960’ların başı • 1960’larla 1970’ler dönemi kartograflar yeni teknolojiyle ilgilenmeye başladılar • 1980’lerin sonu:Yeni teknolojinin tamamen uygulamaya geçmesi Kartografyada bilgisayar çağının başlarında grafik çıkış cihazları gelişmemişti. Nokta vuruşlu yazıcılar grafik çıkış araçları idi. Direkt klavye girişi bile yoktu. Delikli kart sistemi vardı. Monitör ve klavyenin çıkması ile veri giriş çıkışı kolaylaştı.Yazıcılar ve monitörler gelişti. Monitörlerde reflesh teknolojisi animasyonları mümkün kıldı. Tarayıcı (scanner) ve sayısallaştırıcının (digitiz) geliştirilmesi sonucu grafik veri girişi kolaylaştı ve hızlandı. Optik tarayıcılar hardcopy görüntüyü yansıyan ışığın yoğunluğunu ölçerek bir sayısal değerler tablosuna dönüştürür. 1980’lerde microcomputer ve lazer harita teknolojisini bir kez daha değiştirdi. Yeni bir yazılım dalgası başladı. Meslekler arasındaki geleneksel keskin sınırlar bulanıklaşmaya başladı. Kartograflar mekansal gösterim ve analiz konusunda tek uzman değiller hatta en önemli oyuncu da değiller. VERİ MODELİ OLARAK HARİTA Dent (1985) haritayı kültürel ve fiziksel çevrenin grafik gösterimi olarak tanımlamış ve haritanın dokunulabilir olduğunu kabul etmiştir. Görülebilirlik (visibility) ve dokunulabilirlik (tangibility) klasik harita ürünlerinin özelliğidir. Bilgisayar teknolojisi bu kavramlar üzerinde yeniden düşünmemizi gerektirmektedir. Bu noktada haritanın sürekli ya da geçici olma durumu üzerinde düşünülmesi gerekmekte. Kağıt üzerinde basılı bir harita sürekli ve dokunulabilirdir. Yıllarca kullanılır. Bilgisayar ekranında görünen bir harita ise geçicidir. Birinci tip, “real map” ikinci tip “virtual map” olarak da adlandırılır.Ya da kağıt harita, ekran haritası, ya da analog harita, ekran haritası ayrımları yapılmaktadır. En genel anlamda harita bir veri modelidir. Modeller ikiye ayrılır. 1. İkonik modeller: Gerçeğin ölçek olarak küçültülmüş benzeri 2. Sembolik modeller: Gerçeğin yüksek derecede idealize edilmiş gösterimleridir. Örnek: Tematik haritalarda tematik gösterimin altındaki temel harita (base map) ikonik model, tematik layer/layerlar sembolik modeldir. 14.03.2004 2/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ HARİTALAR VE VERİ İŞLEME SİSTEMLERİ Kartografik bilginin işlenmesi genel veri işlemenin (data processing) özel bir uygulamasıdır. Bir veri işleme sistemi, • Veri toplama • Veri depolama • Veri manipulasyonu • Veri kullanımı bileşenlerinden oluşur. Veri manipulasyonu ise giriş, bellek, aritmetik ve kontrol bileşenlerine ayrılabilir. Bu bağlamda klasik harita/analog harita bir veri depolama aracıdır. Kitaplara benzer olarak. Haritalar da manipulasyon açısından hem girdi hem de çıktı olabilirler. KONUMSAL KARTOGRAFİK OBJELER Haritalar sayısal görüntülere uzayın, ya raster ya da vektör veri modeli ile dönüştürülürler. Vektör modelde iki boyutlu uzay, noktaların oluşturduğu sürekli bir kümedir. Raster modelde ise uzay, iki boyutlu kafes olarak adlandırılan noktaların sonlu bir seti ile doldurulmuştur. Uzayın raster olarak düzenlenmesi kafes ya da mozaik (tesellation) modele dayanır. Vektör ve raster modeller arasındaki bir diğer fark • Vektör objeler alanları birbirinden ayıran çizgisel objeleri tanımlar. • Raster objeler, çizgisel objelerle sınırlanan alansal objeleri tanımlar. Başka bir ifade ile • Vektör modelde alan çizgilerle sınırlanır. (Temel eleman çizgi) • Raster modelde çizgiler, alanlar arasındaki kesikliklerle tanımlanır. (Temel eleman alan) Bu yorumlardan vektör modelin noktalar ya da alanları tanımlamadığı sonucu çıkartılmamalıdır. Çünkü bu modelde nokta dejenere olmuş bir çizgi , alan ise kapalı bir çizgi olarak tanımlanabilir. Sıfır Boyutlu Objeler Nokta (point) : İki boyutlu uzayda mutlak bir konumu belirten sıfır boyutlu obje Son Nokta (end point) : Bir boyutlu konumsal bir objenin sona erdiğini belirten tek boyutlu obje Grid noktası (lattice point) boyutlu obje : İki boyutlu uzayın mozaiğinde mutlak bir konum belirten sıfır Bir Boyutlu Objeler Çizgi(line) :İki uç nokta (son nokta) arasında iki boyutlu uzayda kesiksiz bir eğri oluşturan noktaların geometrik yeri Kapalı çizgi (outline) : İki uç noktasının mutlak konumu aynı olan çizgi Doğru Parçası (straight line segment):İki boyutlu uzayda iki uç noktayı birleştiren ve yönü değişmeyen noktaların geometrik yeri Çoklu Doğru (string) : Doğru parçalarından oluşan bir dizi Kapalı Çoklu Doğru (ring) :Halka Tüm bir boyutlu objelerin yönü olabilir ya da yönsüz olabilirler. Yönlerinin olması durumunda uç noktalarının birisi başlangıç noktası diğeri bitiş noktası olarak tanımlanır. 14.03.2004 3/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ Yönlü tek boyutlu objelerde sağ ve sol taraf tanımları da yapılır. İki Boyutlu Objeler Alan (area) :İki boyutlu sürekli bir objenin iç kısmı.İç halkalar içerebilirler. Bölge (region) :Bir ya da daha çok dış kapalı birbirini kesmeyen çizgileri (outline) olan, sıfır ya da daha çok iç kapalı çizgileri (inner outline) olan bir alan Arka plan Bölge(background region):Bir ya da daha çok iç kapalı çizgileri olan sıfır ya da daha çok birbirini kesmeyen dış halkaları olan bölge. Bu bölge diğer tüm bölgelerin kümesinin tamamlayanıdır. Poligon: Bir dış halka ve birbirini kesmeyen sıfır ya da daha çok iç halkadan oluşan bir alan Arka plan Poligon (background polygon):Dış halkası olmayan sıfır ya da daha çok birbirini kesmeyen iç halkaları olan bir alan. Diğer tüm poligonlar kümesinin tamamlayanıdır. Piksel :Düzgün şekilli bir görüntünün bölünemez en küçük iki boyutlu resim elemanı Hücre(cell) :Uzayın düzgün mozaiğinde (raster) bir elemanı temsil eden iki boyutlu obje. Çok kullanılan hücre türleri dörtgenler, kareler, üçgenler ve altıgenlerdir. dörtgen kafes yapı (nokta) çizgi kapalı çizgi doğru parçası çoklu doğru üçgen kafes yapı (nokta) kapalı çoklu doğru Şekil 1: Temel noktasal ve çizgisel obje tipleri 14.03.2004 4/39 Taslak V.0 ANALİTİK KARTOGRAFYA alan (area) arka plan bölge (background region) İ.Öztuğ BİLDİRİCİ bölge (region) poligon arka plan poligon (background polygon) Şekil 2: Alansal objeler TEMEL ANALİTİK GEOMETRİ Kartografın görsel olarak gördüğünü bilgisayarın nümerik olarak görebilmesi için bilgisayarı nasıl programlayabiliriz? Bu sayısal kartografyadan beklenen en temel görevdir. Bu konudaki en önemli yardımcı analitik geometridir. R reel sayılar kümesini temsil ederse R*R (R'nin kendi ile kartezyen çarpımı) ya da R2 iki boyutlu uzayı temsil eder. İki boyutlu uzayda iki koordinat ekseni vardır. X ve Y burada Anglosakson ülkeleri gösterimini esas alarak X yatay Y düşey eksen olarak alınacaktır. Yada X doğu yönünü Y kuzey yönünü göstermektedir. İki boyutlu Öklid uzayında bir nokta iki reel sayı ile (koordinatlar) gösterilir. Nokta P ile gösterilirse (X,Y) reel sayıları P noktasının kartezyen koordinatlarıdır. VEKTÖRLER VE MATRİSLER Bir vektör bir orijin noktasından çıkan n boyutlu bir güç olarak tanımlanabilir. Yönü ve sabit uzunluğu ya da boyutu vardır. Vektörler, nümerik olarak koordinat eksenlerine izdüşümleriyle ifade edilirler. X X 2 − X1 Y = Y − Y 2 1 (1) Düzlemde herhangi bir nokta başlangıç ve bitim noktası aynı olan vektör ile tanımlanır. Sıfır vektörü olarak da tanımlanabilir. Vektör uzunluğu: a = X 2 +Y2 (2) İki vektör arasındaki uzaklık: 14.03.2004 5/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ p−q = ( X 1 − X 2 )2 + (Y1 − Y2 )2 (3) Normal vektör uzunluğu 1 olan vektördür. Boyutları aynı olan iki vektör çarpılabilir. Çarpım sonucu skaler olan çarpım iç çarpım olarak adlandırılır. a( X 1 , Y1 ) b( X 2 , Y2 ) ise ab = X 1 X 2 + Y1Y2 İki vektör arasındaki iç çarpım aralarındaki açı ile de ilişkilidir. a.b = a b cosϕ cos ϕ = (4) a.b ab (5) Bir matris sayılardan oluşan dikdörtgen bir dizidir. Genel yazım tarzı olarak, a a A = 11 12 a21 a22 (6) m satır n sütun sayısını göstermek üzere matrisler m*n boyutludur. • Boyutları aynı olan matrisler toplanabilir ya da çıkartılabilir. • A.B matris çarpımının var olabilmesi için A'nın sütun sayısı B'nin satır sayısına eşit olmalıdır. • A.B tanımlı iken B.A da tanımlı olsa A.B≠B.A • Sıfır matris: Tüm elemanları sıfır olan matris. • Kare matris: Satır ve sütun sayısı eşit olan matris • Birim matris: Kare, köşegen elemanları 1, diğer elemanları sıfır olan matris y y2 y1 q p x x1 x2 Şekil 3: Koordinat sistemi 14.03.2004 6/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ HOMOJEN KOORDİNATLAR VE DÖNÜŞÜMLER Homojen koordinatlar, kartezyen koordinatların bir boyut artırılmış biçimidir. İki boyutlu uzayda P(x,y) noktasının homojen koordinatları P(hx, hy,h) şeklinde tanımlıdır. Burada h sıfırdan farklı bir skalerdir. Herhangi bir iki boyutlu (x,y) vektörü h=1 alınarak (x,y,1) şeklinde homojen vektöre dönüştürülebilir. Homojen koordinatlar öteleme,döndürme ve ölçekleme gibi dönüşümler için gereklidirler. Her bir dönüşüm orijinal noktadan (x,y) yeni bir nokta (x' , y' ) elde edilmesini sağlar. Öteleme koordinat sisteminin orijininin değiştirilmesi için kullanılır. Orijin seçimi keyfi olduğundan değiştirilmesi gerekebilir. Öteleme dönüşümü: x' = x + T X (7) y ' = y + TY şeklinde tanımlıdır. Matris normunda: [x ′ y ′ 1] = [x 1 y 1] 0 T X 0 0 1 0 1 TY (8) Dönme dönüşümü koordinat sisteminin orijin etrafında saat ibresinin tersi yönünde θ açısı kadar dönmesini sağlar. x' = x cos θ + y sin θ (9) y ' = − x sin θ + y cosθ Matris yazımı: [x ′ y ′ 1] = [x cos ϕ y 1] sin ϕ 0 − sin ϕ cos ϕ 0 0 0 1 Öteleme ve döndürme iki boyutlu uzayda iki nokta arasındaki uzaklığı korur. Ölçekleme dönüşümü ile koordinat sisteminin birim uzaklığı değiştirilir. Ölçekleme dönüşümü: x' = S X x (10) y ' = SY y Matris yazımı: [x ′ y ′ 1] = [x S X y 1] 0 0 0 SY 0 0 0 1 (11) Dönüşümlerin arka arkaya yapılması gerekebilir. Bu bakımdan dönüşümlerin matris biçiminde yazılması yararlıdır. Bu şekilde istenen sırada dönüşüm matrisleri çarpılarak tüm dönüşümü tanımlayan tek bir matris belirlenebilir. Dönüşümlerin sırası matris çarpımının değişim özelliği olmadığından dolayı önemlidir. T öteleme S ölçekleme matrisi olsun. C = T .S şeklinde bir dönüşüm matrisi 14.03.2004 7/39 Taslak V.0 ANALİTİK KARTOGRAFYA 1 0 TX 0 1 TY İ.Öztuğ BİLDİRİCİ 0 S X 0 0 1 0 0 S X 0 = 0 1 TX S X 0 SY 0 0 SY TY SY 0 0 1 C = S .T ise S X 0 0 0 SY 0 0 1 0 0 1 TX 0 S X 0 = 0 1 TX 0 1 TY 0 SY TY 0 0 1 görüldüğü gibi elde edilen dönüşüm matrisleri farklıdır. NOKTA VE ÇİZGİ İLİŞKİLERİ R2 uzayında bir doğrunun denklemi Ax + By + C = 0 (12) vektör formunda; A B [x C y 1] = 0 (13) A,B,C skaler sayılar olup doğrunun konumsal özelliklerini tanımlarlar. Doğrunun eğimi m= −A dir. B b= −C B y = mx + b (14) şeklinde de doğru denklemi yazılabilir. Birinci yazış şekli programlama açısından daha kullanışlıdır. Çünkü B = 0 olması durumunda da doğru tanımlı olur. p(x1 , y1 ) ve q( x2 , y2 ) noktalarından geçen doğru denkleminde parametreler A Y1 − Y2 B = X − X 2 1 C Y2 X 1 − Y1 X 2 (15) benzer şekilde q'dan p'ye doğru denklemi A Y2 − Y1 B = X − X 1 2 C Y1 X 2 − Y2 X 1 (16) −A r doğrunun eğimini, ( A2 + B 2 )1 / 2 ise pq vektörünün büyüklüğünü verir. B C ise p ve q vektörlerinin oluşturduğu paralel kenarın alanına eşittir. 14.03.2004 8/39 Taslak V.0 ANALİTİK KARTOGRAFYA p İ.Öztuğ BİLDİRİCİ q Normlaştırılmış doğru denklemi, 2 2 A' A / A + B B ' = B / A2 + B 2 2 2 C ' C / A + B (17) Düzlemde t ( xt , yt ) noktasının bir doğruya göre konumu, S = Axt + Byt + C (18) den hesaplanan S skaler sayısı ile tanımlıdır. • S<0 ise t doğrunun saat ibresi yarım düzleminde (sağında) • S>0 ise t doğrunun saat ibresi tersi yarım düzleminde (solunda) t noktasından L doğrusuna inilen dikin boyu ise, d = S / A2 + B 2 (19) L doğrusuna paralel olan bir L' doğrusu üzerinde bulunan tüm noktaları için hesaplanacak S değeri aynıdır. L ve L' paralel ise, L için AX + BY + C = 0 L' için A′X + B ′Y + C ′ = 0 L' üzerinde bulunan noktalar için hesaplanacak tüm S değerleri, S = C − C' (20) olur. Eğer birbirine paralel iki doğru normlaştırılırsa; aralarındaki uzaklık, d = C − C' (21) olur. p ve q noktalarından geçen doğru parçasının orta noktası r ise, 14.03.2004 9/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ Xr ( X 1 + X 2) / 2 Yr = (Y 1 + Y 2) / 2 (22) p ve q noktalarından geçen doğrunun orta dikmesi q orta dikmenin sağ tarafında kalıyorsa A X 1 − X 2 B = Y 1 − Y 2 C [( X 2 2 + Y 2 2 ) − ( X 1 2 + Y 1 2 )]1 / 2 (23) İKİ DOĞRUNUN KESİŞİMİ Birinci doğru: Ax + By + C = 0 , İkinci doğru: Ex + Fy + G = 0 ise Xi (GB − FG ) /( FA − EB) Yi = (CE − AG ) /( FA − EB) (24) Eğer doğrular paralel ise FA − EB = 0 olur ve kesişim mevcut değildir. İki doğrunun değil de iki doğru parçasının kesişiminin olup olmadığı araştırılmak istenirse bazı problemler ortaya çıkar. Eğer lineer denklem formu ile çözüm yapılırsa önce kesişim noktası hesaplanır sonra bu noktanın her iki doğru parçasının da içinde olup olmadığı araştırılır. Bu durumda pek çok özel durum ortaya çıkabilir. Bunun yerine şu yöntem izlenebilir: ( Birinci doğru parçası i ( xi , yi ) − j x j , y j İkinci doğru parçası ) k ( xk , yk ) − l ( xl , yl ) 1. d = (x j − xi )( yk − yl ) − ( y j − yi )( xk − xl ) 2. d = 0 ise paraleldir, kesişim yoktur. Değilse, 3. p1 = 4. p2 = 5. 0 ≤ p1 ≤ 1 ve 0 ≤ p2 ≤ 1 ise kesişim doğru parçaları üzerindedir. (xk − xl )( yi − yk ) − ( yk − yl )(xi − xk ) d (xi − xk )( y j − yi ) − ( yi − yk )(x j − xi ) d 6. Kesişim noktasının koordinatları aşağıdaki gibi hesaplanır. xs = xi + p1 (x j − xi ) ys = yi + p1 ( y j − yi ) Kesişim Probleminin İrdelenmesi 1. Programlama tekniği açısından düşünülürse değişkenler için hangi tipin tanımlandığı önemlidir. Double tipi (8 byte) seçildiğinde ondalık noktanın nerede olduğundan bağımsız olarak 14 rakam anlamlıdır. Sekiz değişik double değişkenden hesaplanan d değerinin tam olarak sıfır olması beklenemez. Bu durumda bir hesap hassasiyeti belirlenerek (örneğin 10-5) onunla karar vermek gerekir. If d = 0.0 yerine if abs ( d ) < 1e − 5 yazılmalıdır. Çünkü d = 0 şartının tam olarak sağlanması genellikle mümkün değildir. 14.03.2004 10/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ 2. Bazen sadece kesişimin var olup olmadığı önemlidir. Bu durumda p1 ve p2 kontrol edilir. Kesişim noktasının koordinatları hesaplanmaz. 3. p1 ve p2 'nin kontrolünde (yine bunlar double olduğundan) sayısallaştırma hatalarının olduğu da varsayılarak bir tolerans gerekebilir. ε tolerans değeri olmak üzere − ε ≤ p1 ≤ 1 + ε − ε ≤ p2 ≤ 1 + ε şeklinde koşullar yazılabilir. Ancak p1 ve p2 birimsiz (orantı) olduğundan seçilecek tolerans değerinin belirlenmesi sorun olabilir. 4. p1 ve p2 geometrik anlamı biraz daha irdelenirse, p1 = 0 ise kesişim noktası i noktası ile çakışık p1 = 1 ise kesişim noktası j noktası ile çakışık p2 = 0 ise kesişim noktası k noktası ile çakışık p2 = 1 ise kesişim noktası l noktası ile çakışık İki Doğrunun Kesişiminde Bisektör Denklemi R A'+ E ' S = B'+ F ' T C '+G ' (25) A', B', C' değerleri normlaştırılmış değerlerdir. Yani A A′ = A2 + B 2 B′ = B A2 + B 2 C′ = C A2 + B 2 (26) UZUNLUK VE ALAN HESABI Bir çizginin uzunluğu, çizgiyi oluşturan doğru parçalarının toplamıdır. Eğer çizgi kapalı bir şekil oluşturuyorsa uzunluğu kapalı şeklin çevresine eşittir. n [ l = ∑ ( xi +1 − xi ) 2 + ( yi +1 − yi ) 2 ] 1/ 2 (27) i =1 Kapalı poligonun alanı f = 1 n ∑ ( xi yi +1 − xi +1 yi ) 2 i =1 (28) Alan hesabında poligon noktalarının yönü önemlidir. Noktalar saat ibresi yönünde ise alan pozitif çıkar. Birden çok kapalı çizgiden oluşan poligonlarda dıştaki kapalı çizginin yönü saat ibresi yönünde, içtekilerin yönü ters ise iç alan negatif çıkacağından toplam alan doğru olarak çıkar. Bir kafes yapıda toplam alanın bulunması gerekirse: 1 2 Birim alan sayısı = b + c − 1 b: Poligon üzerinde bulunan grid noktaları sayısı c: İç bölgede kalan grid noktası sayısı 14.03.2004 11/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ DÖNÜŞÜMLER Bu bölümde iki boyutlu bir (u, v ) sisteminden, ( x, y ) sistemine dönüşüm yöntemleri irdelenecektir. Dönüşümün genel ifadesi aşağıdaki gibidir: x = f (u, v) y = g (u , v) (29) Burada f ve g fonksiyonları belirlenmelidir. AFİN DÖNÜŞÜM İki değişkenli polinomların özel bir hali olan afin dönüşüm aşağıdaki gibi tanımlanır. x = a0 + a1u + a2v (30) y = a3 + a4u + a5v Çözüm için 6 katsayının belirlenmesi gerekir bu da en az 3 ortak nokta olması durumunda mümkündür. İki sistemde koordinatları bilinen noktalar için afin dönüşüm eşitlikleri yazılırsa bir lineer denklem sistemi oluşur. Denklem sistemi açık olarak, x1 = a0 + a1u1 + a2v1 y1 = a3 + a4u1 + a5v1 ... xn = a0 + a1un + a2vn (31) yn = a3 + a4un + a5vn Matris yazımı ile, x1 1 u1 y 0 0 1 . . . = . . . xn 1 un yn 0 0 v1 0 . . vn 0 0 0 1 u1 . . . . 0 0 1 un 0 a0 v1 a1 . . . . 0 . vn a5 (32) L = Ax Bu sistemde bilinmeyenler katsayılardır. n=3 ise lineer denklem sistemi çözülerek katsayılar bulunur. n>3 ise sistem dengelemeli çözülebilir. Bu amaçla, L + v = Ax sisteminin çözümü yapılır. HELMERT DÖNÜŞÜMÜ x = a0u + a1v + a2 (33) y = −a1u + a0v + a3 14.03.2004 12/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ Dört katsayının belirlenmesi gerekir. Bunun için en az iki ortak nokta bilinmeli. Denklem sistemi, x1 u1 y v 1 1 . . = . . x n u n y n v n 1 0 0 1 a0 . . a1 . . a 2 1 0 a 3 0 1 v1 − u1 . . vn − un (34) n>2 ise L + v = A x şeklinde dengelemeli çözüm yapılır. PROJEKTİF DÖNÜŞÜM x= a1u + a2v + a3 a u + a5v + a6 y= 4 a7u + a8v + a9 a7u + a8v + a9 (35) Sistemin çözümü için a9 = 1 seçilmelidir. Aksi halde homojen denklem sistemi oluşur ve çözüm keyfi olur. Denklem sistemi, x = a1u + a2v + a3 − a7ux − a8vx (36) y = a4u + a5v + a6 − a7uy − a8vy sekiz katsayının belirlenebilmesi için en az 4 ortak nokta gereklidir. Matris formunda u1 x1 y 0 1 . ... = . xn u yn n 0 v1 1 0 0 0 − u1 x1 0 . . 0 . . u1 . . v1 . . 1 . . − u1 y1 . . un 0 1 0 0 0 X n Yn 0 − un xn 1 − u n yn a1 − v1 x1 . − v1 y1 . . . . . − vn xn . − vn yn . a8 (37) POLİNOM DÖNÜŞÜMLERİ Bilineer Dönüşüm x = a1u + a2v + a3uv + a4 (38) y = a5u + a6v + a7uv + a8 14.03.2004 13/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ Sekiz bilinmeyen var yine 4 nokta gereklidir. Bu dönüşüm ikinci derece polinom dönüşümünde kareli terimlerin atılmış halidir. Hiperbol denklemi olduğundan hiperbolik dönüşüm olarak adlandırılabilir. Uzaktan algılamada uydu görüntülerinin rektifiye edilmesinde iyi sonuçlar verdiği bilinmektedir. Bir kare ağına uygulandığında aşağıdaki gibi bir şekil bozulmasına neden olur. Ya da bu şekilde deforme olduğu bilinen bir ağın eski haline getirilmesini sağlar. Denklem sistemi matris formunda yazılırsa x1 u1 y 0 1 . . = . . xn un yn 0 v1 u1v1 0 . . vn 0 1 0 0 0 0 . . 0 u1 . . . . v1 . . u1v1 . . unvn 0 1 0 0 un 0 vn 0 unvn a1 0 a2 1 . . . . . 0 . 1 . a8 (39) L + v = A x şeklinde dengeleme modeli oluşur. Eğer sadece 4 nokta varsa sistemin çözümü −1 L = A x ve A L = x şeklinde bilinmeyenler bulunur. İkinci Derece Polinom Dönüşümü x = a1u 2 + a2u + a3v 2 + a4v + a5uv + a6 y = a7u 2 + a8u + a9v 2 + a10v + a11uv + a12 (40) Burada 12 katsayı bilinmeyen olup 6 ortak nokta gerekir. Matris formunda denklem sistemi: 14.03.2004 14/39 Taslak V.0 ANALİTİK KARTOGRAFYA x1 u12 y 1 0 x2 . y2 = . . . . . x u 2 n n yn 0 İ.Öztuğ BİLDİRİCİ 2 u1 0 . . v1 0 . . v1 0 . . u1v1 0 . . 1 0 2 0 u1 . . . . 0 u1 . . 0 2 v1 . . 0 v1 . . 0 u1v1 . . . . un 0 . . . . vn 0 . . un vn 0 . . . . 1 0 2 0 un . . 0 un . . 0 2 vn . . 0 vn . . 0 un vn 2 vn 0 a1 a 2 0 . 1 . . . . . . . . . 0 . 1 . . a12 (41) N. Dereceden Polinomun Genel İfadesi n n f (u, v ) = ∑∑ aij u i v j ⇔ i + j ≤ n (42) i=0 j =0 Polinomların dönüşümlerde kullanılması durumunda iki ayrı polinom tanımlanması gerekir. (u,v) birinci sistem (x,y) ikinci sistem ise, n n n n x = ∑∑ aij u i v j y = ∑∑ bij u i v j i =0 j =0 (43) i =0 j =0 şeklinde iki polinom ile dönüşüm yapılabilir. Bu yazım tarzına göre n=2 alınırsa, x = a00 + a10u + a01v + a20u 2 + a02v 2 + a11uv y = b00 + b10u + b01v + b20u 2 + b02v 2 + b11uv (44) Bu şekilde tanımlanan polinomlara bivaryant polinomlar da denir. i + j ≤ n koşulu uygulanmaz ise polinomun terim sayısı artar. Bu şekilde elde edilen polinomlar, katsayıların hızla artması nedeniyle ikinci ve üçüncü derecede uygulanabilirler, bikuadrik (ikinci derece) ve bikübik (üçüncü derece) polinomlar olarak tanımlanırlar. Bu tür polinomlara genel olarak bipolinom da denilmektedir. Bivaryant polinomlar için polinom derecesi ile katsayı adedi arasında, N katsayı adedi, n polinom derecesini göstermek üzere aşağıdaki ilişki vardır. 1 N = (2 + n)(1 + n) 2 (45) Bipolinomlar için, N = (n + 1) 2 (46) 3 Boyutlu Dönüşümler İçin n.Dereceden Polinom 3 boyutlu dönüşümler için kullanılacak 3 değişkenli polinomun genel ifadesi n n n f (t , v, u ) = ∑∑∑ aijk u i v it i i + j + k ≤ n (47) i =0 j =0 k =0 14.03.2004 15/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ n = 2 alınırsa; f (u , v, t ) = a000 + a100u + a200u 2 + a110uv + a101ut + a010v + a020v 2 + a011vt + a001t + a002t 2 (u,v,t) sisteminden (x,y,z) sistemine dönüşüm için 3 polinom gerekir. x = f (u , v, t ) y = g (u , v, t ) z = h(u , v, t ) DÖNÜŞÜMLERDE RADYAL BAZLI FONKSİYONLAR İki koordinat sistemini birbirine dönüştüren eşitlikler kesin olarak bilinmiyorsa, ortak noktaları kullanarak nümerik olarak bir fonksiyon belirlenebilir. Koordinat dönüşümlerin kullanımı oldukça yeni olan radyal bazlı fonksiyonlar (RBF) ailesinden burada üç fonksiyon incelenecektir: multikuadrik (MQ) ters multikuadrik (RMQ) ve thin plate spline (TPS). Bu fonksiyonların pek çok kullanım alanı vardır. Ancak koordinat dönüşümleri dışında sayısal arazi modeli uygulamalarında da ve yine bir tür koordinat dönüşümü olan uydu görüntülerinin rektifikasyonunda kullanılırlar. En genel anlamda bu RBF’ler verilen nokta kümesine bir yüzey uydurmak için kullanılır. Aşağıda iki boyutlu dönüşümlerde her üç fonksiyonun uygulaması ayrıntılı olarak verilecektir. MQ Fonksiyonu R.L. Hardy tarafından ilk kez 1971 yılında yayınlanmış olan multikuadrik fonksiyon verilen noktalardan geçen bir yüzey tanımlar. n f ( x, y ) = ∑ C i i =1 (x − xi )2 + ( y − yi )2 + ∆2 (48) Multikuadrik yüzey geometrik olarak düşünülürse hiperboloid yüzeylerin toplamı olarak tanımlanabilir. Fonksiyonlardaki ∆2 parametresi sıfır seçilirse, yüzeyin geometrik anlamı koni yüzeyleri toplamı olarak değişir. İki koordinat sistemi arasındaki dönüşüm için iki fonksiyona ihtiyaç vardır. n x = f (u , v ) = ∑ C xi i =1 n y = f (u , v ) = ∑ C y i i =1 (u − ui )2 + (v − vi )2 + ∆2 (49) (u − ui )2 + (v − vi )2 + ∆2 Bazı uygulamada ∆2 = 0 alınmaktadır. Bu parametrenin alacağı değer tüm noktalar için sabit olup bu konuya aşağıda tekrar değinilecektir. Burada Cxi ve Cyi katsayıları bilinmeyenlerdir. Bunların bulunabilmesi için; x1 = C x1 (u1 − u1 ) 2 + (v1 − v1 ) 2 + ∆2 + C x 2 (u1 − u2 ) 2 + (v1 − v2 ) 2 + ∆2 + ...C x n (u1 − un ) 2 + (v1 − vn ) 2 + ∆2 x2 = C x1 (u2 − u1 ) 2 + (v2 − v1 ) 2 + ∆2 + C x 2 (u2 − u2 ) 2 + (v2 − v2 ) 2 + ∆2 + ...C x n (u2 − un ) 2 + (v2 − vn ) 2 + ∆2 ... şeklindeki lineer denklem sistemi çözülmelidir. Matris formunda, 14.03.2004 16/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ ∆ 2 (u 2 − u1 ) + (v2 − v1 ) 2 + ∆2 A= . . (u1 − u 2 ) 2 + (v1 − v2 ) 2 + ∆2 (u1 − u3 ) 2 + (v1 − v3 ) 2 + ∆2 . ∆ . . . . . . . . aij ∈ A ⇒ aij = (ui − u j ) 2 + (vi − v j ) 2 + ∆2 −1 (50) −1 (51) x = AC x ⇒ A x = C x benzer şekilde, y = AC y ⇒ A y = C y Bu şekilde ortak nokta sayısı kadar Cx ve Cy katsayıları elde edilir. Sistemin çözümünde tüm ortak noktalar kullanıldığından dengelemeli çözümü yoktur. Başka bir deyişle oluşan katsayılara her ortak noktanın etkisi vardır. Oluşan yüzey her ortak noktadan geçer. Multikuadrik fonksiyonun en yaygın kullanım alanı sayısal arazi modelidir. x, y, z nokta koordinatları olmak üzere n z = ∑ Ci ( x − xi ) 2 + ( y − yi ) 2 + ∆2 (52) i =1 şeklinde örnekleme noktalarından geçen bir yüzey tanımlanır. Bu şekilde herhangi bir (x,y)’ye karşılık gelen z değeri bulunur. MQ fonksiyonunun kartografyada uygulaması ile ilgili olarak bkz Bildirici [2003], İpbüker v.d [2003], İpbüker & Bildirici [2002] ∆2 Parametresinin belirlenmesi ∆2 parametresinin alacağı değer konusunda literatürde çok sayıda tartışma vardır. Bu konudaki önerileriler ve uygulamalar, MQ fonksiyonunu bulan bilim adamı Hardy fonksiyonun kullanım alanlarını kapsamlı bir şekilde özetlediği makalesinde bulunabilir [Hardy 1990]. Burada uygulamaların özelliğine göre değişmeyen Schul’min ve Mittel’man tarafından önerilen eşitliğin verilmesi yeterli görülmüştür. ∑∑ [(x n ∆ = 2 n i =1 j =1 − x j ) + (yi − y j ) 2 i 2 ] (53) n(n − 1) Bu parametre yüzeyin yumuşaklığını belirlemektedir. Sıfır alınması durumunda yüzey en sert durumda olmaktadır. Değer büyüdükçe yüzeyin yumuşaklığı artmaktadır. Ancak ∆2 koordinat değerlerine bağlı olarak çok fazla arttırılamaz. Belli bir değeri aştığı zaman A matrisinin kondisyonu bozulur ve katsayılar hesaplanamaz. ∆2 nin sıfır alınması durumunda ise matrisin köşegenleri sıfır olmaktadır. Bu durum matris inversi alınırken dikkate alınmalıdır. A matrisi köşegen kare bir matris olup, inversi her zaman mevcuttur. Ancak iki kontrol noktasının koordinatının aynı olması durumunda inversi alınamaz. 3 Boyutlu multikuadrik dönüşüm (u,v,t) birinci sistem (x,y,z) ikinci sistem olmak üzere 14.03.2004 17/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ n x = f1 (u , v, t ) = ∑ c xi (u − ui ) 2 + (v − vi ) 2 + (t − ti ) 2 + ∆2 i =1 n y = f 2 (u , v, t ) = ∑ c yi (u − ui ) 2 + (v − vi ) 2 + (t − t i ) 2 + ∆2 (54) i =1 n z = f 3 (u , v, t ) = ∑ c zi (u − ui ) 2 + (v − vi ) 2 + (t − t i ) 2 + ∆2 i =1 sistemin çözümü, ( ∆2 = 0 alınarak) aij = (ui − u j ) 2 + (vi − v j ) 2 + (t i − t j ) 2 aij ∈ A (55) olmak üzere 3 lineer denklem sistemi oluşur. x = Ac x y = Ac y z = Ac z (56) buradan , −1 −1 −1 A y = cy A z = cz A x = cx (57) çözümleri yapılarak, katsayı vektörleri bulunur. RMQ Fonksiyonu RMQ (Reciprocal Multiquadric) fonksiyonu MQ fonksiyonunun tersidir. İki koordinat sistemi arasında iki boyutlu dönüşümde kullanımı: n x = f (u, v ) = ∑ C xi i =1 1 (u − ui )2 + (v − vi )2 + ∆2 n y = f (u, v ) = ∑ C y i i =1 (58) 1 (u − ui ) + (v − vi )2 + ∆2 2 Burada katsayıların bulunması ve ∆2 nin belirlenmesi MQ fonksiyonunda anlatıldığı gibidir. Ancak burada ∆2 sıfır alınamaz. TPS Fonksiyonu RBF ailesinin diğer bir fonksiyonu da TPS fonksiyonudur. TPS in en önemli özelliği “enerjiyi minimize eden” bir yüzey olmasıdır. Bunun anlamı yüzeyin MQ ve RMQ yüzeylerine göre daha yumuşak olmasıdır. TPS fonksiyonu, ri 2 = (u − ui ) + (v − vi ) 2 2 olmak üzere, n f (u , v ) = ∑ ci ri 2 lnri 2 (59) i =1 şeklinde tanımlıdır. (u,v) koordinat sisteminden (x,y) koordinat sistemine dönüşüm için ki adet fonksiyon tanımlanmalıdır. 14.03.2004 18/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ n x = ∑ c xi ri 2 lnri 2 i =1 n y = ∑ c yi ri lnri 2 (60) 2 i =1 katsayıların belirlenmesi MQ çözümünde anlatıldığı gibidir. MQ ve RMQ fonksiyonlarındaki gibi bir parametre ( ∆2 ) burada söz konusu değildir. Logaritma özelliği gereği, n x = ∑ c xi ri 2 lnri i =1 n (61) y = ∑ c yi ri lnri 2 i =1 şeklinde de fonksiyonlar yazılabilir. Bu durumda katsayılar iki kat büyük çıkar. Ancak A matrisinin elemanları (bkz MQ çözümü) daha küçük olacağından oluşan lineer denklem sistemi daha kararlı olur, A matrisinin kondisyonu daha iyi olur. NEWTON-RAPSON İTERASYONU Bazı eşitliklerde bir değişkeni eşitliğin bir tarafına çekip diğer değişkenlere göre değerini hesaplamak mümkün olmaz. Örneğin 2t − sin t = π sin ϕ Burada t biliniyorken ϕ ’nin değerini hesaplamak mümkündür. Ama ϕ biliniyorken t nin değerini hesaplamak cebirsel işlemlerle mümkün değildir. Böyle durumlarda iterasyon yapılması gerekir. NEWTON-RAPSON İTERASYON METODU: f(x)=0 şeklinde bir fonksiyon tanımlı olsun. x’in değerini iterasyonla bulmak için xi +1 = xi − f ( xi ) f ' ( xi ) formülü kullanılır. İterasyona f ' ( x) = df ( x) dx (62) f ( xi ) terimi yeterince küçük oluncaya kadar devam edilir. Burada xi f ' ( xi ) başlangıç değeri, olması gerekene oldukça yakın seçilmeye çalışılırsa iterasyon çabuk sona erer. Başka bir deyişle f ( xi ) terimi çabuk küçülür. f ' ( xi ) ÖRNEK: 2t − sin t = π sin ϕ f (t ) = 2t − sin t − π sin ϕ = 0 df (t ) = 2 − cos t dt t nin başlangıç değeri 14.03.2004 19/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ 2t − sin t = π sin ϕ t= π 2 sin ϕ alınabilir. ti +1 = ti − 2ti − sin ti − π sin ϕ 2 − cos ti VB kodu olarak Dim Phi as double,t as double,dt as double Dim Pi as double Pi=2*asin(1) t= Pi*sin(Phi)/2 Do while dt<1 e –8 Dt=(2*t – sin(t)-Pi *sin(Phi)/(2- cos(t)) T=t- dt Loop BİRDEN ÇOK FONKSİYON OLMASI DURUMUNDA NEWTON-RAPSON İTERASYONU x = f1 (u, v) y = f 2 (u, v) fonksiyonları tanımlı iken, bunların ters fonksiyonları, u = g1 ( x, y ) v = g 2 ( x, y ) aranıyor olsun. Fonksiyonların karmaşıklığına bağlı olarak g1 ( x, y ) ve g 2 ( x, y ) fonksiyonlarını cebirsel olarak bulmak mümkün olmayabilir. Örneğin harita projeksiyonlarında, projeksiyon düzleminde kartezyen koordinatlar ile küre üzerinde coğrafi koordinatlar arasında x = f1 (ϕ , λ ) (63) y = f 2 (ϕ , λ ) fonksiyonları tanımlıdır. Bu düz dönüşüm (forward transformation) olarak da adlandırılır. Ancak bazı projeksiyonlar için bu fonksiyonların tersleri, ϕ = g1 ( x, y ) λ = g 2 ( x, y ) (64) analitik olarak bulunamaz. Bu ters dönüşüm (inverse transformation) olark adlandırılır. Burada da Newton-Rapson iterasyonu jakobien matrisler yardımıyla uygulanabilir. x = f1 (u, v) y = f 2 (u, v) (65) olsun. Buradan sıfıra eşit bir fonksiyon vektörü , f (u, v) − x F= 1 =0 f 2 (u , v) − y (66) şeklinde tanımlanabilir. Buna bağlı olarak jacobien matris, 14.03.2004 20/39 Taslak V.0 ANALİTİK KARTOGRAFYA ∂f1 J = ∂u ∂f 2 ∂u İ.Öztuğ BİLDİRİCİ ∂f1 ∂v ∂f 2 ∂v (67) şeklinde tanımlıdır. Aranan büyüklükleri tanımlayan vektör ; u −1 x = olmak üzere iterasyon, x i +1 = x i − J F v (61) şeklinde tanımlanabilir. Daha açık yazılması gerekirse, ∂f1 ui +1 ui ( ∂u )u i v = v − ∂f i +1 i ( 2 ) v ∂u i ∂f1 )v ∂v i f1 (ui , vi ) − x ∂f ( 2 )v i f 2 (ui , vi ) − y ∂v ( (68) Burada ui ve vi için yaklaşık olarak bir başlangıç değeri seçmek gerekir. Seçilen değer aranan değere ne kadar yaklaşık ise iterasyon o kadar kısa sürer. ε 1 −1 ∆F = J F olmak üzere ∆F ≤ ε = ε 2 İterasyona ε1 ≤ 10−8 ε 2 ≤ 10 −8 oluncaya kadar devam edilebilir. Buradaki 10-8 değeri aranan hassasiyete göre sıfıra yakın bir değer olarak seçilir. ÖRNEK PROBLEM: WINKEL TRIPEL PROJEKSİYONU Projeksiyon eşitlikleri 1 2D λ cos ϕ sin + λ cos ϕ 0 ) x= ( 2 C 2 (69) 1 D sin ϕ + ϕ ) y= ( 2 C (70) λ D = arccos(cos ϕ cos ) 2 C = 1 − cos 2 ϕ cos 2 (71) λ (72) 2 ϕ 0 = 50o 28' Ters projeksiyon eşitlikleri Analitik ters projeksiyon eşitlikleri mevcut değildir. Projeksiyon eşitlikleri çok karmaşık olduğundan ters projeksiyon Newton-Rapson iterasyonu ile mümkündür. 1 2D λ cos ϕ sin + λ cos ϕ 0 ) − x = 0 f1 (ϕ , λ ) = ( 2 C 2 1 2D λ cos ϕ sin + λ cos ϕ 0 ) − y = 0 f 2 (ϕ , λ ) = ( 2 C 2 (73) olmak üzere, 14.03.2004 21/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ ∂f1 sin λ sin 2ϕ λ D = − 3 / 2 sin ϕ sin 4C 2 ∂ϕ C ∂f 1 1 = ( ∂λ 2 ∂f 2 1 = ( ∂λ 8 λ cos 2 ϕ sin 2 ∂f 2 1 = ( ∂ϕ 2 2 + D cos ϕ cos λ sin 2 ϕ + cos ϕ ) 0 2 C 3/ 2 C 2 + D (1 − cos 2 λ ) cos ϕ + 1 2 C 3/ 2 C C (75) λ sin 2 ϕ cos sin 2ϕ sin (74) (76) λ 2 − D sin ϕ cos 2 ϕ sin λ ) C 3/ 2 (77) İterasyon ∂f1 ∂f − f1 2 ∂ϕ ∂ϕ λi +1 = λi − ∂f1 ∂f 2 ∂f 2 ∂f1 − ∂ϕ ∂λ ∂ϕ ∂λ ∂f 2 ∂f − f2 1 ∂λ ∂λ = ϕi − ∂f1 ∂f 2 ∂f 2 ∂f1 − ∂ϕ ∂λ ∂ϕ ∂λ f2 f1 ϕ i +1 (78) -14 Kutup noktalarına ve ekvatora yaklaştıkça iterasyon adımı çok artmakta 10 incelikte iterasyon 200 adımı geçmektedir. Bu nedenle ϕ = 0 veya ϕ = 90o olması durumunda bu tür noktaların hesabı farklı yapılmalıdır. Ekvator üzerinde, y = 0 olur. y = 0 ise ϕ = 0 olur, λ ise , λ λ D = arccos(cos ϕ cos ) = 2 2 C = 1 − cos 2 ϕ cos 2 x= λ 2 = sin 2 λ 2 1 2D 1 λ 1 λ λ ( cos ϕ sin + λ cos ϕ 0 ) = ( sin + λ cos ϕ 0 ) = λ (1 + cos ϕ 0 ) 2 C 2 2 sin λ 2 2 2 2 x = λ (1 + cosϕ 0 ) λ= 2x 1 + cos ϕ 0 (79) olarak analitik olarak bulunur. Kutuplarda, ϕ = 90o ise 14.03.2004 22/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ λ π D = arccos(cosϕ cos ) = 2 2 C = 1 − cos 2 ϕ cos 2 λ 2 =1 λ 1 2D x= ( cosϕ sin + λ cosϕ 0 ) 2 C 2 x= 1 λ cos ϕ 0 2 λ= 2x cos ϕ 0 1 D y= ( sin ϕ + ϕ ) 2 C y= (80) 1 π π π ( + )= 2 2 2 2 Kutuplarda, y=π/2 ise, ϕ = 90o λ= 2x cos ϕ 0 (81) şeklinde analitik olarak hesaplanabilir. Orta meridyen üzerindeki noktaların irdelenmesi λ = 0 ise, x = 0 olur, bu durumda , 1 D y= ( sin ϕ + ϕ ) 2 C λ D = arccos(cosϕ cos ) = ϕ 2 C = 1 − cos 2 ϕ cos 2 y= λ 2 = sin 2 ϕ 1 ϕ ( . sin ϕ + ϕ ) 2 sin ϕ y =ϕ (82) Özetle x = 0 ise, λ = 0 ϕ = y şeklinde hesap yapılır. Sonuç olarak, 1. y = 0 x ≠ 0 ise, ϕ = 0 λ = 14.03.2004 2x 1 + cos ϕ 0 23/39 Taslak V.0 ANALİTİK KARTOGRAFYA π x ≠ 0 ise, ϕ = π / 2 λ = 2. y= 3. y ≠ 0 x = 0 ise, ϕ = y λ = 0 2 İ.Öztuğ BİLDİRİCİ 2x cos ϕ 0 4. Yukarıdaki özel durumların dışında iterasyon yapılır. Şeklinde problem çözülmelidir. CBS VERİ YAPILARI TEMEL KARTOGRAFİK MODEL ÇEŞİTLERİ Genel Bilgi Mekansal veriler analiz için harita olarak bilinen iki boyutlu modeller yardımıyla temsil edilirler (sunulurlar). Harita ayrıca daha sonra yapılacak görsel yorumlama, manuel güncelleme, ölçme ve diğer işlemler için klasik anlamda bir mekansal veri depolama aracıdır. Mekansal veriyi sayısal olarak depolamak için iki veri modeli vardır. Vektör ve mozaik (tesellation) modeller. Vektör veri modelinde temel mantıksal birim mekansal bir objeyi temsil eden çizgidir. Çizgi boyunca x,y nokta konumlarından oluşan bir dizi, tek bir veri kaydını oluşturur. Vektör yapı da noktalar uzunluğu sıfır olan çizgiler olarak temsil edilir. Ek öznitelikler, tanımlayıcı bilgiler objeyi tanımlayan veri kaydı ile birlikte saklanabilir (Tabaka, renk, çizgi tipi gibi bilgiler). Öte yandan alansal (poligonal) ağ yapısında (mozaik) temel mantıksal birim, bir hücre ya da ağdaki birim yüzeydir. Verilen bir konum ile ilgili ek öznitelikler bu konuma ait veri kaydı ile birlikte saklanabilir. Genel olarak mozaik modelin kullanımı raster veya grid model şeklindedir. Bu bölüm hakkında arıntılı bilgiler için Pequet [1991] den yararlanılabilir. 14.03.2004 24/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ VEKTÖR VERİ MODELLERİ Spagetti Modeli Coğrafi veriler için en basit vektör veri modeli, kağıt haritanın çizgi çizgi direkt dönüşümüdür. Şekilde görüldüğü gibi harita üzerindeki her varlık sayısal dosyada bir kayıt haline dönüşür. Bu kayıtlar x,y koordinat dizileri şeklindedir. Bu yapı çok basit ve kolay anlaşılabilir. Çünkü temel olarak harita kavramsal bir model olarak kalmaktadır ve xy koordinat dosyası bir veri yapısı biçimindedir. İki boyutlu harita modeli bir listeye dönüşmektedir. Başka bir deyişle bir boyutlu bir modele dönüşmektedir. Harita üzerindeki tüm objeler mekansal olarak tanımlı olmasına rağmen hiçbir mekansal ilişki mevcut değildir. Bu nedenle bu şekilde oluşturulmuş bir dosya genel olarak “spagetti” dosya olarak nitelendirilir. Bu şekilde kaydedilmiş bir poligon, poligonun kenarını tanımlayan (kapalı) bir x,y koordinat dizisidir. Birbiri ile komşu olan poligonlarda ortak sınırın noktaları iki kez kaydedilir. (Bir kez birinci poligonda bir kez ikinci poligonda olmak üzere) Spagetti model mekansal veri analizi çeşitlerinin pek çoğu için yetersizdir. Çünkü orijinal analog dokümanda belirsiz (gizli) olarak mevcut pek çok mekansal ilişki ancak hesaplama ile belirlenebilir. Buna rağmen kaydedilmiş mekansal ilişkilerin eksikliği çizim açısından önemsizdir. Amaç orijinal analog verinin çoğaltılması ise, ya da başka bir deyişle amaç mekansal analizden çok çizim ise (çizimin otomatize edilmesi) spagetti model yeterlidir. Spagetti yapı genel amaçlı CAD yazılımlarında bu nedenle çok yaygın olarak kullanılır. Çünkü burada amaç CAD’in anlamından da anlaşılacağı üzere çizimdir. (Computer Aided Design) Spagetti modelde düzeltmelerde ya da güncelleştirmelerde, grafik çıkış üzerinde ya da ekranda görsel olarak kontrol yapılması zorunludur. Sakıncalarına rağmen spagetti model kaydedilen ek öznitelikler sayesinde yaygın olarak kullanılmaya devam edilmektedir. Örneğin MAPINFO temelde spagetti modele dayanır. Ancak her obje veri tabanında bir kayda karşılık gelir ve veri tabanına kolonlar eklenerek istenildiği kadar öznitelik eklenebilir. Poligon objelerin ortak sınırlarının iki kez sayısallaştırma zorluğuna karşı çeşitli kolaylıklar sağlanmıştır (Sayısallaştırma kolaylığı). Bunun yanında ortak sınırlarda sayısallaştırma 14.03.2004 25/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ hatalarının tolerans dahilinde otomatik olarak düzeltilme imkanı da vardır. AutoCAD MAP de ise spagetti ve topolojik model birlikte kullanılmaktadır. Temel yapı spagetti olup, istenirse topolojik yapıya (istenen objeler için) geçilebilmektedir. Topolojik Model Objeler arasındaki mekansal ilişkileri koruyan en tanınmış model, komşuluk bilgilerinin açık olarak saklandığı topolojik modeldir. Basitleştirilmiş bir topolojik model örneği şekilde görülmektedir. Burada temel mantıksal birim doğru parçasıdır. Bir doğru parçası, bir diğer çizgi ile kesişim noktasında ya da çizginin kendi içerisindeki bir noktada (uç nokta) biter, ya da başlar. Her bir doğru parçası iki uç noktasının koordinatı ile kaydedilir. Ek olarak doğru iki tarafında bulunan poligonun tanımlayıcı bilgisi (ID si) ya da adı da kaydedilir. Bu şekilde, temel mekansal ilişkiler korunmuş olur ve mekansal analiz için kullanılabilir. Ayrıca bu topolojik bilgi, nokta, çizgi ve poligon tipli objelerin bilgi tekrarı olmaksızın tanımlanmasını sağlar. Bu özellikle komşu poligonların tanımlanması açısından yararlıdır. Şekilden de görüldüğü gibi, her bir doğru parçası bir kez kaydedilir. Poligonlar doğru parçalarındaki sağ/sol bilgilerinden kolayca elde edilebilir. GBF/DIME modeli (Geographic Base File /Dual İndependent map Encoding) bu topolojik düşünceye dayalı en çok tanınan modeldir. Bu model US Census Bureau (Amerikan Nüfus İdaresi bizdeki DİE gibi) tarafından nüfus sayımlarının otomatize edilmesine yönelik olarak 1969 da geliştirilmiştir. Adres kodlama rehberi olarak geliştirilen ilk GBF/DIME dosyaları 1970 sayımı için geliştirilmiş, 1980 sayımında tekrar kullanılmıştır. 14.03.2004 26/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ Amerikan Nüfus İdaresinin bu çalışması dünyada GIS konusunda ilk çalışmalardan biri olup, hatta GIS’ın başlangıcı olarak da düşünülebilir. Bu dosya yapısında nokta koordinatı tekrarını da önlemek için node=düğüm dosyası da tutulur. Koordinatlar burada kayıtlıdır. Doğru parçalarının ise başlangıç ve bitiş düğüm noktaları ile sağ/sol poligonları kaydedilir. Spagetti ve topolojik modelin genel olarak bilinen bir sorunu; kaydedilmiş objelerin herhangi bir sıralaması olmamasıdır. Topolojik modelde belli bir doğru parçasını aramak için, tüm dosyanın taranması gerekir. Aynı şekilde bir poligonu oluşturan doğru parçalarının da bulunması için tüm dosya taranmalıdır. Hiyerarşik Vektör Modeli Bu model topolojik modelde arama güçlüklerini aşmak üzere tasarlanmıştır. Burada noktalar ve çizgiler mantıksal bir hiyerarşi içinde kaydedilir. Poligonlar çizgisel objelerden, çizgisel objeler ise nokta konumlarını tanımlayan x,y koordinat dizilerinden oluştuğundan dolayı bir obje tipini diğeriyle ilişkilendirecek şekilde açık olarak tanımlı bağlantılar bu modelde kaydedilir. Bu bağlantılar (linkler) aynı zamanda direkt arama-bulma mekanizması sağlar. Hiyerarşik vektör modellerinin topolojik bilgileri de kapsayabildiğinin burada altını çizmek gerekir. Hiyerarşik vektör modelinin ilk örneklerinden biri POLYVRT dir. (POLYgon conVeRTer) POLYVRT Peveler ve Chrisman tarafından 1970’lerin sonlarında Harvard Labaratory For Computer Graphics de uygulanmıştır. POLYVRT de zincir terimi temel çizgisel objeyi tanımlamak için kullanılır. Bir zincir, bir düğüm noktasında (node) başlayan ve bir başka düğüm noktasında biten, doğru parçaları dizisi olarak tanımlanır. Bu tanıma bağlı olarak, bir düğüm noktası iki zincirin kesişim noktasıdır. Her bir zinciri tanımlayan nokta koordinatları zincir kaydının bir parçası olarak kaydedilmez. Bunun yerine koordinatların ayrı bir noktalar dosyasındaki başladığı yeri gösteren bir pointer (gösterge) kaydedilir. Benzer şekilde poligon dosyasında poligonları oluşturan zincirleri gösteren pointerlar kayıtlıdır. Zincirlerin GBF/DIME da olduğu gibi yönü vardır, sağ ve sol poligonları da kayıtlıdır. Eğer bir zincirin bir tarafında çalışma alanı bitiyorsa, ya da o tarafında bir poligon yoksa burası “sıfır poligonu”olarak tanımlanır. Hiyerarşik model arama-bulma ve değişiklik yapma açısından diğer modellere göre avantajlar sağlar. Temel obje tiplerinin kolayca ayırt edilmesi mümkündür (poligonlar, çizgiler, noktalar ve düğüm noktaları). Örneğin birbirine komşu poligonları belirlemek için sadece verilerin poligon ve zincir kısımlarında işlem yapmak gerekir, alan ve uzunluk hesaplanmayacaksa koordinat bilgisine ulaşmaya gerek yoktur. Bu modeldeki en önemli sakınca, çok sayıda pointer bilgisinin verilere eklenmesidir. Bu daha fazla veri anlamına gelir. Ancak veri artışından çok pointerların güncel tutulması sorun oluşturur. Pointerlardaki hatalar yapının tamamen bozulmasına yol açacak sorunlara neden olabilir. Ayrıca bu yapının ilk kez kurulması çok fazla hesaplama yükü getirir. TIGER dosya yapısı (Topologically Integrated Geographic Encoding and Referencing) hiyerarşik vektör modelin bir diğer örneğidir. Bu dosya yapısı GBF/DIME deki arama-bulma eksikliğini aşacak şekilde 1990 nüfus sayımı için yine Amerikan Nüfus İdaresi tarafından oluşturulmuştur. HANOVER ÜNİVERSİTESİ KARTOGRAFYA ve JEOINFORMATİK ENSTİTÜSÜ DBB VERİ MODELİ Hanover Üniversitesi Kartografya ve Jeoinformatik Enstitüsü tarafından geliştirilen ve burada geliştirilen çeşitli yazılımlarda kullanılan veri tabanı yapısı hiyerarşik veri tabanı olarak nitelendirilir ve temel olarak üç tablodan oluşur. 14.03.2004 27/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ 1. Obje dosyası 2. Çizgi dosyası 3. Grid dosyası Obje dosyasında bulunan kolonlar (alanlar) 0. Kayıt no: Sıra ile artan obje kayıt numarası 1. Geçerlilik bilgisi: 1 ise geçerli –1 ise iptal edilmiş. 2. Öznitelik 3. Öznitelik 4. Öznitelik 5. Öznitelik 6. Öznitelik 7. Öznitelik 8. Öznitelik 9. Objenin başladığı çizgi dosyasındaki nokta 10. Objenin bittiği çizgi dosyasındaki nokta 11. – 12. – 13. – 14. – 15. – 16. Objenin kapalı (alansal) ya da açık (çizgisel) olma bilgisi (1 kapalı 0 açık) Çizgi dosyası yapısı 0. Kayıt no 1. Grid içinde bir önceki nokta 2. Nokta tanıtıcı bilgisi 3. Nokta numarası 4. x 5. y 6. z 7. Ait olduğu obje numarası (Kayıt No) Grid listesi (çizgi dosyasının ilk 100 100 satırı içinde yer alır) 1. Grid bölge no 2. Nokta no (grid bölgesi içindeki en son eklenen nokta no) 14.03.2004 28/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ ... 1024 ... 33 34 .... 64 1 2 ... 32 Objelerin içinde olduğu bölge 1024 (32x32) parçaya (grid bölgesi) bölünür. Burada amaç objelerin yerlerini onları oluşturan noktalara göre belirlemektir. Örneğin 33 nolu grid bölgesindeki değer sıfır ise orada hiç nokta yok demektir. İçinde bir tamsayı değer var ise bu o grid içinde en son yer alan nokta numarasını ifade eder. O noktanın kaydında (çizgi listesinde) bir önceki nokta kolonundaki (1 nolu kolon) değer sıfır ise o grid bölgesinde başka değer yok demektir. Yok burada bir değer var ise bu grid içindeki bir önceki noktayı gösterir. Bu şekilde her defasında bir önceki noktaya bakılarak bir önceki nokta numarası sıfır oluncaya kadar araştırma yapılırsa ilgili grid bölgesindeki tüm noktaların listesi elde edilir. Bu veri tabanı yapısı ilk bakışta ilişkisel bir veri tabanı gibi görülmektedir. Ancak grid dosyası ile eklenen özellikler nedeniyle hiyerarşik veri tabanı olarak tanıtılmıştır. GENEL TOPOLOJİK YAPI VE ACAD MAP YAZILIMINDA TOPOLOJİ Üç tür topoloji vardır. 1. Düğüm Topolojisi: Noktasal objeler için 2. Ağ topolojisi(Network) :Çizgisel objeler için tanımlanır. 3. Poligon topolojisi : Alansal objeler için Topolojinin Temel Elemanları • Node (Düğüm noktaları) • Link (Çizgiler – bağlantı elemanları) • Centroid(poligonların merkezleri) Ağ Topolojisi Yol ağı olabilir, kanalizasyon ağı olabilir. Yapılabilecek analizler • Shortest Path(En kısa yol) • Trace (yayılma) • Buffer Poligon Topolojisi Kapalı objeler için kullanılır. Overlay analizleri yapılır. Node Topolojisi Node topolojisi sadece noktalardan oluşur. Buffer zone oluşturulabilir. Poligon topolojisi ile birlikte analiz edilebilir. Üç topoloji birbiriyle analiz edilebilir. 14.03.2004 29/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ düğüm (node) düğüm (node) bağlantı (link) merkez (centroid) bağlantı (link) ağ topolojisi poligon topolojisi Topoloji Amaçlı Açılan Tablolar Node Topolojisi için Tablo adı: TPMNOD_TOPADI Kolon ID Tanıtıcı kod numarası Network Topolojisi Tablo adı: TPMLINK_TOPADI Kolonlar : ID Kod Numarası START_NODE Başlangıç Düğüm END_NODE Bitiş Düğüm DIRECTION Yönü DIRECT_RESISTANCE Uzunluk/başlangıçtan bitişe zorluk derecesi REVERSE_RESISTANCE Uzunluk/bitişten başlangıca zorluk derecesi Tablo adı: TPMNODE_TOPADI Kolonlar : ID RESISTANCE Zorluk derecesi Poligon Topolojisi Tablo adı: TPMCNTR_TOPADI Kolonlar ID AREA PERMETER 14.03.2004 30/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ LINKS_QTY Tablo adı: TPMLINK_TOPADI ID START_NODE END_NODE DIRECTION O BIDIRECT 1 FROM TO –1 TO FROM DIRECT_RESISTANCE REVERSE_RESISTANCE LEFT_POLYGON RIGHT_POLYGON Tablo adı: TPMNODE_TOPADI Kolonlar: ID RESISTANCE Node ve Vertex kavramları: Linkleri oluşturan polylineları oluşturan noktalar vertexlerdir. Bir polyline’nın ilk ve son noktası node olabilir. Topolojik anlamı gereği bir nodedan en az üç ışın çıkmalıdır. (üç polyline çıkmalı) Eğer üç ışın çıkmıyorsa bu node pseudo node olarak adlandırılır. Pseudo node’lar çizgi temizleme (Line Cleaning) işleminde ortadan kaldırılabilir. ÇİZGİ TEMZİLEME (LINE CLEANING) İŞLEMLERİ Sağlıklı bir topoloji oluşturulması için topoloji öncesi çeşitli sayısallaştırma hatalarının otomatik olarak temizlenmesi için çizgi temizle işlemi gereklidir. Sayısallaştırma hataları dışında, topolojiyi bozabilecek tarzdaki sayısallaştırmalar da düzeltilebilir. (örneğin parçalara ayrılması gereken ama ayrılmamış polylinelar) Çizgi Temizleme İşlemleri (ACAD) 1. Üst üste sayısallaştırılmış objelerin ayıklanması 2. Çok kısa parçaların atılması 3. Kesişen objelerin ayrılması/parçalanması 4. Undershootların düzeltilmesi 5. Node Cluster düğüm noktalarının bir araya toplanması 6. Pseude Node ların kaldırılması 7. Overshootların düzeltilmesi 8. Çizgi genelleştirmesi 14.03.2004 31/39 Taslak V.0 ANALİTİK KARTOGRAFYA İşlem İ.Öztuğ BİLDİRİCİ Temizleme öncesi Temizleme sonrası Çift (çakışık) objelerin silinmesi Kısa parçaların kaldırılması Kesişen objelerin kopartılması, bu şekilde düğüm noktası oluşturulması Eksiklerin (Undershoot) tamamlanması suretiyle düğüm noktası oluşturulması Düğüm noktalarının düzeltilmesi Pseudo (yalancı-sözde) düğüm noktalarının kaldırılması Fazlalıkların (overshoot) kaldırılması MEKANSAL ANALİZLER VE “POINT IN POLYGON” TESTİ1 Coğrafi Bilgi Sistemlerinde mekansal veri analizinde point in polygon testi oldukça önemli bir yere sahiptir. Söz konusu test ile bir noktasal objenin bir alansal objenin (poligonun) içinde olup olmadığı belirlenir. Point in polygon testi, poligonu (alansal objeyi) oluşturan kenarlar ile, test edilen nokta ve poligonun dışındaki bir noktanın oluşturduğu doğru parçasının (test doğru parçası) kesişimine dayanır. Test doğru parçası ile poligonun kesişim sayısı tek ise, nokta poligonun içinde, değilse nokta poligonun dışındadır. Poligonun şekli ne kadar karmaşık olursa olsun, bu basit test yöntemi doğru 1 Bu bölüm Bildirici [2002] den alınmıştır. 14.03.2004 32/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ sonuç verir. Poligonun şekline bağlı olarak testte iki doğru parçasının kesişim problemi önem kazanır. Kesişim problemi, programlama açısından ilginç bir problemdir. Test işleminde aranan sadece iki doğru parçasının kesişip kesişmediğidir. Kesişim noktasının koordinatları ise test açısından gerekli değildir. Kesişme hesaplamaları box testi olarak adlandırılan bir programlama tekniği ile hızlandırılabilir. Bu çalışmada, box kavramı ve box testi, iki doğrunun kesişim problemi ve point in polygon testi teorik ve programlama tekniği açısından incelenecektir. Önerilen yaklaşımların uygulandığı FORTRAN dilinde yazılmış program parçacıkları (subroutine) da ek olarak verilmiştir. İKİ DOĞRU PARÇASININ KESİŞİM PROBLEMİ Geometrik olarak iki doğru birbirine paralel değilse kesişir. Ancak CBS, bilgisayar destekli çizim ve genel olarak grafik programlamada iki doğrunun değil iki doğru parçasının kesişimi önemlidir. İki doğrunun kesişiminin genel ifadesi, Birinci doğru Ax + By + C = 0 İkinci doğru Ex + Fy + G = 0 olmak üzere, xs (GB − FG ) (FA − EB ) y = (CE − AG ) (FA − EB ) s (83) İki doğru paralel ise, FA-EB=0 olur. Bu durumda kesişim mevcut değildir. Yukarıdaki gibi lineer denklem formu ile çözüm yapılırsa önce kesişim noktası hesaplanır, sonra kesişim noktasının iki doğrunu üzerinde olup olmadığı araştırılır. Çeşitli özel durumların dikkate alınmasını gerektiren bu yaklaşım yerine, programlama açısından daha kullanışlı olan ve nokta koordinatlarına dayanan aşağıdaki yöntem izlenebilir. Birinci doğru parçasının başlangıç ve bitim noktaları i(xi,yi) ve j(xj,yj), ikinci doğru parçasının başlangıç ve bitim noktaları k(xk,yk) ve l(xl,yl) olsun (Şekil 4). i l s j k Şekil 4: İki doğru parçasının kesişimi Doğru parçalarının paralel olup olmadığını belirlemek için d parametresi hesaplanır. d = (x j − xi )( yk − yl ) − ( xk − xl )( y j − yi ) (84) d=0 ise doğru parçaları paralel olup kesişim hesaplanamaz. d≠0 ise p1 ve p2 parametreleri hesaplanır. p1 = p2 = (xk − xl )( yi − yk ) − (xi − xk )( yk − yl ) d (xi − xk )( y j − yi ) − (x j − xi )( yi − yk ) (85) d 0 ≤ p1 ≤ 1 ve 0 ≤ p2 ≤ 1 ise kesişim noktası doğru parçalarının üzerindedir. Kesişim noktasının koordinatları, 14.03.2004 33/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ xs = xi + p1 (x j − xi ) ys = yi + p1 ( y j − yi ) (86) Kesişim problemi programlama tekniği açısından düşünülürse reel sayılar olan nokta koordinatlarının hangi değişken tipi ile tanımlandığı önemlidir. Double precision (8 byte) değişken tipi kullanıldığında ondalık noktanın yerinden bağımsız olarak 14 rakam anlamlıdır. Sekiz değişik değerden hesaplanan d parametresinin (2) doğruların paralel olması durumunda tam olarak sıfır olması beklenemez. Daha da açık olarak d parametresinin nadiren sıfır çıkacağı, genellikle sıfıra çok yakın bir değer alacağı söylenebilir. Doğru parçalarının paralelliğini belirlemek için bir hesap hassasiyeti belirlemek gerekir. Örneğin d parametresi altıncı basamağına kadar sıfır ise sıfır kabul edilebilir. Bu durumda yazılacak kod aşağıdaki gibi olabilir: if abs(d)<1e-6 then … Bazı hallerde sadece kesişimin var olup olmadığını belirlemek gerekir. Bu durumda önce paralellik incelenir, sonra p1 ve p2 parametreleri hesaplanarak kesişimin doğru parçaları üzerinde olup olmadığı belirlenir. Kesişim noktasının koordinatları hesaplanmaz. Örneğin point in polygon testinde sadece kesişimin var olup olmadığını bilmek önemlidir. p1 ve p2 parametrelerinin geometrik anlamı: • p1=0 ise, kesişim noktası i noktası ile çakışık • p1=1 ise, kesişim noktası j noktası ile çakışık • p2=0 ise, kesişim noktası k noktası ile çakışık • p2=1 ise, kesişim noktası l noktası ile çakışık Yine programlama tekniği açısından p1 ve p2 parametrelerinin tam olarak sıfır ya da bir olması beklenemez. Bunun yanında sayısallaştırma hataları vb gibi nedenlerle parametrelerin sıfırdan çok az küçük ya da birden çok az büyük olmaları durumunda kesişim noktasının doğru parçalarının ilgili uç noktaları ile çakışık olarak kabul edilmesi gerekebilir. Uygun seçilecek bir ε tolerans değerine göre parametrelerin irdelenmesi, − ε ≤ p1 ≤ 1 + ε ve − ε ≤ p2 ≤ 1 + ε (87) biçiminde yapılabilir. Ancak p1 ve p2 parametreleri birer orantı olup bir uzaklık ifade etmezler. Bu bakımdan ε tolerans değerinin seçimi çok kolay değildir. Bu noktada şöyle bir yaklaşım önerilebilir. Tolerans değeri kabul edilebilir bir yuvarlatma hatası olarak alınır, daha sonra koordinatları hesaplanan kesişim noktasının uç noktalarına olan uzaklıklarına bakılıp bu noktalarla çakışık kabul edilip edilemeyeceğine bakılır. BOX TESTİ Grafik programlama tekniğinde box testi olarak bilinen yöntemle, çizgisel ve alansal objelerin birbiri ile olan yakınlığı irdelenir. Kutu olarak da Türkçeleştirilebilecek box kavramı çizgisel ya da alansal objenin dışına çizilen, objeyi kapsayan, koordinat eksenlerine paralel bir dikdörtgen objeyi ifade eder. Box yardımıyla sadece mantıksal karşılaştırma yaparak iki çizgisel objenin kesişme olasılığı olup olmadığı, iki alansal objenin ise birbirini örtme olasılığının olup olmadığı belirlenebilir. Box CBS literatüründe MBR (Minimum Bounding Rectangle) olarak da isimlendirilmektedir. Şekil 5'de de görüldüğü gibi, box koordinatları ilgili objenin maksimum ve minimum koordinat değerlerinden elde edilebilir. i-j ve k-l doğru parçalarının kesişme olasılığını irdeleme durumunda box testi (Şekil 6), if max(yi,yj)< min(yk,yl) AND max(xi,xj)< min(xk,xl) then >> Kesişme mümkün değil else 14.03.2004 34/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ >> Kesişme mümkün end if şeklinde kodlanabilir. Yapılan bu karşılaştırmalar sonucu kesişme mümkün değilse kesişimle ilgili hiç bir hesaplamaya gerek yoktur [Cromley, 1992; Bildirici, 2000]. Benzer şekilde alansal objelerin de birbirini örtme olasılığının olup olmadığı test edilebilir. Box Şekil 5: Box kavramı j j k k i l i l Box'lar kesişmiyor Box'lar kesişiyor Şekil 6: Box testinin geometrik anlamı POINT IN POLYGON TESTİ "Point in Polygon" testi, bir noktanın bir alansal objenin içinde olup olmadığının belirlenmesi problemidir. Bir noktanın bir alansal objenin (kapalı şeklin) içinde olup olmadığını belirlemek için kapalı şeklin kesinlikle dışında olan bir yardımcı noktadan yararlanılır. Araştırılan nokta m, yardımcı nokta n olmak üzere m-n doğru parçasının, şekli kaç defa kestiği belirlenir (Şekil 7). Kesişim sayısı tek ise nokta şeklin içinde, çift ise dışındadır [Cromley, 1992]. Point in polygon testi kendi içinde son derece basittir. Ancak arkasında programlama açısından çok da basit olmayan kesişim problemi vardır. Burada kesişim noktasının koordinatları ile değil yalnızca kesişimin var olup olmadığı ile ilgilenilmektedir. Kesişim sayısının araştırılmasından önce, m noktasının P poligonu içinde olup olamayacağının incelenmesi gerekir (Şekil 7). m noktası poligonu oluşturan box'ın içinde değilse poligonun da içinde olamaz. Box'ın sol alt köşe koordinatları poligonu oluşturan nokta koordinatlarının en küçükleri, sağ üst köşe koordinatları ise şekli oluşturan koordinatların en büyükleri olduğuna göre; if min(xi)> xm > max(xi)AND min(yi)> ym > max(yi) şartı sağlanmıyorsa, nokta poligonun içinde olamaz. Şart sağlanıyorsa kesişim hesaplarına geçilebilir [Bildirici, 2000]. 14.03.2004 35/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ m Poligon P Box n Şekil 7: Poligon içinde olup olmadığı araştırılan nokta (p), yardımcı nokta (n) ve box Yardımcı n noktasının koordinatları, poligonu oluşturan box’dan yararlanarak aşağıdaki gibi hesaplanabilir: xn = min( x ) − (max( x ) − min( x )) (88) y n = min( y ) − (max( y ) − min( y )) (88) eşitliği ile n noktasının kesin olarak poligonun dışında olması sağlanabilir. Uzakta bir n noktası seçme yerine eksenlerden birine paralel bir yardımcı doğru da seçilebilir [Cromley, 1992]. Poligonu oluşturan kenar sayısı kadar kesişim hesabı yapılarak, kesişme sayısı belirlenmek zorundadır. Bu aşamada da bölüm 3 de değinildiği gibi kesişim öncesi box testi uygulanarak (Şekil 6), m-n doğrusu ile ilgili kenarın kesişme olasılığı var ise d (84), parametresi ile paralellik araştırılır. Paralel olma durumu yok ise p1 ve p2 (85) parametreleri hesaplanır. Eğer, 0 > p1 > 1 VE 0 > p2 > 1 (89) şartı sağlanıyorsa, kesişim var, aksi halde yoktur. Kesişim noktasının koordinatlarına ihtiyaç olmadığından hesaplama bu noktada kesilir, kesişim sayısı bir artırılır ve bir sonraki kenara geçilir. Poligonu oluşturan tüm kenarlar için kesişim olup olmadığı araştırıldıktan sonra, toplam kesişim sayısı tek ise nokta poligonun içinde, çift ise değildir. Bu noktada bir üçüncü olasılık noktanın poligonu oluşturan kenarların birinin üzerinde olmasıdır. (89) bağıntısına göre nokta herhangi bir kenar üzerinde ise ya da nokta poligonu oluşturan noktalardan biri ile çakışık ise noktanın poligon dışında olduğu kararı verilmektedir. Çünkü nokta kenarlardan biri üzerinde ise p1 ya da p2 sıfıra ya da bire eşit olur. Nokta poligonu oluşturan noktalardan biri ile çakışık ise hem p1 hem de p2 sıfıra ya da bire eşit olur. Bu durumlarda nokta poligonun içinde kabul edilecekse (89) bağıntısı aşağıdaki gibi olmalıdır. 0 ≥ p1 ≥ 1 VE 0 ≥ p2 ≥ 1 (90) p1, p2 ve d parametreleri reel sayılar olduğundan, değişken tipi olarak double precision kullanılması gerekir. Ancak bu şekilde tanımlanan değişkenlerin tam olarak sıfıra ya da bire eşit olmaları beklenemez. Sıfıra ya da bire eşit olma (67) bağıntısındaki mantık ile yapılmalıdır. Buradaki ε parametresi dikkatli seçilmelidir. Buradaki parametreler uzunluk değil, orantıdır. Örneğin p1 parametresinin birden farkı, kesişim noktasının kenarlardan birine ne kadar yaklaştığı (uzaklık olarak) hakkında bir fikir vermez. p1 ve p2 parametreleri uygun şekilde test edilerek point in polygon testi sonucu, nokta içerde, nokta poligon kenarı üzerinde ve nokta dışarıda olmak üzere üç değişik sonuç da elde edilebilir. Box, kesişim ve point in polygon algoritmasının uygulanması konusunda Fortran dilinde kodlanmış üç program parçacığı ek olarak verilmiştir. 14.03.2004 36/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ TARTIŞMA Point in polygon testi, Coğrafi Bilgi Sistemlerinde mekansal sorgulama ve analizde önemlidir. Algoritma kendi içinde programlama olarak basittir. Ancak algoritma, programlama açısından ilginç özellikleri olan iki doğru parçasının kesişimine dayanmaktadır. Bu çalışmada önce kesişim problemi irdelenmiş, daha sonra testin dayandığı algoritma programlama tekniği açısından tartışılmıştır. Ek olarak her iki problemin çözümü için Fortran dilinde kodlanmış program parçacıkları verilmiştir. PROGRAM KODLARI c***************BOX BELIRLEME******************************* subroutine cg_box(xmin,ymin,xmax,ymax,x,y,pkt_anz,rnull) c******************Decalarations**************************** implicit none integer*4 i,pkt_anz real*8 xmin,ymin,xmax,ymax,rnull real*8 x(pkt_anz),y(pkt_anz) c******************Program********************************** xmin=1.d09 ymin=1.d09 xmax=0.d0 ymax=0.d0 c do i=1,pkt_anz if(x(i).gt.xmax) xmax=x(i) if(x(i).lt.xmin) xmin=x(i) if(y(i).gt.ymax) ymax=y(i) if(y(i).lt.ymin) ymin=y(i) end do xmin=xmin-rnull ymin=ymin-rnull xmax=xmax+rnull ymax=ymax+rnull 100 end c******************KESISIM********************************* logical function cg_int2(xi,yi,xj,yj,xk,yk,xl,yl,p1,p2) c*********************************************************** c 1. dogru i,j c 2. dogru k,l c p1 0 ile 1 arasinda ise kesisim 1. dogru parcasi uzerinde c p2 0 ile 1 arasinda ise kesisim 2. dogru parcasi uzerinde c kesim varsa true yoksa false (kesim uzantida ise yine false) c kesim noktası noktalardan biri ile çakışık ya da kenarlardan biri c uzerinde olsa da true c c Oztug Bildirici 12/2002 c c************************Declarations********************** implicit none real*8 xi,yi,xj,yj,xk,yk,xl,yl real*8 a1, a2,b1, b2,c1, c2,d,p1, p2 real*8 r_null parameter (r_null=1.d-4) c*****************************Program********************** a1 = xj - xi a2 = yj - yi b1 = xk - xl b2 = yk - yl c1 = xi - xk c2 = yi - yk d = a1*b2 - a2*b1 c ... paralel mi? if( dabs(d) .lt. r_null) then cg_int2=.false. goto 100 end if c kesim noktasi varmi? p1 = ( b1*c2 - b2*c1 ) / d p2 = ( c1*a2 - c2*a1 ) / d if(dabs(p2).le.1.d-8) p2=0.d0 cg_int2=p1.ge.0.d0.and.p1.le.1.d0 * .and.p2.ge.0.d0.and.p2.le.1.d0 100 end c******************POINT IN POLYGON************************ 14.03.2004 37/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ logical function cg_pip(x,y,n,xp,yp) c******************Declarations**************************** implicit none integer*4 i,j,n,schnitte real*8 x(n),y(n),xp,yp,xr,yr real*8 xmin,ymin,xmax,ymax,rnull,p1,p2 parameter (rnull=1.d-4) c External fuct logical cg_int2 c******************Program********************************* schnitte=0 c box hesapla.. call cg_box(xmin,ymin,xmax,ymax,x,y,n,rnull) xr=2.d0*xmax-xmin yr=2.d0*ymax-ymin if(xp.ge.xmin.and.yp.ge.ymin.and. * xp.le.xmax.and.yp.le.ymax) then do i=1,n if(i.eq.n)then j=1 else j=i+1 end if if(dabs(x(i)-xp).le.rnull.and.dabs(y(i)-yp).le.rnull.or. * dabs(x(j)-xp).le.rnull.and.dabs(y(j)-yp).le.rnull) then cg_pip=.true. goto 100 end if if(cg_int2(x(i),y(i),x(j),y(j),xp,yp,xr,yr,p1,p2)) then if(p1.ge.0.d0.and.p1.le.1.d0.and.p2.eq.0.d0) then cg_pip=.true. goto 100 end if schnitte=schnitte+1 end if end do cg_pip=(schnitte.gt.0.and.mod(schnitte,2).ne.0) else cg_pip=.false. end if 100 end AREA IN AREA TESTİ Area in Area (alan içinde alan) testi Point in Polygon testinin bir uygulamasıdır. Bu testte poligonlardan birinin oluşturan noktalar sıra ile diğer poligonla Point in Polygon testine tabi tutulur. En az bir nokta diğer poligonun içinde ise poligonlar kesişiyor, tüm noktalar içinde ise poligon poligonun içinde demektir. Bu testten önce box testi yapılarak araştırılacak poligonların kesişme ya da birbirinin içinde olma durumları ortaya çıkacak kadar yakın olup olmadıkları irdelenmelidir. Eğer box’lar kesişmiyorsa test yapılmasına gerek kalmaz. KAYNAKLAR Bildirici, İ.Ö., 2002, Mekansal Veri Analizinde Point in Polygon Testi, TUJK 2003 Yılı Bilimsel Toplantısı: CBS ve Jeodezik Ağlar, 24-25-26 Eylül 2004, 209-214. Bildirici, İ.Ö., 2003, Numerical Inverse Transformation for Map Projections, Computers & Geosciences (29), 1003-1011. Bildirici, İ.Ö., 2000, 1: 1000-1: 25 000 Ölçek Aralığında Bina ve Yol Objelerinin Sayısal Ortamda Kartografik Genelleştirmesi, Doktora Tezi, İTÜ Fen Bilimleri Enstitüsü, İstanbul. Cromley, R.G., 1992, Digital Cartography, Prentice Hall, New Jersey, 316p. 14.03.2004 38/39 Taslak V.0 ANALİTİK KARTOGRAFYA İ.Öztuğ BİLDİRİCİ Hardy R.L., 1990, Theory and Applications of the Multiquadric-biharmonic method, Computers & Mathematics with Applications 19 (8/9), 163-208 İpbüker, C., Bildirici, İ.Ö., 2002, A General Algorithm for the Inverse Transformation of Map Projections Using Jacobian Matrices, Proceedings of the Third International Conference on Mathematical & Computational Applications, September 4-6, 2002, Konya, Turkey, 175-184. İpbüker, C., Yanalak, M., Özşamlı, C., 2003, Winkel Tripel’e Alternatif Olarak Ginzburg IV Projeksiyonu, HKM Jeodezi Jeoinformasyon ve Arazi Yönetimi Dergisi (89), 19-28 14.03.2004 39/39 Taslak V.0