From cf3909d28a65036d16865563407d7b61b6db8ef8 Mon Sep 17 00:00:00 2001 From: Jogi Hofmüller Date: Wed, 10 Aug 2011 09:24:00 +0000 Subject: - fixed the east/west connection of curves bug - start drawing a new Feature iff longitude changes from + to - git-svn-id: https://svn.spreadspace.org/mur.sat@115 7de4ea59-55d0-425e-a1af-a3118ea81d4c --- tools/mmd/MmdWidgets.py | 78 +++++++++++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 28 deletions(-) (limited to 'tools/mmd') diff --git a/tools/mmd/MmdWidgets.py b/tools/mmd/MmdWidgets.py index 6884d78..76688a7 100644 --- a/tools/mmd/MmdWidgets.py +++ b/tools/mmd/MmdWidgets.py @@ -6,11 +6,37 @@ import time import ephem from MmdLocation import Location -def createJavaArray (jarray, name): - astring = '''var {0} = new Array ('''.format (name) - for e in jarray: - astring = '''{0}\n\t{1}'''.format (astring, e) - astring = '''{0}\n);'''.format (astring) +''' +var trajectory = new Array ( + new Array (), + new Array () +); +''' + +# def createJavaArray (jarray, name): +# astring = '''var {0} = new Array ('''.format (name) +# for e in jarray: +# astring = '''{0}\n\t{1}'''.format (astring, e) +# astring = '''{0}\n);'''.format (astring) +# return astring + +def createJavaArray (point_list, name): + astring = '''var {0} = new Array (\n'''.format (name) + astring = '{0}\tnew Array ('.format (astring) + last = 'west' + + for point in point_list: + if point[0][0] == '-': + if last == 'east': + astring = astring[:-1] + astring = '{0}\n\t\t),\n\tnew Array ('.format (astring) + last = 'west' + else: + last = 'east' + astring = '{0}\n\t\tnew OpenLayers.LonLat ({1}, {2}).transform (from, to),'.format (astring, point[0], point[1]) + if astring[-1] == ',': + astring = astring[:-1] + astring = '{0}\n\t\t)\n\t);'.format (astring) return astring def dms2degdec (lonlat): @@ -40,23 +66,17 @@ def computeTrajectory (longitude, latitude, elevation): graz = ephem.Observer () graz.long, graz.lat, graz.elevation = longitude, latitude, elevation - sat.compute (graz) - array_string = 'new OpenLayers.LonLat ({0}, {1}).transform (from, to){2}' - longitude = dms2degdec (sat.sublong.__str__ ()) - latitude = dms2degdec (sat.sublat.__str__ ()) - java_array = [array_string.format (dms2degdec (sat.sublong.__str__ ()), dms2degdec (sat.sublat.__str__ ()), ',')] + point_list = [] # calculate points for next three hours for i in range (12 * 3): graz.date += 5 * ephem.minute sat.compute (graz) - java_array.append (array_string.format (dms2degdec (sat.sublong.__str__ ()), dms2degdec (sat.sublat.__str__ ()), ',')) + point_list.append ( + (str (dms2degdec (sat.sublong.__str__ ())), str (dms2degdec (sat.sublat.__str__ ()))) + ) - graz.date += 5 * ephem.minute - sat.compute (graz) - java_array.append (array_string.format (dms2degdec (sat.sublong.__str__ ()), dms2degdec (sat.sublat.__str__ ()), '')) - - return longitude, latitude, createJavaArray (java_array, 'trajectory') + return point_list[0][0], point_list[0][1], createJavaArray (point_list, 'curves') def loginFormWidget (): html = ''' @@ -242,23 +262,25 @@ def osmWidget (satellite, user): // points/polygons var lineLayer = new OpenLayers.Layer.Vector ("Polygons"); map.addLayer (lineLayer); - map.addControl (new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path)); - - var points = new Array (new OpenLayers.Geometry.Point (sat_position.lon, sat_position.lat)); + // map.addControl (new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path)); + var Features = new Array (); + var colors = new Array ('#ff0000', '#00ff00', '#0000ff'); - for (var i = 0; i < trajectory.length; i++) + for (var i = 0; i < curves.length; i++) {{ - points.push (new OpenLayers.Geometry.Point (trajectory[i].lon, trajectory[i].lat)); + var points = new Array (); + for (var j = 0; j < curves[i].length; j++) + {{ + points.push (new OpenLayers.Geometry.Point (curves[i][j].lon, curves[i][j].lat)); + }} + var c = i % 3; + var lineStyle = {{strokeColor: colors[c], strokeOpacity: 1, strokeWidth: 1}}; + Features.push (new OpenLayers.Feature.Vector (new OpenLayers.Geometry.LineString (points), null, lineStyle)) }} - var polygon = new OpenLayers.Geometry.LineString (points); - var lineStyle = {{strokeColor: '#00ff00', strokeOpacity: 1, strokeWidth: 1}}; - var lineFeature = new OpenLayers.Feature.Vector (polygon, null, lineStyle); - lineLayer.addFeatures ([lineFeature]); + lineLayer.addFeatures (Features); - // center the map - // map.setCenter (sat_position, 1); - // map.zoomToMaxExtent (); + // zoom to world view map.zoomTo (1); -- cgit v1.2.3