我在与两个几何相交时遇到问题,可能是由于操作过程中的舍入错误导致了 TopologyException,然后我阅读了此修复程序并尝试了buffer(0)
两个输入几何,但仍然没有成功。然后我尝试geo.buffer(1).buffer(-1)
了,它奏效了。
这些几何形状是否与原始几何形状相同?
我对JTS一无所知,但一般来说不可能。
假设您有两种形状:
XXXXXX XXXXX XXXXXX
据我了解buffer(1)
,两者都会导致大致这样:
XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX
现在buffer(-1)
将无法从这两种形状中产生两种不同的结果。
实际上,buffer()
操作会丢失信息,因此如果不从其他地方重新添加该信息,就无法撤消操作。
我认为这些几何形状不会相同。默认情况下,缓冲要素的行为会将顶点添加到其原始配置中,并且不能保证会删除相同的顶点。
尝试做一个非常小的缓冲区,a.buffer(0.00001),例如(1/1000 毫米,如果是公制坐标)。
在 PostGIS 中,通过这样做可以纠正一些问题。