벡터/래스터 타일 생성 및 전달
9887 단어 GISfoss4g벡터 타일mapboxvectortile
소개
여기에서는 마피온 에서 지도 타일의 생성 및 전달에 사용하고 있는 프라이에타리 소프트웨어와 그 내부에서 이용하고 있는 FOSS4G 를 소개합니다
이용하고 있는 FOSS4G
Mapbox Vector Tile
통칭 MVT
Mapbox가 제안하는 오픈 벡터 타일 사양
vector-tile-spec
마피온 에서는 이 사양에 따라 벡터 타일을 생성해 활용하고 있다
node-mapnik
GeoJSON 을 MVT 로 변환하는 데 사용됨
초기에는 MVT의 형식 인 Protocol buffers을 직접 만들었습니다.
지금은 PostGIS에 ST_AsMVT이 추가되었으므로 사용하는 것이 좋습니다.
node-mapbox-gl-native
벡터 타일을 래스터 타일로 변환하는 데 사용됩니다.
만든 (주요) 독점 소프트웨어
mvt-plant
Postgres (PostGIS)에 저장된 위치 데이터에서 벡터 타일을 대량으로 생성 node 모듈
내부에서 node-mapnik
출력처는 S3 or MBTiles or 로컬
그림
사용법
const plant = new MvtPlant(config);
await plant.run();
raster-plant
벡터 타일에서 래스터 타일을 대량으로 생성 node 모듈
내부에서 node-mapbox-gl-native
출력처는 S3 or MBTiles or 로컬
그림(mvt-plant와 동일)
사용법
const plant = new RasterPlant(config);
await plant.run();
포인트
로컬에서 사용할 수 있는 것은 로컬에 놓는다.
타일 경계 부근에서 라벨이 끊어지는 문제는 버퍼를 취해 대처
const image = sharp(buffer, {
raw: {
width: width+bufferSize*2,
height: height+bufferSize*2,
channels: 4
}
}).extract({ left: bufferSize, top: bufferSize, width: width, height: height });
imagemin으로 파일 크기 최적화
const minBuffer = await imageminPngquant({quality: 100})(buffer);
map-center
지도 운영에 필요한 작업을 한 손에 담당 node CLI
Mapbox Vector Tile
통칭 MVT
Mapbox가 제안하는 오픈 벡터 타일 사양
vector-tile-spec
마피온 에서는 이 사양에 따라 벡터 타일을 생성해 활용하고 있다
node-mapnik
GeoJSON 을 MVT 로 변환하는 데 사용됨
초기에는 MVT의 형식 인 Protocol buffers을 직접 만들었습니다.
지금은 PostGIS에 ST_AsMVT이 추가되었으므로 사용하는 것이 좋습니다.
node-mapbox-gl-native
벡터 타일을 래스터 타일로 변환하는 데 사용됩니다.
만든 (주요) 독점 소프트웨어
mvt-plant
Postgres (PostGIS)에 저장된 위치 데이터에서 벡터 타일을 대량으로 생성 node 모듈
내부에서 node-mapnik
출력처는 S3 or MBTiles or 로컬
그림
사용법
const plant = new MvtPlant(config);
await plant.run();
raster-plant
벡터 타일에서 래스터 타일을 대량으로 생성 node 모듈
내부에서 node-mapbox-gl-native
출력처는 S3 or MBTiles or 로컬
그림(mvt-plant와 동일)
사용법
const plant = new RasterPlant(config);
await plant.run();
포인트
로컬에서 사용할 수 있는 것은 로컬에 놓는다.
타일 경계 부근에서 라벨이 끊어지는 문제는 버퍼를 취해 대처
const image = sharp(buffer, {
raw: {
width: width+bufferSize*2,
height: height+bufferSize*2,
channels: 4
}
}).extract({ left: bufferSize, top: bufferSize, width: width, height: height });
imagemin으로 파일 크기 최적화
const minBuffer = await imageminPngquant({quality: 100})(buffer);
map-center
지도 운영에 필요한 작업을 한 손에 담당 node CLI
const plant = new MvtPlant(config);
await plant.run();
const plant = new RasterPlant(config);
await plant.run();
const image = sharp(buffer, {
raw: {
width: width+bufferSize*2,
height: height+bufferSize*2,
channels: 4
}
}).extract({ left: bufferSize, top: bufferSize, width: width, height: height });
const minBuffer = await imageminPngquant({quality: 100})(buffer);
내부에서
mvt-plant
raster-plant
사용법
// ベクタータイルを生成する場合
$ PROCESS_LIST=vtile \
TILE_GENERATOR_THREAD_COUNT=4 \
TILE_GENERATOR_PROCESS_COUNT= \
TILE_GENERATOR_LOG_LEVEL=debug \
TILE_GENERATOR_TILE_IDS=./tile/sample-tile_ids.sqlite \
TILE_GENERATOR_BUCKET_VECTOR=sample-tiles \
TILE_GENERATOR_USER_VECTOR=mapion \
TILE_GENERATOR_TILESET_NAME=honjo-v20181212 \
TILE_GENERATOR_TILE_HOST=localhost \
TILE_GENERATOR_SEQ_HOST=localhost \
TILE_GENERATOR_SEQ_NAME_VECTOR=seq_vector \
DB_USER=**** \
DB_PW=**** \
...
./index.sh
// 設定はdotenvを使用
// TILE_GENERATOR_PROCESS_COUNTを指定するとその数だけプロセスが立ち上がり並列で実行される
// TILE_GENERATOR_PROCESS_COUNTを指定しない(空欄)とCPUの数が設定される(マシンのリソースを最大限活用する)
// ラスタータイルを生成する場合
$ PROCESS_LIST=rtile \
TILE_GENERATOR_THREAD_COUNT=1 \
TILE_GENERATOR_PROCESS_COUNT= \
TILE_GENERATOR_LOG_LEVEL=debug \
TILE_GENERATOR_TILE_IDS=./tile/sample-tile_ids.sqlite \
TILE_GENERATOR_BUCKET_RASTER=sample-tiles \
TILE_GENERATOR_USER_RASTER=mapion \
TILE_GENERATOR_TILESET_NAME=honjo-v20181212 \
TILE_GENERATOR_SEQ_HOST=localhost \
TILE_GENERATOR_SEQ_NAME_RASTER=seq_raster \
...
./index.sh
// 設定はdotenvを使用
// TILE_GENERATOR_PROCESS_COUNTを指定するとその数だけプロセスが立ち上がり並列で実行される
// TILE_GENERATOR_PROCESS_COUNTを指定しない(空欄)とCPUの数が設定される(マシンのリソースを最大限活用する)
포인트
현재 일본 전국의 벡터 타일(z4-z18) 생성에 36시간 정도 걸리지만 서버를 늘리면 그만큼 빨라진다
마찬가지로 일본 전국의 래스터 타일(z5-z19) 생성에는 33시간 정도 걸리지만 서버를 늘리면 그만큼 빨라진다
gl-server
벡터 타일이나 래스터 타일 등을 전달하는 애플리케이션 서버
JWT 인증 기능
내부에서 node-mapnik 및 node-mapbox-gl-native 사용
그림
Reference
이 문제에 관하여(벡터/래스터 타일 생성 및 전달), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/honjo/items/6cb9b1df006de14daead텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)