python射线法如何判断一个点在图形区域内外

  介绍

这篇文章主要介绍python射线法如何判断一个点在图形区域内外,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

用python实现的代码:判断一个点在图形区域内外,具体内容如下

#, - *编码:utf-8  - * -   #文件:class.py   #   ,   “““   信息楼   0,123.425658,41.774177   1,123.425843,41.774166   2,123.425847,41.774119   3,123.42693,41.774062   4,123.426943,41.774099   5,123.427118,41.774089   6,123.427066,41.773548   7,123.426896,41.773544   8,123.426916,41.773920   9日,123.425838,41.773965   10,123.425804,41.773585   11日,123.425611,41.773595   图书馆   0,123.425649,41.77303   1,123.426656,41.772993   2,123.426611,41.772398   3,123.425605,41.772445   “““   ,   ,   class 点:=,lat  & # 39; & # 39;=,lng  & # 39; & # 39;   ,   ,def  __init__(自我,lat,液化天然气):=,,self.lat  lat  #纬度=,,self.lng  lng  #经度   ,   ,def 显示(自我):   ,print  self.lat,““, self.lng   ,   ,   #将信息楼的边界点实例化并存储到里里   时间=point0 点(123.425658,41.774177)   时间=point1 点(123.425843,41.774166)   时间=point2 点(123.425847,41.774119)   时间=point3 点(123.42693,41.774062)   时间=point4 点(123.426943,41.774099)   时间=point5 点(123.427118,41.774089)   时间=point6 点(123.427066,41.773548)   时间=point7 点(123.426896,41.773544)   时间=point8 点(123.426916,41.773920)   时间=point9 点(123.425838,41.773961)   时间=point10 点(123.425804,41.773585)   时间=point11 点(123.425611,41.773595)   ,   时间=points1  [point0 point1,卷帘窗,point3,   ,,,point4 point5 point6, point7,   ,,,point8 point9 point10, point11,   ,,)   ,   ,   #将图书馆的边界点实例化并存储到points2里   时间=point0 点(123.425649,41.77303)   时间=point1 点(123.426656,41.772993)   时间=point2 点(123.426611,41.772398)   时间=point3 点(123.425605,41.772445)   ,   时间=points2  [point0 point1,卷帘窗,point3]   ,   ,   & # 39;& # 39;& # 39;   将里和points2存储到分里,   点可以作为参数传入   & # 39;& # 39;& # 39;   时间=points [里,points2]   ,   ,   & # 39;& # 39;& # 39;   输入一个测试点,这个点通过GPS产生   建议输入三个点测试   在信息学馆内的点:123.4263790000,41.7740520000,123.42699,41.773592,   在图书馆内的点:123.4261550000,41.7726740000,123.42571,41.772499,123.425984,41.772919,   不在二者内的点:123.4246270000,41.7738130000   在信息学馆外包矩形内,但不在信息学馆中的点:123.4264060000,41.7737860000   & # 39;& # 39;& # 39;   # lat =, raw_input (please  input  lat)   # lng =, raw_input (please  input  lng)   lat  123.42699=,   lng  41.773592=,   时间=point 点(lat, lng)   ,   时间=debug  raw_input(“请输入debug")   if  debug ==, & # 39; 1 & # 39;   debug =, True   其他:   ,debug =False   ,   #求外包矩形   def  getPolygonBounds(点):   ,length =, len(分)   ,# top  down  left  right 都是点类型=,,top  down =, left =, right [0]=,点   ,for 小姐:拷贝范围(长度):   点,if [我].lng 祝辞,top.lng:   top 才能=,点【我】   点,elif [我].lng  & lt;, down.lng:   down 才能=,点【我】   ,其他的:   ,通过   点,if [我].lat 祝辞,right.lat:   right 才能=,点【我】   点,elif [我].lat  & lt;, left.lat:   left 才能=,点【我】   ,,:   ,才能通过   ,=,point0 点(left.lat top.lng)=,point1 点(right.lat top.lng)=,point2 点(right.lat down.lng)=,point3 点(left.lat down.lng)=,polygonBounds  [point0 point1,卷帘窗,point3]   return  polygonBounds   ,   #测试求外包矩形的一段函数   if 调试:=,,poly1  getPolygonBounds(点[0])   ,print “第一个建筑的外包是:“   ,for 小姐:拷贝范围(0,len (poly1)):   ,poly1[我],告诉(),=,,poly2  getPolygonBounds[1](点)   ,print “第二个建筑的外包是:“   ,for 小姐:拷贝范围(0,len (poly2)):   ,poly2[我],告诉(),   ,   ,   #判断点是否在外包矩形外   polygonBounds def  isPointInRect(点):   ,if  point.lng 祝辞=,polygonBounds [3] .lng 以及\   point.lng 才能;& lt;=, polygonBounds [0] .lng 以及\   point.lat 才能;祝辞=,polygonBounds [3] .lat 以及\   point.lat 才能;& lt;=, polygonBounds [2] . lat: \   return 才能正确   ,其他的:   return 假   ,   #测试是否在外包矩形外的代码   if 调试:   ,如果(isPointInRect(点,poly1)):   ,print “在信息外包矩形内“;   ,其他的:   ,print “在信息外包矩形外,   ,   ,如果(isPointInRect(点,poly2)):   ,print “在图书馆外包矩形内“;   ,其他的:   ,print “在图书馆外包矩形外,   ,   ,   ,   #采用射线法,计算测试点是否任意一个建筑内   def  isPointInPolygon(点、点):   ,#定义在边界上或者在顶点都建筑内   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

python射线法如何判断一个点在图形区域内外