ラインやポリゴンデータの作成&表示 PostGIS-QGIS
はじめに
QGISで点の位置情報を表現するまでの手順は以前まとめていたが、ポリゴン(面)やラインについての可視化はあまり経験がなかったため、やり方などが整理できていなかった。
今回はまず、簡単なデータを使ってライン(線)やポリゴン(面)の表示を試してみる。
※ ポイント(点)の表示は【QGISでPostGISのジオメトリデータを表示する】の記事を参考に。
実行環境
【PC環境-OS】
・Windows 10 Pro
【ソフトウェア-バージョン】
・PostgresSQL 10.13
・PostGIS 2.5
・QGIS 3.10.6
今回やる事
1.今回のサンプルデータの中身確認
2.ラインやポリゴンのデータ作成
3.QGISでの表示確認
1.今回のサンプルデータの中身確認
今回はラインやポリゴンを表示するため、以下のデータを用意した。
1つの点に対して緯度・経度情報は1つとなるが、ラインやポリゴンの場合には点と点を結んで画像を生成するため、複数点の情報が必要となる。
ライン:2点以上
ポリゴン:3点以上
以下のデータをサンプルとして用意。
※次の手順でインポートとして使うcsvファイルは こちら
2.ラインやポリゴンのデータ作成
元の緯度経度情報を持ったテーブル作成(csvファイルインポート先)
CREATE TABLE qgis_test.sample_tb1(
pref varchar(20) not null
,city varchar(20) not null
,area varchar(20) not null
,point1_lat varchar(100)
,point1_lon varchar(100)
,point2_lat varchar(100)
,point2_lon varchar(100)
,point3_lat varchar(100)
,point3_lon varchar(100)
,point4_lat varchar(100)
,point4_lon varchar(100)
,primary key(pref, city, area)
)
;
上記のテーブルにcsvファイルをインポート(pgAdminより実行)
(pdAdminのインポートの操作方法に迷ったらはこちらを参考に)
ジオメトリ情報を持ったテーブル作成
CREATE TABLE qgis_test.sample_tb2(
pref varchar(20) not null
,city varchar(20) not null
,area varchar(20) not null
-- 2つの点から作るライン
,geom_line2 Geometry(LINESTRING, 4326) not null
-- 3つの点から作るライン
,geom_line3 Geometry(LINESTRING, 4326) not null
-- 3つの点から作る面(ポリゴン)
,geom_polygon3 Geometry(Polygon, 4326) not null
-- 4つの点から作る面(ポリゴン)
,geom_polygon4 Geometry(Polygon, 4326) not null
,primary key(pref, city, area)
)
;
緯度経度よりジオメトリデータを算出しながらInsert
INSERT INTO qgis_test.sample_tb2
SELECT
pref
,city
,area
-- 2つの点から作るライン
,ST_SetSRID(
ST_MakeLine(
ST_MakePoint(cast(point1_lon as numeric), cast(point1_lat as numeric))
, ST_MakePoint(cast(point2_lon as numeric), cast(point2_lat as numeric))
)
, 4326
) AS geom_line3
-- 3つの点から作るライン
,ST_SetSRID(
ST_MakeLine(ARRAY[
ST_MakePoint(cast(point1_lon as numeric), cast(point1_lat as numeric))
, ST_MakePoint(cast(point2_lon as numeric), cast(point2_lat as numeric))
, ST_MakePoint(cast(point3_lon as numeric), cast(point3_lat as numeric))
])
, 4326
) AS geom_line3
-- 3つの点から作るポリゴン
,ST_SetSRID(
ST_MakePolygon(
ST_MakeLine(ARRAY[
ST_MakePoint(cast(point1_lon as numeric), cast(point1_lat as numeric))
, ST_MakePoint(cast(point2_lon as numeric), cast(point2_lat as numeric))
, ST_MakePoint(cast(point3_lon as numeric), cast(point3_lat as numeric))
,ST_MakePoint(cast(point1_lon as numeric), cast(point1_lat as numeric))
])
)
, 4326
)as geom_polygon3
-- 4つの点から作るポリゴン
,ST_SetSRID(
ST_MakePolygon(
ST_MakeLine(ARRAY[
ST_MakePoint(cast(point1_lon as numeric), cast(point1_lat as numeric))
, ST_MakePoint(cast(point2_lon as numeric), cast(point2_lat as numeric))
, ST_MakePoint(cast(point3_lon as numeric), cast(point3_lat as numeric))
, ST_MakePoint(cast(point4_lon as numeric), cast(point4_lat as numeric))
,ST_MakePoint(cast(point1_lon as numeric), cast(point1_lat as numeric))
])
)
, 4326
)as geom_polygon3
FROM
qgis_test.sample_tb1
3.QGISでの表示確認
QGISでデータを開こうとすると以下の様に、複数のジオメトリデータが選択できる様になっているはず。
4点によるポリゴンデータ
※4点目がないデータの場合、エラーになるのではなく勝手に3点として閉じたポリゴンを作成してくれている。
まとめ
今回は複数の点情報(緯度・経度情報)からラインやポリゴンのデータを作成して、QGIS上でどの様に表示されるのかを試してみた。また余裕がある時に、標準地域メッシュについてまとめてみようと思う。
Author And Source
この問題について(ラインやポリゴンデータの作成&表示 PostGIS-QGIS), 我々は、より多くの情報をここで見つけました https://qiita.com/smiler5617/items/9665bd2493453d1922f6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .