+ use tol in feature_at_point
This commit is contained in:
parent
9348fffa8d
commit
f2132fa7bb
3 changed files with 8 additions and 3 deletions
|
@ -82,7 +82,7 @@ void ogr_datasource::init(mapnik::parameters const& params)
|
|||
|
||||
// initialize ogr formats
|
||||
OGRRegisterAll();
|
||||
|
||||
|
||||
boost::optional<std::string> file = params.get<std::string>("file");
|
||||
boost::optional<std::string> string = params.get<std::string>("string");
|
||||
if (! file && ! string)
|
||||
|
@ -525,7 +525,7 @@ featureset_ptr ogr_datasource::features_at_point(coord2d const& pt, double tol)
|
|||
|
||||
if (indexed_)
|
||||
{
|
||||
filter_at_point filter(pt);
|
||||
filter_at_point filter(pt, tol);
|
||||
|
||||
return featureset_ptr(new ogr_index_featureset<filter_at_point> (ctx,
|
||||
*layer,
|
||||
|
|
|
@ -59,7 +59,8 @@ ogr_index_featureset<filterT>::ogr_index_featureset(mapnik::context_ptr const &
|
|||
layerdef_(layer.GetLayerDefn()),
|
||||
filter_(filter),
|
||||
tr_(new transcoder(encoding)),
|
||||
fidcolumn_(layer_.GetFIDColumn())
|
||||
fidcolumn_(layer_.GetFIDColumn()),
|
||||
feature_envelope_()
|
||||
{
|
||||
|
||||
boost::optional<mapnik::mapped_region_ptr> memory = mapnik::mapped_memory_cache::instance().find(index_file, true);
|
||||
|
@ -104,6 +105,9 @@ feature_ptr ogr_index_featureset<filterT>::next()
|
|||
OGRGeometry* geom=poFeature->GetGeometryRef();
|
||||
if (geom && !geom->IsEmpty())
|
||||
{
|
||||
geom->getEnvelope(&feature_envelope_);
|
||||
if (!filter_.pass(mapnik::box2d<double>(feature_envelope_.MinX,feature_envelope_.MinY,
|
||||
feature_envelope_.MaxX,feature_envelope_.MaxY))) continue;
|
||||
ogr_converter::convert_geometry (geom, feature);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -50,6 +50,7 @@ private:
|
|||
std::vector<int>::iterator itr_;
|
||||
boost::scoped_ptr<mapnik::transcoder> tr_;
|
||||
const char* fidcolumn_;
|
||||
OGREnvelope feature_envelope_;
|
||||
};
|
||||
|
||||
#endif // OGR_INDEX_FEATURESET_HPP
|
||||
|
|
Loading…
Add table
Reference in a new issue