csvファイルの中にすでに緯度、経度情報が含まれている場合にDBを作成する方法
2024年4月12日
以下の方法は、以下のようにGeometry型にしなければならないらしい → 可読性が悪くなるので、この方法は採用しないことにした。
OBJECTID,BLDG_ID,Posting,HH_id,centroid_geom,AnsFlag,Shape_Area
1,1,1,,"POINT(139.6193534 35.3662534)",,2994.84232
2,3,0,,"POINT(139.6247907 35.36777712)",,2311.216892
3,4,0,,"POINT(139.6238161 35.36573877)",,1814.524575
4,5,0,,"POINT(139.6243819 35.36882641)",,1669.266149
1,1,1,,"POINT(139.6193534 35.3662534)",,2994.84232
2,3,0,,"POINT(139.6247907 35.36777712)",,2311.216892
3,4,0,,"POINT(139.6238161 35.36573877)",,1814.524575
4,5,0,,"POINT(139.6243819 35.36882641)",,1669.266149
================================
以下のHH.csvというファイルがあったとします。
OBJECTID,BLDG_ID,Posting,HH_id,CENTROID_X,CENTROID_Y,AnsFlag,Shape_Area
1,1,1,,139.6193534,35.3662534,,2994.84232
2,3,0,,139.6247907,35.36777712,,2311.216892
3,4,0,,139.6238161,35.36573877,,1814.524575
4,5,0,,139.6243819,35.36882641,,1669.266149
5,7,1,13033,139.6213946,35.36896447,1,1377.877194CENTROID_X CENTROID_Yが、それぞれ経度と緯度の情報が入っています。 このcsvファイルを使って、作成手順を具体的に説明して下さい。
================================
以下のHH.csvというファイルがあったとします。
OBJECTID,BLDG_ID,Posting,HH_id,CENTROID_X,CENTROID_Y,AnsFlag,Shape_Area
1,1,1,,139.6193534,35.3662534,,2994.84232
2,3,0,,139.6247907,35.36777712,,2311.216892
3,4,0,,139.6238161,35.36573877,,1814.524575
4,5,0,,139.6243819,35.36882641,,1669.266149
5,7,1,13033,139.6213946,35.36896447,1,1377.877194CENTROID_X CENTROID_Yが、それぞれ経度と緯度の情報が入っています。 このcsvファイルを使って、作成手順を具体的に説明して下さい。
================================
以下は、PostgreSQLにCSVファイルをインポートし、PostGISを使用して緯度経度情報を含むデータを扱う手順です。
- PostGIS拡張機能の有効化: PostgreSQLでPostGIS拡張機能を有効化します。
CREATE EXTENSION postgis;
- テーブルの作成: CSVファイルをインポートするためのテーブルを作成します。緯度経度情報を含むカラムには、地理空間データ型のポイント(Point)を使用します。
CREATE TABLE HH (
OBJECTID INTEGER,
BLDG_ID INTEGER,
Posting INTEGER,
HH_id INTEGER,
CENTROID_GEOM GEOMETRY(Point, 4326),
AnsFlag INTEGER,
Shape_Area NUMERIC
);
ここで、
HH
はテーブルの名前を指定します。CENTROID_GEOM
カラムは、緯度経度情報を格納する地理空間データ型のカラムです。 - CSVファイルのインポート: COPYコマンドを使用して、CSVファイルを作成したテーブルに直接インポートします。
COPY HH (OBJECTID, BLDG_ID, Posting, HH_id, CENTROID_X, CENTROID_Y, AnsFlag, Shape_Area)
FROM 'HH.csv'
DELIMITER ','
CSV HEADER;
ここで、
path_to_your_csv_file
は、インポートするCSVファイルのパスを指定します。 - 緯度経度情報の更新: インポートしたテーブル内の緯度経度情報を使用して、地理空間データ型のカラムを更新します。
UPDATE HH SET CENTROID_GEOM = ST_SetSRID(ST_MakePoint(CENTROID_X, CENTROID_Y), 4326);
これで、CSVファイル内の緯度経度情報を持つデータをPostgreSQLにインポートし、PostGISを使用して地理空間データとして扱う準備が整いました。QGISなどのGISソフトウェアを使用して、地理情報を可視化したり分析したりすることができます。