问题标签 [mercator]

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 投票
1 回答
240 浏览

bing-maps - 使用四键检索给定半径内的所有点

我是 GIS 概念的新手,我正在学习 Quadkeys 和用法。

我正在将其四键插入几个点到数据库中,并希望使用四键检索给定半径内的所有点。

假设我有一个点(46,46),其缩放级别 23 上的四键是 12122022101301320022121(使用此链接)

现在我想搜索 DB 中距离参考点 100 公里半径的所有点,比如 (47,47)

我的想法是,使用给定的距离(100 公里)找到缩放级别,形成具有该级别的 (47,47) 的四键,并使用此键查询数据库以检索具有给定前缀的所有键。

网络上的任何参考都只提供 Tile 到 Quad 之间的转换,反之亦然。

如何有效地计算这个缩放级别?这是正确的做法吗?或者有没有更好的方法来使用四键来处理这个问题。

0 投票
1 回答
132 浏览

python - 如何使用 Bokeh Server << require("core/util/projections") >>?

如果我在 jupyter 实验室上运行这个例子就可以了

在此处输入图像描述

但是,如果我使用散景服务运行示例,我会收到错误消息Uncaught Error: Cannot find module 'core/util/projections'

我错过了什么吗?require运行脚本时是否需要调整调用bokeh serve我在示例文件夹中没有看到任何带有散景服务的示例

我的版本

10月9日更新

实际上,我已经从zip 版本编译并安装了 Bokeh 。我收到 404 错误,因为 js 文件的 url 是 url 与本地路径的串联

恐怕我在散景安装过程中做错了什么。我已遵循本指南

我正在使用 Windows 10

10月10日更新

感谢@Torus,我已经设置BOKEH_RESOURCES=server-dev了环境变量,但也找不到该模块。

有关其他信息:我已经安装了散景:

我已经设置了这个环境变量

但是我仍然遇到同样的错误,找不到模块:

结论

我认为手动构建散景时有问题,因为如果我以通常的方式安装它:pip install bokeh,当我做的时候require("core/util/projections")工作正常。

还有另一种方法可以将坐标转换为“墨卡托投影”吗?我应该创建另一个 CDS 列并在 python 中进行转换吗?

0 投票
2 回答
1426 浏览

d3.js - 使用 D3.js、Leaflet 或 Mapbox 用墨卡托地图包裹大圆圈

简而言之,问题是:如何使用Google Maps API 以外的其他工具在墨卡托中准确地投影一个环绕的大圆半径?

问题很长:

所以我有一个难题。我运行了一个地图应用程序,它使用 Google Maps API 将巨大的圆圈投影到墨卡托地图上——它试图显示非常大、精确的半径,例如,大约 13,000 公里。但我不想再使用 Google Maps API,因为 Google 的新定价方案太疯狂了。因此,我试图将代码转换为 Leaflet、Mapbox 或任何非 Google 的东西,没有任何东西可以正确处理这些圆圈。

以下是 Google Maps API 如何处理以非洲北部为中心、半径为 13,000 公里的测地圆: Google Maps API 大圈

这在直觉上看起来很奇怪,但却是正确的。波浪形图案是由环绕地球的圆圈引起的。

D3.js 可以在正交投影中正确渲染它。所以这是在 D3.js 中使用 d3.geo.circle() 在地球上渲染的同一个圆圈,旋转两次:

正交 v1 上的 D3.js 大圆正交 v2 上的 D3.js 大圆

这使得 2D-“波浪”模式更有意义,对吧?对。我喜欢它。完全适用于我的科学传播等目的。

但是当我将代码转换为 Leaflet 时,它根本不起作用。为什么?因为 Leaflet 的 circle 类根本就不是一个大圆。相反,它似乎只是一个随着纬度有点扭曲的椭圆,但不是以真正的测地线方式。相同的圆,相同的半径,相同的原点,我们得到:

Leaflet 尝试绕 13000 公里

大错特错,大错特错!除了看起来完全不切实际之外,这是不正确的——澳大利亚不会在这样的圆形半径内。这对我的申请很重要!这是不行的。

好吧,我想,也许诀窍就是尝试实现我自己的大圆圈类。我采用的方法是将圆点作为距原点的距离进行迭代,但是使用这个非常有用的网站上的“目标点给定距离和距起点的方位”计算来计算距离,然后将它们投影为多边形传单。这是我得到的结果:

尝试在 Leaflet 中实现 Great Circle

这看起来很糟糕,但实际上更接近准确!我们得到了波浪效应,这是正确的。像我一样,你可能会问,“这里到底发生了什么?” 所以我做了一个版本,让我可以突出每个迭代点:

尝试在带有点的传单中实现大圆

你可以很清楚地看到它正确地渲染了圆,但是多边形错误地加入了它。它应该做的(人们可能会天真地认为)是将波浪形包裹在墨卡托地图投影的多个实例周围,而不是天真地将它们连接在顶部,而是将它们连接成球形。就像这个粗糙的 Photoshop 渲染一样:

传单的 Photoshop 版本

然后多边形将以某种方式“关闭”,表明多边形上方的所有内容也都包含在其中。

不过,我不知道如何在 Leaflet 中实现这样的东西。或其他任何事情。考虑到缩放状态,也许我必须自己处理原始 SVG?或者其他的东西?在我进入那些危险的杂草之前,我想我会征求任何建议/想法/等。也许有一些更明显的方法。

哦,我尝试了另一件事:使用相同的 d3.geo.circle 构造函数,该构造函数在墨卡托/传单投影的正交投影中效果很好。它产生的结果或多或少与我的“天真”传单大圆实现相同:

墨卡托的 D3.js 大圆

我猜这是有希望的。但是,如果您移动原点的经度,D3.js 版本会以一种更奇怪的方式包装(D3.js 为红色,我的 Leaflet 类为青绿色):

不同经度的 D3.js vs Leaflet

如果 D3.js 中有某种方法可以改变它的工作方式,我不会感到惊讶,但我还没有完全进入 D3.js 的兔子洞。我希望 D3.js 能让这个“更容易”(因为它是比 Leaflet 更完整的制图工具),所以我会继续研究这个。

我还没有尝试在 Mapbox-gl 中执行此操作(我想这是“尝试”列表中的下一个)。

反正。谢谢阅读。重申这个问题:如何使用Google Maps API 以外的其他工具在墨卡托中准确地投影一个环绕的大圆半径?

0 投票
1 回答
50 浏览

grid - 整个星球的 Openstreetmap 矩形网格

我正在尝试为整个世界生成矩形网格,单元格大小为 350 米(宽度和高度相等)。

我试图做的事情:

1) 在主循环中迭代 [-180 范围内的槽经度;180]

2) 在嵌套循环中迭代 [-85.06 范围内的低谷纬度;85.06](Web 墨卡托边界)

3) 使用 Java GeographicLib Geodesic.WGS84.Direct()在东(在主循环中)和北(在嵌套循环中)增加绑定到 350 米的单元格。

Java代码:

结果,产生了约 5.3 亿个细胞。然而,整个星球的面积约为 5.1 亿平方公里。所以,细胞总数应该是40亿左右。我对测地线数学很陌生,所以出了什么问题?我应该怎么做才能正确生成这个网格?

0 投票
0 回答
101 浏览

geolocation - 在缩放的墨卡托投影上将屏幕坐标转换为纬度/经度的方程式是什么?

我想了解在缩放的墨卡托投影上将 2D 坐标转换为实际纬度所涉及的所有步骤。地图以二维矩形显示。

我知道矩形的中心纬度和纬度/经度增量值。我也知道矩形的像素长度和高度。如果我知道这些值,将 x/y 坐标转换为纬度和经度的方程式是什么?把地球当作一个完美的球体。

0 投票
0 回答
71 浏览

netcdf - 有没有办法使用 Web 界面在 shapefile 上显示 grib2 或 netcdf 数据?

我想在给定的 shapefile 上显示一些天气数据。我正在检查是否可以使用 mapshaper 或 web mercator,但没有找到合适的程序。非常感谢任何帮助。

0 投票
1 回答
290 浏览

mapbox - Mapbox GL JS ImageSource 坐标错误

我正在努力将图像正确定位到我的地图上。我正在为我的(实时)图像使用以下 URL 之一:

这些是相关的 WMS 功能:https ://maps.dwd.de/geoserver/ows?service=wms&version=1.3.0&request=GetCapabilities

我尝试根据此示例添加图像源。使用这些坐标:

问题是图像没有 100% 正确对齐,而是略微移动/拉伸。我使用墨卡托投影阅读了有关 Mapbox 的一些内容,但无法处理其他内容?这就是为什么上面有三个不同的 URL,但它们都失败了。接下来我尝试像这样转换我的坐标:

然而,这也没有正确对齐图像。我想,我使用了错误的坐标。知道怎么做吗?

太感谢了。

下面是可以玩的代码(请将雷达盲点(灰色)的位置与下图进行比较以查看偏移量):js fiddle

这是雷达盲点(粉红色)的位置: 在此处输入图像描述

0 投票
1 回答
241 浏览

typescript - 将地理位置转换为墨卡托投影图像上的像素

我正在创建一个应用程序,允许用户指定地理位置数据,然后将其作为节点渲染到矢量墨卡托投影矢量图像上。

所以我买了以下墨卡托投影矢量图像: https ://www.vectorstock.com/royalty-free-vector/world-map-gray-mercator-projection-lasercut-vector-23277786

我从以下文章中找到了将地理位置数据转换为像素的公式: 将纬度/经度点转换为墨卡托投影上的像素 (x,y)

但是,转换不正确,我认为它与我使用的图像有关,而不是像示例中使用的那样的“普通”墨卡托地图(85 度)。

因此,我的问题是:有没有办法通过提供的图像实现我想要的?如果是的话,我想对下面提供的代码有所帮助。如果没有,如果您可以提供一个与所提供的具有相同风格的图像(矢量、免费或出售)的 URL,我真的会很高兴。

非常感谢!

0 投票
1 回答
753 浏览

xml - 如果在 EPSG25832-projection 方法中给定图像,如何从 lat,long 计算 x,y-tile-坐标?

我有一个关于创建 WMTS 服务器请求以及计算图块编号的问题。

这个德国政府网站,我可以获得他们 WMTS 服务器的地址:https ://www.wmts.nrw.de/geobasis/wmts_nw_dop 。我可以成功地将它作为图像层集成到 josm 中(wmts:https ://www.wmts.nrw.de/geobasis/wmts_nw_dop )并且它可以正确显示。

我可以在终端中查看 josm 发出的服务器请求,类似于:2019-09-26 18:54:31.651 INFO: GET https://www.wmts.nrw.de/geobasis/wmts_nw_dop/tiles/nw_dop/EPSG_25832_16/16/17680/35107 -> HTTP_1 200 (13.3 kB) 您可以查看此图块图像:https ://www.wmts.nrw.de/geobasis/wmts_nw_dop/tiles/nw_dop/EPSG_25832_16/16/17680 /35107

在这个rviz-plugin中,我输入了请求的字符串:https://www.wmts.nrw.de/geobasis/wmts_nw_dop/tiles/nw_dop/EPSG_25832_16/{z}/{y}/{x}

如果我让 rviz_satellite 找出 y 和 x,我会在 rviz 中得到垃圾: 图像

我认为这是因为图像/图块采用 EPSG25832-projection 方法,但 rviz-satellite 采用 Mercator-projection 方法。而且我需要将图像放在 EPSG25832 中,因为会显示其他数据。

如果您查看地图服务器的 WMTSCapabilities.xml,您可以看到最高缩放级别为 16 的图像和其他信息:https ://www.wmts.nrw.de/geobasis/wmts_nw_dop/tiles/nw_dop/EPSG_25832_16 /1.0.0/WMTSCapabilities.xml

我查看了 rviz-satellite 似乎用来计算 x 和 y 的方法,如下所示:

但我认为我需要做这样的事情,因为 EPSG25832/UTM 投影: https ://en.wikipedia.org/wiki/Transverse_Mercator_projection

我已经查看了https://josm.openstreetmap.de/doc/org/openstreetmap/gui/jmapviewer/Tile.htm以了解 openstreetmap 是如何做到的,但我什么也没找到。

总而言之:如果在 EPSG25832 投影方法中给定图像(josm/osm 成功),如何从 lat,long 计算 x,y-tile-coordinates?

0 投票
0 回答
39 浏览

python - 使用墨卡托投影:我只想为土地/国家着色,所有土地(南极洲除外)加上所有海洋都被着色

此代码来自 Basemap 文档页面,其中一些更改集中在我手头的问题上。我想为所有陆地(可以忽略南极洲)着色(在这种情况下为洋红色),并且所有海洋都应该像现在的南极洲一样是白色的。shapefile 来自这里在此处输入图像描述