Как получить данные плитки от сервера векторных плиток ClusterBuster в примере примера?
Резюме
Похоже, ребята отлично поработали со встроенными фильтрами, кластеризацией и кешированием на сервере векторных листов ClusterBuster. Я очень взволнован этим проектом, который выглядит очень многообещающим, и я очень хочу его попробовать!
Я работаю над проектом по нанесению слоев Deck.gl( MVTLayer) поверх Google Maps с сервера векторных плиток посредством их интеграции. Я хочу попытаться интегрировать и обслуживать с сервера ClusterBuster некоторые кластерные точки, сохраненные в PostGIS.
Ожидаемый результат:
- Я хочу получать данные плитки с сервера векторных плиток ClusterBuster, как в приведенном ими примере.
Фактический результат:
- Предоставленный пример не работает (точки не отображаются на карте, ни на Mapbox, ни на Google Maps с Deck.gl).
Мои попытки
Я попытался собрать и запустить приведенный пример, но почему-то не могу этого сделать.
Я запустил предоставленный экспресс-сервер
clusterbuster/example/express.ts
и для внешнего интерфейса попробовал с предоставленным примером mapbox из
clusterbuster/example/mapbox.html
(с моим токеном mapbox), но ничего не отображается на карте mapbox (ни на картах Google с моим примером Deck.gl).
Как указано вclusterbuster/example/readme.md
я создал.env
файл с настройками подключений PostGIS.
После выполнения следующих команд:
yarn
yarn start
я получаю этот вывод:
C:\zFVStuff\Google Maps - Deck.gl\_Servers\ClusterBuster\clusterbuster-master> yarn start
yarn run v1.22.4
$ yarn build && ts-node example/express.ts
$ rollup --config rollup.config.js
./lib/index.ts → dist/index.d.ts...
created dist/index.d.ts in 5.7s
./lib/index.ts → dist/index.js...
created dist/index.js in 5.1s
attempting to create supporting SQL functions
failure in creating First SQL function
failure in creating TileBBox SQL function
failure in creating TileDoubleBBox SQL function
Example app listening on port 3005!
send3663284b-0e58-4587-af82-b35604a99303: 4.964ms
3663284b-0e58-4587-af82-b35604a99303: 817.819ms
sendd0bdd671-1f47-4b40-84ba-2fed6adfd045: 3.451ms
d0bdd671-1f47-4b40-84ba-2fed6adfd045: 1276.588ms
sendcd36f672-4c4b-4a95-b772-7584e6eb8c55: 1.349ms
cd36f672-4c4b-4a95-b772-7584e6eb8c55: 1754.146ms
Запросы кажутся нормальными, возвращаются статус 200, но данные плитки с сервера ClusterBuster не определены, на карте ничего не отображается (ни ваш Mapbox, ни мои карты Google). Также любопытно, что все ответы плитки имеют одинаковый размер 216 B.
Данные были импортированы в базу данных PostGIS.
Результат
undefined
после отладкиexpress.ts
server файл с помощью VSCode Javascript Debug Terminal и запустив его с помощью командыts-node .\example\express.ts
.
На вкладке сети Chrome ни на одной из вложенных вкладок Предварительный просмотр или Ответ я не вижу никаких данных.
Я также попытался зарегистрировать плитку результатов на экспресс-сервере в функции успеха,
server({
...//excluded for visibility
}).then(result => {
...//excluded for visibility
console.log(result)
res.status(200).send(result);
})
и ниже результат, я получаюundefined
:
Любая помощь или совет очень ценны! Заранее спасибо!
1 ответ
После включения отладки в конфигурации TileServer (с
debug: true
) заметил 2 ошибки:
SELECT ST_AsMVT(tile, 'points', 4096, 'geom') AS mvt FROM tile
{
e: error: password authentication failed for user "userXYZ"
...
SELECT ST_AsMVT(tile, 'points', 4096, 'geom') AS mvt FROM tile
{
e: Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:205:27) {
...
Изначально я запускал из корня clusterbuster с
ts-node .\example\express.ts
или с
yarn start
(который внизу использует то же самое и пытается подключиться к моему пользователю вместо
.env
файл конфигурации)
После запуска
ts-node express.ts
из
example
папка учитывала
.env
config файл с
postgres
пользователь вместо моего пользователя. Теперь данные плитки с сервера возвращаются нормально, и пример работает должным образом.
Большое спасибо автору cosmin-petrescu, который помог мне. Целую ветку можно увидеть здесь, на github.