Página 1 de 1

Conversion de coordernadas

Publicado: 19 Abr 2012 20:52
por zepjau
Hola, en una pagina web he visto unas funciones que puedo aplicar al desarrollo que "intento crear" pero me encuentro con el problema que las coordenadas que utilizo (las obrtengo de un fichero gpx) son en el siguiente formato:

var r1 = punto( -6.0463544851,37.8484789, "Salida" );

Pero la fucnion para pintar el punto utiliza es la siguiente:


function rasti(x,y,rnro) {
var point = new OpenLayers.Geometry.Point(x, y);
var pointFeature = new OpenLayers.Feature.Vector(point);
var pointFeature = new OpenLayers.Feature.Vector(point);
pointFeature.attributes = {
nro: rnro,
favColor: 'orange',
align: "cm",
xOffset: 10,
yOffset: 10
};
return pointFeature;
El problema es que me la pinta en africa,¿?.
¿Qhe hay que añadir a la funcion para que la pinte donde debe ?. En este caso cerca de doñana?.

Gracias y un saludo,
Javier

Re: Conversion de coordernadas

Publicado: 19 Abr 2012 21:03
por AntonioGPS
No tienes declarado el hemisferio norte.
COn esas coordenadas, puedes emplazar un punto en cada uno de los hemisferios. Las dos tendrian las mismas coordenadas
Y no veo en la función que te permita ni siquiera definirlo

Re: Conversion de coordernadas

Publicado: 20 Abr 2012 07:43
por zepjau
Muchas gracias por la respuesta.

Pero, ¿como lo declaro?.
Disculpa mi ignorancia.

Un saludo,
Javier.

Re: Conversion de coordernadas

Publicado: 20 Abr 2012 12:41
por AntonioGPS
No lo se..
Has descrito un programa con funciones como OpenLayers.Feature.Vector(point) que no se como estan definidas...

Nos has mostrado una parte del programa, y no la totalidad de él.. Y bueno, si no se hace, no se ve como funciona

Yo veo que..
La funcion rasti llama a las dos coordenadas de la linea de texto y la asigna a X e y. Y luego tambien asigna el nombre asociado a dicha coordenada que en este caso se llama Salida

Cuando ya tiene memorizado X e Y (las coordenadas), genera el punto con la funcion OpenLayers.Geometry.Point(x, y);
Y luego sus propiedades, pintando en naranja el texto..

Luego devuelve todo a otra funcion llamada pointFeature

pero veo que falta..
1. EL modo en el que hace un parsing (lee..) las coordenadas del texto (del track...)
2. EL modo en el que se indica el hemisferio
3. Y todo lo demas..

En resumen. HAs enviado una simple rutina que es incompleta

SI me mandas el programa completo, no te prometo nada porque no me voy a poner a programar, pero si veo algo de manera facil, te lo digo

Re: Conversion de coordernadas

Publicado: 20 Abr 2012 14:22
por zepjau
Gracias Antonio, te adjunto el programa:

Espero que este claro y te sirva.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


<title>PRUEBA GPX / OpenLayers</title>

<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<link rel="stylesheet" href="estilos.css" type="text/css">

<script src="http://maps.google.com/maps/api/js?sens ... "></script>
<script type="text/javascript">
var map;
var apiKey = "AuSCzBU2JhLBqZTlNU1jboaYXY-tEo_Yf3zJMYoebBvnRyC5KPx6DWNqYg6uKxzN";
var osm, gmap, road, hybrid, aerial;

// añadido el 20/4
var WGS84 = new OpenLayers.Projection('EPSG:4326');
var MERCATOR = new OpenLayers.Projection('EPSG:900913');
//

function marca(x,y,rnro) {
// añadido el 20/4 -->.transform(WGS84, MERCATOR);
var point = new OpenLayers.Geometry.Point(x, y).transform(WGS84, MERCATOR);

// Esto le he añadido a las 20:28 de 19/4
// var lonlat = new OpenLayers.LonLat( x, y);
// var point = new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat);
//
var pointFeature = new OpenLayers.Feature.Vector(point);
pointFeature.attributes = {
nro: rnro,
favColor: 'orange',
align: "cm",
xOffset: 10,
yOffset: 10
};
return pointFeature;
}
function ruta(name,gpxfile, color) {
var stylemap = new OpenLayers.StyleMap({
"default": {
strokeColor: color,
strokeWidth: 2
}
});
gpx_layer = new OpenLayers.Layer.Vector(name, {
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: gpxfile,
format: new OpenLayers.Format.GPX({
extractRoutes: false,
extractAttributes: false,
extractWaypoints: false
})
}),
styleMap: stylemap,
isBaseLayer: false,
visibility: false
})
return gpx_layer;
}

function init(){
/* NO LO HE ASTERISCADO YO
map = new OpenLayers.Map( 'map');
layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
map.addLayer(layer);
*/
map = new OpenLayers.Map({
div: "map",
allOverlays: false
});
osm = new OpenLayers.Layer.OSM( { isBaseLayer: true, layers: "basic" } );
osm.setIsBaseLayer(true);
osm.setName("OpenStreetMap");
gmap = new OpenLayers.Layer.Google("Google Streets", { isBaseLayer: true, visibility: false, layers: "basic" });



road = new OpenLayers.Layer.Bing({
name: "Bing Road",
key: apiKey,
type: "Road",
visibility: false
});
road.setIsBaseLayer(true);
hybrid = new OpenLayers.Layer.Bing({
name: "Bing Hybrid",
key: apiKey,
type: "AerialWithLabels",
visibility: false,
isBaseLayer: true
});
aerial = new OpenLayers.Layer.Bing({
name: "Bing Aerial",
key: apiKey,
type: "Aerial",
visibility: false,
isBaseLayer: true
});


map.addLayers([osm, gmap, road, hybrid, aerial]);

map.setBaseLayer(hybrid);


var vectorLayer = new OpenLayers.Layer.Vector("marca", {
styleMap: new OpenLayers.StyleMap({'default':{
strokeColor: "#FF6200",
strokeOpacity: 1,
strokeWidth: 3,
fillColor: "#000000",
fillOpacity: 0.1,
pointRadius: 6,
pointerEvents: "visiblePainted",
// label with \n linebreaks
label : "${nro}",

fontColor: "${favColor}",
fontSize: "12px",
fontFamily: "Courier New, monospace",
fontWeight: "bold",
labelAlign: "${align}",
labelXOffset: "${xOffset}",
labelYOffset: "${yOffset}"
}})
});


var rs = marca( 37.8484789, -6.0463544851, "Salida" );
var r1 = marca( 37.8388925063, -6.0454420155, 1 );
var r2 = marca( 37.8382622708, -6.0423381939, 2 );
var r3 = marca( 37.8403936557, -6.0401817979, 3 );
var r4 = marca( 37.840572223, -6.0353455491, 4 );
var r5 = marca( 37.8432056299, -6.0372219475, 5 );
var r6 = marca( 37.8456760923, -6.034851033, 6);
var r7 = marca( 37.846597529, -6.0387007911, 7 );
var r8 = marca( 37.8470866486, -6.0415256041,8 );
var r9 = marca( 37.8465947566, -6.0424797637, 9 );
var r10 = marca( 37.8452594203, -6.043237256, 10 );
var r11 = marca( 37.8449605746, -6.0431642827, 11 );
var r12 = marca( 37.8443432586, -6.0454420155, "Meta" );

vectorLayer.addFeatures([rs, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12]);
map.addLayer(vectorLayer);


// map.setCenter((-6.0463544851,37.84484789 ), 12);
// <trkpt lat="37.229182" lon="-6.191705">


map.setCenter(
new OpenLayers.LonLat(-6.1883146044,37.2291077879 ).transform(
new OpenLayers.Projection("EPSG:4326"),
map.getProjectionObject()
), 16
);

/*
var aika_style = new OpenLayers.StyleMap({
"default": {
strokeColor: "#FFFF00",
strokeWidth: 2
}
});
var sm_style = new OpenLayers.StyleMap({
"default": {
strokeColor: "#00FF00",
strokeWidth: 2
}
});*/
/*
laser_layer = new OpenLayers.Layer.Vector("Laser (50p)", {
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "laser.gpx",
format: new OpenLayers.Format.GPX({
extractRoutes: false,
extractAttributes: false,
extractWaypoints: false
})
}),
styleMap: laser_style,
isBaseLayer: false,
visibility: false
})*/
prueba_layer = ruta("Prueba_1", "prueba.gpx", "#0000FF" );
prueba2_layer = ruta("Prueba_2" , "prueba2.gpx", "#FF0000");
map.addLayer(prueba_layer);
map.addLayer(prueba2_layer);
map.addLayer(prueba_layer);
map.addControl( new OpenLayers.Control.ScaleLine({ bottomOutUnits: "km", bottomInUnits: "m"}) );
map.addControl( new OpenLayers.Control.MousePosition() );
map.addControl(new OpenLayers.Control.LayerSwitcher());
}
</script>
</head>
<body onload="init()">
<h1 id="title">Prueba GPX -- </h1>

<div id="tags">
openstreetmap basic
</div>

<div id="shortdesc"><a href="http://openlayers.org">
<p>OpenLayers</a> Prueba GPX.</p>


</div>

<div id="map" class="smallmap"></div>


</body>
</html>

Re: Conversion de coordernadas

Publicado: 20 Abr 2012 16:45
por AntonioGPS
Aghhhhh!!!!
MIra esta linea
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>

Es un java de la API de Google a la que no tengo acceso.. NO te puedo ayudar
Lo raro es que te lo haga mal...

Re: Conversion de coordernadas

Publicado: 23 Abr 2012 19:02
por zepjau
Disculpa la demora.
Gracias por todo. El programa si funciona me coloca los puntos mas o menos donde pretendo.
Al añadir la funcion :

var point = new OpenLayers.Geometry.Point(x, y).transform(WGS84, MERCATOR);
se solucionó todo.

Voy a añadir una duda nueva.

Un saludo,
Javier.

Re: Conversion de coordernadas

Publicado: 23 Abr 2012 20:33
por AntonioGPS
genial..
Lo que no sabçia es que pudieras añadir lo de la transformacion..

Conversion de coordernadas

Publicado: 26 Oct 2012 23:34
por Lisandro
Que tal todos:

Quisiera por favor alguien me mostrara el algoritmo para la conversión de LATLON hacia otros sistemas de coordenadas, por ejemplo el que o uso es Cuba Sur, este viene muchos programas como el ILWIS, pero no sé cómo lo implementa

Saludos :wink:

Re: Conversion de coordernadas

Publicado: 31 Oct 2012 16:50
por Kike_GL
Te refieres al NAD27 Cuba ? donde la Habana seria 17 Q 358009 2556751