ogr 緩衝區 OGR幾何關係與操作

2021-10-17 06:17:07 字數 3626 閱讀 4147

ogr幾何關係與操作

關係本文指令碼需要匯入ogr模組

from osgeo import ogr

equals

兩個幾何的邊界、內部和外部重合

a1=ogr.creategeometryfromwkt("point(1 1)")

a2=ogr.creategeometryfromwkt("point(1 1)")

print(a1.equals(a2)) # true

contains

幾何包含另乙個幾何的內部和邊界,並且邊界不接觸,適用於所有幾何型別,並且a.contains(b)==b.within(a)

p=ogr.creategeometryfromwkt("polygon((0 0,0 2,2 2,2 0,0 0))")

l=ogr.creategeometryfromwkt("linestring(0.5 0.5,1.5 1.5)")

a=ogr.creategeometryfromwkt("point(0.5 0.5)")

b=ogr.creategeometryfromwkt("point(1 1)")

c=ogr.creategeometryfromwkt("point(1.5 1.5)")

print(p.contains(l)) # true

print(p.contains(a)) # b,c true

print()

print(l.contains(a)) # false

print(l.contains(b)) # true

print(l.contains(c)) # false

print()

print(a.within(l)) # false

print(b.within(l)) # true

print(c.within(l)) # false

點的邊界為空,線的邊界就是線的兩個端點,因此線不包含本身的兩個端點,多邊形的邊界是組成邊界的線。

crosses

幾何與另乙個幾何內部相交,但不包含它,且相交的維度小於其中乙個幾何的維度,適用於線–>線,線–>面。

兩個幾何邊界、內部都不相交

a1=ogr.creategeometryfromwkt("point(0 0)")

a2=ogr.creategeometryfromwkt("point(1 1)")

print(a1.disjoint(a2)) # true

touches

兩個幾何邊界相交,內部不相交

兩個幾何的contains、crosses、equals、touches、within其中乙個為true,則為true

overlaps

兩個多邊形相交,但相互不包含

p1=ogr.creategeometryfromwkt("polygon((0 0,0 3,3 3,3 0,0 0))")

p2=ogr.creategeometryfromwkt("polygon((1 1,1 2,2 2,2 1,1 1))")

p3=ogr.creategeometryfromwkt("polygon((2 1,2 2,4 2,4 1,2 1))")

print(p2.overlaps(p1)) # false

print(p3.overlaps(p1)) # true

操作buffer

緩衝區l=ogr.creategeometryfromwkt("linestring(0 0,1 1)")

print(l.exporttojson())

buffer=l.buffer(0.5)

boundary

提取邊界

相交p1=ogr.creategeometryfromwkt("polygon((0 0,1 2,3 1,2 0,0 0))")

p2=ogr.creategeometryfromwkt("polygon((0 0,1 2,3 1,2 0,0 0))")

p1.intersection(p2)

symdifference

對稱差

p1.symdifference(p2)

difference

相減p1.difference(p2)

最小外包矩形

p=ogr.creategeometryfromwkt("polygon((0 0,1 2,3 1,2 0,0 0))")

envelope=p.getenvelope()

print("envelope:",envelope)

# envelope: (0.0, 3.0, 0.0, 2.0)

輸入緩衝區與輸出緩衝區

本博文通過一段程式來理解輸入緩衝區與輸出緩衝區。程式如下 author wanghao created time thu 17 may 2018 06 03 12 ampdt file name test.c description include int main int argc,const c...

fork與輸出緩衝區

如下程式輸出的 的數目是多少 程式1 include include include int main return 0 輸出 8個 程式2 include include include int main return 0 輸出 6個 行緩衝 在這種情況下,當輸入或輸出緩衝區中遇到換行符時,標準i...

C 佇列與緩衝區

最近在寫乙個資料互動模組,若本側收到資料後的處理是將其顯示到ui中 相對耗時 則當對側主動密集上報時,會出現一種情況 接收大量資料來不及處理的,這就有了生產者消費者不協調問題。多執行緒模式下,生產者和消費者模式是通過乙個容器來解決生產者和消費者的強耦合問題。生產者生產完資料後不用等待消費者處理,而是...