我在学习如何检查多边形中的一个点。其思想是计算水平线与多边形边相交的次数。你知道吗
我之前的研究是从互联网上找到一个代码,它是:
def IsPtInPoly(aLon, aLat, pointList):
'''''
:param aLon: double Longitude
:param aLat: double Latitude
:param pointList: list [(lon, lat)...] The vertex of the polygon should be either clockwise or counter clockwise
'''
iSum = 0
iCount = len(pointList)
if(iCount < 3):
return False
for i in range(iCount):
pLon1 = pointList[i][0] # ith point
pLat1 = pointList[i][1] # ith point
if(i == iCount - 1):
pLon2 = pointList[0][0] # start from beginning
pLat2 = pointList[0][1] # start from beginning
else:
pLon2 = pointList[i + 1][0] #(i+1)th point
pLat2 = pointList[i + 1][1] #(i+1)th point
if ((aLat >= pLat1) and (aLat < pLat2)) or ((aLat>=pLat2) and (aLat < pLat1)):
if (abs(pLat1 - pLat2) > 0):
pLon = pLon1 - ((pLon1 - pLon2) * (pLat1 - aLat)) / (pLat1 - pLat2)
# That's what confuse me.
if(pLon < aLon):
iSum += 1
if(iSum % 2 != 0):
return True
else:
return False
我的问题是:pLon = pLon1 - ((pLon1 - pLon2) * (pLat1 - aLat)) / (pLat1 - pLat2)
在说什么,为什么它能得到多边形边的x坐标。我需要详细的解释。泰铢
目前没有回答
相关问题 更多 >
编程相关推荐