39 typedef int GNMDirection;
43 #define GNM_MD_NAME "net_name"
44 #define GNM_MD_DESCR "net_description"
45 #define GNM_MD_SRS "net_srs"
46 #define GNM_MD_VERSION "net_version"
47 #define GNM_MD_RULE "net_rule"
48 #define GNM_MD_FORMAT "FORMAT"
49 #define GNM_MD_FETCHEDGES "fetch_edge"
50 #define GNM_MD_FETCHVERTEX "fetch_vertex"
51 #define GNM_MD_NUM_PATHS "num_paths"
52 #define GNM_MD_EMITTER "emitter"
58 { GATDijkstraShortestPath = 1, GATKShortestPath, GATConnectedComponents
62 } GNMGraphAlgorithmType;
102 virtual CPLErr Create(
const char* pszFilename,
char** papszOptions ) = 0;
115 virtual CPLErr Delete() = 0;
123 virtual const char* GetName()
const;
135 virtual CPLErr DisconnectAll () = 0;
144 virtual OGRFeature *GetFeatureByGlobalFID (GNMGFID nGFID) = 0;
156 virtual OGRLayer *GetPath (GNMGFID nStartFID, GNMGFID nEndFID,
157 GNMGraphAlgorithmType eAlgorithm,
char** papszOptions) = 0;
165 virtual int CheckNetworkExist(
const char* pszFilename,
166 char** papszOptions ) = 0;
197 const char *pszNewName,
198 char **papszOptions = NULL );
205 virtual CPLErr
Create(
const char* pszFilename,
char** papszOptions ) = 0;
213 virtual GNMGFID GetNewGlobalFID();
221 virtual CPLString GetAlgorithmName(GNMDirection eAlgorithm,
bool bShortName);
230 virtual CPLErr AddFeatureGlobalFID(GNMGFID nFID,
const char* pszLayerName);
245 virtual CPLErr ConnectFeatures (GNMGFID nSrcFID,
247 GNMGFID nConFID = -1,
249 double dfInvCost = 1,
250 GNMDirection eDir = GNM_EDGE_DIR_BOTH);
259 virtual CPLErr DisconnectFeatures (GNMGFID nSrcFID,
269 virtual CPLErr DisconnectFeaturesWithId(GNMGFID nFID);
283 virtual CPLErr ReconnectFeatures (GNMGFID nSrcFID,
287 double dfInvCost = 1,
288 GNMDirection eDir = GNM_EDGE_DIR_BOTH);
328 virtual CPLErr CreateRule (
const char *pszRuleStr);
334 virtual CPLErr DeleteAllRules();
341 virtual CPLErr DeleteRule(
const char *pszRuleStr);
347 virtual char** GetRules()
const;
370 virtual CPLErr ConnectPointsByLines (
char **papszLayerList,
382 virtual CPLErr ChangeBlockState (GNMGFID nFID,
bool bIsBlock);
392 virtual CPLErr ChangeAllBlockState (
bool bIsBlock =
false);
395 GNMGraphAlgorithmType eAlgorithm,
char** papszOptions);
403 virtual CPLErr CheckLayerDriver(
const char* pszDefaultDriverName,
404 char** papszOptions);
410 virtual bool CheckStorageDriverSupport(
const char* pszDriverName) = 0;
412 virtual CPLErr CreateMetadataLayer(
GDALDataset*
const pDS,
int nVersion,
413 size_t nFieldSize = 1024 );
414 virtual CPLErr StoreNetworkSrs();
415 virtual CPLErr LoadNetworkSrs();
416 virtual CPLErr CreateGraphLayer(
GDALDataset*
const pDS );
417 virtual CPLErr CreateFeaturesLayer(
GDALDataset*
const pDS );
418 virtual CPLErr LoadMetadataLayer(
GDALDataset*
const pDS );
419 virtual CPLErr LoadGraphLayer(
GDALDataset*
const pDS );
420 virtual CPLErr LoadGraph();
421 virtual CPLErr LoadFeaturesLayer(
GDALDataset*
const pDS );
422 virtual CPLErr DeleteMetadataLayer() = 0;
423 virtual CPLErr DeleteGraphLayer() = 0;
424 virtual CPLErr DeleteFeaturesLayer() = 0;
425 virtual CPLErr LoadNetworkLayer(
const char* pszLayername) = 0;
426 virtual CPLErr DeleteNetworkLayers() = 0;
427 virtual void ConnectPointsByMultiline(GIntBig nFID,
429 const std::vector<OGRLayer *> &paPointLayers,
430 double dfTolerance,
double dfCost,
431 double dfInvCost, GNMDirection eDir);
432 virtual void ConnectPointsByLine(GIntBig nFID,
434 const std::vector<OGRLayer *> &paPointLayers,
435 double dfTolerance,
double dfCost,
436 double dfInvCost, GNMDirection eDir);
437 virtual GNMGFID FindNearestPoint(
const OGRPoint* poPoint,
438 const std::vector<OGRLayer*>& paPointLayers,
440 virtual OGRFeature* FindConnection(GNMGFID nSrcFID, GNMGFID nTgtFID,
442 virtual void SaveRules();
443 virtual GNMGFID GetNewVirtualFID();
445 const GNMPATH &path,
int nNoOfPath,
446 bool bReturnVertices,
bool bReturnEdges);
450 GNMGFID m_nVirtualConnectionGID;
457 std::map<GNMGFID, CPLString> m_moFeatureFIDMap;
458 std::vector<OGRLayer*> m_apoLayers;
459 std::vector<GNMRule> m_asRules;
460 bool m_bIsRulesChanged;
463 bool m_bIsGraphLoaded;
484 double dfMaxX,
double dfMaxY );
488 double dfMinX,
double dfMinY,
489 double dfMaxX,
double dfMaxY );
502 virtual int FindFieldIndex(
const char *pszFieldName,
int bExactMatch );
514 int bApproxOK = TRUE );
521 int bApproxOK = TRUE );
530 virtual OGRErr StartTransaction();
531 virtual OGRErr CommitTransaction();
532 virtual OGRErr RollbackTransaction();
539 OGRErr Intersection(
OGRLayer *pLayerMethod,
541 char** papszOptions = NULL,
542 GDALProgressFunc pfnProgress = NULL,
543 void * pProgressArg = NULL );
544 OGRErr Union(
OGRLayer *pLayerMethod,
546 char** papszOptions = NULL,
547 GDALProgressFunc pfnProgress = NULL,
548 void * pProgressArg = NULL );
549 OGRErr SymDifference(
OGRLayer *pLayerMethod,
552 GDALProgressFunc pfnProgress,
553 void * pProgressArg );
554 OGRErr Identity(
OGRLayer *pLayerMethod,
556 char** papszOptions = NULL,
557 GDALProgressFunc pfnProgress = NULL,
558 void * pProgressArg = NULL );
559 OGRErr Update(
OGRLayer *pLayerMethod,
561 char** papszOptions = NULL,
562 GDALProgressFunc pfnProgress = NULL,
563 void * pProgressArg = NULL );
564 OGRErr Clip(
OGRLayer *pLayerMethod,
566 char** papszOptions = NULL,
567 GDALProgressFunc pfnProgress = NULL,
568 void * pProgressArg = NULL );
569 OGRErr Erase(
OGRLayer *pLayerMethod,
571 char** papszOptions = NULL,
572 GDALProgressFunc pfnProgress = NULL,
573 void * pProgressArg = NULL );
575 GIntBig GetFeaturesRead();
577 int AttributeFilterEvaluationNeedsGeometry();
580 OGRErr InitializeIndexSupport(
const char * );
591 std::map<GNMGFID, GIntBig> m_mnFIDMap;
612 GNMRule(
const std::string &oRule );
620 virtual bool IsValid()
const;
625 virtual bool IsAcceptAny()
const;
631 virtual GNMRuleType GetType()
const;
640 virtual bool CanConnect(
const CPLString &soSrcLayerName,
643 virtual CPLString GetSourceLayerName()
const;
644 virtual CPLString GetTargetLayerName()
const;
645 virtual CPLString GetConnectorLayerName()
const;
646 const char* c_str()
const;
647 operator const char* (void)
const;
649 virtual bool ParseRuleString();
682 int bApproxOK = TRUE );
688 virtual OGRErr InsertFeature(
OGRFeature* poFeature,
689 const CPLString &soLayerName,
int nPathNo,
virtual OGRErr CreateField(OGRFieldDefn *poField, int bApproxOK=TRUE)
Create a new field on a layer.
Definition: gnmresultlayer.cpp:96
virtual OGRFeature * GetNextFeature()
Fetch the next available feature from this layer.
Definition: gnmresultlayer.cpp:66
GNM layer which represents a geography network layer of generic format.
Definition: gnm.h:473
virtual void SetStyleTable(OGRStyleTable *poStyleTable)
Set layer style table.
Definition: gnmlayer.cpp:342
virtual OGRErr GetExtent(OGREnvelope *psExtent, int bForce=TRUE)
Fetch the extent of this layer.
Definition: gnmlayer.cpp:279
virtual void FlushCache(void)
Flush all write cached data to disk.
Definition: gdaldataset.cpp:374
Concrete representation of a multi-vertex line.
Definition: ogr_geometry.h:527
Definition of a geometry field of an OGRFeatureDefn.
Definition: ogr_feature.h:143
virtual OGRErr ICreateFeature(OGRFeature *poFeature)
Create and write a new feature within a layer.
Definition: gnmresultlayer.cpp:209
virtual ~GNMGenericLayer()
~GNMGenericLayer
Definition: gnmlayer.cpp:48
virtual OGRSpatialReference * GetSpatialRef()
Fetch the spatial reference system for this layer.
Definition: gnmlayer.cpp:269
virtual OGRErr CreateGeomField(OGRGeomFieldDefn *poField, int bApproxOK=TRUE)
Create a new geometry field on a layer.
Definition: gnmresultlayer.cpp:101
virtual const char * GetProjectionRef(void)
Fetch the projection definition string for this dataset.
Definition: gdaldataset.cpp:803
virtual int FindFieldIndex(const char *pszFieldName, int bExactMatch)
Find the index of field in the layer.
Definition: gnmlayer.cpp:264
GNM class which represents a geography network of generic format.
Definition: gnm.h:182
virtual void ResetReading()
Reset feature reading to start on the first feature.
Definition: gnmlayer.cpp:208
virtual OGRFeature * GetFeature(GIntBig nFID)
Fetch a feature by its identifier.
Definition: gnmresultlayer.cpp:76
virtual GIntBig GetFeatureCount(int bForce=TRUE)
Fetch the feature count in this layer.
Definition: gnmlayer.cpp:274
virtual OGRFeature * GetFeatureByGlobalFID(GNMGFID nGFID)=0
GetFeatureByGlobalFID search all network layers for given feature identificator.
virtual OGRErr SetIgnoredFields(const char **papszFields)
Set which fields can be omitted when retrieving features from the layer.
Definition: gnmlayer.cpp:63
Convenient string class based on std::string.
Definition: cpl_string.h:283
Definition of a feature class or feature layer.
Definition: ogr_feature.h:206
virtual OGRErr DeleteField(int iField)
Delete an existing field on a layer.
Definition: gnmlayer.cpp:299
virtual OGRSpatialReference * GetSpatialRef()
Fetch the spatial reference system for this layer.
Definition: gnmresultlayer.cpp:117
virtual OGRGeometry * GetSpatialFilter()
This method returns the current spatial filter for this layer.
Definition: gnmlayer.cpp:175
virtual CPLErr Delete()=0
Delete network.
virtual OGRLayer * GetLayer(int)
Fetch a layer by index.
Definition: gdaldataset.cpp:5812
virtual OGRErr DeleteFeature(GIntBig nFID)
Delete feature from layer.
Definition: gnmlayer.cpp:229
virtual OGRErr SetNextByIndex(GIntBig nIndex)
Move read cursor to the nIndex'th feature in the current resultset.
Definition: gnmlayer.cpp:224
virtual OGRErr DeleteLayer(int)
Delete the indicated layer from the datasource.
Definition: gdaldataset.cpp:4369
Definition of an attribute of an OGRFeatureDefn.
Definition: ogr_feature.h:62
virtual OGRLayer * CopyLayer(OGRLayer *poSrcLayer, const char *pszNewName, char **papszOptions=NULL)
Duplicate an existing layer.
Definition: gdaldataset.cpp:4014
virtual void ResetReading()
Reset feature reading to start on the first feature.
Definition: gnmresultlayer.cpp:61
virtual const char * GetFIDColumn()
This method returns the name of the underlying database column being used as the FID column...
Definition: gnmresultlayer.cpp:107
virtual OGRwkbGeometryType GetGeomType()
Return the layer geometry type.
Definition: gnmlayer.cpp:259
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:333
virtual const char * GetFIDColumn()
This method returns the name of the underlying database column being used as the FID column...
Definition: gnmlayer.cpp:53
virtual const char * GetGeometryColumn()
This method returns the name of the underlying database column being used as the geometry column...
Definition: gnmresultlayer.cpp:112
virtual void SetSpatialFilterRect(double dfMinX, double dfMinY, double dfMaxX, double dfMaxY)
Set a new rectangular spatial filter.
Definition: gnmlayer.cpp:185
A collection of OGRLineString.
Definition: ogr_geometry.h:1292
The simple graph class, which holds the appropriate for calculations graph in memory (based on STL co...
Definition: gnmgraph.h:74
virtual GIntBig GetFeatureCount(int bForce=TRUE)
Fetch the feature count in this layer.
Definition: gnmresultlayer.cpp:86
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:104
Classes related to registration of format support, and opening datasets.
virtual OGRErr CreateGeomField(OGRGeomFieldDefn *poField, int bApproxOK=TRUE)
Create a new geometry field on a layer.
Definition: gnmlayer.cpp:322
virtual OGRErr ISetFeature(OGRFeature *poFeature)
Rewrite an existing feature.
Definition: gnmlayer.cpp:146
Definition: gdal_priv.h:238
General GNM class which represents a geography network of common format.
Definition: gnm.h:70
virtual OGRErr ISetFeature(OGRFeature *poFeature)
Rewrite an existing feature.
Definition: gnmresultlayer.cpp:204
virtual int CloseDependentDatasets()
Drop references to any other datasets referenced by this dataset.
Definition: gdaldataset.cpp:3280
virtual int GetVersion() const
GetVersion return the network version if applicable.
Definition: gnm.h:129
virtual char ** GetFileList(void)
Fetch files forming dataset.
Definition: gdaldataset.cpp:2303
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:129
virtual CPLErr Create(const char *pszFilename, char **papszOptions)=0
Create network system layers.
The simple class for rules.
Definition: gnm.h:608
virtual const char * GetName()
Return the layer name.
Definition: gnmlayer.cpp:254
virtual void SetStyleTableDirectly(OGRStyleTable *poStyleTable)
Set layer style table.
Definition: gnmlayer.cpp:337
virtual OGRLayer * GetPath(GNMGFID nStartFID, GNMGFID nEndFID, GNMGraphAlgorithmType eAlgorithm, char **papszOptions)=0
Create path between start and end GFIDs.
Point class.
Definition: ogr_geometry.h:264
virtual OGRFeatureDefn * GetLayerDefn()
Fetch the schema information for this layer.
Definition: gnmresultlayer.cpp:81
Simple container for a bounding region.
Definition: ogr_core.h:48
virtual OGRErr AlterFieldDefn(int iField, OGRFieldDefn *poNewFieldDefn, int nFlagsIn)
Alter the definition of an existing field on a layer.
Definition: gnmlayer.cpp:313
virtual OGRErr SetAttributeFilter(const char *)
Set a new attribute query.
Definition: gnmlayer.cpp:203
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:66
virtual int TestCapability(const char *pszCap)
Test if this layer supported the named capability.
Definition: gnmresultlayer.cpp:91
GNMGenericLayer(OGRLayer *poLayer, GNMGenericNetwork *poNetwork)
GNMGenericLayer.
Definition: gnmlayer.cpp:37
virtual int TestCapability(const char *)
Test if this layer supported the named capability.
Definition: gnmlayer.cpp:289
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:274
This class represents a style table.
Definition: ogr_featurestyle.h:82
virtual CPLErr DisconnectAll()=0
DisconnectAll method clears the network graph.
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:296
virtual int GetLayerCount()
Get the number of layers in this dataset.
Definition: gdaldataset.cpp:5787
virtual OGRErr ICreateFeature(OGRFeature *poFeature)
Create and write a new feature within a layer.
Definition: gnmlayer.cpp:163
virtual OGRFeature * GetNextFeature()
Fetch the next available feature from this layer.
Definition: gnmlayer.cpp:213
virtual OGRStyleTable * GetStyleTable()
Returns layer style table.
Definition: gnmlayer.cpp:332
virtual OGRErr SetNextByIndex(GIntBig nIndex)
Move read cursor to the nIndex'th feature in the current resultset.
Definition: gnmresultlayer.cpp:71
Definition: ogr_attrind.h:66
The OGRGNMWrappedResultLayer class for search paths queries results.
Definition: gnm.h:666
virtual void SetSpatialFilter(OGRGeometry *)
Set a new spatial filter.
Definition: gnmlayer.cpp:180
virtual OGRErr CreateField(OGRFieldDefn *poField, int bApproxOK=TRUE)
Create a new field on a layer.
Definition: gnmlayer.cpp:294
virtual int TestCapability(const char *)
Test if capability is available.
Definition: gdaldataset.cpp:5851
Format specific driver.
Definition: gdal_priv.h:1034
virtual OGRErr SyncToDisk()
Flush pending changes to disk.
Definition: gnmlayer.cpp:327
virtual OGRFeatureDefn * GetLayerDefn()
Fetch the schema information for this layer.
Definition: gnmlayer.cpp:362
virtual OGRErr ReorderFields(int *panMap)
Reorder all the fields of a layer.
Definition: gnmlayer.cpp:308
virtual const char * GetGeometryColumn()
This method returns the name of the underlying database column being used as the geometry column...
Definition: gnmlayer.cpp:58