35 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS) 
   41 typedef 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" 
   60 { 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;
 
  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:320
 
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:503
 
virtual const OGRSpatialReference * GetSpatialRef() const
Fetch the spatial reference for this dataset.
Definition: gdaldataset.cpp:1195
 
virtual char ** GetFileList(void)
Fetch files forming dataset.
Definition: gdaldataset.cpp:3225
 
Format specific driver.
Definition: gdal_priv.h:2001
 
Class for dataset open functions.
Definition: gdal_priv.h:301
 
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
 
GNMGenericLayer(OGRLayer *poLayer, GNMGenericNetwork *poNetwork)
GNMGenericLayer.
Definition: gnmlayer.cpp:36
 
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 OGRLayer * GetLayer(int) override
Fetch a layer by index.
 
virtual int GetLayerCount() override
Get the number of layers in this dataset.
 
virtual CPLString GetAlgorithmName(GNMDirection eAlgorithm, bool bShortName)
Get the algorithm name.
 
virtual OGRFeature * GetFeatureByGlobalFID(GNMGFID nFID) override
GetFeatureByGlobalFID search all network layers for given feature identificator.
 
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 OGRLayer * CopyLayer(OGRLayer *poSrcLayer, const char *pszNewName, char **papszOptions=nullptr) override
Duplicate an existing layer.
 
virtual CPLErr DisconnectFeaturesWithId(GNMGFID nFID)
Find the corresponding identificator in graph (source, target, connector) and remove such connections...
 
virtual CPLErr ChangeAllBlockState(bool bIsBlock=false)
Change all vertices and edges block state.
 
virtual OGRLayer * GetPath(GNMGFID nStartFID, GNMGFID nEndFID, GNMGraphAlgorithmType eAlgorithm, char **papszOptions) override
Create path between start and end GFIDs.
 
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 GNMGFID GetNewGlobalFID()
GetNewGlobalFID increase the global ID counter.
 
virtual CPLErr CreateRule(const char *pszRuleStr)
Create network rule.
 
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 OGRLayer * GetPath(GNMGFID nStartFID, GNMGFID nEndFID, GNMGraphAlgorithmType eAlgorithm, char **papszOptions)=0
Create path between start and end GFIDs.
 
virtual CPLErr Delete()=0
Delete network.
 
virtual CPLErr DisconnectAll()=0
DisconnectAll method clears the network graph.
 
virtual OGRFeature * GetFeatureByGlobalFID(GNMGFID nGFID)=0
GetFeatureByGlobalFID search all network layers for given feature identificator.
 
virtual int GetVersion() const
GetVersion return the network version if applicable.
Definition: gnm.h:133
 
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.
 
virtual CPLString GetConnectorLayerName() const
Return connector layer name.
 
const char * c_str() const
Return rule as a string.
 
virtual CPLString GetSourceLayerName() const
Return source layer name.
 
GNMRule(const std::string &oRule)
Constructor.
 
virtual bool IsValid() const
This function indicate if rule string was parsed successfully.
 
GNMRule & operator=(const GNMRule &)=default
Assignment operator.
 
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:61
 
Definition of a feature class or feature layer.
Definition: ogr_feature.h:517
 
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:893
 
Definition of an attribute of an OGRFeatureDefn.
Definition: ogr_feature.h:111
 
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
 
OGRGNMWrappedResultLayer(GDALDataset *poDS, OGRLayer *poLayer)
Constructor.
Definition: gnmresultlayer.cpp:34
 
Definition of a geometry field of an OGRFeatureDefn.
Definition: ogr_feature.h:346
 
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:377
 
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:74
 
virtual OGRErr ICreateFeature(OGRFeature *poFeature)
Create and write a new feature within a layer.
Definition: ogrlayer.cpp:793
 
virtual OGRErr ISetFeature(OGRFeature *poFeature)
Rewrite/replace an existing feature.
Definition: ogrlayer.cpp:753
 
Concrete representation of a multi-vertex line.
Definition: ogr_geometry.h:1773
 
A collection of OGRLineString.
Definition: ogr_geometry.h:4045
 
Point class.
Definition: ogr_geometry.h:1151
 
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:169
 
This class represents a style table.
Definition: ogr_featurestyle.h:86
 
CPLErr
Error category.
Definition: cpl_error.h:53
 
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1183
 
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:215
 
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:416
 
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:387
 
Classes related to registration of format support, and opening datasets.