问题标签 [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.
gis - 在哪里可以找到在墨卡托投影中绘制美国所需的坐标?
所以我正在编写一个 Javascript 库,它采用 x,y 坐标并使用它们来绘制美国地图。为此,我需要找到绘制每个状态所需的坐标数据。维基百科上的这张地图是我需要的一个很好的例子,因为 SVG 文件包含构成每个状态的形状,并很好地标记:http: //upload.wikimedia.org/wikipedia/commons/3/32/Blank_US_Map.svg
我还有一组需要放置在此地图上的站点。由于我知道每个站点的纬度和经度,我可以使用它在地图上的适当位置绘制每个站点。不幸的是,为此,我的地图需要使用墨卡托投影,这样就可以轻松地将 lat,long 映射到 x,y 像素坐标。
我上面提到的维基百科地图使用了其他一些投影,所以我不能将它用于此目的。有谁知道在墨卡托投影中哪里可以找到这种类型的地图数据?任何数据格式都可以,只要我能以编程方式获取用于绘制每个状态的坐标并确定哪些形状构成每个状态。
java - 在自定义横轴墨卡托和 WGS84 Lon-Lat 之间转换坐标
我正在尝试在地图上放置一堆 (x,y) 点,它们的原点为经纬度。我想设置一个自定义的横向墨卡托投影,以我的原点为中心,并使用它将我的点投影到 lon-lat。
这似乎是 GeoToolkit(或 GeoTools)应该能够做的事情,但我很难确定使用引用库的最佳方式。
我设法编写了一些有时可以工作的代码,但有时我得到一个 ClassCast 异常,因为 GeoToolkit 试图加载 MathTransformFactory。任何帮助将非常感激。这是我的代码:
谢谢,
担
c# - 谷歌地图的通用墨卡托投影公式无法正常工作
我正在用 C# 为 Google 地图构建一个 Tile Overlay 服务器,并找到了一些不同的代码示例用于从纬度计算 Y。在让它们正常工作后,我开始注意到某些情况下覆盖层没有正确排列。为了测试这一点,我做了一个测试工具来比较谷歌地图的墨卡托 LatToY 转换和我在网上找到的公式。正如您在下面看到的,它们在某些情况下不匹配。
情况1
缩小:缩小时问题最为明显。近距离观察,几乎看不到问题。
案例#2
点接近查看边界的顶部和底部:问题在查看边界的中间更严重,并且在边缘变得更好。这种行为可以否定案例#1的行为
考试:
我创建了一个谷歌地图页面,使用谷歌地图 API 的内置墨卡托转换来显示红线,并使用参考代码进行墨卡托转换将其覆盖在图像上。这些转换用黑线表示。比较差异。
结果: 赤道 http://www.kayak411.com/Mercator/MercatorComparison%20-%20Equator.png 北方缩小 http://www.kayak411.com/Mercator/MercatorComparison%20-%20North%20Zoomed%20Out。 PNG
当您放大时,问题会在视觉上变大,但在数值上会变小: alt text http://www.kayak411.com/Mercator/MercatorComparison%20-%20North%20Zoomed%20Midway.png
无论屏幕方向如何,它都会在更近的缩放级别消失。 替代文字 http://www.kayak411.com/Mercator/MercatorComparison%20-%20North%20Zoomed%20In.png
编码:
谷歌地图客户端代码:
服务器端代码:
瓷砖切割机:http: //mapki.com/wiki/Tile_Cutter
OpenStreetMap 维基: http ://wiki.openstreetmap.org/wiki/Mercator
那么,有人经历过这种情况吗?敢问,解决了吗?或者只是有一个更好的墨卡托项目坐标转换的 C# 实现?
谢谢!
javascript - 在不同投影的底图之间切换时如何重新投影矢量图层
我有两个基础层的 OpenLayers 地图:MetaCarta (EPSG:4326) 和 Google 地图 (Mercator)。sphereMercator = false,单位是度。地图上还有一些标记、框和矢量数据。
当我在基础层(具有不同的投影)之间切换时,简单的几何图形(例如标记或框)会自动重新投影并正确显示。然而,矢量图层(折线)只是移动,而不是重新投影。我认为我需要调用某种“重建”函数或添加一些参数,以便 OpenLayers 在基础层投影发生变化时自动执行此操作。但我不知道该怎么做。
我阅读了 Spherical Mercator ( http://docs.openlayers.org/library/spherical_mercator.html ) 并查看了 OpenLayers 示例,但没有找到解决方案。
我的代码部分如下(vector.json 中的所有坐标都以度为单位):
openlayers - 使用 Geoserver 和 Openlayers 的墨卡托投影世界地图
我正在尝试使用墨卡托投影在我的地理服务器上渲染世界地图 shapefile。我尝试在 Geoserver 上声明 SRS 并在 Openlayers 中定义 EPSG 投影 3785 或 900913,但均未成功。我还尝试使用 ogr2ogr 重新投影 shapefile,但结果略有偏差。
原来的:
转换:
这是使用的命令:
我是这项技术和映射概念的新手。任何指针将不胜感激!
google-maps - 静态谷歌地图的地图集风格地图索引
我使用的是静态谷歌地图,但实际上这个问题可能适用于任何地图项目。我想将地图划分为多个象限(例如 50x50 像素)并将列标记为 A、B、C....,将行标记为 1、2、3...
接下来我打算做类似的事情,
1) 找到最远的北、东、南和西的标记 2) 使用该信息来定义每行和列框的边界框 3) 按行和列对每个标记进行分类(示例标记 1 = [ A2])
几个要求,
- 我不知道缩放级别,因为我让 Google 为我适当地设置了缩放级别,我宁愿不使用依赖于缩放级别的算法。但是,我确实知道地图上显示的所有标记的位置。
这是我想对其标记进行分类的地图示例, 静态地图示例链接。
但我认为我仍然需要一些帮助才能开始。任何人都可以帮助编写一些伪代码或发布更多资源吗?我现在有点墨守成规。
谢谢!非常感谢任何帮助!
java - 实现谷歌墨卡托(球形墨卡托)
我想在我的应用程序中使用球形墨卡托算法将纬度/经度点投影到二维平面。
球形墨卡托也称为谷歌墨卡托、EPSG-900913或EPSG-3785。
有几个页面如何通过 OpenLayers 库在 JavaScript 中使用它,但我不使用 JavaScript。
OpenLayers中的文档根本没有帮助我,所以我想寻求帮助如何在 Java 中实现 Google Mercator。
php - 在缩放级别 n 计算谷歌地图的平铺大小
嘿。我有一个使用谷歌地图的地图应用程序。我得到了地图的边界,然后我在那个地面上做了一些聚类标记,但是为了能够让聚类保持在同一个地方,我想知道如何使我通过的边界捕捉到google 使用的 tilegrid。他们用于地图的四叉树算法本质上是我所要求的
如何获得视口所在图块的边界。我试图说明它:)
如果我在瓦片边界而不是视口上进行集群计算,当我将其拆分为网格时,集群将保持在同一个位置,因为网格在每个缩放级别都是绝对的。
这也允许更好的查询缓存,因为当边界必须“卡入”到图块时,查询将非常相似,并且用户将能够使用已经显示的邻近标记进行平移。
更新
我要重新开始...
我有这个
我使用它的功能如下所示:
更新!!!!2011 年 3 月 12 日- 几乎就在那里
瓷砖有些精确,但并不完全,所以当平移时,集群可以“移动”一点。由于$step = ($sbounds[3]-$sbounds[1])*1000000;
每个缩放级别的计算并不总是相同,正如我所预料的那样,因为我认为一个图块在纬度和经度上的宽度和长度与相同缩放级别的任何其他图块相同.
php - PHP GD - 将图像扭曲到墨卡托投影视图
我有一张从我的数据库中的数据渲染的图像。我需要使用墨卡托投影方法将此图像转换为扭曲的图像,当我用它包裹一个 3d 球体时,它看起来会很逼真。
有谁知道我需要使用什么公式来制作扭曲的图像?
我正在使用带有 GD 的 PHP。
谢谢。
c++ - 如何将 Lat ,long 转换为 XY 坐标系(例如 UTM),然后将其映射到我的图像的像素空间
我有一个非常小的区域地图,我从 Openstreet 地图(PNG)和它的 OSM(.osm)文件下载了它,其中包含它的纬度,长。
现在我想将 Lat ,long 转换为 XY 坐标系(例如 UTM),然后将其映射到我的图像的像素空间,其大小为(600 x 800)。我知道这是一个双向过程,想知道如何做到这一点。谢谢