趣味で計算流砂水理

趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

備忘録:河川屋にはお馴染みの「特殊基準面」まとめ


一般に,標高の基準は東京湾平均海面T.P.+0mが使用されますが,我々の業界では,しばしば「特殊基準面」を用います. 「特殊基準面」とは,河川、水系等で定められた固有の基準面を示します。

代表的なものとして下表が挙げられます.

特殊基準面 東京湾平均海面(T.P.)への変換式 主に使用する河川
T.P. Tokyo Peil 東京湾平均海面 - 下記以外
K.P. Kitakami Peil 北上川基準水面 [T.P.] = [K.P.] - 0.8745 北上川
S.P. Shiogama Peil 塩釜港平均海面 [T.P.] = [S.P.] - 0.0873 鳴瀬川
Y.P. Yedogawa Peil 江戸川工事基準面 [T.P.] = [Y.P.] - 0.8402 利根川
A.P. Arakawa Peil 霊岸島量水標の最低潮位 [T.P.] = [A.P.] - 1.1344 荒川・中川・多摩川
O.P. Osaka Peil 大阪湾最低潮位 [T.P.] = [O.P.] - 1.3 淀川
A.P. Awa Peil 阿波量水標零点高 [T.P.] = [A.P.] - 0.8333 吉野川
T.P.w. 四万十川(渡川)量水標零点高 [T.P.] = [T.P.w] + 0.113 渡川
B.S.L. Biwako basic Surface Level 鳥居川水位観測所の零点高 [T.P.] = [B.S.L.] + 84.371 琵琶湖

この「特殊基準面」は,正式な測量 でも使用することができます.

出典:河川砂防技術基準(案) 調査編 平成9年版 第21章 測量 - 第8節 水準基標測量

基準面はすべて東京湾平均海面T.P.+0mで良いとも思いますが,基準面の標高は地震ですぐに変わってしまうので,「特殊基準面」の使い勝手が良いこともあります.

令和6年能登半島地震の例 www.gsi.go.jp

比較のため,いくつかの「特殊基準面」を並べると以下のとおりです.

ソースコードこちら

参考サイト: グラフをxkcd風に作成する #Python - Qiita


参考サイト


htmlの表作成は,tablesgeneratorhttps://www.tablesgenerator.com/を使用.

修正版:Pythonで写真からExif情報を抽出する

本記事のソースコードはGistでも公開しています.

gist9edf8ff48c8a64351994141b51d0bb9d



導入

news.mynavi.jp

基本的に上記サイトのままですが, Pillow==7.2.0以降では仕様変更に伴い,元のままだと動かないので一部修正しました.

  • 仕様変更:公式

7.2.0 - Pillow (PIL Fork) 10.3.0 documentation

  • 仕様変更:参考サイト

PillowでExif情報を遊ぶ ~辞書の復習を兼ねて~ #Python - Qiita

修正したプログラム

修正したプログラムは以下のとおりです.

"GPSLatitude"タグ,"GPSLongitude"タグの表記が変わったので,それに対応するように修正しました.

from PIL import Image
import PIL.ExifTags as ExifTags

def get_gps(fname):
    im = Image.open(fname)
    # EXIF情報を辞書型で得る
    exif = {
        ExifTags.TAGS[k]: v
        for k, v in im._getexif().items()
        if k in ExifTags.TAGS
    }
    # GPS情報を得る --- (*2)
    gps_tags = exif["GPSInfo"]
    gps = {
        ExifTags.GPSTAGS.get(t, t): gps_tags[t]
        for t in gps_tags
    }
    
    # 変更箇所
    conv_deg = lambda v : v[0] + (v[1] / 60.0) + (v[2] / 3600.0)
    
    lat = conv_deg(gps["GPSLatitude"])
    lat_ref = gps["GPSLatitudeRef"]
    if lat_ref != "N": lat = 0 - lat
    lon = conv_deg(gps["GPSLongitude"])
    lon_ref = gps["GPSLongitudeRef"]
    if lon_ref != "E": lon = 0 - lon
        
    return lat, lon
fname = 'XX.JPG'
get_gps(fname)

# (36.62291111111111, 138.24255277777777)

応用編:フォルダ内の全JPGファイルのEXIF情報を取得し,geojson形式で出力

作成した関数を用いて,フォルダ内の全JPGファイルのEXIF情報を取得して,位置情報をgeojson形式で出力するプログラムを作成しました.

import os
import glob
import pandas as pd
import geopandas as gpd
import numpy as np


#  ファイルリストを取得
path = r'C:\\Users'
fnames = glob.glob(path + '\\*.JPG')

# 位置情報を取得し,GeoDataFrameに格納
coords = [get_gps(f) for f in fnames]
c = np.array(coords)

df = pd.DataFrame({
'lat':c[:,0] ,'lon':c[:,1]
,'filename':[os.path.basename(f) for f in fnames]
,'fullpath': fnames
})

geometry = gpd.points_from_xy(df.lon, df.lat, crs="EPSG:4326")
gdf = gpd.GeoDataFrame(df, geometry=geometry)

# geojson形式で出力
out = gdf.to_file('photo.geojson', driver='GeoJSON')
del out

おまけ:QGISに写真付きで表示する

上記で作成したphoto.geojsonをQGISに読み込み,以下の手順を実施する.

  1. [シンボロジ] タブを開き,[単一定義]を選択し, [シンボルレイヤタイプ] を [ラスタ画像マーカー]にする.
  2. 図★箇所をクリックして,[属性の型]-[fullpath]を選択する .
  3. 必要に応じてサイズを調整

※日本語のファイルパスは使用できません.

上手く調整すると以下のようになる.

参考サイト

なお,上記サイトではImportPhotosプラグインが使用されていましたが,QGIS3.28では動きませんでした.

Gist

gist9edf8ff48c8a64351994141b51d0bb9d

勉強会の議事メモ:2024/03/02

勉強会お疲れ様でした。


一般座標系平面二次元河床変動計算を書く

computational-sediment-hyd.hatenablog.jp

上記記事のパターン1をベースに検討を進める。

⇒ SIMPLE法を基本とした離散化を検討 ⇒ プリミティブ変数はv,hか?q,hでは対応できない。

小さなメッシュサイズおける浅水流計算の問題

computational-sediment-hyd.hatenablog.jp

⇒ close

スタッガードスキームは離散化方法の修正に対応可(別途書きます。)

AMR法(Adaptive Mesh Refinement、適合格子細分化法)

引き続き、文献収集を行う。

  • PARAMESHが参考になる?

備忘録:pythonでwebスクレイピング:プログラミングの筋トレ


導入

たまにやらないと忘れるので。簡単なスクレイピングの話です。

海上保安庁の潮汐推算のwebページスクレイピングです。

データ公開ページ(例えば、https://www1.kaiho.mlit.go.jp/TIDE/pred2/cgi-bin/TidePredCgi.cgi?area=1603&back=../TidePred/tide_pred/2.htm&btn=ForAreaWindow_Japanese )ですが、 なぜかボタンをクリックするとバグります。

pythonによるwebスクレイピング

pythonでのwebスクレイピングのコツは、

  • seleniumに頼らない。出来るだけbeautifulsoupを使う。
  • Chromeデベロッパーツールでwebサイトをしっかり分析する。

くらいじゃないでしょうか。

それだけ、上のhtml内にタグで数値が埋め込まれているような化石サイトでも、下記のような短いコードでスクレイピングできます。

import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
import requests
def getHarr(Area,Area2,year,month,day):
    url = f'https://www1.kaiho.mlit.go.jp/TIDE/pred2/cgi-bin/TidePredCgi.cgi?area={Area}&back=../TidePred/tide_pred/{Area2}.htm&year={year}&month={month}&day={day}&btn=%E6%8E%A8%E3%80%80%E7%AE%97'
    res = requests.get(url)
    soup = BeautifulSoup(res.content, 'html.parser')
    text = [t.get_text() for t in soup.findAll("td")]
    data = text[14:26] + text[40:52]
    # マイナス値の処理
    data = [d.replace(' ','') for d in data]
    return np.array(data, dtype=float)
%%time
Area = 1603
Area2 = 5
sdate = '2023/01/01'
edate = '2023/12/31'

val = [getHarr(Area, Area2, d.year, d.month, d.day) for d in pd.date_range(sdate, edate, freq='D')]
val = np.array(val).flatten()

df = pd.DataFrame(val
             , columns=[Area]
             , index=pd.date_range(sdate, periods=len(val), freq='H')
                 )
CPU times: total: 2min 16s
Wall time: 3min 49s
  • export
df.to_csv('tmp.csv', index_label='time')
  • export
df.plot()

Gist

gistd8b965fd743e0a46716787187dccfc82

Google Colab

※Colabの解説記事はこちら

Open In Colab

一次元浅水流計算における合流による水位上昇量の計算方法

本記事はGitHub、nbviewer、Colabでも公開しています。

※Colabの解説記事はこちら

a nbviewer Open In Colab



導入

「河道計画検討の手引き」に示される合流による水位上昇の計算方法について解説します。 この手法は、室田 明, 多田 博登:一次元水面形解析における合流点モデルに関する研究が元になっています。

計算式

合流による水位上昇量の計算方法の概要を以下に示す。

手引と同様に合流後河道の流向軸の運動量保存則は以下のとおりとなる。 コントロールボリュームの考え方が若干複雑なため、詳細は元論文を参考にされたい(時間ができたときにまとめます)。

\begin{align}
& \beta \rho Q_2 \frac{Q_2}{B_2h_2}\cos \theta _2 + \beta \rho Q_1 \frac{Q_1}{B_1h_1}\cos \theta _1-\beta \rho Q_3 \frac{Q_3}{B_3h_3}\cos \theta _3 \\
& = B_3\frac{1}{2}\rho g {h_3}^2 - B'_2 \cos \theta _2 \frac{1}{2}\rho g {h_2}^2 - B'_1 \cos \theta _1 \frac{1}{2}\rho g {h_1}^2 
\end{align}

ここに、\rho:水の密度、g:重力加速度、Q:流量、B:水路幅、h:水深、\theta:合流角度(下図参照)、\beta:運動量補正係数、B':修正した川幅(下図参照)、添字1,2,3は河道1,2,3(下図参照、ここでは1:本川、2:支川とする)の諸量である。

元論文のとおりh_1=h_2を条件として式変形を行うと以下のとおりとなる。

\begin{align}
&\left(\frac{B'_2}{B_3}\cos \theta _2 + \frac{B'_1}{B_3}\cos \theta _1\right)\left(\frac{h_1}{h_3}\right)^3-(1+2\beta {Fr}^2)\frac{h_1}{h_3}\\
&\hspace{20mm}+2 \beta \left\{\left(\frac{Q_2}{Q_3}\right)^2 \frac{B_3}{B_2}\cos \theta _2+\left(\frac{Q_1}{Q_3}\right)^2 \frac{B_3}{B_1}\cos \theta _1\right\}{Fr}^2=0\\
\end{align}

ここに、フルード数{Fr}^2=\dfrac{{Q_3}^2}{g{B_3}^2{h_3}^3}とする。

\begin{align}
X&=\dfrac{h_1}{h_3}=\dfrac{h_2}{h_3}&\\
\alpha &= \left(\frac{B'_2}{B_3}\cos \theta _2 + \frac{B'_1}{B_3}\cos \theta _1\right)&\\
\gamma &= \left\{\left(\frac{Q_2}{Q_3}\right)^2 \frac{B_3}{B_2}\cos \theta _2+\left(\frac{Q_1}{Q_3}\right)^2 \frac{B_3}{B_1}\cos \theta _1\right\}
\end{align}

として整理すると、

\begin{align}
X^3-\frac{1+2\beta {Fr}^2}{\alpha}X+ \frac{2 \beta \gamma {Fr}^2}{\alpha}=0
\end{align}

のとおり、Xの三次方程式となる。これを解くことによって水位上昇量を計算する。

なお、元論文では\alpha=1(角度補正した合流前川幅の和が合流後川幅と等しい)を前提条件としているが、前出の手引には記載されていない。

本記事では簡易的に\alpha=1\beta=1として水位上昇量Xの計算を行った。

テスト計算

計算モデル

  • 三次方程式はnp.rootsで解く。
  • 上記の解のうち、実数かつ1以上(水位上昇量のため)のものを水位上昇量とする。
  • 正しい条件を与えると解は1または0個になる。

参考 三次方程式の計算方法:https://west-village-tech.com/cubic_equation/

import numpy as np
def caldhConfluence(Q1Q3 ,Q2Q3 ,B3B1 ,B3B2 ,Theta1 ,Theta2 ,Fr):
    
    g = (Q2Q3)**2*B3B2*np.cos(Theta2*np.pi/180) \
     +  (Q1Q3)**2*B3B1*np.cos(Theta1*np.pi/180)
    
    x = np.roots([1,0,-1-2*Fr**2,2*g*Fr**2])
    
    # 実数のみ抽出
    x2 = x[np.iscomplex(x)==False]
    # 水位上昇量なので1以上のみ
    x3 = x2[np.where(x2>=1.0)]
    
    if len(x3) == 0:
        ans = np.nan
    elif len(x3) == 1:
        ans = x3[0].real
    else:
        print('error')
        ans = np.nan
    return ans

合流角度および合流前流量比の感度分析

合流角度は以下の3ケースを設定する。

\begin{align}
\begin{array}{l:c:c}
\mathrm{Case} & \theta_1[\mathrm{deg}]    & \theta_2[\mathrm{deg}] \\ \hline
\mathrm{Case A}  &  10  &  10 \\ 
\mathrm{Case B}  &  45  &  45 \\ 
\mathrm{Case C}  &  0   &  90 \\ 
\end{array}
\end{align}

合流前流量比は以下の3ケースを設定する。また、川幅はRegime theory(B = 5 \sqrt{Q})により設定する。よって、式中の係数は以下のとおりとなる。

\begin{align}
\begin{array}{l:c:c:c:c:c}
\mathrm{Case} & Q_1:Q_2 & Q_1/Q_3 & Q_2/Q_3 & B_3/B_1 & B_3/B_2 \\ \hline
\mathrm{Case1} & 1:1 & 1/2 & 1/2 & \sqrt{2} & \sqrt{2}  \\
\mathrm{Case2} & 2:1 & 2/3 & 1/3 & \sqrt{3/2} & \sqrt{3}  \\
\mathrm{Case3} & 5:1 & 5/6 & 1/6 & \sqrt{6/5} & \sqrt{6}  \\
\end{array}
\end{align}

これらを組み合わせ9ケースについて合流後のフルード数を0.1~1.0まで変化させた場合の水位上昇量の計算結果を以下に示す。

これらより、以下の点が確認できる。

  • フルード数が大きい程水位上昇量が大きい
  • 合流角度が大きい程水位上昇量が大きい。(CaseA,B)
  • 合流流量比は1:1に近い程水位上昇量が大きい。
  • 直角合流CaseCの場合、合流流量が大きいCase1では水位上昇量は大きいが、Case3で相対的に水位上昇量が小さくなっている。
Fr = np.arange(0.1,1.01,0.1)

Q1Q3=1/2
Q2Q3=1/2
B3B1=np.sqrt(2)
B3B2=np.sqrt(2) 
dhoutA1 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=10 ,Theta2=10 ,Fr=f) for f in Fr]
dhoutA2 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=45 ,Theta2=45 ,Fr=f) for f in Fr]
dhoutA3 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=0 ,Theta2=90 ,Fr=f) for f in Fr]
Q1Q3=2/3
Q2Q3=1/3
B3B1=np.sqrt(3/2)
B3B2=np.sqrt(3) 
dhoutB1 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=10 ,Theta2=10 ,Fr=f) for f in Fr]
dhoutB2 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=45 ,Theta2=45 ,Fr=f) for f in Fr]
dhoutB3 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=0 ,Theta2=90 ,Fr=f) for f in Fr]
Q1Q3=5/6
Q2Q3=1/6
B3B1=np.sqrt(6/5)
B3B2=np.sqrt(6) 
dhoutC1 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=10 ,Theta2=10 ,Fr=f) for f in Fr]
dhoutC2 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=45 ,Theta2=45 ,Fr=f) for f in Fr]
dhoutC3 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=0 ,Theta2=90 ,Fr=f) for f in Fr]
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(context='paper', palette="bright", style="whitegrid", font_scale=0.9)
%matplotlib inline
fig = plt.figure(figsize=(5, 4), dpi=150)
ax = fig.add_subplot() 
ax.plot(Fr,dhoutA1, label='$ \\theta_1 =10,\\theta_2 =10, Q_1:Q_2=1:1$'         , c='b', ls='-')
ax.plot(Fr,dhoutA2, label='$ \\theta_1 =45,\\theta_2 =45, Q_1:Q_2=1:1$'         , c='g', ls='-')
ax.plot(Fr,dhoutA3, label='$ \\theta_1 = 0,\,\,\,\, \\theta_2 =90, Q_1:Q_2=1:1$', c='r', ls='-')

ax.plot(Fr,dhoutB1, label='$ \\theta_1 =10,\\theta_2 =10, Q_1:Q_2=2:1$'         , c='b', ls='--')
ax.plot(Fr,dhoutB2, label='$ \\theta_1 =45,\\theta_2 =45, Q_1:Q_2=2:1$'         , c='g', ls='--')
ax.plot(Fr,dhoutB3, label='$ \\theta_1 = 0,\,\,\,\, \\theta_2 =90, Q_1:Q_2=2:1$', c='r', ls='--')

ax.plot(Fr,dhoutC1, label='$ \\theta_1 =10,\\theta_2 =10, Q_1:Q_2=5:1$'         , c='b', ls=':')
ax.plot(Fr,dhoutC2, label='$ \\theta_1 =45,\\theta_2 =45, Q_1:Q_2=5:1$'         , c='g', ls=':')
ax.plot(Fr,dhoutC3, label='$ \\theta_1 = 0,\,\,\,\, \\theta_2 =90, Q_1:Q_2=5:1$', c='r', ls=':')

ax.set_xlabel('Froude number')
ax.set_ylabel('$X=h_1/h_3=h_2/h_3$')
# ax.set_title('[tex:Q\_1:Q\_2=1:1]')
ax.legend()
plt.show()

合流前川幅の感度分析

次に川幅の影響について感度分析を行った。

ケースとして、合流前川幅がRegime theory(B = 5 \sqrt{Q})の1.2倍、0.8倍を設定した。

式中の係数は以下のとおりとなる。ここでは、Q_1:Q_2=1:1のみとした。

\begin{align}
\begin{array}{l:c:c:c:c:c}
\mathrm{Case} & B_1,B_2 &  Q_1:Q_2 & Q_1/Q_3 & Q_2/Q_3 & B_3/B_1 & B_3/B_2 \\ \hline
\mathrm{Case I}                                 & \mathrm{by\,Regime\,theory}\,\times\,1.0 & 1:1 & 1/2 & 1/2 & \sqrt{2} & \sqrt{2}  \\
\mathrm{Case I\hspace{-1.2pt}I}                 & \mathrm{by\,Regime\,theory}\,\times\,1.2 & 1:1 & 1/2 & 1/2 & \dfrac{5\sqrt{2}}{6} & \dfrac{5\sqrt{2}}{6}   \\
\mathrm{Case I\hspace{-1.2pt}I\hspace{-1.2pt}I} & \mathrm{by\,Regime\,theory}\,\times\,0.8 & 1:1 & 1/2 & 1/2 & \dfrac{5\sqrt{2}}{4} & \dfrac{5\sqrt{2}}{4}   \\
\end{array}
\end{align}

これらについて合流後のフルード数を0.1~1.0まで変化させた場合の水位上昇量の計算結果を以下に示す。

これらより、以下の点が確認できる。

  • 合流前川幅が大きいほど水位上昇量が大きくなる。これは流速が小さくなるためである。
  • 合流前川幅を小さくする場合、本計算条件では約0.7倍以下でXが1以下、つまり水位が上昇しない条件になる(本モデルではnanを返す)。これは、合流前の流れが射流になるためである。
Fr = np.arange(0.1,1.01,0.1)

Q1Q3=0.5
Q2Q3=0.5
B3B1=np.sqrt(2)
B3B2=np.sqrt(2)
dhout1 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=10 ,Theta2=10 ,Fr=f) for f in Fr]

B3B1=5/6*np.sqrt(2)
B3B2=5/6*np.sqrt(2)
dhout2 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=10 ,Theta2=10 ,Fr=f) for f in Fr]

B3B1=5/4*np.sqrt(2)
B3B2=5/4*np.sqrt(2)
dhout3 = [caldhConfluence(Q1Q3,Q2Q3,B3B1,B3B2,Theta1=10 ,Theta2=10 ,Fr=f) for f in Fr]
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(context='paper', palette="bright", style="whitegrid", font_scale=0.9)
%matplotlib inline
fig = plt.figure(figsize=(5, 4), dpi=150)
ax = fig.add_subplot() 
ax.plot(Fr,dhout1, label='$\mathrm{by\,Regime\,theory}\, \\times \,1.0$')
ax.plot(Fr,dhout2, label='$\mathrm{by\,Regime\,theory}\, \\times \,1.2$')
ax.plot(Fr,dhout3, label='$\mathrm{by\,Regime\,theory}\, \\times \,0.8$')

ax.set_xlabel('Froude number')
ax.set_ylabel('$X=h_1/h_3=h_2/h_3$')
ax.set_title('[tex:Q\_1:Q\_2=1:1]')
ax.legend()
plt.show()

GitHub

github.com

参考文献

関連記事

computational-sediment-hyd.hatenablog.jp

備忘録:google Colabでcondaを使うためのライブラリ:condacolabの使い方

本記事はColabでも公開しています。

※Colabの解説記事はこちら

Open In Colab



https://pypi-camo.freetls.fastly.net/6cae3dec9a1e98ece1b184bd4863b26a0f73218d/68747470733a2f2f6769746875622e636f6d2f6a61696d657267702f636f6e6461636f6c61622f7261772f6d61696e2f636f6e6461636f6c61622e706e67

condacolabとは?

https://pypi.org/project/condacolab/(condacolab · PyPI]

Colabでcondaを使うためのライブラリです。

pythonではcondaによるインストールが推奨されるライブラリが多くあります。 Colabではpipが標準でcondaは準備されておりません。 Colabでconda環境を整備できなくはないですが、手間がかかる&安定しません。 そのため、現時点(2024/2/10)ではcondacolabの使用が最適と思われます。

condacolabの使い方

公式https://pypi.org/project/condacolab/のとおりですが簡単にまとめておきます。

インストール

pipでインストールします。

!pip install -q condacolab
import condacolab

メソッド:condacolab.install

condacolab.installでconda環境を構築します。

以下のメソッドが準備されています。

  • 現時点(2024/2/10)ではpython3.10の環境が準備されています。pythonのバージョンは指定できないようです。
  • たまにColabがクラッシュすることがありますが再接続で解決します。

condacolab.install_miniconda()

Minicondaディストリビューションをインストールします。

condacolab.install_miniconda()

condacolab.install_miniforge()

Miniforgeディストリビューションをインストールします。 Miniforgeディストリビューションはconda-forgeによって公式に提供されています。

condacolab.install_miniforge()

condacolab.install_mambaforge()

推奨。Miniforgeのようなものですが、mambaが含まれています。Mambaforgeディストリビューションはconda-forgeによって公式に提供されています。

condacolab.install_mambaforge()

condacolab.install_anaconda()

Anacondaのフルパッケージをインストール?(未確認)

condacolab.install_anaconda()

condacolab.install_from_url()

スクリプトのURLを指定してインストール?(未確認)

condacolab.install()

condacolab.install_mambaforge()と同じ。

メソッド:condacolab.check

condaが正しくインストールされていることを確認する。

condacolab.check()

ライブラリのインストール

ディストリビューションのインストールが完了したら、通常のcondaと同様にライブラリをインストールします。

!conda install [package]

Gist

gista7996070dcafd41c23e421be4639ea5a

備忘録:python shapelyの互換性の問題 2024/02/05時点

pythonのライブラリshapelyは、Version 2.0.1 (2023-01-30)、Version 2.0.2 (2023-10-12)にリリースされていますが、下記のとおり、cartopyでのlgeosのインポートエラーにより一部機能に不具合がでます。

参照:Version 2.x — Shapely 0 documentation

cartopyでのlgeosインポートエラー(2023/06/04)

2023年5月のアップデートに伴い、MacPortsでインストールされるshapelyのバージョンが1.8.5から2.0.1になりました。このバージョンでは、cartopyy-0.21.0が内部でインポートしているlgeosが含まれないようになったため、以下のようなImportErrorが発生します(Python3.10の場合のエラーメッセージ例)。このエラーは、cartopyインポート時に不可避な部分で発生しており、shapely-2.0.1のアップデートが適用されてしまった場合には、shapelyのバージョンを1.8.5に戻す必要があります。

引用元:気象データ解析のためのmatplotlibの使い方:更新・エラー情報

現時点では1.8.5が使うしかないです。2.0で色々な機能が追加されたので、早く修正されると助かります。

conda install shapely==1.8.5 --channel conda-forge