国土数値情報の河川データ取得を効率化 National Land Numerical Information with Python
久しぶりに国土数値情報の河川データに戻り、データ取得の効率化を図ります。 これまでは国土数値情報の河川データをLocalPCにダウンロードして解凍したデータをGoogleDriveにUploadするというまどろっこしい操作をしていましたが、APIやWebScreipingを学習する中で、Webから直接zipFileを取得してPython上で解凍し、必要なデータを取得することができるということがわかってきたので、今後、使用頻度が高いと思われる河川データをWeb上で直接取得する方法を検討しました。 ChatGPT先生に相談しながら、まずは国土数値情報の河川データを取得するコードを作成しました。 作成したコードは以下のとおりです。 最初、「国土数値情報の河川データから河川データのshpファイルを取得」という指示をChatGPT先生に与えたところ、冒頭の図にあるような流路(LineString)ではなく、接続点=Node情報(Point)を取得していました。これは各県別の河川データのzipFileの中に2種類のshpFileがあり、1つはNode情報、1つはFlowPath情報になっているためでした。 shpFileNameを指定せずにデータを取得した場合に、なぜNode情報を見に行くのかまでは解明しておりません。 ですので、河川データを一度GoogleColabのドライブにDownLoadして、解凍し、所定のファイルを読み込んだ後、gdf_shikoku_riverに追加していくという流れでコードを作っています。なお、以下のコードではFlowPath情報が含まれているFileNameのTailが'-g_Stream.shp'を指定して取得しています。 import urllib.request import zipfile import geopandas as gpd def download_map_data ( url , zip_file_name , shp_file_name ) : #url = 'https://nlftp.mlit.go.jp/ksj/gml/data/W05/W05-06/W05-06_36_GML.zip' #zip_file_path = 'W05-06_36_G