经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
python3射线法判断点是否在多边形内
来源:jb51  时间:2019/6/28 12:39:04  对本文有异议

本文实例为大家分享了python3射线法判断点是否在多边形内的具体代码,供大家参考,具体内容如下

  1. #!/usr/bin/python3.4
  2. # -*- coding:utf-8 -*-
  3. def isPointinPolygon(point, rangelist): #[[0,0],[1,1],[0,1],[0,0]] [1,0.8]
  4. # 判断是否在外包矩形内,如果不在,直接返回false
  5. lnglist = []
  6. latlist = []
  7. for i in range(len(rangelist)-1):
  8. lnglist.append(rangelist[i][0])
  9. latlist.append(rangelist[i][1])
  10. print(lnglist, latlist)
  11. maxlng = max(lnglist)
  12. minlng = min(lnglist)
  13. maxlat = max(latlist)
  14. minlat = min(latlist)
  15. print(maxlng, minlng, maxlat, minlat)
  16. if (point[0] > maxlng or point[0] < minlng or
  17. point[1] > maxlat or point[1] < minlat):
  18. return False
  19. count = 0
  20. point1 = rangelist[0]
  21. for i in range(1, len(rangelist)):
  22. point2 = rangelist[i]
  23. # 点与多边形顶点重合
  24. if (point[0] == point1[0] and point[1] == point1[1]) or (point[0] == point2[0] and point[1] == point2[1]):
  25. print("在顶点上")
  26. return False
  27. # 判断线段两端点是否在射线两侧 不在肯定不相交 射线(-∞,lat)(lng,lat)
  28. if (point1[1] < point[1] and point2[1] >= point[1]) or (point1[1] >= point[1] and point2[1] < point[1]):
  29. # 求线段与射线交点 再和lat比较
  30. point12lng = point2[0] - (point2[1] - point[1]) * (point2[0] - point1[0])/(point2[1] - point1[1])
  31. print(point12lng)
  32. # 点在多边形边上
  33. if (point12lng == point[0]):
  34. print("点在多边形边上")
  35. return False
  36. if (point12lng < point[0]):
  37. count +=1
  38. point1 = point2
  39. print(count)
  40. if count%2 == 0:
  41. return False
  42. else:
  43. return True
  44. if __name__ == '__main__':
  45. print(isPointinPolygon([0.8,0.8], [[0,0],[1,1],[0,1],[0,0]]))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号