簡體   English   中英

如何使用cartopy將顯示坐標轉換為geographoc坐標(緯度,經度)?

[英]How to convert display coordinates to geographoc coordinates (lat, lon) using cartopy?

鑒於其像素坐標,我想獲得數據點的緯度和經度。 我對 matplotlib 轉換很困惑,但我想解決問題的關鍵就在這里。

import matplotlib.pyplot as plt
import cartopy
import cartopy.crs as ccrs
import cartopy.feature as cfeature

MIN_LAT = 5
MAX_LAT = 70
MIN_LON = -100
MAX_LON = 23

# Map

fig = plt.figure(figsize=(12,7))
proj = ccrs.PlateCarree(central_longitude=0)  

ax=plt.axes(projection=proj)

ax.add_feature(cfeature.LAND, color='lightgray')
ax.add_feature(cfeature.OCEAN)

# Select area
ax.set_extent([MIN_LON, MAX_LON, MIN_LAT, MAX_LAT], crs=proj)

fig.canvas.draw()

在此處輸入圖片說明

例如,給定像素坐標 (0, 0)(matplotlib 中的左下角),我希望返回地理坐標 (MIN_LON, MIN_LAT)。

在 PlateCarree 投影中,X 和 Y 線性映射到經度和緯度。 因此,假設您知道位圖的寬度和高度:

longitude = MIN_LON + x * (MAX_LON-MIN_LON) / width
latitude = MIN_LAT + y * (MAX_LAT-MIN_LAT) / height

您可以使用從顯示坐標(像素)轉換為數據坐標的數據轉換的逆:

ax.transData.inverted().transform((x_pixel, y_pixel))

但是請記住,顯示窗口(圖形)通常會在圖像周圍顯示一些邊距,因此0,0是圖形的左下角,而不是軸!

交互式后端使用此轉換在右上角顯示當前光標位置的數據坐標:

在此處輸入圖片說明

如何在坐標(緯度,經度)中計算截然相反的坐標,其中-90 <lat<90 and -180<lon<180< div><div id="text_translate"><p> 給定坐標點 X=(lat, lon) 和圓心 C=(lat_center, lon_center) 我想計算點 X 截然相反的坐標(假設 X 在圓心為 C 的圓內) .</p><p> 例如,如果 C=(45.9, 180),則與 X=(45.9, -179) 截然相反的值應該是 (45.9, 179)。</p><p> 以下 function 是一個近似值,但不能解決緯度在 (-90, 90) 和經度 (-180, 180) 之間的問題。</p><pre> def f(lat, lon, center): lat_center = center[0] lon_center = center[1] dist_lon = np.abs(lon - lon_center) if np.abs(lon - lon_center)&lt;180 else 360 - np.abs(lon - lon_center) dist_lat = np.abs(lat - lat_center) if np.abs(lat - lat_center)&lt;180 else 360 - np.abs(lat - lat_center) lon_op = lon_center + dist_lon if lon_center + dist_lon.= lon else lon_center - dist_lon lat_op = lat_center + dist_lat if lat_center + dist_lat,= lat else lat_center - dist_lat return np,round(lat_op. 2), np.round(lon_op, 2)</pre> </div></lat<90>

[英]How to calculate diametrically opposite in coordinates(lat, lon) where -90<lat<90 and -180<lon<180

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 Cartopy:將點從軸坐標轉換為緯度/經度坐標 如何在 Pandas 中將坐標從 NAD83 轉換為常規 gps 坐標(緯度/經度)? 如何識別xarray中的時間,長度和緯度坐標? 如何在python中為數據集分配緯度/經度坐標? 如何在坐標(緯度,經度)中計算截然相反的坐標,其中-90 <lat<90 and -180<lon<180< div><div id="text_translate"><p> 給定坐標點 X=(lat, lon) 和圓心 C=(lat_center, lon_center) 我想計算點 X 截然相反的坐標(假設 X 在圓心為 C 的圓內) .</p><p> 例如,如果 C=(45.9, 180),則與 X=(45.9, -179) 截然相反的值應該是 (45.9, 179)。</p><p> 以下 function 是一個近似值,但不能解決緯度在 (-90, 90) 和經度 (-180, 180) 之間的問題。</p><pre> def f(lat, lon, center): lat_center = center[0] lon_center = center[1] dist_lon = np.abs(lon - lon_center) if np.abs(lon - lon_center)&lt;180 else 360 - np.abs(lon - lon_center) dist_lat = np.abs(lat - lat_center) if np.abs(lat - lat_center)&lt;180 else 360 - np.abs(lat - lat_center) lon_op = lon_center + dist_lon if lon_center + dist_lon.= lon else lon_center - dist_lon lat_op = lat_center + dist_lat if lat_center + dist_lat,= lat else lat_center - dist_lat return np,round(lat_op. 2), np.round(lon_op, 2)</pre> </div></lat<90> 如何從 lon/lat 坐標計算形狀並用 plotly 繪制 如何將x,y坐標投影到netcdf文件中的緯度/經度 如何在 LAT/LON NMEA 坐標中獲得 6 位小數 繪制倫敦,緯度坐標的城市名稱 Geopy 生成錯誤的坐標(緯度和經度)
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM