最近接到一个需求,计算一个坐标点(经纬度)是否在多边形(地理区域)内,之前写代码的哥们非常用功的搞懂了计算原理并用SQL实现了完整代码🐮,but计算完所有数据需要一周时间,这个项目的负责人打电话问我,有没有更快的办法,我想了想,假如这个办法真的这么复杂,极端情况下只能看懂计算方法换别的方式实现,不过Life is short, you need Python ,于是很轻松的搜索到了shapely库。
shapely是专门做图形计算的包,基本上图形线段,点的判断包里都有,shapely里主要由Point,LineString,Polygon这三类组成,在shapely里点,线,面之间都是可以做判断的,比如说计算点到线段的距离,点到面之间的距离,点与点之间的距离,点是否在一个图形的内部或外部,或边界上,线是否在图形的内部等。