我试图通过使用ArcGIS baseMap绘制Openlayers地图来获取带有一些坐标的gpx文件。
当我绘制折线并创建gpx时,如果我在Google地球上打开它,我所看到的并不是我之前绘制的,这条线与原始线完全不同,而不是我绘制它的位置。 我知道这是一个投影问题,我已经尝试将几何对象从墨卡托转换为地理,也直接从地图坐标获取地理坐标,但没有。 我试图将“spatialReference”设置为4362然后设置为3857,但没有任何变化。
我将在gps设备上使用.gpx(下周我将前往斯瓦尔巴群岛,我需要一些gps音轨来通过雪地摩托去Longyearbyen,那里没有任何生命迹象出城,所以我必须做好准备),当我在那里时,我会调整他们将租给我的设备的输出,但现在我需要保存.gpx文件几乎正确的坐标
我从地图上得到那些坐标: lat:61.22582068741976 lon:4.684820015391338 当我期待相反的东西78. lat和15. lon。
这是我用来创建地图的一些代码(我没有粘贴代码,我知道它不对我的问题负责):
var initialExtent = new esri.geometry.Extent({"xmin":505615.5801124362,"ymin":8678955.717187276,"xmax":525935.6207525175,"ymax":8689168.654279819,"spatialReference":{"wkid":32633,"latestWkid":32633}});
map = map = new esri.Map("map", {extent: initialExtent, logo : false});
basemapURL = "http://geodata.npolar.no/ArcGIS/rest/services/inspire1/NP_TopoSvalbard_U33_CHL/MapServer/";
map.addLayer(new esri.layers.ArcGISTiledMapServiceLayer(basemapURL));
这里我使用的是wkid 32633,这是该地图的默认值,尝试使用已知地图进行更改,但没有任何反应。
现在我用来获取坐标的代码:
dojo.connect(tb, "onDrawEnd", getCoords);
function getCoords(geo) {
var r=confirm("Salvare tracciato?");
if (r==true) {
geo = esri.geometry.webMercatorToGeographic(geo);
for ( var path = 0; path < geo.paths.length; path ++ ) {
for ( var pt = 0; pt < geo.paths[path].length; pt++ ) {
tra += '<wpt lat="'+geo.paths[path][pt][1]+'" lon="'+geo.paths[path][pt][0]+'"></wpt>';
}
}
}
}
“tra”是一个变量,用于存储我将使用其他函数插入到gpx文件中的所有代码。 “webMercatorToGeographic”函数将地图坐标转换为地理坐标。
答案 0 :(得分:0)
感谢Devdatta Tengshe在GIS.stackexchange上我得到了我需要的东西:
在您的应用程序中使用proj4js库。为此,请按照这些操作 步骤进行:
从中下载最新的库 https://github.com/proj4js/proj4js/releases在您的HTML文件中使用 你会 需要先定义投影才能使用它。你可以这样做 通过使用以下代码行:var UTM33N =“+ proj = utm + zone = 33 + ellps = WGS84 + datum = WGS84 + units = m + no_defs“; var GCS84 =”+ proj = longlat + ellps = WGS84 + datum = WGS84 + no_defs“;
当您需要转换时,可以使用以下行:var 变换= proj4(UTM33N,GCS84,[X,Y]);其中x&amp; y是坐标 在你给定的预测中。作为输出,你将获得一个包含两个的数组 元素,经度,&amp;谷歌纵横
这很好。