15#include <QSharedPointer>
16#include "SurfacePoint.h"
25#include <boost/graph/graph_traits.hpp>
26#include <boost/graph/adjacency_list.hpp>
27#include <boost/graph/connected_components.hpp>
29#include "ControlMeasure.h"
30#include "ControlPoint.h"
32template<
typename A,
typename B >
class QHash;
33template<
typename T >
class QList;
34template<
typename A,
typename B >
struct QPair;
35template<
typename T >
class QSet;
47 class SerialNumberList;
288 QList< ControlPoint * >
take();
291 void Write(
const QString &filename,
bool pvl =
false);
307 double min,double max);
323 double sample,
double line);
326 QString GetNetworkId()
const;
348 void SetImages(
const QString &imageListFile);
370 void networkStructureModified();
395 bool addEdge(QString sourceSerial, QString targetSerial);
396 bool removeEdge(QString sourceSerial, QString targetSerial);
405 public std::function<bool(ControlMeasure* const &,
406 ControlMeasure * const &)> {
409 m_accessor = accessorMethod;
412 this->m_accessor = other.m_accessor;
425 QHash< QString, ControlPoint * > *
points;
431 QHash< ControlPoint *, ControlMeasure * >
measures;
443 typedef boost::adjacency_list<boost::setS,
449 typedef Network::vertex_descriptor ImageVertex;
460 typedef boost::graph_traits<Network>::vertex_iterator VertexIterator;
462 QHash<QString, ImageVertex> m_vertexMap;
ModType
Control Measure Modification Types.
ControlMeasureLessThanFunctor & operator=(ControlMeasureLessThanFunctor const &other)
Copies the content of the a ControlMeasureLessThanFunctor.
bool operator()(ControlMeasure *const &, ControlMeasure *const &)
The () operator for the Control Measure less than functor.
int GetNumEditLockPoints()
Returns the number of edit locked control points.
int GetNumMeasures() const
Returns the total number of measures for all control points in the network.
QString Description() const
Return the description of the network.
void pointIgnored(ControlPoint *point)
Update the ControlNet's internal structure when a ControlPoint is ignored.
ControlNet(SurfacePoint::CoordinateType=SurfacePoint::Latitudinal)
Creates an empty ControlNet object.
QString GraphToString() const
Used for verifying graph intergrity.
void AddPoint(ControlPoint *point)
Adds a ControlPoint to the ControlNet.
QList< QList< QString > > GetSerialConnections() const
This method searches through all the cube serial numbers in the network.
QString GetLastModified() const
Return the last modified date.
double GetMaximumResidual()
Determine the maximum error of all points in the network.
QList< QString > getAdjacentImages(QString serialNumber) const
Get all images connected to a given image by common control points.
ControlNet & operator=(const ControlNet &other)
Assign other to this.
boost::adjacency_list< boost::setS, boost::listS, boost::undirectedS, Image, Connection > Network
Defines the graph type as an undirected graph that uses Images for verticies, and Connections for edg...
void ReadControl(const QString &filename, Progress *progress=0)
Reads in the control points from the given file.
void SetDescription(const QString &newDescription)
Set the description of the network.
SurfacePoint::CoordinateType m_coordType
The coordinate type of the control points.
int GetNumPoints() const
Return the number of control points in the network.
QString p_targetName
Name of the target.
QString p_description
Textual Description of network.
QMap< QString, int > p_cameraRejectedMeasuresMap
A map from serialnumber to #rejected measures.
QStringList * pointIds
The ControlNet graph.
QString p_modified
Date Last Modified.
void ComputeApriori()
Compute aprior values for each point in the network.
SurfacePoint::CoordinateType GetCoordType()
Get the control point coordinate type (see the available types in SurfacePoint.h).
QString CreatedDate() const
Return the Created Date.
void emitPointModified(ControlPoint *point, ControlPoint::ModType type, QVariant oldValue, QVariant newValue)
This method is a wrapper to emit the pointModified() signal and is called whenever a change is made t...
void DecrementNumberOfRejectedMeasuresInImage(const QString &serialNumber)
Decrement number of jigsaw rejected measures in image specified by serialNumber.
QList< ControlMeasure * > sortedMeasureList(double(ControlMeasure::*statFunc)() const, double min, double max)
Get a sorted list of all the measures that have values in a given ragen.
void measureUnIgnored(ControlMeasure *measure)
Updates the connections for the ControlNet graph associated with the measure's serial number to refle...
QHash< QString, ControlPoint * > * points
hash ControlPoints by ControlPoint Id
void SetImages(const QString &imageListFile)
Creates the ControlNet's image cameras based on an input file.
QString GetUserName() const
Return the user name.
QMap< QString, int > p_cameraValidMeasuresMap
A map from serialnumber to #measures.
int GetNumberOfValidMeasuresInImage(const QString &serialNumber)
Return the number of measures in image specified by serialNumber.
Network m_controlGraph
The serial number -> vertex hash used by the graph.
int GetNumberOfJigsawRejectedMeasuresInImage(const QString &serialNumber)
Return the number of jigsaw rejected measures in image specified by serialNumber.
void Write(const QString &filename, bool pvl=false)
Writes out the control network.
void SetCoordType(SurfacePoint::CoordinateType coordType)
Sets the control point coordinate type.
void emitNetworkStructureModified()
This method is a wrapper to emit the networkStructureModified() signal.
int GetNumValidMeasures()
Return the number of valid (non-ignored) measures for all control points in the network.
std::map< ImageVertex, size_t > VertexIndexMap
Represents the edges of the graph.
int GetNumValidPoints()
Returns the number of non-ignored control points.
Network::edge_descriptor ImageConnection
Reprents the verticies of the graph.
void pointAdded(ControlPoint *point)
Adds a whole point to the control net graph.
void measureAdded(ControlMeasure *measure)
Updates the ControlNet graph for the measure's serial number to reflect the addition.
QVector< Isis::Camera * > p_cameraList
Vector of image number to camera.
QList< QString > GetPointIds() const
Return QList of ControlPoint Ids used in hash, in order of addition.
int GetNumIgnoredMeasures()
Return the total number of ignored measures for all control points in the network.
ControlPoint * FindClosest(QString serialNumber, double sample, double line)
Finds and returns a pointer to the closest ControlPoint to the ControlMeasure with the given serial n...
void SetCreatedDate(const QString &date)
Set the creation time.
QString GetTarget() const
Return the target name.
double AverageResidual()
Compute the average error of all points in the network.
QMap< QString, Isis::Camera * > p_cameraMap
A map from serialnumber to camera.
bool ContainsPoint(QString pointId) const
void clear()
Clear the contents of this object.
ModType
Control Point Modification Types.
QString p_created
Creation Date.
boost::associative_property_map< VertexIndexMap > VertexIndexMapAdaptor
Converts VertexIndexMap into the appropriate form to be used by boost.
~ControlNet()
Destructor removes allocated memory.
Isis::Camera * Camera(int index)
Returns the camera list from the given image number.
bool m_ownPoints
Specifies ownership of point list. True if owned by this object.
QList< ControlMeasure * > GetMeasuresInCube(QString serialNumber)
Get all the measures pertaining to a given cube serial number.
void SetUserName(const QString &name)
Set the user name of the control network.
QString p_networkId
The Network Id.
QList< ControlPoint * > GetPoints()
Return QList of all the ControlPoints in the network.
void ClearJigsawRejected()
Sets jigsaw rejected flag to false for all points and measures.
void SetMutex(QMutex *mutex)
Set mutex to lock for making Naif calls.
void UpdatePointReference(ControlPoint *point, QString oldId)
Updates the key reference (poind Id) from the old one to what the point id was changet to.
void measureDeleted(ControlMeasure *measure)
Updates the node for this measure's serial number to reflect the deletion.
boost::graph_traits< Network >::adjacency_iterator AdjacencyIterator
Iterates over adjacent verticies.
void emitMeasureModified(ControlMeasure *measure, ControlMeasure::ModType type, QVariant oldValue, QVariant newValue)
This method is a wrapper to emit the measureModified() signal and is called whenever a change is made...
void ComputeResiduals()
Compute error for each point in the network.
bool removeEdge(QString sourceSerial, QString targetSerial)
In the ControlNet graph, decrements the strength on the edge between the two serial numbers.
int DeletePoint(ControlPoint *point)
Delete a ControlPoint from the network by the point's address.
void pointUnIgnored(ControlPoint *point)
Update the ControlNet's internal structure when a ControlPoint is un-ignored.
void swap(ControlNet &other)
Swaps the member data with the given control net.
bool addEdge(QString sourceSerial, QString targetSerial)
In the ControlNet graph: adds an edge between the verticies associated with the two serial numbers pr...
QList< QString > GetCubeSerials() const
Use this method to get a complete list of all the cube serial numbers in the network.
void SetNetworkId(const QString &id)
Set the network id.
QString p_userName
The user who created the network.
void SetModifiedDate(const QString &date)
Set the last modified date.
QList< ControlMeasure * > GetValidMeasuresInCube(QString serialNumber)
Get all the valid measures pertaining to a given cube serial number.
void IncrementNumberOfRejectedMeasuresInImage(const QString &serialNumber)
Increment number of jigsaw rejected measures in image specified by serialNumber.
int GetNumEditLockMeasures()
Return the total number of edit locked measures for all control points in the network.
void SetTarget(const QString &target)
Sets the target name and target radii, if available.
void measureIgnored(ControlMeasure *measure)
Updates the edges in the ControlNet graph to reflect the ignored measure.
QList< ControlPoint * > take()
Transfer ownership of all points to caller.
bool ValidateSerialNumber(QString serialNumber) const
Does a check to ensure that the given serial number is contained within the network.
ModType
Control Point Modification Types.
Program progress reporter.
Container for cube-like labels.
Serial Number list generator.
CoordinateType
Defines the coordinate typ, units, and coordinate index for some of the output methods.
@ Latitudinal
Planetocentric latitudinal (lat/lon/rad) coordinates.
This is free and unencumbered software released into the public domain.
This is free and unencumbered software released into the public domain.
This is free and unencumbered software released into the public domain.
This is free and unencumbered software released into the public domain.
QSharedPointer< ControlNet > ControlNetQsp
Typedef for QSharedPointer to control network. This typedef is for future implementation of target bo...
Used to define the edges of the graph.
Used to define the verticies of the graph.
QHash< ControlPoint *, ControlMeasure * > measures
The serial number associated with the image The measures on the image, hashed by pointers to their pa...
This is free and unencumbered software released into the public domain.