\hypertarget{oputils_8hpp_source}{}\doxysection{oputils.\+hpp}
\label{oputils_8hpp_source}\index{src/iso19111/operation/oputils.hpp@{src/iso19111/operation/oputils.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/******************************************************************************}}
\DoxyCodeLine{2 \textcolor{comment}{ *}}
\DoxyCodeLine{3 \textcolor{comment}{ * Project:  PROJ}}
\DoxyCodeLine{4 \textcolor{comment}{ * Purpose:  ISO19111:2019 implementation}}
\DoxyCodeLine{5 \textcolor{comment}{ * Author:   Even Rouault <even dot rouault at spatialys dot com>}}
\DoxyCodeLine{6 \textcolor{comment}{ *}}
\DoxyCodeLine{7 \textcolor{comment}{ ******************************************************************************}}
\DoxyCodeLine{8 \textcolor{comment}{ * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot com>}}
\DoxyCodeLine{9 \textcolor{comment}{ *}}
\DoxyCodeLine{10 \textcolor{comment}{ * Permission is hereby granted, free of charge, to any person obtaining a}}
\DoxyCodeLine{11 \textcolor{comment}{ * copy of this software and associated documentation files (the "{}Software"{}),}}
\DoxyCodeLine{12 \textcolor{comment}{ * to deal in the Software without restriction, including without limitation}}
\DoxyCodeLine{13 \textcolor{comment}{ * the rights to use, copy, modify, merge, publish, distribute, sublicense,}}
\DoxyCodeLine{14 \textcolor{comment}{ * and/or sell copies of the Software, and to permit persons to whom the}}
\DoxyCodeLine{15 \textcolor{comment}{ * Software is furnished to do so, subject to the following conditions:}}
\DoxyCodeLine{16 \textcolor{comment}{ *}}
\DoxyCodeLine{17 \textcolor{comment}{ * The above copyright notice and this permission notice shall be included}}
\DoxyCodeLine{18 \textcolor{comment}{ * in all copies or substantial portions of the Software.}}
\DoxyCodeLine{19 \textcolor{comment}{ *}}
\DoxyCodeLine{20 \textcolor{comment}{ * THE SOFTWARE IS PROVIDED "{}AS IS"{}, WITHOUT WARRANTY OF ANY KIND, EXPRESS}}
\DoxyCodeLine{21 \textcolor{comment}{ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,}}
\DoxyCodeLine{22 \textcolor{comment}{ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL}}
\DoxyCodeLine{23 \textcolor{comment}{ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER}}
\DoxyCodeLine{24 \textcolor{comment}{ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING}}
\DoxyCodeLine{25 \textcolor{comment}{ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER}}
\DoxyCodeLine{26 \textcolor{comment}{ * DEALINGS IN THE SOFTWARE.}}
\DoxyCodeLine{27 \textcolor{comment}{ ****************************************************************************/}}
\DoxyCodeLine{28 }
\DoxyCodeLine{29 \textcolor{preprocessor}{\#ifndef OPUTILS\_HPP}}
\DoxyCodeLine{30 \textcolor{preprocessor}{\#define OPUTILS\_HPP}}
\DoxyCodeLine{31 }
\DoxyCodeLine{32 \textcolor{preprocessor}{\#include "{}proj/coordinateoperation.hpp"{}}}
\DoxyCodeLine{33 \textcolor{preprocessor}{\#include "{}proj/io.hpp"{}}}
\DoxyCodeLine{34 \textcolor{preprocessor}{\#include "{}proj/metadata.hpp"{}}}
\DoxyCodeLine{35 \textcolor{preprocessor}{\#include "{}proj/util.hpp"{}}}
\DoxyCodeLine{36 }
\DoxyCodeLine{37 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{38 }
\DoxyCodeLine{39 NS\_PROJ\_START}
\DoxyCodeLine{40 \textcolor{keyword}{namespace }operation \{}
\DoxyCodeLine{41 }
\DoxyCodeLine{42 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{43 }
\DoxyCodeLine{45 }
\DoxyCodeLine{46 \textcolor{keyword}{extern} \textcolor{keyword}{const} common::Measure nullMeasure;}
\DoxyCodeLine{47 }
\DoxyCodeLine{48 \textcolor{keyword}{extern} \textcolor{keyword}{const} std::string INVERSE\_OF;}
\DoxyCodeLine{49 }
\DoxyCodeLine{50 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *BALLPARK\_GEOCENTRIC\_TRANSLATION;}
\DoxyCodeLine{51 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *NULL\_GEOGRAPHIC\_OFFSET;}
\DoxyCodeLine{52 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *NULL\_GEOCENTRIC\_TRANSLATION;}
\DoxyCodeLine{53 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *BALLPARK\_GEOGRAPHIC\_OFFSET;}
\DoxyCodeLine{54 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *BALLPARK\_VERTICAL\_TRANSFORMATION;}
\DoxyCodeLine{55 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *BALLPARK\_VERTICAL\_TRANSFORMATION\_NO\_ELLIPSOID\_VERT\_HEIGHT;}
\DoxyCodeLine{56 }
\DoxyCodeLine{57 \textcolor{keyword}{extern} \textcolor{keyword}{const} std::string AXIS\_ORDER\_CHANGE\_2D\_NAME;}
\DoxyCodeLine{58 \textcolor{keyword}{extern} \textcolor{keyword}{const} std::string AXIS\_ORDER\_CHANGE\_3D\_NAME;}
\DoxyCodeLine{59 }
\DoxyCodeLine{60 \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1operation_a18a1147d5ec27ef63139b04b864159a4}{OperationParameterNNPtr}} createOpParamNameEPSGCode(\textcolor{keywordtype}{int} code);}
\DoxyCodeLine{61 }
\DoxyCodeLine{62 util::PropertyMap createMethodMapNameEPSGCode(\textcolor{keywordtype}{int} code);}
\DoxyCodeLine{63 }
\DoxyCodeLine{64 util::PropertyMap createMapNameEPSGCode(\textcolor{keyword}{const} std::string \&name, \textcolor{keywordtype}{int} code);}
\DoxyCodeLine{65 }
\DoxyCodeLine{66 util::PropertyMap createMapNameEPSGCode(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *name, \textcolor{keywordtype}{int} code);}
\DoxyCodeLine{67 }
\DoxyCodeLine{68 util::PropertyMap \&addDomains(util::PropertyMap \&map,}
\DoxyCodeLine{69                               \textcolor{keyword}{const} common::ObjectUsage *obj);}
\DoxyCodeLine{70 }
\DoxyCodeLine{71 std::string buildOpName(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *opType, \textcolor{keyword}{const} crs::CRSPtr \&source,}
\DoxyCodeLine{72                         \textcolor{keyword}{const} crs::CRSPtr \&target);}
\DoxyCodeLine{73 }
\DoxyCodeLine{74 \textcolor{keywordtype}{void} addModifiedIdentifier(util::PropertyMap \&map,}
\DoxyCodeLine{75                            \textcolor{keyword}{const} common::IdentifiedObject *obj, \textcolor{keywordtype}{bool} inverse,}
\DoxyCodeLine{76                            \textcolor{keywordtype}{bool} derivedFrom);}
\DoxyCodeLine{77 util::PropertyMap}
\DoxyCodeLine{78 createPropertiesForInverse(\textcolor{keyword}{const} OperationMethodNNPtr \&method);}
\DoxyCodeLine{79 }
\DoxyCodeLine{80 util::PropertyMap createPropertiesForInverse(\textcolor{keyword}{const} CoordinateOperation *op,}
\DoxyCodeLine{81                                              \textcolor{keywordtype}{bool} derivedFrom,}
\DoxyCodeLine{82                                              \textcolor{keywordtype}{bool} approximateInversion);}
\DoxyCodeLine{83 }
\DoxyCodeLine{84 util::PropertyMap addDefaultNameIfNeeded(\textcolor{keyword}{const} util::PropertyMap \&properties,}
\DoxyCodeLine{85                                          \textcolor{keyword}{const} std::string \&defaultName);}
\DoxyCodeLine{86 }
\DoxyCodeLine{87 \textcolor{keywordtype}{bool} areEquivalentParameters(\textcolor{keyword}{const} std::string \&a, \textcolor{keyword}{const} std::string \&b);}
\DoxyCodeLine{88 }
\DoxyCodeLine{89 \textcolor{keywordtype}{bool} isTimeDependent(\textcolor{keyword}{const} std::string \&methodName);}
\DoxyCodeLine{90 }
\DoxyCodeLine{91 std::string computeConcatenatedName(}
\DoxyCodeLine{92     \textcolor{keyword}{const} std::vector<CoordinateOperationNNPtr> \&flattenOps);}
\DoxyCodeLine{93 }
\DoxyCodeLine{94 metadata::ExtentPtr getExtent(\textcolor{keyword}{const} std::vector<CoordinateOperationNNPtr> \&ops,}
\DoxyCodeLine{95                               \textcolor{keywordtype}{bool} conversionExtentIsWorld,}
\DoxyCodeLine{96                               \textcolor{keywordtype}{bool} \&emptyIntersection);}
\DoxyCodeLine{97 }
\DoxyCodeLine{98 metadata::ExtentPtr getExtent(\textcolor{keyword}{const} CoordinateOperationNNPtr \&op,}
\DoxyCodeLine{99                               \textcolor{keywordtype}{bool} conversionExtentIsWorld,}
\DoxyCodeLine{100                               \textcolor{keywordtype}{bool} \&emptyIntersection);}
\DoxyCodeLine{101 }
\DoxyCodeLine{102 \textcolor{keyword}{const} metadata::ExtentPtr \&getExtent(\textcolor{keyword}{const} crs::CRSNNPtr \&crs);}
\DoxyCodeLine{103 }
\DoxyCodeLine{104 \textcolor{keyword}{const} metadata::ExtentPtr getExtentPossiblySynthetized(\textcolor{keyword}{const} crs::CRSNNPtr \&crs,}
\DoxyCodeLine{105                                                        \textcolor{keywordtype}{bool} \&approxOut);}
\DoxyCodeLine{106 }
\DoxyCodeLine{107 \textcolor{keywordtype}{double} getAccuracy(\textcolor{keyword}{const} CoordinateOperationNNPtr \&op);}
\DoxyCodeLine{108 }
\DoxyCodeLine{109 \textcolor{keywordtype}{double} getAccuracy(\textcolor{keyword}{const} std::vector<CoordinateOperationNNPtr> \&ops);}
\DoxyCodeLine{110 }
\DoxyCodeLine{111 \textcolor{keywordtype}{void} exportSourceCRSAndTargetCRSToWKT(\textcolor{keyword}{const} CoordinateOperation *co,}
\DoxyCodeLine{112                                       io::WKTFormatter *formatter);}
\DoxyCodeLine{113 }
\DoxyCodeLine{115 }
\DoxyCodeLine{116 \textcolor{comment}{// -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/}}
\DoxyCodeLine{117 }
\DoxyCodeLine{118 \} \textcolor{comment}{// namespace operation}}
\DoxyCodeLine{119 NS\_PROJ\_END}
\DoxyCodeLine{120 }
\DoxyCodeLine{121 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// OPUTILS\_HPP}}

\end{DoxyCode}
