MEKANSAL VERİ ANALİZİNDE POINT IN POLYGON TESTİ İ. Öztuğ BİLDİRİCİ Seçu Ünverte Mühend Mmarı Faüte Jeodez ve Fotogrametr Mühendğ Böümü, 4203 Kampü KONYA, ema: bdrc@ecu.edu.tr Özet: Coğraf bg temernde meana ver anaznde pont n pogon tet oduça önem br ere ahptr. Söz onuu tet e br notaa obenn br aana obenn (pogonun) çnde oup omadığı tet edr. Pont n pogon tet, apaı pogonu ouşturan doğru parçaarı e, tet eden nota ve pogonun dışında br notanın ouşturduğu doğru parçaının (tet doğru parçaı) eşmne daanır. Tet doğru parçaı e pogonun eşm aıı te e, nota pogonun çnde, değe nota pogonun dışındadır.. GİRİŞ Coğraf Bg Stemernde meana ver anaznde pont n pogon tet oduça önem br ere ahptr. Söz onuu tet e br notaa obenn br aana obenn (pogonun) çnde oup omadığı berenr. Pont n pogon tet, pogonu (aana obe) ouşturan enarar e, tet eden nota ve pogonun dışında br notanın ouşturduğu doğru parçaının (tet doğru parçaı) eşmne daanır. Tet doğru parçaı e pogonun eşm aıı te e, nota pogonun çnde, değe nota pogonun dışındadır. Pogonun şe ne adar armaşı oura oun, bu bat tet öntem doğru onuç verr. Pogonun şene bağı oara tette doğru parçaının eşm probem önem azanır. Keşm probem, programama açıından gnç br probemdr. Tet şemnde aranan adece doğru parçaının eşp eşmedğdr. Keşm notaının oordnatarı e tet açıından gere değdr. Keşme heapamaarı bo tet oara adandırıan br programama tenğ e hızandırıabr. Bu çaışmada, bo avramı ve bo tet, doğrunun eşm probem ve pont n pogon tet teor ve programama tenğ açıından nceenecetr. Öneren aaşımarın uguandığı FORTRAN dnde azımış program parçacıarı (ubroutne) da e oara vermştr. 2. İKİ DOĞRU PARÇASININ KESİŞİM PROBLEMİ Geometr oara doğru brbrne parae değe eşr. Anca CBS, bgaar dete çzm ve gene oara graf programamada doğrunun değ doğru parçaının eşm önemdr. İ doğrunun eşmnn gene fade, Brnc doğru A Η B Η C 0 İnc doğru E Η F Η G 0 oma üzere, ΕGB FGΦ ΕFA EBΦ ΕCE AGΦ ΕFA EBΦ () İ doğru parae e, FA-EB=0 our. Bu durumda eşm mevcut değdr.
Yuarıda gb neer denem formu e çözüm apııra önce eşm notaı heapanır, onra eşm notaının doğrunu üzernde oup omadığı araştırıır. Çeşt öze durumarın date aınmaını geretren bu aaşım erne, programama açıından daha uanışı oan ve nota oordnatarına daanan aşağıda öntem zenebr. Brnc doğru parçaının başangıç ve btm notaarı (, ) ve (, ), nc doğru parçaının başangıç ve btm notaarı (, ) ve (, ) oun (Şe ). Şe : İ doğru parçaının eşm Doğru parçaarının parae oup omadığını bereme çn d parametre heapanır. d Ε ϑ ΦΕ ϑ Φ ϑ Ε ϑ ΦΕ ϑ Φ (2) d=0 e doğru parçaarı parae oup eşm heapanamaz. d 0 e p ve p 2 parametreer heapanır. p p 2 Ε ϑ ΦΕ ϑ Φ ϑ Ε ϑ ΦΕ ϑ Φ d Ε ϑ ΦΕ ϑ Φϑ Ε ϑ ΦΕ ϑ Φ d (3) 0 p ve 0 p e eşm notaı doğru parçaarının üzerndedr. Keşm 2 notaının oordnatarı, Η Η p p Ε Ε ϑ ϑ Φ Φ (4) Keşm probem programama tenğ açıından düşünüüre ree aıar oan nota oordnatarının hang değşen tp e tanımandığı önemdr. Doube precon (8 bte) değşen tp uanıdığında ondaı notanın ernden bağımız oara 4 raam anamıdır. Sez değş değerden heapanan d parametrenn (2) doğruarın parae omaı durumunda tam oara ıfır omaı beenemez. Daha da açı oara d parametrenn nadren ıfır çıacağı, genee ıfıra ço aın br değer aacağı öenebr.
Doğru parçaarının paraeğn bereme çn br heap haaet bereme gerer. Örneğn d parametre atıncı baamağına adar ıfır e ıfır abu edebr. Bu durumda azıaca od aşağıda gb oabr: f ab(d)<e-6 then Bazı haerde adece eşmn var oup omadığını bereme gerer. Bu durumda önce parae nceenr, onra p ve p 2 parametreer heapanara eşmn doğru parçaarı üzernde oup omadığı berenr. Keşm notaının oordnatarı heapanmaz. Örneğn pont n pogon tetnde adece eşmn var oup omadığını bme önemdr. p ve p 2 parametreernn geometr anamı: p =0 e, eşm notaı notaı e çaışı p = e, eşm notaı notaı e çaışı p 2 =0 e, eşm notaı notaı e çaışı p 2 = e, eşm notaı notaı e çaışı Yne programama tenğ açıından p ve p 2 parametreernn tam oara ıfır a da br omaı beenemez. Bunun anında aıaaştırma hataarı vb gb nedenere parametreern ıfırdan ço az üçü a da brden ço az büü omaarı durumunda eşm notaının doğru parçaarının g uç notaarı e çaışı oara abu edme gereebr. Ugun eçece br toeran değerne göre parametreern rdeenme, ϑ p ve ϑ p Η (5) Η 2 bçmnde apıabr. Anca p ve p 2 parametreer brer orantı oup br uzaı fade etmezer. Bu baımdan toeran değernn eçm ço oa değdr. Bu notada şöe br aaşım önerebr. Toeran değer abu edebr br uvaratma hataı oara aınır, daha onra oordnatarı heapanan eşm notaının uç notaarına oan uzaıarına baııp bu notaara çaışı abu edp edemeeceğne baıır. 3. BOX TESTİ Graf programama tenğnde bo tet oara bnen önteme, çzge ve aana obeern brbr e oan aınığı rdeenr. Kutu oara da Türçeeştrebece bo avramı çzge a da aana obenn dışına çzen, obe apaan, oordnat eenerne parae br ddörtgen obe fade eder. Bo ardımıa adece mantıa arşıaştırma apara çzge obenn eşme oaıığı oup omadığı, aana obenn e brbrn örtme oaıığının oup omadığı berenebr. Şe 2'de de görüdüğü gb, bo oordnatarı g obenn mamum ve mnmum oordnat değerernden ede edebr. - ve - doğru parçaarının eşme oaıığını rdeeme durumunda bo tet (Şe 3), f ma(, )< mn(, ) AND ma(, )< mn(, ) then >> Keşme mümün değ ee >> Keşme mümün end f
şende odanabr. Yapıan bu arşıaştırmaar onucu eşme mümün değe eşme g hç br heapamaa gere otur [Crome, 992; Bdrc, 2000]. Benzer şede aana obeern de brbrn örtme oaıığının oup omadığı tet edebr. Bo Şe 2: Bo avramı Bo'ar eşmor Bo'ar eşor Şe 3: Bo tetnn geometr anamı 4. POINT IN POLYGON TESTİ "Pont n Pogon" tet, br notanın br aana obenn çnde oup omadığının berenme probemdr. Br notanın br aana obenn (apaı şen) çnde oup omadığını bereme çn apaı şen ene dışında oan br ardımcı notadan araranıır. Araştırıan nota m, ardımcı nota n oma üzere m-n doğru parçaının, şe aç defa etğ berenr (Şe 4). Keşm aıı te e nota şen çnde, çft e dışındadır [Crome, 992]. Pont n pogon tet end çnde on derece battr. Anca araında programama açıından ço da bat omaan eşm probem vardır. Burada eşm notaının oordnatarı e değ anızca eşmn var oup omadığı e genmetedr. Keşm aıının araştırımaından önce, m notaının P pogonu çnde oup oamaacağının nceenme gerer (Şe 4). m notaı pogonu ouşturan bo'ın çnde değe pogonun da çnde oamaz. Bo'ın o at öşe oordnatarı pogonu ouşturan nota oordnatarının en üçüer, ağ üt öşe oordnatarı e şe ouşturan oordnatarın en büüer oduğuna göre; f mn( )> m > ma( )AND mn( )> m > ma( )
şartı ağanmıora, nota pogonun çnde oamaz. Şart ağanıora eşm heaparına geçebr [Bdrc, 2000]. m Pogon P Bo n Şe 4: Pogon çnde oup omadığı araştırıan nota (p), ardımcı nota (n) ve bo Yardımcı n notaının oordnatarı, pogonu ouşturan bo dan araranara aşağıda gb heapanabr: n n mn mn ΕΦ ϑ ΕmaΕΦ ϑ mnεφ Φ ΕΦϑ ΕmaΕΦϑ mnεφφ (6) (7) eştğ e n notaının en oara pogonun dışında omaı ağanabr. Uzata br n notaı eçme erne eenerden brne parae br ardımcı doğru da eçebr [Crome, 992]. Pogonu ouşturan enar aıı adar eşm heabı apıara, eşme aıı berenme zorundadır. Bu aşamada da böüm 3 de değndğ gb eşm önce bo tet uguanara (Şe 3), m-n doğruu e g enarın eşme oaıığı var e d (2), parametre e parae araştırıır. Parae oma durumu o e p ve p 2 (3) parametreer heapanır. Eğer, 0 [ p [ VE 0 [ p2 [ (7) şartı ağanıora, eşm var, a hade otur. Keşm notaının oordnatarına htaç omadığından heapama bu notada er, eşm aıı br artırıır ve br onra enara geçr. Pogonu ouşturan tüm enarar çn eşm oup omadığı araştırıdıtan onra, topam eşm aıı te e nota pogonun çnde, çft e değdr. Bu notada br üçüncü oaıı notanın pogonu ouşturan enararın brnn üzernde omaıdır. (7) bağıntıına göre nota herhang br enar üzernde e a da nota pogonu ouşturan notaardan br e çaışı e notanın pogon dışında oduğu ararı vermetedr. Çünü nota enarardan br üzernde e p a da p 2 ıfıra a da bre eşt our. Nota pogonu ouşturan notaardan br e çaışı e hem p hem de p 2 ıfıra a da bre eşt our. Bu durumarda nota pogonun çnde abu edecee (7) bağıntıı aşağıda gb omaıdır.
0 p VE 0 p2 (8) p, p 2 ve d parametreer ree aıar oduğundan, değşen tp oara doube precon uanımaı gerer. Anca bu şede tanımanan değşenern tam oara ıfıra a da bre eşt omaarı beenemez. Sıfıra a da bre eşt oma (5) bağıntıında mantı e apımaıdır. Burada parametre dat eçmedr. Burada parametreer uzunu değ, orantıdır. Örneğn p parametrenn brden farı, eşm notaının enarardan brne ne adar aaştığı (uzaı oara) haında br fr vermez. p ve p 2 parametreer ugun şede tet edere pont n pogon tet onucu, nota çerde, nota pogon enarı üzernde ve nota dışarıda oma üzere üç değş onuç da ede edebr. Bo, eşm ve pont n pogon agortmaının uguanmaı onuunda Fortran dnde odanmış üç program parçacığı e oara vermştr. 5. SONUÇ Pont n pogon tet, Coğraf Bg Stemernde meana orguama ve anazde önemdr. Agortma end çnde programama oara battr. Anca agortma, programama açıından gnç özeer oan doğru parçaının eşmne daanmatadır. Bu çaışmada önce eşm probem rdeenmş, daha onra tetn daandığı agortma programama tenğ açıından tartışımıştır. E oara her probemn çözümü çn Fortran dnde odanmış program parçacıarı vermştr. 6. KAYNAKLAR Crome, R.G., 992, Dgta Cartograph, Prentce Ha, New Jere, 36p. Bdrc, İ.Ö., 2000, : 000-: 25 000 Öçe Araığında Bna ve Yo Obeernn Saıa Ortamda Kartograf Geneeştrme, Dotora Tez, İTÜ Fen Bmer Enttüü, İtanbu. 7. EK: Program Kodarı c***************box BELIRLEME******************************* ubroutne cg_bo(mn,mn,ma,ma,,,pt_anz,rnu) c******************decaaraton**************************** mpct none nteger*4,pt_anz rea*8 mn,mn,ma,ma,rnu rea*8 (pt_anz),(pt_anz) c******************program********************************** mn=.d09 mn=.d09 ma=0.d0 ma=0.d0 c do =,pt_anz f(().gt.ma) ma=() f(().t.mn) mn=() f(().gt.ma) ma=() f(().t.mn) mn=() end do mn=mn-rnu mn=mn-rnu ma=ma+rnu
ma=ma+rnu 00 end c******************kesisim********************************* ogca functon cg_nt2(,,,,,,,,p,p2) c*********************************************************** c. dogru, c 2. dogru, c p 0 e aranda e em. dogru parca uzernde c p2 0 e aranda e em 2. dogru parca uzernde c em vara true oa fae (em uzantda e ne fae) c em notaı notaardan br e çaışı a da enarardan br c uzernde oa da true c c Oztug Bdrc 2/2002 c c************************decaraton********************** mpct none rea*8,,,,,,, rea*8 a, a2,b, b2,c, c2,d,p, p2 rea*8 r_nu parameter (r_nu=.d-4) c*****************************program********************** a = - a2 = - b = - b2 = - c = - c2 = - d = a*b2 - a2*b c... parae m? f( dab(d).t. r_nu) then cg_nt2=.fae. goto 00 end f c em nota varm? p = ( b*c2 - b2*c ) / d p2 = ( c*a2 - c2*a ) / d f(dab(p2).e..d-8) p2=0.d0 cg_nt2=p.ge.0.d0.and.p.e..d0 *.and.p2.ge.0.d0.and.p2.e..d0 00 end c******************point IN POLYGON************************ ogca functon cg_pp(,,n,p,p) c******************decaraton**************************** mpct none nteger*4,,n,chntte rea*8 (n),(n),p,p,r,r rea*8 mn,mn,ma,ma,rnu,p,p2 parameter (rnu=.d-4) c Eterna fuct ogca cg_nt2 c******************program********************************* chntte=0 c bo heapa.. ca cg_bo(mn,mn,ma,ma,,,n,rnu) r=2.d0*ma-mn r=2.d0*ma-mn f(p.ge.mn.and.p.ge.mn.and. * p.e.ma.and.p.e.ma) then do =,n f(.eq.n)then = ee =+ end f f(dab(()-p).e.rnu.and.dab(()-p).e.rnu.or. * dab(()-p).e.rnu.and.dab(()-p).e.rnu) then cg_pp=.true. goto 00 end f f(cg_nt2((),(),(),(),p,p,r,r,p,p2)) then f(p.ge.0.d0.and.p.e..d0.and.p2.eq.0.d0) then cg_pp=.true. goto 00 end f chntte=chntte+ end f
end do cg_pp=(chntte.gt.0.and.mod(chntte,2).ne.0) ee cg_pp=.fae. end f 00 end