Skip to content

Commit 3ff0f69

Browse files
committedNov 12, 2017
[OGR provider] Make extent() return a isNull() rectangle on empty layer (fixes #16721)
1 parent 7e699f1 commit 3ff0f69

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed
 

‎src/providers/ogr/qgsogrprovider.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,25 +1097,25 @@ QgsRectangle QgsOgrProvider::extent() const
10971097
}
10981098
#endif
10991099

1100+
mExtent->MinX = std::numeric_limits<double>::max();
1101+
mExtent->MinY = std::numeric_limits<double>::max();
1102+
mExtent->MaxX = -std::numeric_limits<double>::max();
1103+
mExtent->MaxY = -std::numeric_limits<double>::max();
1104+
11001105
// TODO: This can be expensive, do we really need it!
11011106
if ( mOgrLayer == mOgrOrigLayer )
11021107
{
11031108
mOgrLayer->GetExtent( mExtent, true );
11041109
}
11051110
else
11061111
{
1107-
mExtent->MinX = std::numeric_limits<double>::max();
1108-
mExtent->MinY = std::numeric_limits<double>::max();
1109-
mExtent->MaxX = -std::numeric_limits<double>::max();
1110-
mExtent->MaxY = -std::numeric_limits<double>::max();
1111-
11121112
gdal::ogr_feature_unique_ptr f;
11131113

11141114
mOgrLayer->ResetReading();
11151115
while ( f.reset( mOgrLayer->GetNextFeature() ), f )
11161116
{
11171117
OGRGeometryH g = OGR_F_GetGeometryRef( f.get() );
1118-
if ( g )
1118+
if ( g && !OGR_G_IsEmpty( g ) )
11191119
{
11201120
OGREnvelope env;
11211121
OGR_G_GetEnvelope( g, &env );

‎tests/src/python/test_provider_ogr_gpkg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,8 @@ def testGeopackageRefreshIfTableListUpdated(self):
589589

590590
vl = QgsVectorLayer(u'{}'.format(tmpfile) + "|layername=" + "test", 'test', u'ogr')
591591

592+
self.assertTrue(vl.extent().isNull())
593+
592594
time.sleep(1) # so timestamp gets updated
593595
ds = ogr.Open(tmpfile, update=1)
594596
ds.CreateLayer('test2', geom_type=ogr.wkbPoint)

0 commit comments

Comments
 (0)
Please sign in to comment.