From 6845113fdb331b63ae0505a30a5f140b9ce4a64a Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 19 Jan 2012 16:34:33 -0500 Subject: [PATCH] update sqlite and osm datasources to new feature impl --- plugins/input/osm/osm_featureset.cpp | 9 +++++---- plugins/input/osm/osm_featureset.hpp | 1 + plugins/input/sqlite/sqlite_featureset.cpp | 15 +++++++-------- plugins/input/sqlite/sqlite_featureset.hpp | 1 + 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/plugins/input/osm/osm_featureset.cpp b/plugins/input/osm/osm_featureset.cpp index 279797706..420861aa6 100644 --- a/plugins/input/osm/osm_featureset.cpp +++ b/plugins/input/osm/osm_featureset.cpp @@ -46,7 +46,8 @@ osm_featureset::osm_featureset(const filterT& filter, tr_(new transcoder(encoding)), feature_id_(1), dataset_ (dataset), - attribute_names_ (attribute_names) + attribute_names_ (attribute_names), + ctx_(boost::make_shared()) { dataset_->rewind(); } @@ -62,7 +63,7 @@ feature_ptr osm_featureset::next() { if (dataset_->current_item_is_node()) { - feature = feature_factory::create(feature_id_); + feature = feature_factory::create(ctx_,feature_id_); ++feature_id_; double lat = static_cast(cur_item)->lat; double lon = static_cast(cur_item)->lon; @@ -90,7 +91,7 @@ feature_ptr osm_featureset::next() { if (static_cast(cur_item)->nodes.size()) { - feature = feature_factory::create(feature_id_); + feature = feature_factory::create(ctx_,feature_id_); ++feature_id_; geometry_type* geom; if (static_cast(cur_item)->is_polygon()) @@ -131,7 +132,7 @@ feature_ptr osm_featureset::next() // only add if in the specified set of attribute names if (attribute_names_.find(i->first) != attribute_names_.end()) { - (*feature)[i->first] = tr_->transcode(i->second.c_str()); + feature->put(i->first,tr_->transcode(i->second.c_str())); } i++; diff --git a/plugins/input/osm/osm_featureset.hpp b/plugins/input/osm/osm_featureset.hpp index e93d1952c..dd4e9ad3a 100644 --- a/plugins/input/osm/osm_featureset.hpp +++ b/plugins/input/osm/osm_featureset.hpp @@ -63,6 +63,7 @@ private: mutable int feature_id_; osm_dataset *dataset_; std::set attribute_names_; + mapnik::context_ptr ctx_; // no copying osm_featureset(const osm_featureset&); const osm_featureset& operator=(const osm_featureset&); diff --git a/plugins/input/sqlite/sqlite_featureset.cpp b/plugins/input/sqlite/sqlite_featureset.cpp index f92a8ba46..537f81a6f 100644 --- a/plugins/input/sqlite/sqlite_featureset.cpp +++ b/plugins/input/sqlite/sqlite_featureset.cpp @@ -51,7 +51,8 @@ sqlite_featureset::sqlite_featureset(boost::shared_ptr rs, : rs_(rs), tr_(new transcoder(encoding)), format_(format), - using_subquery_(using_subquery) + using_subquery_(using_subquery), + ctx_(boost::make_shared()) { } @@ -70,9 +71,7 @@ feature_ptr sqlite_featureset::next() return feature_ptr(); } - int feature_id = rs_->column_integer(1); - - feature_ptr feature(feature_factory::create(feature_id)); + feature_ptr feature(feature_factory::create(ctx_,rs_->column_integer(1))); geometry_utils::from_wkb(feature->paths(), data, size, format_); for (int i = 2; i < rs_->column_count(); ++i) @@ -95,13 +94,13 @@ feature_ptr sqlite_featureset::next() { case SQLITE_INTEGER: { - boost::put(*feature, fld_name_str, rs_->column_integer(i)); + feature->put(fld_name_str, rs_->column_integer(i)); break; } case SQLITE_FLOAT: { - boost::put(*feature, fld_name_str, rs_->column_double(i)); + feature->put(fld_name_str, rs_->column_double(i)); break; } @@ -110,13 +109,13 @@ feature_ptr sqlite_featureset::next() int text_size; const char * data = rs_->column_text(i, text_size); UnicodeString ustr = tr_->transcode(data, text_size); - boost::put(*feature, fld_name_str, ustr); + feature->put(fld_name_str, ustr); break; } case SQLITE_NULL: { - boost::put(*feature, fld_name_str, mapnik::value_null()); + feature->put(fld_name_str, mapnik::value_null()); break; } diff --git a/plugins/input/sqlite/sqlite_featureset.hpp b/plugins/input/sqlite/sqlite_featureset.hpp index 4ec7472ba..cddc5d89f 100644 --- a/plugins/input/sqlite/sqlite_featureset.hpp +++ b/plugins/input/sqlite/sqlite_featureset.hpp @@ -51,6 +51,7 @@ private: boost::scoped_ptr tr_; mapnik::wkbFormat format_; bool using_subquery_; + mapnik::context_ptr ctx_; }; #endif // MAPNIK_SQLITE_FEATURESET_HPP