vt
で作業します)PostGIS
からデータをGeoJSONで取り出しmbtiles
を作成します。mapbox/tippecanoeを使用しているため、Windows
環境ではmbtiles生成のためにはDockerを使います。しかし、マシンがMacOS
やUbuntu
の場合は直接モジュールを使うことができます。watergis/postgis2mbtiles-dockerはDockerで実行するためのソースコードです。まず、config.js
上でそれぞれのレイヤに対してSQLを作成する必要があります。そうすることで、postgis2mbtiles
ツールがPostGISから必要なデータを取り出して、mbtilesファイルが生成されます。
次はPostGISからGeoJSONを取り出す典型的な例です。
{
name: 'pipeline', //レイヤー名を指定してください。
geojsonFileName: __dirname + '/pipeline.geojson', //一時的に使用するGeoJSONファイル名を使用してください。
select: `
SELECT row_to_json(featurecollection) AS json FROM (
SELECT
'FeatureCollection' AS type,
array_to_json(array_agg(feature)) AS features
FROM (
SELECT
'Feature' AS type,
ST_AsGeoJSON(ST_MakeValid(x.geom))::json AS geometry,
row_to_json((
SELECT t FROM (
SELECT
14 as maxzoom,
11 as minzoom
) AS t
)) AS tippecanoe,
row_to_json((
SELECT p FROM (
SELECT
x.pipe_id as fid,
x.material,
x.pipe_size,
x.pressure,
x.construction_year,
x.rehabilitation_year,
x.input_date
) AS p
)) AS properties
FROM pipeline x
WHERE NOT ST_IsEmpty(x.geom)
) AS feature
) AS featurecollection
`
}
最小・最大ズームレベルを設定可能な特別なtippecanoe
用の設定項目があります。
row_to_json((
SELECT t FROM (
SELECT
14 as maxzoom,
11 as minzoom
) AS t
)) AS tippecanoe,
もし座標系がEPSG:4326
(WGS84)でない場合は、次のようなSQLで座標変換をしなければなりません。
ST_TRANSFORM(geom,4326)
自身のデータベース用のSQLを作ることは、非常に重要なステップです。しかし、場合によってはこれは困難な作業になるかもしれません。次の水道事業体での設定方法の事例などが参考になるかもしれません
Narok Water and Sewerage Services Co., Ltd, KENYA
: config.jsWater and Sanitation Corporation, Ltd, RWANDA
: config.jsNakuru Water and Sanitation Services Co., Ltd, KENYA
: config.jsこのアプローチはSQL言語を使って直接PostGISからデータを取り出すので、ほとんど全ての水道事業体のGISデータベースに柔軟に対応することができます。
ベクトルタイルのデザインをどうするかはGISデータベースの設計とあなたのやりたいことによって変わってきます。次のデザインの例はベクトルタイルを設計する際に参考になるかもしれません。