前回のBlog記事:https://shikuuk.blogspot.com/2025/06/python-folium-relearning8-from-may.html
DummyDataをMakeUseしたCodeがAlmostCompleteしたので、NextはJapaneseGovのJapanLandNumericalInformation上にある実在のDamInformationをUseして、DamのSpecificationやLocationを表示するAppにevolutionしたいと思います。
InAdvanceでTryしてみたところ、StreamlitならではのSubjectやproblemが出てきたので、大変勉強になりました。ExamplyにWriteすると、
- StreamlitでMakeしたAppは、App上で何かOperationするたびに基本的にCodeをInitialOrderからActivateしていくので、今回のようにWeb上のDataBaseを単純にRequest-GetするCodeをWriteすると、OperationのたびにWeb上のDataBaseをRequestしにいくため、Requestが多すぎてErrorになる。
とか、
- Likely AboveのReasonで、GeoDataFrameのColumnNameをW01_001といったSimbolicSignから「ダム名称」のようなJapaneseにRewriteする際に、RewriteするCodeの位置を間違うと、一度目はうまくRewriteできるけど、App上でOperateがOccureしたあとの2度目の処理の際にHaveRewrittenのColumnNameをSearchしに行き、すでにColumnNameがRewriteされているのでSearchしようとしているColumnNameがFindOutできずにErrorがHappenする
などなどにEncounterしました。StreamlitのHabitをUnderstandしたうえでCodeをWriteするRequirementがExistであることをRealizedでした。
So, the Conclusion that I come to, at firstで、Web上からGetするInformationを、App内で取り扱いやすいようにInAdvanceにProseccingしておくことだとThinkしました。
From Here, FirstでJapan Land Numerical InformationのDamInformationをGetして、App内でUseしやすいGeoDataFrameにProseccingします。
まずは、幹のPartになるFunctionを作成します。
Firstにある「#@st.cache_resource」が実は肝で、現時点では#を付けて無効化していますが、StreamlitでこのCodeを動かすときにすごくImportantなRoleを果たします。
まず、MainCodeからfunc_creatr_gdf_data()関数を呼び出して、国土数値情報のURLやZipFileのNameなどを指定し、さらにfunc_load_map_data()関数を呼び出して、そのReturnとなるGeoDataFrameを'original_gdf'として受け取ります。
func_load_map_data()関数は次のようなContentです。
コメント
コメントを投稿