gpt4 book ai didi

javascript - 将 X,Y 像素转换为经度和纬度

转载 作者:行者123 更新时间:2023-12-04 00:03:59 25 4
gpt4 key购买 nike

我有一张来自 map 一部分的 8640x11520 像素的真实比例图像。我需要将我的 x,y 点转换为坐标,有人知道吗?

enter image description here

var mapWidth = 8640;
var mapHeight = 11520;

var mapLatitudeStart = 28.349768989955244;
var mapLongitudeStart = -81.55803680419922;

var maxLatitude = 28.349806758250104;
var maxLongitude = -81.541128;

var pointNeedConversion = {'x': 4813.10 'y': 2674.84};
var pointLatitude = ??

最佳答案

当您映射到纬度/经度时,请注意,您不能使用线性比例来执行此操作,而是必须检查将哪种投影应用于 map ,然后相应地转换坐标。

通常 map 是WGS84 Projections所以你必须对墨卡托投影应用逆公式。

这项任务并非微不足道,所以我的建议是依赖像 Proj4js 这样的库。

该库的使用很简单,您提供一个引用系统来处理,然后您可以在另一个投影上转换坐标。

    // include the library
<script src="lib/proj4js-combined.js"></script> //adjust the path for your server
//or else use the compressed version
// creating source and destination Proj4js objects
// once initialized, these may be re-used as often as needed
var source = new Proj4js.Proj('EPSG:4326'); //source coordinates will be in Longitude/Latitude, WGS84
var dest = new Proj4js.Proj('EPSG:3785'); //destination coordinates in meters, global spherical mercators projection, see http://spatialreference.org/ref/epsg/3785/


// transforming point coordinates
var p = new Proj4js.Point(-76.0,45.0); //any object will do as long as it has 'x' and 'y' properties
Proj4js.transform(source, dest, p); //do the transformation. x and y are modified in place

//p.x and p.y are now EPSG:3785 in meters

摘录: Convert long/lat to pixel x/y on a given picture

工作示例:

var dest = new proj4.Proj('EPSG:4326'); //destination coordinates coordinates will be in Longitude/Latitude, WGS84 , global spherical mercators projection, see http://spatialreference.org/ref/epsg/3785/     
var source = new proj4.Proj('EPSG:3785'); //source coordinates in meters

$("#convert").on("click", function(){
var p = new proj4.Point($("#x").val(), $("#y").val() );
proj4.transform(source, dest, p);
alert("lng : " +p.x + " \nlat : " + p.y);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.3/proj4.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
x : <input type="number" id="x" />
y : <input type="number" id="y" />
<button id="convert">Convert</button>


注:如果您打算使用它来映射 GPS 信号,则必须知道 map Angular 落的纬度/经度是多少。

这是一个直观地解释 的图形示例为什么线性比例不适合:

enter image description here

仔细观察(例如)格陵兰岛的大小,在墨卡托投影空间坐标上它看起来 比北美大 .当然不是!

关于javascript - 将 X,Y 像素转换为经度和纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58954628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com