PS. Make sure you add the orekit jar file. This has to be once per session, with the command javaclasspath(javaclasspath('-dynamic'),'/Users/bhodges/Documents/myMatlab/orekit/orekit-5.0.jar') > Date: Fri, 20 May 2011 23:00:38 +0800 > From: beowulf.zhang@gmail.com > To: orekit-users@orekit.org > Subject: Re: [Orekit Users] orekit and Jython > > I'm working in Matlab 7.7, I want to test your code, I have seted the > orekit's and common-math's classpath in classpath.txt, but I get error > message > > ??? Undefined variable "TimeScalesFactory" or class "TimeScalesFactory.getUTC". > > Error in ==> orekit_test1 at 42 > utc = TimeScalesFactory.getUTC(); > > whether you can help me or not? > Thank you! > > 2011/5/19, Brian H <brianh4321@hotmail.com>: > > > > Concerning the matlab interface(?) > > > > While its somewhat crude, here is my early test script of the first > > tutorial. If I remember correctly you have to set the orekit data path using > > the System call below. There was also a problem with matlab's imported > > version of > > the commons-math library being somewhat out of date. This was fixed > > by downloading the current version and adding that directory at the top of > > your classpath.txt located in the MATLAB directory. Anyway, here is a copy > > of the original mfile. It was > > my first attempt at the matlab-java interface, pardon it's crudeness it was > > meant as > > an exercise. > > > > > > import java.lang.* > > import java.lang.Enum > > import java.text.* > > import java.util.* > > > > import org.apache.commons.* > > import org.apache.commons.math.* > > import org.apache.commons.math.geometry.* > > import org.apache.commons.math.util.* > > import org.apache.commons.math.util.MathUtils.* > > import org.orekit.bodies.* > > import org.orekit.bodies.BodyShape.* > > import org.orekit.bodies.GeodeticPoint.* > > import org.orekit.bodies.OneAxisEllipsoid.* > > import org.orekit.errors.OrekitException.* > > import org.orekit.frames.* > > import org.orekit.frames.Frame.* > > import org.orekit.frames.FramesFactory.* > > import org.orekit.frames.TopocentricFrame.* > > import org.orekit.frames.LocalOrbitalFrame.* > > import org.orekit.orbits.* > > import org.orekit.orbits.CartesianOrbit.* > > import org.orekit.orbits.Orbit.* > > import org.orekit.propagation.* > > import org.orekit.propagation.Propagator.* > > import org.orekit.propagation.analytical.* > > import org.orekit.propagation.analytical.KeplerianPropagator.* > > import org.orekit.time.* > > import org.orekit.time.AbsoluteDate.* > > import org.orekit.time.TimeScale.* > > import org.orekit.time.TimeScalesFactory.* > > import org.orekit.utils.* > > import org.orekit.utils.PVCoordinates.* > > import org.orekit.data.* > > import org.orekit.data.DataProvidersManager.* > > import LOFTypeWrapper > > System.setProperty('orekit.data.path','orekit-data') > > > > > > symbols = DecimalFormatSymbols(Locale.US); > > d3 = DecimalFormat('0.000', symbols); > > utc = TimeScalesFactory.getUTC(); > > initialDate = AbsoluteDate(2008, 10, 01, 0, 0, 00.000, utc); > > mu = 3.986004415e+14; % gravitation coefficient > > inertialFrame = FramesFactory.getEME2000(); > > posisat = Vector3D(-6142438.668, 3492467.560, -25767.25680); > > velosat = Vector3D(505.8479685, 942.7809215, 7435.922231); > > pvsat = PVCoordinates(posisat, velosat); > > initialOrbit = CartesianOrbit(pvsat, inertialFrame, initialDate, mu); > > kepler = KeplerianPropagator(initialOrbit); > > lof = LocalOrbitalFrame(inertialFrame, LOFTypeWrapper.getType(1), kepler, > > 'LOF'); > > ae = 6378137.0; % equatorial radius in meter > > f = 1.0 / 298.257223563; % flattening > > ITRF2005 = FramesFactory.getITRF2005(true); % terrestrial frame at an > > arbitrary date > > earth = OneAxisEllipsoid(ae, f, ITRF2005); > > > > % Station > > longitude = Math.toRadians(45.); > > latitude = Math.toRadians(25.); > > altitude = 0.; > > station = GeodeticPoint(latitude, longitude, altitude); > > staF = TopocentricFrame(earth, station, 'station1'); > > System.out.println(' time doppler (m/s)'); > > finalDate = AbsoluteDate(initialDate, 6000, utc); > > extrapDate = initialDate; > > while (extrapDate.compareTo(finalDate) <= 0) > > > > % We can simply get the position and velocity of station in LOF frame at > > any time > > pv = staF.getTransformTo(lof, > > extrapDate).transformPVCoordinates(PVCoordinates.ZERO); > > > > % And then calculate the doppler signal > > doppler = Vector3D.dotProduct(pv.getPosition(), pv.getVelocity()) / > > pv.getPosition().getNorm(); > > abc= d3.format(doppler); > > def= String(' '); > > ghi= extrapDate.toString(); > > jkl= ghi.concat(def.concat(abc)); > > System.out.println(jkl); > > > > extrapDate = AbsoluteDate(extrapDate, 600, utc); > > > > end > > > > > > > >> Date: Thu, 19 May 2011 09:46:30 +0200 > >> From: luc.maisonobe@c-s.fr > >> To: orekit-users@orekit.org > >> Subject: Re: [Orekit Users] orekit and Jython > >> > >> beowulf zhang <beowulf.zhang@gmail.com> a écrit : > >> > >> > Very good! Thank you... > >> > > >> > I konw the m language of Matlab support java programming now, but I > >> > was failure to test the orekit examples. I want to know whether anyone > >> > are interesting testing the orekit examples in Matlab or not. > >> > >> If you want to test these examples, I would be interested to know if > >> they work. > >> We could set up some wiki pages (yes, we know, the wiki is quite empty > >> for now) showing how to interface with several scripting languages. > >> > >> Luc > >> > >> > > >> > > >> > 2011/5/17, Petrus Hyvönen <petrus.hyvonen@gmail.com>: > >> >> Hi all, > >> >> > >> >> I was playing around with the idea of using Python for mission design, > >> >> and > >> >> found Jython and the orekit library. As new to both Python and Java, I > >> >> had > >> >> some initial troubles of getting things to work, primary the access to > >> >> orekit-data, what was current dir and javapaths etc. I am now using > >> >> Eclipse > >> >> with pydev extension, and can add the orekit jars and orekit-data to > >> >> the > >> >> eclipse project. > >> >> > >> >> As an exercise I took the liberty to translate a few of the orekit > >> >> examples > >> >> from java to jython, and copy them below as it could be of interest for > >> >> others. I have been exploring scipy before (based on regular python) > >> >> and it > >> >> contains very good plotting and array routines, which is not available > >> >> in > >> >> jython. So next step would be to find a suitable java plotting and > >> >> arrays > >> >> library to be able to represent the results. > >> >> > >> >> Regards > >> >> /Petrus > >> >> > >> >> First, a jython translation of the SlaveMode.java: > >> >> __________________________________________ > >> >> > >> >> # -*- coding: utf-8 -*- > >> >> ''' > >> >> /* Copyright 2002-2010 CS Communication & Systèmes > >> >> * Licensed to CS Communication & Systèmes (CS) under one or more > >> >> * contributor license agreements. See the NOTICE file distributed > >> >> with > >> >> * this work for additional information regarding copyright ownership. > >> >> * CS licenses this file to You under the Apache License, Version 2.0 > >> >> * (the "License"); you may not use this file except in compliance with > >> >> * the License. You may obtain a copy of the License at > >> >> * > >> >> * http://www.apache.org/licenses/LICENSE-2.0 > >> >> * > >> >> * Unless required by applicable law or agreed to in writing, software > >> >> * distributed under the License is distributed on an "AS IS" BASIS, > >> >> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > >> >> implied. > >> >> * See the License for the specific language governing permissions and > >> >> * limitations under the License. > >> >> */ > >> >> > >> >> Translated from SlaveMode.java to jython by Petrus Hyvönen 2011-05-04 > >> >> ''' > >> >> > >> >> # orekit.jar,orekit-data.zip and commons-maths in CLASSPATH through > >> >> eclipse > >> >> project > >> >> import java, os > >> >> > >> >> from org.orekit.errors import OrekitException > >> >> from org.orekit.frames import Frame > >> >> from org.orekit.frames import FramesFactory > >> >> from org.orekit.orbits import KeplerianOrbit > >> >> from org.orekit.orbits import Orbit > >> >> from org.orekit.propagation import SpacecraftState > >> >> from org.orekit.propagation.analytical import KeplerianPropagator > >> >> from org.orekit.data import DataProvidersManager > >> >> from org.orekit.data import ZipJarCrawler > >> >> from org.orekit.time import AbsoluteDate > >> >> from org.orekit.time import TimeScalesFactory > >> >> > >> >> from math import radians > >> >> > >> >> # Configure Orekit. The file orekit-data.zip must be in current dir > >> >> DM = DataProvidersManager.getInstance() > >> >> crawler=ZipJarCrawler("orekit-data.zip") > >> >> DM.clearProviders() > >> >> DM.addProvider(crawler) > >> >> > >> >> #Initial orbit parameters > >> >> a = 24396159 # semi major axis in meters > >> >> e = 0.72831215 # eccentricity > >> >> i = radians(7.0)# inclination > >> >> omega = radians(180) # perigee argument > >> >> raan = radians(261) #right ascension of ascending node > >> >> lM = 0.0 # mean anomaly > >> >> > >> >> #Inertial frame > >> >> inertialFrame = FramesFactory.getEME2000() > >> >> > >> >> #Initial date in UTC time scale > >> >> utc = TimeScalesFactory.getUTC(); > >> >> initialDate = AbsoluteDate(2004, 01, 01, 23, 30, 00.000, utc) > >> >> > >> >> #gravitation coefficient > >> >> mu = 3.986004415e+14 > >> >> > >> >> #Orbit construction as Keplerian > >> >> initialOrbit = KeplerianOrbit(a, e, i, omega, raan, lM, > >> >> KeplerianOrbit.MEAN_ANOMALY, > >> >> inertialFrame, initialDate, mu) > >> >> > >> >> #Simple extrapolation with Keplerian motion > >> >> kepler = KeplerianPropagator(initialOrbit) > >> >> > >> >> #Set the propagator to slave mode (could be omitted as it is the > >> >> default > >> >> mode) > >> >> kepler.setSlaveMode() > >> >> > >> >> #Overall duration in seconds for extrapolation > >> >> duration = 90*60.0 > >> >> > >> >> #Stop date > >> >> finalDate = AbsoluteDate(initialDate, duration, utc) > >> >> > >> >> #Step duration in seconds > >> >> stepT = 30.0 > >> >> > >> >> #Extrapolation loop > >> >> cpt = 1 > >> >> extrapDate = initialDate > >> >> while extrapDate.compareTo(finalDate) <= 0: > >> >> currentState = kepler.propagate(extrapDate) > >> >> print "step %d: time %s %s" % (cpt, currentState.getDate(), > >> >> currentState.getOrbit()) > >> >> extrapDate = AbsoluteDate(extrapDate, stepT, utc) > >> >> cpt=cpt+1 > >> >> > >> >> > >> >> ____________________________ > >> >> > >> >> An interesting example of jython inheritance of java class: > >> >> _____________________________ > >> >> > >> >> > >> >> # -*- coding: utf-8 -*- > >> >> ''' > >> >> /* Copyright 2002-2010 CS Communication & Syst?mes > >> >> * Licensed to CS Communication & Syst?mes (CS) under one or more > >> >> * contributor license agreements. See the NOTICE file distributed > >> >> with > >> >> * this work for additional information regarding copyright ownership. > >> >> * CS licenses this file to You under the Apache License, Version 2.0 > >> >> * (the "License"); you may not use this file except in compliance with > >> >> * the License. You may obtain a copy of the License at > >> >> * > >> >> * http://www.apache.org/licenses/LICENSE-2.0 > >> >> * > >> >> * Unless required by applicable law or agreed to in writing, software > >> >> * distributed under the License is distributed on an "AS IS" BASIS, > >> >> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > >> >> implied. > >> >> * See the License for the specific language governing permissions and > >> >> * limitations under the License. > >> >> */ > >> >> > >> >> Translated from SlaveMode.java to jython by Petrus Hyv?nen 2011-05-04 > >> >> ''' > >> >> # orekit and common maths in CLASSPATH through eclipse project > >> >> import java, os > >> >> > >> >> from org.orekit.data import DataProvidersManager > >> >> from org.orekit.data import ZipJarCrawler > >> >> from org.apache.commons.math.geometry import Vector3D > >> >> from org.orekit.bodies import BodyShape > >> >> from org.orekit.bodies import GeodeticPoint > >> >> from org.orekit.bodies import OneAxisEllipsoid > >> >> from org.orekit.errors import OrekitException; > >> >> from org.orekit.frames import Frame > >> >> from org.orekit.frames import FramesFactory > >> >> from org.orekit.frames import TopocentricFrame > >> >> from org.orekit.orbits import KeplerianOrbit > >> >> from org.orekit.orbits import Orbit > >> >> from org.orekit.propagation import Propagator > >> >> from org.orekit.propagation import SpacecraftState > >> >> from org.orekit.propagation.analytical import KeplerianPropagator > >> >> from org.orekit.propagation.events import ElevationDetector > >> >> from org.orekit.propagation.events import EventDetector > >> >> from org.orekit.time import AbsoluteDate > >> >> from org.orekit.time import TimeScalesFactory > >> >> from org.orekit.utils import PVCoordinates > >> >> > >> >> from math import degrees, radians, pi > >> >> > >> >> # Configure Orekit > >> >> DM = DataProvidersManager.getInstance() > >> >> crawler=ZipJarCrawler("orekit-data.zip") > >> >> DM.clearProviders() > >> >> DM.addProvider(crawler) > >> >> > >> >> # Initial state definition: date, orbit > >> >> initialDate = AbsoluteDate(2004, 01, 01, 23, 30, 00.000, > >> >> TimeScalesFactory.getUTC()) > >> >> mu = 3.986004415e+14 > >> >> inertialFrame = FramesFactory.getEME2000() # inertial frame for orbit > >> >> definition > >> >> position = Vector3D(-6142438.668, 3492467.560, -25767.25680) > >> >> velocity = Vector3D(505.8479685, 942.7809215, 7435.922231) > >> >> pvCoordinates = PVCoordinates(position, velocity) > >> >> initialOrbit = KeplerianOrbit(pvCoordinates, inertialFrame, > >> >> initialDate, mu) > >> >> > >> >> # Propagator : consider a simple keplerian motion (could be more > >> >> elaborate) > >> >> kepler = KeplerianPropagator(initialOrbit) > >> >> > >> >> #Earth and frame > >> >> ae = 6378137.0 # // equatorial radius in meter > >> >> f = 1.0 / 298.257223563 #; // flattening > >> >> ITRF2005 = FramesFactory.getITRF2005() #; // terrestrial frame at an > >> >> arbitrary date > >> >> earth = OneAxisEllipsoid(ae, f, ITRF2005) > >> >> > >> >> # Station > >> >> longitude = radians(45.0) > >> >> latitude = radians(25.0) > >> >> altitude = 0.0 > >> >> station1 = GeodeticPoint(latitude, longitude, altitude) > >> >> sta1Frame = TopocentricFrame(earth, station1, "station1") > >> >> > >> >> # Event definition > >> >> maxcheck = 1.0 > >> >> elevation = radians(5.0) > >> >> > >> >> > >> >> class VisibilityDetector(ElevationDetector): > >> >> # Class for handling the eventOccured java. Example of subclassing > >> >> # a java class in jython > >> >> def __init__(self, maxCheck, elevation, topo): > >> >> ElevationDetector.__init__(self,maxCheck, elevation, topo) > >> >> > >> >> def eventOccurred(self, s, increasing): > >> >> if (increasing): > >> >> print "Visibility on", > >> >> self.topocentricFrame.getName(),"begins > >> >> at" , s.getDate() > >> >> else: > >> >> print "Visibility on", self.topocentricFrame.getName(), > >> >> "ends > >> >> at" , s.getDate() > >> >> return self.CONTINUE > >> >> > >> >> sta1Visi = VisibilityDetector(maxcheck, elevation, sta1Frame) > >> >> > >> >> #Add event to be detected > >> >> kepler.addEventDetector(sta1Visi) > >> >> > >> >> #Propagate from the initial date to the first raising or for the fixed > >> >> duration > >> >> finalState = kepler.propagate(initialDate.shiftedBy(1500.0)) > >> >> > >> >> print "Final state : " , finalState.getDate().durationFrom(initialDate) > >> >> > >> >> _________________________________ > >> >> > >> >> > >> >> > >> > > >> > > >> > >> > >> > >> ---------------------------------------------------------------- > >> This message was sent using IMP, the Internet Messaging Program. > >> > >> > > |