[cig-commits] r14992 - in cs/spatialdata-0.1/trunk: . libsrc/spatialdb libsrc/units tests/libtests/spatialdb tests/libtests/spatialdb/data tests/libtests/units
brad at geodynamics.org
brad at geodynamics.org
Wed May 13 20:17:43 PDT 2009
Author: brad
Date: 2009-05-13 20:17:42 -0700 (Wed, 13 May 2009)
New Revision: 14992
Modified:
cs/spatialdata-0.1/trunk/Makefile.am
cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIO.cc
cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIO.hh
cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIOAscii.cc
cs/spatialdata-0.1/trunk/libsrc/units/Parser.cc
cs/spatialdata-0.1/trunk/libsrc/units/Parser.hh
cs/spatialdata-0.1/trunk/setup.py
cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestSpatialDB.cc
cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/data/spatialdb.dat
cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/testspatial.cc
cs/spatialdata-0.1/trunk/tests/libtests/units/TestParser.cc
cs/spatialdata-0.1/trunk/tests/libtests/units/testunits.cc
Log:
Added unit conversions to SimpleIO.
Modified: cs/spatialdata-0.1/trunk/Makefile.am
===================================================================
--- cs/spatialdata-0.1/trunk/Makefile.am 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/Makefile.am 2009-05-14 03:17:42 UTC (rev 14992)
@@ -10,7 +10,7 @@
# ----------------------------------------------------------------------
#
-ACLOCAL_AMFLAGS = -I ./m4
+ACLOCAL_AMFLAGS = -I m4
SUBDIRS = \
libsrc \
Modified: cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIO.cc
===================================================================
--- cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIO.cc 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIO.cc 2009-05-14 03:17:42 UTC (rev 14992)
@@ -21,7 +21,9 @@
#include "SimpleDBData.hh" // USES SimpleDBData
#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
+#include "spatialdata/units/Parser.hh" // USES Parser
+#include <vector> // USES std::vector
#include <stdexcept> // USES std::runtime_error, std::exception
#include <sstream> // USES std::ostringsgream
#include <assert.h> // USES assert()
@@ -72,5 +74,32 @@
} // if
} // checkCompatibility
+// ----------------------------------------------------------------------
+void
+spatialdata::spatialdb::SimpleIO::convertToSI(SimpleDBData* const data)
+{ // convertToSI
+ assert(0 != data);
+#if 1
+ spatialdata::units::Parser parser;
+
+ const int numValues = data->numValues();
+ std::vector<double> scales(numValues);
+ for (int iVal=0; iVal < numValues; ++iVal) {
+ if (strcasecmp(data->units(iVal), "none") != 0)
+ scales[iVal] = parser.parse(data->units(iVal));
+ else
+ scales[iVal] = 1.0;
+ } // for
+
+ const int numLocs = data->numLocs();
+ for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+ double* values = data->data(iLoc);
+ for (int iVal=0; iVal < numValues; ++iVal)
+ values[iVal] *= scales[iVal];
+ } // for
+#endif
+} // convertToSI
+
+
// End of file
Modified: cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIO.hh
===================================================================
--- cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIO.hh 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIO.hh 2009-05-14 03:17:42 UTC (rev 14992)
@@ -88,6 +88,12 @@
static void checkCompatibility(const SimpleDBData& data,
const spatialdata::geocoords::CoordSys* pCS);
+ /** Convert values to SI units.
+ *
+ * @param data Database data
+ */
+ static void convertToSI(SimpleDBData* const data);
+
private :
// PRIVATE METHODS ////////////////////////////////////////////////////
Modified: cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIOAscii.cc
===================================================================
--- cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIOAscii.cc 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/libsrc/spatialdb/SimpleIOAscii.cc 2009-05-14 03:17:42 UTC (rev 14992)
@@ -254,7 +254,9 @@
// number of points
checkCompatibility(*pData, *ppCS);
- assert(0 != *ppCS);
+ // Convert to SI units
+ convertToSI(pData);
+
(*ppCS)->initialize();
} // _readV1
Modified: cs/spatialdata-0.1/trunk/libsrc/units/Parser.cc
===================================================================
--- cs/spatialdata-0.1/trunk/libsrc/units/Parser.cc 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/libsrc/units/Parser.cc 2009-05-14 03:17:42 UTC (rev 14992)
@@ -22,12 +22,17 @@
// Default constructor
spatialdata::units::Parser::Parser(void)
{ // constructor
+ // Initialize Python interpreter if it is not already initialized.
+ _alreadyInitialized = Py_IsInitialized();
+ if (!_alreadyInitialized)
+ Py_Initialize();
+
// Should check for NULL, decode the exception, and throw a C++ equivalent
PyObject *mod = PyImport_ImportModule("pyre.units");
assert(0 != mod);
PyObject *cls = PyObject_GetAttrString(mod, "parser");
assert(0 != cls);
- _parser = PyObject_CallFunctionObjArgs(cls, NULL);
+ _parser = PyObject_CallFunctionObjArgs(cls, NULL);
assert(0 != _parser);
Py_DECREF(cls);
Py_DECREF(mod);
@@ -38,6 +43,9 @@
spatialdata::units::Parser::~Parser(void)
{ // destructor
Py_DECREF(_parser); _parser = 0;
+
+ if (!_alreadyInitialized)
+ Py_Finalize();
} // destructor
// ----------------------------------------------------------------------
Modified: cs/spatialdata-0.1/trunk/libsrc/units/Parser.hh
===================================================================
--- cs/spatialdata-0.1/trunk/libsrc/units/Parser.hh 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/libsrc/units/Parser.hh 2009-05-14 03:17:42 UTC (rev 14992)
@@ -20,7 +20,7 @@
#include "unitsfwd.hh"
-#include "Python.h"
+#include <Python.h>
/// C++ interface to Pyre units parser.
class spatialdata::units::Parser
@@ -48,11 +48,12 @@
*/
double parse(const char* units);
-
private :
// PRIVATE MEMBERS ////////////////////////////////////////////////////
PyObject* _parser;
+ bool _alreadyInitialized;
+
}; // class Parser
#endif // spatialdata_units_parser_hh
Modified: cs/spatialdata-0.1/trunk/setup.py
===================================================================
--- cs/spatialdata-0.1/trunk/setup.py 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/setup.py 2009-05-14 03:17:42 UTC (rev 14992)
@@ -7,7 +7,7 @@
setup(
name = 'spatialdata',
- version = '0.3.1',
+ version = '0.5.0',
zip_safe = False,
packages = find_packages(),
Modified: cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestSpatialDB.cc
===================================================================
--- cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestSpatialDB.cc 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestSpatialDB.cc 2009-05-14 03:17:42 UTC (rev 14992)
@@ -63,11 +63,11 @@
{ // testDB
CPPUNIT_ASSERT(0 != _pDB);
- const char* names[] = {"two", "one"};
- const char* units[] = {"m", "m"};
- const int numVals = 2;
+ const char* names[] = {"two", "one", "four", "three"};
+ const char* units[] = {"km", "m", "None", "MPa"};
+ const int numVals = 4;
const double queryLoc[] = { 1.0, 2.0, 3.0 };
- const double vals[] = { 6.3, 4.7 };
+ const double vals[] = { 6.3e+3, 4.7, 0.8, 1.2e+6 };
const int errFlags[] = { 0 };
const int spaceDim = 3;
@@ -82,7 +82,7 @@
const double tolerance = 1.0e-06;
for (int iVal=0; iVal < numVals; ++iVal)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(valsQ[iVal]/vals[numVals-iVal-1],
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(valsQ[iVal]/vals[iVal],
1.0, tolerance);
delete[] valsQ; valsQ = 0;
@@ -97,11 +97,11 @@
CPPUNIT_ASSERT(0 != _pDB);
const char* names[] = {"two", "one"};
- const char* units[] = {"m", "m"};
+ const char* units[] = {"km", "m"};
const int numVals = 2;
const double queryLoc[] = { 1.0, 2.0, 3.0 };
const int spaceDim = 3;
- const double vals[] = { 6.3, 4.7 };
+ const double vals[] = { 6.3e+3, 4.7 };
const int errFlags[] = { 0 };
_pDB->queryVals(names, numVals);
@@ -117,7 +117,7 @@
const double tolerance = 1.0e-06;
for (int iVal=0; iVal < numVals; ++iVal)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(valsQ[iVal]/vals[numVals-iVal-1],
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(valsQ[iVal]/vals[iVal],
1.0, tolerance);
delete[] valsQ; valsQ = 0;
Modified: cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/data/spatialdb.dat
===================================================================
--- cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/data/spatialdb.dat 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/data/spatialdb.dat 2009-05-14 03:17:42 UTC (rev 14992)
@@ -1,12 +1,12 @@
#SPATIAL.ascii 1
SimpleDB {
- num-values = 2
- value-names = One Two
- value-units = m m
+ num-values = 4
+ value-names = One Two Three Four
+ value-units = m km MPa None
num-locs = 1
data-dim = 0
cs-data = cartesian {
to-meters = 1.0
}
}
- 6.000000e-01 1.000000e-01 2.000000e-01 6.300000e+00 4.700000e+00
+ 6.000000e-01 1.000000e-01 2.000000e-01 4.7 6.3 1.2 0.8
Modified: cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/testspatial.cc
===================================================================
--- cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/testspatial.cc 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/testspatial.cc 2009-05-14 03:17:42 UTC (rev 14992)
@@ -46,7 +46,5 @@
return (result.wasSuccessful() ? 0 : 1);
} // main
-// version
-// $Id$
// End of file
Modified: cs/spatialdata-0.1/trunk/tests/libtests/units/TestParser.cc
===================================================================
--- cs/spatialdata-0.1/trunk/tests/libtests/units/TestParser.cc 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/tests/libtests/units/TestParser.cc 2009-05-14 03:17:42 UTC (rev 14992)
@@ -24,7 +24,13 @@
void
spatialdata::units::TestParser::testConstructor(void)
{ // testConstructor
- Parser parser;
+ // Test without prior initialization.
+ Parser parserA;
+
+ // Test with prior initialization.
+ Py_Initialize();
+ Parser parserB;
+ Py_Finalize();
} // testConstructor
// ----------------------------------------------------------------------
Modified: cs/spatialdata-0.1/trunk/tests/libtests/units/testunits.cc
===================================================================
--- cs/spatialdata-0.1/trunk/tests/libtests/units/testunits.cc 2009-05-12 23:51:56 UTC (rev 14991)
+++ cs/spatialdata-0.1/trunk/tests/libtests/units/testunits.cc 2009-05-14 03:17:42 UTC (rev 14992)
@@ -19,15 +19,10 @@
#include <cppunit/TestRunner.h>
#include <cppunit/TextOutputter.h>
-#include <Python.h>
-
int
main(int argc,
char* argv[])
{ // main
- // Initialize Python interpreter
- Py_Initialize();
-
// Create event manager and test controller
CppUnit::TestResult controller;
@@ -48,8 +43,6 @@
CppUnit::TextOutputter outputter(&result, std::cerr);
outputter.write();
- Py_Finalize();
-
return (result.wasSuccessful() ? 0 : 1);
} // main
More information about the CIG-COMMITS
mailing list