Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Postgis DB to mbtile conversion - coordinate system issue! #204

Open
dhairyashil opened this issue Nov 21, 2017 · 1 comment
Open

Postgis DB to mbtile conversion - coordinate system issue! #204

dhairyashil opened this issue Nov 21, 2017 · 1 comment

Comments

@dhairyashil
Copy link

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?

@kueda
Copy link

kueda commented Feb 14, 2018

Just ran into pretty much the same problem. I think tilelive assumes everything is in epsg:4326, so it doesn't matter if you tell the postgis-tilelive source that you're using a different SRID or if you explicitly pass -b to tell tl the bounding box, it just always assumes lat/lon coords and if it sees weird values it seems to munge the bbox it gets from the source. For me, projecting my source table into 4326 seems to fix it. I wish just specifying the SRID in the tl call would do it, but I guess not.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants