summaryrefslogtreecommitdiff
path: root/tools/mmd
diff options
context:
space:
mode:
authorJogi Hofmüller <jogi@mur.at>2011-08-10 09:24:00 +0000
committerJogi Hofmüller <jogi@mur.at>2011-08-10 09:24:00 +0000
commitcf3909d28a65036d16865563407d7b61b6db8ef8 (patch)
treeceaa80922a66653c8dd702e7b23512dfad494b64 /tools/mmd
parent- set map zoom to 1 manually (diff)
- 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
Diffstat (limited to 'tools/mmd')
-rw-r--r--tools/mmd/MmdWidgets.py78
1 files changed, 50 insertions, 28 deletions
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);
</script>