之前使用rtree来进行拓扑检查,主要是使用GeoDataFrame的sindex来实现的,但是由于某种未知的原因,rtree总是会莫名奇妙的运行错误,且没有任何错误提示,因此博主自己实现了一版拓扑检查,思想和之前其实差不多:先得到所有几何体的外接矩形框,然后根据外接矩形框判断是否有可能相交(矩形框相交,几何体才有相交的可能性),通过外接矩形框的筛选之后,再对可能相交的几何体进行一个精确的相交判断,代码实现如下:
import geopandas
import copy
import matplotlib.pyplot as plt
import time
gdf=geopandas.read_file("D:\\problem.shp")
gdf=gdf[gdf.boundary.is_simple]
gdf.reset_index(drop=True,inplace=True)
import shapely.geometry as geo
def RectangleIntersection(r1,r2): #判断两矩形是否相交 r[xmin,ymin,xmax,ymax]
x1min,y1min,x1max,y1max=r1
x2min,y2min,x2max,y2max=r2
w1=x1max-x1min
h1=y1max-y1min
w2=x2max-x2min
h2=y2max-y2min
xc1=(x1min+x1max)/2
yc1=(y1min+y1max)/2
xc2=(x2max+x2min)/2
yc2=(y2max+y2min)/2
if abs(xc1-xc2)
关注
打赏