簡體   English   中英

在 Cartopy UTM 投影上設置軸范圍

[英]Setting axis extent on Cartopy UTM projection

我想使用 Matplotlib ( v3.1.3 ) 和 Cartopy ( v0.17.0 ) 繪制一組 UTM 坐標,然后手動設置軸的范圍。 通常我可以用axis.set_extent((left, right, bottom, top))來做到這一點,但是當我嘗試用 UTM 坐標來做到這一點時,我收到一條錯誤消息,聲稱我的坐標超出了允許的范圍。 當我從字面上復制並插入當前軸范圍(使用axis.get_extent() )時,也會發生這種情況。

請參閱以下最小示例:

import cartopy
import cartopy.crs as ccrs
import numpy as np
import matplotlib.pyplot as plt

# Some random UTM coordinates
UTM = np.array([
    [328224.965, 4407328.289],
    [328290.249, 4407612.599],
    [328674.439, 4408309.066],
    [327977.178, 4407603.320],
    [328542.037, 4408510.581]
]).T

# Split into east and north components
east, north = UTM

# Create a canvas with UTM projection
fig = plt.figure()
ax = fig.add_subplot(111, projection=ccrs.UTM(zone="11S"))

# Plot coordinates
ax.scatter(east, north)

# Get the extent of the axis
extent = ax.get_extent()
# Attempt to set the axis extent
ax.set_extent(extent)

plt.show()

這引發了以下異常:

ValueError: Failed to determine the required bounds in projection coordinates. Check that the values provided are within the valid range (x_limits=[-250000.0, 1250000.0], y_limits=[-10000000.0, 25000000.0]).

這是一個錯誤還是我做錯了什么? 還有另一種設置軸范圍的方法嗎?

代碼行:

ax.set_extent(extent)

有一個選項crs=None ,這意味着將ccrs.PlateCarree()作為默認值。 這意味着經度和緯度的值在代碼中的extent是預期的。

為了正確,您必須指定正確的 crs:-

ax.set_extent(extent, crs=ccrs.UTM(zone="11S"))

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM