我們在使用java 的JTS 庫來進(jìn)行數(shù)據(jù)合并時(shí),在進(jìn)行數(shù)據(jù)擦除時(shí),一直在報(bào)自相交錯(cuò)誤,懷疑是數(shù)據(jù)問題,就使用了 arcmap 的 Check Geometry 來進(jìn)行數(shù)據(jù)檢查。 檢查的結(jié)果為是一個(gè)警告,并非一個(gè)錯(cuò)誤。 使用arcmap是可以進(jìn)行擦除的。這就很讓人疑惑。

2.png
最后我們懷疑是JTS 庫有缺陷,最終證實(shí)了這個(gè)想法。 我們使用postGIS(pg數(shù)據(jù)庫的一個(gè)插件)來進(jìn)行數(shù)據(jù)擦除完全沒有問題,但是只要使用了 JTS庫的合并就會(huì)出現(xiàn)問題。 但并不是全部數(shù)據(jù)都出問題,有一些距離特別近的面就會(huì)出現(xiàn)自相交的錯(cuò)誤。
得出結(jié)論: JTS庫只能進(jìn)行一下簡單空間數(shù)據(jù)的操作,優(yōu)化的并不完善,請盡可能直接使用數(shù)據(jù)庫本身自帶的工具,或者使用python(底層是C++),或直接使用C++完成一些較為復(fù)雜數(shù)據(jù)的復(fù)雜操作。