Postgis DB to mbtile conversion - coordinate system issue!
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 540
- Forks
- 106
- PR merge metrics
- No merged PRs in 30d
Description
I am trying to run below command.
tl copy "postgis://username:password@host_id:5432/test?table=schema.lines&geometry_field=geom&srid=3857&layerName=road" "mbtiles://./belgium-tiles.mbtiles" -z 1 -Z 22 -b "2 49 6 52"
But while executing it, I am getting below error:
"C:\Program Files\JetBrains\WebStorm 2017.2.5\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" C:\Users\bankard\AppData\Roaming\npm\node_modules\tl\bin\tl.js copy postgis://journaldb:journaldb@insrvut-cpp01:5433/raah?table=tileserver_test.lines&geometry_field=geom&srid=3857&layerName=road mbtiles://./belgium-tiles.mbtiles -z 1 -Z 22 -b "2 49 6 52"
C:\Users\bankard\AppData\Roaming\npm\node_modules\tl\node_modules\tilelive-streaming\lib\scanlinescheme.js:45
if (options.bbox[0] > options.bbox[2]) throw new Error('bbox is invalid');
^
Error: bbox is invalid
at new ScanlineScheme (C:\Users\bankard\AppData\Roaming\npm\node_modules\tl\node_modules\tilelive-streaming\lib\scanlinescheme.js:45:50)
at Function.Scheme.create (C:\Users\bankard\AppData\Roaming\npm\node_modules\tl\node_modules\tilelive-streaming\lib\scheme.js:52:12)
at C:\Users\bankard\AppData\Roaming\npm\node_modules\tl\node_modules\tilelive-streaming\index.js:161:21
at Immediate.<anonymous> (C:\Users\bankard\AppData\Roaming\npm\node_modules\tl\node_modules\locking-cache\index.js:73:25)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
While debugging I have found that
in file tilelive-streaming/index.js
var restrict = function(info, by) {
info = applyConfigDefaults(info);
by = applyConfigDefaults(by);
// restrict the options according to known restrictions
info.minzoom = Math.max(info.minzoom, by.minzoom);
info.maxzoom = Math.min(info.maxzoom, by.maxzoom);
info.bounds[0] = Math.max(info.bounds[0], by.bounds[0]);
info.bounds[1] = Math.max(info.bounds[1], by.bounds[1]);
info.bounds[2] = Math.min(info.bounds[2], by.bounds[2]);
info.bounds[3] = Math.min(info.bounds[3], by.bounds[3]);
return info;
};
this code is actually changing bounding boxes. and replacing it by bounding boxes provided in by object. Can anybody help me to understand from where it is actually computing by 's value and what am I doing wrong in sending parameters?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with tilelive-streaming/index.js, especially restrict, and trace the copy command into scheme creation in tilelive-streaming/lib/scanlinescheme.js. Follow how the by options are built from the supplied -b and source bounds, then reproduce the command and document or test the expected bounding-box validation behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, postgresql
- Domain
- cli, databases
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100