Write a Persistable instance to a Storage instance.
193 execTrace(
"ExposureFormatter write start");
197 throw LSST_EXCEPT(lsst::pex::exceptions::RuntimeError,
"Persisting non-Exposure");
200 execTrace(
"ExposureFormatter write BoostStorage");
203 execTrace(
"ExposureFormatter write end");
207 execTrace(
"ExposureFormatter write FitsStorage");
211 execTrace(
"ExposureFormatter write end");
214 execTrace(
"ExposureFormatter write DbStorage");
219 ip->
getWcs()->getFitsMetadata();
224 throw LSST_EXCEPT(lsst::pex::exceptions::RuntimeError,
225 "Unable to retrieve metadata from MaskedImage's Image");
229 std::string itemName = additionalData->get<std::string>(
"itemName");
230 std::string tableName = itemName;
231 if (
_policy->exists(itemName)) {
233 if (itemPolicy->exists(
"TableName")) {
234 tableName = itemPolicy->getString(
"TableName");
237 if (tableName !=
"Raw_Amp_Exposure" &&
238 tableName !=
"Science_Amp_Exposure") {
239 throw LSST_EXCEPT(lsst::pex::exceptions::RuntimeError,
240 "Unknown table name for persisting Exposure to DbStorage: " +
241 tableName +
"for item " + itemName);
253 if (tableName ==
"Raw_Amp_Exposure") {
254 db->
setColumn<
long long>(
"rawAmpExposureId", ampExposureId);
255 db->
setColumn<
long long>(
"rawCCDExposureId", ccdExposureId);
256 db->
setColumn<
long long>(
"rawFPAExposureId", fpaExposureId);
259 db->
setColumn<
long long>(
"scienceAmpExposureId", ampExposureId);
260 db->
setColumn<
long long>(
"scienceCCDExposureId", ccdExposureId);
261 db->
setColumn<
long long>(
"scienceFPAExposureId", fpaExposureId);
262 db->
setColumn<
long long>(
"rawAmpExposureId", ampExposureId);
270 setColumn<std::string>(db,
"url",
271 additionalData,
"StorageLocation.FitsStorage");
275 setColumn<std::string>(db,
"ctype1", wcsProps,
"CTYPE1");
276 setColumn<std::string>(db,
"ctype2", wcsProps,
"CTYPE2");
277 setColumn<float, double>(db,
"crpix1", wcsProps,
"CRPIX1");
278 setColumn<float, double>(db,
"crpix2", wcsProps,
"CRPIX2");
279 setColumn<double>(db,
"crval1", wcsProps,
"CRVAL1");
280 setColumn<double>(db,
"crval2", wcsProps,
"CRVAL2");
281 if (tableName ==
"Raw_Amp_Exposure") {
282 setColumn<double>(db,
"cd11", wcsProps,
"CD1_1");
283 setColumn<double>(db,
"cd21", wcsProps,
"CD2_1");
284 setColumn<double>(db,
"cd12", wcsProps,
"CD1_2");
285 setColumn<double>(db,
"cd22", wcsProps,
"CD2_2");
288 setColumn<double>(db,
"cd1_1", wcsProps,
"CD1_1");
289 setColumn<double>(db,
"cd2_1", wcsProps,
"CD2_1");
290 setColumn<double>(db,
"cd1_2", wcsProps,
"CD1_2");
291 setColumn<double>(db,
"cd2_2", wcsProps,
"CD2_2");
295 if (tableName ==
"Science_Amp_Exposure") {
297 setColumn<float, double>(db,
"photoFlam", dp,
"PHOTFLAM");
298 setColumn<float, double>(db,
"photoZP", dp,
"PHOTZP");
304 execTrace(
"ExposureFormatter write end");
307 throw LSST_EXCEPT(lsst::pex::exceptions::RuntimeError,
"Unrecognized Storage for Exposure");
void setColumn(std::string const &columnName, T const &value)
A class to contain the data, WCS, and other information needed to describe an image of the sky...
boost::shared_ptr< PropertySet > Ptr
virtual std::string const & getPath(void)
boost::shared_ptr< Policy > Ptr
void writeFits(std::string const &fileName) const
Write an Exposure to a regular multi-extension FITS file.
Class for FITS file storage.
Class for database storage.
lsst::daf::base::PropertySet::Ptr getMetadata() const
Return flexible metadata.
boost::shared_ptr< Wcs const > getWcs() const
#define LSST_EXCEPT(type,...)
virtual boost::archive::text_oarchive & getOArchive(void)
Class for boost::serialization storage.
virtual void setTableForInsert(std::string const &tableName)