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中 相對耗時 則當對側主動密集上報時,會出現一種情況 接收大量資料來不及處理的,這就有了生產者消費者不協調問題。多執行緒模式下,生產者和消費者模式是通過乙個容器來解決生產者和消費者的強耦合問題。生產者生產完資料後不用等待消費者處理,而是...