SUMO - Simulation of Urban MObility
PCPolyContainer Class Reference

A storage for loaded polygons and pois. More...

#include <PCPolyContainer.h>

Inheritance diagram for PCPolyContainer:
Inheritance graph
Collaboration diagram for PCPolyContainer:
Collaboration graph

Data Structures

struct  LanePos
 

Public Types

typedef NamedObjectCont< PointOfInterest * > POIs
 
typedef NamedObjectCont< SUMOPolygon * > Polygons
 containers More...
 

Public Member Functions

bool add (SUMOPolygon *poly, bool ignorePruning=false)
 Adds a polygon to the storage. More...
 
bool add (PointOfInterest *poi, bool ignorePruning=false)
 Adds a poi to the storage. More...
 
void addLanePos (const std::string &poiID, const std::string &laneID, double lanePos, double lanePosLat)
 
virtual bool addPOI (const std::string &id, const std::string &type, const RGBColor &color, const Position &pos, bool geo, const std::string &lane, double posOverLane, double posLat, double layer, double angle, const std::string &imgFile, double width, double height, bool ignorePruning=false)
 Builds a POI using the given values and adds it to the container. More...
 
virtual bool addPolygon (const std::string &id, const std::string &type, const RGBColor &color, double layer, double angle, const std::string &imgFile, const PositionVector &shape, bool geo, bool fill, bool ignorePruning=false)
 Builds a polygon using the given values and adds it to the container. More...
 
int getEnumIDFor (const std::string &key)
 Retuns a unique id for a given name. More...
 
const POIsgetPOIs () const
 Returns all pois. More...
 
const PolygonsgetPolygons () const
 Returns all polygons. More...
 
virtual void movePOI (const std::string &id, const Position &pos)
 Assigns a new position to the named PoI. More...
 
 PCPolyContainer (bool prune, const Boundary &pruningBoundary, const std::vector< std::string > &removeByNames)
 Constructor. More...
 
virtual bool removePOI (const std::string &id)
 Removes a PoI from the container. More...
 
virtual bool removePolygon (const std::string &id)
 Removes a polygon from the container. More...
 
virtual void reshapePolygon (const std::string &id, const PositionVector &shape)
 Assigns a shape to the named polygon. More...
 
void save (const std::string &file, bool useGeo)
 Saves the stored polygons and pois into the given file. More...
 
void saveDlrTDP (const std::string &prefix)
 Saves the stored polygons and pois into the given file in dlrTDP format. More...
 
 ~PCPolyContainer ()
 Destructor. More...
 

Protected Attributes

POIs myPOIs
 stored POIs More...
 
Polygons myPolygons
 stored Polygons More...
 

Private Member Functions

PCPolyContaineroperator= (const PCPolyContainer &s)
 Invalidated assignment operator. More...
 
 PCPolyContainer (const PCPolyContainer &s)
 Invalidated copy constructor. More...
 

Static Private Member Functions

static void writeDlrTDPHeader (OutputDevice &device, const OptionsCont &oc)
 

Private Attributes

bool myDoPrune
 Information whether the pruning boundary shall be used. More...
 
std::map< std::string, int > myIDEnums
 An id to int map for proper enumeration. More...
 
std::map< std::string, LanePosmyLanePosPois
 An id to pos map for lane pos specs. More...
 
Boundary myPruningBoundary
 The boundary that described the rectangle within which an object must be in order to be kept. More...
 
std::vector< std::string > myRemoveByNames
 List of names of polygons/pois that shall be removed. More...
 

Detailed Description

A storage for loaded polygons and pois.

Definition at line 57 of file PCPolyContainer.h.

Member Typedef Documentation

◆ POIs

Definition at line 52 of file ShapeContainer.h.

◆ Polygons

containers

Definition at line 51 of file ShapeContainer.h.

Constructor & Destructor Documentation

◆ PCPolyContainer() [1/2]

PCPolyContainer::PCPolyContainer ( bool  prune,
const Boundary pruningBoundary,
const std::vector< std::string > &  removeByNames 
)

Constructor.

Parameters
[in]pruneWhether added polygons/pois shall be pruned
[in]pruningBoundaryThe pruning boundary (only valid if prune==true)
[in]removeByNamesNames of objects that shall not be added

Definition at line 51 of file PCPolyContainer.cpp.

◆ ~PCPolyContainer()

PCPolyContainer::~PCPolyContainer ( )

◆ PCPolyContainer() [2/2]

PCPolyContainer::PCPolyContainer ( const PCPolyContainer s)
private

Invalidated copy constructor.

Member Function Documentation

◆ add() [1/2]

bool PCPolyContainer::add ( SUMOPolygon poly,
bool  ignorePruning = false 
)
virtual

Adds a polygon to the storage.

If pruning is enabled, "ignorePruning" is false and the polygon lies outside the pruning boundary, or if the polygon's name is within the names of objects to discard, the polygon is deleted and false is returned.

Afterwards it is tested whether a polygon with the same name is already stored. If so, an error message is printed, the polygon is deleted and false is returned, otherwise true.

Parameters
[in]polyThe polygon to add
[in]ignorePruningWhether the polygon shall be kept, even though it would be pruned
Returns
Whether the polygon could be added

Reimplemented from ShapeContainer.

Definition at line 65 of file PCPolyContainer.cpp.

References ShapeContainer::add(), PositionVector::getBoxBoundary(), Named::getID(), SUMOPolygon::getShape(), myDoPrune, myPruningBoundary, myRemoveByNames, and Boundary::partialWithin().

Referenced by PCLoaderOSM::addPOI(), PCLoaderOSM::addPolygon(), PCLoaderVisum::load(), PCLoaderArcView::load(), PCLoaderDlrNavteq::loadPOIFile(), and PCLoaderDlrNavteq::loadPolyFile().

◆ add() [2/2]

bool PCPolyContainer::add ( PointOfInterest poi,
bool  ignorePruning = false 
)
virtual

Adds a poi to the storage.

If pruning is enabled, "ignorePruning" is false and the poi lies outside the pruning boundary, or if the poi's name is within the names of objects to discard, the poi is deleted and false is returned.

Afterwards it is tested whether a poi with the same name is already stored. If so, an error message is printed, the poi is deleted and false is returned, otherwise true.

Parameters
[in]polyThe poi to add
[in]ignorePruningWhether the poi shall be kept, even though it would be pruned
Returns
Whether the poi could be added

Reimplemented from ShapeContainer.

Definition at line 85 of file PCPolyContainer.cpp.

References ShapeContainer::add(), Boundary::around(), Named::getID(), myDoPrune, myPruningBoundary, and myRemoveByNames.

◆ addLanePos()

void PCPolyContainer::addLanePos ( const std::string &  poiID,
const std::string &  laneID,
double  lanePos,
double  lanePosLat 
)

Definition at line 104 of file PCPolyContainer.cpp.

References myLanePosPois.

◆ addPOI()

bool ShapeContainer::addPOI ( const std::string &  id,
const std::string &  type,
const RGBColor color,
const Position pos,
bool  geo,
const std::string &  lane,
double  posOverLane,
double  posLat,
double  layer,
double  angle,
const std::string &  imgFile,
double  width,
double  height,
bool  ignorePruning = false 
)
virtualinherited

Builds a POI using the given values and adds it to the container.

Parameters
[in]idThe name of the POI
[in]typeThe (abstract) type of the POI
[in]colorThe color of the POI
[in]posThe position of the POI

Reimplemented in GNENet, and GUIShapeContainer.

Definition at line 64 of file ShapeContainer.cpp.

References ShapeContainer::add().

Referenced by libsumo::POI::add(), and ShapeHandler::addPOI().

◆ addPolygon()

bool ShapeContainer::addPolygon ( const std::string &  id,
const std::string &  type,
const RGBColor color,
double  layer,
double  angle,
const std::string &  imgFile,
const PositionVector shape,
bool  geo,
bool  fill,
bool  ignorePruning = false 
)
virtualinherited

Builds a polygon using the given values and adds it to the container.

Parameters
[in]idThe name of the polygon
[in]typeThe (abstract) type of the polygon
[in]colorThe color of the polygon
[in]layerThe layer of the polygon
[in]angleThe rotation of the polygon
[in]imgFileThe raster image of the polygon
[in]shapeThe shape of the polygon
[in]geospecify if shape was loaded as GEO coordinate
[in]fillWhether the polygon shall be filled
Returns
whether the polygon could be added

Reimplemented in GNENet, and GUIShapeContainer.

Definition at line 55 of file ShapeContainer.cpp.

References ShapeContainer::add().

Referenced by libsumo::Polygon::add(), NLHandler::addDistrict(), and ShapeHandler::addPoly().

◆ getEnumIDFor()

int PCPolyContainer::getEnumIDFor ( const std::string &  key)

Retuns a unique id for a given name.

The unique id is generated by having an internal map of ids to running numbers. The first call to this method will return 0, all subsequent with the same key will return numbers increased by one at each call.

Parameters
[in]keyThe key to get a running number for
Returns
Unique id (running number of calls that used this key)

Definition at line 216 of file PCPolyContainer.cpp.

References myIDEnums.

Referenced by PCLoaderDlrNavteq::loadPolyFile().

◆ getPOIs()

◆ getPolygons()

◆ movePOI()

void ShapeContainer::movePOI ( const std::string &  id,
const Position pos 
)
virtualinherited

Assigns a new position to the named PoI.

Parameters
[in]idThe id of the PoI to move
[in]posThe PoI's new position

Reimplemented in GUIShapeContainer.

Definition at line 84 of file ShapeContainer.cpp.

References NamedObjectCont< T >::get(), and ShapeContainer::myPOIs.

◆ operator=()

PCPolyContainer& PCPolyContainer::operator= ( const PCPolyContainer s)
private

Invalidated assignment operator.

◆ removePOI()

bool ShapeContainer::removePOI ( const std::string &  id)
virtualinherited

Removes a PoI from the container.

Parameters
[in]idThe id of the PoI
Returns
Whether the poi could be removed

Reimplemented in GUIShapeContainer.

Definition at line 78 of file ShapeContainer.cpp.

References ShapeContainer::myPOIs, and NamedObjectCont< T >::remove().

Referenced by libsumo::POI::remove(), and GNEChange_Attribute::~GNEChange_Attribute().

◆ removePolygon()

bool ShapeContainer::removePolygon ( const std::string &  id)
virtualinherited

Removes a polygon from the container.

Parameters
[in]idThe id of the polygon
Returns
Whether the polygon could be removed

Reimplemented in GUIShapeContainer.

Definition at line 72 of file ShapeContainer.cpp.

References ShapeContainer::myPolygons, and NamedObjectCont< T >::remove().

Referenced by libsumo::Polygon::remove(), and GNEChange_Attribute::~GNEChange_Attribute().

◆ reshapePolygon()

void ShapeContainer::reshapePolygon ( const std::string &  id,
const PositionVector shape 
)
virtualinherited

Assigns a shape to the named polygon.

Parameters
[in]idThe id of the polygon to reshape
[in]shapeThe polygon's new shape

Reimplemented in GUIShapeContainer.

Definition at line 93 of file ShapeContainer.cpp.

References NamedObjectCont< T >::get(), ShapeContainer::myPolygons, and SUMOPolygon::setShape().

Referenced by libsumo::Polygon::setShape().

◆ save()

void PCPolyContainer::save ( const std::string &  file,
bool  useGeo 
)

Saves the stored polygons and pois into the given file.

Parameters
[in]fileThe name of the file to write stored objects' definitions into
[in]useGeoWhether to write output in geo-coordinates
Exceptions
IOErrorIf the file could not be opened

Definition at line 110 of file PCPolyContainer.cpp.

References OutputDevice::close(), OutputDevice::getDevice(), GeoConvHelper::getFinal(), OptionsCont::getFloat(), OptionsCont::getOptions(), gPrecisionGeo, myLanePosPois, ShapeContainer::myPOIs, ShapeContainer::myPolygons, OutputDevice::setPrecision(), GeoConvHelper::usingGeoProjection(), WRITE_WARNING, GeoConvHelper::writeLocation(), and OutputDevice::writeXMLHeader().

◆ saveDlrTDP()

void PCPolyContainer::saveDlrTDP ( const std::string &  prefix)

Saves the stored polygons and pois into the given file in dlrTDP format.

Parameters
[in]prefixThe prefix of the file to write stored objects' definitions into

Definition at line 163 of file PCPolyContainer.cpp.

References GeoConvHelper::cartesian2geo(), OutputDevice::close(), OutputDevice::getDevice(), GeoConvHelper::getFinal(), OptionsCont::getOptions(), Position::mul(), ShapeContainer::myPOIs, ShapeContainer::myPolygons, OutputDevice::setPrecision(), GeoConvHelper::usingGeoProjection(), writeDlrTDPHeader(), Position::x(), and Position::y().

◆ writeDlrTDPHeader()

void PCPolyContainer::writeDlrTDPHeader ( OutputDevice device,
const OptionsCont oc 
)
staticprivate

Field Documentation

◆ myDoPrune

bool PCPolyContainer::myDoPrune
private

Information whether the pruning boundary shall be used.

Definition at line 151 of file PCPolyContainer.h.

Referenced by add().

◆ myIDEnums

std::map<std::string, int> PCPolyContainer::myIDEnums
private

An id to int map for proper enumeration.

Definition at line 145 of file PCPolyContainer.h.

Referenced by getEnumIDFor().

◆ myLanePosPois

std::map<std::string, LanePos> PCPolyContainer::myLanePosPois
private

An id to pos map for lane pos specs.

Definition at line 142 of file PCPolyContainer.h.

Referenced by addLanePos(), and save().

◆ myPOIs

◆ myPolygons

◆ myPruningBoundary

Boundary PCPolyContainer::myPruningBoundary
private

The boundary that described the rectangle within which an object must be in order to be kept.

Definition at line 148 of file PCPolyContainer.h.

Referenced by add().

◆ myRemoveByNames

std::vector<std::string> PCPolyContainer::myRemoveByNames
private

List of names of polygons/pois that shall be removed.

Definition at line 154 of file PCPolyContainer.h.

Referenced by add().


The documentation for this class was generated from the following files: