问题标签 [mbtiles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 无法 GET / - 使用 Node.js 加载 mbtiles
我正在尝试使用 tilelive 和 mbtiles 模块将 .mbtiles 文件加载到我的浏览器中。“lon.mbtiles”是直接从 mapbox 网站下载的示例城市(伦敦),应该可以加载,除非 mapbox 最终出错。
这是我的 server.js:
如果从本地文件运行,脚本会运行并检测磁贴,但我无法让本地主机工作。我已经(在代码中)测试了我是否有阻止我的本地主机的防火墙问题,但它工作得很好。
据我了解,这是app.get
线路的问题,尽管我对 NodeJS 的了解并没有超过 2 天的视频和文章。
我怎样才能让我的本地主机真正连接而不抛出错误?
提前致谢
android - Mapbox Android 应用程序 - 可以通过移动应用程序上传栅格资源吗?
我一直在挖掘 Mapbox Android 文档和支持,以了解是否可以从 android 应用程序上传光栅图块。下载/服务有大量记录,但没有上传。本质上,我需要制作一个允许用户从手机中选择文件(光栅)并通过新应用程序将其永久添加到地图视图的应用程序。
有人知道简短的答案吗?谢谢。
.net - 如何设置单个 Mapbox 矢量平铺的样式?
我想在离线环境中从MBTiles文件中提取单个Vector Tile并根据Mapbox Style Specification 对其进行样式设置。
研究:
Mapbox 有一个静态 Api,它完全符合我的要求,但显然需要互联网访问。
Mapbox 还具有Mapbox-Gl-Native和Mapbox-Gl-JS库,它们似乎非常适合从矢量切片生成地图,但我似乎无法找到一种方法来生成单个静态图像而不是整个地图。有办法吗?
Tessera是一个能够设置矢量数据样式但仅适用于 tm2 项目或 mapnik 样式表的切片服务器
背景: 使用Telerik Rad Map WPF 控件或 .NET WPF 的任何 Map 控件,我想使用 vector.mbtiles 作为离线地图源。
我能够从 mbtiles 中提取单个矢量切片并使用mapbox-vector-tile-cs将其反序列化为可用信息,甚至能够从数据中创建基本位图图像并将其提供给 Telerik,它能够绘制简单的地理地图,但城市和街道标签需要更复杂的代码,以防止标签相互重叠并正确倾斜。
我目前能做的:
- 使用自定义 Telerik TiledProvider 和自定义 Telerik TiledMapSource
- 从 mbtiles 中提取矢量瓦片
- 将矢量切片反序列化为 C# 类
- 使用矢量数据创建不带标签的数据位图
我的问题:
是否有任何语言的现有库,甚至是能够根据Mapbox 样式规范或任何可配置的样式规范有效地设置单个矢量文件样式的可执行文件?
任何帮助都会很有用。我已经开始移植 Mapbox-Gl-Native 库,这很困难,因为它针对移动平台并且做了很多我不需要的事情,而且我无法弄清楚如何简化它以仅处理一个图块要求。Telerik 只要求提供特定 x/y/zoom 的位图,这就是我需要完成的全部工作。
javascript - 如何将 .mbtiles 文件中的 tile_data 设置为传单的瓷砖?
我正在使用meteorjs 和cordova 开发一个混合移动应用程序。应用需要有离线地图支持。我使用 Maperitive 导出了一个 .mbtiles 文件,该文件可以离线查看,并将文件复制到我的应用程序中,以便在使用 Leaflet 加载图块时访问它。为此,我使用了用于文件系统的cordova插件(将.mbtiles复制到正确的位置)和cordova sqlite插件(用于访问.mbtiles数据)并且该部分有效,当传单请求带有z,x和y的瓷砖时,我可以成功加载tile_data .
不起作用的部分是将图块“放置”在地图上。我正在使用访问 .mbtiles sqlite 数据库并获取所需图块的自定义图块层:
//TilesLayer.MBTiles.js
瓷砖不显示在地图上。传单要求正确的图块,这些图块已从数据库成功返回,但未显示。
-也许这条线是问题所在:
我没有正确使用 tile_data。我必须将其转换为其他内容吗?.mbtiles 文件中的图块存储为 BLOB,但为 .png 图像。
- 当我把瓷砖传回去时,我错过了一个电话吗?就像是:
并在 tile.src 设置后调用它?
任何帮助将非常感激。
node.js - 如何运行mbpipe...我刚安装的一个程序
我正在尝试使用此工具:https ://github.com/mapbox/node-mbtiles/wiki/Post-processing-MBTiles-with-MBPipe
我已经安装了 mbtiles npm install -g mbtiles
。我还在本地(在我正在工作的目录中)安装了它,只是简单的npm install mbtiles
.
那部分工作(我能够下载文件),但现在根据自述文件我可以开始输入命令,如
mbpipe 'pngquant 64' myMbTilesFile.mbtiles
它应该工作吗?
嗯......我不必运行特定的脚本文件(如“node scriptfile.js”)吗?这就像我可以在脚本中调用函数并传递变量一样?正如用户所提到的,我可以告诉你,“mbpipe”在我拥有的 utils.js 文件中......但我应该如何使用它?
当我输入上述命令时,我当然会得到“mbpipe:找不到命令”
所以……他们在说什么?
tilemill - 为什么我需要这么多地图图块来提供地图?
据我了解,每个地图图块都是 256x256 像素的图像。所以...如果我正在查看 1400 x 1400 像素的屏幕...大约 36 个图块可以覆盖整个屏幕(6 个图块 x 6 个图块)...假设我希望我的地图具有最高缩放级别...地图上相当于 20 个屏幕的区域...对于该缩放级别,这是 700 个图块,从那里向下是更缩小的级别。所以最多这就像 10k 瓦片。
我现在正在制作俄勒冈州波特兰市的地图......我刚刚导出了我的地图图块并将它们转换为 png ......并且有 100 万个文件。什么??!?!我拥有的最高缩放级别是 18,最低是 10....所以不知何故这些图块正在变得小型化,但我不知道为什么。
我在这里想念什么?
mapbox - 绕过 MapBox 500KB 单个图块大小限制?
有人知道如何绕过 MapBox 的 500KB 磁贴大小限制吗?
他们网站上的规则指出:“在任何缩放级别上,单个矢量切片都不能超过 500kb。”
我用几个缩放级别的一组数据达到了这个限制。(我通过tippecanoe运行geojson文件以.mbtiles格式创建此数据。)我尝试通过他们的Uploads API上传,但这仍然有限制。删除特征并在较低的细节级别上工作不是选项。我也试过给 MapBox 发电子邮件,但我没有听到任何消息。
openstreetmap - 如何在保留所有节点、方式和关系信息的同时合并 osm 文件?
背景
我正在尝试为世界制作一个缩小尺寸的矢量 mbtiles 文件,用于我正在为 Windows 桌面开发的紧凑型离线地图解决方案。为此,我发现 OsmAnd 的缩小尺寸World_basemap_2.obf正是我所需要的,但采用 mbtiles OSM 格式,因此我可以生成 mbtiles。obf是使用从形状文件生成的以下 OSM 文件创建的。它们可在http://builder.osmand.net/basemap/获得
我遇到的问题是,为了制作 mbtiles,它们需要合并到一个 OSM 文件中。osm2vectortiles
' 生成 mbtiles 的指南在这里http://osm2vectortiles.org/docs/own-vector-tiles/。
首先我提取它们来处理 osm 文件。
问题
当我使用and标志osmconvert
来组合文件时,很多关系和方式都被删除了,并且文件大小非常不同。--complete-ways
--complex-ways
例如:
结果文件大小为 133,691 kb
生成一个包含13131405个节点、方式和关系的 CSV
将tertiary.o5m与proc_line_ferr_out.osm.o5m合并(生成与上图相同)并转换为 CSV
生成一个包含1195239个节点、方式和关系的 CSV ......这要少得多,而且非常令人担忧。合并两个文件不应产生比原始文件更少的节点、路径和关系。
问题
我究竟做错了什么?
有没有另一种方法来组合 osm 文件?(我读过
osmosis
不能处理负节点。)是否有另一种方法来生成 mbtiles,可能来自多个 osm 文件?
试图合并的文件
- 点数.osm.bz2
- polygon_aeroway_military_tourism.osm.bz2
- 多边形湖水.osm.bz2
- 多边形自然土地使用.osm.bz2
- proc_line_admin_level_out.osm.bz2
- proc_line_ferry_out.osm.bz2
- proc_line_motorway_out.osm.bz2
- proc_line_primary_out.osm.bz2
- proc_line_railway_out.osm.bz2
- proc_line_secondary_out.osm.bz2
- proc_line_tertiary_out.osm.bz2
- proc_line_trunk_out.osm.bz2
- 城市.osm.bz2
- 海岸线.osm.bz2
OSMConvert
osmconvert
解释说
合并两个或多个地理区域
在某些条件下,可以合并 OSM 数据文件。如果它们持有相同的对象(节点、方式、关系),则
id
它们必须具有相同的内容。例如:如果一条路跨越两个区域文件之间的地理边界,则路数据集必须包含每个节点引用,即使是对不在相关文件边界内的节点的引用。即,这样的区域一定没有被使用选项剪切掉--drop-brokenrefs
。
这是否意味着我不能做我想做的事?我想保留所有节点、方式和关系,即使文件没有共同点。
试图
结果
export - 如何将 mapbox studio 地图导出为 .mbtiles 文件
所以我猜这个答案是“不”,但是有没有办法将我用 mapbox studio ( https://www.mapbox.com/studio/ ) 在线设计的地图导出到 .mbtiles 文件中所以我可以自己主持?
老实说,我愿意为此付钱(省去了获取世界 .pbf 文件并将其放入 postgresql 数据库的麻烦,尤其是像我这样的平庸计算机)
听起来也许曾经有一种方法可以做到这一点,但到目前为止,他们似乎已经取消了这种能力。我可以看到很多不同的方式来使用我创建的地图,但是一切都迫使我使用 mapbox 作为托管服务......似乎没有办法下载我创建的地图。