35#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
41typedef int GNMDirection;
45#define GNM_MD_NAME "net_name"
46#define GNM_MD_DESCR "net_description"
47#define GNM_MD_SRS "net_srs"
48#define GNM_MD_VERSION "net_version"
49#define GNM_MD_RULE "net_rule"
50#define GNM_MD_FORMAT "FORMAT"
51#define GNM_MD_FETCHEDGES "fetch_edge"
52#define GNM_MD_FETCHVERTEX "fetch_vertex"
53#define GNM_MD_NUM_PATHS "num_paths"
54#define GNM_MD_EMITTER "emitter"
GATDijkstraShortestPath = 1, GATKShortestPath, GATConnectedComponents
64} GNMGraphAlgorithmType;
66#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
106 virtual CPLErr Create(
const char *pszFilename,
char **papszOptions) = 0;
127 virtual const char *GetName()
const;
164 GNMGraphAlgorithmType eAlgorithm,
165 char **papszOptions) = 0;
175 char **papszOptions) = 0;
208 char **papszOptions =
nullptr)
override;
216 char **papszOptions)
override = 0;
259 GNMGFID nConFID = -1,
double dfCost = 1,
260 double dfInvCost = 1,
261 GNMDirection eDir = GNM_EDGE_DIR_BOTH);
294 GNMGFID nConFID,
double dfCost = 1,
295 double dfInvCost = 1,
296 GNMDirection eDir = GNM_EDGE_DIR_BOTH);
383 double dfTolerance,
double dfCost,
384 double dfInvCost, GNMDirection eDir);
405 GNMGraphAlgorithmType eAlgorithm,
406 char **papszOptions)
override;
416 char **papszOptions);
427 size_t nFieldSize = 1024);
428 virtual CPLErr StoreNetworkSrs();
429 virtual CPLErr LoadNetworkSrs();
434 virtual CPLErr LoadGraph();
436 virtual CPLErr DeleteMetadataLayer() = 0;
437 virtual CPLErr DeleteGraphLayer() = 0;
438 virtual CPLErr DeleteFeaturesLayer() = 0;
439 virtual CPLErr LoadNetworkLayer(
const char *pszLayername) = 0;
440 virtual CPLErr DeleteNetworkLayers() = 0;
441 virtual void ConnectPointsByMultiline(
443 const std::vector<OGRLayer *> &paPointLayers,
double dfTolerance,
444 double dfCost,
double dfInvCost, GNMDirection eDir);
447 const std::vector<OGRLayer *> &paPointLayers,
448 double dfTolerance,
double dfCost,
double dfInvCost,
451 FindNearestPoint(
const OGRPoint *poPoint,
452 const std::vector<OGRLayer *> &paPointLayers,
454 virtual OGRFeature *FindConnection(GNMGFID nSrcFID, GNMGFID nTgtFID,
456 virtual bool SaveRules();
457 virtual GNMGFID GetNewVirtualFID();
459 const GNMPATH &path,
int nNoOfPath,
460 bool bReturnVertices,
bool bReturnEdges);
466 GNMGFID m_nVirtualConnectionGID;
473 std::map<GNMGFID, CPLString> m_moFeatureFIDMap;
474 std::vector<OGRLayer *> m_apoLayers;
475 std::vector<GNMRule> m_asRules;
476 bool m_bIsRulesChanged;
479 bool m_bIsGraphLoaded;
501 double dfMaxX,
double dfMaxY)
override;
505 double dfMinY,
double dfMaxX,
506 double dfMaxY)
override;
516 virtual const char *
GetName()
override;
520 int bExactMatch)
override;
527 int bForce = TRUE)
override;
532 int bApproxOK = TRUE)
override;
536 int nFlagsIn)
override;
539 int bApproxOK = TRUE)
override;
559 char **papszOptions =
nullptr,
560 GDALProgressFunc pfnProgress =
nullptr,
561 void *pProgressArg =
nullptr);
564 char **papszOptions =
nullptr,
565 GDALProgressFunc pfnProgress =
nullptr,
566 void *pProgressArg =
nullptr);
569 char **papszOptions, GDALProgressFunc pfnProgress,
573 char **papszOptions =
nullptr,
574 GDALProgressFunc pfnProgress =
nullptr,
575 void *pProgressArg =
nullptr);
578 char **papszOptions =
nullptr,
579 GDALProgressFunc pfnProgress =
nullptr,
580 void *pProgressArg =
nullptr);
583 char **papszOptions =
nullptr,
584 GDALProgressFunc pfnProgress =
nullptr,
585 void *pProgressArg =
nullptr);
588 char **papszOptions =
nullptr,
589 GDALProgressFunc pfnProgress =
nullptr,
590 void *pProgressArg =
nullptr);
600 OGRErr InitializeIndexSupport(
const char *);
601 OGRLayerAttrIndex *GetIndex();
613 std::map<GNMGFID, GIntBig> m_mnFIDMap;
GRTConnection = 0
687 operator const char *(void)
const;
691 virtual bool ParseRuleString();
697 bool m_bAllow =
false;
698 bool m_bValid =
false;
725 int bApproxOK = TRUE)
override;
727 int bApproxOK = TRUE)
override;
734 const CPLString &soLayerName,
int nPathNo,
Convenient string class based on std::string.
Definition cpl_string.h:307
A set of associated raster bands, usually from one file.
Definition gdal_priv.h:495
virtual const OGRSpatialReference * GetSpatialRef() const
Fetch the spatial reference for this dataset.
Definition gdaldataset.cpp:1196
virtual char ** GetFileList(void)
Fetch files forming dataset.
Definition gdaldataset.cpp:3245
Format specific driver.
Definition gdal_priv.h:2124
Class for dataset open functions.
Definition gdal_priv.h:293
GNM layer which represents a geography network layer of generic format.
Definition gnm.h:491
virtual const char * GetFIDColumn() override
This method returns the name of the underlying database column being used as the FID column,...
Definition gnmlayer.cpp:50
virtual const char * GetName() override
Return the layer name.
Definition gnmlayer.cpp:257
virtual OGRErr ReorderFields(int *panMap) override
Reorder all the fields of a layer.
Definition gnmlayer.cpp:312
virtual OGRFeatureDefn * GetLayerDefn() override
Fetch the schema information for this layer.
Definition gnmlayer.cpp:368
virtual void SetStyleTable(OGRStyleTable *poStyleTable) override
Set layer style table.
Definition gnmlayer.cpp:348
virtual OGRErr GetExtent(OGREnvelope *psExtent, int bForce=TRUE) override
Fetch the extent of this layer.
Definition gnmlayer.cpp:282
virtual OGRErr SyncToDisk() override
Flush pending changes to disk.
Definition gnmlayer.cpp:333
OGRErr Union(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Union.
Definition gnmlayer.cpp:75
virtual int FindFieldIndex(const char *pszFieldName, int bExactMatch) override
Find the index of field in the layer.
Definition gnmlayer.cpp:267
virtual GIntBig GetFeatureCount(int bForce=TRUE) override
Fetch the feature count in this layer.
Definition gnmlayer.cpp:277
virtual ~GNMGenericLayer()
~GNMGenericLayer
Definition gnmlayer.cpp:46
virtual void ResetReading() override
Reset feature reading to start on the first feature.
Definition gnmlayer.cpp:212
OGRErr Clip(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Clip.
Definition gnmlayer.cpp:110
virtual OGRErr RollbackTransaction() override
For datasources which support transactions, RollbackTransaction will roll back a datasource to its st...
Definition gnmlayer.cpp:363
virtual OGRStyleTable * GetStyleTable() override
Returns layer style table.
Definition gnmlayer.cpp:338
virtual void SetSpatialFilter(OGRGeometry *) override
Set a new spatial filter.
Definition gnmlayer.cpp:184
virtual int TestCapability(const char *) override
Test if this layer supported the named capability.
Definition gnmlayer.cpp:293
virtual OGRErr SetNextByIndex(GIntBig nIndex) override
Move read cursor to the nIndex'th feature in the current resultset.
Definition gnmlayer.cpp:228
virtual OGRErr AlterFieldDefn(int iField, OGRFieldDefn *poNewFieldDefn, int nFlagsIn) override
Alter the definition of an existing field on a layer.
Definition gnmlayer.cpp:317
OGRErr Update(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Update.
Definition gnmlayer.cpp:102
virtual OGRSpatialReference * GetSpatialRef() override
Fetch the spatial reference system for this layer.
Definition gnmlayer.cpp:272
virtual OGRErr DeleteField(int iField) override
Delete an existing field on a layer.
Definition gnmlayer.cpp:303
virtual void SetSpatialFilterRect(double dfMinX, double dfMinY, double dfMaxX, double dfMaxY) override
Set a new rectangular spatial filter.
Definition gnmlayer.cpp:189
virtual OGRwkbGeometryType GetGeomType() override
Return the layer geometry type.
Definition gnmlayer.cpp:262
virtual OGRErr CreateGeomField(const OGRGeomFieldDefn *poField, int bApproxOK=TRUE) override
Create a new geometry field on a layer.
Definition gnmlayer.cpp:327
virtual OGRErr SetIgnoredFields(CSLConstList papszFields) override
Set which fields can be omitted when retrieving features from the layer.
Definition gnmlayer.cpp:60
virtual OGRFeature * GetNextFeature() override
Fetch the next available feature from this layer.
Definition gnmlayer.cpp:217
virtual OGRErr CommitTransaction() override
For datasources which support transactions, CommitTransaction commits a transaction.
Definition gnmlayer.cpp:358
GIntBig GetFeaturesRead()
GetFeaturesRead.
Definition gnmlayer.cpp:126
virtual OGRErr StartTransaction() override
For datasources which support transactions, StartTransaction creates a transaction.
Definition gnmlayer.cpp:353
OGRErr Intersection(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Intersection.
Definition gnmlayer.cpp:65
virtual OGRErr SetAttributeFilter(const char *) override
Set a new attribute query.
Definition gnmlayer.cpp:207
virtual OGRErr CreateField(const OGRFieldDefn *poField, int bApproxOK=TRUE) override
Create a new field on a layer.
Definition gnmlayer.cpp:298
virtual const char * GetGeometryColumn() override
This method returns the name of the underlying database column being used as the geometry column,...
Definition gnmlayer.cpp:55
virtual OGRGeometry * GetSpatialFilter() override
This method returns the current spatial filter for this layer.
Definition gnmlayer.cpp:179
int AttributeFilterEvaluationNeedsGeometry()
AttributeFilterEvaluationNeedsGeometry.
Definition gnmlayer.cpp:131
virtual void SetStyleTableDirectly(OGRStyleTable *poStyleTable) override
Set layer style table.
Definition gnmlayer.cpp:343
virtual OGRErr DeleteFeature(GIntBig nFID) override
Delete feature from layer.
Definition gnmlayer.cpp:233
OGRErr SymDifference(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
SymDifference.
Definition gnmlayer.cpp:83
OGRErr Identity(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Identity.
Definition gnmlayer.cpp:93
OGRErr Erase(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Erase.
Definition gnmlayer.cpp:118
GNM class which represents a geography network of generic format.
Definition gnm.h:194
virtual CPLErr DisconnectAll() override
DisconnectAll method clears the network graph.
virtual CPLErr AddFeatureGlobalFID(GNMGFID nFID, const char *pszLayerName)
AddFeatureGlobalFID add the FID <-> Layer name link to fast access features by global FID.
virtual CPLErr DeleteRule(const char *pszRuleStr)
Delete the specified rule.
virtual char ** GetRules() const
Get the rule list.
virtual int TestCapability(const char *) override
Test if capability is available.
virtual CPLErr CheckLayerDriver(const char *pszDefaultDriverName, char **papszOptions)
Check or create layer OGR driver.
virtual CPLErr FlushCache(bool bAtClosing) override
Flush all write cached data to disk.
virtual CPLErr DeleteAllRules()
Delete all rules from network.
virtual CPLErr ReconnectFeatures(GNMGFID nSrcFID, GNMGFID nTgtFID, GNMGFID nConFID, double dfCost=1, double dfInvCost=1, GNMDirection eDir=GNM_EDGE_DIR_BOTH)
Change connection attributes.
virtual int GetLayerCount() override
Get the number of layers in this dataset.
virtual CPLString GetAlgorithmName(GNMDirection eAlgorithm, bool bShortName)
Get the algorithm name.
virtual CPLErr ConnectFeatures(GNMGFID nSrcFID, GNMGFID nTgtFID, GNMGFID nConFID=-1, double dfCost=1, double dfInvCost=1, GNMDirection eDir=GNM_EDGE_DIR_BOTH)
Connects two features via third feature (may be virtual, so the identificator should be -1).
virtual CPLErr DisconnectFeaturesWithId(GNMGFID nFID)
Find the corresponding identificator in graph (source, target, connector) and remove such connections...
virtual OGRLayer * GetLayer(int) override
Fetch a layer by index.
virtual CPLErr ChangeAllBlockState(bool bIsBlock=false)
Change all vertices and edges block state.
virtual int GetVersion() const override
GetVersion return the network version if applicable.
virtual CPLErr DisconnectFeatures(GNMGFID nSrcFID, GNMGFID nTgtFID, GNMGFID nConFID)
Remove features connection.
virtual int CloseDependentDatasets() override
Drop references to any other datasets referenced by this dataset.
virtual CPLErr Create(const char *pszFilename, char **papszOptions) override=0
Create network system layers.
virtual bool CheckStorageDriverSupport(const char *pszDriverName)=0
Check if provided OGR driver accepted as storage for network data.
virtual OGRFeature * GetFeatureByGlobalFID(GNMGFID nFID) override
GetFeatureByGlobalFID search all network layers for given feature identificator.
virtual OGRLayer * CopyLayer(OGRLayer *poSrcLayer, const char *pszNewName, char **papszOptions=nullptr) override
Duplicate an existing layer.
virtual GNMGFID GetNewGlobalFID()
GetNewGlobalFID increase the global ID counter.
virtual CPLErr CreateRule(const char *pszRuleStr)
Create network rule.
virtual OGRLayer * GetPath(GNMGFID nStartFID, GNMGFID nEndFID, GNMGraphAlgorithmType eAlgorithm, char **papszOptions) override
Create path between start and end GFIDs.
virtual CPLErr ConnectPointsByLines(char **papszLayerList, double dfTolerance, double dfCost, double dfInvCost, GNMDirection eDir)
Attempts to build the network topology automatically.
virtual CPLErr ChangeBlockState(GNMGFID nFID, bool bIsBlock)
Change the block state of edge or vertex.
virtual CPLErr Delete() override
Delete network.
virtual OGRErr DeleteLayer(int) override
Delete the indicated layer from the datasource.
The simple graph class, which holds the appropriate for calculations graph in memory (based on STL co...
Definition gnmgraph.h:90
General GNM class which represents a geography network of common format.
Definition gnm.h:75
virtual CPLErr Delete()=0
Delete network.
virtual CPLErr DisconnectAll()=0
DisconnectAll method clears the network graph.
virtual OGRLayer * GetPath(GNMGFID nStartFID, GNMGFID nEndFID, GNMGraphAlgorithmType eAlgorithm, char **papszOptions)=0
Create path between start and end GFIDs.
virtual int GetVersion() const
GetVersion return the network version if applicable.
Definition gnm.h:133
virtual OGRFeature * GetFeatureByGlobalFID(GNMGFID nGFID)=0
GetFeatureByGlobalFID search all network layers for given feature identificator.
virtual CPLErr Open(GDALOpenInfo *poOpenInfo)=0
Open a network.
virtual CPLErr Create(const char *pszFilename, char **papszOptions)=0
Create network system layers.
virtual int CheckNetworkExist(const char *pszFilename, char **papszOptions)=0
Check if network already exist.
The simple class for rules.
Definition gnm.h:632
virtual CPLString GetTargetLayerName() const
Return target layer name.
virtual bool IsAcceptAny() const
Indicator of any layer state.
virtual bool CanConnect(const CPLString &soSrcLayerName, const CPLString &soTgtLayerName, const CPLString &soConnLayerName="")
Check if connection can take place.
GNMRule(const char *pszRule)
Constructor.
GNMRule(const GNMRule &oRule)
Constructor.
const char * c_str() const
Return rule as a string.
virtual CPLString GetConnectorLayerName() const
Return connector layer name.
virtual CPLString GetSourceLayerName() const
Return source layer name.
GNMRule & operator=(const GNMRule &)=default
Assignment operator.
GNMRule(const std::string &oRule)
Constructor.
virtual bool IsValid() const
This function indicate if rule string was parsed successfully.
virtual GNMRuleType GetType() const
This is for future use to indicate the rule type/ Now return only GRTConnection type.
Simple container for a bounding region (rectangle)
Definition ogr_core.h:45
Definition of a feature class or feature layer.
Definition ogr_feature.h:501
A simple feature, including geometry and attributes.
Definition ogr_feature.h:877
Definition of an attribute of an OGRFeatureDefn.
Definition ogr_feature.h:95
The OGRGNMWrappedResultLayer class for search paths queries results.
Definition gnm.h:711
virtual OGRErr InsertFeature(OGRFeature *poFeature, const CPLString &soLayerName, int nPathNo, bool bIsEdge)
Undocumented.
Definition gnmresultlayer.cpp:125
virtual OGRErr SetNextByIndex(GIntBig nIndex) override
Move read cursor to the nIndex'th feature in the current resultset.
Definition gnmresultlayer.cpp:71
virtual OGRErr ICreateFeature(OGRFeature *poFeature) override
Create and write a new feature within a layer.
Definition gnmresultlayer.cpp:216
virtual OGRErr ISetFeature(OGRFeature *poFeature) override
Rewrite/replace an existing feature.
Definition gnmresultlayer.cpp:211
virtual OGRFeatureDefn * GetLayerDefn() override
Fetch the schema information for this layer.
Definition gnmresultlayer.cpp:81
virtual OGRErr CreateGeomField(const OGRGeomFieldDefn *poField, int bApproxOK=TRUE) override
Create a new geometry field on a layer.
Definition gnmresultlayer.cpp:103
virtual OGRErr CreateField(const OGRFieldDefn *poField, int bApproxOK=TRUE) override
Create a new field on a layer.
Definition gnmresultlayer.cpp:96
virtual OGRFeature * GetNextFeature() override
Fetch the next available feature from this layer.
Definition gnmresultlayer.cpp:66
virtual const char * GetFIDColumn() override
This method returns the name of the underlying database column being used as the FID column,...
Definition gnmresultlayer.cpp:109
virtual OGRFeature * GetFeature(GIntBig nFID) override
Fetch a feature by its identifier.
Definition gnmresultlayer.cpp:76
virtual GIntBig GetFeatureCount(int bForce=TRUE) override
Fetch the feature count in this layer.
Definition gnmresultlayer.cpp:86
virtual OGRSpatialReference * GetSpatialRef() override
Fetch the spatial reference system for this layer.
Definition gnmresultlayer.cpp:119
virtual const char * GetGeometryColumn() override
This method returns the name of the underlying database column being used as the geometry column,...
Definition gnmresultlayer.cpp:114
virtual int TestCapability(const char *pszCap) override
Test if this layer supported the named capability.
Definition gnmresultlayer.cpp:91
virtual void ResetReading() override
Reset feature reading to start on the first feature.
Definition gnmresultlayer.cpp:61
Definition of a geometry field of an OGRFeatureDefn.
Definition ogr_feature.h:330
Abstract base class for all geometry classes.
Definition ogr_geometry.h:361
This class represents a layer of simple features, with access methods.
Definition ogrsf_frmts.h:58
virtual OGRErr ICreateFeature(OGRFeature *poFeature)
Create and write a new feature within a layer.
Definition ogrlayer.cpp:778
virtual OGRErr ISetFeature(OGRFeature *poFeature)
Rewrite/replace an existing feature.
Definition ogrlayer.cpp:738
Concrete representation of a multi-vertex line.
Definition ogr_geometry.h:1758
A collection of OGRLineString.
Definition ogr_geometry.h:4069
Point class.
Definition ogr_geometry.h:1135
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition ogr_spatialref.h:153
This class represents a style table.
Definition ogr_featurestyle.h:70
CPLErr
Error category.
Definition cpl_error.h:37
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition cpl_port.h:1179
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition cpl_port.h:199
OGRwkbGeometryType
List of well known binary geometry types.
Definition ogr_core.h:407
int OGRErr
Type for a OGR error.
Definition ogr_core.h:371
Classes related to registration of format support, and opening datasets.