python3射線法判斷點(diǎn)是否在多邊形內(nèi)
本文實(shí)例為大家分享了python3射線法判斷點(diǎn)是否在多邊形內(nèi)的具體代碼,供大家參考,具體內(nèi)容如下
#!/usr/bin/python3.4
# -*- coding:utf-8 -*-
def isPointinPolygon(point, rangelist): #[[0,0],[1,1],[0,1],[0,0]] [1,0.8]
# 判斷是否在外包矩形內(nèi),如果不在,直接返回false
lnglist = []
latlist = []
for i in range(len(rangelist)-1):
lnglist.append(rangelist[i][0])
latlist.append(rangelist[i][1])
print(lnglist, latlist)
maxlng = max(lnglist)
minlng = min(lnglist)
maxlat = max(latlist)
minlat = min(latlist)
print(maxlng, minlng, maxlat, minlat)
if (point[0] > maxlng or point[0] < minlng or
point[1] > maxlat or point[1] < minlat):
return False
count = 0
point1 = rangelist[0]
for i in range(1, len(rangelist)):
point2 = rangelist[i]
# 點(diǎn)與多邊形頂點(diǎn)重合
if (point[0] == point1[0] and point[1] == point1[1]) or (point[0] == point2[0] and point[1] == point2[1]):
print("在頂點(diǎn)上")
return False
# 判斷線段兩端點(diǎn)是否在射線兩側(cè) 不在肯定不相交 射線(-∞,lat)(lng,lat)
if (point1[1] < point[1] and point2[1] >= point[1]) or (point1[1] >= point[1] and point2[1] < point[1]):
# 求線段與射線交點(diǎn) 再和lat比較
point12lng = point2[0] - (point2[1] - point[1]) * (point2[0] - point1[0])/(point2[1] - point1[1])
print(point12lng)
# 點(diǎn)在多邊形邊上
if (point12lng == point[0]):
print("點(diǎn)在多邊形邊上")
return False
if (point12lng < point[0]):
count +=1
point1 = point2
print(count)
if count%2 == 0:
return False
else:
return True
if __name__ == '__main__':
print(isPointinPolygon([0.8,0.8], [[0,0],[1,1],[0,1],[0,0]]))
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Python實(shí)現(xiàn)大文件切片上傳及斷點(diǎn)續(xù)傳的方法
- 詳解Python中的斷點(diǎn)類型
- python實(shí)現(xiàn)斷點(diǎn)調(diào)試的方法
- 基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試
- python 文件下載之?dāng)帱c(diǎn)續(xù)傳的實(shí)現(xiàn)
- Python PyCharm如何進(jìn)行斷點(diǎn)調(diào)試
- 利用Pycharm斷點(diǎn)調(diào)試Python程序的方法
- python實(shí)現(xiàn)可以斷點(diǎn)續(xù)傳和并發(fā)的ftp程序
- python支持?jǐn)帱c(diǎn)續(xù)傳的多線程下載示例
- python斷點(diǎn)測試的實(shí)現(xiàn)
相關(guān)文章
一文帶你玩轉(zhuǎn)python中的requests函數(shù)
在Python中,requests庫是用于發(fā)送HTTP請(qǐng)求的常用庫,因?yàn)樗峁┝撕啙嵰子玫慕涌冢疚膶⑸钊胩接憆equests庫的使用方法,感興趣的可以學(xué)習(xí)下2023-08-08
python利用pandas將excel文件轉(zhuǎn)換為txt文件的方法
今天小編就為大家分享一篇python利用pandas將excel文件轉(zhuǎn)換為txt文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python3和pyqt5實(shí)現(xiàn)控件數(shù)據(jù)動(dòng)態(tài)顯示方式
今天小編就為大家分享一篇Python3和pyqt5實(shí)現(xiàn)控件數(shù)據(jù)動(dòng)態(tài)顯示方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Pytorch實(shí)現(xiàn)WGAN用于動(dòng)漫頭像生成
這篇文章主要介紹了Pytorch實(shí)現(xiàn)WGAN用于動(dòng)漫頭像生成,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Python2和Python3中@abstractmethod使用方法
這篇文章主要介紹了Python2和Python3中@abstractmethod使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
python機(jī)器學(xué)習(xí)庫scikit-learn:SVR的基本應(yīng)用
這篇文章主要介紹了python機(jī)器學(xué)習(xí)庫scikit-learn:SVR的基本應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
教你用Python pygame設(shè)置窗口標(biāo)題和圖標(biāo)
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著用Python pygame設(shè)置窗口標(biāo)題和圖標(biāo)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Python中time模塊與datetime模塊在使用中的不同之處
這篇文章主要介紹了Python中time模塊與datetime模塊在使用中的不同之處,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11

