Hello,
Is it possible to convert the x an y coords from webmercator to lambert_72 (31370)?
Kind regards,
Serge
You should not use toFixed! You should just pass in the actual values to get the correct results.
longitude<SPAN class="punctuation token">:</SPAN> pt<SPAN class="punctuation token">.</SPAN>latitude<SPAN class="punctuation token">.</SPAN><SPAN class="token function">toFixed</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> latitude<SPAN class="punctuation token">:</SPAN> pt<SPAN class="punctuation token">.</SPAN>longitude<SPAN class="punctuation token">.</SPAN><SPAN class="token function">toFixed</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN></SPAN>
sigh...Correct. Thanks Undral..now it works like a charm..
I used the .toFixed with a copy/paste of the sample code but read over it.
Thank you for the link Dan. I am trying to comprehend it
I have made a small sample which shows me the current coords in WGS84 format (lon/lat). I want them to show me the Lambert_72 coords but I get it to work.
On every move of the mouse I do this
var outSpatialReference = new SpatialReference({ wkid: 31370 //lambert }); var wgsPoints = new Point({ longitude: pt.latitude.toFixed(5), latitude: pt.longitude.toFixed(5) }) var projectedPoints = projection.project(wgsPoints, outSpatialReference);
I create an outSpatialReference where I use the wkid for lambert. Then I get the point where the mousecursor is and put it in the projection with the function .project() --> Projects a geometry or an array of geometries to the specified output spatial reference.
However I am not really sure about the result being correct since I get coords that don't seem te be correct.
Could anyone see if the code is correct or if I am missing something?
<html><head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no"> <title>ArcGIS JavaScript Tutorials: Select a basemap</title> <style> html, body, #viewDiv { padding: 0; margin: 0; height: 100%; width: 100%; } </style> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/css/main.css"> <script src="https://js.arcgis.com/4.11/"></script>
<script>
require([ "esri/Map", "esri/request", "esri/views/MapView", "esri/layers/WMSLayer", "esri/Graphic", "esri/geometry/Polygon", "esri/symbols/SimpleFillSymbol", "esri/WebMap", "esri/geometry/projection", "esri/geometry/SpatialReference", "esri/geometry/Extent", "esri/geometry/Point" ], function (Map, esriRequest, MapView, WMSLayer, Graphic, Polygon, SimpleFillSymbol, WebMap, projection, SpatialReference, Extent, Point) {
layer = new WMSLayer({ url: 'https://geoservices.informatievlaanderen.be/raadpleegdiensten/GRB-basiskaart/wms?' });
var url = "http://loc.geopunt.be/v2/location?"
var map = new Map({ basemap: "topo-vector" //Dit is je basismap om in te lezen, });
map.add(layer); //Hier is de WMS layer die je erop "plakt"
var view = new MapView({ container: "viewDiv", map: map, center: [4.474, 51.023], //lon, lat zoom: 20, });
const cs1 = new SpatialReference({ wkid: 4272 //PE_GCS_ED_1950 }); const cs2 = new SpatialReference({ wkid: 4167 });
const extent = new Extent({ xmin: -186.0, ymin: -42.0, xmax: -179.0, ymax: -38.0 }); projection.load().then(function (evt) { //const geogtrans = projection.getTransformations(cs1, cs2, extent); //geogtrans.forEach(function (geogtran, index) { // geogtran.steps.forEach(function (step, index) { // console.log("step wkid: ", step.wkid); // }); //}); });
var coordsWidget = document.createElement("div"); coordsWidget.id = "coordsWidget"; coordsWidget.className = "esri-widget esri-component"; coordsWidget.style.padding = "7px 15px 5px"; coordsWidget.style.width = "500px";
view.ui.add(coordsWidget, "bottom-right");
//*** Update lat, lon, zoom and scale ***// function showCoordinates(pt) {
var outSpatialReferenceWebMercator = new SpatialReference({ "wkid": 3857}); var outSpatialReferenceLambert = new SpatialReference({ "wkid": 31370 });
var wgsPoints = new Point({ longitude: pt.latitude.toFixed(5), latitude: pt.longitude.toFixed(5) }) var projected3857 = []; var projected31370 = []; projected3857 = projection.project(wgsPoints, outSpatialReferenceWebMercator); projected31370 = projection.project(wgsPoints, outSpatialReferenceLambert);
var coords = "Lat/Lon: " + pt.latitude.toFixed(5) + " " + pt.longitude.toFixed(5) + "</br> WebMercator: " + projected3857.x + " " + projected3857.y + "</br> Lambert: " + projected31370.x + " " + projected31370.y + "</br> Scale 1:" + Math.round(view.scale * 1) / 1 + " | Zoom " + view.zoom; coordsWidget.innerHTML = coords; }
view.watch("stationary", function (isStationary) { showCoordinates(view.center); });
view.on("pointer-move", function (evt) { showCoordinates(view.toMap({ x: evt.x, y: evt.y })); });
}); </script></head><body> <div id="viewDiv"></div></body></html>
Kind regards
In your related link Todd recommended 'Projection'
https://community.esri.com/thread/241705-polygon-drawing-with-lambert72-values-doent-match#comment-883993
To go from one coordinate system to another
projection | ArcGIS API for JavaScript 4.13
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.