apply #2350 to master/3.x too

This commit is contained in:
Dane Springmeyer 2014-08-12 11:44:34 -07:00
parent 072a914906
commit c604e925f5
2 changed files with 20 additions and 3 deletions

View file

@ -253,9 +253,17 @@ void ogr_datasource::init(mapnik::parameters const& params)
OGRLayer* layer = layer_.layer(); OGRLayer* layer = layer_.layer();
// initialize envelope // initialize envelope
boost::optional<std::string> ext = params.get<std::string>("extent");
if (ext && !ext->empty())
{
extent_.from_string(*ext);
}
else
{
OGREnvelope envelope; OGREnvelope envelope;
layer->GetExtent(&envelope); layer->GetExtent(&envelope);
extent_.init(envelope.MinX, envelope.MinY, envelope.MaxX, envelope.MaxY); extent_.init(envelope.MinX, envelope.MinY, envelope.MaxX, envelope.MaxY);
}
// scan for index file // scan for index file
// TODO - layer names don't match dataset name, so this will break for // TODO - layer names don't match dataset name, so this will break for

View file

@ -60,6 +60,15 @@ if 'ogr' in mapnik.DatasourceCache.plugin_names():
# fs = ds.all_features() # fs = ds.all_features()
# eq_(len(fs),1) # eq_(len(fs),1)
# OGR plugin extent parameter
def test_ogr_extent_parameter():
ds = mapnik.Ogr(file='../data/shp/world_merc.shp',layer_by_index=0,extent='-1,-1,1,1')
e = ds.envelope()
eq_(e.minx,-1)
eq_(e.miny,-1)
eq_(e.maxx,1)
eq_(e.maxy,1)
if __name__ == "__main__": if __name__ == "__main__":
setup() setup()
exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) exit(run_all(eval(x) for x in dir() if x.startswith("test_")))