[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Orekit Users] orekit and Jython



You should check "javaclasspath" to make sure that the commons-math directorie appear at the top of the class path

> Date: Sat, 21 May 2011 00:04:17 +0800
> From: beowulf.zhang@gmail.com
> To: orekit-users@orekit.org
> Subject: Re: [Orekit Users] orekit and Jython
>
> Thank you!
>
> I add line
>
> javaclasspath '$matlabroot/java/orekit/commons-math-2.1.jar'
> javaclasspath '$matlabroot/java/orekit/orekit-5.0.jar'
>
> in script head, so all is fine!
>
> 2011/5/21, Brian H <brianh4321@hotmail.com>:
> >
> > 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.
> >> >>
> >> >>
> >> >
> >