91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python替代Mapinfo更快查找兩張表中距離最近的點

發布時間:2021-10-09 17:51:49 來源:億速云 閱讀:148 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關如何用Python替代Mapinfo更快查找兩張表中距離最近的點,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

 一、前言

工作中有時需要把A表中的經緯度點,從B表中匹配一個最近的點出來,用Mapinfo也可以實現,但處理速度慢,特別是數據量大時根本處理不動,此時用Python就能輕松實現,還能顯示處理進度,詳細如下。

二、項目目標

用Python實現兩張表間最近點的計算。

三、項目準備

軟件:PyCharm

需要的庫:pandas, xlrd,os

四、項目分析

1)如何選擇并讀取要處理的Excel文件?

利用os、xlrd,選擇要讀取處理的Excel文件。

2)如何計算兩個經緯度點的距離?

利用pandas庫讀取兩張表的內容,再定義函數計算兩個經緯度點的距離。

3)如何循環計算并保存最近一個點的數據?

利用For循環,對兩張表的內容進行循環讀取,通過If判斷保留最近的距離點數據。

4)如何保存結果?

利用to_excel保存,得到最近點的數據。

五、項目實現

1、第一步導入需要的庫

import pandas as pd import xlrd import os

2、第二步選擇并讀取要處理的Excel文件

path="D:/a/"    #獲取文件夾下所有EXCEL名    bb = path + 'result.xlsx'    writer = pd.ExcelWriter(bb,engine='openpyxl')    xlsx_names = [x for x in os.listdir(path) if x.endswith(".xlsx")]    # 獲取第一個EXCEL名    xlsx_names1 = xlsx_names[0]    aa = path + xlsx_names1    #打開第一個EXCEL    first_file_fh=xlrd.open_workbook(aa)    # 獲取SHEET名    first_file_sheet=first_file_fh.sheets()

3、第三步循環計算并保存最近一個點的數據

for i in range(h2):      w1=df1.loc[i,'緯度']      j1 = df1.loc[i,'經度']      d1 = df1.loc[i, :]      d0=10000000000000000000000000.0000      print("原小區第%d個。" %(i+1))      test_dict = {'距離': [d0]}      d3 = pd.DataFrame(test_dict)       for l in range(h3):          w2=df2.loc[l, '緯度']          j2=df2.loc[l,'經度']          d=haversine(j1, w1, j2, w2)          if d<d0:              d0=d              d2 = df2.loc[l, :]              test_dict = {'距離': [d0]}              d3 = pd.DataFrame(test_dict)          else:continue

4、第四步保存計算后的文件

resultdata1.to_excel(excel_writer=writer, sheet_name='原小區', encoding="utf-8", index=False) resultdata2.to_excel(excel_writer=writer, sheet_name='最近小區', encoding="utf-8", index=False) resultdata3.to_excel(excel_writer=writer, sheet_name='距離', encoding="utf-8", index=False) writer.save() writer.close()

六、效果展示

1、處理前數據:

如何用Python替代Mapinfo更快查找兩張表中距離最近的點

2、處理進度顯示:

如何用Python替代Mapinfo更快查找兩張表中距離最近的點

3、處理結果:

如何用Python替代Mapinfo更快查找兩張表中距離最近的點

利用Python計算兩個經緯度點間的距離,并在兩張表間進行最近點計算,這本來是Mapinfo的分內之事,但數據量大時就處理不動了,Python處理速度快,還能對數據進行預處理,正是由于可以自己優化代碼,可以無限提高運行速度,比如數據切塊處理,有興趣的同學可以進一步研究下。

以上就是如何用Python替代Mapinfo更快查找兩張表中距離最近的點,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

垫江县| 邯郸县| 黎川县| 江源县| 安图县| 揭东县| 论坛| 霍州市| 赤水市| 六枝特区| 南木林县| 景宁| 康乐县| 钟山县| 禹州市| 遂川县| 海林市| 琼中| 仁寿县| 常宁市| 姜堰市| 舟山市| 乐亭县| 独山县| 海城市| 垫江县| 永年县| 霞浦县| 陕西省| 峨山| 九龙坡区| 沽源县| 南安市| 柳州市| 盈江县| 怀宁县| 博爱县| 连平县| 宜州市| 南部县| 嘉禾县|