Tuesday, September 11, 2018

wkid to lat long

google : wkid lat long




https://gis.stackexchange.com/questions/278165/i-have-wkid-latestwkid-and-x-y-coordinates-i-need-lat-lng/295274#295274



https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer/project?inSR=26985&outSR=4326&geometries=%7B%0D%0A++%22geometryType%22+%3A+%22esriGeometryPoint%22%2C%0D%0A++%22geometries%22+%3A+%5B%0D%0A+++++%7B%0D%0A+++++++%22x%22+%3A+398747.6825%2C+%0D%0A+++++++%22y%22+%3A+136532.0785%0D%0A+++++%7D%0D%0A++%5D%0D%0A%7D&f=HTML

You could use the ArcGIS server REST endpoint to convert to wkid 4326 (lat/lon). Here's a URL for one of Esri's sample servers:
ArcGIS projection engine
Pasting the coordinate in google maps gives you this (Littleton, right?):
If you just need to convert the occasional coordinate this will work fine, but I guess as soon as it's thousands of coordinates, you are going to want to automate stuff.
As for the meaning of latestWkid, see here: https://support.esri.com/en/technical-article/000013950






=============================

















fix bug:

/*  
                * bug fix: 
                * No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:10' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.


++++++++++++++++++++++ good solution ++++++++++++++++++++++++++

use dataType: 'jsonp', works for me.


   
       async function get_ajax_data(){
           var _reprojected_lat_lng = await $.ajax({
                                    type: 'GET',
                                    dataType: 'jsonp',
                                    data: {},
                                    url: _reprojection_url,
                                    error: function (jqXHR, textStatus, errorThrown) {
                                        console.log(jqXHR)
                                    },
                                    success: function (data) {
                                        console.log(data);
                                       
                                        // note: data is already json type, you just specify dataType: jsonp
                                        return data;
                                    }
                                });


     } // function             










another way use fetch() not easy. bad solution






ff++++++++++++++++++++++++++++++++++++++++++++++++++







                * https://stackoverflow.com/questions/43871637/no-access-control-allow-origin-header-is-present-on-the-requested-resource-whe
                
                            solution

                            const proxyurl = "https://cors-anywhere.herokuapp.com/";
                            const url = "https://example.com"; // site that doesn’t send Access-Control-*
                            fetch(proxyurl + url) // https://cors-anywhere.herokuapp.com/https://example.com
                            .then(response => response.text())
                            .then(contents => console.log(contents))
                            .catch(() => console.log("Can’t access " + url + " response. Blocked by browser?"))
                */
               



No 'Access-Control-Allow-Origin' header is present on the requested resource—when trying to get data from a REST API




How to use a CORS proxy to get around “No Access-Control-Allow-Origin header” problems
If you don’t control the server your frontend JavaScript code is sending a request to, and the problem with the response from that server is just the lack of the necessary Access-Control-Allow-Origin header, you can still get things to work—by making the request through a CORS proxy. To show how that works, first here’s some code that doesn’t use a CORS proxy:
const url = "https://example.com"; // site that doesn’t send Access-Control-*
fetch(url)
.then(response => response.text())
.then(contents => console.log(contents))
.catch(() => console.log("Can’t access " + url + " response. Blocked by browser?"))

The reason the catch block gets hit there is, the browser prevents that code from accessing the response which comes back from https://example.com. And the reason the browser does that is, the response lacks the Access-Control-Allow-Origin response header.
Now, here’s exactly the same example but just with a CORS proxy added in:
const proxyurl = "https://cors-anywhere.herokuapp.com/";
const url = "https://example.com"; // site that doesn’t send Access-Control-*
fetch(proxyurl + url) // https://cors-anywhere.herokuapp.com/https://example.com
.then(response => response.text())
.then(contents => console.log(contents))
.catch(() => console.log("Can’t access " + url + " response. Blocked by browser?"))

Note: If https://cors-anywhere.herokuapp.com is down or unavailable when you try it, then see below for how to deploy your own CORS Anywhere server at Heroku in just 2-3 minutes.
The second code snippet above can access the response successfully because taking the request URL and changing it to https://cors-anywhere.herokuapp.com/https://example.com—by just prefixing it with the proxy URL—causes the request to get made through that proxy, which then:
  1. Forwards the request to https://example.com.
  2. Receives the response from https://example.com.
  3. Adds the Access-Control-Allow-Origin header to the response.
  4. Passes that response, with that added header, back to the requesting frontend code.
The browser then allows the frontend code to access the response, because that response with the Access-Control-Allow-Origin response header is what the browser sees.
You can easily run your own proxy using code from https://github.com/Rob--W/cors-anywhere/.
You can also easily deploy your own proxy to Heroku in literally just 2-3 minutes, with 5 commands:
git clone https://github.com/Rob--W/cors-anywhere.git
cd cors-anywhere/
npm install
heroku create
git push heroku master
After running those commands, you’ll end up with your own CORS Anywhere server running at, e.g., https://cryptic-headland-94862.herokuapp.com/. So then rather than prefixing your request URL with https://cors-anywhere.herokuapp.com, prefix it instead with the URL for your own instance; e.g., https://cryptic-headland-94862.herokuapp.com/https://example.com.
So if when you go to try to use https://cors-anywhere.herokuapp.com, you find it’s down(which it sometimes will be), then consider getting a Heroku account (if you don’t already) and take 2 or 3 minutes to do the steps above to deploy your own CORS Anywhere server on Heroku.
Regardless, whether you run your own or use https://cors-anywhere.herokuapp.com or other open proxy, this solution will work even if the request is one that triggers browsers to do a CORS preflight OPTIONS request—because in that case, the proxy also sends back the Access-Control-Allow-Headers and Access-Control-Allow-Methods headers needed to make the preflight successful.

No comments: