簡體   English   中英

將經度從 -180 更改為 180 到 0 到 360

[英]Change longitude from -180 to 180 to 0 to 360

我想將數組的經度從 -180 度到 180 度格式更改為 0-360。 有沒有辦法在不使用循環或 if 語句的情況下做到這一點?

lon_04_window = [ 1.39698386e-09   6.53551058e-02   1.30710210e-01   1.96065315e-01 2.61420419e-01   3.26775523e-01   3.92130628e-01   4.57485732e-01 5.22840836e-01   5.88195941e-01   6.53551045e-01   7.18906150e-01 7.84261254e-01   8.49616358e-01   9.14971463e-01   9.80326567e-01 1.04568167e+00   1.11103678e+00   1.17639188e+00   1.24174698e+00 1.30710209e+00   1.37245719e+00   1.43781230e+00   1.50316740e+00 1.56852251e+00   1.63387761e+00   1.69923272e+00   1.76458782e+00 1.82994292e+00   1.89529803e+00   1.96065313e+00   2.02600824e+00 2.09136334e+00   2.15671845e+00   2.22207355e+00   2.28742865e+00 2.35278376e+00   2.41813886e+00   2.48349397e+00   2.54884907e+00 2.61420418e+00   2.67955928e+00   2.74491439e+00   2.81026949e+00]

循環代碼:

for i in range(len(lon)):
    if lon[i] < 0:
        lon[i] = lon[i]+360

假設lon_04_window是一個 numpy 數組,並且您想要從 [0,360] 到 [-180,180]:

((lon_04_window - 180) % 360) - 180

np.mod(lon_04_window - 180.0, 360.0) - 180.0

如果你真的想從 [-180,180] 范圍到 [0, 360] 如OP中所述:

lon_04_window % 360

如果lon_04_window不是numpy數組,請使其:

import numpy as np
lon_04_window = np.asarray(lon_04_window)
def rewrap(x):
    return (x + 180) % 360 - 180

這也可以直接應用於 NumPy 數組,而不僅僅是標量。

np.mod(lon_04_window, 360)正常工作。

在 PostgreSQL 中:

UPDATE table SET lon = lon -360 WHERE lon > 180 ;  

如果 0 從格林威治開始。

暫無
暫無

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

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