德州撲克線上-劉真病逝97天 作者:nb11 2020 年 6 月 30 日 Python GDAL 圖像坐標,投影坐標,德州撲克線上經緯度坐標 三者映射及運行錯誤解決題記: 寫該博客是因為自己經常遇到這個問題,而我發現網絡上關于這方面瀏覽量高的一些代碼竟然都有誤,每次照搬都被虐得很慘。有一些同志在某些博客下方留言說代碼有問題,而博主沒有回應,也沒有更改錯誤。為了自己及他人以後的方便,故于此附上我反復驗證後的代碼,並分享一下我解決這個問題時的一些經驗。摘要:(1)圖像坐標,投影坐標,經緯度坐標 三者的映射代碼 (2)運行出現 NotImplementedError: Wrong number or type of arguments for overloaded function 'CoordinateTransformation_TransformPoint'. 錯誤的解決辦法。正文:(1)三者的映射代碼Tiles_file='S2A_MSIL1C_20170309T031621_N0204_R075_T50SLG_20170309T031619.tif' dataset = gdal.Open(Tiles_file) # 讀入影像文件nXSize錛nYSize=dataset.RasterXSize錛dataset.RasterYSize # 影像列數,行數trans = dataset.GetGeoTransform() prosrs = osr.SpatialReference()prosrs.ImportFromWkt(dataset.GetProjection())geosrs = prosrs.CloneGeogCS()col=0 # 【圖像坐標】像素所在列row=0 #【圖像坐標】像素所在行px = trans[0] + col * trans[1] + row * trans[2] # 299980.0該點在經度方向的【投影坐標】py = trans[3] + col * trans[4] + row * trans[5] #4090220.0 該點在緯度方向的【投影坐標】ct = osr.CoordinateTransformation(prosrs錛 geosrs)# 表示從投影坐標系映射到地理坐標系coords = ct.TransformPoint(px錛 py)lat=coords [0] # 【地理坐標】緯度lon=coords [1]# 【地理坐標】經度補充說明:1. 如果你想要得到左上角像素的中心坐標,你需要設置 col錛row=0.5錛0.5下面附上該影像的四至點坐標:col錛row=0錛0#299980.0 4200010.0左上 像素左上角點 # (37.92566740942532錛 114.7242415990631) col錛row=nXSize-1錛nYSize-1#409790.0 4090220.0 右下像素左上角點# (36.953738446008366錛 115.98676016473146)col錛row=nXSize-1錛0#409790.0 4200010.0 右上像素左上角點# (37.94320029660642錛 115.97332489462718)col錛row=0錛nYSize-1#299980.0 4090220.0 左下像素左上角點# (36.936817812938365錛 114.75399815989871)2. 關于trans = dataset.GetGeoTransform() 的介紹trans 是一個Tuple類型的變量包含6個元素,[trans[0],trans[3]] 是影像左上角像素的左上角點坐標,前者為經度方向的投影坐標,後者為緯度方向的投影坐標 trans[1] 表示像素寬度 ,trans[5] 表示像素高度3. 關于coords = ct.TransformPoint(px錛 py)的介紹coords 是一個Tuple類型的變量包含3個元素,coords [0]為緯度,coords [1]為經度,coords [2]為高度(2) 出現如下錯誤的解決方法 NotImplementedError: Wrong number or type of arguments for overloaded function'CoordinateTransformation_TransformPoint'.Possible C/C++ prototypes are: OSRCoordinateTransformationShadow:TransformPoint(double [3]) OSRCoordinateTransformationShadow::TransformPoint(double [4])OSRCoordinateTransformationShadow::TransformPoint(double [3]錛double錛double錛double) OSRCoordinateTransformationShadow::TransformPoint(double [4]錛double錛double錛double錛double)https://gis.stackexchange.com/questions/331908/notimplementederror-wrong-number-or-type-of-arguments-for-overloaded-function建議先檢查projection 是否為空,我print(dataset.GetProjection())輸出的果然是空字符串' '。我最終的解決辦法是:首先卸載gdal ,pip uninstall gdal(site-pakage 下若有同名殘留文件,且刪除)然後,去下載gdal whl 文件 https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal GDAL‑3.0.4‑cp36‑cp36m‑win_amd64.whl表示指出python3.6錛 window 64位系統該文件下載很慢,劉真病逝97天如有需要發QQ郵件給我552569054@qq.com 最後,pip install GDAL‑3.0.4‑cp36‑cp36m‑win_amd64.whl 結語:如有錯誤,歡迎大家在下方留言並發郵件提醒我,謝謝。隨著UWB傳感器在室內定位市場中的大量應用,了解其基本的定位算法對于企業算法工程師或者剛入門的科研工作者具有重要的價值。因而,本文主要介紹UWB TOA定位模式下針對LOS場景提出的CWLS算法。1. TOA模式基本定位原理 在TOA定位模式下,滾金電子遊戲場標簽(移動站)分別會與固定基站進行通信,從而獲得兩兩之間的信號飛行時間,通過時間與光速相乘,得到標簽與每一個基站之間的距離。在每組定位過程中,依據基站的坐標和標簽與基站之間的距離,從而可以計算得到標簽的坐標。其基本原理公式為:注釋:M是基站數目,x和y為待求標簽坐標,xi和yi為第i個基站二維笛卡爾坐標,di為標簽與第i個基站之間的歐氏距離。2. 最小二乘標準形式 通過對公式(1)進行兩邊平方處理後,莊卓然任飛豬總裁可以將其轉化成AX=b的標準形式(其實很多算法的本質都是跟最小二乘有關系的,比如卡爾曼濾波系列等):注釋:原文中的sita改成本帖的X,以便書寫方便。3. CWLS算法標準形式 注意到公式(8)中的X裡面其實有三個變量,英國 文官 請辭而三個變量之間存在特殊關系(如圖2所示),911娛樂城故而可以構成CWLS的標準形式:4. CWLS算法的基本解法 本文的CWLS解法,主要將約束條件挪到目標函數中,通過構造拉格朗日形式去除約束項,並通過求導技術進行對標簽坐標和拉格朗日乘子進行逼近求解,從而獲得高精度的定位解。 最後,歡迎關注本人公眾號(或者微信公眾號搜索: UWB2020),帶你走進無線傳感器定位的多彩世界!,