问题标签 [vector-tiles]

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.

0 投票
0 回答
493 浏览

openlayers-3 - OpenLayers3 可以重新投影矢量切片 (MVT) 图层吗?

我正在尝试使用 OpenLayers 来显示我创建并提供服务的矢量切片图层和底图。

我使用的栅格底图在 EPSG:4326 中,我想覆盖 MVT 图层,也重新投影到 EPSG:4326 中。

但是,它似乎不起作用。当我有一张视图投影设置为 EPSG:3857 的地图时,一切看起来都很好。位于 EPSG:4326 中的底图被重新投影到 EPSG:3857 并且矢量图层看起来完全正确。

但是当我将地图视图投影更改为 EPSG:4326 时,栅格底图看起来不错,但 MVT 图层不会显示。没有发出磁贴请求,也没有 JS 错误。

我将projectionMVT 源的属性设置为EPSG:3857. 我已经尝试定义我自己的 TileGrid 以及ol.tilegrid.createXYZ(),但是当主地图视图投影设置为 EPSG:4326 时没有任何效果。

我知道 OpenLayers 中的 MVT 支持是相当新的,也许这还不支持?

我正在尝试这样做,因为我的矢量数据最初位于 EPSG:4326 中。我必须将其转换为 EPSG:3857 才能将其用作 MVT 瓷砖,但我希望能够在其原始投影中显示它。

0 投票
1 回答
317 浏览

vector-tiles - 如何将 mapnik 生成的矢量图块写入 Javascript/Python 中的 mbtiles 文件?

我正在尝试编写一个 JavaScirpt/Python 脚本来预播矢量切片。我的计划是从 PostGIS 数据库中收集数据并使用 mapnik 生成图块,但我不知道如何最终将它们保存到文件中。

0 投票
0 回答
616 浏览

mapnik - Mapnik 将带有数据源的地图渲染为空矢量切片

对不起,如果这是一个新手问题。我正在使用 node-mapnik 从数据库查询中生成矢量切片,但是矢量切片总是返回空,而我很确定 postgis 实际上返回数据(在 psql 上单独测试了查询,具有相同的边界框)。

下面的代码中是否有明显的缺失?我没有向渲染为矢量切片的地图图层添加样式,因为我认为矢量切片实际上并没有在服务器上“渲染”,这是问题吗?感谢您的回答,

0 投票
1 回答
378 浏览

leaflet - 如何在不清理缓存的情况下重绘矢量图块?

我有矢量切片图层,我想重绘这个图层,但我想保存我的缓存数据。所以我不能使用传单功能redraw(),因为这正在删除我的缓存。

有什么功能可以做到这一点吗?我只想在没有任何计算的情况下再次绘制这些图块,因为它们是较早制作的。

0 投票
1 回答
499 浏览

line - 获取一行mapbox gl js下的特征

我需要能够在 mapbox gl js 中绘制任意绘制的线。该线将用于选择线图层下方矢量切片图层中的某些点。如何使用 mapbox gl js 做到这一点。我需要一个自定义绘制的多边形以便完全控制这些点吗?我正在考虑使用 project 和 unproject 以及起点、线条的像素宽度和线条的斜率以及一些几何图形来遍历所有可见点并获取位于线条下方的那些点。但是 gl js api 有没有更简单的方法?QueryRenderedFeatures 采用一个边界框,但这似乎本质上是矩形的,并且朝向南北线。我需要能够在地图上以任何角度画线。

0 投票
0 回答
218 浏览

leaflet - 在地图上的矢量切片中为多边形着色

我有一个与人口普查网站上的块相对应的 GeoJSON 文件。我想将它们显示在地图上,并根据存储在 PostGIS 数据库中的各种数据确定它们的颜色。由于块是如此之小,我想使用一个瓦片层只为客户端提供必要的数量,因为整个数据集太大(300+ MB)。

有没有办法根据客户端或服务器端的相应数据点单独为多边形着色?我将所有多边形及其相应的数据点存储在 PostGIS 数据库中。我正在使用TileSplash检索多边形并提供一个矢量平铺层,然后由传单(react-leaflet)渲染。这可能与矢量切片图层有关还是我需要使用栅格切片图层?

0 投票
2 回答
1316 浏览

.net - 如何设置单个 Mapbox 矢量平铺的样式?

我想在离线环境中从MBTiles文件中提取单个Vector Tile并根据Mapbox Style Specification 对其进行样式设置。

研究:

Mapbox 有一个静态 Api,它完全符合我的要求,但显然需要互联网访问。

Mapbox 还具有Mapbox-Gl-NativeMapbox-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 的位图,这就是我需要完成的全部工作。

0 投票
1 回答
661 浏览

mapbox - 控制 MapboxGL 几何简化

MapboxGL 会根据缩放级别进行某些级别的功能简化和/或过滤(出于性能原因。)

我将全覆盖数据渲染为矢量图块(在这种情况下为加拿大人口普查数据。)当基于缩放简化或过滤多边形时,这会导致数据集中应该是连续的孔洞可见。

我对服务器上的简化有一些控制,但出于同样的原因,我已经限制了服务器端的简化。在 Leaflet 中使用Leaflet.VectorGridLeaflet.MapboxVectorTile查看这些相同的图块时,图块在所有缩放级别都显示良好。

是否可以覆盖客户端简化阈值?

缩放级别 8-11 的差异

0 投票
2 回答
557 浏览

polygon - 使用mapbox gl js渲染非简化的Mapbox Vector Tile

我正在尝试使用 Mapbox GL js 渲染包含 OSM 数据的 mvt(Mapbox Vector Tile),但我不断得到一些丑陋的多边形,就像它们被简化一样(就像在本文档的简化部分中一样!)。我不希望简化这些多边形。至少我希望最好的分辨率尽可能接近现实。

首先,我检查了它是否来自 OSM 数据。但是OSM数据很好。所以我查看了 tile 服务器,更准确地说查看了 mvt 编码器(代码)。控制坐标在矢量切片中编码的详细程度的范围值是 4096。4096 是一个非常好的值。所以我不明白为什么我没有得到正确的多边形。

我想这个问题来自 Mapbox GL js,它可能会执行额外的简化。

我可以在编码器中使用什么范围值?有没有办法用 mapbox gl js 配置分辨率?

我会很感激一些帮助!谢谢!

0 投票
2 回答
3097 浏览

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.o5mproc_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

这是否意味着我不能做我想做的事?我想保留所有节点、方式和关系,即使文件没有共同点。

试图

结果