Applied patch from Peter Körner (with small changes).

This commit is contained in:
Hermann Kraus 2011-07-23 00:11:01 +00:00
parent f14fc9dcf7
commit 607f4e7c99
2 changed files with 6 additions and 3 deletions

View file

@ -446,7 +446,7 @@ void map_parser::parse_style( Map & map, ptree const & sty )
void map_parser::parse_metawriter(Map & map, ptree const & pt) void map_parser::parse_metawriter(Map & map, ptree const & pt)
{ {
ensure_attrs(pt, "MetaWriter", "name,type,file,default-output,output-empty"); ensure_attrs(pt, "MetaWriter", "name,type,file,default-output,output-empty,pixel-coordinates");
std::string name("<missing name>"); std::string name("<missing name>");
metawriter_ptr writer; metawriter_ptr writer;
try try

View file

@ -70,7 +70,7 @@ void metawriter_json_stream::start(metawriter_property_map const& /*properties*/
void metawriter_json_stream::write_header() void metawriter_json_stream::write_header()
{ {
assert(f_); assert(f_);
*f_ << "{ \"type\": \"FeatureCollection\", \"features\": [\n" << std::fixed << std::setprecision(8); *f_ << "{ \"type\": \"FeatureCollection\", \"features\": [\n" << std::fixed << std::setprecision(pixel_coordinates_ ? 0 : 8);
count_ = STARTED; count_ = STARTED;
} }
@ -96,7 +96,7 @@ metawriter_json_stream::~metawriter_json_stream()
metawriter_json_stream::metawriter_json_stream(metawriter_properties dflt_properties) metawriter_json_stream::metawriter_json_stream(metawriter_properties dflt_properties)
: metawriter(dflt_properties), count_(-1), output_empty_(true), : metawriter(dflt_properties), count_(-1), output_empty_(true),
trans_(0), output_srs_("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"), f_(0), pixel_coordinates_(false) trans_(0), output_srs_("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"), pixel_coordinates_(false), f_(0)
{ {
} }
@ -112,6 +112,9 @@ void metawriter_json_stream::write_properties(Feature const& feature, metawriter
std::string text; std::string text;
if (itr != fprops.end()) if (itr != fprops.end())
{ {
// Skip empty props
if(itr->second.to_string().size() == 0) continue; // ignore empty
//Property found //Property found
text = boost::replace_all_copy(boost::replace_all_copy(itr->second.to_string(), "\\", "\\\\"), "\"", "\\\""); text = boost::replace_all_copy(boost::replace_all_copy(itr->second.to_string(), "\\", "\\\\"), "\"", "\\\"");
if (i++) *f_ << ","; if (i++) *f_ << ",";