Skip to content

Commit 76b71cb

Browse files
committed
GeoJSON: do not advertize ODsCMeasuredGeometries, OLCMeasuredGeometries and ODsCMeasuredGeometries
1 parent adcb70a commit 76b71cb

File tree

6 files changed

+22
-3
lines changed

6 files changed

+22
-3
lines changed

ogr/ogrsf_frmts/geojson/ogr_geojson.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ class OGRGeoJSONLayer final : public OGRMemLayer
127127
oWriteOptions_ = options;
128128
}
129129

130+
void SetSupportsMGeometries(bool bSupportsMGeometries)
131+
{
132+
m_bSupportsMGeometries = bSupportsMGeometries;
133+
}
134+
130135
private:
131136
OGRGeoJSONDataSource *poDS_;
132137
OGRGeoJSONReader *poReader_;
@@ -135,6 +140,7 @@ class OGRGeoJSONLayer final : public OGRMemLayer
135140
bool bOriginalIdModified_;
136141
GIntBig nTotalFeatureCount_;
137142
GIntBig nFeatureReadSinceReset_ = 0;
143+
bool m_bSupportsMGeometries = false;
138144

139145
//! Write options used by ICreateFeature() in append scenarios
140146
OGRGeoJSONWriteOptions oWriteOptions_;
@@ -292,6 +298,11 @@ class OGRGeoJSONDataSource final : public GDALDataset
292298
return osJSonFlavor_;
293299
}
294300

301+
void SetSupportsMGeometries(bool bSupportsMGeometries)
302+
{
303+
m_bSupportsMGeometries = bSupportsMGeometries;
304+
}
305+
295306
virtual CPLErr FlushCache(bool bAtClosing) override;
296307

297308
CPLErr Close() override;
@@ -327,6 +338,7 @@ class OGRGeoJSONDataSource final : public GDALDataset
327338

328339
CPLString osJSonFlavor_;
329340

341+
bool m_bSupportsMGeometries = false;
330342
//
331343
// Private utility functions
332344
//

ogr/ogrsf_frmts/geojson/ogresrijsondriver.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ void RegisterOGRESRIJSON()
7777
poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC,
7878
"drivers/vector/esrijson.html");
7979
poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES");
80+
poDriver->SetMetadataItem(GDAL_DCAP_MEASURED_GEOMETRIES, "YES");
8081

8182
poDriver->SetMetadataItem(
8283
GDAL_DMD_OPENOPTIONLIST,

ogr/ogrsf_frmts/geojson/ogresrijsonreader.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ void OGRESRIJSONReader::ReadLayers(OGRGeoJSONDataSource *poDS,
8787
{
8888
CPLAssert(nullptr == poLayer_);
8989

90+
poDS->SetSupportsMGeometries(true);
91+
9092
if (nullptr == poGJObject_)
9193
{
9294
CPLDebug("ESRIJSON",
@@ -143,6 +145,7 @@ void OGRESRIJSONReader::ReadLayers(OGRGeoJSONDataSource *poDS,
143145

144146
poLayer_ =
145147
new OGRGeoJSONLayer(osName.c_str(), poSRS, eGeomType, poDS, nullptr);
148+
poLayer_->SetSupportsMGeometries(true);
146149
if (poSRS != nullptr)
147150
poSRS->Release();
148151

ogr/ogrsf_frmts/geojson/ogrgeojsondatasource.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -752,8 +752,9 @@ int OGRGeoJSONDataSource::TestCapability(const char *pszCap)
752752
{
753753
if (EQUAL(pszCap, ODsCCreateLayer))
754754
return fpOut_ != nullptr && nLayers_ == 0;
755-
else if (EQUAL(pszCap, ODsCZGeometries) ||
756-
EQUAL(pszCap, ODsCMeasuredGeometries))
755+
else if (EQUAL(pszCap, ODsCMeasuredGeometries))
756+
return m_bSupportsMGeometries;
757+
else if (EQUAL(pszCap, ODsCZGeometries))
757758
return TRUE;
758759

759760
return FALSE;

ogr/ogrsf_frmts/geojson/ogrgeojsondriver.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,7 @@ void RegisterOGRGeoJSON()
782782
"Integer64List RealList StringList Date DateTime");
783783
poDriver->SetMetadataItem(GDAL_DMD_CREATIONFIELDDATASUBTYPES, "Boolean");
784784
poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
785-
poDriver->SetMetadataItem(GDAL_DCAP_MEASURED_GEOMETRIES, "YES");
785+
786786
poDriver->SetMetadataItem(GDAL_DCAP_FLUSHCACHE_CONSISTENT_STATE, "YES");
787787
poDriver->SetMetadataItem(GDAL_DCAP_HONOR_GEOM_COORDINATE_PRECISION, "YES");
788788

ogr/ogrsf_frmts/geojson/ogrgeojsonlayer.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,8 @@ int OGRGeoJSONLayer::TestCapability(const char *pszCap)
504504
{
505505
if (EQUAL(pszCap, OLCCurveGeometries))
506506
return FALSE;
507+
else if (EQUAL(pszCap, OLCMeasuredGeometries))
508+
return m_bSupportsMGeometries;
507509
else if (EQUAL(pszCap, OLCZGeometries))
508510
return TRUE;
509511
else if (EQUAL(pszCap, OLCStringsAsUTF8))

0 commit comments

Comments
 (0)