実現したいこと
高速に精度指定で図形に差分があるか判定する方法を見つけたい
該当のソースコード
python
1import geopandas as gpd 2import time 3 4from shapely.geometry import LineString 5a = LineString([(0, 0), (1, 1)]) 6b = LineString([(0, 0), (0.5, 0.5), (1, 1)]) 7c = LineString([(0, 0), (0, 0.00001), (1, 1)]) 8 9def my_almost_equals(a,b,r): 10 ta=a.buffer(r) 11 tb=b.buffer(r) 12 tc=a.difference(tb).union(b.difference(ta)) 13 return tc.is_empty 14 15print(a.equals(b)) 16s=time.perf_counter() 17for i in range(20000): 18 a.equals(b) 19print(time.perf_counter()-s) 20 21print(a.equals(c)) 22s=time.perf_counter() 23for i in range(20000): 24 a.equals(c) 25print(time.perf_counter()-s) 26 27print(my_almost_equals(a,c,0.001)) 28s=time.perf_counter() 29for i in range(20000): 30 my_almost_equals(a,c,0.001) 31print(time.perf_counter()-s) 32
試したこと
私のPCで上記のコードでequalsの所が、0.5秒
my_almost_equalsの所が6.5秒かかっています。
このmy_almost_equalsの部分もう少し早くならないでしょうか。
almost_equalsだと、aとcが同じと判定してくれません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。