1 votos

Proj4js Problema en la conversión de coordenadas desde google mercator

Soy realmente un principiante en la web-cartografía, así que lo siento si este tema es rudimentario o básico pero realmente busco durante mucho tiempo y todavía estoy pegado en él.

Así que el problema es:

No entiendo por qué este código no convierte correctamente mis coordenadas (exprimidas en google mercator epsg:900913) a WGS84 web mercator epsg:4326:

   Proj4js.defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";
Proj4js.defs["EPSG:900913"]= "+title=GoogleMercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs";

var dest = new Proj4js.Proj("EPSG:4326");    
var source = new Proj4js.Proj("EPSG:900913");
var point = new Proj4js.Point( 85286.417057415703, 4347668.9422677439 ); 
Proj4js.transform(source, dest, point);
var transformation = Proj4js.transform(source, dest, point);
alert(point.y + "," + point.x);

Debería tener a cambio x (largo) = 0,7661409 e y(lat) =36,3411771 (calculado por http://twcc.free.fr/ ) pero con este código tengo: x=0.0003264583485814848 y=0.000006882360979601046

0 votos

No sé cómo lo haces, pero estás convirtiendo dos veces. Si tomo los valores originales y los desproyecto, obtengo los resultados de twcc. Si trato esos resultados como EPSG:3857 y los desproyecto de nuevo, obtengo tus resultados.

1voto

SpliFF Puntos 214

Google Mercator es ahora EPSG:3857, mientras que 900913 ha sido eliminado de la lista de códigos EPSG.

Además, hay algún tipo de hack dentro de la definición de la proyección, porque el mercator de Google se calcula sobre una esfera (a=b), pero las coordenadas lat/lon son las del ellisoide WGS84. Esto sólo se implementa correctamente para EPSG:3857.

0 votos

Lo intento con estos códigos: Proj4js.defs["SR-ORG:6864"] = "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"; Proj4js. defs["SR-ORG:7483"] = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0. 0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"; que son ambos epsg:3857, pero sigo teniendo el mismo tipo de resultados :(

1voto

BWW Puntos 302

Información diversa:

  • algunas líneas no son útiles

Por defecto, las siguientes proyecciones ya existen, por lo que no es necesario declararlas

Proj4js.defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";
Proj4js.defs["EPSG:900913"]= "+title=GoogleMercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs";

También hay que quitar o la transformación ocurre dos veces como se señala en otra respuesta.

Proj4js.transform(source, dest, point);

Así que el mínimo para obtener el resultado con su código actual es:

var src = new Proj4js.Proj("EPSG:900913");
var point = new Proj4js.Point(85286.417057415703, 4347668.9422677439); 
//Do your conversion 
Proj4js.transform(src, Proj4js.WGS84, point) 
//The point object no has the converted coordinates 
console.log(point.x + "," + point.y);

Para la última línea, no utilice alert : es una práctica anticuada cuando no existía el depurador del navegador. Usted debe ver un poco de depuración del navegador en http://www.creativebloq.com/javascript/javascript-debugging-beginners-3122820

  • Tal vez pueda utilizar la versión actualizada de la biblioteca (la serie 2.x) de http://proj4js.org (donde también encontrarás el ejemplo que utilizaré a continuación)

Con el proj4js v2.x, la conversión de su proyección es posible con sólo las siguientes líneas:

var coordinatesEPSG4326 = proj4('EPSG:3857').inverse([85286.417057415703, 4347668.9422677439]);
console.log(coordinatesEPSG4326);

0 votos

Acabo de añadir la respuesta aquí, aunque olvidé que ya le di una respuesta hace unos meses en el foro francés georezo.net/foro/viewtopic.php?id=94068 ;)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X