GDAL
gnm.h
1/******************************************************************************
2 * $Id: gnm.h 5524ee5324f7bd364d391d842a6488c90c0186a7 2018-04-02 16:20:13 +0200 Even Rouault $
3 *
4 * Project: GDAL/OGR Geography Network support (Geographic Network Model)
5 * Purpose: GNM general public declarations.
6 * Authors: Mikhail Gusev (gusevmihs at gmail dot com)
7 * Dmitry Baryshnikov, polimax@mail.ru
8 *
9 ******************************************************************************
10 * Copyright (c) 2014, Mikhail Gusev
11 * Copyright (c) 2014-2015, NextGIS <info@nextgis.com>
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining a
14 * copy of this software and associated documentation files (the "Software"),
15 * to deal in the Software without restriction, including without limitation
16 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 * and/or sell copies of the Software, and to permit persons to whom the
18 * Software is furnished to do so, subject to the following conditions:
19 *
20 * The above copyright notice and this permission notice shall be included
21 * in all copies or substantial portions of the Software.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29 * DEALINGS IN THE SOFTWARE.
30 ****************************************************************************/
31
32#ifndef GNM
33#define GNM
34
35#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
36#include "ogrsf_frmts.h"
37#endif
38#include "gnmgraph.h"
39
40// Direction of an edge.
41typedef int GNMDirection; // We use int values in order to save them to the
42 // network data.
43
44// Network's metadata parameters names.
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"
55
56// TODO: Constants for capabilities.
57//#define GNMCanChangeConnections "CanChangeConnections"
58
59typedef enum
60{ GATDijkstraShortestPath = 1, GATKShortestPath, GATConnectedComponents
64} GNMGraphAlgorithmType;
65
66#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
67
74class CPL_DLL GNMNetwork : public GDALDataset
75{
76public:
77 GNMNetwork();
78 virtual ~GNMNetwork();
79
80 // GDALDataset Interface
81 virtual const char *GetProjectionRef(void) override;
82 virtual char **GetFileList(void) override;
83
84 // GNMNetwork Interface
85
106 virtual CPLErr Create( const char* pszFilename, char** papszOptions ) = 0;
107
113 virtual CPLErr Open( GDALOpenInfo* poOpenInfo ) = 0;
114
119 virtual CPLErr Delete() = 0;
120
127 virtual const char* GetName() const;
128
133 virtual int GetVersion() const { return 0;}
134
139 virtual CPLErr DisconnectAll () = 0;
140
148 virtual OGRFeature *GetFeatureByGlobalFID (GNMGFID nGFID) = 0;
149
160 virtual OGRLayer *GetPath (GNMGFID nStartFID, GNMGFID nEndFID,
161 GNMGraphAlgorithmType eAlgorithm, char** papszOptions) = 0;
162protected:
169 virtual int CheckNetworkExist( const char* pszFilename,
170 char** papszOptions ) = 0;
171
172protected:
174 CPLString m_soName;
175 CPLString m_soSRS;
177};
178
179class GNMRule;
181
188class CPL_DLL GNMGenericNetwork: public GNMNetwork
189{
190public:
192 virtual ~GNMGenericNetwork();
193
194 // GDALDataset Interface
195
196 virtual int GetLayerCount() override;
197 virtual OGRLayer *GetLayer(int) override;
198 virtual OGRErr DeleteLayer(int) override;
199
200 virtual int TestCapability( const char * ) override;
201
202 virtual OGRLayer *CopyLayer( OGRLayer *poSrcLayer,
203 const char *pszNewName,
204 char **papszOptions = nullptr ) override;
205
206 virtual int CloseDependentDatasets() override;
207 virtual void FlushCache(void) override;
208
209 // GNMNetwork Interface
210
211 virtual CPLErr Create( const char* pszFilename, char** papszOptions ) override = 0;
212 virtual CPLErr Delete() override;
213
214 virtual int GetVersion() const override;
219 virtual GNMGFID GetNewGlobalFID();
220
227 virtual CPLString GetAlgorithmName(GNMDirection eAlgorithm, bool bShortName);
228
236 virtual CPLErr AddFeatureGlobalFID(GNMGFID nFID, const char* pszLayerName);
237
251 virtual CPLErr ConnectFeatures (GNMGFID nSrcFID,
252 GNMGFID nTgtFID,
253 GNMGFID nConFID = -1,
254 double dfCost = 1,
255 double dfInvCost = 1,
256 GNMDirection eDir = GNM_EDGE_DIR_BOTH);
257
265 virtual CPLErr DisconnectFeatures (GNMGFID nSrcFID,
266 GNMGFID nTgtFID,
267 GNMGFID nConFID);
268
275 virtual CPLErr DisconnectFeaturesWithId(GNMGFID nFID);
276
289 virtual CPLErr ReconnectFeatures (GNMGFID nSrcFID,
290 GNMGFID nTgtFID,
291 GNMGFID nConFID,
292 double dfCost = 1,
293 double dfInvCost = 1,
294 GNMDirection eDir = GNM_EDGE_DIR_BOTH);
295
296 virtual CPLErr DisconnectAll() override;
297
298 virtual OGRFeature *GetFeatureByGlobalFID(GNMGFID nFID) override;
299
334 virtual CPLErr CreateRule (const char *pszRuleStr);
335
341
347 virtual CPLErr DeleteRule(const char *pszRuleStr);
348
353 virtual char** GetRules() const;
354
379 virtual CPLErr ConnectPointsByLines (char **papszLayerList,
380 double dfTolerance,
381 double dfCost,
382 double dfInvCost,
383 GNMDirection eDir);
384
391 virtual CPLErr ChangeBlockState (GNMGFID nFID, bool bIsBlock);
392
401 virtual CPLErr ChangeAllBlockState (bool bIsBlock = false);
402
403 virtual OGRLayer *GetPath (GNMGFID nStartFID, GNMGFID nEndFID,
404 GNMGraphAlgorithmType eAlgorithm, char** papszOptions) override;
405protected:
412 virtual CPLErr CheckLayerDriver(const char* pszDefaultDriverName,
413 char** papszOptions);
419 virtual bool CheckStorageDriverSupport(const char* pszDriverName) = 0;
420protected:
422 virtual CPLErr CreateMetadataLayer( GDALDataset* const pDS, int nVersion,
423 size_t nFieldSize = 1024 );
424 virtual CPLErr StoreNetworkSrs();
425 virtual CPLErr LoadNetworkSrs();
426 virtual CPLErr CreateGraphLayer( GDALDataset* const pDS );
427 virtual CPLErr CreateFeaturesLayer( GDALDataset* const pDS );
428 virtual CPLErr LoadMetadataLayer( GDALDataset* const pDS );
429 virtual CPLErr LoadGraphLayer( GDALDataset* const pDS );
430 virtual CPLErr LoadGraph();
431 virtual CPLErr LoadFeaturesLayer( GDALDataset* const pDS );
432 virtual CPLErr DeleteMetadataLayer() = 0;
433 virtual CPLErr DeleteGraphLayer() = 0;
434 virtual CPLErr DeleteFeaturesLayer() = 0;
435 virtual CPLErr LoadNetworkLayer(const char* pszLayername) = 0;
436 virtual CPLErr DeleteNetworkLayers() = 0;
437 virtual void ConnectPointsByMultiline(GIntBig nFID,
438 const OGRMultiLineString *poMultiLineString,
439 const std::vector<OGRLayer *> &paPointLayers,
440 double dfTolerance, double dfCost,
441 double dfInvCost, GNMDirection eDir);
442 virtual void ConnectPointsByLine(GIntBig nFID,
443 const OGRLineString *poLineString,
444 const std::vector<OGRLayer *> &paPointLayers,
445 double dfTolerance, double dfCost,
446 double dfInvCost, GNMDirection eDir);
447 virtual GNMGFID FindNearestPoint(const OGRPoint* poPoint,
448 const std::vector<OGRLayer*>& paPointLayers,
449 double dfTolerance);
450 virtual OGRFeature* FindConnection(GNMGFID nSrcFID, GNMGFID nTgtFID,
451 GNMGFID nConFID);
452 virtual void SaveRules();
453 virtual GNMGFID GetNewVirtualFID();
454 virtual void FillResultLayer(OGRGNMWrappedResultLayer* poResLayer,
455 const GNMPATH &path, int nNoOfPath,
456 bool bReturnVertices, bool bReturnEdges);
458protected:
460 int m_nVersion;
461 GNMGFID m_nGID;
462 GNMGFID m_nVirtualConnectionGID;
463 OGRLayer* m_poMetadataLayer;
464 OGRLayer* m_poGraphLayer;
465 OGRLayer* m_poFeaturesLayer;
466
467 GDALDriver *m_poLayerDriver;
468
469 std::map<GNMGFID, CPLString> m_moFeatureFIDMap;
470 std::vector<OGRLayer*> m_apoLayers;
471 std::vector<GNMRule> m_asRules;
472 bool m_bIsRulesChanged;
473
474 GNMGraph m_oGraph;
475 bool m_bIsGraphLoaded;
477};
478
487{
488public:
489 GNMGenericLayer(OGRLayer* poLayer, GNMGenericNetwork* poNetwork);
490 virtual ~GNMGenericLayer();
491
492 // OGRLayer Interface
493
494 virtual OGRGeometry *GetSpatialFilter() override;
495 virtual void SetSpatialFilter( OGRGeometry * ) override;
496 virtual void SetSpatialFilterRect( double dfMinX, double dfMinY,
497 double dfMaxX, double dfMaxY ) override;
498
499 virtual void SetSpatialFilter( int iGeomField, OGRGeometry * ) override;
500 virtual void SetSpatialFilterRect( int iGeomField,
501 double dfMinX, double dfMinY,
502 double dfMaxX, double dfMaxY ) override;
503
504 virtual OGRErr SetAttributeFilter( const char * ) override;
505
506 virtual void ResetReading() override;
507 virtual OGRFeature *GetNextFeature() override;
508 virtual OGRErr SetNextByIndex( GIntBig nIndex ) override;
509
510 virtual OGRErr DeleteFeature( GIntBig nFID ) override;
511
512 virtual const char *GetName() override;
513 virtual OGRwkbGeometryType GetGeomType() override;
514 virtual OGRFeatureDefn *GetLayerDefn() override;
515 virtual int FindFieldIndex( const char *pszFieldName, int bExactMatch ) override;
516
517 virtual OGRSpatialReference *GetSpatialRef() override;
518
519 virtual GIntBig GetFeatureCount( int bForce = TRUE ) override;
520 virtual OGRErr GetExtent(OGREnvelope *psExtent, int bForce = TRUE) override;
521 virtual OGRErr GetExtent(int iGeomField, OGREnvelope *psExtent,
522 int bForce = TRUE) override;
523
524 virtual int TestCapability( const char * ) override;
525
526 virtual OGRErr CreateField( OGRFieldDefn *poField,
527 int bApproxOK = TRUE ) override;
528 virtual OGRErr DeleteField( int iField ) override;
529 virtual OGRErr ReorderFields( int* panMap ) override;
530 virtual OGRErr AlterFieldDefn( int iField, OGRFieldDefn* poNewFieldDefn,
531 int nFlagsIn ) override;
532
533 virtual OGRErr CreateGeomField( OGRGeomFieldDefn *poField,
534 int bApproxOK = TRUE ) override;
535
536 virtual OGRErr SyncToDisk() override;
537
538 virtual OGRStyleTable *GetStyleTable() override;
539 virtual void SetStyleTableDirectly( OGRStyleTable *poStyleTable ) override;
540
541 virtual void SetStyleTable(OGRStyleTable *poStyleTable) override;
542
543 virtual OGRErr StartTransaction() override;
544 virtual OGRErr CommitTransaction() override;
545 virtual OGRErr RollbackTransaction() override;
546
547 virtual const char *GetFIDColumn() override;
548 virtual const char *GetGeometryColumn() override;
549
550 virtual OGRErr SetIgnoredFields( const char **papszFields ) override;
551
553 OGRErr Intersection( OGRLayer *pLayerMethod,
554 OGRLayer *pLayerResult,
555 char** papszOptions = nullptr,
556 GDALProgressFunc pfnProgress = nullptr,
557 void * pProgressArg = nullptr );
559 OGRErr Union( OGRLayer *pLayerMethod,
560 OGRLayer *pLayerResult,
561 char** papszOptions = nullptr,
562 GDALProgressFunc pfnProgress = nullptr,
563 void * pProgressArg = nullptr );
565 OGRErr SymDifference( OGRLayer *pLayerMethod,
566 OGRLayer *pLayerResult,
567 char** papszOptions,
568 GDALProgressFunc pfnProgress,
569 void * pProgressArg );
571 OGRErr Identity( OGRLayer *pLayerMethod,
572 OGRLayer *pLayerResult,
573 char** papszOptions = nullptr,
574 GDALProgressFunc pfnProgress = nullptr,
575 void * pProgressArg = nullptr );
577 OGRErr Update( OGRLayer *pLayerMethod,
578 OGRLayer *pLayerResult,
579 char** papszOptions = nullptr,
580 GDALProgressFunc pfnProgress = nullptr,
581 void * pProgressArg = nullptr );
583 OGRErr Clip( OGRLayer *pLayerMethod,
584 OGRLayer *pLayerResult,
585 char** papszOptions = nullptr,
586 GDALProgressFunc pfnProgress = nullptr,
587 void * pProgressArg = nullptr );
589 OGRErr Erase( OGRLayer *pLayerMethod,
590 OGRLayer *pLayerResult,
591 char** papszOptions = nullptr,
592 GDALProgressFunc pfnProgress = nullptr,
593 void * pProgressArg = nullptr );
594
597
600
602 /* consider these private */
603 OGRErr InitializeIndexSupport( const char * );
604 OGRLayerAttrIndex *GetIndex();
606
607protected:
609 virtual OGRErr ISetFeature( OGRFeature *poFeature ) override;
610 virtual OGRErr ICreateFeature( OGRFeature *poFeature ) override;
611
612protected:
613 CPLString m_soLayerName;
614 OGRLayer *m_poLayer;
615 GNMGenericNetwork* m_poNetwork;
616 std::map<GNMGFID, GIntBig> m_mnFIDMap;
618};
619
620typedef enum
621{ GRTConnection = 0
623} GNMRuleType;
624
634// cppcheck-suppress copyCtorAndEqOperator
635class CPL_DLL GNMRule
636{
637public:
641 explicit GNMRule(const std::string &oRule );
643 explicit GNMRule(const char* pszRule);
645 GNMRule(const GNMRule &oRule);
646 virtual ~GNMRule();
651 virtual bool IsValid() const;
656 virtual bool IsAcceptAny() const;
662 virtual GNMRuleType GetType() const;
671 virtual bool CanConnect(const CPLString &soSrcLayerName,
672 const CPLString &soTgtLayerName,
673 const CPLString &soConnLayerName = "");
681 const char* c_str() const;
683 operator const char* (void) const;
684protected:
686 virtual bool ParseRuleString();
687protected:
688 CPLString m_soSrcLayerName;
689 CPLString m_soTgtLayerName;
690 CPLString m_soConnLayerName;
691 bool m_bAllow;
692 bool m_bValid;
693 bool m_bAny;
694 CPLString m_soRuleString;
696};
697
705{
706public:
709
710 // OGRLayer
711 virtual void ResetReading() override;
712 virtual OGRFeature *GetNextFeature() override;
713 virtual OGRErr SetNextByIndex( GIntBig nIndex ) override;
714 virtual OGRFeature *GetFeature( GIntBig nFID ) override;
715 virtual OGRFeatureDefn *GetLayerDefn() override;
716 virtual GIntBig GetFeatureCount( int bForce = TRUE ) override;
717 virtual int TestCapability( const char * pszCap ) override;
718 virtual OGRErr CreateField( OGRFieldDefn *poField, int bApproxOK = TRUE ) override;
719 virtual OGRErr CreateGeomField( OGRGeomFieldDefn *poField,
720 int bApproxOK = TRUE ) override;
721 virtual const char *GetFIDColumn() override;
722 virtual const char *GetGeometryColumn() override;
723 virtual OGRSpatialReference *GetSpatialRef() override;
724
725 // OGRGNMWrappedResultLayer
726 virtual OGRErr InsertFeature(OGRFeature* poFeature,
727 const CPLString &soLayerName, int nPathNo,
728 bool bIsEdge);
729protected:
730 virtual OGRErr ISetFeature( OGRFeature *poFeature ) override;
731 virtual OGRErr ICreateFeature( OGRFeature *poFeature ) override;
732protected:
734 GDALDataset *poDS;
735 OGRLayer *poLayer;
737};
738
739#endif // __cplusplus
740
741#endif // GNM
Convenient string class based on std::string.
Definition: cpl_string.h:330
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:336
virtual const char * GetProjectionRef(void)
Fetch the projection definition string for this dataset.
Definition: gdaldataset.cpp:824
virtual char ** GetFileList(void)
Fetch files forming dataset.
Definition: gdaldataset.cpp:2360
Format specific driver.
Definition: gdal_priv.h:1387
Class for dataset open functions.
Definition: gdal_priv.h:266
GNM layer which represents a geography network layer of generic format.
Definition: gnm.h:487
virtual const char * GetFIDColumn() override
This method returns the name of the underlying database column being used as the FID column,...
Definition: gnmlayer.cpp:52
virtual const char * GetName() override
Return the layer name.
Definition: gnmlayer.cpp:255
virtual OGRErr ReorderFields(int *panMap) override
Reorder all the fields of a layer.
Definition: gnmlayer.cpp:309
virtual OGRErr SetIgnoredFields(const char **papszFields) override
Set which fields can be omitted when retrieving features from the layer.
Definition: gnmlayer.cpp:62
virtual OGRFeatureDefn * GetLayerDefn() override
Fetch the schema information for this layer.
Definition: gnmlayer.cpp:363
virtual OGRErr CreateField(OGRFieldDefn *poField, int bApproxOK=TRUE) override
Create a new field on a layer.
Definition: gnmlayer.cpp:295
virtual void SetStyleTable(OGRStyleTable *poStyleTable) override
Set layer style table.
Definition: gnmlayer.cpp:343
virtual OGRErr GetExtent(OGREnvelope *psExtent, int bForce=TRUE) override
Fetch the extent of this layer.
Definition: gnmlayer.cpp:280
virtual OGRErr SyncToDisk() override
Flush pending changes to disk.
Definition: gnmlayer.cpp:328
OGRErr Union(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Union.
Definition: gnmlayer.cpp:77
virtual int FindFieldIndex(const char *pszFieldName, int bExactMatch) override
Find the index of field in the layer.
Definition: gnmlayer.cpp:265
virtual GIntBig GetFeatureCount(int bForce=TRUE) override
Fetch the feature count in this layer.
Definition: gnmlayer.cpp:275
virtual ~GNMGenericLayer()
~GNMGenericLayer
Definition: gnmlayer.cpp:50
virtual void ResetReading() override
Reset feature reading to start on the first feature.
Definition: gnmlayer.cpp:209
OGRErr Clip(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Clip.
Definition: gnmlayer.cpp:109
virtual OGRErr RollbackTransaction() override
For datasources which support transactions, RollbackTransaction will roll back a datasource to its st...
Definition: gnmlayer.cpp:358
virtual OGRStyleTable * GetStyleTable() override
Returns layer style table.
Definition: gnmlayer.cpp:333
virtual void SetSpatialFilter(OGRGeometry *) override
Set a new spatial filter.
Definition: gnmlayer.cpp:181
virtual int TestCapability(const char *) override
Test if this layer supported the named capability.
Definition: gnmlayer.cpp:290
virtual OGRErr SetNextByIndex(GIntBig nIndex) override
Move read cursor to the nIndex'th feature in the current resultset.
Definition: gnmlayer.cpp:225
virtual OGRErr AlterFieldDefn(int iField, OGRFieldDefn *poNewFieldDefn, int nFlagsIn) override
Alter the definition of an existing field on a layer.
Definition: gnmlayer.cpp:314
OGRErr Update(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Update.
Definition: gnmlayer.cpp:101
virtual OGRSpatialReference * GetSpatialRef() override
Fetch the spatial reference system for this layer.
Definition: gnmlayer.cpp:270
virtual OGRErr DeleteField(int iField) override
Delete an existing field on a layer.
Definition: gnmlayer.cpp:300
virtual void SetSpatialFilterRect(double dfMinX, double dfMinY, double dfMaxX, double dfMaxY) override
Set a new rectangular spatial filter.
Definition: gnmlayer.cpp:186
virtual OGRwkbGeometryType GetGeomType() override
Return the layer geometry type.
Definition: gnmlayer.cpp:260
virtual OGRFeature * GetNextFeature() override
Fetch the next available feature from this layer.
Definition: gnmlayer.cpp:214
virtual OGRErr CommitTransaction() override
For datasources which support transactions, CommitTransaction commits a transaction.
Definition: gnmlayer.cpp:353
GIntBig GetFeaturesRead()
GetFeaturesRead.
Definition: gnmlayer.cpp:125
virtual OGRErr StartTransaction() override
For datasources which support transactions, StartTransaction creates a transaction.
Definition: gnmlayer.cpp:348
OGRErr Intersection(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions=nullptr, GDALProgressFunc pfnProgress=nullptr, void *pProgressArg=nullptr)
Intersection.
Definition: gnmlayer.cpp:67
virtual OGRErr SetAttributeFilter(const char *) override
Set a new attribute query.
Definition: gnmlayer.cpp:204
virtual const char * GetGeometryColumn() override
This method returns the name of the underlying database column being used as the geometry column,...
Definition: gnmlayer.cpp:57
virtual OGRGeometry * GetSpatialFilter() override
This method returns the current spatial filter for this layer.
Definition: gnmlayer.cpp:176
int AttributeFilterEvaluationNeedsGeometry()
AttributeFilterEvaluationNeedsGeometry.
Definition: gnmlayer.cpp:130
virtual void SetStyleTableDirectly(OGRStyleTable *poStyleTable) override
Set layer style table.
Definition: gnmlayer.cpp:338
virtual OGRErr DeleteFeature(GIntBig nFID) override
Delete feature from layer.
Definition: gnmlayer.cpp:230
virtual OGRErr CreateGeomField(OGRGeomFieldDefn *poField, int bApproxOK=TRUE) override
Create a new geometry field on a layer.
Definition: gnmlayer.cpp:323
OGRErr SymDifference(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
SymDifference.
Definition: gnmlayer.cpp:85
GNMGenericLayer(OGRLayer *poLayer, GNMGenericNetwork *poNetwork)
GNMGenericLayer.
Definition: gnmlayer.cpp:38
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:117
GNM class which represents a geography network of generic format.
Definition: gnm.h:189
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 void FlushCache(void) override
Flush all write cached data to disk.
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 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:636
GNMRule()
Constructor.
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(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.
Definition of a feature class or feature layer.
Definition: ogr_feature.h:260
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:355
Definition of an attribute of an OGRFeatureDefn.
Definition: ogr_feature.h:93
The OGRGNMWrappedResultLayer class for search paths queries results.
Definition: gnm.h:705
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:73
virtual OGRErr ICreateFeature(OGRFeature *poFeature) override
Create and write a new feature within a layer.
Definition: gnmresultlayer.cpp:212
virtual OGRErr ISetFeature(OGRFeature *poFeature) override
Rewrite an existing feature.
Definition: gnmresultlayer.cpp:207
virtual OGRFeatureDefn * GetLayerDefn() override
Fetch the schema information for this layer.
Definition: gnmresultlayer.cpp:83
virtual OGRErr CreateField(OGRFieldDefn *poField, int bApproxOK=TRUE) override
Create a new field on a layer.
Definition: gnmresultlayer.cpp:98
virtual OGRFeature * GetNextFeature() override
Fetch the next available feature from this layer.
Definition: gnmresultlayer.cpp:68
virtual OGRErr CreateGeomField(OGRGeomFieldDefn *poField, int bApproxOK=TRUE) override
Create a new geometry field on a layer.
Definition: gnmresultlayer.cpp:103
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:78
virtual GIntBig GetFeatureCount(int bForce=TRUE) override
Fetch the feature count in this layer.
Definition: gnmresultlayer.cpp:88
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:93
virtual void ResetReading() override
Reset feature reading to start on the first feature.
Definition: gnmresultlayer.cpp:63
OGRGNMWrappedResultLayer(GDALDataset *poDS, OGRLayer *poLayer)
Constructor.
Definition: gnmresultlayer.cpp:36
Definition of a geometry field of an OGRFeatureDefn.
Definition: ogr_feature.h:183
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:287
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:71
virtual OGRErr ICreateFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT
Create and write a new feature within a layer.
Definition: ogrlayer.cpp:637
virtual OGRErr ISetFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT
Rewrite an existing feature.
Definition: ogrlayer.cpp:598
Concrete representation of a multi-vertex line.
Definition: ogr_geometry.h:1242
A collection of OGRLineString.
Definition: ogr_geometry.h:2748
Point class.
Definition: ogr_geometry.h:810
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:148
This class represents a style table.
Definition: ogr_featurestyle.h:85
CPLErr
Error category.
Definition: cpl_error.h:53
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:248
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:318
int OGRErr
Simple container for a bounding region.
Definition: ogr_core.h:290
Classes related to registration of format support, and opening datasets.

Generated for GDAL by doxygen 1.9.4.