From 8a56e5915cde029b2bd95544186b037c43645ed5 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Fri, 27 Sep 2024 14:37:43 +0200 Subject: [PATCH 01/16] feat: add output projection in tools to convert the format --- borea/datastruct/shot.py | 6 +++++ borea/datastruct/workdata.py | 21 +++++++++------ borea/format/conl.py | 6 +---- borea/format/rpc.py | 9 +++---- borea/geodesy/proj_engine.py | 17 ++++--------- borea/geodesy/transform_geodesy.py | 34 ++++++++++++++----------- borea/process/p_add_data/p_gen_param.py | 3 +++ borea/process/p_format/p_write_rpc.py | 6 +---- borea/worksite/worksite.py | 17 ++++++++----- borea/writer/writer_con.py | 9 ++++++- borea/writer/writer_opk.py | 2 +- borea/writer/writer_rpc.py | 4 ++- test/test_datastruct/test_shot.py | 10 ++++++++ test/test_geodesy/test_projengine.py | 22 +++++----------- test/test_worksite/test_worksite.py | 23 ++++++++++++----- test/test_writer/test_writer_rpc.py | 4 +-- 16 files changed, 110 insertions(+), 83 deletions(-) diff --git a/borea/datastruct/shot.py b/borea/datastruct/shot.py index cf3921f2..eddfa8b7 100644 --- a/borea/datastruct/shot.py +++ b/borea/datastruct/shot.py @@ -185,6 +185,12 @@ def set_order_axe(self, order_axe: str) -> None: self.ori_shot = -(R.from_euler("x", np.pi) * R.from_matrix(self.mat_rot)).as_euler(order_xyz, degrees=unitori) + def set_proj_pos(self) -> None: + """ + Change the projection of the position shot with the epsg_output. + """ + self.pos_shot = np.array(ProjEngine().tf.proj_to_proj_out(*self.pos_shot)) + def get_z_remove_scale_factor(self) -> float: """ Return Z after removing the scale factor. The Z of the object is NOT modified. diff --git a/borea/datastruct/workdata.py b/borea/datastruct/workdata.py index 04fe1eba..0f073278 100644 --- a/borea/datastruct/workdata.py +++ b/borea/datastruct/workdata.py @@ -33,6 +33,7 @@ def __init__(self, name: str) -> None: self.type_z_data = None self.type_z_shot = None self.approxeucli = False + self.epsg_output = False # pylint: disable-next=too-many-arguments too-many-positional-arguments def add_shot(self, name_shot: str, pos_shot: np.ndarray, @@ -59,24 +60,28 @@ def add_shot(self, name_shot: str, pos_shot: np.ndarray, linear_alteration=linear_alteration, order_axe=order_axe) - def set_proj(self, epsg: list, path_geoid: list = None) -> None: + def set_proj(self, epsg: list, path_geoid: list = None, epsg_output: int = None) -> None: """ Setup a projection system to the worksite. Args: - epsg (list): Code epsg of the porjection ex: 2154. + epsg (list): Code epsg of the projection ex: [2154]. path_geoid (str): List of GeoTIFF which represents the geoid in grid form. + epsg_output (int): Code epsg of the output projection. If you want to change. """ ProjEngine.clear() - try: # Check if the epsg exist - for idepsg in epsg: - if idepsg: + for idepsg in [*epsg, epsg_output]: + if idepsg: + try: # Check if the epsg exist _ = CRS.from_epsg(idepsg) del _ - except exceptions.CRSError as e_info: - raise exceptions.CRSError(f"Your EPSG:{epsg} doesn't exist in pyproj.") from e_info + except exceptions.CRSError as e_info: + raise exceptions.CRSError(f"Your EPSG:{epsg}" + " doesn't exist in pyproj.") from e_info + if epsg_output: + self.epsg_output = True - ProjEngine().set_epsg(epsg, path_geoid) + ProjEngine().set_epsg(epsg, path_geoid, epsg_output) # pylint: disable-next=too-many-arguments too-many-positional-arguments def add_camera(self, name_camera: str, ppax: float, ppay: float, diff --git a/borea/format/conl.py b/borea/format/conl.py index 2ef23715..1c535e03 100644 --- a/borea/format/conl.py +++ b/borea/format/conl.py @@ -33,19 +33,15 @@ class Conl: cam: Camera proj: str - def save_conl(self, path_conical: Path, linalt: bool = True) -> None: + def save_conl(self, path_conical: Path) -> None: """ Save the shot as light conical file. Args: path_conical (Path): path to the light conical file. - linalt (bool): If you want z shot corrected by linear alteration. """ date_now = datetime.now() - # Scale factor correction - self.shot.set_linear_alteration(linalt) - # creation XML ori = ET.Element("orientation", {}) ET.SubElement(ori, "lastmodificationbylibori", diff --git a/borea/format/rpc.py b/borea/format/rpc.py index 7c3c21ba..28acf1cc 100644 --- a/borea/format/rpc.py +++ b/borea/format/rpc.py @@ -22,7 +22,7 @@ class Rpc: def __init__(self) -> None: self.param_rpc = {} self.fact_rpc = None - self.output_epsg = None + self.output_epsg = False @classmethod def from_shot(cls, shot: Shot, cam: Camera, param_rpc: dict, unit_data: dict) -> None: @@ -110,10 +110,9 @@ def normalize_data(self, grid_img: np.ndarray, grid_world: np.ndarray) -> tuple: """ if self.fact_rpc is None: if self.output_epsg: - ProjEngine().set_epsg_tf_geog_output(self.output_epsg) - x_geog, y_geog, z_geog = ProjEngine().tf.carto_to_geog_out(grid_world[0], - grid_world[1], - grid_world[2]) + x_geog, y_geog, z_geog = ProjEngine().tf.proj_to_proj_out(grid_world[0], + grid_world[1], + grid_world[2]) else: x_geog, y_geog, z_geog = ProjEngine().tf.carto_to_geog(grid_world[0], grid_world[1], diff --git a/borea/geodesy/proj_engine.py b/borea/geodesy/proj_engine.py index 197f23a6..42254663 100644 --- a/borea/geodesy/proj_engine.py +++ b/borea/geodesy/proj_engine.py @@ -23,30 +23,23 @@ def __post_init__(self) -> None: if self.epsg: self.crs = pyproj.CRS.from_epsg(self.epsg[0]) self.proj = pyproj.Proj(self.crs) - self.tf = TransformGeodesy(self.epsg, self.geoid) + self.tf = TransformGeodesy(self.epsg, self.geoid, self.epsg_output) - def set_epsg(self, epsg: list, geoid: list = None) -> None: + def set_epsg(self, epsg: list, geoid: list = None, epsg_output: int = None) -> None: """ Setter of the class ProjEngine. Allows to init the class with data. Args: - epsg (list): Code epsg of the projection ex: 2154. + epsg (list): Code epsg of the projection ex: [2154]. geoid (list): List of geoid to use. + epsg_output (int): Code epsg of the output projection. If you want to change. """ self.epsg = epsg self.geoid = geoid + self.epsg_output = epsg_output self.__post_init__() - def set_epsg_tf_geog_output(self, epsg_output: int) -> None: - """ - Create the pyproj Transformer from crs of worksite to crs geographic ask. - - Args: - epsg_out (int): Code epsg of the output crs. - """ - self.tf.tf_output(epsg_output) - def get_meridian_convergence(self, x_carto: Union[np.ndarray, List[float], float], y_carto: Union[np.ndarray, List[float], float]) -> np.ndarray: """ diff --git a/borea/geodesy/transform_geodesy.py b/borea/geodesy/transform_geodesy.py index 3ac9e2d5..d776aa66 100644 --- a/borea/geodesy/transform_geodesy.py +++ b/borea/geodesy/transform_geodesy.py @@ -14,10 +14,12 @@ class TransformGeodesy(): Args: geoid (list): List of geoid to use. - crs (pyproj): CRS pyproj of the worksite. + epsg (list): Code epsg of the projection ex: [2154]. + epsg_output (int): Code epsg of the output projection. If you want to change. """ - def __init__(self, epsg: list, geoid: list) -> None: + def __init__(self, epsg: list, geoid: list, epsg_output: int) -> None: self.epsg = epsg + self.epsg_output = epsg_output self.crs = pyproj.CRS.from_epsg(epsg[0]) self.geoid = geoid self._carto_to_geoc = None @@ -26,7 +28,7 @@ def __init__(self, epsg: list, geoid: list) -> None: self._geog_to_carto = None self._geog_to_geoid = None self._geoid_to_geog = None - self.carto_to_geog_out = None + self._proj_to_proj_out = None @property def carto_to_geog(self) -> pyproj.Transformer: @@ -150,6 +152,20 @@ def geog_to_geoid(self) -> pyproj.Transformer: return self._geog_to_geoid + @property + def proj_to_proj_out(self) -> pyproj.Transformer: + """ + Create the pyproj Transformer from crs of worksite to crs geographic ask. + + Returns: + pyproj.Transformer : carto_to_geog_out + """ + if not self._proj_to_proj_out: + crs_out = pyproj.CRS.from_epsg(self.epsg_output) + self._proj_to_proj_out = pyproj.Transformer.from_crs(self.crs, crs_out).transform + + return self._proj_to_proj_out + def tranform_height(self, coor: np.ndarray) -> float: """ Converting z in altitude to z in height of point. @@ -201,15 +217,3 @@ def tranform_altitude(self, coor: np.ndarray) -> float: if np.all(new_z == np.inf): raise ValueError("out geoid") return new_z - - def tf_output(self, epsg_out: int = None) -> None: - """ - Create the pyproj Transformer from crs of worksite to crs geographic ask. - - Args: - epsg_out (int): Code epsg of the output crs. - """ - if epsg_out and epsg_out != self.epsg[0]: - crs_out = pyproj.CRS.from_epsg(epsg_out) - crs_geog_out = pyproj.crs.GeographicCRS(name=crs_out.name, datum=crs_out.datum.name) - self.carto_to_geog_out = pyproj.Transformer.from_crs(self.crs, crs_geog_out).transform diff --git a/borea/process/p_add_data/p_gen_param.py b/borea/process/p_add_data/p_gen_param.py index 395578cc..facb9820 100644 --- a/borea/process/p_add_data/p_gen_param.py +++ b/borea/process/p_add_data/p_gen_param.py @@ -43,6 +43,9 @@ def args_general_param(parser: argparse) -> argparse: parser.add_argument('--geoc', '--epsg_geocentric', type=int, default=None, help='EPSG codifier number of the reference geocentric system.') + parser.add_argument('-g', '--epsg_output', + type=int, default=None, + help="Code epsg of output Data") return parser diff --git a/borea/process/p_format/p_write_rpc.py b/borea/process/p_format/p_write_rpc.py index 87624b59..574ffa3a 100644 --- a/borea/process/p_format/p_write_rpc.py +++ b/borea/process/p_format/p_write_rpc.py @@ -28,9 +28,6 @@ def args_writing_rpc(parser: argparse) -> argparse: parser.add_argument('-l', '--fact_rpc', type=float, default=None, help="Factor Rpc for pyproj convertion.") - parser.add_argument('-g', '--epsg_output', - type=int, default=None, - help="Code epsg of RPC") return parser @@ -46,7 +43,6 @@ def process_args_write_rpc(args: argparse, work: Worksite) -> None: print("Writing Rpc.") args_writing = {"order": args.order, "size_grid": args.size_grid, - "fact_rpc": args.fact_rpc, - "epsg_output": args.epsg_output} + "fact_rpc": args.fact_rpc} manager_writer("rpc", None, args.pathreturn, args_writing, work) print(f"File written in folder {args.pathreturn} .txt.") diff --git a/borea/worksite/worksite.py b/borea/worksite/worksite.py index aeae2057..337461a5 100644 --- a/borea/worksite/worksite.py +++ b/borea/worksite/worksite.py @@ -173,8 +173,10 @@ def set_param_shot(self, approx=False) -> None: self.type_z_shot, False)[2] shot.set_z_nadir(z_nadir) - def set_unit_shot(self, type_z: str = None, unit_angle: str = None, - linear_alteration: bool = None, order_axe: str = None) -> None: + # pylint: disable-next=too-many-arguments too-many-positional-arguments + def set_unit_output(self, type_z: str = None, unit_angle: str = None, + linear_alteration: bool = None, order_axe: str = None, + proj_output: bool = True) -> None: """ Allows you to change unit or parameter of shots. @@ -183,6 +185,7 @@ def set_unit_shot(self, type_z: str = None, unit_angle: str = None, unit_angle (str): Unit angle you want. linear_alteration (bool): True if you want data corrected. order_axe (str): Order of rotation matrice you want in your angle. + proj_output (bool): True to change the projection of shot. """ if unit_angle not in ["degree", "radian", None]: raise ValueError(f"unit_angle: {unit_angle} is not recognized," @@ -198,14 +201,16 @@ def set_unit_shot(self, type_z: str = None, unit_angle: str = None, self.type_z_shot = type_z for shot in self.shots.values(): - if unit_angle is not None: + if unit_angle: shot.set_unit_angle(unit_angle) - if type_z is not None: + if type_z: shot.set_type_z(type_z) - if linear_alteration is not None: + if linear_alteration: shot.set_linear_alteration(linear_alteration) - if order_axe is not None: + if order_axe: shot.set_order_axe(order_axe) + if self.epsg_output and proj_output: + shot.set_proj_pos() def calculate_barycentre(self) -> np.ndarray: """ diff --git a/borea/writer/writer_con.py b/borea/writer/writer_con.py index 863bc592..be6ad2de 100644 --- a/borea/writer/writer_con.py +++ b/borea/writer/writer_con.py @@ -20,7 +20,14 @@ def write(name: str, folder_con: str, param_con: dict, work: Worksite) -> None: work (Worksite): The site to be recorded. """ _, _ = name, param_con - geoview_proj = search_info("EPSG", str(ProjEngine().epsg[0]), "GEOVIEW") + + if work.epsg_output: + epsg_output = ProjEngine().epsg_output + else: + epsg_output = ProjEngine().epsg[0] + + work.set_unit_output(type_z="altitude", linear_alteration=True) + geoview_proj = search_info("EPSG", str(epsg_output), "GEOVIEW") for name_shot, shot in work.shots.items(): cam = work.cameras[shot.name_cam] diff --git a/borea/writer/writer_opk.py b/borea/writer/writer_opk.py index a7a5b93a..553a4021 100644 --- a/borea/writer/writer_opk.py +++ b/borea/writer/writer_opk.py @@ -35,7 +35,7 @@ def write(name_opk: str, path_opk: str, args: dict, work: Worksite) -> None: if "S" in header: raise ValueError("Letter S doesn't existe in writing header opk.") - work.set_unit_shot(type_z, args["unit_angle"], args["linear_alteration"], args["order_axe"]) + work.set_unit_output(type_z, args["unit_angle"], args["linear_alteration"], args["order_axe"]) header_file = "" for i in header: diff --git a/borea/writer/writer_rpc.py b/borea/writer/writer_rpc.py index 56765949..24e4daba 100644 --- a/borea/writer/writer_rpc.py +++ b/borea/writer/writer_rpc.py @@ -29,7 +29,9 @@ def write(name: str, folder_rpc: str, param_rpc: dict, work: Worksite) -> None: "SAMP_SCALE", "LAT_SCALE", "LONG_SCALE", "HEIGHT_SCALE"] - work.set_unit_shot(type_z=Dtm().type_dtm) + param_rpc["epsg_output"] = work.epsg_output + + work.set_unit_output(type_z=Dtm().type_dtm, proj_output=False) for name_shot, shot in work.shots.items(): cam = work.cameras[shot.name_cam] diff --git a/test/test_datastruct/test_shot.py b/test/test_datastruct/test_shot.py index fa6fb47b..451b8758 100644 --- a/test/test_datastruct/test_shot.py +++ b/test/test_datastruct/test_shot.py @@ -166,3 +166,13 @@ def test_set_order_axe(): shot = copy.copy(SHOT) shot.set_order_axe("pok") assert (shot.ori_shot != [-0.245070686036, -0.069409621323, 0.836320989726]).all() + + +def test_set_proj(): + setup_test() + shot = Shot("test_shot", np.array([657945.43, 6860369.44, 1771.280]), + np.array([-0.245070686036, -0.069409621323, 0.836320989726]), + "test_cam", 'degree', True, "opk") + ProjEngine().set_epsg(EPSG, LIST_GEOID, 4326) + shot.set_proj_pos() + assert (np.round(shot.pos_shot, 3) == [48.842, 2.427, 1771.280]).all() diff --git a/test/test_geodesy/test_projengine.py b/test/test_geodesy/test_projengine.py index 86bb63be..257e2e16 100644 --- a/test/test_geodesy/test_projengine.py +++ b/test/test_geodesy/test_projengine.py @@ -17,14 +17,6 @@ def setup_module(module): # run before the first test ProjEngine.clear() -def test_projengine_withpathgeotiff(): - ProjEngine.clear() - ProjEngine().set_epsg(EPSG, PATH_GEOID) - proj = ProjEngine() - assert proj.tf.geog_to_geoid - assert not proj.tf.carto_to_geog_out - - def test_projengine_notgeoid(): ProjEngine.clear() ProjEngine().set_epsg(EPSG) @@ -50,21 +42,19 @@ def test_get_meridian_convergence(): def test_tf_create_tf_output(): ProjEngine.clear() - ProjEngine().set_epsg(EPSG, PATH_GEOID) - ProjEngine().set_epsg_tf_geog_output(4326) + ProjEngine().set_epsg(EPSG, PATH_GEOID, 4326) proj = ProjEngine() - assert proj.tf.carto_to_geog_out + assert proj.tf.proj_to_proj_out def test_tf_conv_tf_output(): ProjEngine.clear() - ProjEngine().set_epsg(EPSG, PATH_GEOID) - ProjEngine().set_epsg_tf_geog_output(4326) + ProjEngine().set_epsg(EPSG, PATH_GEOID, 4326) proj = ProjEngine() xf = 657945.43 yf = 6860369.44 - xm = 2.427 - ym = 48.842 - xmo, ymo = proj.tf.carto_to_geog_out(xf, yf) + ym = 2.427 + xm = 48.842 + xmo, ymo = proj.tf.proj_to_proj_out(xf, yf) assert round(xmo, 3) == xm assert round(ymo, 3) == ym diff --git a/test/test_worksite/test_worksite.py b/test/test_worksite/test_worksite.py index aca7045c..b091ec8f 100644 --- a/test/test_worksite/test_worksite.py +++ b/test/test_worksite/test_worksite.py @@ -191,7 +191,7 @@ def test_set_param_shot_nodtm(): assert work.shots["shot1"].z_nadir is None -def test_set_unit_shot(): +def test_set_unit_output(): work = Worksite("Test") work.add_shot("shot1", np.array([814975.925, 6283986.148, 1771.280]), np.array([180, 0, 360]), "cam_test", "degree", True, 'opk') @@ -200,31 +200,42 @@ def test_set_unit_shot(): work.set_dtm(PATH_DTM, "height") work.type_z_shot = "altitude" work.set_param_shot(approx=False) - work.set_unit_shot("height", "radian", linear_alteration=False) + work.set_unit_output("height", "radian", linear_alteration=False) assert work.shots["shot1"].unit_angle == "radian" assert work.shots["shot1"].linear_alteration is False assert (work.shots["shot1"].ori_shot == np.array([np.pi, 0, 2*np.pi])).all() assert work.type_z_shot == "height" -def test_set_unit_shot_sameunit(): +def test_set_unit_output_sameunit(): work = Worksite("Test") work.add_shot("shot1", np.array([814975.925, 6283986.148, 1771.280]), np.array([180, 0, 360]), "cam_test", "degree", True, 'opk') work.add_camera('cam_test', 13210.00, 8502.00, 30975.00, 26460, 17004) work.type_z_shot = "altitude" - work.set_unit_shot("altitude", "degree", linear_alteration=True) + work.set_unit_output("altitude", "degree", linear_alteration=True) assert work.shots["shot1"].unit_angle == "degree" assert work.shots["shot1"].linear_alteration assert (work.shots["shot1"].ori_shot == np.array([180, 0, 360])).all() assert work.type_z_shot == "altitude" -def test_set_unit_shot_changeorder(): +def test_set_unit_output_changeorder(): work = Worksite("Test") work.add_shot("shot1", np.array([814975.925, 6283986.148, 1771.280]), np.array([180, 0, 360]), "cam_test", "degree", True, 'opk') work.add_camera('cam_test', 13210.00, 8502.00, 30975.00, 26460, 17004) work.type_z_shot = "altitude" - work.set_unit_shot(order_axe="pok") + work.set_unit_output(order_axe="pok") assert (work.shots["shot1"].ori_shot != np.array([180, 0, 360])).all() + + +def test_set_unit_output_changeproj(): + work = Worksite("Test") + work.add_shot("shot1", np.array([657945.43, 6860369.44, 1771.280]), + np.array([180, 0, 360]), "cam_test", "degree", True, 'opk') + work.add_camera('cam_test', 13210.00, 8502.00, 30975.00, 26460, 17004) + work.type_z_shot = "altitude" + work.set_proj(EPSGFR, LIST_GEOID, 4326) + work.set_unit_output() + assert (np.round(work.shots["shot1"].pos_shot, 3) == [48.842, 2.427, 1771.280]).all() diff --git a/test/test_writer/test_writer_rpc.py b/test/test_writer/test_writer_rpc.py index 38d0e44c..b21c4654 100644 --- a/test/test_writer/test_writer_rpc.py +++ b/test/test_writer/test_writer_rpc.py @@ -53,14 +53,14 @@ def test_write_rpc_4326(): work.add_shot("23FD1305x00026_01308", np.array([814978.586, 6283482.827, 1771.799]), np.array([-0.181570631296, 0.001583051432, 0.493526899473]), "cam_test", "degree", True, "opk") - work.set_proj(EPSG, PATH_GEOID) + work.set_proj(EPSG, PATH_GEOID, 4326) work.add_camera('cam_test', 13210.00, 8502.00, 30975.00, 26460, 17004) work.set_dtm(PATH_DTM, "height") work.type_z_shot = "altitude" work.type_z_data = "height" work.set_param_shot() write(None, OUTPUT, - {"size_grid": 100, "order": 3, "fact_rpc": None, "epsg_output": 4326}, work) + {"size_grid": 100, "order": 3, "fact_rpc": None}, work) assert os.path.exists("./test/tmp/23FD1305x00026_01306_RPC.TXT") assert os.path.exists("./test/tmp/23FD1305x00026_01307_RPC.TXT") assert os.path.exists("./test/tmp/23FD1305x00026_01308_RPC.TXT") From 2a4a3ccad749ea487e3c0034c1b0bc6a8c7aa4d7 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Fri, 27 Sep 2024 14:42:01 +0200 Subject: [PATCH 02/16] docs: update sphinx python doc --- .../_build/doctrees/borea.datastruct.doctree | Bin 187843 -> 191987 bytes .../_build/doctrees/borea.format.doctree | Bin 75635 -> 73692 bytes .../_build/doctrees/borea.geodesy.doctree | Bin 166991 -> 165959 bytes .../_build/doctrees/borea.worksite.doctree | Bin 60551 -> 62404 bytes .../sphinx/_build/doctrees/environment.pickle | Bin 482185 -> 482779 bytes .../html/_modules/borea/datastruct/shot.html | 9 +++++ .../_modules/borea/datastruct/workdata.html | 21 ++++++---- .../html/_modules/borea/format/conl.html | 6 +-- .../html/_modules/borea/format/rpc.html | 9 ++--- .../_modules/borea/geodesy/proj_engine.html | 20 +++------- .../borea/geodesy/transform_geodesy.html | 37 +++++++++--------- .../borea/process/p_add_data/p_gen_param.html | 3 ++ .../borea/process/p_format/p_write_rpc.html | 6 +-- .../_modules/borea/worksite/worksite.html | 23 ++++++----- .../_modules/borea/writer/writer_con.html | 9 ++++- .../_modules/borea/writer/writer_opk.html | 2 +- .../_modules/borea/writer/writer_rpc.html | 4 +- docs/sphinx/_build/html/borea.datastruct.html | 12 +++++- docs/sphinx/_build/html/borea.format.html | 7 +--- docs/sphinx/_build/html/borea.geodesy.html | 37 +++++++----------- docs/sphinx/_build/html/borea.html | 6 +-- docs/sphinx/_build/html/borea.worksite.html | 7 ++-- docs/sphinx/_build/html/genindex.html | 14 +++---- docs/sphinx/_build/html/objects.inv | Bin 3069 -> 3077 bytes docs/sphinx/_build/html/searchindex.js | 2 +- 25 files changed, 123 insertions(+), 111 deletions(-) diff --git a/docs/sphinx/_build/doctrees/borea.datastruct.doctree b/docs/sphinx/_build/doctrees/borea.datastruct.doctree index d70273838cdad384346e73246420c27aef564a36..01725df2efb865d10d0c81d1b322a680c9296bb7 100644 GIT binary patch delta 14387 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 E2U^^bRR910 delta 8925 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 diff --git a/docs/sphinx/_build/doctrees/borea.worksite.doctree b/docs/sphinx/_build/doctrees/borea.worksite.doctree index 57692e6e6fb5d01198a4c7621372d530648e6eee..11d139735efd9d23343b866a9323867a84186512 100644 GIT binary patch delta 1848 zcma)7Z%kWN6z{ujEu(WYcJI9oR(LRhR$!FXKTN^Q%7r@ z3bCwpxN!1W?g&&5^cI-xTAUW_;i8A=kG{cpf80y$vG@L)GFg7Q-VJTvI9uFz5hd#a zy!7`KNaw1ZX>}QE@5BxEd`0BpqX#_T-yske4}%|@H-u^)!>E_|q^o}(85&c`h zKvz!ZSS%|!*jTxZ%vfoSiK%)7HG1INGXWjxtRLw4H_7Li%TwTgYajOsQ&9-hP8*D0 zczd(^ZpRI?^?C5zMY`ua%TMXxn3-dvSWY@1o_(rXd?>ESY-21hy(g=Oz&3k|{ESk( z5bVFl>WS%1z-KoB%~w)9s1==L`S#{5PI8lni=IL#|L!Q+Am|X&UpPsw0NgN-Zep&H zY&AZ#J?SKp0M(ZtgfW-@{t|(Sw-JkFSg|w9@_>ngO&D{yU3YC&#W-uY^f0|6J-M2Tkr4gPS?z?lrl)k-MDK2oRJjTuNkZein!P%ppH> z*DqJ2OY=9~!9R9on0#jPA2axwo0zMD-NPPo*3>YWsbOku4J;NlFvm1-#~}H`<2Xr6 z7{5b8BsD;mO$j#)3Cv*$azy=Hu>5v0qXfC)nn%Fmke)fDzX7lRv=1j~`aiSj>*`ir zU&)IX%_mh>;`<{@nkseB_MVs6h|2miC3k3DYLBFLN_|w-;PCr=WyW2<{W@i=nKx;t zkqvfPt*CbybLmPqnW=^{Q*B;5RThh>GRIQgUCTDnE!0XqduhR5_IwDj(*Kpjwzw&f zVWlfoBd+e%(FPykuy#JYHKPs1u+!t>7%oss<{`mUD%0fbf!iOG((84U4G13qA+hG5qjZBHqyf}m|lyFc%tT}BdfK~X?X_OH4}Sy- zMvTy1Bl_kMed9=!7U3ryXFUzlN(KT4t~HWYH+*<)&V@kA6q*#87nu^Mwu(ea!T3^9 aPAi*JPwaWPC2WVkm#UcbWW^r`xqks?sd*p( delta 1158 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 W&uE93U%UTHlR_+|)%fASl>Y-e0tep! delta 21002 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 code for borea.datastruct.shot
                               R.from_matrix(self.mat_rot)).as_euler(order_xyz, degrees=unitori)
+
+[docs] + def set_proj_pos(self) -> None: + """ + Change the projection of the position shot with the epsg_output. + """ + self.pos_shot = np.array(ProjEngine().tf.proj_to_proj_out(*self.pos_shot))
+ +
[docs] def get_z_remove_scale_factor(self) -> float: diff --git a/docs/sphinx/_build/html/_modules/borea/datastruct/workdata.html b/docs/sphinx/_build/html/_modules/borea/datastruct/workdata.html index e6650659..d75de289 100644 --- a/docs/sphinx/_build/html/_modules/borea/datastruct/workdata.html +++ b/docs/sphinx/_build/html/_modules/borea/datastruct/workdata.html @@ -309,6 +309,7 @@

Source code for borea.datastruct.workdata

         self.type_z_data = None
         self.type_z_shot = None
         self.approxeucli = False
+        self.epsg_output = False
 
     # pylint: disable-next=too-many-arguments too-many-positional-arguments
 
@@ -340,24 +341,28 @@

Source code for borea.datastruct.workdata

 
 
[docs] - def set_proj(self, epsg: list, path_geoid: list = None) -> None: + def set_proj(self, epsg: list, path_geoid: list = None, epsg_output: int = None) -> None: """ Setup a projection system to the worksite. Args: - epsg (list): Code epsg of the porjection ex: 2154. + epsg (list): Code epsg of the projection ex: [2154]. path_geoid (str): List of GeoTIFF which represents the geoid in grid form. + epsg_output (int): Code epsg of the output projection. If you want to change. """ ProjEngine.clear() - try: # Check if the epsg exist - for idepsg in epsg: - if idepsg: + for idepsg in [*epsg, epsg_output]: + if idepsg: + try: # Check if the epsg exist _ = CRS.from_epsg(idepsg) del _ - except exceptions.CRSError as e_info: - raise exceptions.CRSError(f"Your EPSG:{epsg} doesn't exist in pyproj.") from e_info + except exceptions.CRSError as e_info: + raise exceptions.CRSError(f"Your EPSG:{epsg}" + " doesn't exist in pyproj.") from e_info + if epsg_output: + self.epsg_output = True - ProjEngine().set_epsg(epsg, path_geoid)
+ ProjEngine().set_epsg(epsg, path_geoid, epsg_output)
# pylint: disable-next=too-many-arguments too-many-positional-arguments diff --git a/docs/sphinx/_build/html/_modules/borea/format/conl.html b/docs/sphinx/_build/html/_modules/borea/format/conl.html index c061db6f..e0889df1 100644 --- a/docs/sphinx/_build/html/_modules/borea/format/conl.html +++ b/docs/sphinx/_build/html/_modules/borea/format/conl.html @@ -311,19 +311,15 @@

Source code for borea.format.conl

 
 
[docs] - def save_conl(self, path_conical: Path, linalt: bool = True) -> None: + def save_conl(self, path_conical: Path) -> None: """ Save the shot as light conical file. Args: path_conical (Path): path to the light conical file. - linalt (bool): If you want z shot corrected by linear alteration. """ date_now = datetime.now() - # Scale factor correction - self.shot.set_linear_alteration(linalt) - # creation XML ori = ET.Element("orientation", {}) ET.SubElement(ori, "lastmodificationbylibori", diff --git a/docs/sphinx/_build/html/_modules/borea/format/rpc.html b/docs/sphinx/_build/html/_modules/borea/format/rpc.html index 544c28c7..97b43319 100644 --- a/docs/sphinx/_build/html/_modules/borea/format/rpc.html +++ b/docs/sphinx/_build/html/_modules/borea/format/rpc.html @@ -298,7 +298,7 @@

Source code for borea.format.rpc

     def __init__(self) -> None:
         self.param_rpc = {}
         self.fact_rpc = None
-        self.output_epsg = None
+        self.output_epsg = False
 
 
[docs] @@ -394,10 +394,9 @@

Source code for borea.format.rpc

         """
         if self.fact_rpc is None:
             if self.output_epsg:
-                ProjEngine().set_epsg_tf_geog_output(self.output_epsg)
-                x_geog, y_geog, z_geog = ProjEngine().tf.carto_to_geog_out(grid_world[0],
-                                                                           grid_world[1],
-                                                                           grid_world[2])
+                x_geog, y_geog, z_geog = ProjEngine().tf.proj_to_proj_out(grid_world[0],
+                                                                          grid_world[1],
+                                                                          grid_world[2])
             else:
                 x_geog, y_geog, z_geog = ProjEngine().tf.carto_to_geog(grid_world[0],
                                                                        grid_world[1],
diff --git a/docs/sphinx/_build/html/_modules/borea/geodesy/proj_engine.html b/docs/sphinx/_build/html/_modules/borea/geodesy/proj_engine.html
index 441acde8..5855fbce 100644
--- a/docs/sphinx/_build/html/_modules/borea/geodesy/proj_engine.html
+++ b/docs/sphinx/_build/html/_modules/borea/geodesy/proj_engine.html
@@ -299,36 +299,26 @@ 

Source code for borea.geodesy.proj_engine

         if self.epsg:
             self.crs = pyproj.CRS.from_epsg(self.epsg[0])
             self.proj = pyproj.Proj(self.crs)
-            self.tf = TransformGeodesy(self.epsg, self.geoid)
+            self.tf = TransformGeodesy(self.epsg, self.geoid, self.epsg_output)
 
 
[docs] - def set_epsg(self, epsg: list, geoid: list = None) -> None: + def set_epsg(self, epsg: list, geoid: list = None, epsg_output: int = None) -> None: """ Setter of the class ProjEngine. Allows to init the class with data. Args: - epsg (list): Code epsg of the projection ex: 2154. + epsg (list): Code epsg of the projection ex: [2154]. geoid (list): List of geoid to use. + epsg_output (int): Code epsg of the output projection. If you want to change. """ self.epsg = epsg self.geoid = geoid + self.epsg_output = epsg_output self.__post_init__()
-
-[docs] - def set_epsg_tf_geog_output(self, epsg_output: int) -> None: - """ - Create the pyproj Transformer from crs of worksite to crs geographic ask. - - Args: - epsg_out (int): Code epsg of the output crs. - """ - self.tf.tf_output(epsg_output)
- -
[docs] def get_meridian_convergence(self, x_carto: Union[np.ndarray, List[float], float], diff --git a/docs/sphinx/_build/html/_modules/borea/geodesy/transform_geodesy.html b/docs/sphinx/_build/html/_modules/borea/geodesy/transform_geodesy.html index f9176c54..5297d36b 100644 --- a/docs/sphinx/_build/html/_modules/borea/geodesy/transform_geodesy.html +++ b/docs/sphinx/_build/html/_modules/borea/geodesy/transform_geodesy.html @@ -290,10 +290,12 @@

Source code for borea.geodesy.transform_geodesy

< Args: geoid (list): List of geoid to use. - crs (pyproj): CRS pyproj of the worksite. + epsg (list): Code epsg of the projection ex: [2154]. + epsg_output (int): Code epsg of the output projection. If you want to change. """ - def __init__(self, epsg: list, geoid: list) -> None: + def __init__(self, epsg: list, geoid: list, epsg_output: int) -> None: self.epsg = epsg + self.epsg_output = epsg_output self.crs = pyproj.CRS.from_epsg(epsg[0]) self.geoid = geoid self._carto_to_geoc = None @@ -302,7 +304,7 @@

Source code for borea.geodesy.transform_geodesy

< self._geog_to_carto = None self._geog_to_geoid = None self._geoid_to_geog = None - self.carto_to_geog_out = None + self._proj_to_proj_out = None @property def carto_to_geog(self) -> pyproj.Transformer: @@ -426,6 +428,20 @@

Source code for borea.geodesy.transform_geodesy

< return self._geog_to_geoid + @property + def proj_to_proj_out(self) -> pyproj.Transformer: + """ + Create the pyproj Transformer from crs of worksite to crs geographic ask. + + Returns: + pyproj.Transformer : carto_to_geog_out + """ + if not self._proj_to_proj_out: + crs_out = pyproj.CRS.from_epsg(self.epsg_output) + self._proj_to_proj_out = pyproj.Transformer.from_crs(self.crs, crs_out).transform + + return self._proj_to_proj_out +
[docs] def tranform_height(self, coor: np.ndarray) -> float: @@ -482,21 +498,6 @@

Source code for borea.geodesy.transform_geodesy

< if np.all(new_z == np.inf): raise ValueError("out geoid") return new_z
- - -
-[docs] - def tf_output(self, epsg_out: int = None) -> None: - """ - Create the pyproj Transformer from crs of worksite to crs geographic ask. - - Args: - epsg_out (int): Code epsg of the output crs. - """ - if epsg_out and epsg_out != self.epsg[0]: - crs_out = pyproj.CRS.from_epsg(epsg_out) - crs_geog_out = pyproj.crs.GeographicCRS(name=crs_out.name, datum=crs_out.datum.name) - self.carto_to_geog_out = pyproj.Transformer.from_crs(self.crs, crs_geog_out).transform
diff --git a/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html index 6a55c5db..c6bbc6e7 100644 --- a/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html +++ b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html @@ -319,6 +319,9 @@

Source code for borea.process.p_add_data.p_gen_param

parser.add_argument('--geoc', '--epsg_geocentric', type=int, default=None, help='EPSG codifier number of the reference geocentric system.') + parser.add_argument('-oe', '--epsg_output', + type=int, default=None, + help="Code epsg of output Data") return parser
diff --git a/docs/sphinx/_build/html/_modules/borea/process/p_format/p_write_rpc.html b/docs/sphinx/_build/html/_modules/borea/process/p_format/p_write_rpc.html index 81cbb4bb..2b8f2ce8 100644 --- a/docs/sphinx/_build/html/_modules/borea/process/p_format/p_write_rpc.html +++ b/docs/sphinx/_build/html/_modules/borea/process/p_format/p_write_rpc.html @@ -304,9 +304,6 @@

Source code for borea.process.p_format.p_write_rpc

parser.add_argument('-l', '--fact_rpc', type=float, default=None, help="Factor Rpc for pyproj convertion.") - parser.add_argument('-g', '--epsg_output', - type=int, default=None, - help="Code epsg of RPC") return parser
@@ -325,8 +322,7 @@

Source code for borea.process.p_format.p_write_rpc

print("Writing Rpc.") args_writing = {"order": args.order, "size_grid": args.size_grid, - "fact_rpc": args.fact_rpc, - "epsg_output": args.epsg_output} + "fact_rpc": args.fact_rpc} manager_writer("rpc", None, args.pathreturn, args_writing, work) print(f"File written in folder {args.pathreturn} .txt.")
diff --git a/docs/sphinx/_build/html/_modules/borea/worksite/worksite.html b/docs/sphinx/_build/html/_modules/borea/worksite/worksite.html index fb6fff8d..85904fae 100644 --- a/docs/sphinx/_build/html/_modules/borea/worksite/worksite.html +++ b/docs/sphinx/_build/html/_modules/borea/worksite/worksite.html @@ -467,10 +467,12 @@

Source code for borea.worksite.worksite

                 shot.set_z_nadir(z_nadir)
-
-[docs] - def set_unit_shot(self, type_z: str = None, unit_angle: str = None, - linear_alteration: bool = None, order_axe: str = None) -> None: + # pylint: disable-next=too-many-arguments too-many-positional-arguments +
+[docs] + def set_unit_output(self, type_z: str = None, unit_angle: str = None, + linear_alteration: bool = None, order_axe: str = None, + proj_output: bool = True) -> None: """ Allows you to change unit or parameter of shots. @@ -479,6 +481,7 @@

Source code for borea.worksite.worksite

             unit_angle (str): Unit angle you want.
             linear_alteration (bool): True if you want data corrected.
             order_axe (str): Order of rotation matrice you want in your angle.
+            proj_output (bool): True to change the projection of shot.
         """
         if unit_angle not in ["degree", "radian", None]:
             raise ValueError(f"unit_angle: {unit_angle} is not recognized,"
@@ -494,14 +497,16 @@ 

Source code for borea.worksite.worksite

             self.type_z_shot = type_z
 
         for shot in self.shots.values():
-            if unit_angle is not None:
+            if unit_angle:
                 shot.set_unit_angle(unit_angle)
-            if type_z is not None:
+            if type_z:
                 shot.set_type_z(type_z)
-            if linear_alteration is not None:
+            if linear_alteration:
                 shot.set_linear_alteration(linear_alteration)
-            if order_axe is not None:
-                shot.set_order_axe(order_axe)
+ if order_axe: + shot.set_order_axe(order_axe) + if self.epsg_output and proj_output: + shot.set_proj_pos()
diff --git a/docs/sphinx/_build/html/_modules/borea/writer/writer_con.html b/docs/sphinx/_build/html/_modules/borea/writer/writer_con.html index 997b6bd4..a61b9eb4 100644 --- a/docs/sphinx/_build/html/_modules/borea/writer/writer_con.html +++ b/docs/sphinx/_build/html/_modules/borea/writer/writer_con.html @@ -296,7 +296,14 @@

Source code for borea.writer.writer_con

         work (Worksite): The site to be recorded.
     """
     _, _ = name, param_con
-    geoview_proj = search_info("EPSG", str(ProjEngine().epsg[0]), "GEOVIEW")
+
+    if work.epsg_output:
+        epsg_output = ProjEngine().epsg_output
+    else:
+        epsg_output = ProjEngine().epsg[0]
+
+    work.set_unit_output(type_z="altitude", linear_alteration=True)
+    geoview_proj = search_info("EPSG", str(epsg_output), "GEOVIEW")
 
     for name_shot, shot in work.shots.items():
         cam = work.cameras[shot.name_cam]
diff --git a/docs/sphinx/_build/html/_modules/borea/writer/writer_opk.html b/docs/sphinx/_build/html/_modules/borea/writer/writer_opk.html
index ffbc4aaa..946db0b5 100644
--- a/docs/sphinx/_build/html/_modules/borea/writer/writer_opk.html
+++ b/docs/sphinx/_build/html/_modules/borea/writer/writer_opk.html
@@ -311,7 +311,7 @@ 

Source code for borea.writer.writer_opk

     if "S" in header:
         raise ValueError("Letter S doesn't existe in writing header opk.")
 
-    work.set_unit_shot(type_z, args["unit_angle"], args["linear_alteration"], args["order_axe"])
+    work.set_unit_output(type_z, args["unit_angle"], args["linear_alteration"], args["order_axe"])
 
     header_file = ""
     for i in header:
diff --git a/docs/sphinx/_build/html/_modules/borea/writer/writer_rpc.html b/docs/sphinx/_build/html/_modules/borea/writer/writer_rpc.html
index 0b65d53f..9b29e303 100644
--- a/docs/sphinx/_build/html/_modules/borea/writer/writer_rpc.html
+++ b/docs/sphinx/_build/html/_modules/borea/writer/writer_rpc.html
@@ -305,7 +305,9 @@ 

Source code for borea.writer.writer_rpc

             "SAMP_SCALE", "LAT_SCALE", "LONG_SCALE",
             "HEIGHT_SCALE"]
 
-    work.set_unit_shot(type_z=Dtm().type_dtm)
+    param_rpc["epsg_output"] = work.epsg_output
+
+    work.set_unit_output(type_z=Dtm().type_dtm, proj_output=False)
 
     for name_shot, shot in work.shots.items():
         cam = work.cameras[shot.name_cam]
diff --git a/docs/sphinx/_build/html/borea.datastruct.html b/docs/sphinx/_build/html/borea.datastruct.html
index 1fe5dc1b..1fc860d1 100644
--- a/docs/sphinx/_build/html/borea.datastruct.html
+++ b/docs/sphinx/_build/html/borea.datastruct.html
@@ -573,6 +573,12 @@ 

Submodules +
+set_proj_pos() None[source]¶
+

Change the projection of the position shot with the epsg_output.

+
+
set_rot_shot() ndarray[source]¶
@@ -743,13 +749,14 @@

Submodules
-set_proj(epsg: list, path_geoid: list | None = None) None[source]¶
+set_proj(epsg: list, path_geoid: list | None = None, epsg_output: int | None = None) None[source]¶

Setup a projection system to the worksite.

Parameters:
    -
  • epsg (list) – Code epsg of the porjection ex: 2154.

  • +
  • epsg (list) – Code epsg of the projection ex: [2154].

  • path_geoid (str) – List of GeoTIFF which represents the geoid in grid form.

  • +
  • epsg_output (int) – Code epsg of the output projection. If you want to change.

@@ -882,6 +889,7 @@

SubmodulesShot.set_linear_alteration()
  • Shot.set_order_axe()
  • Shot.set_param_eucli_shot()
  • +
  • Shot.set_proj_pos()
  • Shot.set_rot_shot()
  • Shot.set_type_z()
  • Shot.set_unit_angle()
  • diff --git a/docs/sphinx/_build/html/borea.format.html b/docs/sphinx/_build/html/borea.format.html index dd5772e4..36cf1b8f 100644 --- a/docs/sphinx/_build/html/borea.format.html +++ b/docs/sphinx/_build/html/borea.format.html @@ -313,14 +313,11 @@

    Submodules
    -save_conl(path_conical: Path, linalt: bool = True) None[source]¶
    +save_conl(path_conical: Path) None[source]¶

    Save the shot as light conical file.

    Parameters:
    -
      -
    • path_conical (Path) – path to the light conical file.

    • -
    • linalt (bool) – If you want z shot corrected by linear alteration.

    • -
    +

    path_conical (Path) – path to the light conical file.

    diff --git a/docs/sphinx/_build/html/borea.geodesy.html b/docs/sphinx/_build/html/borea.geodesy.html index 0ee59c9e..79c094b6 100644 --- a/docs/sphinx/_build/html/borea.geodesy.html +++ b/docs/sphinx/_build/html/borea.geodesy.html @@ -629,30 +629,20 @@

    Submodules
    -set_epsg(epsg: list, geoid: list | None = None) None[source]¶
    +set_epsg(epsg: list, geoid: list | None = None, epsg_output: int | None = None) None[source]¶

    Setter of the class ProjEngine. Allows to init the class with data.

    Parameters:
      -
    • epsg (list) – Code epsg of the projection ex: 2154.

    • +
    • epsg (list) – Code epsg of the projection ex: [2154].

    • geoid (list) – List of geoid to use.

    • +
    • epsg_output (int) – Code epsg of the output projection. If you want to change.

    -
    -
    -set_epsg_tf_geog_output(epsg_output: int) None[source]¶
    -

    Create the pyproj Transformer from crs of worksite to crs geographic ask.

    -
    -
    Parameters:
    -

    epsg_out (int) – Code epsg of the output crs.

    -
    -
    -
    - @@ -661,7 +651,7 @@

    Submodules
    -class borea.geodesy.transform_geodesy.TransformGeodesy(epsg: list, geoid: list)[source]¶
    +class borea.geodesy.transform_geodesy.TransformGeodesy(epsg: list, geoid: list, epsg_output: int)[source]¶

    Bases: object

    This class provides functions to tranform coordinate system. Class parent of ProjEngine. @@ -670,7 +660,8 @@

    SubmodulesParameters:
    • geoid (list) – List of geoid to use.

    • -
    • crs (pyproj) – CRS pyproj of the worksite.

    • +
    • epsg (list) – Code epsg of the projection ex: [2154].

    • +
    • epsg_output (int) – Code epsg of the output projection. If you want to change.

    @@ -758,13 +749,16 @@

    Submodules -
    -tf_output(epsg_out: int | None = None) None[source]¶
    +
    +
    +property proj_to_proj_out: Transformer¶

    Create the pyproj Transformer from crs of worksite to crs geographic ask.

    -
    Parameters:
    -

    epsg_out (int) – Code epsg of the output crs.

    +
    Returns:
    +

    carto_to_geog_out

    +
    +
    Return type:
    +

    pyproj.Transformer

    @@ -906,7 +900,6 @@

    SubmodulesProjEngine.get_meridian_convergence()
  • ProjEngine.get_scale_factor()
  • ProjEngine.set_epsg()
  • -
  • ProjEngine.set_epsg_tf_geog_output()
  • @@ -919,7 +912,7 @@

    SubmodulesTransformGeodesy.geog_to_carto
  • TransformGeodesy.geog_to_geoid
  • TransformGeodesy.geoid_to_geog
  • -
  • TransformGeodesy.tf_output()
  • +
  • TransformGeodesy.proj_to_proj_out
  • TransformGeodesy.tranform_altitude()
  • TransformGeodesy.tranform_height()
  • diff --git a/docs/sphinx/_build/html/borea.html b/docs/sphinx/_build/html/borea.html index 84d7cdcf..0f5303a8 100644 --- a/docs/sphinx/_build/html/borea.html +++ b/docs/sphinx/_build/html/borea.html @@ -326,6 +326,7 @@

    SubpackagesShot.set_linear_alteration()
  • Shot.set_order_axe()
  • Shot.set_param_eucli_shot()
  • +
  • Shot.set_proj_pos()
  • Shot.set_rot_shot()
  • Shot.set_type_z()
  • Shot.set_unit_angle()
  • @@ -429,7 +430,6 @@

    SubpackagesProjEngine.get_meridian_convergence()
  • ProjEngine.get_scale_factor()
  • ProjEngine.set_epsg()
  • -
  • ProjEngine.set_epsg_tf_geog_output()
  • @@ -442,7 +442,7 @@

    SubpackagesTransformGeodesy.geog_to_carto
  • TransformGeodesy.geog_to_geoid
  • TransformGeodesy.geoid_to_geog
  • -
  • TransformGeodesy.tf_output()
  • +
  • TransformGeodesy.proj_to_proj_out
  • TransformGeodesy.tranform_altitude()
  • TransformGeodesy.tranform_height()
  • @@ -614,7 +614,7 @@

    SubpackagesWorksite.set_param_shot()
  • Worksite.set_point_image_dataframe()
  • Worksite.set_point_world_dataframe()
  • -
  • Worksite.set_unit_shot()
  • +
  • Worksite.set_unit_output()
  • diff --git a/docs/sphinx/_build/html/borea.worksite.html b/docs/sphinx/_build/html/borea.worksite.html index d753852d..e412954d 100644 --- a/docs/sphinx/_build/html/borea.worksite.html +++ b/docs/sphinx/_build/html/borea.worksite.html @@ -425,8 +425,8 @@

    Submodules -
    -set_unit_shot(type_z: str | None = None, unit_angle: str | None = None, linear_alteration: bool | None = None, order_axe: str | None = None) None[source]¶
    +
    +set_unit_output(type_z: str | None = None, unit_angle: str | None = None, linear_alteration: bool | None = None, order_axe: str | None = None, proj_output: bool = True) None[source]¶

    Allows you to change unit or parameter of shots.

    Parameters:
    @@ -435,6 +435,7 @@

    SubmodulesWorksite.set_param_shot()
  • Worksite.set_point_image_dataframe()
  • Worksite.set_point_world_dataframe()
  • -
  • Worksite.set_unit_shot()
  • +
  • Worksite.set_unit_output()
  • diff --git a/docs/sphinx/_build/html/genindex.html b/docs/sphinx/_build/html/genindex.html index 0cb2ca6b..fd9755f5 100644 --- a/docs/sphinx/_build/html/genindex.html +++ b/docs/sphinx/_build/html/genindex.html @@ -1423,6 +1423,8 @@

    P

  • proj (borea.format.conl.Conl attribute) +
  • +
  • proj_to_proj_out (borea.geodesy.transform_geodesy.TransformGeodesy property)
  • ProjEngine (class in borea.geodesy.proj_engine)
  • @@ -1477,8 +1479,6 @@

    S

  • set_epsg() (borea.geodesy.proj_engine.ProjEngine method) -
  • -
  • set_epsg_tf_geog_output() (borea.geodesy.proj_engine.ProjEngine method)
  • set_geometry_xml() (borea.format.conl.Conl method)
  • @@ -1499,10 +1499,12 @@

    S

  • set_point_image_dataframe() (borea.worksite.worksite.Worksite method)
  • set_point_world_dataframe() (borea.worksite.worksite.Worksite method) +
  • +
  • set_proj() (borea.datastruct.workdata.Workdata method)
    • -
    • set_proj() (borea.datastruct.workdata.Workdata method) +
    • set_proj_pos() (borea.datastruct.shot.Shot method)
    • set_rot_shot() (borea.datastruct.shot.Shot method)
    • @@ -1514,7 +1516,7 @@

      S

    • set_unit_angle() (borea.datastruct.shot.Shot method)
    • -
    • set_unit_shot() (borea.worksite.worksite.Worksite method) +
    • set_unit_output() (borea.worksite.worksite.Worksite method)
    • set_z_nadir() (borea.datastruct.shot.Shot method)
    • @@ -1554,12 +1556,10 @@

      T

        -
      • tranform_altitude() (borea.geodesy.transform_geodesy.TransformGeodesy method) -
      • tranform_height() (borea.geodesy.transform_geodesy.TransformGeodesy method)
      • TransformGeodesy (class in borea.geodesy.transform_geodesy) diff --git a/docs/sphinx/_build/html/objects.inv b/docs/sphinx/_build/html/objects.inv index a5d5a302ffa180a4e7108b68b09b872ec1b05a55..948a58c2d5fcb49fa434dd7631ef306254f9a22f 100644 GIT binary patch delta 2971 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 RGnMCAy?+uK`#+KS5a6A7(og^Z delta 2964 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 KXzc%FTN4@cN4B8= diff --git a/docs/sphinx/_build/html/searchindex.js b/docs/sphinx/_build/html/searchindex.js index aa56d9e3..f5a5ff66 100644 --- a/docs/sphinx/_build/html/searchindex.js +++ b/docs/sphinx/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"Contents:": [[23, null]], "Indices and tables": [[23, "indices-and-tables"]], "Module contents": [[0, "module-borea"], [1, "module-borea.datastruct"], [2, "module-borea.format"], [3, "module-borea.geodesy"], [4, "module-borea.geodesy.projectionlist"], [5, "module-borea.process"], [6, "module-borea.process.p_add_data"], [7, "module-borea.process.p_format"], [8, "module-borea.process.p_func"], [9, "module-borea.reader"], [10, "module-borea.reader.orientation"], [11, "module-borea.stat"], [12, "module-borea.transform_world_image"], [13, "module-borea.transform_world_image.transform_dtm"], [14, "module-borea.transform_world_image.transform_shot"], [15, "module-borea.transform_world_image.transform_worksite"], [16, "module-borea.utils"], [17, "module-borea.utils.check"], [18, "module-borea.utils.miscellaneous"], [19, "module-borea.utils.singleton"], [20, "module-borea.utils.xml"], [21, "module-borea.worksite"], [22, "module-borea.writer"]], "Submodules": [[1, "submodules"], [2, "submodules"], [3, "submodules"], [4, "submodules"], [6, "submodules"], [7, "submodules"], [8, "submodules"], [9, "submodules"], [10, "submodules"], [11, "submodules"], [13, "submodules"], [14, "submodules"], [15, "submodules"], [17, "submodules"], [18, "submodules"], [19, "submodules"], [20, "submodules"], [21, "submodules"], [22, "submodules"]], "Subpackages": [[0, "subpackages"], [3, "subpackages"], [5, "subpackages"], [9, "subpackages"], [12, "subpackages"], [16, "subpackages"]], "Welcome to Pink_Lady\u2019s documentation!": [[23, null]], "borea": [[24, null]], "borea package": [[0, null]], "borea.datastruct package": [[1, null]], "borea.datastruct.camera module": [[1, "module-borea.datastruct.camera"]], "borea.datastruct.dtm module": [[1, "module-borea.datastruct.dtm"]], "borea.datastruct.gcp module": [[1, "module-borea.datastruct.gcp"]], "borea.datastruct.shot module": [[1, "module-borea.datastruct.shot"]], "borea.datastruct.workdata module": [[1, "module-borea.datastruct.workdata"]], "borea.format package": [[2, null]], "borea.format.conl module": [[2, "module-borea.format.conl"]], "borea.format.rpc module": [[2, "module-borea.format.rpc"]], "borea.geodesy package": [[3, null]], "borea.geodesy.approx_euclidean_proj module": [[3, "module-borea.geodesy.approx_euclidean_proj"]], "borea.geodesy.euclidean_proj module": [[3, "module-borea.geodesy.euclidean_proj"]], "borea.geodesy.local_euclidean_proj module": [[3, "module-borea.geodesy.local_euclidean_proj"]], "borea.geodesy.proj_engine module": [[3, "module-borea.geodesy.proj_engine"]], "borea.geodesy.projectionlist package": [[4, null]], "borea.geodesy.projectionlist.search_proj module": [[4, "module-borea.geodesy.projectionlist.search_proj"]], "borea.geodesy.transform_geodesy module": [[3, "module-borea.geodesy.transform_geodesy"]], "borea.process package": [[5, null]], "borea.process.p_add_data package": [[6, null]], "borea.process.p_add_data.p_add_shot module": [[6, "module-borea.process.p_add_data.p_add_shot"]], "borea.process.p_add_data.p_file_gcp2d module": [[6, "module-borea.process.p_add_data.p_file_gcp2d"]], "borea.process.p_add_data.p_file_gcp3d module": [[6, "module-borea.process.p_add_data.p_file_gcp3d"]], "borea.process.p_add_data.p_gen_param module": [[6, "module-borea.process.p_add_data.p_gen_param"]], "borea.process.p_add_data.p_pt2d module": [[6, "module-borea.process.p_add_data.p_pt2d"]], "borea.process.p_add_data.p_pt3d module": [[6, "module-borea.process.p_add_data.p_pt3d"]], "borea.process.p_add_data.p_unit_shot module": [[6, "module-borea.process.p_add_data.p_unit_shot"]], "borea.process.p_add_data.p_write module": [[6, "module-borea.process.p_add_data.p_write"]], "borea.process.p_format package": [[7, null]], "borea.process.p_format.p_read_opk module": [[7, "module-borea.process.p_format.p_read_opk"]], "borea.process.p_format.p_write_con module": [[7, "module-borea.process.p_format.p_write_con"]], "borea.process.p_format.p_write_opk module": [[7, "module-borea.process.p_format.p_write_opk"]], "borea.process.p_format.p_write_rpc module": [[7, "module-borea.process.p_format.p_write_rpc"]], "borea.process.p_func package": [[8, null]], "borea.process.p_func.p_control module": [[8, "module-borea.process.p_func.p_control"]], "borea.process.p_func.p_image_world module": [[8, "module-borea.process.p_func.p_image_world"]], "borea.process.p_func.p_spaceresection module": [[8, "module-borea.process.p_func.p_spaceresection"]], "borea.process.p_func.p_world_image module": [[8, "module-borea.process.p_func.p_world_image"]], "borea.reader package": [[9, null]], "borea.reader.orientation package": [[10, null]], "borea.reader.orientation.manage_reader module": [[10, "module-borea.reader.orientation.manage_reader"]], "borea.reader.orientation.reader_opk module": [[10, "module-borea.reader.orientation.reader_opk"]], "borea.reader.reader_camera module": [[9, "module-borea.reader.reader_camera"]], "borea.reader.reader_point module": [[9, "module-borea.reader.reader_point"]], "borea.stat package": [[11, null]], "borea.stat.statistics module": [[11, "module-borea.stat.statistics"]], "borea.transform_world_image package": [[12, null]], "borea.transform_world_image.transform_dtm package": [[13, null]], "borea.transform_world_image.transform_dtm.world_image_dtm module": [[13, "module-borea.transform_world_image.transform_dtm.world_image_dtm"]], "borea.transform_world_image.transform_shot package": [[14, null]], "borea.transform_world_image.transform_shot.conversion_coor_shot module": [[14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot"]], "borea.transform_world_image.transform_shot.image_world_shot module": [[14, "module-borea.transform_world_image.transform_shot.image_world_shot"]], "borea.transform_world_image.transform_shot.world_image_shot module": [[14, "module-borea.transform_world_image.transform_shot.world_image_shot"]], "borea.transform_world_image.transform_worksite package": [[15, null]], "borea.transform_world_image.transform_worksite.image_world_intersection module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_intersection"]], "borea.transform_world_image.transform_worksite.image_world_least_square module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_least_square"]], "borea.transform_world_image.transform_worksite.image_world_work module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_work"]], "borea.transform_world_image.transform_worksite.space_resection module": [[15, "module-borea.transform_world_image.transform_worksite.space_resection"]], "borea.transform_world_image.transform_worksite.world_image_work module": [[15, "module-borea.transform_world_image.transform_worksite.world_image_work"]], "borea.utils package": [[16, null]], "borea.utils.check package": [[17, null]], "borea.utils.check.check_args_opk module": [[17, "module-borea.utils.check.check_args_opk"]], "borea.utils.check.check_args_reader_pt module": [[17, "module-borea.utils.check.check_args_reader_pt"]], "borea.utils.check.check_array module": [[17, "module-borea.utils.check.check_array"]], "borea.utils.check.check_header module": [[17, "module-borea.utils.check.check_header"]], "borea.utils.check.check_order_axe module": [[17, "module-borea.utils.check.check_order_axe"]], "borea.utils.miscellaneous package": [[18, null]], "borea.utils.miscellaneous.miscellaneous module": [[18, "module-borea.utils.miscellaneous.miscellaneous"]], "borea.utils.miscellaneous.param_bundle module": [[18, "module-borea.utils.miscellaneous.param_bundle"]], "borea.utils.miscellaneous.sparse module": [[18, "module-borea.utils.miscellaneous.sparse"]], "borea.utils.singleton package": [[19, null]], "borea.utils.singleton.singleton module": [[19, "module-borea.utils.singleton.singleton"]], "borea.utils.xml package": [[20, null]], "borea.utils.xml.xml module": [[20, "module-borea.utils.xml.xml"]], "borea.worksite package": [[21, null]], "borea.worksite.worksite module": [[21, "module-borea.worksite.worksite"]], "borea.writer package": [[22, null]], "borea.writer.manage_writer module": [[22, "module-borea.writer.manage_writer"]], "borea.writer.writer_con module": [[22, "module-borea.writer.writer_con"]], "borea.writer.writer_df_to_txt module": [[22, "module-borea.writer.writer_df_to_txt"]], "borea.writer.writer_opk module": [[22, "module-borea.writer.writer_opk"]], "borea.writer.writer_rpc module": [[22, "module-borea.writer.writer_rpc"]]}, "docnames": ["borea", "borea.datastruct", "borea.format", "borea.geodesy", "borea.geodesy.projectionlist", "borea.process", "borea.process.p_add_data", "borea.process.p_format", "borea.process.p_func", "borea.reader", "borea.reader.orientation", "borea.stat", "borea.transform_world_image", "borea.transform_world_image.transform_dtm", "borea.transform_world_image.transform_shot", "borea.transform_world_image.transform_worksite", "borea.utils", "borea.utils.check", "borea.utils.miscellaneous", "borea.utils.singleton", "borea.utils.xml", "borea.worksite", "borea.writer", "index", "modules"], "envversion": {"sphinx": 63, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["borea.rst", "borea.datastruct.rst", "borea.format.rst", "borea.geodesy.rst", "borea.geodesy.projectionlist.rst", "borea.process.rst", "borea.process.p_add_data.rst", "borea.process.p_format.rst", "borea.process.p_func.rst", "borea.reader.rst", "borea.reader.orientation.rst", "borea.stat.rst", "borea.transform_world_image.rst", "borea.transform_world_image.transform_dtm.rst", "borea.transform_world_image.transform_shot.rst", "borea.transform_world_image.transform_worksite.rst", "borea.utils.rst", "borea.utils.check.rst", "borea.utils.miscellaneous.rst", "borea.utils.singleton.rst", "borea.utils.xml.rst", "borea.worksite.rst", "borea.writer.rst", "index.rst", "modules.rst"], "indexentries": {"add_camera() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_camera", false]], "add_co_point() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_co_point", false]], "add_elem() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.add_elem", false]], "add_gcp2d() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_gcp2d", false]], "add_gcp3d() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_gcp3d", false]], "add_shot() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_shot", false]], "angle_degree_2vect() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.angle_degree_2vect", false]], "approxeuclideanproj (class in borea.geodesy.approx_euclidean_proj)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj", false]], "args_add_pt2d() (in module borea.process.p_add_data.p_pt2d)": [[6, "borea.process.p_add_data.p_pt2d.args_add_pt2d", false]], "args_add_pt3d() (in module borea.process.p_add_data.p_pt3d)": [[6, "borea.process.p_add_data.p_pt3d.args_add_pt3d", false]], "args_add_shot() (in module borea.process.p_add_data.p_add_shot)": [[6, "borea.process.p_add_data.p_add_shot.args_add_shot", false]], "args_control() (in module borea.process.p_func.p_control)": [[8, "borea.process.p_func.p_control.args_control", false]], "args_gcp2d() (in module borea.process.p_add_data.p_file_gcp2d)": [[6, "borea.process.p_add_data.p_file_gcp2d.args_gcp2d", false]], "args_gcp3d() (in module borea.process.p_add_data.p_file_gcp3d)": [[6, "borea.process.p_add_data.p_file_gcp3d.args_gcp3d", false]], "args_general_param() (in module borea.process.p_add_data.p_gen_param)": [[6, "borea.process.p_add_data.p_gen_param.args_general_param", false]], "args_image_world() (in module borea.process.p_func.p_image_world)": [[8, "borea.process.p_func.p_image_world.args_image_world", false]], "args_input_shot() (in module borea.process.p_add_data.p_unit_shot)": [[6, "borea.process.p_add_data.p_unit_shot.args_input_shot", false]], "args_output_shot() (in module borea.process.p_add_data.p_unit_shot)": [[6, "borea.process.p_add_data.p_unit_shot.args_output_shot", false]], "args_reading_opk() (in module borea.process.p_format.p_read_opk)": [[7, "borea.process.p_format.p_read_opk.args_reading_opk", false]], "args_space_resection() (in module borea.process.p_func.p_spaceresection)": [[8, "borea.process.p_func.p_spaceresection.args_space_resection", false]], "args_world_image() (in module borea.process.p_func.p_world_image)": [[8, "borea.process.p_func.p_world_image.args_world_image", false]], "args_write_con() (in module borea.process.p_format.p_write_con)": [[7, "borea.process.p_format.p_write_con.args_write_con", false]], "args_writer() (in module borea.process.p_add_data.p_write)": [[6, "borea.process.p_add_data.p_write.args_writer", false]], "args_writing_opk() (in module borea.process.p_format.p_write_opk)": [[7, "borea.process.p_format.p_write_opk.args_writing_opk", false]], "args_writing_rpc() (in module borea.process.p_format.p_write_rpc)": [[7, "borea.process.p_format.p_write_rpc.args_writing_rpc", false]], "borea": [[0, "module-borea", false]], "borea.datastruct": [[1, "module-borea.datastruct", false]], "borea.datastruct.camera": [[1, "module-borea.datastruct.camera", false]], "borea.datastruct.dtm": [[1, "module-borea.datastruct.dtm", false]], "borea.datastruct.gcp": [[1, "module-borea.datastruct.gcp", false]], "borea.datastruct.shot": [[1, "module-borea.datastruct.shot", false]], "borea.datastruct.workdata": [[1, "module-borea.datastruct.workdata", false]], "borea.format": [[2, "module-borea.format", false]], "borea.format.conl": [[2, "module-borea.format.conl", false]], "borea.format.rpc": [[2, "module-borea.format.rpc", false]], "borea.geodesy": [[3, "module-borea.geodesy", false]], "borea.geodesy.approx_euclidean_proj": [[3, "module-borea.geodesy.approx_euclidean_proj", false]], "borea.geodesy.euclidean_proj": [[3, "module-borea.geodesy.euclidean_proj", false]], "borea.geodesy.local_euclidean_proj": [[3, "module-borea.geodesy.local_euclidean_proj", false]], "borea.geodesy.proj_engine": [[3, "module-borea.geodesy.proj_engine", false]], "borea.geodesy.projectionlist": [[4, "module-borea.geodesy.projectionlist", false]], "borea.geodesy.projectionlist.search_proj": [[4, "module-borea.geodesy.projectionlist.search_proj", false]], "borea.geodesy.transform_geodesy": [[3, "module-borea.geodesy.transform_geodesy", false]], "borea.process": [[5, "module-borea.process", false]], "borea.process.p_add_data": [[6, "module-borea.process.p_add_data", false]], "borea.process.p_add_data.p_add_shot": [[6, "module-borea.process.p_add_data.p_add_shot", false]], "borea.process.p_add_data.p_file_gcp2d": [[6, "module-borea.process.p_add_data.p_file_gcp2d", false]], "borea.process.p_add_data.p_file_gcp3d": [[6, "module-borea.process.p_add_data.p_file_gcp3d", false]], "borea.process.p_add_data.p_gen_param": [[6, "module-borea.process.p_add_data.p_gen_param", false]], "borea.process.p_add_data.p_pt2d": [[6, "module-borea.process.p_add_data.p_pt2d", false]], "borea.process.p_add_data.p_pt3d": [[6, "module-borea.process.p_add_data.p_pt3d", false]], "borea.process.p_add_data.p_unit_shot": [[6, "module-borea.process.p_add_data.p_unit_shot", false]], "borea.process.p_add_data.p_write": [[6, "module-borea.process.p_add_data.p_write", false]], "borea.process.p_format": [[7, "module-borea.process.p_format", false]], "borea.process.p_format.p_read_opk": [[7, "module-borea.process.p_format.p_read_opk", false]], "borea.process.p_format.p_write_con": [[7, "module-borea.process.p_format.p_write_con", false]], "borea.process.p_format.p_write_opk": [[7, "module-borea.process.p_format.p_write_opk", false]], "borea.process.p_format.p_write_rpc": [[7, "module-borea.process.p_format.p_write_rpc", false]], "borea.process.p_func": [[8, "module-borea.process.p_func", false]], "borea.process.p_func.p_control": [[8, "module-borea.process.p_func.p_control", false]], "borea.process.p_func.p_image_world": [[8, "module-borea.process.p_func.p_image_world", false]], "borea.process.p_func.p_spaceresection": [[8, "module-borea.process.p_func.p_spaceresection", false]], "borea.process.p_func.p_world_image": [[8, "module-borea.process.p_func.p_world_image", false]], "borea.reader": [[9, "module-borea.reader", false]], "borea.reader.orientation": [[10, "module-borea.reader.orientation", false]], "borea.reader.orientation.manage_reader": [[10, "module-borea.reader.orientation.manage_reader", false]], "borea.reader.orientation.reader_opk": [[10, "module-borea.reader.orientation.reader_opk", false]], "borea.reader.reader_camera": [[9, "module-borea.reader.reader_camera", false]], "borea.reader.reader_point": [[9, "module-borea.reader.reader_point", false]], "borea.stat": [[11, "module-borea.stat", false]], "borea.stat.statistics": [[11, "module-borea.stat.statistics", false]], "borea.transform_world_image": [[12, "module-borea.transform_world_image", false]], "borea.transform_world_image.transform_dtm": [[13, "module-borea.transform_world_image.transform_dtm", false]], "borea.transform_world_image.transform_dtm.world_image_dtm": [[13, "module-borea.transform_world_image.transform_dtm.world_image_dtm", false]], "borea.transform_world_image.transform_shot": [[14, "module-borea.transform_world_image.transform_shot", false]], "borea.transform_world_image.transform_shot.conversion_coor_shot": [[14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot", false]], "borea.transform_world_image.transform_shot.image_world_shot": [[14, "module-borea.transform_world_image.transform_shot.image_world_shot", false]], "borea.transform_world_image.transform_shot.world_image_shot": [[14, "module-borea.transform_world_image.transform_shot.world_image_shot", false]], "borea.transform_world_image.transform_worksite": [[15, "module-borea.transform_world_image.transform_worksite", false]], "borea.transform_world_image.transform_worksite.image_world_intersection": [[15, "module-borea.transform_world_image.transform_worksite.image_world_intersection", false]], "borea.transform_world_image.transform_worksite.image_world_least_square": [[15, "module-borea.transform_world_image.transform_worksite.image_world_least_square", false]], "borea.transform_world_image.transform_worksite.image_world_work": [[15, "module-borea.transform_world_image.transform_worksite.image_world_work", false]], "borea.transform_world_image.transform_worksite.space_resection": [[15, "module-borea.transform_world_image.transform_worksite.space_resection", false]], "borea.transform_world_image.transform_worksite.world_image_work": [[15, "module-borea.transform_world_image.transform_worksite.world_image_work", false]], "borea.utils": [[16, "module-borea.utils", false]], "borea.utils.check": [[17, "module-borea.utils.check", false]], "borea.utils.check.check_args_opk": [[17, "module-borea.utils.check.check_args_opk", false]], "borea.utils.check.check_args_reader_pt": [[17, "module-borea.utils.check.check_args_reader_pt", false]], "borea.utils.check.check_array": [[17, "module-borea.utils.check.check_array", false]], "borea.utils.check.check_header": [[17, "module-borea.utils.check.check_header", false]], "borea.utils.check.check_order_axe": [[17, "module-borea.utils.check.check_order_axe", false]], "borea.utils.miscellaneous": [[18, "module-borea.utils.miscellaneous", false]], "borea.utils.miscellaneous.miscellaneous": [[18, "module-borea.utils.miscellaneous.miscellaneous", false]], "borea.utils.miscellaneous.param_bundle": [[18, "module-borea.utils.miscellaneous.param_bundle", false]], "borea.utils.miscellaneous.sparse": [[18, "module-borea.utils.miscellaneous.sparse", false]], "borea.utils.singleton": [[19, "module-borea.utils.singleton", false]], "borea.utils.singleton.singleton": [[19, "module-borea.utils.singleton.singleton", false]], "borea.utils.xml": [[20, "module-borea.utils.xml", false]], "borea.utils.xml.xml": [[20, "module-borea.utils.xml.xml", false]], "borea.worksite": [[21, "module-borea.worksite", false]], "borea.worksite.worksite": [[21, "module-borea.worksite.worksite", false]], "borea.writer": [[22, "module-borea.writer", false]], "borea.writer.manage_writer": [[22, "module-borea.writer.manage_writer", false]], "borea.writer.writer_con": [[22, "module-borea.writer.writer_con", false]], "borea.writer.writer_df_to_txt": [[22, "module-borea.writer.writer_df_to_txt", false]], "borea.writer.writer_opk": [[22, "module-borea.writer.writer_opk", false]], "borea.writer.writer_rpc": [[22, "module-borea.writer.writer_rpc", false]], "bundle_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.bundle_to_image", false]], "calculate_barycentre() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.calculate_barycentre", false]], "calculate_image_world_by_intersection() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.calculate_image_world_by_intersection", false]], "calculate_world_to_image() (borea.transform_world_image.transform_worksite.world_image_work.worldimagework method)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork.calculate_world_to_image", false]], "cam (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.cam", false]], "camera (class in borea.datastruct.camera)": [[1, "borea.datastruct.camera.Camera", false]], "camera_txt() (in module borea.reader.reader_camera)": [[9, "borea.reader.reader_camera.camera_txt", false]], "carto_to_geoc (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.carto_to_geoc", false]], "carto_to_geog (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.carto_to_geog", false]], "check_args_opk() (in module borea.utils.check.check_args_opk)": [[17, "borea.utils.check.check_args_opk.check_args_opk", false]], "check_array_transfo() (in module borea.utils.check.check_array)": [[17, "borea.utils.check.check_array.check_array_transfo", false]], "check_h_z() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.check_h_z", false]], "check_head() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.check_head", false]], "check_header_file() (in module borea.utils.check.check_args_opk)": [[17, "borea.utils.check.check_args_opk.check_header_file", false]], "check_header_file() (in module borea.utils.check.check_args_reader_pt)": [[17, "borea.utils.check.check_args_reader_pt.check_header_file", false]], "check_order_axe() (in module borea.utils.check.check_order_axe)": [[17, "borea.utils.check.check_order_axe.check_order_axe", false]], "clear() (borea.utils.singleton.singleton.singleton method)": [[19, "borea.utils.singleton.singleton.Singleton.clear", false]], "code (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.code", false]], "comput_inter_in_2_more_distant_shot() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.comput_inter_in_2_more_distant_shot", false]], "compute_image_world_least_square() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.compute_image_world_least_square", false]], "conl (class in borea.format.conl)": [[2, "borea.format.conl.Conl", false]], "conv_output_z_type() (in module borea.transform_world_image.transform_shot.conversion_coor_shot)": [[14, "borea.transform_world_image.transform_shot.conversion_coor_shot.conv_output_z_type", false]], "conv_z_shot_to_z_data() (in module borea.transform_world_image.transform_shot.conversion_coor_shot)": [[14, "borea.transform_world_image.transform_shot.conversion_coor_shot.conv_z_shot_to_z_data", false]], "convert_line_list() (in module borea.geodesy.projectionlist.search_proj)": [[4, "borea.geodesy.projectionlist.search_proj.convert_line_list", false]], "convert_opk_to_xyz() (in module borea.utils.check.check_order_axe)": [[17, "borea.utils.check.check_order_axe.convert_opk_to_xyz", false]], "coor (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.coor", false]], "create_grid_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.create_grid_rpc", false]], "create_mat_a_and_vect_residu() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.create_mat_a_and_vect_residu", false]], "dist_2pts() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.dist_2pts", false]], "dtm (class in borea.datastruct.dtm)": [[1, "borea.datastruct.dtm.Dtm", false]], "epsg (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.epsg", false]], "epsg_output (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.epsg_output", false]], "eucli_to_bundle() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.eucli_to_bundle", false]], "eucli_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.eucli_to_image", false]], "eucli_to_world() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.eucli_to_world", false]], "eucli_to_world() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.eucli_to_world", false]], "euclideanproj (class in borea.geodesy.euclidean_proj)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj", false]], "focal (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.focal", false]], "format_xml() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.format_xml", false]], "from_param_euclidean() (borea.datastruct.shot.shot class method)": [[1, "borea.datastruct.shot.Shot.from_param_euclidean", false]], "from_shot() (borea.format.rpc.rpc class method)": [[2, "borea.format.rpc.Rpc.from_shot", false]], "func_least_square() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.func_least_square", false]], "gcp (class in borea.datastruct.gcp)": [[1, "borea.datastruct.gcp.GCP", false]], "geoc_to_carto (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geoc_to_carto", false]], "geog_to_carto (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geog_to_carto", false]], "geog_to_geoid (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geog_to_geoid", false]], "geoid (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.geoid", false]], "geoid_to_geog (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geoid_to_geog", false]], "get_attr_transfo_pt() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_attr_transfo_pt", false]], "get_coor_pt_img_and_world() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_coor_pt_img_and_world", false]], "get_meridian_convergence() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.get_meridian_convergence", false]], "get_point_image_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_point_image_dataframe", false]], "get_point_world_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_point_world_dataframe", false]], "get_scale_factor() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.get_scale_factor", false]], "get_type_z_and_header() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.get_type_z_and_header", false]], "get_z_add_scale_factor() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.get_z_add_scale_factor", false]], "get_z_remove_scale_factor() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.get_z_remove_scale_factor", false]], "get_z_world() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.get_z_world", false]], "height (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.height", false]], "image_to_bundle() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_to_bundle", false]], "image_to_world() (borea.transform_world_image.transform_dtm.world_image_dtm.worldimagedtm method)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm.image_to_world", false]], "image_to_world() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_to_world", false]], "image_world_iter() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_world_iter", false]], "image_z_to_world() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_z_to_world", false]], "imageworldshot (class in borea.transform_world_image.transform_shot.image_world_shot)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot", false]], "imageworldwork (class in borea.transform_world_image.transform_worksite.image_world_work)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork", false]], "indent() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.indent", false]], "init_eucli_points() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.init_eucli_points", false]], "init_kappa() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.init_kappa", false]], "intersection_line_3d() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.intersection_line_3d", false]], "intersection_pt_in_2shot() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.intersection_pt_in_2shot", false]], "invert_diag_sparse_matrix_3_3() (in module borea.utils.miscellaneous.sparse)": [[18, "borea.utils.miscellaneous.sparse.invert_diag_sparse_matrix_3_3", false]], "least_square_intersect() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.least_square_intersect", false]], "least_square_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.least_square_rpc", false]], "least_square_shot() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.least_square_shot", false]], "local_to_eucli() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.local_to_eucli", false]], "localeuclideanproj (class in borea.geodesy.local_euclidean_proj)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj", false]], "main_stat_and_save() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_and_save", false]], "main_stat_image_to_world() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_image_to_world", false]], "main_stat_world_to_image() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_world_to_image", false]], "manage_image_world() (borea.transform_world_image.transform_worksite.image_world_work.imageworldwork method)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork.manage_image_world", false]], "manager_writer() (in module borea.writer.manage_writer)": [[22, "borea.writer.manage_writer.manager_writer", false]], "mat_eucli_to_mat() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.mat_eucli_to_mat", false]], "mat_eucli_to_mat() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_eucli_to_mat", false]], "mat_obs_axia() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.mat_obs_axia", false]], "mat_rot_euclidean_local() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_rot_euclidean_local", false]], "mat_to_mat_eucli() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.mat_to_mat_eucli", false]], "mat_to_mat_eucli() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_to_mat_eucli", false]], "min_max_pt() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.min_max_pt", false]], "module": [[0, "module-borea", false], [1, "module-borea.datastruct", false], [1, "module-borea.datastruct.camera", false], [1, "module-borea.datastruct.dtm", false], [1, "module-borea.datastruct.gcp", false], [1, "module-borea.datastruct.shot", false], [1, "module-borea.datastruct.workdata", false], [2, "module-borea.format", false], [2, "module-borea.format.conl", false], [2, "module-borea.format.rpc", false], [3, "module-borea.geodesy", false], [3, "module-borea.geodesy.approx_euclidean_proj", false], [3, "module-borea.geodesy.euclidean_proj", false], [3, "module-borea.geodesy.local_euclidean_proj", false], [3, "module-borea.geodesy.proj_engine", false], [3, "module-borea.geodesy.transform_geodesy", false], [4, "module-borea.geodesy.projectionlist", false], [4, "module-borea.geodesy.projectionlist.search_proj", false], [5, "module-borea.process", false], [6, "module-borea.process.p_add_data", false], [6, "module-borea.process.p_add_data.p_add_shot", false], [6, "module-borea.process.p_add_data.p_file_gcp2d", false], [6, "module-borea.process.p_add_data.p_file_gcp3d", false], [6, "module-borea.process.p_add_data.p_gen_param", false], [6, "module-borea.process.p_add_data.p_pt2d", false], [6, "module-borea.process.p_add_data.p_pt3d", false], [6, "module-borea.process.p_add_data.p_unit_shot", false], [6, "module-borea.process.p_add_data.p_write", false], [7, "module-borea.process.p_format", false], [7, "module-borea.process.p_format.p_read_opk", false], [7, "module-borea.process.p_format.p_write_con", false], [7, "module-borea.process.p_format.p_write_opk", false], [7, "module-borea.process.p_format.p_write_rpc", false], [8, "module-borea.process.p_func", false], [8, "module-borea.process.p_func.p_control", false], [8, "module-borea.process.p_func.p_image_world", false], [8, "module-borea.process.p_func.p_spaceresection", false], [8, "module-borea.process.p_func.p_world_image", false], [9, "module-borea.reader", false], [9, "module-borea.reader.reader_camera", false], [9, "module-borea.reader.reader_point", false], [10, "module-borea.reader.orientation", false], [10, "module-borea.reader.orientation.manage_reader", false], [10, "module-borea.reader.orientation.reader_opk", false], [11, "module-borea.stat", false], [11, "module-borea.stat.statistics", false], [12, "module-borea.transform_world_image", false], [13, "module-borea.transform_world_image.transform_dtm", false], [13, "module-borea.transform_world_image.transform_dtm.world_image_dtm", false], [14, "module-borea.transform_world_image.transform_shot", false], [14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot", false], [14, "module-borea.transform_world_image.transform_shot.image_world_shot", false], [14, "module-borea.transform_world_image.transform_shot.world_image_shot", false], [15, "module-borea.transform_world_image.transform_worksite", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_intersection", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_least_square", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_work", false], [15, "module-borea.transform_world_image.transform_worksite.space_resection", false], [15, "module-borea.transform_world_image.transform_worksite.world_image_work", false], [16, "module-borea.utils", false], [17, "module-borea.utils.check", false], [17, "module-borea.utils.check.check_args_opk", false], [17, "module-borea.utils.check.check_args_reader_pt", false], [17, "module-borea.utils.check.check_array", false], [17, "module-borea.utils.check.check_header", false], [17, "module-borea.utils.check.check_order_axe", false], [18, "module-borea.utils.miscellaneous", false], [18, "module-borea.utils.miscellaneous.miscellaneous", false], [18, "module-borea.utils.miscellaneous.param_bundle", false], [18, "module-borea.utils.miscellaneous.sparse", false], [19, "module-borea.utils.singleton", false], [19, "module-borea.utils.singleton.singleton", false], [20, "module-borea.utils.xml", false], [20, "module-borea.utils.xml.xml", false], [21, "module-borea.worksite", false], [21, "module-borea.worksite.worksite", false], [22, "module-borea.writer", false], [22, "module-borea.writer.manage_writer", false], [22, "module-borea.writer.writer_con", false], [22, "module-borea.writer.writer_df_to_txt", false], [22, "module-borea.writer.writer_opk", false], [22, "module-borea.writer.writer_rpc", false]], "name_camera (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.name_camera", false]], "name_gcp (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.name_gcp", false]], "normalize() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.normalize", false]], "normalize_data() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.normalize_data", false]], "ppax (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.ppax", false]], "ppay (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.ppay", false]], "process_add_shot() (in module borea.process.p_add_data.p_add_shot)": [[6, "borea.process.p_add_data.p_add_shot.process_add_shot", false]], "process_args_control() (in module borea.process.p_func.p_control)": [[8, "borea.process.p_func.p_control.process_args_control", false]], "process_args_gen_param() (in module borea.process.p_add_data.p_gen_param)": [[6, "borea.process.p_add_data.p_gen_param.process_args_gen_param", false]], "process_args_read_opk() (in module borea.process.p_format.p_read_opk)": [[7, "borea.process.p_format.p_read_opk.process_args_read_opk", false]], "process_args_write_con() (in module borea.process.p_format.p_write_con)": [[7, "borea.process.p_format.p_write_con.process_args_write_con", false]], "process_args_write_opk() (in module borea.process.p_format.p_write_opk)": [[7, "borea.process.p_format.p_write_opk.process_args_write_opk", false]], "process_args_write_rpc() (in module borea.process.p_format.p_write_rpc)": [[7, "borea.process.p_format.p_write_rpc.process_args_write_rpc", false]], "process_gcp2d() (in module borea.process.p_add_data.p_file_gcp2d)": [[6, "borea.process.p_add_data.p_file_gcp2d.process_gcp2d", false]], "process_gcp3d() (in module borea.process.p_add_data.p_file_gcp3d)": [[6, "borea.process.p_add_data.p_file_gcp3d.process_gcp3d", false]], "process_image_world() (in module borea.process.p_add_data.p_pt2d)": [[6, "borea.process.p_add_data.p_pt2d.process_image_world", false]], "process_image_world() (in module borea.process.p_func.p_image_world)": [[8, "borea.process.p_func.p_image_world.process_image_world", false]], "process_space_resection() (in module borea.process.p_func.p_spaceresection)": [[8, "borea.process.p_func.p_spaceresection.process_space_resection", false]], "process_world_image() (in module borea.process.p_add_data.p_pt3d)": [[6, "borea.process.p_add_data.p_pt3d.process_world_image", false]], "process_world_image() (in module borea.process.p_func.p_world_image)": [[8, "borea.process.p_func.p_world_image.process_world_image", false]], "proj (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.proj", false]], "projengine (class in borea.geodesy.proj_engine)": [[3, "borea.geodesy.proj_engine.ProjEngine", false]], "read() (in module borea.reader.orientation.reader_opk)": [[10, "borea.reader.orientation.reader_opk.read", false]], "read_camera() (in module borea.reader.reader_camera)": [[9, "borea.reader.reader_camera.read_camera", false]], "read_file_pt() (in module borea.reader.reader_point)": [[9, "borea.reader.reader_point.read_file_pt", false]], "read_file_pt_dataframe() (in module borea.reader.reader_point)": [[9, "borea.reader.reader_point.read_file_pt_dataframe", false]], "reader_orientation() (in module borea.reader.orientation.manage_reader)": [[10, "borea.reader.orientation.manage_reader.reader_orientation", false]], "rpc (class in borea.format.rpc)": [[2, "borea.format.rpc.Rpc", false]], "save_conl() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.save_conl", false]], "save_stat_txt() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.save_stat_txt", false]], "search_info() (in module borea.geodesy.projectionlist.search_proj)": [[4, "borea.geodesy.projectionlist.search_proj.search_info", false]], "seed_20_point() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.seed_20_point", false]], "set_approx_eucli_proj() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_approx_eucli_proj", false]], "set_camera_xml() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.set_camera_xml", false]], "set_cval() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_cval", false]], "set_dtm() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_dtm", false]], "set_dtm() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_dtm", false]], "set_epsg() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.set_epsg", false]], "set_epsg_tf_geog_output() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.set_epsg_tf_geog_output", false]], "set_geometry_xml() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.set_geometry_xml", false]], "set_keep_memory() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_keep_memory", false]], "set_linear_alteration() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_linear_alteration", false]], "set_order() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_order", false]], "set_order_axe() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_order_axe", false]], "set_param_bundle_diff() (in module borea.utils.miscellaneous.param_bundle)": [[18, "borea.utils.miscellaneous.param_bundle.set_param_bundle_diff", false]], "set_param_eucli_shot() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_param_eucli_shot", false]], "set_param_shot() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_param_shot", false]], "set_point_image_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_point_image_dataframe", false]], "set_point_world_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_point_world_dataframe", false]], "set_proj() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_proj", false]], "set_rot_shot() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_rot_shot", false]], "set_type_z() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_type_z", false]], "set_type_z_data() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_type_z_data", false]], "set_type_z_shot() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_type_z_shot", false]], "set_unit_angle() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_unit_angle", false]], "set_unit_shot() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_unit_shot", false]], "set_z_nadir() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_z_nadir", false]], "setup_matrix_obs_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.setup_matrix_obs_rpc", false]], "shot (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.shot", false]], "shot (class in borea.datastruct.shot)": [[1, "borea.datastruct.shot.Shot", false]], "singleton (class in borea.utils.singleton.singleton)": [[19, "borea.utils.singleton.singleton.Singleton", false]], "space_resection_gap() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_gap", false]], "space_resection_on_worksite() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_on_worksite", false]], "space_resection_shot() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_shot", false]], "space_resection_to_worksite() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_to_worksite", false]], "spaceresection (class in borea.transform_world_image.transform_worksite.space_resection)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection", false]], "stat (class in borea.stat.statistics)": [[11, "borea.stat.statistics.Stat", false]], "stat_image_to_world() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_image_to_world", false]], "stat_list() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_list", false]], "stat_world_to_image() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_world_to_image", false]], "take_obs() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.take_obs", false]], "tf_output() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.tf_output", false]], "tranform_altitude() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.tranform_altitude", false]], "tranform_height() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.tranform_height", false]], "transformgeodesy (class in borea.geodesy.transform_geodesy)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy", false]], "width (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.width", false]], "work (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.work", false]], "work (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.work", false]], "work (borea.transform_world_image.transform_worksite.image_world_work.imageworldwork attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork.work", false]], "work (borea.transform_world_image.transform_worksite.world_image_work.worldimagework attribute)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork.work", false]], "workdata (class in borea.datastruct.workdata)": [[1, "borea.datastruct.workdata.Workdata", false]], "worksite (class in borea.worksite.worksite)": [[21, "borea.worksite.worksite.Worksite", false]], "world_to_eucli() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.world_to_eucli", false]], "world_to_eucli() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.world_to_eucli", false]], "world_to_image() (borea.transform_world_image.transform_dtm.world_image_dtm.worldimagedtm method)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm.world_to_image", false]], "world_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.world_to_image", false]], "worldimagedtm (class in borea.transform_world_image.transform_dtm.world_image_dtm)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm", false]], "worldimageshot (class in borea.transform_world_image.transform_shot.world_image_shot)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot", false]], "worldimagework (class in borea.transform_world_image.transform_worksite.world_image_work)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork", false]], "worldintersection (class in borea.transform_world_image.transform_worksite.image_world_intersection)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection", false]], "worldleastsquare (class in borea.transform_world_image.transform_worksite.image_world_least_square)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare", false]], "write() (in module borea.writer.writer_con)": [[22, "borea.writer.writer_con.write", false]], "write() (in module borea.writer.writer_opk)": [[22, "borea.writer.writer_opk.write", false]], "write() (in module borea.writer.writer_rpc)": [[22, "borea.writer.writer_rpc.write", false]], "write_df_to_txt() (in module borea.writer.writer_df_to_txt)": [[22, "borea.writer.writer_df_to_txt.write_df_to_txt", false]], "write_stat() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.write_stat", false]], "x_central (borea.geodesy.euclidean_proj.euclideanproj attribute)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj.x_central", false]], "y_central (borea.geodesy.euclidean_proj.euclideanproj attribute)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj.y_central", false]]}, "objects": {"": [[0, 0, 0, "-", "borea"]], "borea": [[1, 0, 0, "-", "datastruct"], [2, 0, 0, "-", "format"], [3, 0, 0, "-", "geodesy"], [5, 0, 0, "-", "process"], [9, 0, 0, "-", "reader"], [11, 0, 0, "-", "stat"], [12, 0, 0, "-", "transform_world_image"], [16, 0, 0, "-", "utils"], [21, 0, 0, "-", "worksite"], [22, 0, 0, "-", "writer"]], "borea.datastruct": [[1, 0, 0, "-", "camera"], [1, 0, 0, "-", "dtm"], [1, 0, 0, "-", "gcp"], [1, 0, 0, "-", "shot"], [1, 0, 0, "-", "workdata"]], "borea.datastruct.camera": [[1, 1, 1, "", "Camera"]], "borea.datastruct.camera.Camera": [[1, 2, 1, "", "focal"], [1, 2, 1, "", "height"], [1, 2, 1, "", "name_camera"], [1, 2, 1, "", "ppax"], [1, 2, 1, "", "ppay"], [1, 2, 1, "", "width"]], "borea.datastruct.dtm": [[1, 1, 1, "", "Dtm"]], "borea.datastruct.dtm.Dtm": [[1, 3, 1, "", "get_z_world"], [1, 3, 1, "", "set_cval"], [1, 3, 1, "", "set_dtm"], [1, 3, 1, "", "set_keep_memory"], [1, 3, 1, "", "set_order"]], "borea.datastruct.gcp": [[1, 1, 1, "", "GCP"]], "borea.datastruct.gcp.GCP": [[1, 2, 1, "", "code"], [1, 2, 1, "", "coor"], [1, 2, 1, "", "name_gcp"]], "borea.datastruct.shot": [[1, 1, 1, "", "Shot"]], "borea.datastruct.shot.Shot": [[1, 3, 1, "", "from_param_euclidean"], [1, 3, 1, "", "get_z_add_scale_factor"], [1, 3, 1, "", "get_z_remove_scale_factor"], [1, 3, 1, "", "set_linear_alteration"], [1, 3, 1, "", "set_order_axe"], [1, 3, 1, "", "set_param_eucli_shot"], [1, 3, 1, "", "set_rot_shot"], [1, 3, 1, "", "set_type_z"], [1, 3, 1, "", "set_unit_angle"], [1, 3, 1, "", "set_z_nadir"]], "borea.datastruct.workdata": [[1, 1, 1, "", "Workdata"]], "borea.datastruct.workdata.Workdata": [[1, 3, 1, "", "add_camera"], [1, 3, 1, "", "add_co_point"], [1, 3, 1, "", "add_gcp2d"], [1, 3, 1, "", "add_gcp3d"], [1, 3, 1, "", "add_shot"], [1, 3, 1, "", "set_approx_eucli_proj"], [1, 3, 1, "", "set_dtm"], [1, 3, 1, "", "set_proj"], [1, 3, 1, "", "set_type_z_data"], [1, 3, 1, "", "set_type_z_shot"]], "borea.format": [[2, 0, 0, "-", "conl"], [2, 0, 0, "-", "rpc"]], "borea.format.conl": [[2, 1, 1, "", "Conl"]], "borea.format.conl.Conl": [[2, 2, 1, "", "cam"], [2, 2, 1, "", "proj"], [2, 3, 1, "", "save_conl"], [2, 3, 1, "", "set_camera_xml"], [2, 3, 1, "", "set_geometry_xml"], [2, 2, 1, "", "shot"]], "borea.format.rpc": [[2, 1, 1, "", "Rpc"]], "borea.format.rpc.Rpc": [[2, 3, 1, "", "create_grid_rpc"], [2, 3, 1, "", "from_shot"], [2, 3, 1, "", "least_square_rpc"], [2, 3, 1, "", "normalize_data"], [2, 3, 1, "", "setup_matrix_obs_rpc"]], "borea.geodesy": [[3, 0, 0, "-", "approx_euclidean_proj"], [3, 0, 0, "-", "euclidean_proj"], [3, 0, 0, "-", "local_euclidean_proj"], [3, 0, 0, "-", "proj_engine"], [4, 0, 0, "-", "projectionlist"], [3, 0, 0, "-", "transform_geodesy"]], "borea.geodesy.approx_euclidean_proj": [[3, 1, 1, "", "ApproxEuclideanProj"]], "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj": [[3, 3, 1, "", "eucli_to_world"], [3, 3, 1, "", "mat_eucli_to_mat"], [3, 3, 1, "", "mat_to_mat_eucli"], [3, 3, 1, "", "world_to_eucli"]], "borea.geodesy.euclidean_proj": [[3, 1, 1, "", "EuclideanProj"]], "borea.geodesy.euclidean_proj.EuclideanProj": [[3, 2, 1, "", "x_central"], [3, 2, 1, "", "y_central"]], "borea.geodesy.local_euclidean_proj": [[3, 1, 1, "", "LocalEuclideanProj"]], "borea.geodesy.local_euclidean_proj.LocalEuclideanProj": [[3, 3, 1, "", "eucli_to_world"], [3, 3, 1, "", "mat_eucli_to_mat"], [3, 3, 1, "", "mat_rot_euclidean_local"], [3, 3, 1, "", "mat_to_mat_eucli"], [3, 3, 1, "", "world_to_eucli"]], "borea.geodesy.proj_engine": [[3, 1, 1, "", "ProjEngine"]], "borea.geodesy.proj_engine.ProjEngine": [[3, 2, 1, "", "epsg"], [3, 2, 1, "", "epsg_output"], [3, 2, 1, "", "geoid"], [3, 3, 1, "", "get_meridian_convergence"], [3, 3, 1, "", "get_scale_factor"], [3, 3, 1, "", "set_epsg"], [3, 3, 1, "", "set_epsg_tf_geog_output"]], "borea.geodesy.projectionlist": [[4, 0, 0, "-", "search_proj"]], "borea.geodesy.projectionlist.search_proj": [[4, 4, 1, "", "convert_line_list"], [4, 4, 1, "", "search_info"]], "borea.geodesy.transform_geodesy": [[3, 1, 1, "", "TransformGeodesy"]], "borea.geodesy.transform_geodesy.TransformGeodesy": [[3, 5, 1, "", "carto_to_geoc"], [3, 5, 1, "", "carto_to_geog"], [3, 5, 1, "", "geoc_to_carto"], [3, 5, 1, "", "geog_to_carto"], [3, 5, 1, "", "geog_to_geoid"], [3, 5, 1, "", "geoid_to_geog"], [3, 3, 1, "", "tf_output"], [3, 3, 1, "", "tranform_altitude"], [3, 3, 1, "", "tranform_height"]], "borea.process": [[6, 0, 0, "-", "p_add_data"], [7, 0, 0, "-", "p_format"], [8, 0, 0, "-", "p_func"]], "borea.process.p_add_data": [[6, 0, 0, "-", "p_add_shot"], [6, 0, 0, "-", "p_file_gcp2d"], [6, 0, 0, "-", "p_file_gcp3d"], [6, 0, 0, "-", "p_gen_param"], [6, 0, 0, "-", "p_pt2d"], [6, 0, 0, "-", "p_pt3d"], [6, 0, 0, "-", "p_unit_shot"], [6, 0, 0, "-", "p_write"]], "borea.process.p_add_data.p_add_shot": [[6, 4, 1, "", "args_add_shot"], [6, 4, 1, "", "process_add_shot"]], "borea.process.p_add_data.p_file_gcp2d": [[6, 4, 1, "", "args_gcp2d"], [6, 4, 1, "", "process_gcp2d"]], "borea.process.p_add_data.p_file_gcp3d": [[6, 4, 1, "", "args_gcp3d"], [6, 4, 1, "", "process_gcp3d"]], "borea.process.p_add_data.p_gen_param": [[6, 4, 1, "", "args_general_param"], [6, 4, 1, "", "process_args_gen_param"]], "borea.process.p_add_data.p_pt2d": [[6, 4, 1, "", "args_add_pt2d"], [6, 4, 1, "", "process_image_world"]], "borea.process.p_add_data.p_pt3d": [[6, 4, 1, "", "args_add_pt3d"], [6, 4, 1, "", "process_world_image"]], "borea.process.p_add_data.p_unit_shot": [[6, 4, 1, "", "args_input_shot"], [6, 4, 1, "", "args_output_shot"]], "borea.process.p_add_data.p_write": [[6, 4, 1, "", "args_writer"]], "borea.process.p_format": [[7, 0, 0, "-", "p_read_opk"], [7, 0, 0, "-", "p_write_con"], [7, 0, 0, "-", "p_write_opk"], [7, 0, 0, "-", "p_write_rpc"]], "borea.process.p_format.p_read_opk": [[7, 4, 1, "", "args_reading_opk"], [7, 4, 1, "", "process_args_read_opk"]], "borea.process.p_format.p_write_con": [[7, 4, 1, "", "args_write_con"], [7, 4, 1, "", "process_args_write_con"]], "borea.process.p_format.p_write_opk": [[7, 4, 1, "", "args_writing_opk"], [7, 4, 1, "", "process_args_write_opk"]], "borea.process.p_format.p_write_rpc": [[7, 4, 1, "", "args_writing_rpc"], [7, 4, 1, "", "process_args_write_rpc"]], "borea.process.p_func": [[8, 0, 0, "-", "p_control"], [8, 0, 0, "-", "p_image_world"], [8, 0, 0, "-", "p_spaceresection"], [8, 0, 0, "-", "p_world_image"]], "borea.process.p_func.p_control": [[8, 4, 1, "", "args_control"], [8, 4, 1, "", "process_args_control"]], "borea.process.p_func.p_image_world": [[8, 4, 1, "", "args_image_world"], [8, 4, 1, "", "process_image_world"]], "borea.process.p_func.p_spaceresection": [[8, 4, 1, "", "args_space_resection"], [8, 4, 1, "", "process_space_resection"]], "borea.process.p_func.p_world_image": [[8, 4, 1, "", "args_world_image"], [8, 4, 1, "", "process_world_image"]], "borea.reader": [[10, 0, 0, "-", "orientation"], [9, 0, 0, "-", "reader_camera"], [9, 0, 0, "-", "reader_point"]], "borea.reader.orientation": [[10, 0, 0, "-", "manage_reader"], [10, 0, 0, "-", "reader_opk"]], "borea.reader.orientation.manage_reader": [[10, 4, 1, "", "reader_orientation"]], "borea.reader.orientation.reader_opk": [[10, 4, 1, "", "read"]], "borea.reader.reader_camera": [[9, 4, 1, "", "camera_txt"], [9, 4, 1, "", "read_camera"]], "borea.reader.reader_point": [[9, 4, 1, "", "read_file_pt"], [9, 4, 1, "", "read_file_pt_dataframe"]], "borea.stat": [[11, 0, 0, "-", "statistics"]], "borea.stat.statistics": [[11, 1, 1, "", "Stat"]], "borea.stat.statistics.Stat": [[11, 3, 1, "", "main_stat_and_save"], [11, 3, 1, "", "main_stat_image_to_world"], [11, 3, 1, "", "main_stat_world_to_image"], [11, 3, 1, "", "save_stat_txt"], [11, 3, 1, "", "stat_image_to_world"], [11, 3, 1, "", "stat_list"], [11, 3, 1, "", "stat_world_to_image"], [11, 3, 1, "", "write_stat"]], "borea.transform_world_image": [[13, 0, 0, "-", "transform_dtm"], [14, 0, 0, "-", "transform_shot"], [15, 0, 0, "-", "transform_worksite"]], "borea.transform_world_image.transform_dtm": [[13, 0, 0, "-", "world_image_dtm"]], "borea.transform_world_image.transform_dtm.world_image_dtm": [[13, 1, 1, "", "WorldImageDtm"]], "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm": [[13, 3, 1, "", "image_to_world"], [13, 3, 1, "", "world_to_image"]], "borea.transform_world_image.transform_shot": [[14, 0, 0, "-", "conversion_coor_shot"], [14, 0, 0, "-", "image_world_shot"], [14, 0, 0, "-", "world_image_shot"]], "borea.transform_world_image.transform_shot.conversion_coor_shot": [[14, 4, 1, "", "conv_output_z_type"], [14, 4, 1, "", "conv_z_shot_to_z_data"]], "borea.transform_world_image.transform_shot.image_world_shot": [[14, 1, 1, "", "ImageWorldShot"]], "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot": [[14, 3, 1, "", "image_to_bundle"], [14, 3, 1, "", "image_to_world"], [14, 3, 1, "", "image_world_iter"], [14, 3, 1, "", "image_z_to_world"], [14, 3, 1, "", "local_to_eucli"]], "borea.transform_world_image.transform_shot.world_image_shot": [[14, 1, 1, "", "WorldImageShot"]], "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot": [[14, 3, 1, "", "bundle_to_image"], [14, 3, 1, "", "eucli_to_bundle"], [14, 3, 1, "", "eucli_to_image"], [14, 3, 1, "", "world_to_image"]], "borea.transform_world_image.transform_worksite": [[15, 0, 0, "-", "image_world_intersection"], [15, 0, 0, "-", "image_world_least_square"], [15, 0, 0, "-", "image_world_work"], [15, 0, 0, "-", "space_resection"], [15, 0, 0, "-", "world_image_work"]], "borea.transform_world_image.transform_worksite.image_world_intersection": [[15, 1, 1, "", "WorldIntersection"]], "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection": [[15, 3, 1, "", "calculate_image_world_by_intersection"], [15, 3, 1, "", "comput_inter_in_2_more_distant_shot"], [15, 3, 1, "", "intersection_line_3d"], [15, 3, 1, "", "intersection_pt_in_2shot"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.image_world_least_square": [[15, 1, 1, "", "WorldLeastSquare"]], "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare": [[15, 3, 1, "", "compute_image_world_least_square"], [15, 3, 1, "", "create_mat_a_and_vect_residu"], [15, 3, 1, "", "init_eucli_points"], [15, 3, 1, "", "least_square_intersect"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.image_world_work": [[15, 1, 1, "", "ImageWorldWork"]], "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork": [[15, 3, 1, "", "manage_image_world"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.space_resection": [[15, 1, 1, "", "SpaceResection"]], "borea.transform_world_image.transform_worksite.space_resection.SpaceResection": [[15, 3, 1, "", "func_least_square"], [15, 3, 1, "", "init_kappa"], [15, 3, 1, "", "least_square_shot"], [15, 3, 1, "", "mat_obs_axia"], [15, 3, 1, "", "seed_20_point"], [15, 3, 1, "", "space_resection_gap"], [15, 3, 1, "", "space_resection_on_worksite"], [15, 3, 1, "", "space_resection_shot"], [15, 3, 1, "", "space_resection_to_worksite"], [15, 3, 1, "", "take_obs"]], "borea.transform_world_image.transform_worksite.world_image_work": [[15, 1, 1, "", "WorldImageWork"]], "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork": [[15, 3, 1, "", "calculate_world_to_image"], [15, 2, 1, "", "work"]], "borea.utils": [[17, 0, 0, "-", "check"], [18, 0, 0, "-", "miscellaneous"], [19, 0, 0, "-", "singleton"], [20, 0, 0, "-", "xml"]], "borea.utils.check": [[17, 0, 0, "-", "check_args_opk"], [17, 0, 0, "-", "check_args_reader_pt"], [17, 0, 0, "-", "check_array"], [17, 0, 0, "-", "check_header"], [17, 0, 0, "-", "check_order_axe"]], "borea.utils.check.check_args_opk": [[17, 4, 1, "", "check_args_opk"], [17, 4, 1, "", "check_header_file"]], "borea.utils.check.check_args_reader_pt": [[17, 4, 1, "", "check_header_file"]], "borea.utils.check.check_array": [[17, 4, 1, "", "check_array_transfo"]], "borea.utils.check.check_header": [[17, 4, 1, "", "check_h_z"], [17, 4, 1, "", "check_head"], [17, 4, 1, "", "get_type_z_and_header"]], "borea.utils.check.check_order_axe": [[17, 4, 1, "", "check_order_axe"], [17, 4, 1, "", "convert_opk_to_xyz"]], "borea.utils.miscellaneous": [[18, 0, 0, "-", "miscellaneous"], [18, 0, 0, "-", "param_bundle"], [18, 0, 0, "-", "sparse"]], "borea.utils.miscellaneous.miscellaneous": [[18, 4, 1, "", "angle_degree_2vect"], [18, 4, 1, "", "dist_2pts"], [18, 4, 1, "", "min_max_pt"], [18, 4, 1, "", "normalize"]], "borea.utils.miscellaneous.param_bundle": [[18, 4, 1, "", "set_param_bundle_diff"]], "borea.utils.miscellaneous.sparse": [[18, 4, 1, "", "invert_diag_sparse_matrix_3_3"]], "borea.utils.singleton": [[19, 0, 0, "-", "singleton"]], "borea.utils.singleton.singleton": [[19, 1, 1, "", "Singleton"]], "borea.utils.singleton.singleton.Singleton": [[19, 3, 1, "", "clear"]], "borea.utils.xml": [[20, 0, 0, "-", "xml"]], "borea.utils.xml.xml": [[20, 4, 1, "", "add_elem"], [20, 4, 1, "", "format_xml"], [20, 4, 1, "", "indent"]], "borea.worksite": [[21, 0, 0, "-", "worksite"]], "borea.worksite.worksite": [[21, 1, 1, "", "Worksite"]], "borea.worksite.worksite.Worksite": [[21, 3, 1, "", "calculate_barycentre"], [21, 3, 1, "", "get_attr_transfo_pt"], [21, 3, 1, "", "get_coor_pt_img_and_world"], [21, 3, 1, "", "get_point_image_dataframe"], [21, 3, 1, "", "get_point_world_dataframe"], [21, 3, 1, "", "set_param_shot"], [21, 3, 1, "", "set_point_image_dataframe"], [21, 3, 1, "", "set_point_world_dataframe"], [21, 3, 1, "", "set_unit_shot"]], "borea.writer": [[22, 0, 0, "-", "manage_writer"], [22, 0, 0, "-", "writer_con"], [22, 0, 0, "-", "writer_df_to_txt"], [22, 0, 0, "-", "writer_opk"], [22, 0, 0, "-", "writer_rpc"]], "borea.writer.manage_writer": [[22, 4, 1, "", "manager_writer"]], "borea.writer.writer_con": [[22, 4, 1, "", "write"]], "borea.writer.writer_df_to_txt": [[22, 4, 1, "", "write_df_to_txt"]], "borea.writer.writer_opk": [[22, 4, 1, "", "write"]], "borea.writer.writer_rpc": [[22, 4, 1, "", "write"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function", "5": "py:property"}, "terms": {"": [11, 15, 18, 19], "0": [1, 14, 15, 18, 20], "1": [1, 2, 10, 15, 17], "10": [2, 6, 7, 8, 20], "100": 2, "11": 1, "12": 1, "13": 1, "2": [1, 2, 15, 18], "20": 15, "2154": [1, 3], "2d": [1, 6, 13, 18], "3": [1, 2, 15], "3d": [6, 15], "5": 1, "5f": 20, "6": [8, 15], "A": [1, 2, 3, 10, 15, 17, 18], "And": 1, "For": 15, "If": [1, 2, 15], "It": 19, "NOT": [1, 14], "One": [1, 4], "The": [1, 2, 3, 10, 14, 15, 18, 20, 21, 22], "To": [14, 15], "absolut": 11, "account": [10, 17], "acquisit": [1, 2, 15], "ad": [1, 6, 15], "add": [1, 2, 6, 7, 8, 10, 15, 20], "add_camera": [0, 1], "add_co_point": [0, 1], "add_elem": [16, 20], "add_gcp2d": [0, 1], "add_gcp3d": [0, 1], "add_pixel": 15, "add_shot": [0, 1], "adjust": 15, "after": 1, "agr": [1, 9], "aim": 19, "all": [1, 4, 11, 15, 17, 21], "allow": [1, 3, 21], "alter": [1, 2, 10, 14, 17, 22], "altitud": [1, 3, 14, 17], "alwai": [1, 2], "an": [1, 3, 10, 14, 15, 17, 18, 22], "angl": [1, 10, 15, 17, 18, 21, 22], "angle_degree_2vect": [16, 18], "ani": [1, 20], "app": 9, "appear": 15, "appli": [6, 7, 8], "approx": [1, 14, 21], "approx_euclidean_proj": [0, 24], "approxeucli": 1, "approxeuclideanproj": [0, 3], "approxim": 3, "apprx": 1, "ar": [1, 3, 17], "aren": 15, "arg": [1, 3, 6, 7, 8, 10, 17, 22], "argpars": [6, 7, 8], "args_add_pt2d": [5, 6], "args_add_pt3d": [5, 6], "args_add_shot": [5, 6], "args_control": [5, 8], "args_gcp2d": [5, 6], "args_gcp3d": [5, 6], "args_general_param": [5, 6], "args_image_world": [5, 8], "args_input_shot": [5, 6], "args_output_shot": [5, 6], "args_reading_opk": [5, 7], "args_space_resect": [5, 8], "args_world_imag": [5, 8], "args_writ": [5, 6], "args_write_con": [5, 7], "args_writing_opk": [5, 7], "args_writing_rpc": [5, 7], "argspars": [6, 7, 8], "argument": [6, 7, 8], "arithmet": 11, "around": 2, "arrai": [1, 2, 3, 13, 14, 15, 17, 18, 21], "arrang": 9, "ask": [3, 14], "attribut": [1, 21], "ax": [1, 10, 17, 22], "axiat": 15, "b": 15, "bad_head": 17, "balis": [2, 20], "barycentr": 21, "base": [1, 2, 3, 11, 13, 14, 15, 19, 21], "bdortho": 4, "beam": 18, "befor": 3, "begin": 22, "belong": 19, "between": [1, 3, 15, 17, 18], "bilinear": 1, "block": 18, "bool": [1, 2, 10, 14, 17, 21, 22], "boolean": [1, 17], "borea": 23, "buffer": 2, "build": 1, "bundl": [14, 15, 18], "bundle_to_imag": [12, 14], "c": [2, 14], "c_ob": 15, "calcul": [2, 6, 8, 11, 14, 15, 18, 21, 22], "calculate_barycentr": [0, 21], "calculate_image_world_by_intersect": [12, 15], "calculate_world_to_imag": [12, 15], "calcult": 15, "cam": [0, 2, 14, 15], "camera": [0, 2, 9, 14, 15, 24], "camera_txt": [0, 9], "carto_to_geoc": [0, 3], "carto_to_geog": [0, 3], "cartograph": 3, "cartographiqu": 14, "categori": 19, "center": 1, "centr": 3, "central": 3, "chang": [1, 15, 21], "check": [0, 15, 16], "check_args_opk": [0, 16], "check_args_reader_pt": [0, 16], "check_arrai": [0, 16], "check_array_transfo": [16, 17], "check_h_z": [16, 17], "check_head": [0, 16], "check_header_fil": [16, 17], "check_lett": 17, "check_order_ax": [0, 16], "class": [1, 2, 3, 11, 13, 14, 15, 19, 21, 22], "classmethod": [1, 2], "clear": [16, 19], "co": 15, "co_point": [1, 9, 15, 17, 21], "code": [0, 1, 3, 15, 17, 22], "code_gcp": 1, "coeffici": 2, "col": [2, 14], "collinear": 3, "column": [1, 2, 9, 10, 13, 15, 17, 21, 22], "combin": 17, "comput": [2, 3, 13], "comput_inter_in_2_more_distant_shot": [12, 15], "compute_image_world_least_squar": [12, 15], "con": 22, "condit": 1, "conic": [2, 7, 22], "conl": [0, 24], "connect": [1, 9, 15], "construct": 1, "contain": [1, 17], "content": 24, "control": [1, 8, 11, 15, 21], "control_typ": [15, 21], "conv_output_z_typ": [12, 14], "conv_z_shot_to_z_data": [12, 14], "converg": [3, 15], "convers": [14, 17], "conversion_coor_shot": [0, 12], "convert": [2, 3, 4, 14, 17, 22], "convert_line_list": [3, 4], "convert_opk_to_xyz": [16, 17], "coodin": 14, "coor": [0, 1, 3, 14], "coor2d": 1, "coor_2d": 1, "coor_eucli": [3, 18], "coor_gcp": 1, "coor_img": 13, "coor_init": 15, "coor_world": [3, 13, 14], "coordin": [1, 2, 3, 6, 8, 13, 14, 15, 18, 22], "coordinn": 18, "coordonne": 15, "copoint": 15, "correct": [1, 2, 10, 17, 21, 22], "correspond": 15, "cr": 3, "creat": [2, 3], "create_grid_rpc": [0, 2], "create_mat_a_and_vect_residu": [12, 15], "creation": [2, 15, 19], "cubic": 1, "cval": 1, "data": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 21, 22], "data_input": 4, "data_list": 11, "datafram": [9, 15, 21, 22], "datastruct": [0, 24], "de": 1, "definit": 1, "degre": [1, 2, 3, 10, 17, 18, 22], "depend": [15, 21], "describ": 2, "design": 19, "df": 22, "dfpt": 15, "dict": [1, 2, 10, 11, 15, 17, 22], "dictionari": [2, 11, 22], "dictionnari": 15, "diff": 17, "differ": 21, "differenti": [1, 18], "digit": 1, "dim": [17, 18], "dimens": 17, "direct": 15, "dist_2pt": [16, 18], "distanc": [15, 18], "distant": 15, "distort": 1, "do": 15, "dtm": [0, 13, 19, 24], "du": 14, "dx": 15, "d\u00e9fault": 14, "e": [10, 17], "each": 15, "edg": 1, "elem": 20, "element": [4, 15, 17, 20], "elementtre": [2, 20], "elev": 1, "enough": 15, "epsg": [0, 1, 3, 4, 22], "epsg_out": 3, "epsg_output": [0, 3, 22], "equat": [3, 15], "error": [1, 17], "et": [2, 20], "etre": [2, 20], "eucli": 15, "eucli_to_bundl": [12, 14], "eucli_to_imag": [12, 14], "eucli_to_world": [0, 3], "euclidean": [1, 3, 14, 15, 18, 21], "euclidean_proj": [0, 24], "euclideanproj": [0, 3], "euclidian": 3, "euclidien": 15, "ex": [1, 3], "extern": [8, 15], "externa": 15, "extract": [1, 3], "fact_rpc": [2, 22], "factor": [1, 2, 3, 15, 22], "fals": [14, 17, 21], "field": 15, "file": [1, 2, 4, 6, 7, 8, 9, 10, 11, 17, 20, 22], "fill": 1, "first": [15, 18], "fisrt": 18, "fix": 15, "flaot": 1, "flip": 18, "float": [1, 3, 14, 15, 17, 18], "focal": [0, 1], "folder": 22, "folder_con": 22, "folder_rpc": 22, "form": 1, "formal": 17, "format": [0, 1, 9, 17, 20, 22, 24], "format_xml": [16, 20], "frame": 18, "frist": 15, "from": [2, 3, 6, 7, 8, 13, 15, 20], "from_param_euclidean": [0, 1], "from_shot": [0, 2], "func_least_squar": [12, 15], "function": [3, 10, 11, 13, 14, 17, 18, 20, 22], "g": [10, 17], "gcp": [0, 6, 15, 21, 24], "gcp2d": [1, 9, 15, 17, 21], "gcp3d": [9, 15, 17], "gdal": 1, "gener": 6, "geoc_to_carto": [0, 3], "geodesi": [0, 24], "geog_to_carto": [0, 3], "geog_to_geoid": [0, 3], "geograph": [2, 3], "geoid": [0, 1, 3], "geoid_to_geog": [0, 3], "geometri": 2, "georeferenc": 1, "geotiff": 1, "geoview": [2, 4, 7], "get": [1, 18, 21], "get_attr_transfo_pt": [0, 21], "get_coor_pt_img_and_world": [0, 21], "get_meridian_converg": [0, 3], "get_point_image_datafram": [0, 21], "get_point_world_datafram": [0, 21], "get_scale_factor": [0, 3], "get_type_z_and_head": [16, 17], "get_z_add_scale_factor": [0, 1], "get_z_remove_scale_factor": [0, 1], "get_z_world": [0, 1], "give": 1, "given": [14, 15], "good": 17, "grid": [1, 2], "grid_img": 2, "grid_world": 2, "ground": [1, 6, 11, 14, 15], "gt": 13, "h": [1, 17], "head": 17, "header": [4, 9, 10, 17, 22], "height": [0, 1, 3, 14, 15, 17], "i": [1, 2, 3, 9, 10, 14, 15, 17, 19, 20, 21, 22], "id_img": [15, 21], "id_pt": [15, 21], "ign": [1, 2, 7], "imag": [1, 2, 6, 8, 11, 13, 14, 15, 18, 21], "image_to_bundl": [12, 14], "image_to_world": [12, 13, 14], "image_world_intersect": [0, 12], "image_world_it": [12, 14], "image_world_least_squar": [0, 12], "image_world_shot": [0, 12], "image_world_work": [0, 12], "image_z_to_world": [12, 14], "imageworldshot": [12, 14], "imageworldwork": [12, 15], "imc_adjust": 15, "img_coor": 14, "img_norm": 2, "implement": [3, 20], "indent": [16, 20], "index": [18, 23], "inform": [1, 10, 17, 22], "init": 3, "init_eucli_point": [12, 15], "init_kappa": [12, 15], "initi": 15, "input": [4, 14], "instanc": 19, "instanti": [3, 19], "int": [1, 2, 3, 15, 20], "inter": 15, "interpol": 1, "intersect": 15, "intersection_line_3d": [12, 15], "intersection_pt_in_2shot": [12, 15], "interv": [10, 17], "invers": 18, "invert_diag_sparse_matrix_3_3": [16, 18], "io": 11, "item": 20, "its": 15, "j": [10, 17], "kappa": [1, 15], "keep_in_memori": 1, "keep_memori": 1, "kei": [1, 2, 10, 17, 22], "known": 3, "kwarg": [1, 3], "l": [2, 14], "l_ob": 15, "la": 14, "lcode": 15, "least": [2, 15], "least_square_intersect": [12, 15], "least_square_rpc": [0, 2], "least_square_shot": [12, 15], "letter": 17, "level": 20, "lib": [2, 6, 7, 8, 20], "light": 2, "linalt": 2, "line": [1, 2, 4, 10, 13, 14, 15, 17, 21], "linear": [1, 2, 10, 14, 17, 22], "linear_alter": [1, 10, 17, 21, 22], "link": [1, 21], "list": [1, 3, 4, 9, 10, 11, 15, 17, 20, 21, 22], "list_data": 4, "list_lett": 17, "list_shot": 15, "local": [3, 14], "local_euclidean_proj": [0, 24], "local_to_eucli": [12, 14], "localeuclideanproj": [0, 3], "m": 18, "maco": 2, "main": 21, "main_stat_and_sav": [0, 11], "main_stat_image_to_world": [0, 11], "main_stat_world_to_imag": [0, 11], "make": 15, "manag": [9, 17], "manage_image_world": [12, 15], "manage_read": [0, 9], "manage_writ": [0, 24], "manager_writ": [0, 22], "manipul": [1, 3], "mapinfo": 4, "marker": 15, "mat": [3, 18], "mat_a": 15, "mat_eucli": 3, "mat_eucli_to_mat": [0, 3], "mat_inv": 18, "mat_obs_axia": [12, 15], "mat_ori_eucli": 1, "mat_rot_eucli": 1, "mat_rot_euclidean_loc": [0, 3], "mat_to_mat_eucli": [0, 3], "math": 18, "matric": [1, 21], "matrix": [1, 2, 3, 10, 15, 17, 18, 22], "max": [11, 18], "me": 9, "mean": [1, 11, 15], "median": 11, "memori": 1, "meridian": 3, "messag": 17, "method": [1, 2, 15], "min": [11, 18], "min_max_pt": [16, 18], "miscellan": [0, 16], "misss": 17, "model": 1, "modifi": [1, 14], "modul": [23, 24], "most": 15, "ms_error": 17, "ms_error_lett": 17, "must": [1, 3, 17], "n": [17, 18], "nadir": [1, 14], "name": [1, 15, 20, 21, 22], "name_cam": 1, "name_camera": [0, 1], "name_gcp": [0, 1], "name_opk": 22, "name_point": [1, 15], "name_pt": 15, "name_shot": [1, 15, 21], "nbr_inc": 15, "nbr_ob": 15, "ndarrai": [1, 2, 3, 13, 14, 15, 17, 18, 21], "nearest": 1, "need": 9, "new": [1, 3], "nodata": 1, "nonadir": 14, "none": [1, 2, 3, 6, 7, 8, 9, 10, 11, 15, 17, 20, 21, 22], "normal": [2, 16, 18], "normalize_data": [0, 2], "np": [1, 2, 3, 13, 14, 15, 17, 18, 21], "number": [15, 20], "numpi": 1, "ob": 15, "object": [1, 2, 3, 4, 10, 11, 13, 14, 15, 19], "obs_imag": [15, 21], "observ": [2, 15], "offset": 18, "omega": [1, 15], "one": [1, 2, 6, 18], "oopk": 17, "opk": [6, 7, 10, 17, 22], "order": [1, 2, 10, 17, 21, 22], "order_ax": [1, 10, 17, 21, 22], "ori": 2, "ori_shot": 1, "orient": [0, 1, 9, 15], "other": [10, 22], "output": [3, 4, 14, 17, 22], "outsid": 1, "p_add_data": [0, 5], "p_add_shot": [0, 5], "p_bundl": 14, "p_control": [0, 5], "p_eucli": 14, "p_file_gcp2d": [0, 5], "p_file_gcp3d": [0, 5], "p_format": [0, 5], "p_func": [0, 5], "p_gen_param": [0, 5], "p_image_world": [0, 5], "p_pt2d": [0, 5], "p_pt3d": [0, 5], "p_read_opk": [0, 5], "p_spaceresect": [0, 5], "p_unit_shot": [0, 5], "p_world_imag": [0, 5], "p_write": [0, 5], "p_write_con": [0, 5], "p_write_opk": [0, 5], "p_write_rpc": [0, 5], "packag": [23, 24], "page": 23, "panda": 21, "par": 14, "param_bundl": [0, 16], "param_con": 22, "param_rpc": [2, 22], "paramet": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 21, 22], "parent": [3, 13], "parser": [6, 7, 8], "part": 1, "past": 1, "path": [1, 2, 9, 10, 22], "path_con": 2, "path_dtm": 1, "path_geoid": 1, "path_opk": 22, "pathoutput": 11, "pathreturn": 22, "pattern": 19, "pd": [9, 15, 21, 22], "pd_me": [15, 21], "pd_mes_temp": 15, "pd_pnt": 15, "percentag": 15, "perform": 1, "phi": [1, 15], "photogrametriqu": 8, "photogrammetr": [10, 22], "photogrammetri": [10, 22], "pinit": 15, "pixel": [1, 15], "point": [1, 2, 3, 6, 9, 11, 14, 15, 17, 18, 21], "point1": 15, "point2": 15, "polynom": [2, 22], "polynomi": 2, "polynomial_degre": 2, "porject": 1, "pos_eucli": [1, 14], "pos_shot": 1, "pos_shot_eucli": 1, "posit": [1, 14, 15, 18], "possibl": 17, "ppai": [0, 1], "ppax": [0, 1], "prec": 20, "precis": [1, 20], "process": [0, 14, 15, 24], "process_add_shot": [5, 6], "process_args_control": [5, 8], "process_args_gen_param": [5, 6], "process_args_read_opk": [5, 7], "process_args_write_con": [5, 7], "process_args_write_opk": [5, 7], "process_args_write_rpc": [5, 7], "process_gcp2d": [5, 6], "process_gcp3d": [5, 6], "process_image_world": [5, 6, 8], "process_space_resect": [5, 8], "process_world_imag": [5, 6, 8], "proj": [0, 2], "proj4": 4, "proj_engin": [0, 24], "project": [1, 2, 3, 22], "projectionlist": [0, 3], "projengin": [0, 1, 3, 19], "projeucli": 1, "properti": 3, "provid": 3, "pt1": 18, "pt2": 18, "pt2d": [9, 15], "pt3d": [9, 15], "pt_bundl": 14, "pt_eucli": 15, "pt_img": 15, "pt_world": [15, 21], "put": 20, "py": [2, 6, 7, 8, 20], "pyproj": 3, "python3": [2, 6, 7, 8, 20], "quintic": 1, "r": 18, "radian": [1, 10, 17, 22], "rais": 1, "random": 15, "ratat": 17, "read": [1, 2, 6, 7, 9, 10, 17], "read_camera": [0, 9], "read_file_pt": [0, 9], "read_file_pt_datafram": [0, 9], "reader": [0, 17, 24], "reader_camera": [0, 24], "reader_opk": [0, 9], "reader_orient": [9, 10], "reader_point": [0, 24], "recalcul": 15, "recalcult": 15, "record": 22, "recov": 21, "refer": [3, 4, 18], "registr": 22, "remov": 1, "replac": 17, "repres": [1, 3], "request": 21, "research": 4, "resect": 15, "residu": [11, 15], "ressourc": 21, "restrict": 19, "result": [1, 15], "retriev": 21, "retun": 17, "return": [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 20, 21], "rotat": [1, 3, 10, 17, 18, 21, 22], "rpc": [0, 7, 22, 24], "same": 17, "save": [2, 9, 11, 21, 22], "save_conl": [0, 2], "save_stat_txt": [0, 11], "scale": [1, 3, 18], "scipi": 17, "script": [9, 10, 17], "sd": 4, "search": [15, 23], "search_info": [3, 4], "search_proj": [0, 3], "second": [15, 18], "seed_20_point": [12, 15], "self": [1, 13], "set": [1, 15, 17, 18, 21], "set_approx_eucli_proj": [0, 1], "set_camera_xml": [0, 2], "set_cval": [0, 1], "set_dtm": [0, 1], "set_epsg": [0, 3], "set_epsg_tf_geog_output": [0, 3], "set_geometry_xml": [0, 2], "set_keep_memori": [0, 1], "set_linear_alter": [0, 1], "set_ord": [0, 1], "set_order_ax": [0, 1], "set_param_bundle_diff": [16, 18], "set_param_eucli_shot": [0, 1], "set_param_shot": [0, 21], "set_point_image_datafram": [0, 21], "set_point_world_datafram": [0, 21], "set_proj": [0, 1], "set_rot_shot": [0, 1], "set_type_z": [0, 1], "set_type_z_data": [0, 1], "set_type_z_shot": [0, 1], "set_unit_angl": [0, 1], "set_unit_shot": [0, 21], "set_z_nadir": [0, 1], "setter": 3, "setup": [1, 2], "setup_matrix_obs_rpc": [0, 2], "shoot": 15, "shot": [0, 2, 6, 8, 10, 14, 15, 17, 18, 21, 24], "shot1": 15, "shot2": 15, "shot_adjust": 15, "sigma": 11, "singl": 19, "singleton": [0, 16], "site": [10, 11, 22], "size": 2, "size_grid": 2, "slinear": 1, "softwar": 2, "solv": 15, "sourc": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22], "space": 15, "space_resect": [0, 12], "space_resection_gap": [12, 15], "space_resection_on_worksit": [12, 15], "space_resection_shot": [12, 15], "space_resection_to_worksit": [12, 15], "spaceresect": [12, 15], "spars": [0, 16], "squar": [2, 15], "src": [2, 22], "stat": [0, 24], "stat_image_to_world": [0, 11], "stat_list": [0, 11], "stat_world_to_imag": [0, 11], "statist": [0, 24], "store": 1, "str": [1, 2, 4, 9, 10, 11, 14, 15, 17, 18, 20, 21, 22], "string": 21, "structur": 20, "submodul": [0, 5, 12, 16, 24], "subpackag": 24, "support": 1, "symbol": 17, "system": [1, 3, 14, 15, 21], "t": 15, "ta": 4, "tabl": [15, 21], "take": [14, 15, 21], "take_ob": [12, 15], "taken": [10, 17], "terrain": [14, 21], "textiowrapp": 11, "tf_output": [0, 3], "thei": [15, 17], "thi": 3, "tool": 21, "topaero": 4, "tranform": 3, "tranform_altitud": [0, 3], "tranform_height": [0, 3], "transform": [2, 3, 10, 13, 14, 15, 21], "transform_dtm": [0, 12], "transform_geodesi": [0, 24], "transform_shot": [0, 12], "transform_worksit": [0, 12], "transform_world_imag": [0, 24], "transformgeodesi": [0, 3], "transit": 3, "true": [1, 2, 10, 14, 17, 21, 22], "tubl": 15, "tupl": [2, 13, 15, 17, 18, 21], "two": [1, 15, 18], "txt": [4, 9, 11, 22], "type": [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20, 21, 22], "type_dtm": 1, "type_input": 4, "type_m": 18, "type_output": 4, "type_point": [9, 11, 15, 21], "type_process": 15, "type_pt": 17, "type_z": [1, 17, 21], "type_z_data": [1, 14], "type_z_input": 14, "type_z_output": 14, "type_z_shot": [1, 14], "u": 18, "u1": 18, "u2": 18, "u3": 18, "union": [3, 14, 17], "unit": [1, 6, 10, 17, 21, 22], "unit_angl": [1, 10, 17, 21, 22], "unit_data": 2, "unit_z_data": 2, "unit_z_shot": 2, "uniti": 2, "up": [1, 15, 18, 21], "us": [1, 3, 15, 21], "usr": [2, 6, 7, 8, 20], "util": [0, 24], "v": 18, "val": 20, "valid": 3, "valu": [1, 3, 15], "var": 11, "variabl": 17, "variat": 15, "variou": 17, "vect1": 15, "vect2": 15, "vector": [15, 17, 18], "verif": 17, "visibl": 15, "want": [1, 2, 14, 15, 21], "we": 18, "wgs84": [2, 22], "what": [15, 21], "when": [2, 22], "where": [15, 21], "which": [1, 3, 9, 15, 18], "whit": 1, "whose": 19, "width": [0, 1, 15], "without": [1, 17], "wkt": 4, "woksit": 15, "work": [6, 7, 8, 9, 10, 11, 12, 15, 18, 22], "workdata": [0, 21, 24], "worksid": 10, "worksit": [0, 1, 3, 6, 7, 8, 9, 10, 11, 14, 15, 22, 24], "world": [1, 2, 3, 6, 8, 11, 13, 14, 15, 21, 22], "world_image_dtm": [0, 12], "world_image_shot": [0, 12], "world_image_work": [0, 12], "world_norm": 2, "world_to_eucli": [0, 3], "world_to_imag": [12, 13, 14], "worldimagedtm": [1, 12, 13], "worldimageshot": [12, 14], "worldimagework": [12, 15], "worldintersect": [12, 15], "worldleastsquar": [12, 15], "write": [0, 2, 6, 7, 11, 20, 22], "write_df_to_txt": [0, 22], "write_stat": [0, 11], "writer": [0, 24], "writer_con": [0, 24], "writer_df_to_txt": [0, 24], "writer_opk": [0, 24], "writer_rpc": [0, 24], "x": [1, 2, 3, 13, 14, 15, 17, 21], "x_carto": 3, "x_central": [0, 3], "x_col": 14, "xml": [0, 2, 9, 16], "y": [1, 2, 3, 13, 14, 15, 17, 21], "y_carto": 3, "y_central": [0, 3], "y_line": 14, "you": [1, 2, 14, 15, 21], "your": 21, "z": [1, 2, 3, 14, 15, 17, 21], "z_nadir": 1}, "titles": ["borea package", "borea.datastruct package", "borea.format package", "borea.geodesy package", "borea.geodesy.projectionlist package", "borea.process package", "borea.process.p_add_data package", "borea.process.p_format package", "borea.process.p_func package", "borea.reader package", "borea.reader.orientation package", "borea.stat package", "borea.transform_world_image package", "borea.transform_world_image.transform_dtm package", "borea.transform_world_image.transform_shot package", "borea.transform_world_image.transform_worksite package", "borea.utils package", "borea.utils.check package", "borea.utils.miscellaneous package", "borea.utils.singleton package", "borea.utils.xml package", "borea.worksite package", "borea.writer package", "Welcome to Pink_Lady\u2019s documentation!", "borea"], "titleterms": {"": 23, "approx_euclidean_proj": 3, "borea": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24], "camera": 1, "check": 17, "check_args_opk": 17, "check_args_reader_pt": 17, "check_arrai": 17, "check_head": 17, "check_order_ax": 17, "conl": 2, "content": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "conversion_coor_shot": 14, "datastruct": 1, "document": 23, "dtm": 1, "euclidean_proj": 3, "format": 2, "gcp": 1, "geodesi": [3, 4], "image_world_intersect": 15, "image_world_least_squar": 15, "image_world_shot": 14, "image_world_work": 15, "indic": 23, "local_euclidean_proj": 3, "manage_read": 10, "manage_writ": 22, "miscellan": 18, "modul": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "orient": 10, "p_add_data": 6, "p_add_shot": 6, "p_control": 8, "p_file_gcp2d": 6, "p_file_gcp3d": 6, "p_format": 7, "p_func": 8, "p_gen_param": 6, "p_image_world": 8, "p_pt2d": 6, "p_pt3d": 6, "p_read_opk": 7, "p_spaceresect": 8, "p_unit_shot": 6, "p_world_imag": 8, "p_write": 6, "p_write_con": 7, "p_write_opk": 7, "p_write_rpc": 7, "packag": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "param_bundl": 18, "pink_ladi": 23, "process": [5, 6, 7, 8], "proj_engin": 3, "projectionlist": 4, "reader": [9, 10], "reader_camera": 9, "reader_opk": 10, "reader_point": 9, "rpc": 2, "search_proj": 4, "shot": 1, "singleton": 19, "space_resect": 15, "spars": 18, "stat": 11, "statist": 11, "submodul": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22], "subpackag": [0, 3, 5, 9, 12, 16], "tabl": 23, "transform_dtm": 13, "transform_geodesi": 3, "transform_shot": 14, "transform_worksit": 15, "transform_world_imag": [12, 13, 14, 15], "util": [16, 17, 18, 19, 20], "welcom": 23, "workdata": 1, "worksit": 21, "world_image_dtm": 13, "world_image_shot": 14, "world_image_work": 15, "writer": 22, "writer_con": 22, "writer_df_to_txt": 22, "writer_opk": 22, "writer_rpc": 22, "xml": 20}}) \ No newline at end of file +Search.setIndex({"alltitles": {"Contents:": [[23, null]], "Indices and tables": [[23, "indices-and-tables"]], "Module contents": [[0, "module-borea"], [1, "module-borea.datastruct"], [2, "module-borea.format"], [3, "module-borea.geodesy"], [4, "module-borea.geodesy.projectionlist"], [5, "module-borea.process"], [6, "module-borea.process.p_add_data"], [7, "module-borea.process.p_format"], [8, "module-borea.process.p_func"], [9, "module-borea.reader"], [10, "module-borea.reader.orientation"], [11, "module-borea.stat"], [12, "module-borea.transform_world_image"], [13, "module-borea.transform_world_image.transform_dtm"], [14, "module-borea.transform_world_image.transform_shot"], [15, "module-borea.transform_world_image.transform_worksite"], [16, "module-borea.utils"], [17, "module-borea.utils.check"], [18, "module-borea.utils.miscellaneous"], [19, "module-borea.utils.singleton"], [20, "module-borea.utils.xml"], [21, "module-borea.worksite"], [22, "module-borea.writer"]], "Submodules": [[1, "submodules"], [2, "submodules"], [3, "submodules"], [4, "submodules"], [6, "submodules"], [7, "submodules"], [8, "submodules"], [9, "submodules"], [10, "submodules"], [11, "submodules"], [13, "submodules"], [14, "submodules"], [15, "submodules"], [17, "submodules"], [18, "submodules"], [19, "submodules"], [20, "submodules"], [21, "submodules"], [22, "submodules"]], "Subpackages": [[0, "subpackages"], [3, "subpackages"], [5, "subpackages"], [9, "subpackages"], [12, "subpackages"], [16, "subpackages"]], "Welcome to Pink_Lady\u2019s documentation!": [[23, null]], "borea": [[24, null]], "borea package": [[0, null]], "borea.datastruct package": [[1, null]], "borea.datastruct.camera module": [[1, "module-borea.datastruct.camera"]], "borea.datastruct.dtm module": [[1, "module-borea.datastruct.dtm"]], "borea.datastruct.gcp module": [[1, "module-borea.datastruct.gcp"]], "borea.datastruct.shot module": [[1, "module-borea.datastruct.shot"]], "borea.datastruct.workdata module": [[1, "module-borea.datastruct.workdata"]], "borea.format package": [[2, null]], "borea.format.conl module": [[2, "module-borea.format.conl"]], "borea.format.rpc module": [[2, "module-borea.format.rpc"]], "borea.geodesy package": [[3, null]], "borea.geodesy.approx_euclidean_proj module": [[3, "module-borea.geodesy.approx_euclidean_proj"]], "borea.geodesy.euclidean_proj module": [[3, "module-borea.geodesy.euclidean_proj"]], "borea.geodesy.local_euclidean_proj module": [[3, "module-borea.geodesy.local_euclidean_proj"]], "borea.geodesy.proj_engine module": [[3, "module-borea.geodesy.proj_engine"]], "borea.geodesy.projectionlist package": [[4, null]], "borea.geodesy.projectionlist.search_proj module": [[4, "module-borea.geodesy.projectionlist.search_proj"]], "borea.geodesy.transform_geodesy module": [[3, "module-borea.geodesy.transform_geodesy"]], "borea.process package": [[5, null]], "borea.process.p_add_data package": [[6, null]], "borea.process.p_add_data.p_add_shot module": [[6, "module-borea.process.p_add_data.p_add_shot"]], "borea.process.p_add_data.p_file_gcp2d module": [[6, "module-borea.process.p_add_data.p_file_gcp2d"]], "borea.process.p_add_data.p_file_gcp3d module": [[6, "module-borea.process.p_add_data.p_file_gcp3d"]], "borea.process.p_add_data.p_gen_param module": [[6, "module-borea.process.p_add_data.p_gen_param"]], "borea.process.p_add_data.p_pt2d module": [[6, "module-borea.process.p_add_data.p_pt2d"]], "borea.process.p_add_data.p_pt3d module": [[6, "module-borea.process.p_add_data.p_pt3d"]], "borea.process.p_add_data.p_unit_shot module": [[6, "module-borea.process.p_add_data.p_unit_shot"]], "borea.process.p_add_data.p_write module": [[6, "module-borea.process.p_add_data.p_write"]], "borea.process.p_format package": [[7, null]], "borea.process.p_format.p_read_opk module": [[7, "module-borea.process.p_format.p_read_opk"]], "borea.process.p_format.p_write_con module": [[7, "module-borea.process.p_format.p_write_con"]], "borea.process.p_format.p_write_opk module": [[7, "module-borea.process.p_format.p_write_opk"]], "borea.process.p_format.p_write_rpc module": [[7, "module-borea.process.p_format.p_write_rpc"]], "borea.process.p_func package": [[8, null]], "borea.process.p_func.p_control module": [[8, "module-borea.process.p_func.p_control"]], "borea.process.p_func.p_image_world module": [[8, "module-borea.process.p_func.p_image_world"]], "borea.process.p_func.p_spaceresection module": [[8, "module-borea.process.p_func.p_spaceresection"]], "borea.process.p_func.p_world_image module": [[8, "module-borea.process.p_func.p_world_image"]], "borea.reader package": [[9, null]], "borea.reader.orientation package": [[10, null]], "borea.reader.orientation.manage_reader module": [[10, "module-borea.reader.orientation.manage_reader"]], "borea.reader.orientation.reader_opk module": [[10, "module-borea.reader.orientation.reader_opk"]], "borea.reader.reader_camera module": [[9, "module-borea.reader.reader_camera"]], "borea.reader.reader_point module": [[9, "module-borea.reader.reader_point"]], "borea.stat package": [[11, null]], "borea.stat.statistics module": [[11, "module-borea.stat.statistics"]], "borea.transform_world_image package": [[12, null]], "borea.transform_world_image.transform_dtm package": [[13, null]], "borea.transform_world_image.transform_dtm.world_image_dtm module": [[13, "module-borea.transform_world_image.transform_dtm.world_image_dtm"]], "borea.transform_world_image.transform_shot package": [[14, null]], "borea.transform_world_image.transform_shot.conversion_coor_shot module": [[14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot"]], "borea.transform_world_image.transform_shot.image_world_shot module": [[14, "module-borea.transform_world_image.transform_shot.image_world_shot"]], "borea.transform_world_image.transform_shot.world_image_shot module": [[14, "module-borea.transform_world_image.transform_shot.world_image_shot"]], "borea.transform_world_image.transform_worksite package": [[15, null]], "borea.transform_world_image.transform_worksite.image_world_intersection module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_intersection"]], "borea.transform_world_image.transform_worksite.image_world_least_square module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_least_square"]], "borea.transform_world_image.transform_worksite.image_world_work module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_work"]], "borea.transform_world_image.transform_worksite.space_resection module": [[15, "module-borea.transform_world_image.transform_worksite.space_resection"]], "borea.transform_world_image.transform_worksite.world_image_work module": [[15, "module-borea.transform_world_image.transform_worksite.world_image_work"]], "borea.utils package": [[16, null]], "borea.utils.check package": [[17, null]], "borea.utils.check.check_args_opk module": [[17, "module-borea.utils.check.check_args_opk"]], "borea.utils.check.check_args_reader_pt module": [[17, "module-borea.utils.check.check_args_reader_pt"]], "borea.utils.check.check_array module": [[17, "module-borea.utils.check.check_array"]], "borea.utils.check.check_header module": [[17, "module-borea.utils.check.check_header"]], "borea.utils.check.check_order_axe module": [[17, "module-borea.utils.check.check_order_axe"]], "borea.utils.miscellaneous package": [[18, null]], "borea.utils.miscellaneous.miscellaneous module": [[18, "module-borea.utils.miscellaneous.miscellaneous"]], "borea.utils.miscellaneous.param_bundle module": [[18, "module-borea.utils.miscellaneous.param_bundle"]], "borea.utils.miscellaneous.sparse module": [[18, "module-borea.utils.miscellaneous.sparse"]], "borea.utils.singleton package": [[19, null]], "borea.utils.singleton.singleton module": [[19, "module-borea.utils.singleton.singleton"]], "borea.utils.xml package": [[20, null]], "borea.utils.xml.xml module": [[20, "module-borea.utils.xml.xml"]], "borea.worksite package": [[21, null]], "borea.worksite.worksite module": [[21, "module-borea.worksite.worksite"]], "borea.writer package": [[22, null]], "borea.writer.manage_writer module": [[22, "module-borea.writer.manage_writer"]], "borea.writer.writer_con module": [[22, "module-borea.writer.writer_con"]], "borea.writer.writer_df_to_txt module": [[22, "module-borea.writer.writer_df_to_txt"]], "borea.writer.writer_opk module": [[22, "module-borea.writer.writer_opk"]], "borea.writer.writer_rpc module": [[22, "module-borea.writer.writer_rpc"]]}, "docnames": ["borea", "borea.datastruct", "borea.format", "borea.geodesy", "borea.geodesy.projectionlist", "borea.process", "borea.process.p_add_data", "borea.process.p_format", "borea.process.p_func", "borea.reader", "borea.reader.orientation", "borea.stat", "borea.transform_world_image", "borea.transform_world_image.transform_dtm", "borea.transform_world_image.transform_shot", "borea.transform_world_image.transform_worksite", "borea.utils", "borea.utils.check", "borea.utils.miscellaneous", "borea.utils.singleton", "borea.utils.xml", "borea.worksite", "borea.writer", "index", "modules"], "envversion": {"sphinx": 63, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["borea.rst", "borea.datastruct.rst", "borea.format.rst", "borea.geodesy.rst", "borea.geodesy.projectionlist.rst", "borea.process.rst", "borea.process.p_add_data.rst", "borea.process.p_format.rst", "borea.process.p_func.rst", "borea.reader.rst", "borea.reader.orientation.rst", "borea.stat.rst", "borea.transform_world_image.rst", "borea.transform_world_image.transform_dtm.rst", "borea.transform_world_image.transform_shot.rst", "borea.transform_world_image.transform_worksite.rst", "borea.utils.rst", "borea.utils.check.rst", "borea.utils.miscellaneous.rst", "borea.utils.singleton.rst", "borea.utils.xml.rst", "borea.worksite.rst", "borea.writer.rst", "index.rst", "modules.rst"], "indexentries": {"add_camera() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_camera", false]], "add_co_point() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_co_point", false]], "add_elem() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.add_elem", false]], "add_gcp2d() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_gcp2d", false]], "add_gcp3d() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_gcp3d", false]], "add_shot() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_shot", false]], "angle_degree_2vect() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.angle_degree_2vect", false]], "approxeuclideanproj (class in borea.geodesy.approx_euclidean_proj)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj", false]], "args_add_pt2d() (in module borea.process.p_add_data.p_pt2d)": [[6, "borea.process.p_add_data.p_pt2d.args_add_pt2d", false]], "args_add_pt3d() (in module borea.process.p_add_data.p_pt3d)": [[6, "borea.process.p_add_data.p_pt3d.args_add_pt3d", false]], "args_add_shot() (in module borea.process.p_add_data.p_add_shot)": [[6, "borea.process.p_add_data.p_add_shot.args_add_shot", false]], "args_control() (in module borea.process.p_func.p_control)": [[8, "borea.process.p_func.p_control.args_control", false]], "args_gcp2d() (in module borea.process.p_add_data.p_file_gcp2d)": [[6, "borea.process.p_add_data.p_file_gcp2d.args_gcp2d", false]], "args_gcp3d() (in module borea.process.p_add_data.p_file_gcp3d)": [[6, "borea.process.p_add_data.p_file_gcp3d.args_gcp3d", false]], "args_general_param() (in module borea.process.p_add_data.p_gen_param)": [[6, "borea.process.p_add_data.p_gen_param.args_general_param", false]], "args_image_world() (in module borea.process.p_func.p_image_world)": [[8, "borea.process.p_func.p_image_world.args_image_world", false]], "args_input_shot() (in module borea.process.p_add_data.p_unit_shot)": [[6, "borea.process.p_add_data.p_unit_shot.args_input_shot", false]], "args_output_shot() (in module borea.process.p_add_data.p_unit_shot)": [[6, "borea.process.p_add_data.p_unit_shot.args_output_shot", false]], "args_reading_opk() (in module borea.process.p_format.p_read_opk)": [[7, "borea.process.p_format.p_read_opk.args_reading_opk", false]], "args_space_resection() (in module borea.process.p_func.p_spaceresection)": [[8, "borea.process.p_func.p_spaceresection.args_space_resection", false]], "args_world_image() (in module borea.process.p_func.p_world_image)": [[8, "borea.process.p_func.p_world_image.args_world_image", false]], "args_write_con() (in module borea.process.p_format.p_write_con)": [[7, "borea.process.p_format.p_write_con.args_write_con", false]], "args_writer() (in module borea.process.p_add_data.p_write)": [[6, "borea.process.p_add_data.p_write.args_writer", false]], "args_writing_opk() (in module borea.process.p_format.p_write_opk)": [[7, "borea.process.p_format.p_write_opk.args_writing_opk", false]], "args_writing_rpc() (in module borea.process.p_format.p_write_rpc)": [[7, "borea.process.p_format.p_write_rpc.args_writing_rpc", false]], "borea": [[0, "module-borea", false]], "borea.datastruct": [[1, "module-borea.datastruct", false]], "borea.datastruct.camera": [[1, "module-borea.datastruct.camera", false]], "borea.datastruct.dtm": [[1, "module-borea.datastruct.dtm", false]], "borea.datastruct.gcp": [[1, "module-borea.datastruct.gcp", false]], "borea.datastruct.shot": [[1, "module-borea.datastruct.shot", false]], "borea.datastruct.workdata": [[1, "module-borea.datastruct.workdata", false]], "borea.format": [[2, "module-borea.format", false]], "borea.format.conl": [[2, "module-borea.format.conl", false]], "borea.format.rpc": [[2, "module-borea.format.rpc", false]], "borea.geodesy": [[3, "module-borea.geodesy", false]], "borea.geodesy.approx_euclidean_proj": [[3, "module-borea.geodesy.approx_euclidean_proj", false]], "borea.geodesy.euclidean_proj": [[3, "module-borea.geodesy.euclidean_proj", false]], "borea.geodesy.local_euclidean_proj": [[3, "module-borea.geodesy.local_euclidean_proj", false]], "borea.geodesy.proj_engine": [[3, "module-borea.geodesy.proj_engine", false]], "borea.geodesy.projectionlist": [[4, "module-borea.geodesy.projectionlist", false]], "borea.geodesy.projectionlist.search_proj": [[4, "module-borea.geodesy.projectionlist.search_proj", false]], "borea.geodesy.transform_geodesy": [[3, "module-borea.geodesy.transform_geodesy", false]], "borea.process": [[5, "module-borea.process", false]], "borea.process.p_add_data": [[6, "module-borea.process.p_add_data", false]], "borea.process.p_add_data.p_add_shot": [[6, "module-borea.process.p_add_data.p_add_shot", false]], "borea.process.p_add_data.p_file_gcp2d": [[6, "module-borea.process.p_add_data.p_file_gcp2d", false]], "borea.process.p_add_data.p_file_gcp3d": [[6, "module-borea.process.p_add_data.p_file_gcp3d", false]], "borea.process.p_add_data.p_gen_param": [[6, "module-borea.process.p_add_data.p_gen_param", false]], "borea.process.p_add_data.p_pt2d": [[6, "module-borea.process.p_add_data.p_pt2d", false]], "borea.process.p_add_data.p_pt3d": [[6, "module-borea.process.p_add_data.p_pt3d", false]], "borea.process.p_add_data.p_unit_shot": [[6, "module-borea.process.p_add_data.p_unit_shot", false]], "borea.process.p_add_data.p_write": [[6, "module-borea.process.p_add_data.p_write", false]], "borea.process.p_format": [[7, "module-borea.process.p_format", false]], "borea.process.p_format.p_read_opk": [[7, "module-borea.process.p_format.p_read_opk", false]], "borea.process.p_format.p_write_con": [[7, "module-borea.process.p_format.p_write_con", false]], "borea.process.p_format.p_write_opk": [[7, "module-borea.process.p_format.p_write_opk", false]], "borea.process.p_format.p_write_rpc": [[7, "module-borea.process.p_format.p_write_rpc", false]], "borea.process.p_func": [[8, "module-borea.process.p_func", false]], "borea.process.p_func.p_control": [[8, "module-borea.process.p_func.p_control", false]], "borea.process.p_func.p_image_world": [[8, "module-borea.process.p_func.p_image_world", false]], "borea.process.p_func.p_spaceresection": [[8, "module-borea.process.p_func.p_spaceresection", false]], "borea.process.p_func.p_world_image": [[8, "module-borea.process.p_func.p_world_image", false]], "borea.reader": [[9, "module-borea.reader", false]], "borea.reader.orientation": [[10, "module-borea.reader.orientation", false]], "borea.reader.orientation.manage_reader": [[10, "module-borea.reader.orientation.manage_reader", false]], "borea.reader.orientation.reader_opk": [[10, "module-borea.reader.orientation.reader_opk", false]], "borea.reader.reader_camera": [[9, "module-borea.reader.reader_camera", false]], "borea.reader.reader_point": [[9, "module-borea.reader.reader_point", false]], "borea.stat": [[11, "module-borea.stat", false]], "borea.stat.statistics": [[11, "module-borea.stat.statistics", false]], "borea.transform_world_image": [[12, "module-borea.transform_world_image", false]], "borea.transform_world_image.transform_dtm": [[13, "module-borea.transform_world_image.transform_dtm", false]], "borea.transform_world_image.transform_dtm.world_image_dtm": [[13, "module-borea.transform_world_image.transform_dtm.world_image_dtm", false]], "borea.transform_world_image.transform_shot": [[14, "module-borea.transform_world_image.transform_shot", false]], "borea.transform_world_image.transform_shot.conversion_coor_shot": [[14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot", false]], "borea.transform_world_image.transform_shot.image_world_shot": [[14, "module-borea.transform_world_image.transform_shot.image_world_shot", false]], "borea.transform_world_image.transform_shot.world_image_shot": [[14, "module-borea.transform_world_image.transform_shot.world_image_shot", false]], "borea.transform_world_image.transform_worksite": [[15, "module-borea.transform_world_image.transform_worksite", false]], "borea.transform_world_image.transform_worksite.image_world_intersection": [[15, "module-borea.transform_world_image.transform_worksite.image_world_intersection", false]], "borea.transform_world_image.transform_worksite.image_world_least_square": [[15, "module-borea.transform_world_image.transform_worksite.image_world_least_square", false]], "borea.transform_world_image.transform_worksite.image_world_work": [[15, "module-borea.transform_world_image.transform_worksite.image_world_work", false]], "borea.transform_world_image.transform_worksite.space_resection": [[15, "module-borea.transform_world_image.transform_worksite.space_resection", false]], "borea.transform_world_image.transform_worksite.world_image_work": [[15, "module-borea.transform_world_image.transform_worksite.world_image_work", false]], "borea.utils": [[16, "module-borea.utils", false]], "borea.utils.check": [[17, "module-borea.utils.check", false]], "borea.utils.check.check_args_opk": [[17, "module-borea.utils.check.check_args_opk", false]], "borea.utils.check.check_args_reader_pt": [[17, "module-borea.utils.check.check_args_reader_pt", false]], "borea.utils.check.check_array": [[17, "module-borea.utils.check.check_array", false]], "borea.utils.check.check_header": [[17, "module-borea.utils.check.check_header", false]], "borea.utils.check.check_order_axe": [[17, "module-borea.utils.check.check_order_axe", false]], "borea.utils.miscellaneous": [[18, "module-borea.utils.miscellaneous", false]], "borea.utils.miscellaneous.miscellaneous": [[18, "module-borea.utils.miscellaneous.miscellaneous", false]], "borea.utils.miscellaneous.param_bundle": [[18, "module-borea.utils.miscellaneous.param_bundle", false]], "borea.utils.miscellaneous.sparse": [[18, "module-borea.utils.miscellaneous.sparse", false]], "borea.utils.singleton": [[19, "module-borea.utils.singleton", false]], "borea.utils.singleton.singleton": [[19, "module-borea.utils.singleton.singleton", false]], "borea.utils.xml": [[20, "module-borea.utils.xml", false]], "borea.utils.xml.xml": [[20, "module-borea.utils.xml.xml", false]], "borea.worksite": [[21, "module-borea.worksite", false]], "borea.worksite.worksite": [[21, "module-borea.worksite.worksite", false]], "borea.writer": [[22, "module-borea.writer", false]], "borea.writer.manage_writer": [[22, "module-borea.writer.manage_writer", false]], "borea.writer.writer_con": [[22, "module-borea.writer.writer_con", false]], "borea.writer.writer_df_to_txt": [[22, "module-borea.writer.writer_df_to_txt", false]], "borea.writer.writer_opk": [[22, "module-borea.writer.writer_opk", false]], "borea.writer.writer_rpc": [[22, "module-borea.writer.writer_rpc", false]], "bundle_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.bundle_to_image", false]], "calculate_barycentre() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.calculate_barycentre", false]], "calculate_image_world_by_intersection() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.calculate_image_world_by_intersection", false]], "calculate_world_to_image() (borea.transform_world_image.transform_worksite.world_image_work.worldimagework method)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork.calculate_world_to_image", false]], "cam (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.cam", false]], "camera (class in borea.datastruct.camera)": [[1, "borea.datastruct.camera.Camera", false]], "camera_txt() (in module borea.reader.reader_camera)": [[9, "borea.reader.reader_camera.camera_txt", false]], "carto_to_geoc (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.carto_to_geoc", false]], "carto_to_geog (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.carto_to_geog", false]], "check_args_opk() (in module borea.utils.check.check_args_opk)": [[17, "borea.utils.check.check_args_opk.check_args_opk", false]], "check_array_transfo() (in module borea.utils.check.check_array)": [[17, "borea.utils.check.check_array.check_array_transfo", false]], "check_h_z() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.check_h_z", false]], "check_head() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.check_head", false]], "check_header_file() (in module borea.utils.check.check_args_opk)": [[17, "borea.utils.check.check_args_opk.check_header_file", false]], "check_header_file() (in module borea.utils.check.check_args_reader_pt)": [[17, "borea.utils.check.check_args_reader_pt.check_header_file", false]], "check_order_axe() (in module borea.utils.check.check_order_axe)": [[17, "borea.utils.check.check_order_axe.check_order_axe", false]], "clear() (borea.utils.singleton.singleton.singleton method)": [[19, "borea.utils.singleton.singleton.Singleton.clear", false]], "code (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.code", false]], "comput_inter_in_2_more_distant_shot() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.comput_inter_in_2_more_distant_shot", false]], "compute_image_world_least_square() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.compute_image_world_least_square", false]], "conl (class in borea.format.conl)": [[2, "borea.format.conl.Conl", false]], "conv_output_z_type() (in module borea.transform_world_image.transform_shot.conversion_coor_shot)": [[14, "borea.transform_world_image.transform_shot.conversion_coor_shot.conv_output_z_type", false]], "conv_z_shot_to_z_data() (in module borea.transform_world_image.transform_shot.conversion_coor_shot)": [[14, "borea.transform_world_image.transform_shot.conversion_coor_shot.conv_z_shot_to_z_data", false]], "convert_line_list() (in module borea.geodesy.projectionlist.search_proj)": [[4, "borea.geodesy.projectionlist.search_proj.convert_line_list", false]], "convert_opk_to_xyz() (in module borea.utils.check.check_order_axe)": [[17, "borea.utils.check.check_order_axe.convert_opk_to_xyz", false]], "coor (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.coor", false]], "create_grid_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.create_grid_rpc", false]], "create_mat_a_and_vect_residu() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.create_mat_a_and_vect_residu", false]], "dist_2pts() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.dist_2pts", false]], "dtm (class in borea.datastruct.dtm)": [[1, "borea.datastruct.dtm.Dtm", false]], "epsg (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.epsg", false]], "epsg_output (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.epsg_output", false]], "eucli_to_bundle() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.eucli_to_bundle", false]], "eucli_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.eucli_to_image", false]], "eucli_to_world() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.eucli_to_world", false]], "eucli_to_world() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.eucli_to_world", false]], "euclideanproj (class in borea.geodesy.euclidean_proj)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj", false]], "focal (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.focal", false]], "format_xml() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.format_xml", false]], "from_param_euclidean() (borea.datastruct.shot.shot class method)": [[1, "borea.datastruct.shot.Shot.from_param_euclidean", false]], "from_shot() (borea.format.rpc.rpc class method)": [[2, "borea.format.rpc.Rpc.from_shot", false]], "func_least_square() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.func_least_square", false]], "gcp (class in borea.datastruct.gcp)": [[1, "borea.datastruct.gcp.GCP", false]], "geoc_to_carto (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geoc_to_carto", false]], "geog_to_carto (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geog_to_carto", false]], "geog_to_geoid (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geog_to_geoid", false]], "geoid (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.geoid", false]], "geoid_to_geog (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geoid_to_geog", false]], "get_attr_transfo_pt() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_attr_transfo_pt", false]], "get_coor_pt_img_and_world() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_coor_pt_img_and_world", false]], "get_meridian_convergence() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.get_meridian_convergence", false]], "get_point_image_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_point_image_dataframe", false]], "get_point_world_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_point_world_dataframe", false]], "get_scale_factor() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.get_scale_factor", false]], "get_type_z_and_header() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.get_type_z_and_header", false]], "get_z_add_scale_factor() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.get_z_add_scale_factor", false]], "get_z_remove_scale_factor() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.get_z_remove_scale_factor", false]], "get_z_world() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.get_z_world", false]], "height (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.height", false]], "image_to_bundle() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_to_bundle", false]], "image_to_world() (borea.transform_world_image.transform_dtm.world_image_dtm.worldimagedtm method)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm.image_to_world", false]], "image_to_world() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_to_world", false]], "image_world_iter() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_world_iter", false]], "image_z_to_world() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_z_to_world", false]], "imageworldshot (class in borea.transform_world_image.transform_shot.image_world_shot)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot", false]], "imageworldwork (class in borea.transform_world_image.transform_worksite.image_world_work)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork", false]], "indent() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.indent", false]], "init_eucli_points() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.init_eucli_points", false]], "init_kappa() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.init_kappa", false]], "intersection_line_3d() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.intersection_line_3d", false]], "intersection_pt_in_2shot() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.intersection_pt_in_2shot", false]], "invert_diag_sparse_matrix_3_3() (in module borea.utils.miscellaneous.sparse)": [[18, "borea.utils.miscellaneous.sparse.invert_diag_sparse_matrix_3_3", false]], "least_square_intersect() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.least_square_intersect", false]], "least_square_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.least_square_rpc", false]], "least_square_shot() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.least_square_shot", false]], "local_to_eucli() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.local_to_eucli", false]], "localeuclideanproj (class in borea.geodesy.local_euclidean_proj)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj", false]], "main_stat_and_save() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_and_save", false]], "main_stat_image_to_world() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_image_to_world", false]], "main_stat_world_to_image() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_world_to_image", false]], "manage_image_world() (borea.transform_world_image.transform_worksite.image_world_work.imageworldwork method)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork.manage_image_world", false]], "manager_writer() (in module borea.writer.manage_writer)": [[22, "borea.writer.manage_writer.manager_writer", false]], "mat_eucli_to_mat() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.mat_eucli_to_mat", false]], "mat_eucli_to_mat() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_eucli_to_mat", false]], "mat_obs_axia() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.mat_obs_axia", false]], "mat_rot_euclidean_local() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_rot_euclidean_local", false]], "mat_to_mat_eucli() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.mat_to_mat_eucli", false]], "mat_to_mat_eucli() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_to_mat_eucli", false]], "min_max_pt() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.min_max_pt", false]], "module": [[0, "module-borea", false], [1, "module-borea.datastruct", false], [1, "module-borea.datastruct.camera", false], [1, "module-borea.datastruct.dtm", false], [1, "module-borea.datastruct.gcp", false], [1, "module-borea.datastruct.shot", false], [1, "module-borea.datastruct.workdata", false], [2, "module-borea.format", false], [2, "module-borea.format.conl", false], [2, "module-borea.format.rpc", false], [3, "module-borea.geodesy", false], [3, "module-borea.geodesy.approx_euclidean_proj", false], [3, "module-borea.geodesy.euclidean_proj", false], [3, "module-borea.geodesy.local_euclidean_proj", false], [3, "module-borea.geodesy.proj_engine", false], [3, "module-borea.geodesy.transform_geodesy", false], [4, "module-borea.geodesy.projectionlist", false], [4, "module-borea.geodesy.projectionlist.search_proj", false], [5, "module-borea.process", false], [6, "module-borea.process.p_add_data", false], [6, "module-borea.process.p_add_data.p_add_shot", false], [6, "module-borea.process.p_add_data.p_file_gcp2d", false], [6, "module-borea.process.p_add_data.p_file_gcp3d", false], [6, "module-borea.process.p_add_data.p_gen_param", false], [6, "module-borea.process.p_add_data.p_pt2d", false], [6, "module-borea.process.p_add_data.p_pt3d", false], [6, "module-borea.process.p_add_data.p_unit_shot", false], [6, "module-borea.process.p_add_data.p_write", false], [7, "module-borea.process.p_format", false], [7, "module-borea.process.p_format.p_read_opk", false], [7, "module-borea.process.p_format.p_write_con", false], [7, "module-borea.process.p_format.p_write_opk", false], [7, "module-borea.process.p_format.p_write_rpc", false], [8, "module-borea.process.p_func", false], [8, "module-borea.process.p_func.p_control", false], [8, "module-borea.process.p_func.p_image_world", false], [8, "module-borea.process.p_func.p_spaceresection", false], [8, "module-borea.process.p_func.p_world_image", false], [9, "module-borea.reader", false], [9, "module-borea.reader.reader_camera", false], [9, "module-borea.reader.reader_point", false], [10, "module-borea.reader.orientation", false], [10, "module-borea.reader.orientation.manage_reader", false], [10, "module-borea.reader.orientation.reader_opk", false], [11, "module-borea.stat", false], [11, "module-borea.stat.statistics", false], [12, "module-borea.transform_world_image", false], [13, "module-borea.transform_world_image.transform_dtm", false], [13, "module-borea.transform_world_image.transform_dtm.world_image_dtm", false], [14, "module-borea.transform_world_image.transform_shot", false], [14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot", false], [14, "module-borea.transform_world_image.transform_shot.image_world_shot", false], [14, "module-borea.transform_world_image.transform_shot.world_image_shot", false], [15, "module-borea.transform_world_image.transform_worksite", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_intersection", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_least_square", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_work", false], [15, "module-borea.transform_world_image.transform_worksite.space_resection", false], [15, "module-borea.transform_world_image.transform_worksite.world_image_work", false], [16, "module-borea.utils", false], [17, "module-borea.utils.check", false], [17, "module-borea.utils.check.check_args_opk", false], [17, "module-borea.utils.check.check_args_reader_pt", false], [17, "module-borea.utils.check.check_array", false], [17, "module-borea.utils.check.check_header", false], [17, "module-borea.utils.check.check_order_axe", false], [18, "module-borea.utils.miscellaneous", false], [18, "module-borea.utils.miscellaneous.miscellaneous", false], [18, "module-borea.utils.miscellaneous.param_bundle", false], [18, "module-borea.utils.miscellaneous.sparse", false], [19, "module-borea.utils.singleton", false], [19, "module-borea.utils.singleton.singleton", false], [20, "module-borea.utils.xml", false], [20, "module-borea.utils.xml.xml", false], [21, "module-borea.worksite", false], [21, "module-borea.worksite.worksite", false], [22, "module-borea.writer", false], [22, "module-borea.writer.manage_writer", false], [22, "module-borea.writer.writer_con", false], [22, "module-borea.writer.writer_df_to_txt", false], [22, "module-borea.writer.writer_opk", false], [22, "module-borea.writer.writer_rpc", false]], "name_camera (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.name_camera", false]], "name_gcp (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.name_gcp", false]], "normalize() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.normalize", false]], "normalize_data() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.normalize_data", false]], "ppax (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.ppax", false]], "ppay (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.ppay", false]], "process_add_shot() (in module borea.process.p_add_data.p_add_shot)": [[6, "borea.process.p_add_data.p_add_shot.process_add_shot", false]], "process_args_control() (in module borea.process.p_func.p_control)": [[8, "borea.process.p_func.p_control.process_args_control", false]], "process_args_gen_param() (in module borea.process.p_add_data.p_gen_param)": [[6, "borea.process.p_add_data.p_gen_param.process_args_gen_param", false]], "process_args_read_opk() (in module borea.process.p_format.p_read_opk)": [[7, "borea.process.p_format.p_read_opk.process_args_read_opk", false]], "process_args_write_con() (in module borea.process.p_format.p_write_con)": [[7, "borea.process.p_format.p_write_con.process_args_write_con", false]], "process_args_write_opk() (in module borea.process.p_format.p_write_opk)": [[7, "borea.process.p_format.p_write_opk.process_args_write_opk", false]], "process_args_write_rpc() (in module borea.process.p_format.p_write_rpc)": [[7, "borea.process.p_format.p_write_rpc.process_args_write_rpc", false]], "process_gcp2d() (in module borea.process.p_add_data.p_file_gcp2d)": [[6, "borea.process.p_add_data.p_file_gcp2d.process_gcp2d", false]], "process_gcp3d() (in module borea.process.p_add_data.p_file_gcp3d)": [[6, "borea.process.p_add_data.p_file_gcp3d.process_gcp3d", false]], "process_image_world() (in module borea.process.p_add_data.p_pt2d)": [[6, "borea.process.p_add_data.p_pt2d.process_image_world", false]], "process_image_world() (in module borea.process.p_func.p_image_world)": [[8, "borea.process.p_func.p_image_world.process_image_world", false]], "process_space_resection() (in module borea.process.p_func.p_spaceresection)": [[8, "borea.process.p_func.p_spaceresection.process_space_resection", false]], "process_world_image() (in module borea.process.p_add_data.p_pt3d)": [[6, "borea.process.p_add_data.p_pt3d.process_world_image", false]], "process_world_image() (in module borea.process.p_func.p_world_image)": [[8, "borea.process.p_func.p_world_image.process_world_image", false]], "proj (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.proj", false]], "proj_to_proj_out (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.proj_to_proj_out", false]], "projengine (class in borea.geodesy.proj_engine)": [[3, "borea.geodesy.proj_engine.ProjEngine", false]], "read() (in module borea.reader.orientation.reader_opk)": [[10, "borea.reader.orientation.reader_opk.read", false]], "read_camera() (in module borea.reader.reader_camera)": [[9, "borea.reader.reader_camera.read_camera", false]], "read_file_pt() (in module borea.reader.reader_point)": [[9, "borea.reader.reader_point.read_file_pt", false]], "read_file_pt_dataframe() (in module borea.reader.reader_point)": [[9, "borea.reader.reader_point.read_file_pt_dataframe", false]], "reader_orientation() (in module borea.reader.orientation.manage_reader)": [[10, "borea.reader.orientation.manage_reader.reader_orientation", false]], "rpc (class in borea.format.rpc)": [[2, "borea.format.rpc.Rpc", false]], "save_conl() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.save_conl", false]], "save_stat_txt() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.save_stat_txt", false]], "search_info() (in module borea.geodesy.projectionlist.search_proj)": [[4, "borea.geodesy.projectionlist.search_proj.search_info", false]], "seed_20_point() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.seed_20_point", false]], "set_approx_eucli_proj() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_approx_eucli_proj", false]], "set_camera_xml() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.set_camera_xml", false]], "set_cval() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_cval", false]], "set_dtm() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_dtm", false]], "set_dtm() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_dtm", false]], "set_epsg() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.set_epsg", false]], "set_geometry_xml() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.set_geometry_xml", false]], "set_keep_memory() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_keep_memory", false]], "set_linear_alteration() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_linear_alteration", false]], "set_order() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_order", false]], "set_order_axe() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_order_axe", false]], "set_param_bundle_diff() (in module borea.utils.miscellaneous.param_bundle)": [[18, "borea.utils.miscellaneous.param_bundle.set_param_bundle_diff", false]], "set_param_eucli_shot() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_param_eucli_shot", false]], "set_param_shot() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_param_shot", false]], "set_point_image_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_point_image_dataframe", false]], "set_point_world_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_point_world_dataframe", false]], "set_proj() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_proj", false]], "set_proj_pos() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_proj_pos", false]], "set_rot_shot() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_rot_shot", false]], "set_type_z() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_type_z", false]], "set_type_z_data() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_type_z_data", false]], "set_type_z_shot() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_type_z_shot", false]], "set_unit_angle() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_unit_angle", false]], "set_unit_output() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_unit_output", false]], "set_z_nadir() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_z_nadir", false]], "setup_matrix_obs_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.setup_matrix_obs_rpc", false]], "shot (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.shot", false]], "shot (class in borea.datastruct.shot)": [[1, "borea.datastruct.shot.Shot", false]], "singleton (class in borea.utils.singleton.singleton)": [[19, "borea.utils.singleton.singleton.Singleton", false]], "space_resection_gap() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_gap", false]], "space_resection_on_worksite() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_on_worksite", false]], "space_resection_shot() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_shot", false]], "space_resection_to_worksite() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_to_worksite", false]], "spaceresection (class in borea.transform_world_image.transform_worksite.space_resection)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection", false]], "stat (class in borea.stat.statistics)": [[11, "borea.stat.statistics.Stat", false]], "stat_image_to_world() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_image_to_world", false]], "stat_list() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_list", false]], "stat_world_to_image() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_world_to_image", false]], "take_obs() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.take_obs", false]], "tranform_altitude() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.tranform_altitude", false]], "tranform_height() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.tranform_height", false]], "transformgeodesy (class in borea.geodesy.transform_geodesy)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy", false]], "width (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.width", false]], "work (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.work", false]], "work (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.work", false]], "work (borea.transform_world_image.transform_worksite.image_world_work.imageworldwork attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork.work", false]], "work (borea.transform_world_image.transform_worksite.world_image_work.worldimagework attribute)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork.work", false]], "workdata (class in borea.datastruct.workdata)": [[1, "borea.datastruct.workdata.Workdata", false]], "worksite (class in borea.worksite.worksite)": [[21, "borea.worksite.worksite.Worksite", false]], "world_to_eucli() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.world_to_eucli", false]], "world_to_eucli() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.world_to_eucli", false]], "world_to_image() (borea.transform_world_image.transform_dtm.world_image_dtm.worldimagedtm method)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm.world_to_image", false]], "world_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.world_to_image", false]], "worldimagedtm (class in borea.transform_world_image.transform_dtm.world_image_dtm)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm", false]], "worldimageshot (class in borea.transform_world_image.transform_shot.world_image_shot)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot", false]], "worldimagework (class in borea.transform_world_image.transform_worksite.world_image_work)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork", false]], "worldintersection (class in borea.transform_world_image.transform_worksite.image_world_intersection)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection", false]], "worldleastsquare (class in borea.transform_world_image.transform_worksite.image_world_least_square)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare", false]], "write() (in module borea.writer.writer_con)": [[22, "borea.writer.writer_con.write", false]], "write() (in module borea.writer.writer_opk)": [[22, "borea.writer.writer_opk.write", false]], "write() (in module borea.writer.writer_rpc)": [[22, "borea.writer.writer_rpc.write", false]], "write_df_to_txt() (in module borea.writer.writer_df_to_txt)": [[22, "borea.writer.writer_df_to_txt.write_df_to_txt", false]], "write_stat() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.write_stat", false]], "x_central (borea.geodesy.euclidean_proj.euclideanproj attribute)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj.x_central", false]], "y_central (borea.geodesy.euclidean_proj.euclideanproj attribute)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj.y_central", false]]}, "objects": {"": [[0, 0, 0, "-", "borea"]], "borea": [[1, 0, 0, "-", "datastruct"], [2, 0, 0, "-", "format"], [3, 0, 0, "-", "geodesy"], [5, 0, 0, "-", "process"], [9, 0, 0, "-", "reader"], [11, 0, 0, "-", "stat"], [12, 0, 0, "-", "transform_world_image"], [16, 0, 0, "-", "utils"], [21, 0, 0, "-", "worksite"], [22, 0, 0, "-", "writer"]], "borea.datastruct": [[1, 0, 0, "-", "camera"], [1, 0, 0, "-", "dtm"], [1, 0, 0, "-", "gcp"], [1, 0, 0, "-", "shot"], [1, 0, 0, "-", "workdata"]], "borea.datastruct.camera": [[1, 1, 1, "", "Camera"]], "borea.datastruct.camera.Camera": [[1, 2, 1, "", "focal"], [1, 2, 1, "", "height"], [1, 2, 1, "", "name_camera"], [1, 2, 1, "", "ppax"], [1, 2, 1, "", "ppay"], [1, 2, 1, "", "width"]], "borea.datastruct.dtm": [[1, 1, 1, "", "Dtm"]], "borea.datastruct.dtm.Dtm": [[1, 3, 1, "", "get_z_world"], [1, 3, 1, "", "set_cval"], [1, 3, 1, "", "set_dtm"], [1, 3, 1, "", "set_keep_memory"], [1, 3, 1, "", "set_order"]], "borea.datastruct.gcp": [[1, 1, 1, "", "GCP"]], "borea.datastruct.gcp.GCP": [[1, 2, 1, "", "code"], [1, 2, 1, "", "coor"], [1, 2, 1, "", "name_gcp"]], "borea.datastruct.shot": [[1, 1, 1, "", "Shot"]], "borea.datastruct.shot.Shot": [[1, 3, 1, "", "from_param_euclidean"], [1, 3, 1, "", "get_z_add_scale_factor"], [1, 3, 1, "", "get_z_remove_scale_factor"], [1, 3, 1, "", "set_linear_alteration"], [1, 3, 1, "", "set_order_axe"], [1, 3, 1, "", "set_param_eucli_shot"], [1, 3, 1, "", "set_proj_pos"], [1, 3, 1, "", "set_rot_shot"], [1, 3, 1, "", "set_type_z"], [1, 3, 1, "", "set_unit_angle"], [1, 3, 1, "", "set_z_nadir"]], "borea.datastruct.workdata": [[1, 1, 1, "", "Workdata"]], "borea.datastruct.workdata.Workdata": [[1, 3, 1, "", "add_camera"], [1, 3, 1, "", "add_co_point"], [1, 3, 1, "", "add_gcp2d"], [1, 3, 1, "", "add_gcp3d"], [1, 3, 1, "", "add_shot"], [1, 3, 1, "", "set_approx_eucli_proj"], [1, 3, 1, "", "set_dtm"], [1, 3, 1, "", "set_proj"], [1, 3, 1, "", "set_type_z_data"], [1, 3, 1, "", "set_type_z_shot"]], "borea.format": [[2, 0, 0, "-", "conl"], [2, 0, 0, "-", "rpc"]], "borea.format.conl": [[2, 1, 1, "", "Conl"]], "borea.format.conl.Conl": [[2, 2, 1, "", "cam"], [2, 2, 1, "", "proj"], [2, 3, 1, "", "save_conl"], [2, 3, 1, "", "set_camera_xml"], [2, 3, 1, "", "set_geometry_xml"], [2, 2, 1, "", "shot"]], "borea.format.rpc": [[2, 1, 1, "", "Rpc"]], "borea.format.rpc.Rpc": [[2, 3, 1, "", "create_grid_rpc"], [2, 3, 1, "", "from_shot"], [2, 3, 1, "", "least_square_rpc"], [2, 3, 1, "", "normalize_data"], [2, 3, 1, "", "setup_matrix_obs_rpc"]], "borea.geodesy": [[3, 0, 0, "-", "approx_euclidean_proj"], [3, 0, 0, "-", "euclidean_proj"], [3, 0, 0, "-", "local_euclidean_proj"], [3, 0, 0, "-", "proj_engine"], [4, 0, 0, "-", "projectionlist"], [3, 0, 0, "-", "transform_geodesy"]], "borea.geodesy.approx_euclidean_proj": [[3, 1, 1, "", "ApproxEuclideanProj"]], "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj": [[3, 3, 1, "", "eucli_to_world"], [3, 3, 1, "", "mat_eucli_to_mat"], [3, 3, 1, "", "mat_to_mat_eucli"], [3, 3, 1, "", "world_to_eucli"]], "borea.geodesy.euclidean_proj": [[3, 1, 1, "", "EuclideanProj"]], "borea.geodesy.euclidean_proj.EuclideanProj": [[3, 2, 1, "", "x_central"], [3, 2, 1, "", "y_central"]], "borea.geodesy.local_euclidean_proj": [[3, 1, 1, "", "LocalEuclideanProj"]], "borea.geodesy.local_euclidean_proj.LocalEuclideanProj": [[3, 3, 1, "", "eucli_to_world"], [3, 3, 1, "", "mat_eucli_to_mat"], [3, 3, 1, "", "mat_rot_euclidean_local"], [3, 3, 1, "", "mat_to_mat_eucli"], [3, 3, 1, "", "world_to_eucli"]], "borea.geodesy.proj_engine": [[3, 1, 1, "", "ProjEngine"]], "borea.geodesy.proj_engine.ProjEngine": [[3, 2, 1, "", "epsg"], [3, 2, 1, "", "epsg_output"], [3, 2, 1, "", "geoid"], [3, 3, 1, "", "get_meridian_convergence"], [3, 3, 1, "", "get_scale_factor"], [3, 3, 1, "", "set_epsg"]], "borea.geodesy.projectionlist": [[4, 0, 0, "-", "search_proj"]], "borea.geodesy.projectionlist.search_proj": [[4, 4, 1, "", "convert_line_list"], [4, 4, 1, "", "search_info"]], "borea.geodesy.transform_geodesy": [[3, 1, 1, "", "TransformGeodesy"]], "borea.geodesy.transform_geodesy.TransformGeodesy": [[3, 5, 1, "", "carto_to_geoc"], [3, 5, 1, "", "carto_to_geog"], [3, 5, 1, "", "geoc_to_carto"], [3, 5, 1, "", "geog_to_carto"], [3, 5, 1, "", "geog_to_geoid"], [3, 5, 1, "", "geoid_to_geog"], [3, 5, 1, "", "proj_to_proj_out"], [3, 3, 1, "", "tranform_altitude"], [3, 3, 1, "", "tranform_height"]], "borea.process": [[6, 0, 0, "-", "p_add_data"], [7, 0, 0, "-", "p_format"], [8, 0, 0, "-", "p_func"]], "borea.process.p_add_data": [[6, 0, 0, "-", "p_add_shot"], [6, 0, 0, "-", "p_file_gcp2d"], [6, 0, 0, "-", "p_file_gcp3d"], [6, 0, 0, "-", "p_gen_param"], [6, 0, 0, "-", "p_pt2d"], [6, 0, 0, "-", "p_pt3d"], [6, 0, 0, "-", "p_unit_shot"], [6, 0, 0, "-", "p_write"]], "borea.process.p_add_data.p_add_shot": [[6, 4, 1, "", "args_add_shot"], [6, 4, 1, "", "process_add_shot"]], "borea.process.p_add_data.p_file_gcp2d": [[6, 4, 1, "", "args_gcp2d"], [6, 4, 1, "", "process_gcp2d"]], "borea.process.p_add_data.p_file_gcp3d": [[6, 4, 1, "", "args_gcp3d"], [6, 4, 1, "", "process_gcp3d"]], "borea.process.p_add_data.p_gen_param": [[6, 4, 1, "", "args_general_param"], [6, 4, 1, "", "process_args_gen_param"]], "borea.process.p_add_data.p_pt2d": [[6, 4, 1, "", "args_add_pt2d"], [6, 4, 1, "", "process_image_world"]], "borea.process.p_add_data.p_pt3d": [[6, 4, 1, "", "args_add_pt3d"], [6, 4, 1, "", "process_world_image"]], "borea.process.p_add_data.p_unit_shot": [[6, 4, 1, "", "args_input_shot"], [6, 4, 1, "", "args_output_shot"]], "borea.process.p_add_data.p_write": [[6, 4, 1, "", "args_writer"]], "borea.process.p_format": [[7, 0, 0, "-", "p_read_opk"], [7, 0, 0, "-", "p_write_con"], [7, 0, 0, "-", "p_write_opk"], [7, 0, 0, "-", "p_write_rpc"]], "borea.process.p_format.p_read_opk": [[7, 4, 1, "", "args_reading_opk"], [7, 4, 1, "", "process_args_read_opk"]], "borea.process.p_format.p_write_con": [[7, 4, 1, "", "args_write_con"], [7, 4, 1, "", "process_args_write_con"]], "borea.process.p_format.p_write_opk": [[7, 4, 1, "", "args_writing_opk"], [7, 4, 1, "", "process_args_write_opk"]], "borea.process.p_format.p_write_rpc": [[7, 4, 1, "", "args_writing_rpc"], [7, 4, 1, "", "process_args_write_rpc"]], "borea.process.p_func": [[8, 0, 0, "-", "p_control"], [8, 0, 0, "-", "p_image_world"], [8, 0, 0, "-", "p_spaceresection"], [8, 0, 0, "-", "p_world_image"]], "borea.process.p_func.p_control": [[8, 4, 1, "", "args_control"], [8, 4, 1, "", "process_args_control"]], "borea.process.p_func.p_image_world": [[8, 4, 1, "", "args_image_world"], [8, 4, 1, "", "process_image_world"]], "borea.process.p_func.p_spaceresection": [[8, 4, 1, "", "args_space_resection"], [8, 4, 1, "", "process_space_resection"]], "borea.process.p_func.p_world_image": [[8, 4, 1, "", "args_world_image"], [8, 4, 1, "", "process_world_image"]], "borea.reader": [[10, 0, 0, "-", "orientation"], [9, 0, 0, "-", "reader_camera"], [9, 0, 0, "-", "reader_point"]], "borea.reader.orientation": [[10, 0, 0, "-", "manage_reader"], [10, 0, 0, "-", "reader_opk"]], "borea.reader.orientation.manage_reader": [[10, 4, 1, "", "reader_orientation"]], "borea.reader.orientation.reader_opk": [[10, 4, 1, "", "read"]], "borea.reader.reader_camera": [[9, 4, 1, "", "camera_txt"], [9, 4, 1, "", "read_camera"]], "borea.reader.reader_point": [[9, 4, 1, "", "read_file_pt"], [9, 4, 1, "", "read_file_pt_dataframe"]], "borea.stat": [[11, 0, 0, "-", "statistics"]], "borea.stat.statistics": [[11, 1, 1, "", "Stat"]], "borea.stat.statistics.Stat": [[11, 3, 1, "", "main_stat_and_save"], [11, 3, 1, "", "main_stat_image_to_world"], [11, 3, 1, "", "main_stat_world_to_image"], [11, 3, 1, "", "save_stat_txt"], [11, 3, 1, "", "stat_image_to_world"], [11, 3, 1, "", "stat_list"], [11, 3, 1, "", "stat_world_to_image"], [11, 3, 1, "", "write_stat"]], "borea.transform_world_image": [[13, 0, 0, "-", "transform_dtm"], [14, 0, 0, "-", "transform_shot"], [15, 0, 0, "-", "transform_worksite"]], "borea.transform_world_image.transform_dtm": [[13, 0, 0, "-", "world_image_dtm"]], "borea.transform_world_image.transform_dtm.world_image_dtm": [[13, 1, 1, "", "WorldImageDtm"]], "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm": [[13, 3, 1, "", "image_to_world"], [13, 3, 1, "", "world_to_image"]], "borea.transform_world_image.transform_shot": [[14, 0, 0, "-", "conversion_coor_shot"], [14, 0, 0, "-", "image_world_shot"], [14, 0, 0, "-", "world_image_shot"]], "borea.transform_world_image.transform_shot.conversion_coor_shot": [[14, 4, 1, "", "conv_output_z_type"], [14, 4, 1, "", "conv_z_shot_to_z_data"]], "borea.transform_world_image.transform_shot.image_world_shot": [[14, 1, 1, "", "ImageWorldShot"]], "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot": [[14, 3, 1, "", "image_to_bundle"], [14, 3, 1, "", "image_to_world"], [14, 3, 1, "", "image_world_iter"], [14, 3, 1, "", "image_z_to_world"], [14, 3, 1, "", "local_to_eucli"]], "borea.transform_world_image.transform_shot.world_image_shot": [[14, 1, 1, "", "WorldImageShot"]], "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot": [[14, 3, 1, "", "bundle_to_image"], [14, 3, 1, "", "eucli_to_bundle"], [14, 3, 1, "", "eucli_to_image"], [14, 3, 1, "", "world_to_image"]], "borea.transform_world_image.transform_worksite": [[15, 0, 0, "-", "image_world_intersection"], [15, 0, 0, "-", "image_world_least_square"], [15, 0, 0, "-", "image_world_work"], [15, 0, 0, "-", "space_resection"], [15, 0, 0, "-", "world_image_work"]], "borea.transform_world_image.transform_worksite.image_world_intersection": [[15, 1, 1, "", "WorldIntersection"]], "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection": [[15, 3, 1, "", "calculate_image_world_by_intersection"], [15, 3, 1, "", "comput_inter_in_2_more_distant_shot"], [15, 3, 1, "", "intersection_line_3d"], [15, 3, 1, "", "intersection_pt_in_2shot"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.image_world_least_square": [[15, 1, 1, "", "WorldLeastSquare"]], "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare": [[15, 3, 1, "", "compute_image_world_least_square"], [15, 3, 1, "", "create_mat_a_and_vect_residu"], [15, 3, 1, "", "init_eucli_points"], [15, 3, 1, "", "least_square_intersect"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.image_world_work": [[15, 1, 1, "", "ImageWorldWork"]], "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork": [[15, 3, 1, "", "manage_image_world"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.space_resection": [[15, 1, 1, "", "SpaceResection"]], "borea.transform_world_image.transform_worksite.space_resection.SpaceResection": [[15, 3, 1, "", "func_least_square"], [15, 3, 1, "", "init_kappa"], [15, 3, 1, "", "least_square_shot"], [15, 3, 1, "", "mat_obs_axia"], [15, 3, 1, "", "seed_20_point"], [15, 3, 1, "", "space_resection_gap"], [15, 3, 1, "", "space_resection_on_worksite"], [15, 3, 1, "", "space_resection_shot"], [15, 3, 1, "", "space_resection_to_worksite"], [15, 3, 1, "", "take_obs"]], "borea.transform_world_image.transform_worksite.world_image_work": [[15, 1, 1, "", "WorldImageWork"]], "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork": [[15, 3, 1, "", "calculate_world_to_image"], [15, 2, 1, "", "work"]], "borea.utils": [[17, 0, 0, "-", "check"], [18, 0, 0, "-", "miscellaneous"], [19, 0, 0, "-", "singleton"], [20, 0, 0, "-", "xml"]], "borea.utils.check": [[17, 0, 0, "-", "check_args_opk"], [17, 0, 0, "-", "check_args_reader_pt"], [17, 0, 0, "-", "check_array"], [17, 0, 0, "-", "check_header"], [17, 0, 0, "-", "check_order_axe"]], "borea.utils.check.check_args_opk": [[17, 4, 1, "", "check_args_opk"], [17, 4, 1, "", "check_header_file"]], "borea.utils.check.check_args_reader_pt": [[17, 4, 1, "", "check_header_file"]], "borea.utils.check.check_array": [[17, 4, 1, "", "check_array_transfo"]], "borea.utils.check.check_header": [[17, 4, 1, "", "check_h_z"], [17, 4, 1, "", "check_head"], [17, 4, 1, "", "get_type_z_and_header"]], "borea.utils.check.check_order_axe": [[17, 4, 1, "", "check_order_axe"], [17, 4, 1, "", "convert_opk_to_xyz"]], "borea.utils.miscellaneous": [[18, 0, 0, "-", "miscellaneous"], [18, 0, 0, "-", "param_bundle"], [18, 0, 0, "-", "sparse"]], "borea.utils.miscellaneous.miscellaneous": [[18, 4, 1, "", "angle_degree_2vect"], [18, 4, 1, "", "dist_2pts"], [18, 4, 1, "", "min_max_pt"], [18, 4, 1, "", "normalize"]], "borea.utils.miscellaneous.param_bundle": [[18, 4, 1, "", "set_param_bundle_diff"]], "borea.utils.miscellaneous.sparse": [[18, 4, 1, "", "invert_diag_sparse_matrix_3_3"]], "borea.utils.singleton": [[19, 0, 0, "-", "singleton"]], "borea.utils.singleton.singleton": [[19, 1, 1, "", "Singleton"]], "borea.utils.singleton.singleton.Singleton": [[19, 3, 1, "", "clear"]], "borea.utils.xml": [[20, 0, 0, "-", "xml"]], "borea.utils.xml.xml": [[20, 4, 1, "", "add_elem"], [20, 4, 1, "", "format_xml"], [20, 4, 1, "", "indent"]], "borea.worksite": [[21, 0, 0, "-", "worksite"]], "borea.worksite.worksite": [[21, 1, 1, "", "Worksite"]], "borea.worksite.worksite.Worksite": [[21, 3, 1, "", "calculate_barycentre"], [21, 3, 1, "", "get_attr_transfo_pt"], [21, 3, 1, "", "get_coor_pt_img_and_world"], [21, 3, 1, "", "get_point_image_dataframe"], [21, 3, 1, "", "get_point_world_dataframe"], [21, 3, 1, "", "set_param_shot"], [21, 3, 1, "", "set_point_image_dataframe"], [21, 3, 1, "", "set_point_world_dataframe"], [21, 3, 1, "", "set_unit_output"]], "borea.writer": [[22, 0, 0, "-", "manage_writer"], [22, 0, 0, "-", "writer_con"], [22, 0, 0, "-", "writer_df_to_txt"], [22, 0, 0, "-", "writer_opk"], [22, 0, 0, "-", "writer_rpc"]], "borea.writer.manage_writer": [[22, 4, 1, "", "manager_writer"]], "borea.writer.writer_con": [[22, 4, 1, "", "write"]], "borea.writer.writer_df_to_txt": [[22, 4, 1, "", "write_df_to_txt"]], "borea.writer.writer_opk": [[22, 4, 1, "", "write"]], "borea.writer.writer_rpc": [[22, 4, 1, "", "write"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function", "5": "py:property"}, "terms": {"": [11, 15, 18, 19], "0": [1, 14, 15, 18, 20], "1": [1, 2, 10, 15, 17], "10": [2, 6, 7, 8, 20], "100": 2, "11": 1, "12": 1, "13": 1, "2": [1, 2, 15, 18], "20": 15, "2154": [1, 3], "2d": [1, 6, 13, 18], "3": [1, 2, 15], "3d": [6, 15], "5": 1, "5f": 20, "6": [8, 15], "A": [1, 2, 3, 10, 15, 17, 18], "And": 1, "For": 15, "If": [1, 3, 15], "It": 19, "NOT": [1, 14], "One": [1, 4], "The": [1, 2, 3, 10, 14, 15, 18, 20, 21, 22], "To": [14, 15], "absolut": 11, "account": [10, 17], "acquisit": [1, 2, 15], "ad": [1, 6, 15], "add": [1, 2, 6, 7, 8, 10, 15, 20], "add_camera": [0, 1], "add_co_point": [0, 1], "add_elem": [16, 20], "add_gcp2d": [0, 1], "add_gcp3d": [0, 1], "add_pixel": 15, "add_shot": [0, 1], "adjust": 15, "after": 1, "agr": [1, 9], "aim": 19, "all": [1, 4, 11, 15, 17, 21], "allow": [1, 3, 21], "alter": [1, 10, 14, 17, 22], "altitud": [1, 3, 14, 17], "alwai": [1, 2], "an": [1, 3, 10, 14, 15, 17, 18, 22], "angl": [1, 10, 15, 17, 18, 21, 22], "angle_degree_2vect": [16, 18], "ani": [1, 20], "app": 9, "appear": 15, "appli": [6, 7, 8], "approx": [1, 14, 21], "approx_euclidean_proj": [0, 24], "approxeucli": 1, "approxeuclideanproj": [0, 3], "approxim": 3, "apprx": 1, "ar": [1, 3, 17], "aren": 15, "arg": [1, 3, 6, 7, 8, 10, 17, 22], "argpars": [6, 7, 8], "args_add_pt2d": [5, 6], "args_add_pt3d": [5, 6], "args_add_shot": [5, 6], "args_control": [5, 8], "args_gcp2d": [5, 6], "args_gcp3d": [5, 6], "args_general_param": [5, 6], "args_image_world": [5, 8], "args_input_shot": [5, 6], "args_output_shot": [5, 6], "args_reading_opk": [5, 7], "args_space_resect": [5, 8], "args_world_imag": [5, 8], "args_writ": [5, 6], "args_write_con": [5, 7], "args_writing_opk": [5, 7], "args_writing_rpc": [5, 7], "argspars": [6, 7, 8], "argument": [6, 7, 8], "arithmet": 11, "around": 2, "arrai": [1, 2, 3, 13, 14, 15, 17, 18, 21], "arrang": 9, "ask": [3, 14], "attribut": [1, 21], "ax": [1, 10, 17, 22], "axiat": 15, "b": 15, "bad_head": 17, "balis": [2, 20], "barycentr": 21, "base": [1, 2, 3, 11, 13, 14, 15, 19, 21], "bdortho": 4, "beam": 18, "befor": 3, "begin": 22, "belong": 19, "between": [1, 3, 15, 17, 18], "bilinear": 1, "block": 18, "bool": [1, 10, 14, 17, 21, 22], "boolean": [1, 17], "borea": 23, "buffer": 2, "build": 1, "bundl": [14, 15, 18], "bundle_to_imag": [12, 14], "c": [2, 14], "c_ob": 15, "calcul": [2, 6, 8, 11, 14, 15, 18, 21, 22], "calculate_barycentr": [0, 21], "calculate_image_world_by_intersect": [12, 15], "calculate_world_to_imag": [12, 15], "calcult": 15, "cam": [0, 2, 14, 15], "camera": [0, 2, 9, 14, 15, 24], "camera_txt": [0, 9], "carto_to_geoc": [0, 3], "carto_to_geog": [0, 3], "carto_to_geog_out": 3, "cartograph": 3, "cartographiqu": 14, "categori": 19, "center": 1, "centr": 3, "central": 3, "chang": [1, 3, 15, 21], "check": [0, 15, 16], "check_args_opk": [0, 16], "check_args_reader_pt": [0, 16], "check_arrai": [0, 16], "check_array_transfo": [16, 17], "check_h_z": [16, 17], "check_head": [0, 16], "check_header_fil": [16, 17], "check_lett": 17, "check_order_ax": [0, 16], "class": [1, 2, 3, 11, 13, 14, 15, 19, 21, 22], "classmethod": [1, 2], "clear": [16, 19], "co": 15, "co_point": [1, 9, 15, 17, 21], "code": [0, 1, 3, 15, 17, 22], "code_gcp": 1, "coeffici": 2, "col": [2, 14], "collinear": 3, "column": [1, 2, 9, 10, 13, 15, 17, 21, 22], "combin": 17, "comput": [2, 3, 13], "comput_inter_in_2_more_distant_shot": [12, 15], "compute_image_world_least_squar": [12, 15], "con": 22, "condit": 1, "conic": [2, 7, 22], "conl": [0, 24], "connect": [1, 9, 15], "construct": 1, "contain": [1, 17], "content": 24, "control": [1, 8, 11, 15, 21], "control_typ": [15, 21], "conv_output_z_typ": [12, 14], "conv_z_shot_to_z_data": [12, 14], "converg": [3, 15], "convers": [14, 17], "conversion_coor_shot": [0, 12], "convert": [2, 3, 4, 14, 17, 22], "convert_line_list": [3, 4], "convert_opk_to_xyz": [16, 17], "coodin": 14, "coor": [0, 1, 3, 14], "coor2d": 1, "coor_2d": 1, "coor_eucli": [3, 18], "coor_gcp": 1, "coor_img": 13, "coor_init": 15, "coor_world": [3, 13, 14], "coordin": [1, 2, 3, 6, 8, 13, 14, 15, 18, 22], "coordinn": 18, "coordonne": 15, "copoint": 15, "correct": [1, 10, 17, 21, 22], "correspond": 15, "cr": 3, "creat": [2, 3], "create_grid_rpc": [0, 2], "create_mat_a_and_vect_residu": [12, 15], "creation": [2, 15, 19], "cubic": 1, "cval": 1, "data": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 21, 22], "data_input": 4, "data_list": 11, "datafram": [9, 15, 21, 22], "datastruct": [0, 24], "de": 1, "definit": 1, "degre": [1, 2, 3, 10, 17, 18, 22], "depend": [15, 21], "describ": 2, "design": 19, "df": 22, "dfpt": 15, "dict": [1, 2, 10, 11, 15, 17, 22], "dictionari": [2, 11, 22], "dictionnari": 15, "diff": 17, "differ": 21, "differenti": [1, 18], "digit": 1, "dim": [17, 18], "dimens": 17, "direct": 15, "dist_2pt": [16, 18], "distanc": [15, 18], "distant": 15, "distort": 1, "do": 15, "dtm": [0, 13, 19, 24], "du": 14, "dx": 15, "d\u00e9fault": 14, "e": [10, 17], "each": 15, "edg": 1, "elem": 20, "element": [4, 15, 17, 20], "elementtre": [2, 20], "elev": 1, "enough": 15, "epsg": [0, 1, 3, 4, 22], "epsg_output": [0, 1, 3, 22], "equat": [3, 15], "error": [1, 17], "et": [2, 20], "etre": [2, 20], "eucli": 15, "eucli_to_bundl": [12, 14], "eucli_to_imag": [12, 14], "eucli_to_world": [0, 3], "euclidean": [1, 3, 14, 15, 18, 21], "euclidean_proj": [0, 24], "euclideanproj": [0, 3], "euclidian": 3, "euclidien": 15, "ex": [1, 3], "extern": [8, 15], "externa": 15, "extract": [1, 3], "fact_rpc": [2, 22], "factor": [1, 2, 3, 15, 22], "fals": [14, 17, 21], "field": 15, "file": [1, 2, 4, 6, 7, 8, 9, 10, 11, 17, 20, 22], "fill": 1, "first": [15, 18], "fisrt": 18, "fix": 15, "flaot": 1, "flip": 18, "float": [1, 3, 14, 15, 17, 18], "focal": [0, 1], "folder": 22, "folder_con": 22, "folder_rpc": 22, "form": 1, "formal": 17, "format": [0, 1, 9, 17, 20, 22, 24], "format_xml": [16, 20], "frame": 18, "frist": 15, "from": [2, 3, 6, 7, 8, 13, 15, 20], "from_param_euclidean": [0, 1], "from_shot": [0, 2], "func_least_squar": [12, 15], "function": [3, 10, 11, 13, 14, 17, 18, 20, 22], "g": [10, 17], "gcp": [0, 6, 15, 21, 24], "gcp2d": [1, 9, 15, 17, 21], "gcp3d": [9, 15, 17], "gdal": 1, "gener": 6, "geoc_to_carto": [0, 3], "geodesi": [0, 24], "geog_to_carto": [0, 3], "geog_to_geoid": [0, 3], "geograph": [2, 3], "geoid": [0, 1, 3], "geoid_to_geog": [0, 3], "geometri": 2, "georeferenc": 1, "geotiff": 1, "geoview": [2, 4, 7], "get": [1, 18, 21], "get_attr_transfo_pt": [0, 21], "get_coor_pt_img_and_world": [0, 21], "get_meridian_converg": [0, 3], "get_point_image_datafram": [0, 21], "get_point_world_datafram": [0, 21], "get_scale_factor": [0, 3], "get_type_z_and_head": [16, 17], "get_z_add_scale_factor": [0, 1], "get_z_remove_scale_factor": [0, 1], "get_z_world": [0, 1], "give": 1, "given": [14, 15], "good": 17, "grid": [1, 2], "grid_img": 2, "grid_world": 2, "ground": [1, 6, 11, 14, 15], "gt": 13, "h": [1, 17], "head": 17, "header": [4, 9, 10, 17, 22], "height": [0, 1, 3, 14, 15, 17], "i": [1, 2, 3, 9, 10, 14, 15, 17, 19, 20, 21, 22], "id_img": [15, 21], "id_pt": [15, 21], "ign": [1, 2, 7], "imag": [1, 2, 6, 8, 11, 13, 14, 15, 18, 21], "image_to_bundl": [12, 14], "image_to_world": [12, 13, 14], "image_world_intersect": [0, 12], "image_world_it": [12, 14], "image_world_least_squar": [0, 12], "image_world_shot": [0, 12], "image_world_work": [0, 12], "image_z_to_world": [12, 14], "imageworldshot": [12, 14], "imageworldwork": [12, 15], "imc_adjust": 15, "img_coor": 14, "img_norm": 2, "implement": [3, 20], "indent": [16, 20], "index": [18, 23], "inform": [1, 10, 17, 22], "init": 3, "init_eucli_point": [12, 15], "init_kappa": [12, 15], "initi": 15, "input": [4, 14], "instanc": 19, "instanti": [3, 19], "int": [1, 2, 3, 15, 20], "inter": 15, "interpol": 1, "intersect": 15, "intersection_line_3d": [12, 15], "intersection_pt_in_2shot": [12, 15], "interv": [10, 17], "invers": 18, "invert_diag_sparse_matrix_3_3": [16, 18], "io": 11, "item": 20, "its": 15, "j": [10, 17], "kappa": [1, 15], "keep_in_memori": 1, "keep_memori": 1, "kei": [1, 2, 10, 17, 22], "known": 3, "kwarg": [1, 3], "l": [2, 14], "l_ob": 15, "la": 14, "lcode": 15, "least": [2, 15], "least_square_intersect": [12, 15], "least_square_rpc": [0, 2], "least_square_shot": [12, 15], "letter": 17, "level": 20, "lib": [2, 6, 7, 8, 20], "light": 2, "line": [1, 2, 4, 10, 13, 14, 15, 17, 21], "linear": [1, 10, 14, 17, 22], "linear_alter": [1, 10, 17, 21, 22], "link": [1, 21], "list": [1, 3, 4, 9, 10, 11, 15, 17, 20, 21, 22], "list_data": 4, "list_lett": 17, "list_shot": 15, "local": [3, 14], "local_euclidean_proj": [0, 24], "local_to_eucli": [12, 14], "localeuclideanproj": [0, 3], "m": 18, "maco": 2, "main": 21, "main_stat_and_sav": [0, 11], "main_stat_image_to_world": [0, 11], "main_stat_world_to_imag": [0, 11], "make": 15, "manag": [9, 17], "manage_image_world": [12, 15], "manage_read": [0, 9], "manage_writ": [0, 24], "manager_writ": [0, 22], "manipul": [1, 3], "mapinfo": 4, "marker": 15, "mat": [3, 18], "mat_a": 15, "mat_eucli": 3, "mat_eucli_to_mat": [0, 3], "mat_inv": 18, "mat_obs_axia": [12, 15], "mat_ori_eucli": 1, "mat_rot_eucli": 1, "mat_rot_euclidean_loc": [0, 3], "mat_to_mat_eucli": [0, 3], "math": 18, "matric": [1, 21], "matrix": [1, 2, 3, 10, 15, 17, 18, 22], "max": [11, 18], "me": 9, "mean": [1, 11, 15], "median": 11, "memori": 1, "meridian": 3, "messag": 17, "method": [1, 2, 15], "min": [11, 18], "min_max_pt": [16, 18], "miscellan": [0, 16], "misss": 17, "model": 1, "modifi": [1, 14], "modul": [23, 24], "most": 15, "ms_error": 17, "ms_error_lett": 17, "must": [1, 3, 17], "n": [17, 18], "nadir": [1, 14], "name": [1, 15, 20, 21, 22], "name_cam": 1, "name_camera": [0, 1], "name_gcp": [0, 1], "name_opk": 22, "name_point": [1, 15], "name_pt": 15, "name_shot": [1, 15, 21], "nbr_inc": 15, "nbr_ob": 15, "ndarrai": [1, 2, 3, 13, 14, 15, 17, 18, 21], "nearest": 1, "need": 9, "new": [1, 3], "nodata": 1, "nonadir": 14, "none": [1, 2, 3, 6, 7, 8, 9, 10, 11, 15, 17, 20, 21, 22], "normal": [2, 16, 18], "normalize_data": [0, 2], "np": [1, 2, 3, 13, 14, 15, 17, 18, 21], "number": [15, 20], "numpi": 1, "ob": 15, "object": [1, 2, 3, 4, 10, 11, 13, 14, 15, 19], "obs_imag": [15, 21], "observ": [2, 15], "offset": 18, "omega": [1, 15], "one": [1, 2, 6, 18], "oopk": 17, "opk": [6, 7, 10, 17, 22], "order": [1, 2, 10, 17, 21, 22], "order_ax": [1, 10, 17, 21, 22], "ori": 2, "ori_shot": 1, "orient": [0, 1, 9, 15], "other": [10, 22], "output": [1, 3, 4, 14, 17, 22], "outsid": 1, "p_add_data": [0, 5], "p_add_shot": [0, 5], "p_bundl": 14, "p_control": [0, 5], "p_eucli": 14, "p_file_gcp2d": [0, 5], "p_file_gcp3d": [0, 5], "p_format": [0, 5], "p_func": [0, 5], "p_gen_param": [0, 5], "p_image_world": [0, 5], "p_pt2d": [0, 5], "p_pt3d": [0, 5], "p_read_opk": [0, 5], "p_spaceresect": [0, 5], "p_unit_shot": [0, 5], "p_world_imag": [0, 5], "p_write": [0, 5], "p_write_con": [0, 5], "p_write_opk": [0, 5], "p_write_rpc": [0, 5], "packag": [23, 24], "page": 23, "panda": 21, "par": 14, "param_bundl": [0, 16], "param_con": 22, "param_rpc": [2, 22], "paramet": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 21, 22], "parent": [3, 13], "parser": [6, 7, 8], "part": 1, "past": 1, "path": [1, 2, 9, 10, 22], "path_con": 2, "path_dtm": 1, "path_geoid": 1, "path_opk": 22, "pathoutput": 11, "pathreturn": 22, "pattern": 19, "pd": [9, 15, 21, 22], "pd_me": [15, 21], "pd_mes_temp": 15, "pd_pnt": 15, "percentag": 15, "perform": 1, "phi": [1, 15], "photogrametriqu": 8, "photogrammetr": [10, 22], "photogrammetri": [10, 22], "pinit": 15, "pixel": [1, 15], "point": [1, 2, 3, 6, 9, 11, 14, 15, 17, 18, 21], "point1": 15, "point2": 15, "polynom": [2, 22], "polynomi": 2, "polynomial_degre": 2, "pos_eucli": [1, 14], "pos_shot": 1, "pos_shot_eucli": 1, "posit": [1, 14, 15, 18], "possibl": 17, "ppai": [0, 1], "ppax": [0, 1], "prec": 20, "precis": [1, 20], "process": [0, 14, 15, 24], "process_add_shot": [5, 6], "process_args_control": [5, 8], "process_args_gen_param": [5, 6], "process_args_read_opk": [5, 7], "process_args_write_con": [5, 7], "process_args_write_opk": [5, 7], "process_args_write_rpc": [5, 7], "process_gcp2d": [5, 6], "process_gcp3d": [5, 6], "process_image_world": [5, 6, 8], "process_space_resect": [5, 8], "process_world_imag": [5, 6, 8], "proj": [0, 2], "proj4": 4, "proj_engin": [0, 24], "proj_output": 21, "proj_to_proj_out": [0, 3], "project": [1, 2, 3, 21, 22], "projectionlist": [0, 3], "projengin": [0, 1, 3, 19], "projeucli": 1, "properti": 3, "provid": 3, "pt1": 18, "pt2": 18, "pt2d": [9, 15], "pt3d": [9, 15], "pt_bundl": 14, "pt_eucli": 15, "pt_img": 15, "pt_world": [15, 21], "put": 20, "py": [2, 6, 7, 8, 20], "pyproj": 3, "python3": [2, 6, 7, 8, 20], "quintic": 1, "r": 18, "radian": [1, 10, 17, 22], "rais": 1, "random": 15, "ratat": 17, "read": [1, 2, 6, 7, 9, 10, 17], "read_camera": [0, 9], "read_file_pt": [0, 9], "read_file_pt_datafram": [0, 9], "reader": [0, 17, 24], "reader_camera": [0, 24], "reader_opk": [0, 9], "reader_orient": [9, 10], "reader_point": [0, 24], "recalcul": 15, "recalcult": 15, "record": 22, "recov": 21, "refer": [3, 4, 18], "registr": 22, "remov": 1, "replac": 17, "repres": [1, 3], "request": 21, "research": 4, "resect": 15, "residu": [11, 15], "ressourc": 21, "restrict": 19, "result": [1, 15], "retriev": 21, "retun": 17, "return": [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 20, 21], "rotat": [1, 3, 10, 17, 18, 21, 22], "rpc": [0, 7, 22, 24], "same": 17, "save": [2, 9, 11, 21, 22], "save_conl": [0, 2], "save_stat_txt": [0, 11], "scale": [1, 3, 18], "scipi": 17, "script": [9, 10, 17], "sd": 4, "search": [15, 23], "search_info": [3, 4], "search_proj": [0, 3], "second": [15, 18], "seed_20_point": [12, 15], "self": [1, 13], "set": [1, 15, 17, 18, 21], "set_approx_eucli_proj": [0, 1], "set_camera_xml": [0, 2], "set_cval": [0, 1], "set_dtm": [0, 1], "set_epsg": [0, 3], "set_geometry_xml": [0, 2], "set_keep_memori": [0, 1], "set_linear_alter": [0, 1], "set_ord": [0, 1], "set_order_ax": [0, 1], "set_param_bundle_diff": [16, 18], "set_param_eucli_shot": [0, 1], "set_param_shot": [0, 21], "set_point_image_datafram": [0, 21], "set_point_world_datafram": [0, 21], "set_proj": [0, 1], "set_proj_po": [0, 1], "set_rot_shot": [0, 1], "set_type_z": [0, 1], "set_type_z_data": [0, 1], "set_type_z_shot": [0, 1], "set_unit_angl": [0, 1], "set_unit_output": [0, 21], "set_z_nadir": [0, 1], "setter": 3, "setup": [1, 2], "setup_matrix_obs_rpc": [0, 2], "shoot": 15, "shot": [0, 2, 6, 8, 10, 14, 15, 17, 18, 21, 24], "shot1": 15, "shot2": 15, "shot_adjust": 15, "sigma": 11, "singl": 19, "singleton": [0, 16], "site": [10, 11, 22], "size": 2, "size_grid": 2, "slinear": 1, "softwar": 2, "solv": 15, "sourc": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22], "space": 15, "space_resect": [0, 12], "space_resection_gap": [12, 15], "space_resection_on_worksit": [12, 15], "space_resection_shot": [12, 15], "space_resection_to_worksit": [12, 15], "spaceresect": [12, 15], "spars": [0, 16], "squar": [2, 15], "src": [2, 22], "stat": [0, 24], "stat_image_to_world": [0, 11], "stat_list": [0, 11], "stat_world_to_imag": [0, 11], "statist": [0, 24], "store": 1, "str": [1, 2, 4, 9, 10, 11, 14, 15, 17, 18, 20, 21, 22], "string": 21, "structur": 20, "submodul": [0, 5, 12, 16, 24], "subpackag": 24, "support": 1, "symbol": 17, "system": [1, 3, 14, 15, 21], "t": 15, "ta": 4, "tabl": [15, 21], "take": [14, 15, 21], "take_ob": [12, 15], "taken": [10, 17], "terrain": [14, 21], "textiowrapp": 11, "thei": [15, 17], "thi": 3, "tool": 21, "topaero": 4, "tranform": 3, "tranform_altitud": [0, 3], "tranform_height": [0, 3], "transform": [2, 3, 10, 13, 14, 15, 21], "transform_dtm": [0, 12], "transform_geodesi": [0, 24], "transform_shot": [0, 12], "transform_worksit": [0, 12], "transform_world_imag": [0, 24], "transformgeodesi": [0, 3], "transit": 3, "true": [1, 10, 14, 17, 21, 22], "tubl": 15, "tupl": [2, 13, 15, 17, 18, 21], "two": [1, 15, 18], "txt": [4, 9, 11, 22], "type": [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20, 21, 22], "type_dtm": 1, "type_input": 4, "type_m": 18, "type_output": 4, "type_point": [9, 11, 15, 21], "type_process": 15, "type_pt": 17, "type_z": [1, 17, 21], "type_z_data": [1, 14], "type_z_input": 14, "type_z_output": 14, "type_z_shot": [1, 14], "u": 18, "u1": 18, "u2": 18, "u3": 18, "union": [3, 14, 17], "unit": [1, 6, 10, 17, 21, 22], "unit_angl": [1, 10, 17, 21, 22], "unit_data": 2, "unit_z_data": 2, "unit_z_shot": 2, "uniti": 2, "up": [1, 15, 18, 21], "us": [1, 3, 15, 21], "usr": [2, 6, 7, 8, 20], "util": [0, 24], "v": 18, "val": 20, "valid": 3, "valu": [1, 3, 15], "var": 11, "variabl": 17, "variat": 15, "variou": 17, "vect1": 15, "vect2": 15, "vector": [15, 17, 18], "verif": 17, "visibl": 15, "want": [1, 3, 14, 15, 21], "we": 18, "wgs84": [2, 22], "what": [15, 21], "when": [2, 22], "where": [15, 21], "which": [1, 3, 9, 15, 18], "whit": 1, "whose": 19, "width": [0, 1, 15], "without": [1, 17], "wkt": 4, "woksit": 15, "work": [6, 7, 8, 9, 10, 11, 12, 15, 18, 22], "workdata": [0, 21, 24], "worksid": 10, "worksit": [0, 1, 3, 6, 7, 8, 9, 10, 11, 14, 15, 22, 24], "world": [1, 2, 3, 6, 8, 11, 13, 14, 15, 21, 22], "world_image_dtm": [0, 12], "world_image_shot": [0, 12], "world_image_work": [0, 12], "world_norm": 2, "world_to_eucli": [0, 3], "world_to_imag": [12, 13, 14], "worldimagedtm": [1, 12, 13], "worldimageshot": [12, 14], "worldimagework": [12, 15], "worldintersect": [12, 15], "worldleastsquar": [12, 15], "write": [0, 2, 6, 7, 11, 20, 22], "write_df_to_txt": [0, 22], "write_stat": [0, 11], "writer": [0, 24], "writer_con": [0, 24], "writer_df_to_txt": [0, 24], "writer_opk": [0, 24], "writer_rpc": [0, 24], "x": [1, 2, 3, 13, 14, 15, 17, 21], "x_carto": 3, "x_central": [0, 3], "x_col": 14, "xml": [0, 2, 9, 16], "y": [1, 2, 3, 13, 14, 15, 17, 21], "y_carto": 3, "y_central": [0, 3], "y_line": 14, "you": [1, 3, 14, 15, 21], "your": 21, "z": [1, 2, 3, 14, 15, 17, 21], "z_nadir": 1}, "titles": ["borea package", "borea.datastruct package", "borea.format package", "borea.geodesy package", "borea.geodesy.projectionlist package", "borea.process package", "borea.process.p_add_data package", "borea.process.p_format package", "borea.process.p_func package", "borea.reader package", "borea.reader.orientation package", "borea.stat package", "borea.transform_world_image package", "borea.transform_world_image.transform_dtm package", "borea.transform_world_image.transform_shot package", "borea.transform_world_image.transform_worksite package", "borea.utils package", "borea.utils.check package", "borea.utils.miscellaneous package", "borea.utils.singleton package", "borea.utils.xml package", "borea.worksite package", "borea.writer package", "Welcome to Pink_Lady\u2019s documentation!", "borea"], "titleterms": {"": 23, "approx_euclidean_proj": 3, "borea": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24], "camera": 1, "check": 17, "check_args_opk": 17, "check_args_reader_pt": 17, "check_arrai": 17, "check_head": 17, "check_order_ax": 17, "conl": 2, "content": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "conversion_coor_shot": 14, "datastruct": 1, "document": 23, "dtm": 1, "euclidean_proj": 3, "format": 2, "gcp": 1, "geodesi": [3, 4], "image_world_intersect": 15, "image_world_least_squar": 15, "image_world_shot": 14, "image_world_work": 15, "indic": 23, "local_euclidean_proj": 3, "manage_read": 10, "manage_writ": 22, "miscellan": 18, "modul": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "orient": 10, "p_add_data": 6, "p_add_shot": 6, "p_control": 8, "p_file_gcp2d": 6, "p_file_gcp3d": 6, "p_format": 7, "p_func": 8, "p_gen_param": 6, "p_image_world": 8, "p_pt2d": 6, "p_pt3d": 6, "p_read_opk": 7, "p_spaceresect": 8, "p_unit_shot": 6, "p_world_imag": 8, "p_write": 6, "p_write_con": 7, "p_write_opk": 7, "p_write_rpc": 7, "packag": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "param_bundl": 18, "pink_ladi": 23, "process": [5, 6, 7, 8], "proj_engin": 3, "projectionlist": 4, "reader": [9, 10], "reader_camera": 9, "reader_opk": 10, "reader_point": 9, "rpc": 2, "search_proj": 4, "shot": 1, "singleton": 19, "space_resect": 15, "spars": 18, "stat": 11, "statist": 11, "submodul": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22], "subpackag": [0, 3, 5, 9, 12, 16], "tabl": 23, "transform_dtm": 13, "transform_geodesi": 3, "transform_shot": 14, "transform_worksit": 15, "transform_world_imag": [12, 13, 14, 15], "util": [16, 17, 18, 19, 20], "welcom": 23, "workdata": 1, "worksit": 21, "world_image_dtm": 13, "world_image_shot": 14, "world_image_work": 15, "writer": 22, "writer_con": 22, "writer_df_to_txt": 22, "writer_opk": 22, "writer_rpc": 22, "xml": 20}}) \ No newline at end of file From 3aea5594df8a3ba5e64c2beba658b1499b32d871 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Fri, 27 Sep 2024 14:49:25 +0200 Subject: [PATCH 03/16] fix: change name param output epsg --- borea/process/p_add_data/p_gen_param.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/borea/process/p_add_data/p_gen_param.py b/borea/process/p_add_data/p_gen_param.py index facb9820..8700dc5a 100644 --- a/borea/process/p_add_data/p_gen_param.py +++ b/borea/process/p_add_data/p_gen_param.py @@ -43,7 +43,7 @@ def args_general_param(parser: argparse) -> argparse: parser.add_argument('--geoc', '--epsg_geocentric', type=int, default=None, help='EPSG codifier number of the reference geocentric system.') - parser.add_argument('-g', '--epsg_output', + parser.add_argument('-oe', '--epsg_output', type=int, default=None, help="Code epsg of output Data") return parser From 6301611622180ba2b33dd303c8c4ac8560230d61 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Fri, 27 Sep 2024 14:49:37 +0200 Subject: [PATCH 04/16] docs: update function doc --- borea_tools/docs_tools/README_opk_to_conl.md | 1 + borea_tools/docs_tools/README_opk_to_opk.md | 1 + borea_tools/docs_tools/README_opk_to_rpc.md | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/borea_tools/docs_tools/README_opk_to_conl.md b/borea_tools/docs_tools/README_opk_to_conl.md index 83f3fae9..83434363 100644 --- a/borea_tools/docs_tools/README_opk_to_conl.md +++ b/borea_tools/docs_tools/README_opk_to_conl.md @@ -32,6 +32,7 @@ The parameters are: | --fm | Format of Dtm "altitude" or "height". | None | X, unless dtm is given | | -x | To use an approximate system. | False | X | | -w | Conversion path e.g. "./" | "./" | X | +| -oe | Code epsg for output data. If none keeps the input data projection. | None | X | E.G. ``` diff --git a/borea_tools/docs_tools/README_opk_to_opk.md b/borea_tools/docs_tools/README_opk_to_opk.md index 3315ff0f..b691dd1a 100644 --- a/borea_tools/docs_tools/README_opk_to_opk.md +++ b/borea_tools/docs_tools/README_opk_to_opk.md @@ -37,6 +37,7 @@ The parameters are: | -ob | Order of rotation matrix axes you want in output. | None | X | | -ou | Unit of the angle of shooting, 'degree' or 'radian' | "degree" | X | | -oa | True if z shot corrected by linear alteration. | True | X | +| -oe | Code epsg for output data. If none keeps the input data projection. | None | X | E.G. ``` diff --git a/borea_tools/docs_tools/README_opk_to_rpc.md b/borea_tools/docs_tools/README_opk_to_rpc.md index 776831d5..260fbb67 100644 --- a/borea_tools/docs_tools/README_opk_to_rpc.md +++ b/borea_tools/docs_tools/README_opk_to_rpc.md @@ -36,7 +36,7 @@ The parameters are: | -o | Degree of the polynomial of the rpc (1, 2, 3) | 3 | X | | -d | Size of the grid to calculate Rpc. | 100 | X | | -l | Factor Rpc to replace pyproj convertion. | None | X | -| -g | Code epsg for output RPC. If none keeps the input data projection. | None | X | +| -oe | Code epsg for output data. If none keeps the input data projection. | None | X | E.G. ``` From f853844b18f708b97cc7532749aaed24eb31ec18 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Fri, 27 Sep 2024 15:28:59 +0200 Subject: [PATCH 05/16] fix: add dash of param with 2 letters for convention --- borea/process/p_add_data/p_gen_param.py | 4 ++-- borea/process/p_add_data/p_unit_shot.py | 6 +++--- borea/process/p_format/p_write_opk.py | 10 +++++----- borea_tools/docs_tools/README_opk_to_conl.md | 2 +- borea_tools/docs_tools/README_opk_to_opk.md | 8 ++++---- borea_tools/docs_tools/README_opk_to_rpc.md | 2 +- .../docs_tools/README_spaceresection_opk.md | 7 ++++--- .../sphinx/_build/doctrees/environment.pickle | Bin 482779 -> 482699 bytes .../borea/process/p_add_data/p_gen_param.html | 4 ++-- .../borea/process/p_add_data/p_unit_shot.html | 6 +++--- .../borea/process/p_format/p_write_opk.html | 10 +++++----- 11 files changed, 30 insertions(+), 29 deletions(-) diff --git a/borea/process/p_add_data/p_gen_param.py b/borea/process/p_add_data/p_gen_param.py index 8700dc5a..c744f19f 100644 --- a/borea/process/p_add_data/p_gen_param.py +++ b/borea/process/p_add_data/p_gen_param.py @@ -43,7 +43,7 @@ def args_general_param(parser: argparse) -> argparse: parser.add_argument('--geoc', '--epsg_geocentric', type=int, default=None, help='EPSG codifier number of the reference geocentric system.') - parser.add_argument('-oe', '--epsg_output', + parser.add_argument('--oe', '--epsg_output', type=int, default=None, help="Code epsg of output Data") return parser @@ -62,7 +62,7 @@ def process_args_gen_param(args: argparse, work: Worksite) -> Worksite: """ # Add a projection to the worksite if args.epsg is not None: - work.set_proj([args.epsg, args.geog, args.geoc], args.pathgeoid) + work.set_proj([args.epsg, args.geog, args.geoc], args.pathgeoid, args.oe) print(f"Projection set-up with EPSG:{args.epsg}.") else: print("There is no given projection.") diff --git a/borea/process/p_add_data/p_unit_shot.py b/borea/process/p_add_data/p_unit_shot.py index 47f5afc2..a8b2cb1e 100644 --- a/borea/process/p_add_data/p_unit_shot.py +++ b/borea/process/p_add_data/p_unit_shot.py @@ -36,13 +36,13 @@ def args_output_shot(parser: argparse) -> argparse: Returns: argsparse: Parser with argument. """ - parser.add_argument('-ob', '--order_axe_output', + parser.add_argument('--ob', '--order_axe_output', type=str, default=None, help="Order of rotation matrix axes you want in output.") - parser.add_argument('-ou', '--output_unit_angle', + parser.add_argument('--ou', '--output_unit_angle', type=str, default=None, choices=["degree", "radian", None], help="Unit of the angle of shooting, 'degree' or 'radian'") - parser.add_argument('-oa', '--output_linear_alteration', + parser.add_argument('--oa', '--output_linear_alteration', type=bool, default=None, help="True if z shot corrected by linear alteration.") return parser diff --git a/borea/process/p_format/p_write_opk.py b/borea/process/p_format/p_write_opk.py index 2fe4aafb..8a1f5b1a 100644 --- a/borea/process/p_format/p_write_opk.py +++ b/borea/process/p_format/p_write_opk.py @@ -45,8 +45,8 @@ def process_args_write_opk(args: argparse, work: Worksite) -> None: args (argparse): Arg to apply on worksite (data). work (Worksite): Data. """ - if args.order_axe_output: - args.order_axe_output = args.order_axe_output.lower() + if args.ob: + args.ob = args.ob.lower() if args.output_header: args.output_header = list(args.output_header.upper()) @@ -54,10 +54,10 @@ def process_args_write_opk(args: argparse, work: Worksite) -> None: # Writing data print("Writing OPK.") if args.namereturn is not None: - args_writing = {"order_axe": args.order_axe_output, + args_writing = {"order_axe": args.ob, "header": args.output_header, - "unit_angle": args.output_unit_angle, - "linear_alteration": args.output_linear_alteration} + "unit_angle": args.ou, + "linear_alteration": args.oa} manager_writer("opk", args.namereturn, args.pathreturn, args_writing, work) print(f"File written in {args.pathreturn + args.namereturn}.opk.") else: diff --git a/borea_tools/docs_tools/README_opk_to_conl.md b/borea_tools/docs_tools/README_opk_to_conl.md index 83434363..500a0ea9 100644 --- a/borea_tools/docs_tools/README_opk_to_conl.md +++ b/borea_tools/docs_tools/README_opk_to_conl.md @@ -32,7 +32,7 @@ The parameters are: | --fm | Format of Dtm "altitude" or "height". | None | X, unless dtm is given | | -x | To use an approximate system. | False | X | | -w | Conversion path e.g. "./" | "./" | X | -| -oe | Code epsg for output data. If none keeps the input data projection. | None | X | +| --oe | Code epsg for output data. If none keeps the input data projection. | None | X | E.G. ``` diff --git a/borea_tools/docs_tools/README_opk_to_opk.md b/borea_tools/docs_tools/README_opk_to_opk.md index b691dd1a..6f78ee78 100644 --- a/borea_tools/docs_tools/README_opk_to_opk.md +++ b/borea_tools/docs_tools/README_opk_to_opk.md @@ -34,10 +34,10 @@ The parameters are: | -x | To use an approximate system. | False | X | | -w | Conversion path e.g. "./" | "./" | X | | -o | Type of each column in the site file. e.g. NXYZOPKC with Z origin | NXY(Z/H)OPKC | X | -| -ob | Order of rotation matrix axes you want in output. | None | X | -| -ou | Unit of the angle of shooting, 'degree' or 'radian' | "degree" | X | -| -oa | True if z shot corrected by linear alteration. | True | X | -| -oe | Code epsg for output data. If none keeps the input data projection. | None | X | +| --ob | Order of rotation matrix axes you want in output. | None | X | +| --ou | Unit of the angle of shooting, 'degree' or 'radian' | "degree" | X | +| --oa | True if z shot corrected by linear alteration. | True | X | +| --oe | Code epsg for output data. If none keeps the input data projection. | None | X | E.G. ``` diff --git a/borea_tools/docs_tools/README_opk_to_rpc.md b/borea_tools/docs_tools/README_opk_to_rpc.md index 260fbb67..de9de3b5 100644 --- a/borea_tools/docs_tools/README_opk_to_rpc.md +++ b/borea_tools/docs_tools/README_opk_to_rpc.md @@ -36,7 +36,7 @@ The parameters are: | -o | Degree of the polynomial of the rpc (1, 2, 3) | 3 | X | | -d | Size of the grid to calculate Rpc. | 100 | X | | -l | Factor Rpc to replace pyproj convertion. | None | X | -| -oe | Code epsg for output data. If none keeps the input data projection. | None | X | +| --oe | Code epsg for output data. If none keeps the input data projection. | None | X | E.G. ``` diff --git a/borea_tools/docs_tools/README_spaceresection_opk.md b/borea_tools/docs_tools/README_spaceresection_opk.md index 335bd13a..ad01f59d 100644 --- a/borea_tools/docs_tools/README_spaceresection_opk.md +++ b/borea_tools/docs_tools/README_spaceresection_opk.md @@ -33,9 +33,10 @@ The parameters are: | -n | Name of worksite output file | | V | | -w | Conversion path e.g. "./" | "./" | X | | -o | Type of each column in the site file. e.g. NXYZOPKC with Z origin | NXY(Z/H)OPKC | X | -| -ob | Order of rotation matrix axes you want in output. | None | X | -| -ou | Unit of the angle of shooting, 'degree' or 'radian' | "degree" | X | -| -oa | True if z shot corrected by linear alteration. | True | X | +| --ob | Order of rotation matrix axes you want in output. | None | X | +| --ou | Unit of the angle of shooting, 'degree' or 'radian' | "degree" | X | +| --oa | True if z shot corrected by linear alteration. | True | X | +| --oe | Code epsg for output data. If none keeps the input data projection. | None | X | E.G. ``` diff --git a/docs/sphinx/_build/doctrees/environment.pickle b/docs/sphinx/_build/doctrees/environment.pickle index 0209a101b450ccde791013cef481d4a042d905c2..902198ca7ef3e6578d576887cc16f6cd2eb5b91b 100644 GIT binary patch delta 16507 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 delta 16671 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 diff --git a/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html index c6bbc6e7..f8906568 100644 --- a/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html +++ b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html @@ -319,7 +319,7 @@

        Source code for borea.process.p_add_data.p_gen_param

        parser.add_argument('--geoc', '--epsg_geocentric', type=int, default=None, help='EPSG codifier number of the reference geocentric system.') - parser.add_argument('-oe', '--epsg_output', + parser.add_argument('--oe', '--epsg_output', type=int, default=None, help="Code epsg of output Data") return parser
        @@ -341,7 +341,7 @@

        Source code for borea.process.p_add_data.p_gen_param

        """ # Add a projection to the worksite if args.epsg is not None: - work.set_proj([args.epsg, args.geog, args.geoc], args.pathgeoid) + work.set_proj([args.epsg, args.geog, args.geoc], args.pathgeoid, args.oe) print(f"Projection set-up with EPSG:{args.epsg}.") else: print("There is no given projection.") diff --git a/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_unit_shot.html b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_unit_shot.html index 28425d42..3ff13fd2 100644 --- a/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_unit_shot.html +++ b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_unit_shot.html @@ -315,13 +315,13 @@

        Source code for borea.process.p_add_data.p_unit_shot

        Returns: argsparse: Parser with argument. """ - parser.add_argument('-ob', '--order_axe_output', + parser.add_argument('--ob', '--order_axe_output', type=str, default=None, help="Order of rotation matrix axes you want in output.") - parser.add_argument('-ou', '--output_unit_angle', + parser.add_argument('--ou', '--output_unit_angle', type=str, default=None, choices=["degree", "radian", None], help="Unit of the angle of shooting, 'degree' or 'radian'") - parser.add_argument('-oa', '--output_linear_alteration', + parser.add_argument('--oa', '--output_linear_alteration', type=bool, default=None, help="True if z shot corrected by linear alteration.") return parser
        diff --git a/docs/sphinx/_build/html/_modules/borea/process/p_format/p_write_opk.html b/docs/sphinx/_build/html/_modules/borea/process/p_format/p_write_opk.html index c8c547ac..58565372 100644 --- a/docs/sphinx/_build/html/_modules/borea/process/p_format/p_write_opk.html +++ b/docs/sphinx/_build/html/_modules/borea/process/p_format/p_write_opk.html @@ -324,8 +324,8 @@

        Source code for borea.process.p_format.p_write_opk

        args (argparse): Arg to apply on worksite (data). work (Worksite): Data. """ - if args.order_axe_output: - args.order_axe_output = args.order_axe_output.lower() + if args.ob: + args.ob = args.ob.lower() if args.output_header: args.output_header = list(args.output_header.upper()) @@ -333,10 +333,10 @@

        Source code for borea.process.p_format.p_write_opk

        # Writing data print("Writing OPK.") if args.namereturn is not None: - args_writing = {"order_axe": args.order_axe_output, + args_writing = {"order_axe": args.ob, "header": args.output_header, - "unit_angle": args.output_unit_angle, - "linear_alteration": args.output_linear_alteration} + "unit_angle": args.ou, + "linear_alteration": args.oa} manager_writer("opk", args.namereturn, args.pathreturn, args_writing, work) print(f"File written in {args.pathreturn + args.namereturn}.opk.") else: From 36cf0fe48bd91c46dbf671f58ad2be4e25c341df Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Fri, 27 Sep 2024 15:31:54 +0200 Subject: [PATCH 06/16] fix: debug error to change condition if --- borea/worksite/worksite.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/borea/worksite/worksite.py b/borea/worksite/worksite.py index 337461a5..1d40b1a3 100644 --- a/borea/worksite/worksite.py +++ b/borea/worksite/worksite.py @@ -205,7 +205,7 @@ def set_unit_output(self, type_z: str = None, unit_angle: str = None, shot.set_unit_angle(unit_angle) if type_z: shot.set_type_z(type_z) - if linear_alteration: + if linear_alteration is not None: shot.set_linear_alteration(linear_alteration) if order_axe: shot.set_order_axe(order_axe) From b7037942d03c6baf8cd6ae788b572068e580c7eb Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 11:24:54 +0200 Subject: [PATCH 07/16] feat: add function transform projection of data frame point --- borea/geodesy/transform_geodesy.py | 23 +++++++++++++++++- borea/process/p_func/p_spaceresection.py | 4 ++-- borea/reader/reader_point.py | 8 +++---- borea_tools/transform_proj_points.py | 30 ++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 borea_tools/transform_proj_points.py diff --git a/borea/geodesy/transform_geodesy.py b/borea/geodesy/transform_geodesy.py index d776aa66..c290649f 100644 --- a/borea/geodesy/transform_geodesy.py +++ b/borea/geodesy/transform_geodesy.py @@ -3,6 +3,7 @@ """ import pyproj import numpy as np +import pandas as pd # pylint: disable=too-many-instance-attributes @@ -188,7 +189,7 @@ def tranform_height(self, coor: np.ndarray) -> float: raise ValueError("The geoid has not been entered, " "cannot transform z altitude to height.") from info - if new_z == np.inf: + if np.all(new_z == np.inf): raise ValueError("out geoid") return new_z @@ -217,3 +218,23 @@ def tranform_altitude(self, coor: np.ndarray) -> float: if np.all(new_z == np.inf): raise ValueError("out geoid") return new_z + + def transform_pt_proj(self, df_pt: pd.DataFrame, type_z_input: str = None, + type_z_output: str = None) -> pd.DataFrame: + """ + Tranform the input projection to the output projection of points coordinates + """ + if type_z_input and type_z_output: + if type_z_input != type_z_output: + if type_z_output == "altitude": + df_pt["z"] = self.tranform_altitude(np.array([df_pt['x'], + df_pt['y'], + df_pt['z']])) + if type_z_output == "height": + df_pt["z"] = self.tranform_height(np.array([df_pt['x'], + df_pt['y'], + df_pt['z']])) + + df_pt["x"], df_pt["y"] = self.proj_to_proj_out(df_pt['x'], df_pt['y']) + + return df_pt diff --git a/borea/process/p_func/p_spaceresection.py b/borea/process/p_func/p_spaceresection.py index 2f288b56..b4e30230 100644 --- a/borea/process/p_func/p_spaceresection.py +++ b/borea/process/p_func/p_spaceresection.py @@ -44,8 +44,8 @@ def process_space_resection(args: argparse) -> Worksite: work = Worksite("Space_Resection") work = process_args_gen_param(args, work) work.set_type_z_shot(check_header_file(list(args.output_header.upper()))[1]) - pt2d = read_file_pt_dataframe(args.gcp2d, list(args.head_gcp2d.upper()), "pt2d") - pt3d = read_file_pt_dataframe(args.gcp3d, list(args.head_gcp3d.upper()), "pt3d") + pt2d, _ = read_file_pt_dataframe(args.gcp2d, list(args.head_gcp2d.upper()), "pt2d") + pt3d, _ = read_file_pt_dataframe(args.gcp3d, list(args.head_gcp3d.upper()), "pt3d") pinit = {"coor_init": np.array(args.point3d)} SpaceResection(work).space_resection_to_worksite(pt2d, pt3d, pinit) return work diff --git a/borea/reader/reader_point.py b/borea/reader/reader_point.py index 9c1d92eb..5f5e1650 100644 --- a/borea/reader/reader_point.py +++ b/borea/reader/reader_point.py @@ -53,7 +53,7 @@ def read_file_pt(path: str, header: list, type_point: str, work: Worksite) -> No raise FileNotFoundError(f"The path {path} is incorrect !!!") from e -def read_file_pt_dataframe(path: str, header: list, type_point: str) -> pd.DataFrame: +def read_file_pt_dataframe(path: str, header: list, type_point: str) -> tuple: """ Read file of points to save in Dataframe. @@ -63,12 +63,12 @@ def read_file_pt_dataframe(path: str, header: list, type_point: str) -> pd.DataF type_point (str): Type of point is reading (pt2d, pt3d). Returns: - pd.Dataframe: Dataframe of data. + tuple: Dataframe of data and type of z in str. """ if type_point not in ["pt2d", "pt3d"]: raise ValueError(f"type {type_point} in incorrect. ['pt2d', 'pt3d']") - header, _ = check_header_file(header, type_point) + header, type_z = check_header_file(header, type_point) id_pt = [] ttype = [] @@ -110,4 +110,4 @@ def read_file_pt_dataframe(path: str, header: list, type_point: str) -> pd.DataF "id_shot": ttype, "column": coor[:, 0], "line": coor[:, 1]}) - return df + return df, type_z diff --git a/borea_tools/transform_proj_points.py b/borea_tools/transform_proj_points.py new file mode 100644 index 00000000..5b9a93c2 --- /dev/null +++ b/borea_tools/transform_proj_points.py @@ -0,0 +1,30 @@ +""" +Main to transform projection of 3D points. +""" +# pylint: disable=import-error, wrong-import-position, line-too-long +import argparse +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) +from borea.process.p_func.p_tf_proj_pt import args_tf_proj_param, process_tf_proj_param # noqa: E402, E501 + + +def transform_proj_pt(): + """ + Transforms the projection of a point file by pyproj. + """ + parser = argparse.ArgumentParser(description='Transform coordinate projection of the 3D points' + ' file.') + + # Args + parser = args_tf_proj_param(parser) + + args = parser.parse_args() + + # Process data + process_tf_proj_param(args) + + +if __name__ == "__main__": + transform_proj_pt() From f14ae5c811157afd02cb616b1116c61e91c89608 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 11:25:22 +0200 Subject: [PATCH 08/16] test: add new test to change projection of df --- test/test_geodesy/test_projengine.py | 53 +++++++++++++++++++ test/test_reader/test_readfilept.py | 8 +-- .../test_spaceresection.py | 8 +-- 3 files changed, 62 insertions(+), 7 deletions(-) diff --git a/test/test_geodesy/test_projengine.py b/test/test_geodesy/test_projengine.py index 257e2e16..bc95dad6 100644 --- a/test/test_geodesy/test_projengine.py +++ b/test/test_geodesy/test_projengine.py @@ -4,12 +4,15 @@ # pylint: disable=import-error, missing-function-docstring, unused-argument, duplicate-code import pyproj import pytest +import pandas as pd from borea.datastruct.dtm import Dtm from borea.geodesy.proj_engine import ProjEngine +PATH_CSV = "./dataset/GCP_test.app" EPSG = [2154] PATH_GEOID = ["./dataset/fr_ign_RAF20.tif"] +EPSG_OUTPUT = 4326 def setup_module(module): # run before the first test @@ -58,3 +61,53 @@ def test_tf_conv_tf_output(): xmo, ymo = proj.tf.proj_to_proj_out(xf, yf) assert round(xmo, 3) == xm assert round(ymo, 3) == ym + + +def test_transform_proj(): + df = pd.read_csv(PATH_CSV, sep=' ', + skiprows=0, + usecols=[0, 1, 2, 3, 4], + index_col=False, + names=["id_pnt", "type", "x", "y", "z"], + dtype={"id_pnt": str, + "type": int, + "x": float, + "y": float, + "z": float}) + ProjEngine().set_epsg(EPSG, epsg_output=EPSG_OUTPUT) + df_proj = ProjEngine().tf.transform_pt_proj(df) + assert round(df_proj.loc[0, "x"], 3) == 43.642 + assert round(df_proj.loc[0, "y"], 3) == 4.432 + assert df_proj.loc[0, "z"] == 54.96 + assert round(df_proj.loc[1, "x"], 3) == 43.624 + assert round(df_proj.loc[1, "y"], 3) == 4.656 + assert df_proj.loc[1, "z"] == 52.63 + assert round(df_proj.loc[2, "x"], 3) == 43.647 + assert round(df_proj.loc[2, "y"], 3) == 4.717 + assert df_proj.loc[2, "z"] == 62.47 + + +def test_transform_proj_zh(): + df = pd.read_csv(PATH_CSV, sep=' ', + skiprows=0, + usecols=[0, 1, 2, 3, 4], + index_col=False, + names=["id_pnt", "type", "x", "y", "z"], + dtype={"id_pnt": str, + "type": int, + "x": float, + "y": float, + "z": float}) + type_z = "altitude" + type_z_output = "height" + ProjEngine().set_epsg(EPSG, PATH_GEOID, EPSG_OUTPUT) + df_proj = ProjEngine().tf.transform_pt_proj(df, type_z, type_z_output) + assert round(df_proj.loc[0, "x"], 3) == 43.642 + assert round(df_proj.loc[0, "y"], 3) == 4.432 + assert df_proj.loc[0, "z"] != 54.96 + assert round(df_proj.loc[1, "x"], 3) == 43.624 + assert round(df_proj.loc[1, "y"], 3) == 4.656 + assert df_proj.loc[1, "z"] != 52.63 + assert round(df_proj.loc[2, "x"], 3) == 43.647 + assert round(df_proj.loc[2, "y"], 3) == 4.717 + assert df_proj.loc[2, "z"] != 62.47 diff --git a/test/test_reader/test_readfilept.py b/test/test_reader/test_readfilept.py index 5d301613..656f630b 100644 --- a/test/test_reader/test_readfilept.py +++ b/test/test_reader/test_readfilept.py @@ -86,7 +86,7 @@ def test_read_co_points(self): 5550.03]).all() def test_read_file_pt_dataframe_co_point(self): - df = read_file_pt_dataframe(self.INPUT_LIAISONS, list("PNXY"), "pt2d") + df, _ = read_file_pt_dataframe(self.INPUT_LIAISONS, list("PNXY"), "pt2d") assert (df == pd.DataFrame({"id_pt": ["MES_674214", "MES_674214", "MES_674214", "MES_674216", "MES_674216", "MES_674216", "MES_674219", "MES_674219", "MES_674219", @@ -111,17 +111,19 @@ def test_read_file_pt_dataframe_co_point(self): 1147.48]})).all def test_read_file_pt_dataframe_gcp3d(self): - df = read_file_pt_dataframe(self.INPUT_GCP, list("PTXYZ"), "pt3d") + df, type_z = read_file_pt_dataframe(self.INPUT_GCP, list("PTXYZ"), "pt3d") assert (df == pd.DataFrame({"id_pt": ["1003", "1005", "1006"], "type": [13, 3, 13], "x": [815601.510, 833670.940, 838561.350], "y": [6283629.280, 6281965.400, 6284600.330], "z": [54.960, 52.630, 62.470]})).all + assert type_z == "altitude" def test_read_file_pt_dataframe_gcp3dt(self): - df = read_file_pt_dataframe(self.INPUT_GCP, list("PXYZ"), "pt3d") + df, type_z = read_file_pt_dataframe(self.INPUT_GCP, list("PXYZ"), "pt3d") assert (df == pd.DataFrame({"id_pt": ["1003", "1005", "1006"], "type": None, "x": [815601.510, 833670.940, 838561.350], "y": [6283629.280, 6281965.400, 6284600.330], "z": [54.960, 52.630, 62.470]})).all + assert type_z == "altitude" diff --git a/test/test_transfo_world_image/test_spaceresection.py b/test/test_transfo_world_image/test_spaceresection.py index 7c9dd638..76c48523 100644 --- a/test/test_transfo_world_image/test_spaceresection.py +++ b/test/test_transfo_world_image/test_spaceresection.py @@ -144,8 +144,8 @@ def test_space_resection_to_worksite(): work.set_proj(EPSG, PATH_GEOID) read_camera(PATH_CAM, work) work.set_dtm(PATH_DTM, "height") - pt2d = read_file_pt_dataframe(PT_LIAISON2, list("PNXY"), "pt2d") - pt3d = read_file_pt_dataframe(PT_LIAISON0, list("PXYZ"), "pt3d") + pt2d, _ = read_file_pt_dataframe(PT_LIAISON2, list("PNXY"), "pt2d") + pt3d, _ = read_file_pt_dataframe(PT_LIAISON0, list("PXYZ"), "pt3d") work.type_z_data = "height" work.type_z_shot = "altitude" work.approxeucli = False @@ -167,8 +167,8 @@ def test_space_resection_to_worksite(): def test_init_kappa(): work = Worksite("Test") - pt2d = read_file_pt_dataframe(PT_LIAISON2, list("PNXY"), "pt2d") - pt3d = read_file_pt_dataframe(PT_LIAISON0, list("PXYZ"), "pt3d") + pt2d, _ = read_file_pt_dataframe(PT_LIAISON2, list("PNXY"), "pt2d") + pt3d, _ = read_file_pt_dataframe(PT_LIAISON0, list("PXYZ"), "pt3d") kappa = [] for name_shot, group in pt2d.groupby("id_shot"): if name_shot not in ["23FD1305x00027_01495", "23FD1305x00054_05677", From 3a2048f6da6fb2930919315b3b403f75affaa9d3 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 11:26:00 +0200 Subject: [PATCH 09/16] docs: change use cas function in example --- examples/eg_space_resection.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/eg_space_resection.py b/examples/eg_space_resection.py index 42afbd02..96110472 100644 --- a/examples/eg_space_resection.py +++ b/examples/eg_space_resection.py @@ -46,8 +46,8 @@ def space_resection_on_points_to_shot() -> Worksite: # Read file of point to have in DataFrame format # read_file_pt_dataframe(path_file, header_file, type_point = choices([pt2d, pt3d]) - pt2d = read_file_pt_dataframe(PATH_CO_PT_IMAGE, list("PNXY"), "pt2d") - pt3d = read_file_pt_dataframe(PATH_CO_PT_WORLD, list("PXYH"), "pt3d") + pt2d, _ = read_file_pt_dataframe(PATH_CO_PT_IMAGE, list("PNXY"), "pt2d") + pt3d, type_z = read_file_pt_dataframe(PATH_CO_PT_WORLD, list("PXYH"), "pt3d") # Setup unit z data, shot in worksite and euclidean system to use for shot work_noshot.set_type_z_data("height") From f07b66de56bbf0474893c37537f0ba83e2176d69 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 12:06:34 +0200 Subject: [PATCH 10/16] fix: translates the doc into english --- borea_tools/spaceresection_opk.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/borea_tools/spaceresection_opk.py b/borea_tools/spaceresection_opk.py index 46de679c..6e8caa5e 100644 --- a/borea_tools/spaceresection_opk.py +++ b/borea_tools/spaceresection_opk.py @@ -13,8 +13,8 @@ def spaceresection_opk(): """ - Permet d'obtenir un fichier OPK à partir de point de liaison sur les images et de leur - coordonnées terrain (calcule les 6 paramètres externes pour chaque image qui dispose d'un point) + Produces an OPK file from image link points and their field coordinates + coordinates (calculates the 6 external parameters for each image with a point) """ parser = argparse.ArgumentParser(description='Space resection of point file image and world' ' to calculate 6 externals parameters of shots') From fa896c7f6418b08a655acd91acbe077abd9d639c Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 14:11:42 +0200 Subject: [PATCH 11/16] feat: add new functionality proj transform of point file --- borea/geodesy/transform_geodesy.py | 2 +- borea/process/p_add_data/p_gen_param.py | 26 ++--------- borea/process/p_add_data/p_proj.py | 57 +++++++++++++++++++++++++ borea/process/p_func/p_tf_proj_pt.py | 50 ++++++++++++++++++++++ borea_tools/transfom_proj_points.py | 30 +++++++++++++ examples/eg_space_resection.py | 2 +- 6 files changed, 142 insertions(+), 25 deletions(-) create mode 100644 borea/process/p_add_data/p_proj.py create mode 100644 borea/process/p_func/p_tf_proj_pt.py create mode 100644 borea_tools/transfom_proj_points.py diff --git a/borea/geodesy/transform_geodesy.py b/borea/geodesy/transform_geodesy.py index c290649f..78f7d1c7 100644 --- a/borea/geodesy/transform_geodesy.py +++ b/borea/geodesy/transform_geodesy.py @@ -222,7 +222,7 @@ def tranform_altitude(self, coor: np.ndarray) -> float: def transform_pt_proj(self, df_pt: pd.DataFrame, type_z_input: str = None, type_z_output: str = None) -> pd.DataFrame: """ - Tranform the input projection to the output projection of points coordinates + Tranform the input projection to the output projection of points coordinates """ if type_z_input and type_z_output: if type_z_input != type_z_output: diff --git a/borea/process/p_add_data/p_gen_param.py b/borea/process/p_add_data/p_gen_param.py index c744f19f..f012f85f 100644 --- a/borea/process/p_add_data/p_gen_param.py +++ b/borea/process/p_add_data/p_gen_param.py @@ -2,8 +2,8 @@ Args of parser for reading generals parameters """ import argparse -import pyproj from borea.worksite.worksite import Worksite +from borea.process.p_add_data.p_proj import args_proj_param, process_args_proj_param from borea.reader.reader_camera import read_camera @@ -17,14 +17,7 @@ def args_general_param(parser: argparse) -> argparse: Returns: argsparse: Parser with argument. """ - parser.add_argument('-e', '--epsg', - type=int, default=None, - help='EPSG codifier number of the reference system used e.g. "2154".') - parser.add_argument('-y', '--pathgeoid', - type=str, nargs='*', default=None, - help='Path to the pyproj GeoTIFF of the geoid e.g../test/data/geoid.tif' - f' or they must be in {pyproj.datadir.get_data_dir()} and just' - ' need name of file e.g. geoid.tif.') + parser = args_proj_param(parser) parser.add_argument('-c', '--camera', type=str, nargs='*', help='Files paths of cameras (xml or txt).') @@ -37,15 +30,6 @@ def args_general_param(parser: argparse) -> argparse: parser.add_argument('-x', '--approx_system', type=bool, default=False, help="To use an approximate system.") - parser.add_argument('--geog', '--epsg_geographic', - type=int, default=None, - help='EPSG codifier number of the reference geographic system.') - parser.add_argument('--geoc', '--epsg_geocentric', - type=int, default=None, - help='EPSG codifier number of the reference geocentric system.') - parser.add_argument('--oe', '--epsg_output', - type=int, default=None, - help="Code epsg of output Data") return parser @@ -61,11 +45,7 @@ def process_args_gen_param(args: argparse, work: Worksite) -> Worksite: Worksite: data """ # Add a projection to the worksite - if args.epsg is not None: - work.set_proj([args.epsg, args.geog, args.geoc], args.pathgeoid, args.oe) - print(f"Projection set-up with EPSG:{args.epsg}.") - else: - print("There is no given projection.") + work = process_args_proj_param(args, work) # Reading camera file if args.camera is not None: diff --git a/borea/process/p_add_data/p_proj.py b/borea/process/p_add_data/p_proj.py new file mode 100644 index 00000000..6cddac8c --- /dev/null +++ b/borea/process/p_add_data/p_proj.py @@ -0,0 +1,57 @@ +""" +Args of parser for reading projection parameters +""" +import argparse +import pyproj +from borea.worksite.worksite import Worksite + + +def args_proj_param(parser: argparse) -> argparse: + """ + Args for adding projection parameter. + + Args: + parser (argparse): Parser to add argument. + + Returns: + argsparse: Parser with argument. + """ + parser.add_argument('-e', '--epsg', + type=int, default=None, + help='EPSG codifier number of the reference system used e.g. "2154".') + parser.add_argument('-y', '--pathgeoid', + type=str, nargs='*', default=None, + help='Path to the pyproj GeoTIFF of the geoid e.g../test/data/geoid.tif' + f' or they must be in {pyproj.datadir.get_data_dir()} and just' + ' need name of file e.g. geoid.tif.') + parser.add_argument('--geog', '--epsg_geographic', + type=int, default=None, + help='EPSG codifier number of the reference geographic system.') + parser.add_argument('--geoc', '--epsg_geocentric', + type=int, default=None, + help='EPSG codifier number of the reference geocentric system.') + parser.add_argument('--oe', '--epsg_output', + type=int, default=None, + help="Code epsg of output Data") + return parser + + +def process_args_proj_param(args: argparse, work: Worksite) -> Worksite: + """ + Processing args with data. + + Args: + args (argparse): Arg to apply on worksite (data). + work (Worksite): Worksite to work on. + + Returns: + Worksite: data + """ + # Add a projection to the worksite + if args.epsg is not None: + work.set_proj([args.epsg, args.geog, args.geoc], args.pathgeoid, args.oe) + print(f"Projection set-up with EPSG:{args.epsg}.") + else: + print("There is no given projection.") + + return work diff --git a/borea/process/p_func/p_tf_proj_pt.py b/borea/process/p_func/p_tf_proj_pt.py new file mode 100644 index 00000000..c456b92c --- /dev/null +++ b/borea/process/p_func/p_tf_proj_pt.py @@ -0,0 +1,50 @@ +""" +Args of parser to transform projection of 3D points. +""" +import argparse + +from borea.process.p_add_data.p_file_gcp3d import args_gcp3d +from borea.process.p_add_data.p_proj import args_proj_param +from borea.process.p_add_data.p_write import args_writer +from borea.reader.reader_point import read_file_pt_dataframe +from borea.geodesy.proj_engine import ProjEngine +from borea.writer.writer_df_to_txt import write_df_to_txt + + +def args_tf_proj_param(parser: argparse) -> argparse: + """ + Args for adding transform proj of points parameter. + + Args: + parser (argparse): Parser to add argument. + + Returns: + argsparse: Parser with argument. + """ + parser = args_gcp3d(parser) + parser = args_proj_param(parser) + parser.add_argument('--oz', '--z_output', + type=str, choices=[None, 'altitude', 'height'], default=None, + help="Output type of z. altitude or height") + parser = args_writer(parser) + return parser + + +def process_tf_proj_param(args: argparse) -> None: + """ + Processing args with data. + + Args: + args (argparse): Arg to apply on worksite (data). + """ + # Read file to Dataframe + df, type_z = read_file_pt_dataframe(args.gcp3d, args.head_gcp3d, "pt3d") + + # Setup Projection + ProjEngine().set_epsg([args.epsg, args.geog, args.geoc], args.pathgeoid, args.oe) + + # Change projection + new_df = ProjEngine().tf.transform_pt_proj(df, type_z, args.oz) + + # Write the new file + write_df_to_txt(args.namereturn, args.pathreturn, new_df) diff --git a/borea_tools/transfom_proj_points.py b/borea_tools/transfom_proj_points.py new file mode 100644 index 00000000..5b9a93c2 --- /dev/null +++ b/borea_tools/transfom_proj_points.py @@ -0,0 +1,30 @@ +""" +Main to transform projection of 3D points. +""" +# pylint: disable=import-error, wrong-import-position, line-too-long +import argparse +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) +from borea.process.p_func.p_tf_proj_pt import args_tf_proj_param, process_tf_proj_param # noqa: E402, E501 + + +def transform_proj_pt(): + """ + Transforms the projection of a point file by pyproj. + """ + parser = argparse.ArgumentParser(description='Transform coordinate projection of the 3D points' + ' file.') + + # Args + parser = args_tf_proj_param(parser) + + args = parser.parse_args() + + # Process data + process_tf_proj_param(args) + + +if __name__ == "__main__": + transform_proj_pt() diff --git a/examples/eg_space_resection.py b/examples/eg_space_resection.py index 96110472..38e05b59 100644 --- a/examples/eg_space_resection.py +++ b/examples/eg_space_resection.py @@ -50,7 +50,7 @@ def space_resection_on_points_to_shot() -> Worksite: pt3d, type_z = read_file_pt_dataframe(PATH_CO_PT_WORLD, list("PXYH"), "pt3d") # Setup unit z data, shot in worksite and euclidean system to use for shot - work_noshot.set_type_z_data("height") + work_noshot.set_type_z_data(type_z) work_noshot.set_type_z_shot("altitude") work_noshot.set_approx_eucli_proj(False) From 91706996e9225339e797f437ba9414d4bdcdddd3 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 14:19:48 +0200 Subject: [PATCH 12/16] test: add test in workflows for new function --- .github/workflows/test_mac.yml | 10 +++++++--- .github/workflows/test_ubu.yml | 9 ++++++--- .github/workflows/test_win.yml | 10 +++++++--- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test_mac.yml b/.github/workflows/test_mac.yml index 0f77eae6..935693e9 100644 --- a/.github/workflows/test_mac.yml +++ b/.github/workflows/test_mac.yml @@ -35,11 +35,11 @@ jobs: - name: Run regression test opk to opk shell: bash -el {0} - run: python ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC -ou radian -oa False + run: python ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC --ou radian --oa False - name: Run regression test opk to opk with multi epsg shell: bash -el {0} - run : python ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 --geoc 4964 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC -ou radian -oa False + run : python ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 --geoc 4964 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC --ou radian --oa False - name: Run regression test control opk shell: bash -el {0} @@ -67,8 +67,12 @@ jobs: - name: Run regression test spaceresection opk shell: bash -el {0} - run: python ./borea_tools/spaceresection_opk.py -p 825439 6289034 1500 -d height -c ./dataset/Camera1.txt -e 2154 -y ./dataset/fr_ign_RAF20.tif -m ./dataset/MNT_France_25m_h_crop.tif --fm height -t ./test/data/dataset2/all_liaisons2.mes -g ./test/data/dataset2/all_liaisons2_world.mes -l PXYH -n SpaceResection -w ./test/tmp/ -o NXYZOPKC -ou degree -oa True + run: python ./borea_tools/spaceresection_opk.py -p 825439 6289034 1500 -d height -c ./dataset/Camera1.txt -e 2154 -y ./dataset/fr_ign_RAF20.tif -m ./dataset/MNT_France_25m_h_crop.tif --fm height -t ./test/data/dataset2/all_liaisons2.mes -g ./test/data/dataset2/all_liaisons2_world.mes -l PXYH -n SpaceResection -w ./test/tmp/ -o NXYZOPKC --ou degree --oa True - name: Run regression test opk to conical shell: bash -el {0} run: python ./borea_tools/opk_to_conl.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -w ./test/tmp/ + + - name: Run transform projextion of points file + shell: bash -el {0} + run: python ./borea_tools/transform_proj_points.py -g ./dataset/GCP_test.app -l PTXYZ -e 2154 -y ./dataset/fr_ign_RAF20.tif --oe 4326 --oz height -n GCP_4326 -w ./test/tmp diff --git a/.github/workflows/test_ubu.yml b/.github/workflows/test_ubu.yml index ccfc759e..c9b5d51f 100644 --- a/.github/workflows/test_ubu.yml +++ b/.github/workflows/test_ubu.yml @@ -33,10 +33,10 @@ jobs: run: ./ci/test_example.sh - name: Run regression test opk to opk - run: python3 ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC -ou radian -oa False + run: python3 ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC --ou radian --oa False - name: Run regression test opk to opk with multi epsg - run : python3 ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 --geoc 4964 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC -ou radian -oa False + run : python3 ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 --geoc 4964 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC --ou radian --oa False - name: Run regression test control opk run: python3 ./borea_tools/opk_control.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -c ./dataset/Camera1.txt -e 2154 -y ./dataset/fr_ign_RAF20.tif -m ./dataset/MNT_France_25m_h_crop.tif --fm height -t ./dataset/terrain_test.mes -g ./dataset/GCP_test.app -d 13 -l PTXYH -p inter -w ./test/tmp/ @@ -57,7 +57,10 @@ jobs: run: python3 ./borea_tools/ptfile_image_to_world.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -c ./dataset/Camera1.txt -e 2154 -y ./dataset/fr_ign_RAF20.tif -m ./dataset/MNT_France_25m_h_crop.tif --fm height -t ./dataset/terrain_test.mes -p square -n Coor3d_pt_image -w ./test/tmp/ - name: Run regression test spaceresection opk - run: python3 ./borea_tools/spaceresection_opk.py -p 825439 6289034 1500 -d height -c ./dataset/Camera1.txt -e 2154 -y ./dataset/fr_ign_RAF20.tif -m ./dataset/MNT_France_25m_h_crop.tif --fm height -t ./test/data/dataset2/all_liaisons2.mes -g ./test/data/dataset2/all_liaisons2_world.mes -l PXYH -n SpaceResection -w ./test/tmp/ -o NXYZOPKC -ou degree -oa True + run: python3 ./borea_tools/spaceresection_opk.py -p 825439 6289034 1500 -d height -c ./dataset/Camera1.txt -e 2154 -y ./dataset/fr_ign_RAF20.tif -m ./dataset/MNT_France_25m_h_crop.tif --fm height -t ./test/data/dataset2/all_liaisons2.mes -g ./test/data/dataset2/all_liaisons2_world.mes -l PXYH -n SpaceResection -w ./test/tmp/ -o NXYZOPKC --ou degree --oa True - name: Run regression test opk to conical run: python3 ./borea_tools/opk_to_conl.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -w ./test/tmp/ + + - name: Run transform projextion of points file + run: python3 ./borea_tools/transform_proj_points.py -g ./dataset/GCP_test.app -l PTXYZ -e 2154 -y ./dataset/fr_ign_RAF20.tif --oe 4326 --oz height -n GCP_4326 -w ./test/tmp diff --git a/.github/workflows/test_win.yml b/.github/workflows/test_win.yml index 31c68a5c..b35820a0 100644 --- a/.github/workflows/test_win.yml +++ b/.github/workflows/test_win.yml @@ -35,11 +35,11 @@ jobs: - name: Run regression test conv opk shell: bash -el {0} - run: python ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC -ou radian -oa False + run: python ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC --ou radian --oa False - name: Run regression test opk to opk with multi epsg shell: bash -el {0} - run : python ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 --geoc 4964 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC -ou radian -oa False + run : python ./borea_tools/opk_to_opk.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 --geoc 4964 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -n Test -w ./test/tmp/ -o NXYHPOKC --ou radian --oa False - name: Run regression test control opk shell: bash -el {0} @@ -67,8 +67,12 @@ jobs: - name: Run regression test spaceresection opk shell: bash -el {0} - run: python ./borea_tools/spaceresection_opk.py -p 825439 6289034 1500 -d height -c ./dataset/Camera1.txt -e 2154 -y ./dataset/fr_ign_RAF20.tif -m ./dataset/MNT_France_25m_h_crop.tif --fm height -t ./test/data/dataset2/all_liaisons2.mes -g ./test/data/dataset2/all_liaisons2_world.mes -l PXYH -n SpaceResection -w ./test/tmp/ -o NXYZOPKC -ou degree -oa True + run: python ./borea_tools/spaceresection_opk.py -p 825439 6289034 1500 -d height -c ./dataset/Camera1.txt -e 2154 -y ./dataset/fr_ign_RAF20.tif -m ./dataset/MNT_France_25m_h_crop.tif --fm height -t ./test/data/dataset2/all_liaisons2.mes -g ./test/data/dataset2/all_liaisons2_world.mes -l PXYH -n SpaceResection -w ./test/tmp/ -o NXYZOPKC --ou degree --oa True - name: Run regression test opk to conical shell: bash -el {0} run: python ./borea_tools/opk_to_conl.py -r ./dataset/23FD1305_alt_test.OPK -i NXYZOPKC -f 2 -e 2154 -y ./dataset/fr_ign_RAF20.tif -c ./dataset/Camera1.txt -m ./dataset/MNT_France_25m_h_crop.tif --fm height -w ./test/tmp/ + + - name: Run transform projextion of points file + shell: bash -el {0} + run: python ./borea_tools/transform_proj_points.py -g ./dataset/GCP_test.app -l PTXYZ -e 2154 -y ./dataset/fr_ign_RAF20.tif --oe 4326 --oz height -n GCP_4326 -w ./test/tmp From 38a04939ee1098440a54d24ed537be98398c476e Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 14:22:20 +0200 Subject: [PATCH 13/16] feat: add entry point in toml --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index dde3f920..af235018 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,3 +48,4 @@ pt-world-to-image = "borea_tools.pt_world_to_image:pt_world_to_image" ptfile-image-to-world = "borea_tools.ptfile_image_to_world:ptfile_image_to_world" ptfile-world-to-image = "borea_tools.ptfile_world_to_image:ptfile_world_to_image" spaceresection-opk = "borea_tools.spaceresection_opk:spaceresection_opk" +transform-proj-points = "borea_tools.transform_proj_points:transform_proj_pt" From 6d14b551717bb7f6fa4e2e76134a52c0097f7394 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 14:42:09 +0200 Subject: [PATCH 14/16] docs: add new README tf proj pts and link to other readme --- README.md | 1 + README_borea_lib.md | 1 + .../README_transform_proj_points.md | 79 +++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 borea_tools/docs_tools/README_transform_proj_points.md diff --git a/README.md b/README.md index b26cdf16..aa5b09bc 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ Why Borea? B for Box and orea is a back slang of aero. * Transforms coordinates file terrain from image: [borea_tools/docs_tools/README_ptfile_image_to_world.md](./borea_tools/docs_tools/README_ptfile_image_to_world.md) * Transforms coordinates file image from terrain: [borea_tools/docs_tools/README_ptfile_world_to_image.md](./borea_tools/docs_tools/README_ptfile_world_to_image.md) * Calculates opk by space resection: [borea_tools/docs_tools/README_spaceresection_opk.md](./borea_tools/docs_tools/README_spaceresection_opk.md) +* Transform projection of points file: [borea_tools/docs_tools/README_transform_proj_points.md](./borea_tools/docs_tools/README_transform_proj_points.md) * Python lib: [README_borea_lib.md](./README_borea_lib.md) ## Dependency diff --git a/README_borea_lib.md b/README_borea_lib.md index a218a01b..fc9decbc 100644 --- a/README_borea_lib.md +++ b/README_borea_lib.md @@ -43,6 +43,7 @@ Some tools are already implemented in the library: * Transforms coordinates file terrain from image: `ptfile-image-to-world -h` [doc](https://github.com/IGNF/Borea/tree/main/borea_tools/docs_tools/README_ptfile_image_to_world.md) * Transforms coordinates file image from terrain: `ptfile-world-to-image -h` [doc](https://github.com/IGNF/Borea/tree/main/borea_tools/docs_tools/README_ptfile_world_to_image.md) * Calculates opk by space resection: `spaceresection-opk -h` [doc](https://github.com/IGNF/Borea/tree/main/borea_tools/docs_tools/README_spaceresection_opk.md) +* Transform projection of points file: `transform-proj-points -h` [doc](./borea_tools/docs_tools/README_transform_proj_points.md) ## Read data and instantiate worksite diff --git a/borea_tools/docs_tools/README_transform_proj_points.md b/borea_tools/docs_tools/README_transform_proj_points.md new file mode 100644 index 00000000..7f8b5913 --- /dev/null +++ b/borea_tools/docs_tools/README_transform_proj_points.md @@ -0,0 +1,79 @@ +# Transforms projection of points file and type of z + +**transform_proj_points** change projection of points file. Give file of points, header, epsg of points and epsg you want in output. +The transformation is made by pyproj. In addition, you can change the z type of data with a geoid and type of z you want in output. + +## Application + +Call the function from a terminal in the depot directory `python borea_tools/transform_proj_points.py`. To view the information on the various parameters you can do : + +```python borea_tools/transform_proj_points.py -h``` + +Or if you install the package by **pip** the commande is: + +```transform-proj-points -h``` + +The parameters are: + +| Symbol | Details | Default | Mandatory | +| :----: | :------ | :-----: | :-------: | +| -g | File path of points in ground. | | V | +| -l | Header of the file gcp3d. | PTXYZ | V | +| -e | EPSG codifier number of the reference system used e.g. 2154 | | V | +| -y | Path to the file pyproj GeoTIFF of geoid. | None | X | +| --geog | EPSG codifier number of the reference geographic system, filled in if pyproj error | None | X | +| --geoc | EPSG codifier number of the reference geocentric system, filled in if pyproj error | None | X | +| --oe | Code epsg for output data. If none keeps the input data projection. | None | X | +| --oz | Z type of data you want in output altitude or height | None | X | +| -n | Name of worksite output file | | V | +| -w | Conversion path e.g. "./" | "./" | X | + +E.G. +``` +python ./borea_tools/transfom_proj_points.py -g ./dataset/GCP_test.app -l PTXYZ -e 2154 -y ./dataset/fr_ign_RAF20.tif --oe 4326 --oz height -n GCP_4326 -w ./test/tmp +``` +or pip +``` +transfom-proj-points -g ./dataset/GCP_test.app -l PTXYZ -e 2154 -y ./dataset/fr_ign_RAF20.tif --oe 4326 --oz height -n GCP_4326 -w ./test/tmp +``` + +## Detail for the header of point file -l + +`header` is used to describe the format of the point file read. It provides information on what's in each column. +Type is: +| Symbol | Details | +| :----: | :------ | +| S | to ignore the column | +| P | name of the point | +| N | name of shot | +| T | type of point | +| X | coordinate x of the shot position | +| Y | coordinate y of the shot position | +| Z | coordinate z altitude of the shot position | +| H | coordinate z height of the shot position | + + +## Info projection + +This library can transform and process 3D data with a z in altitude or height. This is done by the pyproj library, which needs the geoid at site level to change units. + +The command for adding a geoid is -y, where you can enter the paths to the various geoids. If the file is stored in pyproj's native folder (pyproj.datadir.get_data_dir(), *usr/share/proj* or *env_name_folder/lib/python3.10/site-packages/pyproj/proj_dir/share/proj*) the file name is sufficient pyproj will find it on its own. +Geoids file can be found on pyproj's github (https://github.com/OSGeo/PROJ-data). + +This transformation is accompanied by other cartographic, geographic and geocentric transformations. And pyproj may not be able to find the other systems on its own. +e.g. +``` +>>>crsm = crs.CRS.from_epsg(4326) +>>>crs_geoc = pyproj.crs.GeocentricCRS(name=crsm.name, datum=crsm.datum.name) +File "...", line 171, in + crs_geoc = pyproj.crs.GeocentricCRS(name=crsm.name, datum=crsm.datum.name) + File "...", line 1918, in __init__ + super().__init__(geocentric_crs_json) + File "...", line 348, in __init__ + self._local.crs = _CRS(self.srs) + File "pyproj/_crs.pyx", line 2378, in pyproj._crs._CRS.__init__ +pyproj.exceptions.CRSError: Invalid projection: +``` +You can therefore specify as parameters the epsg ( --geog / --geoc ) you want to use for each type of projection. + +![logo ign](../../docs/image/logo_ign.png) ![logo fr](../../docs/image/Republique_Francaise_Logo.png) \ No newline at end of file From 41291945fcef65cadfa203dba75aa9e37f35016f Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 14:44:54 +0200 Subject: [PATCH 15/16] docs: update sphinx python docs --- .../_build/doctrees/borea.geodesy.doctree | Bin 165959 -> 172157 bytes .../doctrees/borea.process.p_add_data.doctree | Bin 81551 -> 92400 bytes .../doctrees/borea.process.p_func.doctree | Bin 43841 -> 52736 bytes .../_build/doctrees/borea.reader.doctree | Bin 28199 -> 28148 bytes .../sphinx/_build/doctrees/environment.pickle | Bin 482699 -> 492129 bytes .../borea/geodesy/transform_geodesy.html | 26 +- .../borea/process/p_add_data/p_gen_param.html | 26 +- .../borea/process/p_add_data/p_proj.html | 375 ++++++++++++++++++ .../process/p_func/p_spaceresection.html | 4 +- .../borea/process/p_func/p_tf_proj_pt.html | 368 +++++++++++++++++ .../_modules/borea/reader/reader_point.html | 8 +- .../_modules/borea/worksite/worksite.html | 2 +- docs/sphinx/_build/html/_modules/index.html | 2 + .../_sources/borea.process.p_add_data.rst.txt | 8 + .../_sources/borea.process.p_func.rst.txt | 8 + docs/sphinx/_build/html/borea.geodesy.html | 7 + docs/sphinx/_build/html/borea.html | 3 + docs/sphinx/_build/html/borea.process.html | 10 + .../_build/html/borea.process.p_add_data.html | 46 +++ .../_build/html/borea.process.p_func.html | 37 ++ docs/sphinx/_build/html/borea.reader.html | 6 +- docs/sphinx/_build/html/genindex.html | 36 +- docs/sphinx/_build/html/objects.inv | Bin 3077 -> 3126 bytes docs/sphinx/_build/html/py-modindex.html | 12 + docs/sphinx/_build/html/searchindex.js | 2 +- docs/sphinx/borea.process.p_add_data.rst | 8 + docs/sphinx/borea.process.p_func.rst | 8 + 27 files changed, 963 insertions(+), 39 deletions(-) create mode 100644 docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_proj.html create mode 100644 docs/sphinx/_build/html/_modules/borea/process/p_func/p_tf_proj_pt.html diff --git a/docs/sphinx/_build/doctrees/borea.geodesy.doctree b/docs/sphinx/_build/doctrees/borea.geodesy.doctree index eb113cf622961e6a932b746de463b753d5f8166e..a42939c55c9c6a17671f7918ca296c0c318cd74f 100644 GIT binary patch delta 2295 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 delta 4606 zcmai&e_WN-9mn||K(6xh-uv9&T(0~U1cbmKWp=M5i0~>kwdN|oGV!T272C{yfUA|0 zrSe73s_pf{+SJUcfX!YjUk0w$s12}MW@}1WvtHD&(weT?_j{gu!JB{NALks-^Zj+s z^L{?(Tt^0@H-8fq)f~NTLT8j`7j77+!rON}g?9{2$BNxGxcl8=%sBQ-ta_#y3*K0d zm3#8=vH!;5&>Nqi{%jRm-s6 znYindsp#o_o@1ZtHDc>WC&WBxj)>4>%ve60gS(HG$i)^&!HdH_DJ_smgB*Am1Fz&s zixnyW8g11*yod{u7#^IUgz{%AtK^Yy^UI3m4h_8c5UP2#!o02dGDB`agfgRH0~Z~ z`jLvfelm7w(Xfw#<%(y`*l>0|2u%H3J|_J&Mtp1Jrmm=V9yruIar(wsr#aJ=m$7$y);it5OJlU}j zqM-@@H*hzme>F`sS-R`KG6AKahnB|Wjb0roQe#RD(AG6sWL*luQ1C_^e)09ns3v-Z z;F?76orgo@;zeIUis-iB__yX@+{G4nMNOVMoD$#7VUimoDdNkPZtp)90Q{34reMbr zyEtyap~778rUg^I`QfIRaC|RZAj=%toB`QUUsD{}k^~;?-=Bi;ol~5*;EpSDzvopy zDK;HldKemyIIV%Fr$oGih!~vAEhwu(paDta3@>=G+A2FI!*X%Rid%0jgoDa>U~{Z^depk-x_RPF!+MZ%-PRyJw#pqdV5(@b63e-A zBp)2s%M1I^NZe|I_eY~rfM5+hf6t+7nqrf% zlg;CyZxkqb&jk2XOx4iro+gSkxg!?d6W8#cDRN6HB*zy~h#*ZBT6b&vJs=j-V_6J~ zu=C7hF<+A%39v`3HYQgDC-Lk{`Qg6u--+NCTQux^*dM9ao8_HJP$c4LFK5}ImE5w; zr-}Tqd^ieMrKaF2(iB{IS{PiFyi5hxVIEa#@*6Yc#8q(V23-ZXYPeFqXaS{;*W&s! zK5Tx}DjinXEMC&aL{S{q6l8B{Aw?8lXa;Ei(G+OZF=!^60xcRlKc9?q=j3Nhuu;9M~WyG8ky%)<~-rG z8DeWg!BFPa;yQa`9 z&=h)92czfZG8B3{d8E+WX$zr;o&9#P)gl8PxEC*+^T`t)SR6~74%AbNI`wS@XF7UAy$5t0ahq6{F~p2yQD%r66bw46AK>CdD9I zs*3L|-ei0kjdmrj&`f4|ZJJ5kZ)bUhZTvST)tbasyP}V}z?zz*ZL4NPsDJmjPomFt zk22d|Yl2;BQO4b1FV}U+x1j0_`xYn~(?}iDNF8e~bs-!d<7l~D46EI}c2-BkQk#nPLN*1@(B$R&Q}AM#Zn`G3jwTmuvvK#TYW6VfGBD_@jd)_`0Zr zl$4M6WHEZ!Lwa_!eHA z!P=dUQ7pw7dN*{ymzBYG@u9;w;J-26*9C_<;4Mz2evlxGY+x4&PNloqPS#zK;iSvp z4H-F3%5({6DsvcUXWX zeYKO1cCpehy~PRX%+UoQEvADiwTfHztcT z7hO7MOJ5~CNWx6B)8o@PgmL98aT&r{!@-R^XO&CcIV)W1&KYK_6mvP71|@SDMN*ee z`DHbfilr`f;|%xVOTq8wK#3@IF^iBU2Q$Gfye_^J$g GnY~rgT?JUDs{=VHIN!# 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 diff --git a/docs/sphinx/_build/doctrees/borea.reader.doctree b/docs/sphinx/_build/doctrees/borea.reader.doctree index d68a0dead974b37879300c663c611aed0e38c5ee..56164488cd8aae7d3ed110ff93d0cce0a6090f23 100644 GIT binary patch delta 224 zcmZ2}hw;m8M%D(_sV{Rkvif>6dQN8a7Mq;ut;bSQT97kY!8Cd^ug`i;HdYWfb@D_D zX;v_E^54*8D63ILZt{I=>CIchuCj%zyCjw*rWGaTrYhv8DWm{73W<3s3MG{VV1X)y z%shqSk|Mn+8SJrBGQ@g_RKIy!tOp~KBZMLDnbJC?aZ2qJjST55FV4w@iYAl!#P!*F Mz>=Fc#Fz5{0L33rpa1{> delta 256 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

        -YP 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 z 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 diff --git a/docs/sphinx/_build/html/_modules/borea/geodesy/transform_geodesy.html b/docs/sphinx/_build/html/_modules/borea/geodesy/transform_geodesy.html index 5297d36b..73504294 100644 --- a/docs/sphinx/_build/html/_modules/borea/geodesy/transform_geodesy.html +++ b/docs/sphinx/_build/html/_modules/borea/geodesy/transform_geodesy.html @@ -277,6 +277,7 @@

        Source code for borea.geodesy.transform_geodesy

        < """ import pyproj import numpy as np +import pandas as pd # pylint: disable=too-many-instance-attributes @@ -466,7 +467,7 @@

        Source code for borea.geodesy.transform_geodesy

        < raise ValueError("The geoid has not been entered, " "cannot transform z altitude to height.") from info - if new_z == np.inf: + if np.all(new_z == np.inf): raise ValueError("out geoid") return new_z
        @@ -498,6 +499,29 @@

        Source code for borea.geodesy.transform_geodesy

        < if np.all(new_z == np.inf): raise ValueError("out geoid") return new_z
        + + +
        +[docs] + def transform_pt_proj(self, df_pt: pd.DataFrame, type_z_input: str = None, + type_z_output: str = None) -> pd.DataFrame: + """ + Tranform the input projection to the output projection of points coordinates + """ + if type_z_input and type_z_output: + if type_z_input != type_z_output: + if type_z_output == "altitude": + df_pt["z"] = self.tranform_altitude(np.array([df_pt['x'], + df_pt['y'], + df_pt['z']])) + if type_z_output == "height": + df_pt["z"] = self.tranform_height(np.array([df_pt['x'], + df_pt['y'], + df_pt['z']])) + + df_pt["x"], df_pt["y"] = self.proj_to_proj_out(df_pt['x'], df_pt['y']) + + return df_pt

    diff --git a/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html index f8906568..a0ce918f 100644 --- a/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html +++ b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_gen_param.html @@ -276,8 +276,8 @@

    Source code for borea.process.p_add_data.p_gen_param

    Args of parser for reading generals parameters """ import argparse -import pyproj from borea.worksite.worksite import Worksite +from borea.process.p_add_data.p_proj import args_proj_param, process_args_proj_param from borea.reader.reader_camera import read_camera @@ -293,14 +293,7 @@

    Source code for borea.process.p_add_data.p_gen_param

    Returns: argsparse: Parser with argument. """ - parser.add_argument('-e', '--epsg', - type=int, default=None, - help='EPSG codifier number of the reference system used e.g. "2154".') - parser.add_argument('-y', '--pathgeoid', - type=str, nargs='*', default=None, - help='Path to the pyproj GeoTIFF of the geoid e.g../test/data/geoid.tif' - f' or they must be in {pyproj.datadir.get_data_dir()} and just' - ' need name of file e.g. geoid.tif.') + parser = args_proj_param(parser) parser.add_argument('-c', '--camera', type=str, nargs='*', help='Files paths of cameras (xml or txt).') @@ -313,15 +306,6 @@

    Source code for borea.process.p_add_data.p_gen_param

    parser.add_argument('-x', '--approx_system', type=bool, default=False, help="To use an approximate system.") - parser.add_argument('--geog', '--epsg_geographic', - type=int, default=None, - help='EPSG codifier number of the reference geographic system.') - parser.add_argument('--geoc', '--epsg_geocentric', - type=int, default=None, - help='EPSG codifier number of the reference geocentric system.') - parser.add_argument('--oe', '--epsg_output', - type=int, default=None, - help="Code epsg of output Data") return parser
    @@ -340,11 +324,7 @@

    Source code for borea.process.p_add_data.p_gen_param

    Worksite: data """ # Add a projection to the worksite - if args.epsg is not None: - work.set_proj([args.epsg, args.geog, args.geoc], args.pathgeoid, args.oe) - print(f"Projection set-up with EPSG:{args.epsg}.") - else: - print("There is no given projection.") + work = process_args_proj_param(args, work) # Reading camera file if args.camera is not None: diff --git a/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_proj.html b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_proj.html new file mode 100644 index 00000000..7f488316 --- /dev/null +++ b/docs/sphinx/_build/html/_modules/borea/process/p_add_data/p_proj.html @@ -0,0 +1,375 @@ + + + + + + + + borea.process.p_add_data.p_proj - Borea 1.0.0 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for borea.process.p_add_data.p_proj

    +"""
    +Args of parser for reading projection parameters
    +"""
    +import argparse
    +import pyproj
    +from borea.worksite.worksite import Worksite
    +
    +
    +
    +[docs] +def args_proj_param(parser: argparse) -> argparse: + """ + Args for adding projection parameter. + + Args: + parser (argparse): Parser to add argument. + + Returns: + argsparse: Parser with argument. + """ + parser.add_argument('-e', '--epsg', + type=int, default=None, + help='EPSG codifier number of the reference system used e.g. "2154".') + parser.add_argument('-y', '--pathgeoid', + type=str, nargs='*', default=None, + help='Path to the pyproj GeoTIFF of the geoid e.g../test/data/geoid.tif' + f' or they must be in {pyproj.datadir.get_data_dir()} and just' + ' need name of file e.g. geoid.tif.') + parser.add_argument('--geog', '--epsg_geographic', + type=int, default=None, + help='EPSG codifier number of the reference geographic system.') + parser.add_argument('--geoc', '--epsg_geocentric', + type=int, default=None, + help='EPSG codifier number of the reference geocentric system.') + parser.add_argument('--oe', '--epsg_output', + type=int, default=None, + help="Code epsg of output Data") + return parser
    + + + +
    +[docs] +def process_args_proj_param(args: argparse, work: Worksite) -> Worksite: + """ + Processing args with data. + + Args: + args (argparse): Arg to apply on worksite (data). + work (Worksite): Worksite to work on. + + Returns: + Worksite: data + """ + # Add a projection to the worksite + if args.epsg is not None: + work.set_proj([args.epsg, args.geog, args.geoc], args.pathgeoid, args.oe) + print(f"Projection set-up with EPSG:{args.epsg}.") + else: + print("There is no given projection.") + + return work
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + + + \ No newline at end of file diff --git a/docs/sphinx/_build/html/_modules/borea/process/p_func/p_spaceresection.html b/docs/sphinx/_build/html/_modules/borea/process/p_func/p_spaceresection.html index ea79eabe..eed59a98 100644 --- a/docs/sphinx/_build/html/_modules/borea/process/p_func/p_spaceresection.html +++ b/docs/sphinx/_build/html/_modules/borea/process/p_func/p_spaceresection.html @@ -323,8 +323,8 @@

    Source code for borea.process.p_func.p_spaceresection

    work = Worksite("Space_Resection") work = process_args_gen_param(args, work) work.set_type_z_shot(check_header_file(list(args.output_header.upper()))[1]) - pt2d = read_file_pt_dataframe(args.gcp2d, list(args.head_gcp2d.upper()), "pt2d") - pt3d = read_file_pt_dataframe(args.gcp3d, list(args.head_gcp3d.upper()), "pt3d") + pt2d, _ = read_file_pt_dataframe(args.gcp2d, list(args.head_gcp2d.upper()), "pt2d") + pt3d, _ = read_file_pt_dataframe(args.gcp3d, list(args.head_gcp3d.upper()), "pt3d") pinit = {"coor_init": np.array(args.point3d)} SpaceResection(work).space_resection_to_worksite(pt2d, pt3d, pinit) return work
    diff --git a/docs/sphinx/_build/html/_modules/borea/process/p_func/p_tf_proj_pt.html b/docs/sphinx/_build/html/_modules/borea/process/p_func/p_tf_proj_pt.html new file mode 100644 index 00000000..76709380 --- /dev/null +++ b/docs/sphinx/_build/html/_modules/borea/process/p_func/p_tf_proj_pt.html @@ -0,0 +1,368 @@ + + + + + + + + borea.process.p_func.p_tf_proj_pt - Borea 1.0.0 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for borea.process.p_func.p_tf_proj_pt

    +"""
    +Args of parser to transform projection of 3D points.
    +"""
    +import argparse
    +
    +from borea.process.p_add_data.p_file_gcp3d import args_gcp3d
    +from borea.process.p_add_data.p_proj import args_proj_param
    +from borea.process.p_add_data.p_write import args_writer
    +from borea.reader.reader_point import read_file_pt_dataframe
    +from borea.geodesy.proj_engine import ProjEngine
    +from borea.writer.writer_df_to_txt import write_df_to_txt
    +
    +
    +
    +[docs] +def args_tf_proj_param(parser: argparse) -> argparse: + """ + Args for adding transform proj of points parameter. + + Args: + parser (argparse): Parser to add argument. + + Returns: + argsparse: Parser with argument. + """ + parser = args_gcp3d(parser) + parser = args_proj_param(parser) + parser.add_argument('--oz', '--z_output', + type=str, choices=[None, 'altitude', 'height'], default=None, + help="Output type of z. altitude or height") + parser = args_writer(parser) + return parser
    + + + +
    +[docs] +def process_tf_proj_param(args: argparse) -> None: + """ + Processing args with data. + + Args: + args (argparse): Arg to apply on worksite (data). + """ + # Read file to Dataframe + df, type_z = read_file_pt_dataframe(args.gcp3d, args.head_gcp3d, "pt3d") + + # Setup Projection + ProjEngine().set_epsg([args.epsg, args.geog, args.geoc], args.pathgeoid, args.oe) + + # Change projection + new_df = ProjEngine().tf.transform_pt_proj(df, type_z, args.oz) + + # Write the new file + write_df_to_txt(args.namereturn, args.pathreturn, new_df)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + + + \ No newline at end of file diff --git a/docs/sphinx/_build/html/_modules/borea/reader/reader_point.html b/docs/sphinx/_build/html/_modules/borea/reader/reader_point.html index 01d91b9a..1941f5d0 100644 --- a/docs/sphinx/_build/html/_modules/borea/reader/reader_point.html +++ b/docs/sphinx/_build/html/_modules/borea/reader/reader_point.html @@ -332,7 +332,7 @@

    Source code for borea.reader.reader_point

     
     
    [docs] -def read_file_pt_dataframe(path: str, header: list, type_point: str) -> pd.DataFrame: +def read_file_pt_dataframe(path: str, header: list, type_point: str) -> tuple: """ Read file of points to save in Dataframe. @@ -342,12 +342,12 @@

    Source code for borea.reader.reader_point

             type_point (str): Type of point is reading (pt2d, pt3d).
     
         Returns:
    -        pd.Dataframe: Dataframe of data.
    +        tuple: Dataframe of data and type of z in str.
         """
         if type_point not in ["pt2d", "pt3d"]:
             raise ValueError(f"type {type_point} in incorrect. ['pt2d', 'pt3d']")
     
    -    header, _ = check_header_file(header, type_point)
    +    header, type_z = check_header_file(header, type_point)
     
         id_pt = []
         ttype = []
    @@ -389,7 +389,7 @@ 

    Source code for borea.reader.reader_point

                                "id_shot": ttype,
                                "column": coor[:, 0],
                                "line": coor[:, 1]})
    -    return df
    + return df, type_z
    diff --git a/docs/sphinx/_build/html/_modules/borea/worksite/worksite.html b/docs/sphinx/_build/html/_modules/borea/worksite/worksite.html index 85904fae..2eff154b 100644 --- a/docs/sphinx/_build/html/_modules/borea/worksite/worksite.html +++ b/docs/sphinx/_build/html/_modules/borea/worksite/worksite.html @@ -501,7 +501,7 @@

    Source code for borea.worksite.worksite

                     shot.set_unit_angle(unit_angle)
                 if type_z:
                     shot.set_type_z(type_z)
    -            if linear_alteration:
    +            if linear_alteration is not None:
                     shot.set_linear_alteration(linear_alteration)
                 if order_axe:
                     shot.set_order_axe(order_axe)
    diff --git a/docs/sphinx/_build/html/_modules/index.html b/docs/sphinx/_build/html/_modules/index.html
    index 7cb2f820..c16e1542 100644
    --- a/docs/sphinx/_build/html/_modules/index.html
    +++ b/docs/sphinx/_build/html/_modules/index.html
    @@ -289,6 +289,7 @@ 

    All modules for which code is available

  • borea.process.p_add_data.p_file_gcp2d
  • borea.process.p_add_data.p_file_gcp3d
  • borea.process.p_add_data.p_gen_param
  • +
  • borea.process.p_add_data.p_proj
  • borea.process.p_add_data.p_pt2d
  • borea.process.p_add_data.p_pt3d
  • borea.process.p_add_data.p_unit_shot
  • @@ -300,6 +301,7 @@

    All modules for which code is available

  • borea.process.p_func.p_control
  • borea.process.p_func.p_image_world
  • borea.process.p_func.p_spaceresection
  • +
  • borea.process.p_func.p_tf_proj_pt
  • borea.process.p_func.p_world_image
  • borea.reader.orientation.manage_reader
  • borea.reader.orientation.reader_opk
  • diff --git a/docs/sphinx/_build/html/_sources/borea.process.p_add_data.rst.txt b/docs/sphinx/_build/html/_sources/borea.process.p_add_data.rst.txt index 9b05c973..a7f6cb8e 100644 --- a/docs/sphinx/_build/html/_sources/borea.process.p_add_data.rst.txt +++ b/docs/sphinx/_build/html/_sources/borea.process.p_add_data.rst.txt @@ -36,6 +36,14 @@ borea.process.p\_add\_data.p\_gen\_param module :undoc-members: :show-inheritance: +borea.process.p\_add\_data.p\_proj module +----------------------------------------- + +.. automodule:: borea.process.p_add_data.p_proj + :members: + :undoc-members: + :show-inheritance: + borea.process.p\_add\_data.p\_pt2d module ----------------------------------------- diff --git a/docs/sphinx/_build/html/_sources/borea.process.p_func.rst.txt b/docs/sphinx/_build/html/_sources/borea.process.p_func.rst.txt index f3ae399f..7671a8bf 100644 --- a/docs/sphinx/_build/html/_sources/borea.process.p_func.rst.txt +++ b/docs/sphinx/_build/html/_sources/borea.process.p_func.rst.txt @@ -28,6 +28,14 @@ borea.process.p\_func.p\_spaceresection module :undoc-members: :show-inheritance: +borea.process.p\_func.p\_tf\_proj\_pt module +-------------------------------------------- + +.. automodule:: borea.process.p_func.p_tf_proj_pt + :members: + :undoc-members: + :show-inheritance: + borea.process.p\_func.p\_world\_image module -------------------------------------------- diff --git a/docs/sphinx/_build/html/borea.geodesy.html b/docs/sphinx/_build/html/borea.geodesy.html index 79c094b6..3f8eab12 100644 --- a/docs/sphinx/_build/html/borea.geodesy.html +++ b/docs/sphinx/_build/html/borea.geodesy.html @@ -797,6 +797,12 @@

    Submodules +
    +transform_pt_proj(df_pt: DataFrame, type_z_input: str | None = None, type_z_output: str | None = None) DataFrame[source]¶
    +

    Tranform the input projection to the output projection of points coordinates

    +
    + @@ -915,6 +921,7 @@

    SubmodulesTransformGeodesy.proj_to_proj_out
  • TransformGeodesy.tranform_altitude()
  • TransformGeodesy.tranform_height()
  • +
  • TransformGeodesy.transform_pt_proj()
  • diff --git a/docs/sphinx/_build/html/borea.html b/docs/sphinx/_build/html/borea.html index 0f5303a8..53240306 100644 --- a/docs/sphinx/_build/html/borea.html +++ b/docs/sphinx/_build/html/borea.html @@ -445,6 +445,7 @@

    SubpackagesTransformGeodesy.proj_to_proj_out
  • TransformGeodesy.tranform_altitude()
  • TransformGeodesy.tranform_height()
  • +
  • TransformGeodesy.transform_pt_proj()
  • @@ -460,6 +461,7 @@

    Subpackagesborea.process.p_add_data.p_file_gcp2d module
  • borea.process.p_add_data.p_file_gcp3d module
  • borea.process.p_add_data.p_gen_param module
  • +
  • borea.process.p_add_data.p_proj module
  • borea.process.p_add_data.p_pt2d module
  • borea.process.p_add_data.p_pt3d module
  • borea.process.p_add_data.p_unit_shot module
  • @@ -481,6 +483,7 @@

    Subpackagesborea.process.p_func.p_control module
  • borea.process.p_func.p_image_world module
  • borea.process.p_func.p_spaceresection module
  • +
  • borea.process.p_func.p_tf_proj_pt module
  • borea.process.p_func.p_world_image module
  • Module contents
  • diff --git a/docs/sphinx/_build/html/borea.process.html b/docs/sphinx/_build/html/borea.process.html index 841fe2a4..3bb945df 100644 --- a/docs/sphinx/_build/html/borea.process.html +++ b/docs/sphinx/_build/html/borea.process.html @@ -306,6 +306,11 @@

    Subpackagesprocess_args_gen_param() +
  • borea.process.p_add_data.p_proj module +
  • borea.process.p_add_data.p_pt2d module
  • +
  • borea.process.p_func.p_tf_proj_pt module +
  • borea.process.p_func.p_world_image module
    • args_world_image()
    • process_world_image()
    • diff --git a/docs/sphinx/_build/html/borea.process.p_add_data.html b/docs/sphinx/_build/html/borea.process.p_add_data.html index 82821b68..3326df78 100644 --- a/docs/sphinx/_build/html/borea.process.p_add_data.html +++ b/docs/sphinx/_build/html/borea.process.p_add_data.html @@ -443,6 +443,47 @@

      Submodules +

      borea.process.p_add_data.p_proj module¶

      +

      Args of parser for reading projection parameters

      +
      +
      +borea.process.p_add_data.p_proj.args_proj_param(parser: <module 'argparse' from '/usr/lib/python3.10/argparse.py'>) <module 'argparse' from '/usr/lib/python3.10/argparse.py'>[source]¶
      +

      Args for adding projection parameter.

      +
      +
      Parameters:
      +

      parser (argparse) – Parser to add argument.

      +
      +
      Returns:
      +

      Parser with argument.

      +
      +
      Return type:
      +

      argsparse

      +
      +
      +
      + +
      +
      +borea.process.p_add_data.p_proj.process_args_proj_param(args: <module 'argparse' from '/usr/lib/python3.10/argparse.py'>, work: ~borea.worksite.worksite.Worksite) Worksite[source]¶
      +

      Processing args with data.

      +
      +
      Parameters:
      +
        +
      • args (argparse) – Arg to apply on worksite (data).

      • +
      • work (Worksite) – Worksite to work on.

      • +
      +
      +
      Returns:
      +

      data

      +
      +
      Return type:
      +

      Worksite

      +
      +
      +
      +

      borea.process.p_add_data.p_pt2d module¶

      @@ -655,6 +696,11 @@

      Submodulesprocess_args_gen_param()

  • +
  • borea.process.p_add_data.p_proj module +
  • borea.process.p_add_data.p_pt2d module
    • args_add_pt2d()
    • process_image_world()
    • diff --git a/docs/sphinx/_build/html/borea.process.p_func.html b/docs/sphinx/_build/html/borea.process.p_func.html index 4a5a23d6..595a79a9 100644 --- a/docs/sphinx/_build/html/borea.process.p_func.html +++ b/docs/sphinx/_build/html/borea.process.p_func.html @@ -390,6 +390,38 @@

      Submodules +

      borea.process.p_func.p_tf_proj_pt module¶

      +

      Args of parser to transform projection of 3D points.

      +
      +
      +borea.process.p_func.p_tf_proj_pt.args_tf_proj_param(parser: <module 'argparse' from '/usr/lib/python3.10/argparse.py'>) <module 'argparse' from '/usr/lib/python3.10/argparse.py'>[source]¶
      +

      Args for adding transform proj of points parameter.

      +
      +
      Parameters:
      +

      parser (argparse) – Parser to add argument.

      +
      +
      Returns:
      +

      Parser with argument.

      +
      +
      Return type:
      +

      argsparse

      +
      +
      +
      + +
      +
      +borea.process.p_func.p_tf_proj_pt.process_tf_proj_param(args: <module 'argparse' from '/usr/lib/python3.10/argparse.py'>) None[source]¶
      +

      Processing args with data.

      +
      +
      Parameters:
      +

      args (argparse) – Arg to apply on worksite (data).

      +
      +
      +
      +

      borea.process.p_func.p_world_image module¶

      @@ -503,6 +535,11 @@

      Submodulesprocess_space_resection()

  • +
  • borea.process.p_func.p_tf_proj_pt module +
  • borea.process.p_func.p_world_image module - +
  • + +
    • borea.reader.orientation.manage_reader @@ -626,8 +646,6 @@

      B

    • module
    - -
  • process_space_resection() (in module borea.process.p_func.p_spaceresection) +
  • +
  • process_tf_proj_param() (in module borea.process.p_func.p_tf_proj_pt)
  • process_world_image() (in module borea.process.p_add_data.p_pt3d) @@ -1561,6 +1587,8 @@

    T

    • tranform_height() (borea.geodesy.transform_geodesy.TransformGeodesy method) +
    • +
    • transform_pt_proj() (borea.geodesy.transform_geodesy.TransformGeodesy method)
    • TransformGeodesy (class in borea.geodesy.transform_geodesy)
    • diff --git a/docs/sphinx/_build/html/objects.inv b/docs/sphinx/_build/html/objects.inv index 948a58c2d5fcb49fa434dd7631ef306254f9a22f..239f598472fb207eedd2edda45f196d09bfa7c56 100644 GIT binary patch delta 2869 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 TP(4#+o>lsj(AfV01&Rn|{!5KT delta 2820 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 W0)N{X)iagnS-pP}8v8$y`4HfffPu>Z diff --git a/docs/sphinx/_build/html/py-modindex.html b/docs/sphinx/_build/html/py-modindex.html index c9f10471..9e905ae1 100644 --- a/docs/sphinx/_build/html/py-modindex.html +++ b/docs/sphinx/_build/html/py-modindex.html @@ -427,6 +427,12 @@

      Python Module Index

      borea.process.p_add_data.p_gen_param + + +     + borea.process.p_add_data.p_proj + +     @@ -505,6 +511,12 @@

      Python Module Index

      borea.process.p_func.p_spaceresection + + +     + borea.process.p_func.p_tf_proj_pt + +     diff --git a/docs/sphinx/_build/html/searchindex.js b/docs/sphinx/_build/html/searchindex.js index f5a5ff66..80166d67 100644 --- a/docs/sphinx/_build/html/searchindex.js +++ b/docs/sphinx/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"Contents:": [[23, null]], "Indices and tables": [[23, "indices-and-tables"]], "Module contents": [[0, "module-borea"], [1, "module-borea.datastruct"], [2, "module-borea.format"], [3, "module-borea.geodesy"], [4, "module-borea.geodesy.projectionlist"], [5, "module-borea.process"], [6, "module-borea.process.p_add_data"], [7, "module-borea.process.p_format"], [8, "module-borea.process.p_func"], [9, "module-borea.reader"], [10, "module-borea.reader.orientation"], [11, "module-borea.stat"], [12, "module-borea.transform_world_image"], [13, "module-borea.transform_world_image.transform_dtm"], [14, "module-borea.transform_world_image.transform_shot"], [15, "module-borea.transform_world_image.transform_worksite"], [16, "module-borea.utils"], [17, "module-borea.utils.check"], [18, "module-borea.utils.miscellaneous"], [19, "module-borea.utils.singleton"], [20, "module-borea.utils.xml"], [21, "module-borea.worksite"], [22, "module-borea.writer"]], "Submodules": [[1, "submodules"], [2, "submodules"], [3, "submodules"], [4, "submodules"], [6, "submodules"], [7, "submodules"], [8, "submodules"], [9, "submodules"], [10, "submodules"], [11, "submodules"], [13, "submodules"], [14, "submodules"], [15, "submodules"], [17, "submodules"], [18, "submodules"], [19, "submodules"], [20, "submodules"], [21, "submodules"], [22, "submodules"]], "Subpackages": [[0, "subpackages"], [3, "subpackages"], [5, "subpackages"], [9, "subpackages"], [12, "subpackages"], [16, "subpackages"]], "Welcome to Pink_Lady\u2019s documentation!": [[23, null]], "borea": [[24, null]], "borea package": [[0, null]], "borea.datastruct package": [[1, null]], "borea.datastruct.camera module": [[1, "module-borea.datastruct.camera"]], "borea.datastruct.dtm module": [[1, "module-borea.datastruct.dtm"]], "borea.datastruct.gcp module": [[1, "module-borea.datastruct.gcp"]], "borea.datastruct.shot module": [[1, "module-borea.datastruct.shot"]], "borea.datastruct.workdata module": [[1, "module-borea.datastruct.workdata"]], "borea.format package": [[2, null]], "borea.format.conl module": [[2, "module-borea.format.conl"]], "borea.format.rpc module": [[2, "module-borea.format.rpc"]], "borea.geodesy package": [[3, null]], "borea.geodesy.approx_euclidean_proj module": [[3, "module-borea.geodesy.approx_euclidean_proj"]], "borea.geodesy.euclidean_proj module": [[3, "module-borea.geodesy.euclidean_proj"]], "borea.geodesy.local_euclidean_proj module": [[3, "module-borea.geodesy.local_euclidean_proj"]], "borea.geodesy.proj_engine module": [[3, "module-borea.geodesy.proj_engine"]], "borea.geodesy.projectionlist package": [[4, null]], "borea.geodesy.projectionlist.search_proj module": [[4, "module-borea.geodesy.projectionlist.search_proj"]], "borea.geodesy.transform_geodesy module": [[3, "module-borea.geodesy.transform_geodesy"]], "borea.process package": [[5, null]], "borea.process.p_add_data package": [[6, null]], "borea.process.p_add_data.p_add_shot module": [[6, "module-borea.process.p_add_data.p_add_shot"]], "borea.process.p_add_data.p_file_gcp2d module": [[6, "module-borea.process.p_add_data.p_file_gcp2d"]], "borea.process.p_add_data.p_file_gcp3d module": [[6, "module-borea.process.p_add_data.p_file_gcp3d"]], "borea.process.p_add_data.p_gen_param module": [[6, "module-borea.process.p_add_data.p_gen_param"]], "borea.process.p_add_data.p_pt2d module": [[6, "module-borea.process.p_add_data.p_pt2d"]], "borea.process.p_add_data.p_pt3d module": [[6, "module-borea.process.p_add_data.p_pt3d"]], "borea.process.p_add_data.p_unit_shot module": [[6, "module-borea.process.p_add_data.p_unit_shot"]], "borea.process.p_add_data.p_write module": [[6, "module-borea.process.p_add_data.p_write"]], "borea.process.p_format package": [[7, null]], "borea.process.p_format.p_read_opk module": [[7, "module-borea.process.p_format.p_read_opk"]], "borea.process.p_format.p_write_con module": [[7, "module-borea.process.p_format.p_write_con"]], "borea.process.p_format.p_write_opk module": [[7, "module-borea.process.p_format.p_write_opk"]], "borea.process.p_format.p_write_rpc module": [[7, "module-borea.process.p_format.p_write_rpc"]], "borea.process.p_func package": [[8, null]], "borea.process.p_func.p_control module": [[8, "module-borea.process.p_func.p_control"]], "borea.process.p_func.p_image_world module": [[8, "module-borea.process.p_func.p_image_world"]], "borea.process.p_func.p_spaceresection module": [[8, "module-borea.process.p_func.p_spaceresection"]], "borea.process.p_func.p_world_image module": [[8, "module-borea.process.p_func.p_world_image"]], "borea.reader package": [[9, null]], "borea.reader.orientation package": [[10, null]], "borea.reader.orientation.manage_reader module": [[10, "module-borea.reader.orientation.manage_reader"]], "borea.reader.orientation.reader_opk module": [[10, "module-borea.reader.orientation.reader_opk"]], "borea.reader.reader_camera module": [[9, "module-borea.reader.reader_camera"]], "borea.reader.reader_point module": [[9, "module-borea.reader.reader_point"]], "borea.stat package": [[11, null]], "borea.stat.statistics module": [[11, "module-borea.stat.statistics"]], "borea.transform_world_image package": [[12, null]], "borea.transform_world_image.transform_dtm package": [[13, null]], "borea.transform_world_image.transform_dtm.world_image_dtm module": [[13, "module-borea.transform_world_image.transform_dtm.world_image_dtm"]], "borea.transform_world_image.transform_shot package": [[14, null]], "borea.transform_world_image.transform_shot.conversion_coor_shot module": [[14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot"]], "borea.transform_world_image.transform_shot.image_world_shot module": [[14, "module-borea.transform_world_image.transform_shot.image_world_shot"]], "borea.transform_world_image.transform_shot.world_image_shot module": [[14, "module-borea.transform_world_image.transform_shot.world_image_shot"]], "borea.transform_world_image.transform_worksite package": [[15, null]], "borea.transform_world_image.transform_worksite.image_world_intersection module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_intersection"]], "borea.transform_world_image.transform_worksite.image_world_least_square module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_least_square"]], "borea.transform_world_image.transform_worksite.image_world_work module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_work"]], "borea.transform_world_image.transform_worksite.space_resection module": [[15, "module-borea.transform_world_image.transform_worksite.space_resection"]], "borea.transform_world_image.transform_worksite.world_image_work module": [[15, "module-borea.transform_world_image.transform_worksite.world_image_work"]], "borea.utils package": [[16, null]], "borea.utils.check package": [[17, null]], "borea.utils.check.check_args_opk module": [[17, "module-borea.utils.check.check_args_opk"]], "borea.utils.check.check_args_reader_pt module": [[17, "module-borea.utils.check.check_args_reader_pt"]], "borea.utils.check.check_array module": [[17, "module-borea.utils.check.check_array"]], "borea.utils.check.check_header module": [[17, "module-borea.utils.check.check_header"]], "borea.utils.check.check_order_axe module": [[17, "module-borea.utils.check.check_order_axe"]], "borea.utils.miscellaneous package": [[18, null]], "borea.utils.miscellaneous.miscellaneous module": [[18, "module-borea.utils.miscellaneous.miscellaneous"]], "borea.utils.miscellaneous.param_bundle module": [[18, "module-borea.utils.miscellaneous.param_bundle"]], "borea.utils.miscellaneous.sparse module": [[18, "module-borea.utils.miscellaneous.sparse"]], "borea.utils.singleton package": [[19, null]], "borea.utils.singleton.singleton module": [[19, "module-borea.utils.singleton.singleton"]], "borea.utils.xml package": [[20, null]], "borea.utils.xml.xml module": [[20, "module-borea.utils.xml.xml"]], "borea.worksite package": [[21, null]], "borea.worksite.worksite module": [[21, "module-borea.worksite.worksite"]], "borea.writer package": [[22, null]], "borea.writer.manage_writer module": [[22, "module-borea.writer.manage_writer"]], "borea.writer.writer_con module": [[22, "module-borea.writer.writer_con"]], "borea.writer.writer_df_to_txt module": [[22, "module-borea.writer.writer_df_to_txt"]], "borea.writer.writer_opk module": [[22, "module-borea.writer.writer_opk"]], "borea.writer.writer_rpc module": [[22, "module-borea.writer.writer_rpc"]]}, "docnames": ["borea", "borea.datastruct", "borea.format", "borea.geodesy", "borea.geodesy.projectionlist", "borea.process", "borea.process.p_add_data", "borea.process.p_format", "borea.process.p_func", "borea.reader", "borea.reader.orientation", "borea.stat", "borea.transform_world_image", "borea.transform_world_image.transform_dtm", "borea.transform_world_image.transform_shot", "borea.transform_world_image.transform_worksite", "borea.utils", "borea.utils.check", "borea.utils.miscellaneous", "borea.utils.singleton", "borea.utils.xml", "borea.worksite", "borea.writer", "index", "modules"], "envversion": {"sphinx": 63, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["borea.rst", "borea.datastruct.rst", "borea.format.rst", "borea.geodesy.rst", "borea.geodesy.projectionlist.rst", "borea.process.rst", "borea.process.p_add_data.rst", "borea.process.p_format.rst", "borea.process.p_func.rst", "borea.reader.rst", "borea.reader.orientation.rst", "borea.stat.rst", "borea.transform_world_image.rst", "borea.transform_world_image.transform_dtm.rst", "borea.transform_world_image.transform_shot.rst", "borea.transform_world_image.transform_worksite.rst", "borea.utils.rst", "borea.utils.check.rst", "borea.utils.miscellaneous.rst", "borea.utils.singleton.rst", "borea.utils.xml.rst", "borea.worksite.rst", "borea.writer.rst", "index.rst", "modules.rst"], "indexentries": {"add_camera() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_camera", false]], "add_co_point() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_co_point", false]], "add_elem() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.add_elem", false]], "add_gcp2d() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_gcp2d", false]], "add_gcp3d() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_gcp3d", false]], "add_shot() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_shot", false]], "angle_degree_2vect() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.angle_degree_2vect", false]], "approxeuclideanproj (class in borea.geodesy.approx_euclidean_proj)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj", false]], "args_add_pt2d() (in module borea.process.p_add_data.p_pt2d)": [[6, "borea.process.p_add_data.p_pt2d.args_add_pt2d", false]], "args_add_pt3d() (in module borea.process.p_add_data.p_pt3d)": [[6, "borea.process.p_add_data.p_pt3d.args_add_pt3d", false]], "args_add_shot() (in module borea.process.p_add_data.p_add_shot)": [[6, "borea.process.p_add_data.p_add_shot.args_add_shot", false]], "args_control() (in module borea.process.p_func.p_control)": [[8, "borea.process.p_func.p_control.args_control", false]], "args_gcp2d() (in module borea.process.p_add_data.p_file_gcp2d)": [[6, "borea.process.p_add_data.p_file_gcp2d.args_gcp2d", false]], "args_gcp3d() (in module borea.process.p_add_data.p_file_gcp3d)": [[6, "borea.process.p_add_data.p_file_gcp3d.args_gcp3d", false]], "args_general_param() (in module borea.process.p_add_data.p_gen_param)": [[6, "borea.process.p_add_data.p_gen_param.args_general_param", false]], "args_image_world() (in module borea.process.p_func.p_image_world)": [[8, "borea.process.p_func.p_image_world.args_image_world", false]], "args_input_shot() (in module borea.process.p_add_data.p_unit_shot)": [[6, "borea.process.p_add_data.p_unit_shot.args_input_shot", false]], "args_output_shot() (in module borea.process.p_add_data.p_unit_shot)": [[6, "borea.process.p_add_data.p_unit_shot.args_output_shot", false]], "args_reading_opk() (in module borea.process.p_format.p_read_opk)": [[7, "borea.process.p_format.p_read_opk.args_reading_opk", false]], "args_space_resection() (in module borea.process.p_func.p_spaceresection)": [[8, "borea.process.p_func.p_spaceresection.args_space_resection", false]], "args_world_image() (in module borea.process.p_func.p_world_image)": [[8, "borea.process.p_func.p_world_image.args_world_image", false]], "args_write_con() (in module borea.process.p_format.p_write_con)": [[7, "borea.process.p_format.p_write_con.args_write_con", false]], "args_writer() (in module borea.process.p_add_data.p_write)": [[6, "borea.process.p_add_data.p_write.args_writer", false]], "args_writing_opk() (in module borea.process.p_format.p_write_opk)": [[7, "borea.process.p_format.p_write_opk.args_writing_opk", false]], "args_writing_rpc() (in module borea.process.p_format.p_write_rpc)": [[7, "borea.process.p_format.p_write_rpc.args_writing_rpc", false]], "borea": [[0, "module-borea", false]], "borea.datastruct": [[1, "module-borea.datastruct", false]], "borea.datastruct.camera": [[1, "module-borea.datastruct.camera", false]], "borea.datastruct.dtm": [[1, "module-borea.datastruct.dtm", false]], "borea.datastruct.gcp": [[1, "module-borea.datastruct.gcp", false]], "borea.datastruct.shot": [[1, "module-borea.datastruct.shot", false]], "borea.datastruct.workdata": [[1, "module-borea.datastruct.workdata", false]], "borea.format": [[2, "module-borea.format", false]], "borea.format.conl": [[2, "module-borea.format.conl", false]], "borea.format.rpc": [[2, "module-borea.format.rpc", false]], "borea.geodesy": [[3, "module-borea.geodesy", false]], "borea.geodesy.approx_euclidean_proj": [[3, "module-borea.geodesy.approx_euclidean_proj", false]], "borea.geodesy.euclidean_proj": [[3, "module-borea.geodesy.euclidean_proj", false]], "borea.geodesy.local_euclidean_proj": [[3, "module-borea.geodesy.local_euclidean_proj", false]], "borea.geodesy.proj_engine": [[3, "module-borea.geodesy.proj_engine", false]], "borea.geodesy.projectionlist": [[4, "module-borea.geodesy.projectionlist", false]], "borea.geodesy.projectionlist.search_proj": [[4, "module-borea.geodesy.projectionlist.search_proj", false]], "borea.geodesy.transform_geodesy": [[3, "module-borea.geodesy.transform_geodesy", false]], "borea.process": [[5, "module-borea.process", false]], "borea.process.p_add_data": [[6, "module-borea.process.p_add_data", false]], "borea.process.p_add_data.p_add_shot": [[6, "module-borea.process.p_add_data.p_add_shot", false]], "borea.process.p_add_data.p_file_gcp2d": [[6, "module-borea.process.p_add_data.p_file_gcp2d", false]], "borea.process.p_add_data.p_file_gcp3d": [[6, "module-borea.process.p_add_data.p_file_gcp3d", false]], "borea.process.p_add_data.p_gen_param": [[6, "module-borea.process.p_add_data.p_gen_param", false]], "borea.process.p_add_data.p_pt2d": [[6, "module-borea.process.p_add_data.p_pt2d", false]], "borea.process.p_add_data.p_pt3d": [[6, "module-borea.process.p_add_data.p_pt3d", false]], "borea.process.p_add_data.p_unit_shot": [[6, "module-borea.process.p_add_data.p_unit_shot", false]], "borea.process.p_add_data.p_write": [[6, "module-borea.process.p_add_data.p_write", false]], "borea.process.p_format": [[7, "module-borea.process.p_format", false]], "borea.process.p_format.p_read_opk": [[7, "module-borea.process.p_format.p_read_opk", false]], "borea.process.p_format.p_write_con": [[7, "module-borea.process.p_format.p_write_con", false]], "borea.process.p_format.p_write_opk": [[7, "module-borea.process.p_format.p_write_opk", false]], "borea.process.p_format.p_write_rpc": [[7, "module-borea.process.p_format.p_write_rpc", false]], "borea.process.p_func": [[8, "module-borea.process.p_func", false]], "borea.process.p_func.p_control": [[8, "module-borea.process.p_func.p_control", false]], "borea.process.p_func.p_image_world": [[8, "module-borea.process.p_func.p_image_world", false]], "borea.process.p_func.p_spaceresection": [[8, "module-borea.process.p_func.p_spaceresection", false]], "borea.process.p_func.p_world_image": [[8, "module-borea.process.p_func.p_world_image", false]], "borea.reader": [[9, "module-borea.reader", false]], "borea.reader.orientation": [[10, "module-borea.reader.orientation", false]], "borea.reader.orientation.manage_reader": [[10, "module-borea.reader.orientation.manage_reader", false]], "borea.reader.orientation.reader_opk": [[10, "module-borea.reader.orientation.reader_opk", false]], "borea.reader.reader_camera": [[9, "module-borea.reader.reader_camera", false]], "borea.reader.reader_point": [[9, "module-borea.reader.reader_point", false]], "borea.stat": [[11, "module-borea.stat", false]], "borea.stat.statistics": [[11, "module-borea.stat.statistics", false]], "borea.transform_world_image": [[12, "module-borea.transform_world_image", false]], "borea.transform_world_image.transform_dtm": [[13, "module-borea.transform_world_image.transform_dtm", false]], "borea.transform_world_image.transform_dtm.world_image_dtm": [[13, "module-borea.transform_world_image.transform_dtm.world_image_dtm", false]], "borea.transform_world_image.transform_shot": [[14, "module-borea.transform_world_image.transform_shot", false]], "borea.transform_world_image.transform_shot.conversion_coor_shot": [[14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot", false]], "borea.transform_world_image.transform_shot.image_world_shot": [[14, "module-borea.transform_world_image.transform_shot.image_world_shot", false]], "borea.transform_world_image.transform_shot.world_image_shot": [[14, "module-borea.transform_world_image.transform_shot.world_image_shot", false]], "borea.transform_world_image.transform_worksite": [[15, "module-borea.transform_world_image.transform_worksite", false]], "borea.transform_world_image.transform_worksite.image_world_intersection": [[15, "module-borea.transform_world_image.transform_worksite.image_world_intersection", false]], "borea.transform_world_image.transform_worksite.image_world_least_square": [[15, "module-borea.transform_world_image.transform_worksite.image_world_least_square", false]], "borea.transform_world_image.transform_worksite.image_world_work": [[15, "module-borea.transform_world_image.transform_worksite.image_world_work", false]], "borea.transform_world_image.transform_worksite.space_resection": [[15, "module-borea.transform_world_image.transform_worksite.space_resection", false]], "borea.transform_world_image.transform_worksite.world_image_work": [[15, "module-borea.transform_world_image.transform_worksite.world_image_work", false]], "borea.utils": [[16, "module-borea.utils", false]], "borea.utils.check": [[17, "module-borea.utils.check", false]], "borea.utils.check.check_args_opk": [[17, "module-borea.utils.check.check_args_opk", false]], "borea.utils.check.check_args_reader_pt": [[17, "module-borea.utils.check.check_args_reader_pt", false]], "borea.utils.check.check_array": [[17, "module-borea.utils.check.check_array", false]], "borea.utils.check.check_header": [[17, "module-borea.utils.check.check_header", false]], "borea.utils.check.check_order_axe": [[17, "module-borea.utils.check.check_order_axe", false]], "borea.utils.miscellaneous": [[18, "module-borea.utils.miscellaneous", false]], "borea.utils.miscellaneous.miscellaneous": [[18, "module-borea.utils.miscellaneous.miscellaneous", false]], "borea.utils.miscellaneous.param_bundle": [[18, "module-borea.utils.miscellaneous.param_bundle", false]], "borea.utils.miscellaneous.sparse": [[18, "module-borea.utils.miscellaneous.sparse", false]], "borea.utils.singleton": [[19, "module-borea.utils.singleton", false]], "borea.utils.singleton.singleton": [[19, "module-borea.utils.singleton.singleton", false]], "borea.utils.xml": [[20, "module-borea.utils.xml", false]], "borea.utils.xml.xml": [[20, "module-borea.utils.xml.xml", false]], "borea.worksite": [[21, "module-borea.worksite", false]], "borea.worksite.worksite": [[21, "module-borea.worksite.worksite", false]], "borea.writer": [[22, "module-borea.writer", false]], "borea.writer.manage_writer": [[22, "module-borea.writer.manage_writer", false]], "borea.writer.writer_con": [[22, "module-borea.writer.writer_con", false]], "borea.writer.writer_df_to_txt": [[22, "module-borea.writer.writer_df_to_txt", false]], "borea.writer.writer_opk": [[22, "module-borea.writer.writer_opk", false]], "borea.writer.writer_rpc": [[22, "module-borea.writer.writer_rpc", false]], "bundle_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.bundle_to_image", false]], "calculate_barycentre() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.calculate_barycentre", false]], "calculate_image_world_by_intersection() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.calculate_image_world_by_intersection", false]], "calculate_world_to_image() (borea.transform_world_image.transform_worksite.world_image_work.worldimagework method)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork.calculate_world_to_image", false]], "cam (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.cam", false]], "camera (class in borea.datastruct.camera)": [[1, "borea.datastruct.camera.Camera", false]], "camera_txt() (in module borea.reader.reader_camera)": [[9, "borea.reader.reader_camera.camera_txt", false]], "carto_to_geoc (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.carto_to_geoc", false]], "carto_to_geog (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.carto_to_geog", false]], "check_args_opk() (in module borea.utils.check.check_args_opk)": [[17, "borea.utils.check.check_args_opk.check_args_opk", false]], "check_array_transfo() (in module borea.utils.check.check_array)": [[17, "borea.utils.check.check_array.check_array_transfo", false]], "check_h_z() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.check_h_z", false]], "check_head() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.check_head", false]], "check_header_file() (in module borea.utils.check.check_args_opk)": [[17, "borea.utils.check.check_args_opk.check_header_file", false]], "check_header_file() (in module borea.utils.check.check_args_reader_pt)": [[17, "borea.utils.check.check_args_reader_pt.check_header_file", false]], "check_order_axe() (in module borea.utils.check.check_order_axe)": [[17, "borea.utils.check.check_order_axe.check_order_axe", false]], "clear() (borea.utils.singleton.singleton.singleton method)": [[19, "borea.utils.singleton.singleton.Singleton.clear", false]], "code (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.code", false]], "comput_inter_in_2_more_distant_shot() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.comput_inter_in_2_more_distant_shot", false]], "compute_image_world_least_square() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.compute_image_world_least_square", false]], "conl (class in borea.format.conl)": [[2, "borea.format.conl.Conl", false]], "conv_output_z_type() (in module borea.transform_world_image.transform_shot.conversion_coor_shot)": [[14, "borea.transform_world_image.transform_shot.conversion_coor_shot.conv_output_z_type", false]], "conv_z_shot_to_z_data() (in module borea.transform_world_image.transform_shot.conversion_coor_shot)": [[14, "borea.transform_world_image.transform_shot.conversion_coor_shot.conv_z_shot_to_z_data", false]], "convert_line_list() (in module borea.geodesy.projectionlist.search_proj)": [[4, "borea.geodesy.projectionlist.search_proj.convert_line_list", false]], "convert_opk_to_xyz() (in module borea.utils.check.check_order_axe)": [[17, "borea.utils.check.check_order_axe.convert_opk_to_xyz", false]], "coor (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.coor", false]], "create_grid_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.create_grid_rpc", false]], "create_mat_a_and_vect_residu() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.create_mat_a_and_vect_residu", false]], "dist_2pts() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.dist_2pts", false]], "dtm (class in borea.datastruct.dtm)": [[1, "borea.datastruct.dtm.Dtm", false]], "epsg (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.epsg", false]], "epsg_output (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.epsg_output", false]], "eucli_to_bundle() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.eucli_to_bundle", false]], "eucli_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.eucli_to_image", false]], "eucli_to_world() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.eucli_to_world", false]], "eucli_to_world() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.eucli_to_world", false]], "euclideanproj (class in borea.geodesy.euclidean_proj)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj", false]], "focal (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.focal", false]], "format_xml() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.format_xml", false]], "from_param_euclidean() (borea.datastruct.shot.shot class method)": [[1, "borea.datastruct.shot.Shot.from_param_euclidean", false]], "from_shot() (borea.format.rpc.rpc class method)": [[2, "borea.format.rpc.Rpc.from_shot", false]], "func_least_square() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.func_least_square", false]], "gcp (class in borea.datastruct.gcp)": [[1, "borea.datastruct.gcp.GCP", false]], "geoc_to_carto (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geoc_to_carto", false]], "geog_to_carto (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geog_to_carto", false]], "geog_to_geoid (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geog_to_geoid", false]], "geoid (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.geoid", false]], "geoid_to_geog (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geoid_to_geog", false]], "get_attr_transfo_pt() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_attr_transfo_pt", false]], "get_coor_pt_img_and_world() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_coor_pt_img_and_world", false]], "get_meridian_convergence() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.get_meridian_convergence", false]], "get_point_image_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_point_image_dataframe", false]], "get_point_world_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_point_world_dataframe", false]], "get_scale_factor() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.get_scale_factor", false]], "get_type_z_and_header() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.get_type_z_and_header", false]], "get_z_add_scale_factor() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.get_z_add_scale_factor", false]], "get_z_remove_scale_factor() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.get_z_remove_scale_factor", false]], "get_z_world() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.get_z_world", false]], "height (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.height", false]], "image_to_bundle() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_to_bundle", false]], "image_to_world() (borea.transform_world_image.transform_dtm.world_image_dtm.worldimagedtm method)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm.image_to_world", false]], "image_to_world() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_to_world", false]], "image_world_iter() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_world_iter", false]], "image_z_to_world() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_z_to_world", false]], "imageworldshot (class in borea.transform_world_image.transform_shot.image_world_shot)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot", false]], "imageworldwork (class in borea.transform_world_image.transform_worksite.image_world_work)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork", false]], "indent() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.indent", false]], "init_eucli_points() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.init_eucli_points", false]], "init_kappa() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.init_kappa", false]], "intersection_line_3d() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.intersection_line_3d", false]], "intersection_pt_in_2shot() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.intersection_pt_in_2shot", false]], "invert_diag_sparse_matrix_3_3() (in module borea.utils.miscellaneous.sparse)": [[18, "borea.utils.miscellaneous.sparse.invert_diag_sparse_matrix_3_3", false]], "least_square_intersect() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.least_square_intersect", false]], "least_square_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.least_square_rpc", false]], "least_square_shot() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.least_square_shot", false]], "local_to_eucli() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.local_to_eucli", false]], "localeuclideanproj (class in borea.geodesy.local_euclidean_proj)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj", false]], "main_stat_and_save() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_and_save", false]], "main_stat_image_to_world() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_image_to_world", false]], "main_stat_world_to_image() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_world_to_image", false]], "manage_image_world() (borea.transform_world_image.transform_worksite.image_world_work.imageworldwork method)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork.manage_image_world", false]], "manager_writer() (in module borea.writer.manage_writer)": [[22, "borea.writer.manage_writer.manager_writer", false]], "mat_eucli_to_mat() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.mat_eucli_to_mat", false]], "mat_eucli_to_mat() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_eucli_to_mat", false]], "mat_obs_axia() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.mat_obs_axia", false]], "mat_rot_euclidean_local() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_rot_euclidean_local", false]], "mat_to_mat_eucli() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.mat_to_mat_eucli", false]], "mat_to_mat_eucli() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_to_mat_eucli", false]], "min_max_pt() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.min_max_pt", false]], "module": [[0, "module-borea", false], [1, "module-borea.datastruct", false], [1, "module-borea.datastruct.camera", false], [1, "module-borea.datastruct.dtm", false], [1, "module-borea.datastruct.gcp", false], [1, "module-borea.datastruct.shot", false], [1, "module-borea.datastruct.workdata", false], [2, "module-borea.format", false], [2, "module-borea.format.conl", false], [2, "module-borea.format.rpc", false], [3, "module-borea.geodesy", false], [3, "module-borea.geodesy.approx_euclidean_proj", false], [3, "module-borea.geodesy.euclidean_proj", false], [3, "module-borea.geodesy.local_euclidean_proj", false], [3, "module-borea.geodesy.proj_engine", false], [3, "module-borea.geodesy.transform_geodesy", false], [4, "module-borea.geodesy.projectionlist", false], [4, "module-borea.geodesy.projectionlist.search_proj", false], [5, "module-borea.process", false], [6, "module-borea.process.p_add_data", false], [6, "module-borea.process.p_add_data.p_add_shot", false], [6, "module-borea.process.p_add_data.p_file_gcp2d", false], [6, "module-borea.process.p_add_data.p_file_gcp3d", false], [6, "module-borea.process.p_add_data.p_gen_param", false], [6, "module-borea.process.p_add_data.p_pt2d", false], [6, "module-borea.process.p_add_data.p_pt3d", false], [6, "module-borea.process.p_add_data.p_unit_shot", false], [6, "module-borea.process.p_add_data.p_write", false], [7, "module-borea.process.p_format", false], [7, "module-borea.process.p_format.p_read_opk", false], [7, "module-borea.process.p_format.p_write_con", false], [7, "module-borea.process.p_format.p_write_opk", false], [7, "module-borea.process.p_format.p_write_rpc", false], [8, "module-borea.process.p_func", false], [8, "module-borea.process.p_func.p_control", false], [8, "module-borea.process.p_func.p_image_world", false], [8, "module-borea.process.p_func.p_spaceresection", false], [8, "module-borea.process.p_func.p_world_image", false], [9, "module-borea.reader", false], [9, "module-borea.reader.reader_camera", false], [9, "module-borea.reader.reader_point", false], [10, "module-borea.reader.orientation", false], [10, "module-borea.reader.orientation.manage_reader", false], [10, "module-borea.reader.orientation.reader_opk", false], [11, "module-borea.stat", false], [11, "module-borea.stat.statistics", false], [12, "module-borea.transform_world_image", false], [13, "module-borea.transform_world_image.transform_dtm", false], [13, "module-borea.transform_world_image.transform_dtm.world_image_dtm", false], [14, "module-borea.transform_world_image.transform_shot", false], [14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot", false], [14, "module-borea.transform_world_image.transform_shot.image_world_shot", false], [14, "module-borea.transform_world_image.transform_shot.world_image_shot", false], [15, "module-borea.transform_world_image.transform_worksite", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_intersection", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_least_square", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_work", false], [15, "module-borea.transform_world_image.transform_worksite.space_resection", false], [15, "module-borea.transform_world_image.transform_worksite.world_image_work", false], [16, "module-borea.utils", false], [17, "module-borea.utils.check", false], [17, "module-borea.utils.check.check_args_opk", false], [17, "module-borea.utils.check.check_args_reader_pt", false], [17, "module-borea.utils.check.check_array", false], [17, "module-borea.utils.check.check_header", false], [17, "module-borea.utils.check.check_order_axe", false], [18, "module-borea.utils.miscellaneous", false], [18, "module-borea.utils.miscellaneous.miscellaneous", false], [18, "module-borea.utils.miscellaneous.param_bundle", false], [18, "module-borea.utils.miscellaneous.sparse", false], [19, "module-borea.utils.singleton", false], [19, "module-borea.utils.singleton.singleton", false], [20, "module-borea.utils.xml", false], [20, "module-borea.utils.xml.xml", false], [21, "module-borea.worksite", false], [21, "module-borea.worksite.worksite", false], [22, "module-borea.writer", false], [22, "module-borea.writer.manage_writer", false], [22, "module-borea.writer.writer_con", false], [22, "module-borea.writer.writer_df_to_txt", false], [22, "module-borea.writer.writer_opk", false], [22, "module-borea.writer.writer_rpc", false]], "name_camera (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.name_camera", false]], "name_gcp (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.name_gcp", false]], "normalize() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.normalize", false]], "normalize_data() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.normalize_data", false]], "ppax (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.ppax", false]], "ppay (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.ppay", false]], "process_add_shot() (in module borea.process.p_add_data.p_add_shot)": [[6, "borea.process.p_add_data.p_add_shot.process_add_shot", false]], "process_args_control() (in module borea.process.p_func.p_control)": [[8, "borea.process.p_func.p_control.process_args_control", false]], "process_args_gen_param() (in module borea.process.p_add_data.p_gen_param)": [[6, "borea.process.p_add_data.p_gen_param.process_args_gen_param", false]], "process_args_read_opk() (in module borea.process.p_format.p_read_opk)": [[7, "borea.process.p_format.p_read_opk.process_args_read_opk", false]], "process_args_write_con() (in module borea.process.p_format.p_write_con)": [[7, "borea.process.p_format.p_write_con.process_args_write_con", false]], "process_args_write_opk() (in module borea.process.p_format.p_write_opk)": [[7, "borea.process.p_format.p_write_opk.process_args_write_opk", false]], "process_args_write_rpc() (in module borea.process.p_format.p_write_rpc)": [[7, "borea.process.p_format.p_write_rpc.process_args_write_rpc", false]], "process_gcp2d() (in module borea.process.p_add_data.p_file_gcp2d)": [[6, "borea.process.p_add_data.p_file_gcp2d.process_gcp2d", false]], "process_gcp3d() (in module borea.process.p_add_data.p_file_gcp3d)": [[6, "borea.process.p_add_data.p_file_gcp3d.process_gcp3d", false]], "process_image_world() (in module borea.process.p_add_data.p_pt2d)": [[6, "borea.process.p_add_data.p_pt2d.process_image_world", false]], "process_image_world() (in module borea.process.p_func.p_image_world)": [[8, "borea.process.p_func.p_image_world.process_image_world", false]], "process_space_resection() (in module borea.process.p_func.p_spaceresection)": [[8, "borea.process.p_func.p_spaceresection.process_space_resection", false]], "process_world_image() (in module borea.process.p_add_data.p_pt3d)": [[6, "borea.process.p_add_data.p_pt3d.process_world_image", false]], "process_world_image() (in module borea.process.p_func.p_world_image)": [[8, "borea.process.p_func.p_world_image.process_world_image", false]], "proj (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.proj", false]], "proj_to_proj_out (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.proj_to_proj_out", false]], "projengine (class in borea.geodesy.proj_engine)": [[3, "borea.geodesy.proj_engine.ProjEngine", false]], "read() (in module borea.reader.orientation.reader_opk)": [[10, "borea.reader.orientation.reader_opk.read", false]], "read_camera() (in module borea.reader.reader_camera)": [[9, "borea.reader.reader_camera.read_camera", false]], "read_file_pt() (in module borea.reader.reader_point)": [[9, "borea.reader.reader_point.read_file_pt", false]], "read_file_pt_dataframe() (in module borea.reader.reader_point)": [[9, "borea.reader.reader_point.read_file_pt_dataframe", false]], "reader_orientation() (in module borea.reader.orientation.manage_reader)": [[10, "borea.reader.orientation.manage_reader.reader_orientation", false]], "rpc (class in borea.format.rpc)": [[2, "borea.format.rpc.Rpc", false]], "save_conl() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.save_conl", false]], "save_stat_txt() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.save_stat_txt", false]], "search_info() (in module borea.geodesy.projectionlist.search_proj)": [[4, "borea.geodesy.projectionlist.search_proj.search_info", false]], "seed_20_point() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.seed_20_point", false]], "set_approx_eucli_proj() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_approx_eucli_proj", false]], "set_camera_xml() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.set_camera_xml", false]], "set_cval() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_cval", false]], "set_dtm() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_dtm", false]], "set_dtm() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_dtm", false]], "set_epsg() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.set_epsg", false]], "set_geometry_xml() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.set_geometry_xml", false]], "set_keep_memory() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_keep_memory", false]], "set_linear_alteration() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_linear_alteration", false]], "set_order() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_order", false]], "set_order_axe() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_order_axe", false]], "set_param_bundle_diff() (in module borea.utils.miscellaneous.param_bundle)": [[18, "borea.utils.miscellaneous.param_bundle.set_param_bundle_diff", false]], "set_param_eucli_shot() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_param_eucli_shot", false]], "set_param_shot() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_param_shot", false]], "set_point_image_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_point_image_dataframe", false]], "set_point_world_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_point_world_dataframe", false]], "set_proj() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_proj", false]], "set_proj_pos() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_proj_pos", false]], "set_rot_shot() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_rot_shot", false]], "set_type_z() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_type_z", false]], "set_type_z_data() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_type_z_data", false]], "set_type_z_shot() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_type_z_shot", false]], "set_unit_angle() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_unit_angle", false]], "set_unit_output() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_unit_output", false]], "set_z_nadir() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_z_nadir", false]], "setup_matrix_obs_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.setup_matrix_obs_rpc", false]], "shot (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.shot", false]], "shot (class in borea.datastruct.shot)": [[1, "borea.datastruct.shot.Shot", false]], "singleton (class in borea.utils.singleton.singleton)": [[19, "borea.utils.singleton.singleton.Singleton", false]], "space_resection_gap() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_gap", false]], "space_resection_on_worksite() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_on_worksite", false]], "space_resection_shot() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_shot", false]], "space_resection_to_worksite() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_to_worksite", false]], "spaceresection (class in borea.transform_world_image.transform_worksite.space_resection)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection", false]], "stat (class in borea.stat.statistics)": [[11, "borea.stat.statistics.Stat", false]], "stat_image_to_world() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_image_to_world", false]], "stat_list() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_list", false]], "stat_world_to_image() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_world_to_image", false]], "take_obs() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.take_obs", false]], "tranform_altitude() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.tranform_altitude", false]], "tranform_height() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.tranform_height", false]], "transformgeodesy (class in borea.geodesy.transform_geodesy)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy", false]], "width (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.width", false]], "work (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.work", false]], "work (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.work", false]], "work (borea.transform_world_image.transform_worksite.image_world_work.imageworldwork attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork.work", false]], "work (borea.transform_world_image.transform_worksite.world_image_work.worldimagework attribute)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork.work", false]], "workdata (class in borea.datastruct.workdata)": [[1, "borea.datastruct.workdata.Workdata", false]], "worksite (class in borea.worksite.worksite)": [[21, "borea.worksite.worksite.Worksite", false]], "world_to_eucli() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.world_to_eucli", false]], "world_to_eucli() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.world_to_eucli", false]], "world_to_image() (borea.transform_world_image.transform_dtm.world_image_dtm.worldimagedtm method)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm.world_to_image", false]], "world_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.world_to_image", false]], "worldimagedtm (class in borea.transform_world_image.transform_dtm.world_image_dtm)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm", false]], "worldimageshot (class in borea.transform_world_image.transform_shot.world_image_shot)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot", false]], "worldimagework (class in borea.transform_world_image.transform_worksite.world_image_work)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork", false]], "worldintersection (class in borea.transform_world_image.transform_worksite.image_world_intersection)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection", false]], "worldleastsquare (class in borea.transform_world_image.transform_worksite.image_world_least_square)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare", false]], "write() (in module borea.writer.writer_con)": [[22, "borea.writer.writer_con.write", false]], "write() (in module borea.writer.writer_opk)": [[22, "borea.writer.writer_opk.write", false]], "write() (in module borea.writer.writer_rpc)": [[22, "borea.writer.writer_rpc.write", false]], "write_df_to_txt() (in module borea.writer.writer_df_to_txt)": [[22, "borea.writer.writer_df_to_txt.write_df_to_txt", false]], "write_stat() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.write_stat", false]], "x_central (borea.geodesy.euclidean_proj.euclideanproj attribute)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj.x_central", false]], "y_central (borea.geodesy.euclidean_proj.euclideanproj attribute)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj.y_central", false]]}, "objects": {"": [[0, 0, 0, "-", "borea"]], "borea": [[1, 0, 0, "-", "datastruct"], [2, 0, 0, "-", "format"], [3, 0, 0, "-", "geodesy"], [5, 0, 0, "-", "process"], [9, 0, 0, "-", "reader"], [11, 0, 0, "-", "stat"], [12, 0, 0, "-", "transform_world_image"], [16, 0, 0, "-", "utils"], [21, 0, 0, "-", "worksite"], [22, 0, 0, "-", "writer"]], "borea.datastruct": [[1, 0, 0, "-", "camera"], [1, 0, 0, "-", "dtm"], [1, 0, 0, "-", "gcp"], [1, 0, 0, "-", "shot"], [1, 0, 0, "-", "workdata"]], "borea.datastruct.camera": [[1, 1, 1, "", "Camera"]], "borea.datastruct.camera.Camera": [[1, 2, 1, "", "focal"], [1, 2, 1, "", "height"], [1, 2, 1, "", "name_camera"], [1, 2, 1, "", "ppax"], [1, 2, 1, "", "ppay"], [1, 2, 1, "", "width"]], "borea.datastruct.dtm": [[1, 1, 1, "", "Dtm"]], "borea.datastruct.dtm.Dtm": [[1, 3, 1, "", "get_z_world"], [1, 3, 1, "", "set_cval"], [1, 3, 1, "", "set_dtm"], [1, 3, 1, "", "set_keep_memory"], [1, 3, 1, "", "set_order"]], "borea.datastruct.gcp": [[1, 1, 1, "", "GCP"]], "borea.datastruct.gcp.GCP": [[1, 2, 1, "", "code"], [1, 2, 1, "", "coor"], [1, 2, 1, "", "name_gcp"]], "borea.datastruct.shot": [[1, 1, 1, "", "Shot"]], "borea.datastruct.shot.Shot": [[1, 3, 1, "", "from_param_euclidean"], [1, 3, 1, "", "get_z_add_scale_factor"], [1, 3, 1, "", "get_z_remove_scale_factor"], [1, 3, 1, "", "set_linear_alteration"], [1, 3, 1, "", "set_order_axe"], [1, 3, 1, "", "set_param_eucli_shot"], [1, 3, 1, "", "set_proj_pos"], [1, 3, 1, "", "set_rot_shot"], [1, 3, 1, "", "set_type_z"], [1, 3, 1, "", "set_unit_angle"], [1, 3, 1, "", "set_z_nadir"]], "borea.datastruct.workdata": [[1, 1, 1, "", "Workdata"]], "borea.datastruct.workdata.Workdata": [[1, 3, 1, "", "add_camera"], [1, 3, 1, "", "add_co_point"], [1, 3, 1, "", "add_gcp2d"], [1, 3, 1, "", "add_gcp3d"], [1, 3, 1, "", "add_shot"], [1, 3, 1, "", "set_approx_eucli_proj"], [1, 3, 1, "", "set_dtm"], [1, 3, 1, "", "set_proj"], [1, 3, 1, "", "set_type_z_data"], [1, 3, 1, "", "set_type_z_shot"]], "borea.format": [[2, 0, 0, "-", "conl"], [2, 0, 0, "-", "rpc"]], "borea.format.conl": [[2, 1, 1, "", "Conl"]], "borea.format.conl.Conl": [[2, 2, 1, "", "cam"], [2, 2, 1, "", "proj"], [2, 3, 1, "", "save_conl"], [2, 3, 1, "", "set_camera_xml"], [2, 3, 1, "", "set_geometry_xml"], [2, 2, 1, "", "shot"]], "borea.format.rpc": [[2, 1, 1, "", "Rpc"]], "borea.format.rpc.Rpc": [[2, 3, 1, "", "create_grid_rpc"], [2, 3, 1, "", "from_shot"], [2, 3, 1, "", "least_square_rpc"], [2, 3, 1, "", "normalize_data"], [2, 3, 1, "", "setup_matrix_obs_rpc"]], "borea.geodesy": [[3, 0, 0, "-", "approx_euclidean_proj"], [3, 0, 0, "-", "euclidean_proj"], [3, 0, 0, "-", "local_euclidean_proj"], [3, 0, 0, "-", "proj_engine"], [4, 0, 0, "-", "projectionlist"], [3, 0, 0, "-", "transform_geodesy"]], "borea.geodesy.approx_euclidean_proj": [[3, 1, 1, "", "ApproxEuclideanProj"]], "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj": [[3, 3, 1, "", "eucli_to_world"], [3, 3, 1, "", "mat_eucli_to_mat"], [3, 3, 1, "", "mat_to_mat_eucli"], [3, 3, 1, "", "world_to_eucli"]], "borea.geodesy.euclidean_proj": [[3, 1, 1, "", "EuclideanProj"]], "borea.geodesy.euclidean_proj.EuclideanProj": [[3, 2, 1, "", "x_central"], [3, 2, 1, "", "y_central"]], "borea.geodesy.local_euclidean_proj": [[3, 1, 1, "", "LocalEuclideanProj"]], "borea.geodesy.local_euclidean_proj.LocalEuclideanProj": [[3, 3, 1, "", "eucli_to_world"], [3, 3, 1, "", "mat_eucli_to_mat"], [3, 3, 1, "", "mat_rot_euclidean_local"], [3, 3, 1, "", "mat_to_mat_eucli"], [3, 3, 1, "", "world_to_eucli"]], "borea.geodesy.proj_engine": [[3, 1, 1, "", "ProjEngine"]], "borea.geodesy.proj_engine.ProjEngine": [[3, 2, 1, "", "epsg"], [3, 2, 1, "", "epsg_output"], [3, 2, 1, "", "geoid"], [3, 3, 1, "", "get_meridian_convergence"], [3, 3, 1, "", "get_scale_factor"], [3, 3, 1, "", "set_epsg"]], "borea.geodesy.projectionlist": [[4, 0, 0, "-", "search_proj"]], "borea.geodesy.projectionlist.search_proj": [[4, 4, 1, "", "convert_line_list"], [4, 4, 1, "", "search_info"]], "borea.geodesy.transform_geodesy": [[3, 1, 1, "", "TransformGeodesy"]], "borea.geodesy.transform_geodesy.TransformGeodesy": [[3, 5, 1, "", "carto_to_geoc"], [3, 5, 1, "", "carto_to_geog"], [3, 5, 1, "", "geoc_to_carto"], [3, 5, 1, "", "geog_to_carto"], [3, 5, 1, "", "geog_to_geoid"], [3, 5, 1, "", "geoid_to_geog"], [3, 5, 1, "", "proj_to_proj_out"], [3, 3, 1, "", "tranform_altitude"], [3, 3, 1, "", "tranform_height"]], "borea.process": [[6, 0, 0, "-", "p_add_data"], [7, 0, 0, "-", "p_format"], [8, 0, 0, "-", "p_func"]], "borea.process.p_add_data": [[6, 0, 0, "-", "p_add_shot"], [6, 0, 0, "-", "p_file_gcp2d"], [6, 0, 0, "-", "p_file_gcp3d"], [6, 0, 0, "-", "p_gen_param"], [6, 0, 0, "-", "p_pt2d"], [6, 0, 0, "-", "p_pt3d"], [6, 0, 0, "-", "p_unit_shot"], [6, 0, 0, "-", "p_write"]], "borea.process.p_add_data.p_add_shot": [[6, 4, 1, "", "args_add_shot"], [6, 4, 1, "", "process_add_shot"]], "borea.process.p_add_data.p_file_gcp2d": [[6, 4, 1, "", "args_gcp2d"], [6, 4, 1, "", "process_gcp2d"]], "borea.process.p_add_data.p_file_gcp3d": [[6, 4, 1, "", "args_gcp3d"], [6, 4, 1, "", "process_gcp3d"]], "borea.process.p_add_data.p_gen_param": [[6, 4, 1, "", "args_general_param"], [6, 4, 1, "", "process_args_gen_param"]], "borea.process.p_add_data.p_pt2d": [[6, 4, 1, "", "args_add_pt2d"], [6, 4, 1, "", "process_image_world"]], "borea.process.p_add_data.p_pt3d": [[6, 4, 1, "", "args_add_pt3d"], [6, 4, 1, "", "process_world_image"]], "borea.process.p_add_data.p_unit_shot": [[6, 4, 1, "", "args_input_shot"], [6, 4, 1, "", "args_output_shot"]], "borea.process.p_add_data.p_write": [[6, 4, 1, "", "args_writer"]], "borea.process.p_format": [[7, 0, 0, "-", "p_read_opk"], [7, 0, 0, "-", "p_write_con"], [7, 0, 0, "-", "p_write_opk"], [7, 0, 0, "-", "p_write_rpc"]], "borea.process.p_format.p_read_opk": [[7, 4, 1, "", "args_reading_opk"], [7, 4, 1, "", "process_args_read_opk"]], "borea.process.p_format.p_write_con": [[7, 4, 1, "", "args_write_con"], [7, 4, 1, "", "process_args_write_con"]], "borea.process.p_format.p_write_opk": [[7, 4, 1, "", "args_writing_opk"], [7, 4, 1, "", "process_args_write_opk"]], "borea.process.p_format.p_write_rpc": [[7, 4, 1, "", "args_writing_rpc"], [7, 4, 1, "", "process_args_write_rpc"]], "borea.process.p_func": [[8, 0, 0, "-", "p_control"], [8, 0, 0, "-", "p_image_world"], [8, 0, 0, "-", "p_spaceresection"], [8, 0, 0, "-", "p_world_image"]], "borea.process.p_func.p_control": [[8, 4, 1, "", "args_control"], [8, 4, 1, "", "process_args_control"]], "borea.process.p_func.p_image_world": [[8, 4, 1, "", "args_image_world"], [8, 4, 1, "", "process_image_world"]], "borea.process.p_func.p_spaceresection": [[8, 4, 1, "", "args_space_resection"], [8, 4, 1, "", "process_space_resection"]], "borea.process.p_func.p_world_image": [[8, 4, 1, "", "args_world_image"], [8, 4, 1, "", "process_world_image"]], "borea.reader": [[10, 0, 0, "-", "orientation"], [9, 0, 0, "-", "reader_camera"], [9, 0, 0, "-", "reader_point"]], "borea.reader.orientation": [[10, 0, 0, "-", "manage_reader"], [10, 0, 0, "-", "reader_opk"]], "borea.reader.orientation.manage_reader": [[10, 4, 1, "", "reader_orientation"]], "borea.reader.orientation.reader_opk": [[10, 4, 1, "", "read"]], "borea.reader.reader_camera": [[9, 4, 1, "", "camera_txt"], [9, 4, 1, "", "read_camera"]], "borea.reader.reader_point": [[9, 4, 1, "", "read_file_pt"], [9, 4, 1, "", "read_file_pt_dataframe"]], "borea.stat": [[11, 0, 0, "-", "statistics"]], "borea.stat.statistics": [[11, 1, 1, "", "Stat"]], "borea.stat.statistics.Stat": [[11, 3, 1, "", "main_stat_and_save"], [11, 3, 1, "", "main_stat_image_to_world"], [11, 3, 1, "", "main_stat_world_to_image"], [11, 3, 1, "", "save_stat_txt"], [11, 3, 1, "", "stat_image_to_world"], [11, 3, 1, "", "stat_list"], [11, 3, 1, "", "stat_world_to_image"], [11, 3, 1, "", "write_stat"]], "borea.transform_world_image": [[13, 0, 0, "-", "transform_dtm"], [14, 0, 0, "-", "transform_shot"], [15, 0, 0, "-", "transform_worksite"]], "borea.transform_world_image.transform_dtm": [[13, 0, 0, "-", "world_image_dtm"]], "borea.transform_world_image.transform_dtm.world_image_dtm": [[13, 1, 1, "", "WorldImageDtm"]], "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm": [[13, 3, 1, "", "image_to_world"], [13, 3, 1, "", "world_to_image"]], "borea.transform_world_image.transform_shot": [[14, 0, 0, "-", "conversion_coor_shot"], [14, 0, 0, "-", "image_world_shot"], [14, 0, 0, "-", "world_image_shot"]], "borea.transform_world_image.transform_shot.conversion_coor_shot": [[14, 4, 1, "", "conv_output_z_type"], [14, 4, 1, "", "conv_z_shot_to_z_data"]], "borea.transform_world_image.transform_shot.image_world_shot": [[14, 1, 1, "", "ImageWorldShot"]], "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot": [[14, 3, 1, "", "image_to_bundle"], [14, 3, 1, "", "image_to_world"], [14, 3, 1, "", "image_world_iter"], [14, 3, 1, "", "image_z_to_world"], [14, 3, 1, "", "local_to_eucli"]], "borea.transform_world_image.transform_shot.world_image_shot": [[14, 1, 1, "", "WorldImageShot"]], "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot": [[14, 3, 1, "", "bundle_to_image"], [14, 3, 1, "", "eucli_to_bundle"], [14, 3, 1, "", "eucli_to_image"], [14, 3, 1, "", "world_to_image"]], "borea.transform_world_image.transform_worksite": [[15, 0, 0, "-", "image_world_intersection"], [15, 0, 0, "-", "image_world_least_square"], [15, 0, 0, "-", "image_world_work"], [15, 0, 0, "-", "space_resection"], [15, 0, 0, "-", "world_image_work"]], "borea.transform_world_image.transform_worksite.image_world_intersection": [[15, 1, 1, "", "WorldIntersection"]], "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection": [[15, 3, 1, "", "calculate_image_world_by_intersection"], [15, 3, 1, "", "comput_inter_in_2_more_distant_shot"], [15, 3, 1, "", "intersection_line_3d"], [15, 3, 1, "", "intersection_pt_in_2shot"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.image_world_least_square": [[15, 1, 1, "", "WorldLeastSquare"]], "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare": [[15, 3, 1, "", "compute_image_world_least_square"], [15, 3, 1, "", "create_mat_a_and_vect_residu"], [15, 3, 1, "", "init_eucli_points"], [15, 3, 1, "", "least_square_intersect"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.image_world_work": [[15, 1, 1, "", "ImageWorldWork"]], "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork": [[15, 3, 1, "", "manage_image_world"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.space_resection": [[15, 1, 1, "", "SpaceResection"]], "borea.transform_world_image.transform_worksite.space_resection.SpaceResection": [[15, 3, 1, "", "func_least_square"], [15, 3, 1, "", "init_kappa"], [15, 3, 1, "", "least_square_shot"], [15, 3, 1, "", "mat_obs_axia"], [15, 3, 1, "", "seed_20_point"], [15, 3, 1, "", "space_resection_gap"], [15, 3, 1, "", "space_resection_on_worksite"], [15, 3, 1, "", "space_resection_shot"], [15, 3, 1, "", "space_resection_to_worksite"], [15, 3, 1, "", "take_obs"]], "borea.transform_world_image.transform_worksite.world_image_work": [[15, 1, 1, "", "WorldImageWork"]], "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork": [[15, 3, 1, "", "calculate_world_to_image"], [15, 2, 1, "", "work"]], "borea.utils": [[17, 0, 0, "-", "check"], [18, 0, 0, "-", "miscellaneous"], [19, 0, 0, "-", "singleton"], [20, 0, 0, "-", "xml"]], "borea.utils.check": [[17, 0, 0, "-", "check_args_opk"], [17, 0, 0, "-", "check_args_reader_pt"], [17, 0, 0, "-", "check_array"], [17, 0, 0, "-", "check_header"], [17, 0, 0, "-", "check_order_axe"]], "borea.utils.check.check_args_opk": [[17, 4, 1, "", "check_args_opk"], [17, 4, 1, "", "check_header_file"]], "borea.utils.check.check_args_reader_pt": [[17, 4, 1, "", "check_header_file"]], "borea.utils.check.check_array": [[17, 4, 1, "", "check_array_transfo"]], "borea.utils.check.check_header": [[17, 4, 1, "", "check_h_z"], [17, 4, 1, "", "check_head"], [17, 4, 1, "", "get_type_z_and_header"]], "borea.utils.check.check_order_axe": [[17, 4, 1, "", "check_order_axe"], [17, 4, 1, "", "convert_opk_to_xyz"]], "borea.utils.miscellaneous": [[18, 0, 0, "-", "miscellaneous"], [18, 0, 0, "-", "param_bundle"], [18, 0, 0, "-", "sparse"]], "borea.utils.miscellaneous.miscellaneous": [[18, 4, 1, "", "angle_degree_2vect"], [18, 4, 1, "", "dist_2pts"], [18, 4, 1, "", "min_max_pt"], [18, 4, 1, "", "normalize"]], "borea.utils.miscellaneous.param_bundle": [[18, 4, 1, "", "set_param_bundle_diff"]], "borea.utils.miscellaneous.sparse": [[18, 4, 1, "", "invert_diag_sparse_matrix_3_3"]], "borea.utils.singleton": [[19, 0, 0, "-", "singleton"]], "borea.utils.singleton.singleton": [[19, 1, 1, "", "Singleton"]], "borea.utils.singleton.singleton.Singleton": [[19, 3, 1, "", "clear"]], "borea.utils.xml": [[20, 0, 0, "-", "xml"]], "borea.utils.xml.xml": [[20, 4, 1, "", "add_elem"], [20, 4, 1, "", "format_xml"], [20, 4, 1, "", "indent"]], "borea.worksite": [[21, 0, 0, "-", "worksite"]], "borea.worksite.worksite": [[21, 1, 1, "", "Worksite"]], "borea.worksite.worksite.Worksite": [[21, 3, 1, "", "calculate_barycentre"], [21, 3, 1, "", "get_attr_transfo_pt"], [21, 3, 1, "", "get_coor_pt_img_and_world"], [21, 3, 1, "", "get_point_image_dataframe"], [21, 3, 1, "", "get_point_world_dataframe"], [21, 3, 1, "", "set_param_shot"], [21, 3, 1, "", "set_point_image_dataframe"], [21, 3, 1, "", "set_point_world_dataframe"], [21, 3, 1, "", "set_unit_output"]], "borea.writer": [[22, 0, 0, "-", "manage_writer"], [22, 0, 0, "-", "writer_con"], [22, 0, 0, "-", "writer_df_to_txt"], [22, 0, 0, "-", "writer_opk"], [22, 0, 0, "-", "writer_rpc"]], "borea.writer.manage_writer": [[22, 4, 1, "", "manager_writer"]], "borea.writer.writer_con": [[22, 4, 1, "", "write"]], "borea.writer.writer_df_to_txt": [[22, 4, 1, "", "write_df_to_txt"]], "borea.writer.writer_opk": [[22, 4, 1, "", "write"]], "borea.writer.writer_rpc": [[22, 4, 1, "", "write"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function", "5": "py:property"}, "terms": {"": [11, 15, 18, 19], "0": [1, 14, 15, 18, 20], "1": [1, 2, 10, 15, 17], "10": [2, 6, 7, 8, 20], "100": 2, "11": 1, "12": 1, "13": 1, "2": [1, 2, 15, 18], "20": 15, "2154": [1, 3], "2d": [1, 6, 13, 18], "3": [1, 2, 15], "3d": [6, 15], "5": 1, "5f": 20, "6": [8, 15], "A": [1, 2, 3, 10, 15, 17, 18], "And": 1, "For": 15, "If": [1, 3, 15], "It": 19, "NOT": [1, 14], "One": [1, 4], "The": [1, 2, 3, 10, 14, 15, 18, 20, 21, 22], "To": [14, 15], "absolut": 11, "account": [10, 17], "acquisit": [1, 2, 15], "ad": [1, 6, 15], "add": [1, 2, 6, 7, 8, 10, 15, 20], "add_camera": [0, 1], "add_co_point": [0, 1], "add_elem": [16, 20], "add_gcp2d": [0, 1], "add_gcp3d": [0, 1], "add_pixel": 15, "add_shot": [0, 1], "adjust": 15, "after": 1, "agr": [1, 9], "aim": 19, "all": [1, 4, 11, 15, 17, 21], "allow": [1, 3, 21], "alter": [1, 10, 14, 17, 22], "altitud": [1, 3, 14, 17], "alwai": [1, 2], "an": [1, 3, 10, 14, 15, 17, 18, 22], "angl": [1, 10, 15, 17, 18, 21, 22], "angle_degree_2vect": [16, 18], "ani": [1, 20], "app": 9, "appear": 15, "appli": [6, 7, 8], "approx": [1, 14, 21], "approx_euclidean_proj": [0, 24], "approxeucli": 1, "approxeuclideanproj": [0, 3], "approxim": 3, "apprx": 1, "ar": [1, 3, 17], "aren": 15, "arg": [1, 3, 6, 7, 8, 10, 17, 22], "argpars": [6, 7, 8], "args_add_pt2d": [5, 6], "args_add_pt3d": [5, 6], "args_add_shot": [5, 6], "args_control": [5, 8], "args_gcp2d": [5, 6], "args_gcp3d": [5, 6], "args_general_param": [5, 6], "args_image_world": [5, 8], "args_input_shot": [5, 6], "args_output_shot": [5, 6], "args_reading_opk": [5, 7], "args_space_resect": [5, 8], "args_world_imag": [5, 8], "args_writ": [5, 6], "args_write_con": [5, 7], "args_writing_opk": [5, 7], "args_writing_rpc": [5, 7], "argspars": [6, 7, 8], "argument": [6, 7, 8], "arithmet": 11, "around": 2, "arrai": [1, 2, 3, 13, 14, 15, 17, 18, 21], "arrang": 9, "ask": [3, 14], "attribut": [1, 21], "ax": [1, 10, 17, 22], "axiat": 15, "b": 15, "bad_head": 17, "balis": [2, 20], "barycentr": 21, "base": [1, 2, 3, 11, 13, 14, 15, 19, 21], "bdortho": 4, "beam": 18, "befor": 3, "begin": 22, "belong": 19, "between": [1, 3, 15, 17, 18], "bilinear": 1, "block": 18, "bool": [1, 10, 14, 17, 21, 22], "boolean": [1, 17], "borea": 23, "buffer": 2, "build": 1, "bundl": [14, 15, 18], "bundle_to_imag": [12, 14], "c": [2, 14], "c_ob": 15, "calcul": [2, 6, 8, 11, 14, 15, 18, 21, 22], "calculate_barycentr": [0, 21], "calculate_image_world_by_intersect": [12, 15], "calculate_world_to_imag": [12, 15], "calcult": 15, "cam": [0, 2, 14, 15], "camera": [0, 2, 9, 14, 15, 24], "camera_txt": [0, 9], "carto_to_geoc": [0, 3], "carto_to_geog": [0, 3], "carto_to_geog_out": 3, "cartograph": 3, "cartographiqu": 14, "categori": 19, "center": 1, "centr": 3, "central": 3, "chang": [1, 3, 15, 21], "check": [0, 15, 16], "check_args_opk": [0, 16], "check_args_reader_pt": [0, 16], "check_arrai": [0, 16], "check_array_transfo": [16, 17], "check_h_z": [16, 17], "check_head": [0, 16], "check_header_fil": [16, 17], "check_lett": 17, "check_order_ax": [0, 16], "class": [1, 2, 3, 11, 13, 14, 15, 19, 21, 22], "classmethod": [1, 2], "clear": [16, 19], "co": 15, "co_point": [1, 9, 15, 17, 21], "code": [0, 1, 3, 15, 17, 22], "code_gcp": 1, "coeffici": 2, "col": [2, 14], "collinear": 3, "column": [1, 2, 9, 10, 13, 15, 17, 21, 22], "combin": 17, "comput": [2, 3, 13], "comput_inter_in_2_more_distant_shot": [12, 15], "compute_image_world_least_squar": [12, 15], "con": 22, "condit": 1, "conic": [2, 7, 22], "conl": [0, 24], "connect": [1, 9, 15], "construct": 1, "contain": [1, 17], "content": 24, "control": [1, 8, 11, 15, 21], "control_typ": [15, 21], "conv_output_z_typ": [12, 14], "conv_z_shot_to_z_data": [12, 14], "converg": [3, 15], "convers": [14, 17], "conversion_coor_shot": [0, 12], "convert": [2, 3, 4, 14, 17, 22], "convert_line_list": [3, 4], "convert_opk_to_xyz": [16, 17], "coodin": 14, "coor": [0, 1, 3, 14], "coor2d": 1, "coor_2d": 1, "coor_eucli": [3, 18], "coor_gcp": 1, "coor_img": 13, "coor_init": 15, "coor_world": [3, 13, 14], "coordin": [1, 2, 3, 6, 8, 13, 14, 15, 18, 22], "coordinn": 18, "coordonne": 15, "copoint": 15, "correct": [1, 10, 17, 21, 22], "correspond": 15, "cr": 3, "creat": [2, 3], "create_grid_rpc": [0, 2], "create_mat_a_and_vect_residu": [12, 15], "creation": [2, 15, 19], "cubic": 1, "cval": 1, "data": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 21, 22], "data_input": 4, "data_list": 11, "datafram": [9, 15, 21, 22], "datastruct": [0, 24], "de": 1, "definit": 1, "degre": [1, 2, 3, 10, 17, 18, 22], "depend": [15, 21], "describ": 2, "design": 19, "df": 22, "dfpt": 15, "dict": [1, 2, 10, 11, 15, 17, 22], "dictionari": [2, 11, 22], "dictionnari": 15, "diff": 17, "differ": 21, "differenti": [1, 18], "digit": 1, "dim": [17, 18], "dimens": 17, "direct": 15, "dist_2pt": [16, 18], "distanc": [15, 18], "distant": 15, "distort": 1, "do": 15, "dtm": [0, 13, 19, 24], "du": 14, "dx": 15, "d\u00e9fault": 14, "e": [10, 17], "each": 15, "edg": 1, "elem": 20, "element": [4, 15, 17, 20], "elementtre": [2, 20], "elev": 1, "enough": 15, "epsg": [0, 1, 3, 4, 22], "epsg_output": [0, 1, 3, 22], "equat": [3, 15], "error": [1, 17], "et": [2, 20], "etre": [2, 20], "eucli": 15, "eucli_to_bundl": [12, 14], "eucli_to_imag": [12, 14], "eucli_to_world": [0, 3], "euclidean": [1, 3, 14, 15, 18, 21], "euclidean_proj": [0, 24], "euclideanproj": [0, 3], "euclidian": 3, "euclidien": 15, "ex": [1, 3], "extern": [8, 15], "externa": 15, "extract": [1, 3], "fact_rpc": [2, 22], "factor": [1, 2, 3, 15, 22], "fals": [14, 17, 21], "field": 15, "file": [1, 2, 4, 6, 7, 8, 9, 10, 11, 17, 20, 22], "fill": 1, "first": [15, 18], "fisrt": 18, "fix": 15, "flaot": 1, "flip": 18, "float": [1, 3, 14, 15, 17, 18], "focal": [0, 1], "folder": 22, "folder_con": 22, "folder_rpc": 22, "form": 1, "formal": 17, "format": [0, 1, 9, 17, 20, 22, 24], "format_xml": [16, 20], "frame": 18, "frist": 15, "from": [2, 3, 6, 7, 8, 13, 15, 20], "from_param_euclidean": [0, 1], "from_shot": [0, 2], "func_least_squar": [12, 15], "function": [3, 10, 11, 13, 14, 17, 18, 20, 22], "g": [10, 17], "gcp": [0, 6, 15, 21, 24], "gcp2d": [1, 9, 15, 17, 21], "gcp3d": [9, 15, 17], "gdal": 1, "gener": 6, "geoc_to_carto": [0, 3], "geodesi": [0, 24], "geog_to_carto": [0, 3], "geog_to_geoid": [0, 3], "geograph": [2, 3], "geoid": [0, 1, 3], "geoid_to_geog": [0, 3], "geometri": 2, "georeferenc": 1, "geotiff": 1, "geoview": [2, 4, 7], "get": [1, 18, 21], "get_attr_transfo_pt": [0, 21], "get_coor_pt_img_and_world": [0, 21], "get_meridian_converg": [0, 3], "get_point_image_datafram": [0, 21], "get_point_world_datafram": [0, 21], "get_scale_factor": [0, 3], "get_type_z_and_head": [16, 17], "get_z_add_scale_factor": [0, 1], "get_z_remove_scale_factor": [0, 1], "get_z_world": [0, 1], "give": 1, "given": [14, 15], "good": 17, "grid": [1, 2], "grid_img": 2, "grid_world": 2, "ground": [1, 6, 11, 14, 15], "gt": 13, "h": [1, 17], "head": 17, "header": [4, 9, 10, 17, 22], "height": [0, 1, 3, 14, 15, 17], "i": [1, 2, 3, 9, 10, 14, 15, 17, 19, 20, 21, 22], "id_img": [15, 21], "id_pt": [15, 21], "ign": [1, 2, 7], "imag": [1, 2, 6, 8, 11, 13, 14, 15, 18, 21], "image_to_bundl": [12, 14], "image_to_world": [12, 13, 14], "image_world_intersect": [0, 12], "image_world_it": [12, 14], "image_world_least_squar": [0, 12], "image_world_shot": [0, 12], "image_world_work": [0, 12], "image_z_to_world": [12, 14], "imageworldshot": [12, 14], "imageworldwork": [12, 15], "imc_adjust": 15, "img_coor": 14, "img_norm": 2, "implement": [3, 20], "indent": [16, 20], "index": [18, 23], "inform": [1, 10, 17, 22], "init": 3, "init_eucli_point": [12, 15], "init_kappa": [12, 15], "initi": 15, "input": [4, 14], "instanc": 19, "instanti": [3, 19], "int": [1, 2, 3, 15, 20], "inter": 15, "interpol": 1, "intersect": 15, "intersection_line_3d": [12, 15], "intersection_pt_in_2shot": [12, 15], "interv": [10, 17], "invers": 18, "invert_diag_sparse_matrix_3_3": [16, 18], "io": 11, "item": 20, "its": 15, "j": [10, 17], "kappa": [1, 15], "keep_in_memori": 1, "keep_memori": 1, "kei": [1, 2, 10, 17, 22], "known": 3, "kwarg": [1, 3], "l": [2, 14], "l_ob": 15, "la": 14, "lcode": 15, "least": [2, 15], "least_square_intersect": [12, 15], "least_square_rpc": [0, 2], "least_square_shot": [12, 15], "letter": 17, "level": 20, "lib": [2, 6, 7, 8, 20], "light": 2, "line": [1, 2, 4, 10, 13, 14, 15, 17, 21], "linear": [1, 10, 14, 17, 22], "linear_alter": [1, 10, 17, 21, 22], "link": [1, 21], "list": [1, 3, 4, 9, 10, 11, 15, 17, 20, 21, 22], "list_data": 4, "list_lett": 17, "list_shot": 15, "local": [3, 14], "local_euclidean_proj": [0, 24], "local_to_eucli": [12, 14], "localeuclideanproj": [0, 3], "m": 18, "maco": 2, "main": 21, "main_stat_and_sav": [0, 11], "main_stat_image_to_world": [0, 11], "main_stat_world_to_imag": [0, 11], "make": 15, "manag": [9, 17], "manage_image_world": [12, 15], "manage_read": [0, 9], "manage_writ": [0, 24], "manager_writ": [0, 22], "manipul": [1, 3], "mapinfo": 4, "marker": 15, "mat": [3, 18], "mat_a": 15, "mat_eucli": 3, "mat_eucli_to_mat": [0, 3], "mat_inv": 18, "mat_obs_axia": [12, 15], "mat_ori_eucli": 1, "mat_rot_eucli": 1, "mat_rot_euclidean_loc": [0, 3], "mat_to_mat_eucli": [0, 3], "math": 18, "matric": [1, 21], "matrix": [1, 2, 3, 10, 15, 17, 18, 22], "max": [11, 18], "me": 9, "mean": [1, 11, 15], "median": 11, "memori": 1, "meridian": 3, "messag": 17, "method": [1, 2, 15], "min": [11, 18], "min_max_pt": [16, 18], "miscellan": [0, 16], "misss": 17, "model": 1, "modifi": [1, 14], "modul": [23, 24], "most": 15, "ms_error": 17, "ms_error_lett": 17, "must": [1, 3, 17], "n": [17, 18], "nadir": [1, 14], "name": [1, 15, 20, 21, 22], "name_cam": 1, "name_camera": [0, 1], "name_gcp": [0, 1], "name_opk": 22, "name_point": [1, 15], "name_pt": 15, "name_shot": [1, 15, 21], "nbr_inc": 15, "nbr_ob": 15, "ndarrai": [1, 2, 3, 13, 14, 15, 17, 18, 21], "nearest": 1, "need": 9, "new": [1, 3], "nodata": 1, "nonadir": 14, "none": [1, 2, 3, 6, 7, 8, 9, 10, 11, 15, 17, 20, 21, 22], "normal": [2, 16, 18], "normalize_data": [0, 2], "np": [1, 2, 3, 13, 14, 15, 17, 18, 21], "number": [15, 20], "numpi": 1, "ob": 15, "object": [1, 2, 3, 4, 10, 11, 13, 14, 15, 19], "obs_imag": [15, 21], "observ": [2, 15], "offset": 18, "omega": [1, 15], "one": [1, 2, 6, 18], "oopk": 17, "opk": [6, 7, 10, 17, 22], "order": [1, 2, 10, 17, 21, 22], "order_ax": [1, 10, 17, 21, 22], "ori": 2, "ori_shot": 1, "orient": [0, 1, 9, 15], "other": [10, 22], "output": [1, 3, 4, 14, 17, 22], "outsid": 1, "p_add_data": [0, 5], "p_add_shot": [0, 5], "p_bundl": 14, "p_control": [0, 5], "p_eucli": 14, "p_file_gcp2d": [0, 5], "p_file_gcp3d": [0, 5], "p_format": [0, 5], "p_func": [0, 5], "p_gen_param": [0, 5], "p_image_world": [0, 5], "p_pt2d": [0, 5], "p_pt3d": [0, 5], "p_read_opk": [0, 5], "p_spaceresect": [0, 5], "p_unit_shot": [0, 5], "p_world_imag": [0, 5], "p_write": [0, 5], "p_write_con": [0, 5], "p_write_opk": [0, 5], "p_write_rpc": [0, 5], "packag": [23, 24], "page": 23, "panda": 21, "par": 14, "param_bundl": [0, 16], "param_con": 22, "param_rpc": [2, 22], "paramet": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 21, 22], "parent": [3, 13], "parser": [6, 7, 8], "part": 1, "past": 1, "path": [1, 2, 9, 10, 22], "path_con": 2, "path_dtm": 1, "path_geoid": 1, "path_opk": 22, "pathoutput": 11, "pathreturn": 22, "pattern": 19, "pd": [9, 15, 21, 22], "pd_me": [15, 21], "pd_mes_temp": 15, "pd_pnt": 15, "percentag": 15, "perform": 1, "phi": [1, 15], "photogrametriqu": 8, "photogrammetr": [10, 22], "photogrammetri": [10, 22], "pinit": 15, "pixel": [1, 15], "point": [1, 2, 3, 6, 9, 11, 14, 15, 17, 18, 21], "point1": 15, "point2": 15, "polynom": [2, 22], "polynomi": 2, "polynomial_degre": 2, "pos_eucli": [1, 14], "pos_shot": 1, "pos_shot_eucli": 1, "posit": [1, 14, 15, 18], "possibl": 17, "ppai": [0, 1], "ppax": [0, 1], "prec": 20, "precis": [1, 20], "process": [0, 14, 15, 24], "process_add_shot": [5, 6], "process_args_control": [5, 8], "process_args_gen_param": [5, 6], "process_args_read_opk": [5, 7], "process_args_write_con": [5, 7], "process_args_write_opk": [5, 7], "process_args_write_rpc": [5, 7], "process_gcp2d": [5, 6], "process_gcp3d": [5, 6], "process_image_world": [5, 6, 8], "process_space_resect": [5, 8], "process_world_imag": [5, 6, 8], "proj": [0, 2], "proj4": 4, "proj_engin": [0, 24], "proj_output": 21, "proj_to_proj_out": [0, 3], "project": [1, 2, 3, 21, 22], "projectionlist": [0, 3], "projengin": [0, 1, 3, 19], "projeucli": 1, "properti": 3, "provid": 3, "pt1": 18, "pt2": 18, "pt2d": [9, 15], "pt3d": [9, 15], "pt_bundl": 14, "pt_eucli": 15, "pt_img": 15, "pt_world": [15, 21], "put": 20, "py": [2, 6, 7, 8, 20], "pyproj": 3, "python3": [2, 6, 7, 8, 20], "quintic": 1, "r": 18, "radian": [1, 10, 17, 22], "rais": 1, "random": 15, "ratat": 17, "read": [1, 2, 6, 7, 9, 10, 17], "read_camera": [0, 9], "read_file_pt": [0, 9], "read_file_pt_datafram": [0, 9], "reader": [0, 17, 24], "reader_camera": [0, 24], "reader_opk": [0, 9], "reader_orient": [9, 10], "reader_point": [0, 24], "recalcul": 15, "recalcult": 15, "record": 22, "recov": 21, "refer": [3, 4, 18], "registr": 22, "remov": 1, "replac": 17, "repres": [1, 3], "request": 21, "research": 4, "resect": 15, "residu": [11, 15], "ressourc": 21, "restrict": 19, "result": [1, 15], "retriev": 21, "retun": 17, "return": [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 20, 21], "rotat": [1, 3, 10, 17, 18, 21, 22], "rpc": [0, 7, 22, 24], "same": 17, "save": [2, 9, 11, 21, 22], "save_conl": [0, 2], "save_stat_txt": [0, 11], "scale": [1, 3, 18], "scipi": 17, "script": [9, 10, 17], "sd": 4, "search": [15, 23], "search_info": [3, 4], "search_proj": [0, 3], "second": [15, 18], "seed_20_point": [12, 15], "self": [1, 13], "set": [1, 15, 17, 18, 21], "set_approx_eucli_proj": [0, 1], "set_camera_xml": [0, 2], "set_cval": [0, 1], "set_dtm": [0, 1], "set_epsg": [0, 3], "set_geometry_xml": [0, 2], "set_keep_memori": [0, 1], "set_linear_alter": [0, 1], "set_ord": [0, 1], "set_order_ax": [0, 1], "set_param_bundle_diff": [16, 18], "set_param_eucli_shot": [0, 1], "set_param_shot": [0, 21], "set_point_image_datafram": [0, 21], "set_point_world_datafram": [0, 21], "set_proj": [0, 1], "set_proj_po": [0, 1], "set_rot_shot": [0, 1], "set_type_z": [0, 1], "set_type_z_data": [0, 1], "set_type_z_shot": [0, 1], "set_unit_angl": [0, 1], "set_unit_output": [0, 21], "set_z_nadir": [0, 1], "setter": 3, "setup": [1, 2], "setup_matrix_obs_rpc": [0, 2], "shoot": 15, "shot": [0, 2, 6, 8, 10, 14, 15, 17, 18, 21, 24], "shot1": 15, "shot2": 15, "shot_adjust": 15, "sigma": 11, "singl": 19, "singleton": [0, 16], "site": [10, 11, 22], "size": 2, "size_grid": 2, "slinear": 1, "softwar": 2, "solv": 15, "sourc": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22], "space": 15, "space_resect": [0, 12], "space_resection_gap": [12, 15], "space_resection_on_worksit": [12, 15], "space_resection_shot": [12, 15], "space_resection_to_worksit": [12, 15], "spaceresect": [12, 15], "spars": [0, 16], "squar": [2, 15], "src": [2, 22], "stat": [0, 24], "stat_image_to_world": [0, 11], "stat_list": [0, 11], "stat_world_to_imag": [0, 11], "statist": [0, 24], "store": 1, "str": [1, 2, 4, 9, 10, 11, 14, 15, 17, 18, 20, 21, 22], "string": 21, "structur": 20, "submodul": [0, 5, 12, 16, 24], "subpackag": 24, "support": 1, "symbol": 17, "system": [1, 3, 14, 15, 21], "t": 15, "ta": 4, "tabl": [15, 21], "take": [14, 15, 21], "take_ob": [12, 15], "taken": [10, 17], "terrain": [14, 21], "textiowrapp": 11, "thei": [15, 17], "thi": 3, "tool": 21, "topaero": 4, "tranform": 3, "tranform_altitud": [0, 3], "tranform_height": [0, 3], "transform": [2, 3, 10, 13, 14, 15, 21], "transform_dtm": [0, 12], "transform_geodesi": [0, 24], "transform_shot": [0, 12], "transform_worksit": [0, 12], "transform_world_imag": [0, 24], "transformgeodesi": [0, 3], "transit": 3, "true": [1, 10, 14, 17, 21, 22], "tubl": 15, "tupl": [2, 13, 15, 17, 18, 21], "two": [1, 15, 18], "txt": [4, 9, 11, 22], "type": [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20, 21, 22], "type_dtm": 1, "type_input": 4, "type_m": 18, "type_output": 4, "type_point": [9, 11, 15, 21], "type_process": 15, "type_pt": 17, "type_z": [1, 17, 21], "type_z_data": [1, 14], "type_z_input": 14, "type_z_output": 14, "type_z_shot": [1, 14], "u": 18, "u1": 18, "u2": 18, "u3": 18, "union": [3, 14, 17], "unit": [1, 6, 10, 17, 21, 22], "unit_angl": [1, 10, 17, 21, 22], "unit_data": 2, "unit_z_data": 2, "unit_z_shot": 2, "uniti": 2, "up": [1, 15, 18, 21], "us": [1, 3, 15, 21], "usr": [2, 6, 7, 8, 20], "util": [0, 24], "v": 18, "val": 20, "valid": 3, "valu": [1, 3, 15], "var": 11, "variabl": 17, "variat": 15, "variou": 17, "vect1": 15, "vect2": 15, "vector": [15, 17, 18], "verif": 17, "visibl": 15, "want": [1, 3, 14, 15, 21], "we": 18, "wgs84": [2, 22], "what": [15, 21], "when": [2, 22], "where": [15, 21], "which": [1, 3, 9, 15, 18], "whit": 1, "whose": 19, "width": [0, 1, 15], "without": [1, 17], "wkt": 4, "woksit": 15, "work": [6, 7, 8, 9, 10, 11, 12, 15, 18, 22], "workdata": [0, 21, 24], "worksid": 10, "worksit": [0, 1, 3, 6, 7, 8, 9, 10, 11, 14, 15, 22, 24], "world": [1, 2, 3, 6, 8, 11, 13, 14, 15, 21, 22], "world_image_dtm": [0, 12], "world_image_shot": [0, 12], "world_image_work": [0, 12], "world_norm": 2, "world_to_eucli": [0, 3], "world_to_imag": [12, 13, 14], "worldimagedtm": [1, 12, 13], "worldimageshot": [12, 14], "worldimagework": [12, 15], "worldintersect": [12, 15], "worldleastsquar": [12, 15], "write": [0, 2, 6, 7, 11, 20, 22], "write_df_to_txt": [0, 22], "write_stat": [0, 11], "writer": [0, 24], "writer_con": [0, 24], "writer_df_to_txt": [0, 24], "writer_opk": [0, 24], "writer_rpc": [0, 24], "x": [1, 2, 3, 13, 14, 15, 17, 21], "x_carto": 3, "x_central": [0, 3], "x_col": 14, "xml": [0, 2, 9, 16], "y": [1, 2, 3, 13, 14, 15, 17, 21], "y_carto": 3, "y_central": [0, 3], "y_line": 14, "you": [1, 3, 14, 15, 21], "your": 21, "z": [1, 2, 3, 14, 15, 17, 21], "z_nadir": 1}, "titles": ["borea package", "borea.datastruct package", "borea.format package", "borea.geodesy package", "borea.geodesy.projectionlist package", "borea.process package", "borea.process.p_add_data package", "borea.process.p_format package", "borea.process.p_func package", "borea.reader package", "borea.reader.orientation package", "borea.stat package", "borea.transform_world_image package", "borea.transform_world_image.transform_dtm package", "borea.transform_world_image.transform_shot package", "borea.transform_world_image.transform_worksite package", "borea.utils package", "borea.utils.check package", "borea.utils.miscellaneous package", "borea.utils.singleton package", "borea.utils.xml package", "borea.worksite package", "borea.writer package", "Welcome to Pink_Lady\u2019s documentation!", "borea"], "titleterms": {"": 23, "approx_euclidean_proj": 3, "borea": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24], "camera": 1, "check": 17, "check_args_opk": 17, "check_args_reader_pt": 17, "check_arrai": 17, "check_head": 17, "check_order_ax": 17, "conl": 2, "content": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "conversion_coor_shot": 14, "datastruct": 1, "document": 23, "dtm": 1, "euclidean_proj": 3, "format": 2, "gcp": 1, "geodesi": [3, 4], "image_world_intersect": 15, "image_world_least_squar": 15, "image_world_shot": 14, "image_world_work": 15, "indic": 23, "local_euclidean_proj": 3, "manage_read": 10, "manage_writ": 22, "miscellan": 18, "modul": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "orient": 10, "p_add_data": 6, "p_add_shot": 6, "p_control": 8, "p_file_gcp2d": 6, "p_file_gcp3d": 6, "p_format": 7, "p_func": 8, "p_gen_param": 6, "p_image_world": 8, "p_pt2d": 6, "p_pt3d": 6, "p_read_opk": 7, "p_spaceresect": 8, "p_unit_shot": 6, "p_world_imag": 8, "p_write": 6, "p_write_con": 7, "p_write_opk": 7, "p_write_rpc": 7, "packag": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "param_bundl": 18, "pink_ladi": 23, "process": [5, 6, 7, 8], "proj_engin": 3, "projectionlist": 4, "reader": [9, 10], "reader_camera": 9, "reader_opk": 10, "reader_point": 9, "rpc": 2, "search_proj": 4, "shot": 1, "singleton": 19, "space_resect": 15, "spars": 18, "stat": 11, "statist": 11, "submodul": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22], "subpackag": [0, 3, 5, 9, 12, 16], "tabl": 23, "transform_dtm": 13, "transform_geodesi": 3, "transform_shot": 14, "transform_worksit": 15, "transform_world_imag": [12, 13, 14, 15], "util": [16, 17, 18, 19, 20], "welcom": 23, "workdata": 1, "worksit": 21, "world_image_dtm": 13, "world_image_shot": 14, "world_image_work": 15, "writer": 22, "writer_con": 22, "writer_df_to_txt": 22, "writer_opk": 22, "writer_rpc": 22, "xml": 20}}) \ No newline at end of file +Search.setIndex({"alltitles": {"Contents:": [[23, null]], "Indices and tables": [[23, "indices-and-tables"]], "Module contents": [[0, "module-borea"], [1, "module-borea.datastruct"], [2, "module-borea.format"], [3, "module-borea.geodesy"], [4, "module-borea.geodesy.projectionlist"], [5, "module-borea.process"], [6, "module-borea.process.p_add_data"], [7, "module-borea.process.p_format"], [8, "module-borea.process.p_func"], [9, "module-borea.reader"], [10, "module-borea.reader.orientation"], [11, "module-borea.stat"], [12, "module-borea.transform_world_image"], [13, "module-borea.transform_world_image.transform_dtm"], [14, "module-borea.transform_world_image.transform_shot"], [15, "module-borea.transform_world_image.transform_worksite"], [16, "module-borea.utils"], [17, "module-borea.utils.check"], [18, "module-borea.utils.miscellaneous"], [19, "module-borea.utils.singleton"], [20, "module-borea.utils.xml"], [21, "module-borea.worksite"], [22, "module-borea.writer"]], "Submodules": [[1, "submodules"], [2, "submodules"], [3, "submodules"], [4, "submodules"], [6, "submodules"], [7, "submodules"], [8, "submodules"], [9, "submodules"], [10, "submodules"], [11, "submodules"], [13, "submodules"], [14, "submodules"], [15, "submodules"], [17, "submodules"], [18, "submodules"], [19, "submodules"], [20, "submodules"], [21, "submodules"], [22, "submodules"]], "Subpackages": [[0, "subpackages"], [3, "subpackages"], [5, "subpackages"], [9, "subpackages"], [12, "subpackages"], [16, "subpackages"]], "Welcome to Pink_Lady\u2019s documentation!": [[23, null]], "borea": [[24, null]], "borea package": [[0, null]], "borea.datastruct package": [[1, null]], "borea.datastruct.camera module": [[1, "module-borea.datastruct.camera"]], "borea.datastruct.dtm module": [[1, "module-borea.datastruct.dtm"]], "borea.datastruct.gcp module": [[1, "module-borea.datastruct.gcp"]], "borea.datastruct.shot module": [[1, "module-borea.datastruct.shot"]], "borea.datastruct.workdata module": [[1, "module-borea.datastruct.workdata"]], "borea.format package": [[2, null]], "borea.format.conl module": [[2, "module-borea.format.conl"]], "borea.format.rpc module": [[2, "module-borea.format.rpc"]], "borea.geodesy package": [[3, null]], "borea.geodesy.approx_euclidean_proj module": [[3, "module-borea.geodesy.approx_euclidean_proj"]], "borea.geodesy.euclidean_proj module": [[3, "module-borea.geodesy.euclidean_proj"]], "borea.geodesy.local_euclidean_proj module": [[3, "module-borea.geodesy.local_euclidean_proj"]], "borea.geodesy.proj_engine module": [[3, "module-borea.geodesy.proj_engine"]], "borea.geodesy.projectionlist package": [[4, null]], "borea.geodesy.projectionlist.search_proj module": [[4, "module-borea.geodesy.projectionlist.search_proj"]], "borea.geodesy.transform_geodesy module": [[3, "module-borea.geodesy.transform_geodesy"]], "borea.process package": [[5, null]], "borea.process.p_add_data package": [[6, null]], "borea.process.p_add_data.p_add_shot module": [[6, "module-borea.process.p_add_data.p_add_shot"]], "borea.process.p_add_data.p_file_gcp2d module": [[6, "module-borea.process.p_add_data.p_file_gcp2d"]], "borea.process.p_add_data.p_file_gcp3d module": [[6, "module-borea.process.p_add_data.p_file_gcp3d"]], "borea.process.p_add_data.p_gen_param module": [[6, "module-borea.process.p_add_data.p_gen_param"]], "borea.process.p_add_data.p_proj module": [[6, "module-borea.process.p_add_data.p_proj"]], "borea.process.p_add_data.p_pt2d module": [[6, "module-borea.process.p_add_data.p_pt2d"]], "borea.process.p_add_data.p_pt3d module": [[6, "module-borea.process.p_add_data.p_pt3d"]], "borea.process.p_add_data.p_unit_shot module": [[6, "module-borea.process.p_add_data.p_unit_shot"]], "borea.process.p_add_data.p_write module": [[6, "module-borea.process.p_add_data.p_write"]], "borea.process.p_format package": [[7, null]], "borea.process.p_format.p_read_opk module": [[7, "module-borea.process.p_format.p_read_opk"]], "borea.process.p_format.p_write_con module": [[7, "module-borea.process.p_format.p_write_con"]], "borea.process.p_format.p_write_opk module": [[7, "module-borea.process.p_format.p_write_opk"]], "borea.process.p_format.p_write_rpc module": [[7, "module-borea.process.p_format.p_write_rpc"]], "borea.process.p_func package": [[8, null]], "borea.process.p_func.p_control module": [[8, "module-borea.process.p_func.p_control"]], "borea.process.p_func.p_image_world module": [[8, "module-borea.process.p_func.p_image_world"]], "borea.process.p_func.p_spaceresection module": [[8, "module-borea.process.p_func.p_spaceresection"]], "borea.process.p_func.p_tf_proj_pt module": [[8, "module-borea.process.p_func.p_tf_proj_pt"]], "borea.process.p_func.p_world_image module": [[8, "module-borea.process.p_func.p_world_image"]], "borea.reader package": [[9, null]], "borea.reader.orientation package": [[10, null]], "borea.reader.orientation.manage_reader module": [[10, "module-borea.reader.orientation.manage_reader"]], "borea.reader.orientation.reader_opk module": [[10, "module-borea.reader.orientation.reader_opk"]], "borea.reader.reader_camera module": [[9, "module-borea.reader.reader_camera"]], "borea.reader.reader_point module": [[9, "module-borea.reader.reader_point"]], "borea.stat package": [[11, null]], "borea.stat.statistics module": [[11, "module-borea.stat.statistics"]], "borea.transform_world_image package": [[12, null]], "borea.transform_world_image.transform_dtm package": [[13, null]], "borea.transform_world_image.transform_dtm.world_image_dtm module": [[13, "module-borea.transform_world_image.transform_dtm.world_image_dtm"]], "borea.transform_world_image.transform_shot package": [[14, null]], "borea.transform_world_image.transform_shot.conversion_coor_shot module": [[14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot"]], "borea.transform_world_image.transform_shot.image_world_shot module": [[14, "module-borea.transform_world_image.transform_shot.image_world_shot"]], "borea.transform_world_image.transform_shot.world_image_shot module": [[14, "module-borea.transform_world_image.transform_shot.world_image_shot"]], "borea.transform_world_image.transform_worksite package": [[15, null]], "borea.transform_world_image.transform_worksite.image_world_intersection module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_intersection"]], "borea.transform_world_image.transform_worksite.image_world_least_square module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_least_square"]], "borea.transform_world_image.transform_worksite.image_world_work module": [[15, "module-borea.transform_world_image.transform_worksite.image_world_work"]], "borea.transform_world_image.transform_worksite.space_resection module": [[15, "module-borea.transform_world_image.transform_worksite.space_resection"]], "borea.transform_world_image.transform_worksite.world_image_work module": [[15, "module-borea.transform_world_image.transform_worksite.world_image_work"]], "borea.utils package": [[16, null]], "borea.utils.check package": [[17, null]], "borea.utils.check.check_args_opk module": [[17, "module-borea.utils.check.check_args_opk"]], "borea.utils.check.check_args_reader_pt module": [[17, "module-borea.utils.check.check_args_reader_pt"]], "borea.utils.check.check_array module": [[17, "module-borea.utils.check.check_array"]], "borea.utils.check.check_header module": [[17, "module-borea.utils.check.check_header"]], "borea.utils.check.check_order_axe module": [[17, "module-borea.utils.check.check_order_axe"]], "borea.utils.miscellaneous package": [[18, null]], "borea.utils.miscellaneous.miscellaneous module": [[18, "module-borea.utils.miscellaneous.miscellaneous"]], "borea.utils.miscellaneous.param_bundle module": [[18, "module-borea.utils.miscellaneous.param_bundle"]], "borea.utils.miscellaneous.sparse module": [[18, "module-borea.utils.miscellaneous.sparse"]], "borea.utils.singleton package": [[19, null]], "borea.utils.singleton.singleton module": [[19, "module-borea.utils.singleton.singleton"]], "borea.utils.xml package": [[20, null]], "borea.utils.xml.xml module": [[20, "module-borea.utils.xml.xml"]], "borea.worksite package": [[21, null]], "borea.worksite.worksite module": [[21, "module-borea.worksite.worksite"]], "borea.writer package": [[22, null]], "borea.writer.manage_writer module": [[22, "module-borea.writer.manage_writer"]], "borea.writer.writer_con module": [[22, "module-borea.writer.writer_con"]], "borea.writer.writer_df_to_txt module": [[22, "module-borea.writer.writer_df_to_txt"]], "borea.writer.writer_opk module": [[22, "module-borea.writer.writer_opk"]], "borea.writer.writer_rpc module": [[22, "module-borea.writer.writer_rpc"]]}, "docnames": ["borea", "borea.datastruct", "borea.format", "borea.geodesy", "borea.geodesy.projectionlist", "borea.process", "borea.process.p_add_data", "borea.process.p_format", "borea.process.p_func", "borea.reader", "borea.reader.orientation", "borea.stat", "borea.transform_world_image", "borea.transform_world_image.transform_dtm", "borea.transform_world_image.transform_shot", "borea.transform_world_image.transform_worksite", "borea.utils", "borea.utils.check", "borea.utils.miscellaneous", "borea.utils.singleton", "borea.utils.xml", "borea.worksite", "borea.writer", "index", "modules"], "envversion": {"sphinx": 63, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1}, "filenames": ["borea.rst", "borea.datastruct.rst", "borea.format.rst", "borea.geodesy.rst", "borea.geodesy.projectionlist.rst", "borea.process.rst", "borea.process.p_add_data.rst", "borea.process.p_format.rst", "borea.process.p_func.rst", "borea.reader.rst", "borea.reader.orientation.rst", "borea.stat.rst", "borea.transform_world_image.rst", "borea.transform_world_image.transform_dtm.rst", "borea.transform_world_image.transform_shot.rst", "borea.transform_world_image.transform_worksite.rst", "borea.utils.rst", "borea.utils.check.rst", "borea.utils.miscellaneous.rst", "borea.utils.singleton.rst", "borea.utils.xml.rst", "borea.worksite.rst", "borea.writer.rst", "index.rst", "modules.rst"], "indexentries": {"add_camera() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_camera", false]], "add_co_point() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_co_point", false]], "add_elem() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.add_elem", false]], "add_gcp2d() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_gcp2d", false]], "add_gcp3d() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_gcp3d", false]], "add_shot() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.add_shot", false]], "angle_degree_2vect() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.angle_degree_2vect", false]], "approxeuclideanproj (class in borea.geodesy.approx_euclidean_proj)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj", false]], "args_add_pt2d() (in module borea.process.p_add_data.p_pt2d)": [[6, "borea.process.p_add_data.p_pt2d.args_add_pt2d", false]], "args_add_pt3d() (in module borea.process.p_add_data.p_pt3d)": [[6, "borea.process.p_add_data.p_pt3d.args_add_pt3d", false]], "args_add_shot() (in module borea.process.p_add_data.p_add_shot)": [[6, "borea.process.p_add_data.p_add_shot.args_add_shot", false]], "args_control() (in module borea.process.p_func.p_control)": [[8, "borea.process.p_func.p_control.args_control", false]], "args_gcp2d() (in module borea.process.p_add_data.p_file_gcp2d)": [[6, "borea.process.p_add_data.p_file_gcp2d.args_gcp2d", false]], "args_gcp3d() (in module borea.process.p_add_data.p_file_gcp3d)": [[6, "borea.process.p_add_data.p_file_gcp3d.args_gcp3d", false]], "args_general_param() (in module borea.process.p_add_data.p_gen_param)": [[6, "borea.process.p_add_data.p_gen_param.args_general_param", false]], "args_image_world() (in module borea.process.p_func.p_image_world)": [[8, "borea.process.p_func.p_image_world.args_image_world", false]], "args_input_shot() (in module borea.process.p_add_data.p_unit_shot)": [[6, "borea.process.p_add_data.p_unit_shot.args_input_shot", false]], "args_output_shot() (in module borea.process.p_add_data.p_unit_shot)": [[6, "borea.process.p_add_data.p_unit_shot.args_output_shot", false]], "args_proj_param() (in module borea.process.p_add_data.p_proj)": [[6, "borea.process.p_add_data.p_proj.args_proj_param", false]], "args_reading_opk() (in module borea.process.p_format.p_read_opk)": [[7, "borea.process.p_format.p_read_opk.args_reading_opk", false]], "args_space_resection() (in module borea.process.p_func.p_spaceresection)": [[8, "borea.process.p_func.p_spaceresection.args_space_resection", false]], "args_tf_proj_param() (in module borea.process.p_func.p_tf_proj_pt)": [[8, "borea.process.p_func.p_tf_proj_pt.args_tf_proj_param", false]], "args_world_image() (in module borea.process.p_func.p_world_image)": [[8, "borea.process.p_func.p_world_image.args_world_image", false]], "args_write_con() (in module borea.process.p_format.p_write_con)": [[7, "borea.process.p_format.p_write_con.args_write_con", false]], "args_writer() (in module borea.process.p_add_data.p_write)": [[6, "borea.process.p_add_data.p_write.args_writer", false]], "args_writing_opk() (in module borea.process.p_format.p_write_opk)": [[7, "borea.process.p_format.p_write_opk.args_writing_opk", false]], "args_writing_rpc() (in module borea.process.p_format.p_write_rpc)": [[7, "borea.process.p_format.p_write_rpc.args_writing_rpc", false]], "borea": [[0, "module-borea", false]], "borea.datastruct": [[1, "module-borea.datastruct", false]], "borea.datastruct.camera": [[1, "module-borea.datastruct.camera", false]], "borea.datastruct.dtm": [[1, "module-borea.datastruct.dtm", false]], "borea.datastruct.gcp": [[1, "module-borea.datastruct.gcp", false]], "borea.datastruct.shot": [[1, "module-borea.datastruct.shot", false]], "borea.datastruct.workdata": [[1, "module-borea.datastruct.workdata", false]], "borea.format": [[2, "module-borea.format", false]], "borea.format.conl": [[2, "module-borea.format.conl", false]], "borea.format.rpc": [[2, "module-borea.format.rpc", false]], "borea.geodesy": [[3, "module-borea.geodesy", false]], "borea.geodesy.approx_euclidean_proj": [[3, "module-borea.geodesy.approx_euclidean_proj", false]], "borea.geodesy.euclidean_proj": [[3, "module-borea.geodesy.euclidean_proj", false]], "borea.geodesy.local_euclidean_proj": [[3, "module-borea.geodesy.local_euclidean_proj", false]], "borea.geodesy.proj_engine": [[3, "module-borea.geodesy.proj_engine", false]], "borea.geodesy.projectionlist": [[4, "module-borea.geodesy.projectionlist", false]], "borea.geodesy.projectionlist.search_proj": [[4, "module-borea.geodesy.projectionlist.search_proj", false]], "borea.geodesy.transform_geodesy": [[3, "module-borea.geodesy.transform_geodesy", false]], "borea.process": [[5, "module-borea.process", false]], "borea.process.p_add_data": [[6, "module-borea.process.p_add_data", false]], "borea.process.p_add_data.p_add_shot": [[6, "module-borea.process.p_add_data.p_add_shot", false]], "borea.process.p_add_data.p_file_gcp2d": [[6, "module-borea.process.p_add_data.p_file_gcp2d", false]], "borea.process.p_add_data.p_file_gcp3d": [[6, "module-borea.process.p_add_data.p_file_gcp3d", false]], "borea.process.p_add_data.p_gen_param": [[6, "module-borea.process.p_add_data.p_gen_param", false]], "borea.process.p_add_data.p_proj": [[6, "module-borea.process.p_add_data.p_proj", false]], "borea.process.p_add_data.p_pt2d": [[6, "module-borea.process.p_add_data.p_pt2d", false]], "borea.process.p_add_data.p_pt3d": [[6, "module-borea.process.p_add_data.p_pt3d", false]], "borea.process.p_add_data.p_unit_shot": [[6, "module-borea.process.p_add_data.p_unit_shot", false]], "borea.process.p_add_data.p_write": [[6, "module-borea.process.p_add_data.p_write", false]], "borea.process.p_format": [[7, "module-borea.process.p_format", false]], "borea.process.p_format.p_read_opk": [[7, "module-borea.process.p_format.p_read_opk", false]], "borea.process.p_format.p_write_con": [[7, "module-borea.process.p_format.p_write_con", false]], "borea.process.p_format.p_write_opk": [[7, "module-borea.process.p_format.p_write_opk", false]], "borea.process.p_format.p_write_rpc": [[7, "module-borea.process.p_format.p_write_rpc", false]], "borea.process.p_func": [[8, "module-borea.process.p_func", false]], "borea.process.p_func.p_control": [[8, "module-borea.process.p_func.p_control", false]], "borea.process.p_func.p_image_world": [[8, "module-borea.process.p_func.p_image_world", false]], "borea.process.p_func.p_spaceresection": [[8, "module-borea.process.p_func.p_spaceresection", false]], "borea.process.p_func.p_tf_proj_pt": [[8, "module-borea.process.p_func.p_tf_proj_pt", false]], "borea.process.p_func.p_world_image": [[8, "module-borea.process.p_func.p_world_image", false]], "borea.reader": [[9, "module-borea.reader", false]], "borea.reader.orientation": [[10, "module-borea.reader.orientation", false]], "borea.reader.orientation.manage_reader": [[10, "module-borea.reader.orientation.manage_reader", false]], "borea.reader.orientation.reader_opk": [[10, "module-borea.reader.orientation.reader_opk", false]], "borea.reader.reader_camera": [[9, "module-borea.reader.reader_camera", false]], "borea.reader.reader_point": [[9, "module-borea.reader.reader_point", false]], "borea.stat": [[11, "module-borea.stat", false]], "borea.stat.statistics": [[11, "module-borea.stat.statistics", false]], "borea.transform_world_image": [[12, "module-borea.transform_world_image", false]], "borea.transform_world_image.transform_dtm": [[13, "module-borea.transform_world_image.transform_dtm", false]], "borea.transform_world_image.transform_dtm.world_image_dtm": [[13, "module-borea.transform_world_image.transform_dtm.world_image_dtm", false]], "borea.transform_world_image.transform_shot": [[14, "module-borea.transform_world_image.transform_shot", false]], "borea.transform_world_image.transform_shot.conversion_coor_shot": [[14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot", false]], "borea.transform_world_image.transform_shot.image_world_shot": [[14, "module-borea.transform_world_image.transform_shot.image_world_shot", false]], "borea.transform_world_image.transform_shot.world_image_shot": [[14, "module-borea.transform_world_image.transform_shot.world_image_shot", false]], "borea.transform_world_image.transform_worksite": [[15, "module-borea.transform_world_image.transform_worksite", false]], "borea.transform_world_image.transform_worksite.image_world_intersection": [[15, "module-borea.transform_world_image.transform_worksite.image_world_intersection", false]], "borea.transform_world_image.transform_worksite.image_world_least_square": [[15, "module-borea.transform_world_image.transform_worksite.image_world_least_square", false]], "borea.transform_world_image.transform_worksite.image_world_work": [[15, "module-borea.transform_world_image.transform_worksite.image_world_work", false]], "borea.transform_world_image.transform_worksite.space_resection": [[15, "module-borea.transform_world_image.transform_worksite.space_resection", false]], "borea.transform_world_image.transform_worksite.world_image_work": [[15, "module-borea.transform_world_image.transform_worksite.world_image_work", false]], "borea.utils": [[16, "module-borea.utils", false]], "borea.utils.check": [[17, "module-borea.utils.check", false]], "borea.utils.check.check_args_opk": [[17, "module-borea.utils.check.check_args_opk", false]], "borea.utils.check.check_args_reader_pt": [[17, "module-borea.utils.check.check_args_reader_pt", false]], "borea.utils.check.check_array": [[17, "module-borea.utils.check.check_array", false]], "borea.utils.check.check_header": [[17, "module-borea.utils.check.check_header", false]], "borea.utils.check.check_order_axe": [[17, "module-borea.utils.check.check_order_axe", false]], "borea.utils.miscellaneous": [[18, "module-borea.utils.miscellaneous", false]], "borea.utils.miscellaneous.miscellaneous": [[18, "module-borea.utils.miscellaneous.miscellaneous", false]], "borea.utils.miscellaneous.param_bundle": [[18, "module-borea.utils.miscellaneous.param_bundle", false]], "borea.utils.miscellaneous.sparse": [[18, "module-borea.utils.miscellaneous.sparse", false]], "borea.utils.singleton": [[19, "module-borea.utils.singleton", false]], "borea.utils.singleton.singleton": [[19, "module-borea.utils.singleton.singleton", false]], "borea.utils.xml": [[20, "module-borea.utils.xml", false]], "borea.utils.xml.xml": [[20, "module-borea.utils.xml.xml", false]], "borea.worksite": [[21, "module-borea.worksite", false]], "borea.worksite.worksite": [[21, "module-borea.worksite.worksite", false]], "borea.writer": [[22, "module-borea.writer", false]], "borea.writer.manage_writer": [[22, "module-borea.writer.manage_writer", false]], "borea.writer.writer_con": [[22, "module-borea.writer.writer_con", false]], "borea.writer.writer_df_to_txt": [[22, "module-borea.writer.writer_df_to_txt", false]], "borea.writer.writer_opk": [[22, "module-borea.writer.writer_opk", false]], "borea.writer.writer_rpc": [[22, "module-borea.writer.writer_rpc", false]], "bundle_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.bundle_to_image", false]], "calculate_barycentre() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.calculate_barycentre", false]], "calculate_image_world_by_intersection() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.calculate_image_world_by_intersection", false]], "calculate_world_to_image() (borea.transform_world_image.transform_worksite.world_image_work.worldimagework method)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork.calculate_world_to_image", false]], "cam (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.cam", false]], "camera (class in borea.datastruct.camera)": [[1, "borea.datastruct.camera.Camera", false]], "camera_txt() (in module borea.reader.reader_camera)": [[9, "borea.reader.reader_camera.camera_txt", false]], "carto_to_geoc (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.carto_to_geoc", false]], "carto_to_geog (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.carto_to_geog", false]], "check_args_opk() (in module borea.utils.check.check_args_opk)": [[17, "borea.utils.check.check_args_opk.check_args_opk", false]], "check_array_transfo() (in module borea.utils.check.check_array)": [[17, "borea.utils.check.check_array.check_array_transfo", false]], "check_h_z() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.check_h_z", false]], "check_head() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.check_head", false]], "check_header_file() (in module borea.utils.check.check_args_opk)": [[17, "borea.utils.check.check_args_opk.check_header_file", false]], "check_header_file() (in module borea.utils.check.check_args_reader_pt)": [[17, "borea.utils.check.check_args_reader_pt.check_header_file", false]], "check_order_axe() (in module borea.utils.check.check_order_axe)": [[17, "borea.utils.check.check_order_axe.check_order_axe", false]], "clear() (borea.utils.singleton.singleton.singleton method)": [[19, "borea.utils.singleton.singleton.Singleton.clear", false]], "code (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.code", false]], "comput_inter_in_2_more_distant_shot() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.comput_inter_in_2_more_distant_shot", false]], "compute_image_world_least_square() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.compute_image_world_least_square", false]], "conl (class in borea.format.conl)": [[2, "borea.format.conl.Conl", false]], "conv_output_z_type() (in module borea.transform_world_image.transform_shot.conversion_coor_shot)": [[14, "borea.transform_world_image.transform_shot.conversion_coor_shot.conv_output_z_type", false]], "conv_z_shot_to_z_data() (in module borea.transform_world_image.transform_shot.conversion_coor_shot)": [[14, "borea.transform_world_image.transform_shot.conversion_coor_shot.conv_z_shot_to_z_data", false]], "convert_line_list() (in module borea.geodesy.projectionlist.search_proj)": [[4, "borea.geodesy.projectionlist.search_proj.convert_line_list", false]], "convert_opk_to_xyz() (in module borea.utils.check.check_order_axe)": [[17, "borea.utils.check.check_order_axe.convert_opk_to_xyz", false]], "coor (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.coor", false]], "create_grid_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.create_grid_rpc", false]], "create_mat_a_and_vect_residu() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.create_mat_a_and_vect_residu", false]], "dist_2pts() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.dist_2pts", false]], "dtm (class in borea.datastruct.dtm)": [[1, "borea.datastruct.dtm.Dtm", false]], "epsg (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.epsg", false]], "epsg_output (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.epsg_output", false]], "eucli_to_bundle() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.eucli_to_bundle", false]], "eucli_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.eucli_to_image", false]], "eucli_to_world() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.eucli_to_world", false]], "eucli_to_world() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.eucli_to_world", false]], "euclideanproj (class in borea.geodesy.euclidean_proj)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj", false]], "focal (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.focal", false]], "format_xml() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.format_xml", false]], "from_param_euclidean() (borea.datastruct.shot.shot class method)": [[1, "borea.datastruct.shot.Shot.from_param_euclidean", false]], "from_shot() (borea.format.rpc.rpc class method)": [[2, "borea.format.rpc.Rpc.from_shot", false]], "func_least_square() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.func_least_square", false]], "gcp (class in borea.datastruct.gcp)": [[1, "borea.datastruct.gcp.GCP", false]], "geoc_to_carto (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geoc_to_carto", false]], "geog_to_carto (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geog_to_carto", false]], "geog_to_geoid (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geog_to_geoid", false]], "geoid (borea.geodesy.proj_engine.projengine attribute)": [[3, "borea.geodesy.proj_engine.ProjEngine.geoid", false]], "geoid_to_geog (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.geoid_to_geog", false]], "get_attr_transfo_pt() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_attr_transfo_pt", false]], "get_coor_pt_img_and_world() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_coor_pt_img_and_world", false]], "get_meridian_convergence() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.get_meridian_convergence", false]], "get_point_image_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_point_image_dataframe", false]], "get_point_world_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.get_point_world_dataframe", false]], "get_scale_factor() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.get_scale_factor", false]], "get_type_z_and_header() (in module borea.utils.check.check_header)": [[17, "borea.utils.check.check_header.get_type_z_and_header", false]], "get_z_add_scale_factor() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.get_z_add_scale_factor", false]], "get_z_remove_scale_factor() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.get_z_remove_scale_factor", false]], "get_z_world() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.get_z_world", false]], "height (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.height", false]], "image_to_bundle() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_to_bundle", false]], "image_to_world() (borea.transform_world_image.transform_dtm.world_image_dtm.worldimagedtm method)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm.image_to_world", false]], "image_to_world() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_to_world", false]], "image_world_iter() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_world_iter", false]], "image_z_to_world() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.image_z_to_world", false]], "imageworldshot (class in borea.transform_world_image.transform_shot.image_world_shot)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot", false]], "imageworldwork (class in borea.transform_world_image.transform_worksite.image_world_work)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork", false]], "indent() (in module borea.utils.xml.xml)": [[20, "borea.utils.xml.xml.indent", false]], "init_eucli_points() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.init_eucli_points", false]], "init_kappa() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.init_kappa", false]], "intersection_line_3d() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.intersection_line_3d", false]], "intersection_pt_in_2shot() (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection method)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.intersection_pt_in_2shot", false]], "invert_diag_sparse_matrix_3_3() (in module borea.utils.miscellaneous.sparse)": [[18, "borea.utils.miscellaneous.sparse.invert_diag_sparse_matrix_3_3", false]], "least_square_intersect() (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare method)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.least_square_intersect", false]], "least_square_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.least_square_rpc", false]], "least_square_shot() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.least_square_shot", false]], "local_to_eucli() (borea.transform_world_image.transform_shot.image_world_shot.imageworldshot method)": [[14, "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot.local_to_eucli", false]], "localeuclideanproj (class in borea.geodesy.local_euclidean_proj)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj", false]], "main_stat_and_save() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_and_save", false]], "main_stat_image_to_world() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_image_to_world", false]], "main_stat_world_to_image() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.main_stat_world_to_image", false]], "manage_image_world() (borea.transform_world_image.transform_worksite.image_world_work.imageworldwork method)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork.manage_image_world", false]], "manager_writer() (in module borea.writer.manage_writer)": [[22, "borea.writer.manage_writer.manager_writer", false]], "mat_eucli_to_mat() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.mat_eucli_to_mat", false]], "mat_eucli_to_mat() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_eucli_to_mat", false]], "mat_obs_axia() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.mat_obs_axia", false]], "mat_rot_euclidean_local() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_rot_euclidean_local", false]], "mat_to_mat_eucli() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.mat_to_mat_eucli", false]], "mat_to_mat_eucli() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.mat_to_mat_eucli", false]], "min_max_pt() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.min_max_pt", false]], "module": [[0, "module-borea", false], [1, "module-borea.datastruct", false], [1, "module-borea.datastruct.camera", false], [1, "module-borea.datastruct.dtm", false], [1, "module-borea.datastruct.gcp", false], [1, "module-borea.datastruct.shot", false], [1, "module-borea.datastruct.workdata", false], [2, "module-borea.format", false], [2, "module-borea.format.conl", false], [2, "module-borea.format.rpc", false], [3, "module-borea.geodesy", false], [3, "module-borea.geodesy.approx_euclidean_proj", false], [3, "module-borea.geodesy.euclidean_proj", false], [3, "module-borea.geodesy.local_euclidean_proj", false], [3, "module-borea.geodesy.proj_engine", false], [3, "module-borea.geodesy.transform_geodesy", false], [4, "module-borea.geodesy.projectionlist", false], [4, "module-borea.geodesy.projectionlist.search_proj", false], [5, "module-borea.process", false], [6, "module-borea.process.p_add_data", false], [6, "module-borea.process.p_add_data.p_add_shot", false], [6, "module-borea.process.p_add_data.p_file_gcp2d", false], [6, "module-borea.process.p_add_data.p_file_gcp3d", false], [6, "module-borea.process.p_add_data.p_gen_param", false], [6, "module-borea.process.p_add_data.p_proj", false], [6, "module-borea.process.p_add_data.p_pt2d", false], [6, "module-borea.process.p_add_data.p_pt3d", false], [6, "module-borea.process.p_add_data.p_unit_shot", false], [6, "module-borea.process.p_add_data.p_write", false], [7, "module-borea.process.p_format", false], [7, "module-borea.process.p_format.p_read_opk", false], [7, "module-borea.process.p_format.p_write_con", false], [7, "module-borea.process.p_format.p_write_opk", false], [7, "module-borea.process.p_format.p_write_rpc", false], [8, "module-borea.process.p_func", false], [8, "module-borea.process.p_func.p_control", false], [8, "module-borea.process.p_func.p_image_world", false], [8, "module-borea.process.p_func.p_spaceresection", false], [8, "module-borea.process.p_func.p_tf_proj_pt", false], [8, "module-borea.process.p_func.p_world_image", false], [9, "module-borea.reader", false], [9, "module-borea.reader.reader_camera", false], [9, "module-borea.reader.reader_point", false], [10, "module-borea.reader.orientation", false], [10, "module-borea.reader.orientation.manage_reader", false], [10, "module-borea.reader.orientation.reader_opk", false], [11, "module-borea.stat", false], [11, "module-borea.stat.statistics", false], [12, "module-borea.transform_world_image", false], [13, "module-borea.transform_world_image.transform_dtm", false], [13, "module-borea.transform_world_image.transform_dtm.world_image_dtm", false], [14, "module-borea.transform_world_image.transform_shot", false], [14, "module-borea.transform_world_image.transform_shot.conversion_coor_shot", false], [14, "module-borea.transform_world_image.transform_shot.image_world_shot", false], [14, "module-borea.transform_world_image.transform_shot.world_image_shot", false], [15, "module-borea.transform_world_image.transform_worksite", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_intersection", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_least_square", false], [15, "module-borea.transform_world_image.transform_worksite.image_world_work", false], [15, "module-borea.transform_world_image.transform_worksite.space_resection", false], [15, "module-borea.transform_world_image.transform_worksite.world_image_work", false], [16, "module-borea.utils", false], [17, "module-borea.utils.check", false], [17, "module-borea.utils.check.check_args_opk", false], [17, "module-borea.utils.check.check_args_reader_pt", false], [17, "module-borea.utils.check.check_array", false], [17, "module-borea.utils.check.check_header", false], [17, "module-borea.utils.check.check_order_axe", false], [18, "module-borea.utils.miscellaneous", false], [18, "module-borea.utils.miscellaneous.miscellaneous", false], [18, "module-borea.utils.miscellaneous.param_bundle", false], [18, "module-borea.utils.miscellaneous.sparse", false], [19, "module-borea.utils.singleton", false], [19, "module-borea.utils.singleton.singleton", false], [20, "module-borea.utils.xml", false], [20, "module-borea.utils.xml.xml", false], [21, "module-borea.worksite", false], [21, "module-borea.worksite.worksite", false], [22, "module-borea.writer", false], [22, "module-borea.writer.manage_writer", false], [22, "module-borea.writer.writer_con", false], [22, "module-borea.writer.writer_df_to_txt", false], [22, "module-borea.writer.writer_opk", false], [22, "module-borea.writer.writer_rpc", false]], "name_camera (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.name_camera", false]], "name_gcp (borea.datastruct.gcp.gcp attribute)": [[1, "borea.datastruct.gcp.GCP.name_gcp", false]], "normalize() (in module borea.utils.miscellaneous.miscellaneous)": [[18, "borea.utils.miscellaneous.miscellaneous.normalize", false]], "normalize_data() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.normalize_data", false]], "ppax (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.ppax", false]], "ppay (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.ppay", false]], "process_add_shot() (in module borea.process.p_add_data.p_add_shot)": [[6, "borea.process.p_add_data.p_add_shot.process_add_shot", false]], "process_args_control() (in module borea.process.p_func.p_control)": [[8, "borea.process.p_func.p_control.process_args_control", false]], "process_args_gen_param() (in module borea.process.p_add_data.p_gen_param)": [[6, "borea.process.p_add_data.p_gen_param.process_args_gen_param", false]], "process_args_proj_param() (in module borea.process.p_add_data.p_proj)": [[6, "borea.process.p_add_data.p_proj.process_args_proj_param", false]], "process_args_read_opk() (in module borea.process.p_format.p_read_opk)": [[7, "borea.process.p_format.p_read_opk.process_args_read_opk", false]], "process_args_write_con() (in module borea.process.p_format.p_write_con)": [[7, "borea.process.p_format.p_write_con.process_args_write_con", false]], "process_args_write_opk() (in module borea.process.p_format.p_write_opk)": [[7, "borea.process.p_format.p_write_opk.process_args_write_opk", false]], "process_args_write_rpc() (in module borea.process.p_format.p_write_rpc)": [[7, "borea.process.p_format.p_write_rpc.process_args_write_rpc", false]], "process_gcp2d() (in module borea.process.p_add_data.p_file_gcp2d)": [[6, "borea.process.p_add_data.p_file_gcp2d.process_gcp2d", false]], "process_gcp3d() (in module borea.process.p_add_data.p_file_gcp3d)": [[6, "borea.process.p_add_data.p_file_gcp3d.process_gcp3d", false]], "process_image_world() (in module borea.process.p_add_data.p_pt2d)": [[6, "borea.process.p_add_data.p_pt2d.process_image_world", false]], "process_image_world() (in module borea.process.p_func.p_image_world)": [[8, "borea.process.p_func.p_image_world.process_image_world", false]], "process_space_resection() (in module borea.process.p_func.p_spaceresection)": [[8, "borea.process.p_func.p_spaceresection.process_space_resection", false]], "process_tf_proj_param() (in module borea.process.p_func.p_tf_proj_pt)": [[8, "borea.process.p_func.p_tf_proj_pt.process_tf_proj_param", false]], "process_world_image() (in module borea.process.p_add_data.p_pt3d)": [[6, "borea.process.p_add_data.p_pt3d.process_world_image", false]], "process_world_image() (in module borea.process.p_func.p_world_image)": [[8, "borea.process.p_func.p_world_image.process_world_image", false]], "proj (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.proj", false]], "proj_to_proj_out (borea.geodesy.transform_geodesy.transformgeodesy property)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.proj_to_proj_out", false]], "projengine (class in borea.geodesy.proj_engine)": [[3, "borea.geodesy.proj_engine.ProjEngine", false]], "read() (in module borea.reader.orientation.reader_opk)": [[10, "borea.reader.orientation.reader_opk.read", false]], "read_camera() (in module borea.reader.reader_camera)": [[9, "borea.reader.reader_camera.read_camera", false]], "read_file_pt() (in module borea.reader.reader_point)": [[9, "borea.reader.reader_point.read_file_pt", false]], "read_file_pt_dataframe() (in module borea.reader.reader_point)": [[9, "borea.reader.reader_point.read_file_pt_dataframe", false]], "reader_orientation() (in module borea.reader.orientation.manage_reader)": [[10, "borea.reader.orientation.manage_reader.reader_orientation", false]], "rpc (class in borea.format.rpc)": [[2, "borea.format.rpc.Rpc", false]], "save_conl() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.save_conl", false]], "save_stat_txt() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.save_stat_txt", false]], "search_info() (in module borea.geodesy.projectionlist.search_proj)": [[4, "borea.geodesy.projectionlist.search_proj.search_info", false]], "seed_20_point() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.seed_20_point", false]], "set_approx_eucli_proj() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_approx_eucli_proj", false]], "set_camera_xml() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.set_camera_xml", false]], "set_cval() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_cval", false]], "set_dtm() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_dtm", false]], "set_dtm() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_dtm", false]], "set_epsg() (borea.geodesy.proj_engine.projengine method)": [[3, "borea.geodesy.proj_engine.ProjEngine.set_epsg", false]], "set_geometry_xml() (borea.format.conl.conl method)": [[2, "borea.format.conl.Conl.set_geometry_xml", false]], "set_keep_memory() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_keep_memory", false]], "set_linear_alteration() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_linear_alteration", false]], "set_order() (borea.datastruct.dtm.dtm method)": [[1, "borea.datastruct.dtm.Dtm.set_order", false]], "set_order_axe() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_order_axe", false]], "set_param_bundle_diff() (in module borea.utils.miscellaneous.param_bundle)": [[18, "borea.utils.miscellaneous.param_bundle.set_param_bundle_diff", false]], "set_param_eucli_shot() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_param_eucli_shot", false]], "set_param_shot() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_param_shot", false]], "set_point_image_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_point_image_dataframe", false]], "set_point_world_dataframe() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_point_world_dataframe", false]], "set_proj() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_proj", false]], "set_proj_pos() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_proj_pos", false]], "set_rot_shot() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_rot_shot", false]], "set_type_z() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_type_z", false]], "set_type_z_data() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_type_z_data", false]], "set_type_z_shot() (borea.datastruct.workdata.workdata method)": [[1, "borea.datastruct.workdata.Workdata.set_type_z_shot", false]], "set_unit_angle() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_unit_angle", false]], "set_unit_output() (borea.worksite.worksite.worksite method)": [[21, "borea.worksite.worksite.Worksite.set_unit_output", false]], "set_z_nadir() (borea.datastruct.shot.shot method)": [[1, "borea.datastruct.shot.Shot.set_z_nadir", false]], "setup_matrix_obs_rpc() (borea.format.rpc.rpc method)": [[2, "borea.format.rpc.Rpc.setup_matrix_obs_rpc", false]], "shot (borea.format.conl.conl attribute)": [[2, "borea.format.conl.Conl.shot", false]], "shot (class in borea.datastruct.shot)": [[1, "borea.datastruct.shot.Shot", false]], "singleton (class in borea.utils.singleton.singleton)": [[19, "borea.utils.singleton.singleton.Singleton", false]], "space_resection_gap() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_gap", false]], "space_resection_on_worksite() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_on_worksite", false]], "space_resection_shot() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_shot", false]], "space_resection_to_worksite() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.space_resection_to_worksite", false]], "spaceresection (class in borea.transform_world_image.transform_worksite.space_resection)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection", false]], "stat (class in borea.stat.statistics)": [[11, "borea.stat.statistics.Stat", false]], "stat_image_to_world() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_image_to_world", false]], "stat_list() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_list", false]], "stat_world_to_image() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.stat_world_to_image", false]], "take_obs() (borea.transform_world_image.transform_worksite.space_resection.spaceresection method)": [[15, "borea.transform_world_image.transform_worksite.space_resection.SpaceResection.take_obs", false]], "tranform_altitude() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.tranform_altitude", false]], "tranform_height() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.tranform_height", false]], "transform_pt_proj() (borea.geodesy.transform_geodesy.transformgeodesy method)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy.transform_pt_proj", false]], "transformgeodesy (class in borea.geodesy.transform_geodesy)": [[3, "borea.geodesy.transform_geodesy.TransformGeodesy", false]], "width (borea.datastruct.camera.camera attribute)": [[1, "borea.datastruct.camera.Camera.width", false]], "work (borea.transform_world_image.transform_worksite.image_world_intersection.worldintersection attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection.work", false]], "work (borea.transform_world_image.transform_worksite.image_world_least_square.worldleastsquare attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare.work", false]], "work (borea.transform_world_image.transform_worksite.image_world_work.imageworldwork attribute)": [[15, "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork.work", false]], "work (borea.transform_world_image.transform_worksite.world_image_work.worldimagework attribute)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork.work", false]], "workdata (class in borea.datastruct.workdata)": [[1, "borea.datastruct.workdata.Workdata", false]], "worksite (class in borea.worksite.worksite)": [[21, "borea.worksite.worksite.Worksite", false]], "world_to_eucli() (borea.geodesy.approx_euclidean_proj.approxeuclideanproj method)": [[3, "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj.world_to_eucli", false]], "world_to_eucli() (borea.geodesy.local_euclidean_proj.localeuclideanproj method)": [[3, "borea.geodesy.local_euclidean_proj.LocalEuclideanProj.world_to_eucli", false]], "world_to_image() (borea.transform_world_image.transform_dtm.world_image_dtm.worldimagedtm method)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm.world_to_image", false]], "world_to_image() (borea.transform_world_image.transform_shot.world_image_shot.worldimageshot method)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot.world_to_image", false]], "worldimagedtm (class in borea.transform_world_image.transform_dtm.world_image_dtm)": [[13, "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm", false]], "worldimageshot (class in borea.transform_world_image.transform_shot.world_image_shot)": [[14, "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot", false]], "worldimagework (class in borea.transform_world_image.transform_worksite.world_image_work)": [[15, "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork", false]], "worldintersection (class in borea.transform_world_image.transform_worksite.image_world_intersection)": [[15, "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection", false]], "worldleastsquare (class in borea.transform_world_image.transform_worksite.image_world_least_square)": [[15, "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare", false]], "write() (in module borea.writer.writer_con)": [[22, "borea.writer.writer_con.write", false]], "write() (in module borea.writer.writer_opk)": [[22, "borea.writer.writer_opk.write", false]], "write() (in module borea.writer.writer_rpc)": [[22, "borea.writer.writer_rpc.write", false]], "write_df_to_txt() (in module borea.writer.writer_df_to_txt)": [[22, "borea.writer.writer_df_to_txt.write_df_to_txt", false]], "write_stat() (borea.stat.statistics.stat method)": [[11, "borea.stat.statistics.Stat.write_stat", false]], "x_central (borea.geodesy.euclidean_proj.euclideanproj attribute)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj.x_central", false]], "y_central (borea.geodesy.euclidean_proj.euclideanproj attribute)": [[3, "borea.geodesy.euclidean_proj.EuclideanProj.y_central", false]]}, "objects": {"": [[0, 0, 0, "-", "borea"]], "borea": [[1, 0, 0, "-", "datastruct"], [2, 0, 0, "-", "format"], [3, 0, 0, "-", "geodesy"], [5, 0, 0, "-", "process"], [9, 0, 0, "-", "reader"], [11, 0, 0, "-", "stat"], [12, 0, 0, "-", "transform_world_image"], [16, 0, 0, "-", "utils"], [21, 0, 0, "-", "worksite"], [22, 0, 0, "-", "writer"]], "borea.datastruct": [[1, 0, 0, "-", "camera"], [1, 0, 0, "-", "dtm"], [1, 0, 0, "-", "gcp"], [1, 0, 0, "-", "shot"], [1, 0, 0, "-", "workdata"]], "borea.datastruct.camera": [[1, 1, 1, "", "Camera"]], "borea.datastruct.camera.Camera": [[1, 2, 1, "", "focal"], [1, 2, 1, "", "height"], [1, 2, 1, "", "name_camera"], [1, 2, 1, "", "ppax"], [1, 2, 1, "", "ppay"], [1, 2, 1, "", "width"]], "borea.datastruct.dtm": [[1, 1, 1, "", "Dtm"]], "borea.datastruct.dtm.Dtm": [[1, 3, 1, "", "get_z_world"], [1, 3, 1, "", "set_cval"], [1, 3, 1, "", "set_dtm"], [1, 3, 1, "", "set_keep_memory"], [1, 3, 1, "", "set_order"]], "borea.datastruct.gcp": [[1, 1, 1, "", "GCP"]], "borea.datastruct.gcp.GCP": [[1, 2, 1, "", "code"], [1, 2, 1, "", "coor"], [1, 2, 1, "", "name_gcp"]], "borea.datastruct.shot": [[1, 1, 1, "", "Shot"]], "borea.datastruct.shot.Shot": [[1, 3, 1, "", "from_param_euclidean"], [1, 3, 1, "", "get_z_add_scale_factor"], [1, 3, 1, "", "get_z_remove_scale_factor"], [1, 3, 1, "", "set_linear_alteration"], [1, 3, 1, "", "set_order_axe"], [1, 3, 1, "", "set_param_eucli_shot"], [1, 3, 1, "", "set_proj_pos"], [1, 3, 1, "", "set_rot_shot"], [1, 3, 1, "", "set_type_z"], [1, 3, 1, "", "set_unit_angle"], [1, 3, 1, "", "set_z_nadir"]], "borea.datastruct.workdata": [[1, 1, 1, "", "Workdata"]], "borea.datastruct.workdata.Workdata": [[1, 3, 1, "", "add_camera"], [1, 3, 1, "", "add_co_point"], [1, 3, 1, "", "add_gcp2d"], [1, 3, 1, "", "add_gcp3d"], [1, 3, 1, "", "add_shot"], [1, 3, 1, "", "set_approx_eucli_proj"], [1, 3, 1, "", "set_dtm"], [1, 3, 1, "", "set_proj"], [1, 3, 1, "", "set_type_z_data"], [1, 3, 1, "", "set_type_z_shot"]], "borea.format": [[2, 0, 0, "-", "conl"], [2, 0, 0, "-", "rpc"]], "borea.format.conl": [[2, 1, 1, "", "Conl"]], "borea.format.conl.Conl": [[2, 2, 1, "", "cam"], [2, 2, 1, "", "proj"], [2, 3, 1, "", "save_conl"], [2, 3, 1, "", "set_camera_xml"], [2, 3, 1, "", "set_geometry_xml"], [2, 2, 1, "", "shot"]], "borea.format.rpc": [[2, 1, 1, "", "Rpc"]], "borea.format.rpc.Rpc": [[2, 3, 1, "", "create_grid_rpc"], [2, 3, 1, "", "from_shot"], [2, 3, 1, "", "least_square_rpc"], [2, 3, 1, "", "normalize_data"], [2, 3, 1, "", "setup_matrix_obs_rpc"]], "borea.geodesy": [[3, 0, 0, "-", "approx_euclidean_proj"], [3, 0, 0, "-", "euclidean_proj"], [3, 0, 0, "-", "local_euclidean_proj"], [3, 0, 0, "-", "proj_engine"], [4, 0, 0, "-", "projectionlist"], [3, 0, 0, "-", "transform_geodesy"]], "borea.geodesy.approx_euclidean_proj": [[3, 1, 1, "", "ApproxEuclideanProj"]], "borea.geodesy.approx_euclidean_proj.ApproxEuclideanProj": [[3, 3, 1, "", "eucli_to_world"], [3, 3, 1, "", "mat_eucli_to_mat"], [3, 3, 1, "", "mat_to_mat_eucli"], [3, 3, 1, "", "world_to_eucli"]], "borea.geodesy.euclidean_proj": [[3, 1, 1, "", "EuclideanProj"]], "borea.geodesy.euclidean_proj.EuclideanProj": [[3, 2, 1, "", "x_central"], [3, 2, 1, "", "y_central"]], "borea.geodesy.local_euclidean_proj": [[3, 1, 1, "", "LocalEuclideanProj"]], "borea.geodesy.local_euclidean_proj.LocalEuclideanProj": [[3, 3, 1, "", "eucli_to_world"], [3, 3, 1, "", "mat_eucli_to_mat"], [3, 3, 1, "", "mat_rot_euclidean_local"], [3, 3, 1, "", "mat_to_mat_eucli"], [3, 3, 1, "", "world_to_eucli"]], "borea.geodesy.proj_engine": [[3, 1, 1, "", "ProjEngine"]], "borea.geodesy.proj_engine.ProjEngine": [[3, 2, 1, "", "epsg"], [3, 2, 1, "", "epsg_output"], [3, 2, 1, "", "geoid"], [3, 3, 1, "", "get_meridian_convergence"], [3, 3, 1, "", "get_scale_factor"], [3, 3, 1, "", "set_epsg"]], "borea.geodesy.projectionlist": [[4, 0, 0, "-", "search_proj"]], "borea.geodesy.projectionlist.search_proj": [[4, 4, 1, "", "convert_line_list"], [4, 4, 1, "", "search_info"]], "borea.geodesy.transform_geodesy": [[3, 1, 1, "", "TransformGeodesy"]], "borea.geodesy.transform_geodesy.TransformGeodesy": [[3, 5, 1, "", "carto_to_geoc"], [3, 5, 1, "", "carto_to_geog"], [3, 5, 1, "", "geoc_to_carto"], [3, 5, 1, "", "geog_to_carto"], [3, 5, 1, "", "geog_to_geoid"], [3, 5, 1, "", "geoid_to_geog"], [3, 5, 1, "", "proj_to_proj_out"], [3, 3, 1, "", "tranform_altitude"], [3, 3, 1, "", "tranform_height"], [3, 3, 1, "", "transform_pt_proj"]], "borea.process": [[6, 0, 0, "-", "p_add_data"], [7, 0, 0, "-", "p_format"], [8, 0, 0, "-", "p_func"]], "borea.process.p_add_data": [[6, 0, 0, "-", "p_add_shot"], [6, 0, 0, "-", "p_file_gcp2d"], [6, 0, 0, "-", "p_file_gcp3d"], [6, 0, 0, "-", "p_gen_param"], [6, 0, 0, "-", "p_proj"], [6, 0, 0, "-", "p_pt2d"], [6, 0, 0, "-", "p_pt3d"], [6, 0, 0, "-", "p_unit_shot"], [6, 0, 0, "-", "p_write"]], "borea.process.p_add_data.p_add_shot": [[6, 4, 1, "", "args_add_shot"], [6, 4, 1, "", "process_add_shot"]], "borea.process.p_add_data.p_file_gcp2d": [[6, 4, 1, "", "args_gcp2d"], [6, 4, 1, "", "process_gcp2d"]], "borea.process.p_add_data.p_file_gcp3d": [[6, 4, 1, "", "args_gcp3d"], [6, 4, 1, "", "process_gcp3d"]], "borea.process.p_add_data.p_gen_param": [[6, 4, 1, "", "args_general_param"], [6, 4, 1, "", "process_args_gen_param"]], "borea.process.p_add_data.p_proj": [[6, 4, 1, "", "args_proj_param"], [6, 4, 1, "", "process_args_proj_param"]], "borea.process.p_add_data.p_pt2d": [[6, 4, 1, "", "args_add_pt2d"], [6, 4, 1, "", "process_image_world"]], "borea.process.p_add_data.p_pt3d": [[6, 4, 1, "", "args_add_pt3d"], [6, 4, 1, "", "process_world_image"]], "borea.process.p_add_data.p_unit_shot": [[6, 4, 1, "", "args_input_shot"], [6, 4, 1, "", "args_output_shot"]], "borea.process.p_add_data.p_write": [[6, 4, 1, "", "args_writer"]], "borea.process.p_format": [[7, 0, 0, "-", "p_read_opk"], [7, 0, 0, "-", "p_write_con"], [7, 0, 0, "-", "p_write_opk"], [7, 0, 0, "-", "p_write_rpc"]], "borea.process.p_format.p_read_opk": [[7, 4, 1, "", "args_reading_opk"], [7, 4, 1, "", "process_args_read_opk"]], "borea.process.p_format.p_write_con": [[7, 4, 1, "", "args_write_con"], [7, 4, 1, "", "process_args_write_con"]], "borea.process.p_format.p_write_opk": [[7, 4, 1, "", "args_writing_opk"], [7, 4, 1, "", "process_args_write_opk"]], "borea.process.p_format.p_write_rpc": [[7, 4, 1, "", "args_writing_rpc"], [7, 4, 1, "", "process_args_write_rpc"]], "borea.process.p_func": [[8, 0, 0, "-", "p_control"], [8, 0, 0, "-", "p_image_world"], [8, 0, 0, "-", "p_spaceresection"], [8, 0, 0, "-", "p_tf_proj_pt"], [8, 0, 0, "-", "p_world_image"]], "borea.process.p_func.p_control": [[8, 4, 1, "", "args_control"], [8, 4, 1, "", "process_args_control"]], "borea.process.p_func.p_image_world": [[8, 4, 1, "", "args_image_world"], [8, 4, 1, "", "process_image_world"]], "borea.process.p_func.p_spaceresection": [[8, 4, 1, "", "args_space_resection"], [8, 4, 1, "", "process_space_resection"]], "borea.process.p_func.p_tf_proj_pt": [[8, 4, 1, "", "args_tf_proj_param"], [8, 4, 1, "", "process_tf_proj_param"]], "borea.process.p_func.p_world_image": [[8, 4, 1, "", "args_world_image"], [8, 4, 1, "", "process_world_image"]], "borea.reader": [[10, 0, 0, "-", "orientation"], [9, 0, 0, "-", "reader_camera"], [9, 0, 0, "-", "reader_point"]], "borea.reader.orientation": [[10, 0, 0, "-", "manage_reader"], [10, 0, 0, "-", "reader_opk"]], "borea.reader.orientation.manage_reader": [[10, 4, 1, "", "reader_orientation"]], "borea.reader.orientation.reader_opk": [[10, 4, 1, "", "read"]], "borea.reader.reader_camera": [[9, 4, 1, "", "camera_txt"], [9, 4, 1, "", "read_camera"]], "borea.reader.reader_point": [[9, 4, 1, "", "read_file_pt"], [9, 4, 1, "", "read_file_pt_dataframe"]], "borea.stat": [[11, 0, 0, "-", "statistics"]], "borea.stat.statistics": [[11, 1, 1, "", "Stat"]], "borea.stat.statistics.Stat": [[11, 3, 1, "", "main_stat_and_save"], [11, 3, 1, "", "main_stat_image_to_world"], [11, 3, 1, "", "main_stat_world_to_image"], [11, 3, 1, "", "save_stat_txt"], [11, 3, 1, "", "stat_image_to_world"], [11, 3, 1, "", "stat_list"], [11, 3, 1, "", "stat_world_to_image"], [11, 3, 1, "", "write_stat"]], "borea.transform_world_image": [[13, 0, 0, "-", "transform_dtm"], [14, 0, 0, "-", "transform_shot"], [15, 0, 0, "-", "transform_worksite"]], "borea.transform_world_image.transform_dtm": [[13, 0, 0, "-", "world_image_dtm"]], "borea.transform_world_image.transform_dtm.world_image_dtm": [[13, 1, 1, "", "WorldImageDtm"]], "borea.transform_world_image.transform_dtm.world_image_dtm.WorldImageDtm": [[13, 3, 1, "", "image_to_world"], [13, 3, 1, "", "world_to_image"]], "borea.transform_world_image.transform_shot": [[14, 0, 0, "-", "conversion_coor_shot"], [14, 0, 0, "-", "image_world_shot"], [14, 0, 0, "-", "world_image_shot"]], "borea.transform_world_image.transform_shot.conversion_coor_shot": [[14, 4, 1, "", "conv_output_z_type"], [14, 4, 1, "", "conv_z_shot_to_z_data"]], "borea.transform_world_image.transform_shot.image_world_shot": [[14, 1, 1, "", "ImageWorldShot"]], "borea.transform_world_image.transform_shot.image_world_shot.ImageWorldShot": [[14, 3, 1, "", "image_to_bundle"], [14, 3, 1, "", "image_to_world"], [14, 3, 1, "", "image_world_iter"], [14, 3, 1, "", "image_z_to_world"], [14, 3, 1, "", "local_to_eucli"]], "borea.transform_world_image.transform_shot.world_image_shot": [[14, 1, 1, "", "WorldImageShot"]], "borea.transform_world_image.transform_shot.world_image_shot.WorldImageShot": [[14, 3, 1, "", "bundle_to_image"], [14, 3, 1, "", "eucli_to_bundle"], [14, 3, 1, "", "eucli_to_image"], [14, 3, 1, "", "world_to_image"]], "borea.transform_world_image.transform_worksite": [[15, 0, 0, "-", "image_world_intersection"], [15, 0, 0, "-", "image_world_least_square"], [15, 0, 0, "-", "image_world_work"], [15, 0, 0, "-", "space_resection"], [15, 0, 0, "-", "world_image_work"]], "borea.transform_world_image.transform_worksite.image_world_intersection": [[15, 1, 1, "", "WorldIntersection"]], "borea.transform_world_image.transform_worksite.image_world_intersection.WorldIntersection": [[15, 3, 1, "", "calculate_image_world_by_intersection"], [15, 3, 1, "", "comput_inter_in_2_more_distant_shot"], [15, 3, 1, "", "intersection_line_3d"], [15, 3, 1, "", "intersection_pt_in_2shot"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.image_world_least_square": [[15, 1, 1, "", "WorldLeastSquare"]], "borea.transform_world_image.transform_worksite.image_world_least_square.WorldLeastSquare": [[15, 3, 1, "", "compute_image_world_least_square"], [15, 3, 1, "", "create_mat_a_and_vect_residu"], [15, 3, 1, "", "init_eucli_points"], [15, 3, 1, "", "least_square_intersect"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.image_world_work": [[15, 1, 1, "", "ImageWorldWork"]], "borea.transform_world_image.transform_worksite.image_world_work.ImageWorldWork": [[15, 3, 1, "", "manage_image_world"], [15, 2, 1, "", "work"]], "borea.transform_world_image.transform_worksite.space_resection": [[15, 1, 1, "", "SpaceResection"]], "borea.transform_world_image.transform_worksite.space_resection.SpaceResection": [[15, 3, 1, "", "func_least_square"], [15, 3, 1, "", "init_kappa"], [15, 3, 1, "", "least_square_shot"], [15, 3, 1, "", "mat_obs_axia"], [15, 3, 1, "", "seed_20_point"], [15, 3, 1, "", "space_resection_gap"], [15, 3, 1, "", "space_resection_on_worksite"], [15, 3, 1, "", "space_resection_shot"], [15, 3, 1, "", "space_resection_to_worksite"], [15, 3, 1, "", "take_obs"]], "borea.transform_world_image.transform_worksite.world_image_work": [[15, 1, 1, "", "WorldImageWork"]], "borea.transform_world_image.transform_worksite.world_image_work.WorldImageWork": [[15, 3, 1, "", "calculate_world_to_image"], [15, 2, 1, "", "work"]], "borea.utils": [[17, 0, 0, "-", "check"], [18, 0, 0, "-", "miscellaneous"], [19, 0, 0, "-", "singleton"], [20, 0, 0, "-", "xml"]], "borea.utils.check": [[17, 0, 0, "-", "check_args_opk"], [17, 0, 0, "-", "check_args_reader_pt"], [17, 0, 0, "-", "check_array"], [17, 0, 0, "-", "check_header"], [17, 0, 0, "-", "check_order_axe"]], "borea.utils.check.check_args_opk": [[17, 4, 1, "", "check_args_opk"], [17, 4, 1, "", "check_header_file"]], "borea.utils.check.check_args_reader_pt": [[17, 4, 1, "", "check_header_file"]], "borea.utils.check.check_array": [[17, 4, 1, "", "check_array_transfo"]], "borea.utils.check.check_header": [[17, 4, 1, "", "check_h_z"], [17, 4, 1, "", "check_head"], [17, 4, 1, "", "get_type_z_and_header"]], "borea.utils.check.check_order_axe": [[17, 4, 1, "", "check_order_axe"], [17, 4, 1, "", "convert_opk_to_xyz"]], "borea.utils.miscellaneous": [[18, 0, 0, "-", "miscellaneous"], [18, 0, 0, "-", "param_bundle"], [18, 0, 0, "-", "sparse"]], "borea.utils.miscellaneous.miscellaneous": [[18, 4, 1, "", "angle_degree_2vect"], [18, 4, 1, "", "dist_2pts"], [18, 4, 1, "", "min_max_pt"], [18, 4, 1, "", "normalize"]], "borea.utils.miscellaneous.param_bundle": [[18, 4, 1, "", "set_param_bundle_diff"]], "borea.utils.miscellaneous.sparse": [[18, 4, 1, "", "invert_diag_sparse_matrix_3_3"]], "borea.utils.singleton": [[19, 0, 0, "-", "singleton"]], "borea.utils.singleton.singleton": [[19, 1, 1, "", "Singleton"]], "borea.utils.singleton.singleton.Singleton": [[19, 3, 1, "", "clear"]], "borea.utils.xml": [[20, 0, 0, "-", "xml"]], "borea.utils.xml.xml": [[20, 4, 1, "", "add_elem"], [20, 4, 1, "", "format_xml"], [20, 4, 1, "", "indent"]], "borea.worksite": [[21, 0, 0, "-", "worksite"]], "borea.worksite.worksite": [[21, 1, 1, "", "Worksite"]], "borea.worksite.worksite.Worksite": [[21, 3, 1, "", "calculate_barycentre"], [21, 3, 1, "", "get_attr_transfo_pt"], [21, 3, 1, "", "get_coor_pt_img_and_world"], [21, 3, 1, "", "get_point_image_dataframe"], [21, 3, 1, "", "get_point_world_dataframe"], [21, 3, 1, "", "set_param_shot"], [21, 3, 1, "", "set_point_image_dataframe"], [21, 3, 1, "", "set_point_world_dataframe"], [21, 3, 1, "", "set_unit_output"]], "borea.writer": [[22, 0, 0, "-", "manage_writer"], [22, 0, 0, "-", "writer_con"], [22, 0, 0, "-", "writer_df_to_txt"], [22, 0, 0, "-", "writer_opk"], [22, 0, 0, "-", "writer_rpc"]], "borea.writer.manage_writer": [[22, 4, 1, "", "manager_writer"]], "borea.writer.writer_con": [[22, 4, 1, "", "write"]], "borea.writer.writer_df_to_txt": [[22, 4, 1, "", "write_df_to_txt"]], "borea.writer.writer_opk": [[22, 4, 1, "", "write"]], "borea.writer.writer_rpc": [[22, 4, 1, "", "write"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function", "5": "py:property"}, "terms": {"": [11, 15, 18, 19], "0": [1, 14, 15, 18, 20], "1": [1, 2, 10, 15, 17], "10": [2, 6, 7, 8, 20], "100": 2, "11": 1, "12": 1, "13": 1, "2": [1, 2, 15, 18], "20": 15, "2154": [1, 3], "2d": [1, 6, 13, 18], "3": [1, 2, 15], "3d": [6, 8, 15], "5": 1, "5f": 20, "6": [8, 15], "A": [1, 2, 3, 10, 15, 17, 18], "And": 1, "For": 15, "If": [1, 3, 15], "It": 19, "NOT": [1, 14], "One": [1, 4], "The": [1, 2, 3, 10, 14, 15, 18, 20, 21, 22], "To": [14, 15], "absolut": 11, "account": [10, 17], "acquisit": [1, 2, 15], "ad": [1, 6, 8, 15], "add": [1, 2, 6, 7, 8, 10, 15, 20], "add_camera": [0, 1], "add_co_point": [0, 1], "add_elem": [16, 20], "add_gcp2d": [0, 1], "add_gcp3d": [0, 1], "add_pixel": 15, "add_shot": [0, 1], "adjust": 15, "after": 1, "agr": [1, 9], "aim": 19, "all": [1, 4, 11, 15, 17, 21], "allow": [1, 3, 21], "alter": [1, 10, 14, 17, 22], "altitud": [1, 3, 14, 17], "alwai": [1, 2], "an": [1, 3, 10, 14, 15, 17, 18, 22], "angl": [1, 10, 15, 17, 18, 21, 22], "angle_degree_2vect": [16, 18], "ani": [1, 20], "app": 9, "appear": 15, "appli": [6, 7, 8], "approx": [1, 14, 21], "approx_euclidean_proj": [0, 24], "approxeucli": 1, "approxeuclideanproj": [0, 3], "approxim": 3, "apprx": 1, "ar": [1, 3, 17], "aren": 15, "arg": [1, 3, 6, 7, 8, 10, 17, 22], "argpars": [6, 7, 8], "args_add_pt2d": [5, 6], "args_add_pt3d": [5, 6], "args_add_shot": [5, 6], "args_control": [5, 8], "args_gcp2d": [5, 6], "args_gcp3d": [5, 6], "args_general_param": [5, 6], "args_image_world": [5, 8], "args_input_shot": [5, 6], "args_output_shot": [5, 6], "args_proj_param": [5, 6], "args_reading_opk": [5, 7], "args_space_resect": [5, 8], "args_tf_proj_param": [5, 8], "args_world_imag": [5, 8], "args_writ": [5, 6], "args_write_con": [5, 7], "args_writing_opk": [5, 7], "args_writing_rpc": [5, 7], "argspars": [6, 7, 8], "argument": [6, 7, 8], "arithmet": 11, "around": 2, "arrai": [1, 2, 3, 13, 14, 15, 17, 18, 21], "arrang": 9, "ask": [3, 14], "attribut": [1, 21], "ax": [1, 10, 17, 22], "axiat": 15, "b": 15, "bad_head": 17, "balis": [2, 20], "barycentr": 21, "base": [1, 2, 3, 11, 13, 14, 15, 19, 21], "bdortho": 4, "beam": 18, "befor": 3, "begin": 22, "belong": 19, "between": [1, 3, 15, 17, 18], "bilinear": 1, "block": 18, "bool": [1, 10, 14, 17, 21, 22], "boolean": [1, 17], "borea": 23, "buffer": 2, "build": 1, "bundl": [14, 15, 18], "bundle_to_imag": [12, 14], "c": [2, 14], "c_ob": 15, "calcul": [2, 6, 8, 11, 14, 15, 18, 21, 22], "calculate_barycentr": [0, 21], "calculate_image_world_by_intersect": [12, 15], "calculate_world_to_imag": [12, 15], "calcult": 15, "cam": [0, 2, 14, 15], "camera": [0, 2, 9, 14, 15, 24], "camera_txt": [0, 9], "carto_to_geoc": [0, 3], "carto_to_geog": [0, 3], "carto_to_geog_out": 3, "cartograph": 3, "cartographiqu": 14, "categori": 19, "center": 1, "centr": 3, "central": 3, "chang": [1, 3, 15, 21], "check": [0, 15, 16], "check_args_opk": [0, 16], "check_args_reader_pt": [0, 16], "check_arrai": [0, 16], "check_array_transfo": [16, 17], "check_h_z": [16, 17], "check_head": [0, 16], "check_header_fil": [16, 17], "check_lett": 17, "check_order_ax": [0, 16], "class": [1, 2, 3, 11, 13, 14, 15, 19, 21, 22], "classmethod": [1, 2], "clear": [16, 19], "co": 15, "co_point": [1, 9, 15, 17, 21], "code": [0, 1, 3, 15, 17, 22], "code_gcp": 1, "coeffici": 2, "col": [2, 14], "collinear": 3, "column": [1, 2, 9, 10, 13, 15, 17, 21, 22], "combin": 17, "comput": [2, 3, 13], "comput_inter_in_2_more_distant_shot": [12, 15], "compute_image_world_least_squar": [12, 15], "con": 22, "condit": 1, "conic": [2, 7, 22], "conl": [0, 24], "connect": [1, 9, 15], "construct": 1, "contain": [1, 17], "content": 24, "control": [1, 8, 11, 15, 21], "control_typ": [15, 21], "conv_output_z_typ": [12, 14], "conv_z_shot_to_z_data": [12, 14], "converg": [3, 15], "convers": [14, 17], "conversion_coor_shot": [0, 12], "convert": [2, 3, 4, 14, 17, 22], "convert_line_list": [3, 4], "convert_opk_to_xyz": [16, 17], "coodin": 14, "coor": [0, 1, 3, 14], "coor2d": 1, "coor_2d": 1, "coor_eucli": [3, 18], "coor_gcp": 1, "coor_img": 13, "coor_init": 15, "coor_world": [3, 13, 14], "coordin": [1, 2, 3, 6, 8, 13, 14, 15, 18, 22], "coordinn": 18, "coordonne": 15, "copoint": 15, "correct": [1, 10, 17, 21, 22], "correspond": 15, "cr": 3, "creat": [2, 3], "create_grid_rpc": [0, 2], "create_mat_a_and_vect_residu": [12, 15], "creation": [2, 15, 19], "cubic": 1, "cval": 1, "data": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 21, 22], "data_input": 4, "data_list": 11, "datafram": [3, 9, 15, 21, 22], "datastruct": [0, 24], "de": 1, "definit": 1, "degre": [1, 2, 3, 10, 17, 18, 22], "depend": [15, 21], "describ": 2, "design": 19, "df": 22, "df_pt": 3, "dfpt": 15, "dict": [1, 2, 10, 11, 15, 17, 22], "dictionari": [2, 11, 22], "dictionnari": 15, "diff": 17, "differ": 21, "differenti": [1, 18], "digit": 1, "dim": [17, 18], "dimens": 17, "direct": 15, "dist_2pt": [16, 18], "distanc": [15, 18], "distant": 15, "distort": 1, "do": 15, "dtm": [0, 13, 19, 24], "du": 14, "dx": 15, "d\u00e9fault": 14, "e": [10, 17], "each": 15, "edg": 1, "elem": 20, "element": [4, 15, 17, 20], "elementtre": [2, 20], "elev": 1, "enough": 15, "epsg": [0, 1, 3, 4, 22], "epsg_output": [0, 1, 3, 22], "equat": [3, 15], "error": [1, 17], "et": [2, 20], "etre": [2, 20], "eucli": 15, "eucli_to_bundl": [12, 14], "eucli_to_imag": [12, 14], "eucli_to_world": [0, 3], "euclidean": [1, 3, 14, 15, 18, 21], "euclidean_proj": [0, 24], "euclideanproj": [0, 3], "euclidian": 3, "euclidien": 15, "ex": [1, 3], "extern": [8, 15], "externa": 15, "extract": [1, 3], "fact_rpc": [2, 22], "factor": [1, 2, 3, 15, 22], "fals": [14, 17, 21], "field": 15, "file": [1, 2, 4, 6, 7, 8, 9, 10, 11, 17, 20, 22], "fill": 1, "first": [15, 18], "fisrt": 18, "fix": 15, "flaot": 1, "flip": 18, "float": [1, 3, 14, 15, 17, 18], "focal": [0, 1], "folder": 22, "folder_con": 22, "folder_rpc": 22, "form": 1, "formal": 17, "format": [0, 1, 9, 17, 20, 22, 24], "format_xml": [16, 20], "frame": 18, "frist": 15, "from": [2, 3, 6, 7, 8, 13, 15, 20], "from_param_euclidean": [0, 1], "from_shot": [0, 2], "func_least_squar": [12, 15], "function": [3, 10, 11, 13, 14, 17, 18, 20, 22], "g": [10, 17], "gcp": [0, 6, 15, 21, 24], "gcp2d": [1, 9, 15, 17, 21], "gcp3d": [9, 15, 17], "gdal": 1, "gener": 6, "geoc_to_carto": [0, 3], "geodesi": [0, 24], "geog_to_carto": [0, 3], "geog_to_geoid": [0, 3], "geograph": [2, 3], "geoid": [0, 1, 3], "geoid_to_geog": [0, 3], "geometri": 2, "georeferenc": 1, "geotiff": 1, "geoview": [2, 4, 7], "get": [1, 18, 21], "get_attr_transfo_pt": [0, 21], "get_coor_pt_img_and_world": [0, 21], "get_meridian_converg": [0, 3], "get_point_image_datafram": [0, 21], "get_point_world_datafram": [0, 21], "get_scale_factor": [0, 3], "get_type_z_and_head": [16, 17], "get_z_add_scale_factor": [0, 1], "get_z_remove_scale_factor": [0, 1], "get_z_world": [0, 1], "give": 1, "given": [14, 15], "good": 17, "grid": [1, 2], "grid_img": 2, "grid_world": 2, "ground": [1, 6, 11, 14, 15], "gt": 13, "h": [1, 17], "head": 17, "header": [4, 9, 10, 17, 22], "height": [0, 1, 3, 14, 15, 17], "i": [1, 2, 3, 9, 10, 14, 15, 17, 19, 20, 21, 22], "id_img": [15, 21], "id_pt": [15, 21], "ign": [1, 2, 7], "imag": [1, 2, 6, 8, 11, 13, 14, 15, 18, 21], "image_to_bundl": [12, 14], "image_to_world": [12, 13, 14], "image_world_intersect": [0, 12], "image_world_it": [12, 14], "image_world_least_squar": [0, 12], "image_world_shot": [0, 12], "image_world_work": [0, 12], "image_z_to_world": [12, 14], "imageworldshot": [12, 14], "imageworldwork": [12, 15], "imc_adjust": 15, "img_coor": 14, "img_norm": 2, "implement": [3, 20], "indent": [16, 20], "index": [18, 23], "inform": [1, 10, 17, 22], "init": 3, "init_eucli_point": [12, 15], "init_kappa": [12, 15], "initi": 15, "input": [3, 4, 14], "instanc": 19, "instanti": [3, 19], "int": [1, 2, 3, 15, 20], "inter": 15, "interpol": 1, "intersect": 15, "intersection_line_3d": [12, 15], "intersection_pt_in_2shot": [12, 15], "interv": [10, 17], "invers": 18, "invert_diag_sparse_matrix_3_3": [16, 18], "io": 11, "item": 20, "its": 15, "j": [10, 17], "kappa": [1, 15], "keep_in_memori": 1, "keep_memori": 1, "kei": [1, 2, 10, 17, 22], "known": 3, "kwarg": [1, 3], "l": [2, 14], "l_ob": 15, "la": 14, "lcode": 15, "least": [2, 15], "least_square_intersect": [12, 15], "least_square_rpc": [0, 2], "least_square_shot": [12, 15], "letter": 17, "level": 20, "lib": [2, 6, 7, 8, 20], "light": 2, "line": [1, 2, 4, 10, 13, 14, 15, 17, 21], "linear": [1, 10, 14, 17, 22], "linear_alter": [1, 10, 17, 21, 22], "link": [1, 21], "list": [1, 3, 4, 9, 10, 11, 15, 17, 20, 21, 22], "list_data": 4, "list_lett": 17, "list_shot": 15, "local": [3, 14], "local_euclidean_proj": [0, 24], "local_to_eucli": [12, 14], "localeuclideanproj": [0, 3], "m": 18, "maco": 2, "main": 21, "main_stat_and_sav": [0, 11], "main_stat_image_to_world": [0, 11], "main_stat_world_to_imag": [0, 11], "make": 15, "manag": [9, 17], "manage_image_world": [12, 15], "manage_read": [0, 9], "manage_writ": [0, 24], "manager_writ": [0, 22], "manipul": [1, 3], "mapinfo": 4, "marker": 15, "mat": [3, 18], "mat_a": 15, "mat_eucli": 3, "mat_eucli_to_mat": [0, 3], "mat_inv": 18, "mat_obs_axia": [12, 15], "mat_ori_eucli": 1, "mat_rot_eucli": 1, "mat_rot_euclidean_loc": [0, 3], "mat_to_mat_eucli": [0, 3], "math": 18, "matric": [1, 21], "matrix": [1, 2, 3, 10, 15, 17, 18, 22], "max": [11, 18], "me": 9, "mean": [1, 11, 15], "median": 11, "memori": 1, "meridian": 3, "messag": 17, "method": [1, 2, 15], "min": [11, 18], "min_max_pt": [16, 18], "miscellan": [0, 16], "misss": 17, "model": 1, "modifi": [1, 14], "modul": [23, 24], "most": 15, "ms_error": 17, "ms_error_lett": 17, "must": [1, 3, 17], "n": [17, 18], "nadir": [1, 14], "name": [1, 15, 20, 21, 22], "name_cam": 1, "name_camera": [0, 1], "name_gcp": [0, 1], "name_opk": 22, "name_point": [1, 15], "name_pt": 15, "name_shot": [1, 15, 21], "nbr_inc": 15, "nbr_ob": 15, "ndarrai": [1, 2, 3, 13, 14, 15, 17, 18, 21], "nearest": 1, "need": 9, "new": [1, 3], "nodata": 1, "nonadir": 14, "none": [1, 2, 3, 6, 7, 8, 9, 10, 11, 15, 17, 20, 21, 22], "normal": [2, 16, 18], "normalize_data": [0, 2], "np": [1, 2, 3, 13, 14, 15, 17, 18, 21], "number": [15, 20], "numpi": 1, "ob": 15, "object": [1, 2, 3, 4, 10, 11, 13, 14, 15, 19], "obs_imag": [15, 21], "observ": [2, 15], "offset": 18, "omega": [1, 15], "one": [1, 2, 6, 18], "oopk": 17, "opk": [6, 7, 10, 17, 22], "order": [1, 2, 10, 17, 21, 22], "order_ax": [1, 10, 17, 21, 22], "ori": 2, "ori_shot": 1, "orient": [0, 1, 9, 15], "other": [10, 22], "output": [1, 3, 4, 14, 17, 22], "outsid": 1, "p_add_data": [0, 5], "p_add_shot": [0, 5], "p_bundl": 14, "p_control": [0, 5], "p_eucli": 14, "p_file_gcp2d": [0, 5], "p_file_gcp3d": [0, 5], "p_format": [0, 5], "p_func": [0, 5], "p_gen_param": [0, 5], "p_image_world": [0, 5], "p_proj": [0, 5], "p_pt2d": [0, 5], "p_pt3d": [0, 5], "p_read_opk": [0, 5], "p_spaceresect": [0, 5], "p_tf_proj_pt": [0, 5], "p_unit_shot": [0, 5], "p_world_imag": [0, 5], "p_write": [0, 5], "p_write_con": [0, 5], "p_write_opk": [0, 5], "p_write_rpc": [0, 5], "packag": [23, 24], "page": 23, "panda": 21, "par": 14, "param_bundl": [0, 16], "param_con": 22, "param_rpc": [2, 22], "paramet": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 21, 22], "parent": [3, 13], "parser": [6, 7, 8], "part": 1, "past": 1, "path": [1, 2, 9, 10, 22], "path_con": 2, "path_dtm": 1, "path_geoid": 1, "path_opk": 22, "pathoutput": 11, "pathreturn": 22, "pattern": 19, "pd": [15, 21, 22], "pd_me": [15, 21], "pd_mes_temp": 15, "pd_pnt": 15, "percentag": 15, "perform": 1, "phi": [1, 15], "photogrametriqu": 8, "photogrammetr": [10, 22], "photogrammetri": [10, 22], "pinit": 15, "pixel": [1, 15], "point": [1, 2, 3, 6, 8, 9, 11, 14, 15, 17, 18, 21], "point1": 15, "point2": 15, "polynom": [2, 22], "polynomi": 2, "polynomial_degre": 2, "pos_eucli": [1, 14], "pos_shot": 1, "pos_shot_eucli": 1, "posit": [1, 14, 15, 18], "possibl": 17, "ppai": [0, 1], "ppax": [0, 1], "prec": 20, "precis": [1, 20], "process": [0, 14, 15, 24], "process_add_shot": [5, 6], "process_args_control": [5, 8], "process_args_gen_param": [5, 6], "process_args_proj_param": [5, 6], "process_args_read_opk": [5, 7], "process_args_write_con": [5, 7], "process_args_write_opk": [5, 7], "process_args_write_rpc": [5, 7], "process_gcp2d": [5, 6], "process_gcp3d": [5, 6], "process_image_world": [5, 6, 8], "process_space_resect": [5, 8], "process_tf_proj_param": [5, 8], "process_world_imag": [5, 6, 8], "proj": [0, 2, 8], "proj4": 4, "proj_engin": [0, 24], "proj_output": 21, "proj_to_proj_out": [0, 3], "project": [1, 2, 3, 6, 8, 21, 22], "projectionlist": [0, 3], "projengin": [0, 1, 3, 19], "projeucli": 1, "properti": 3, "provid": 3, "pt1": 18, "pt2": 18, "pt2d": [9, 15], "pt3d": [9, 15], "pt_bundl": 14, "pt_eucli": 15, "pt_img": 15, "pt_world": [15, 21], "put": 20, "py": [2, 6, 7, 8, 20], "pyproj": 3, "python3": [2, 6, 7, 8, 20], "quintic": 1, "r": 18, "radian": [1, 10, 17, 22], "rais": 1, "random": 15, "ratat": 17, "read": [1, 2, 6, 7, 9, 10, 17], "read_camera": [0, 9], "read_file_pt": [0, 9], "read_file_pt_datafram": [0, 9], "reader": [0, 17, 24], "reader_camera": [0, 24], "reader_opk": [0, 9], "reader_orient": [9, 10], "reader_point": [0, 24], "recalcul": 15, "recalcult": 15, "record": 22, "recov": 21, "refer": [3, 4, 18], "registr": 22, "remov": 1, "replac": 17, "repres": [1, 3], "request": 21, "research": 4, "resect": 15, "residu": [11, 15], "ressourc": 21, "restrict": 19, "result": [1, 15], "retriev": 21, "retun": 17, "return": [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 20, 21], "rotat": [1, 3, 10, 17, 18, 21, 22], "rpc": [0, 7, 22, 24], "same": 17, "save": [2, 9, 11, 21, 22], "save_conl": [0, 2], "save_stat_txt": [0, 11], "scale": [1, 3, 18], "scipi": 17, "script": [9, 10, 17], "sd": 4, "search": [15, 23], "search_info": [3, 4], "search_proj": [0, 3], "second": [15, 18], "seed_20_point": [12, 15], "self": [1, 13], "set": [1, 15, 17, 18, 21], "set_approx_eucli_proj": [0, 1], "set_camera_xml": [0, 2], "set_cval": [0, 1], "set_dtm": [0, 1], "set_epsg": [0, 3], "set_geometry_xml": [0, 2], "set_keep_memori": [0, 1], "set_linear_alter": [0, 1], "set_ord": [0, 1], "set_order_ax": [0, 1], "set_param_bundle_diff": [16, 18], "set_param_eucli_shot": [0, 1], "set_param_shot": [0, 21], "set_point_image_datafram": [0, 21], "set_point_world_datafram": [0, 21], "set_proj": [0, 1], "set_proj_po": [0, 1], "set_rot_shot": [0, 1], "set_type_z": [0, 1], "set_type_z_data": [0, 1], "set_type_z_shot": [0, 1], "set_unit_angl": [0, 1], "set_unit_output": [0, 21], "set_z_nadir": [0, 1], "setter": 3, "setup": [1, 2], "setup_matrix_obs_rpc": [0, 2], "shoot": 15, "shot": [0, 2, 6, 8, 10, 14, 15, 17, 18, 21, 24], "shot1": 15, "shot2": 15, "shot_adjust": 15, "sigma": 11, "singl": 19, "singleton": [0, 16], "site": [10, 11, 22], "size": 2, "size_grid": 2, "slinear": 1, "softwar": 2, "solv": 15, "sourc": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22], "space": 15, "space_resect": [0, 12], "space_resection_gap": [12, 15], "space_resection_on_worksit": [12, 15], "space_resection_shot": [12, 15], "space_resection_to_worksit": [12, 15], "spaceresect": [12, 15], "spars": [0, 16], "squar": [2, 15], "src": [2, 22], "stat": [0, 24], "stat_image_to_world": [0, 11], "stat_list": [0, 11], "stat_world_to_imag": [0, 11], "statist": [0, 24], "store": 1, "str": [1, 2, 3, 4, 9, 10, 11, 14, 15, 17, 18, 20, 21, 22], "string": 21, "structur": 20, "submodul": [0, 5, 12, 16, 24], "subpackag": 24, "support": 1, "symbol": 17, "system": [1, 3, 14, 15, 21], "t": 15, "ta": 4, "tabl": [15, 21], "take": [14, 15, 21], "take_ob": [12, 15], "taken": [10, 17], "terrain": [14, 21], "textiowrapp": 11, "thei": [15, 17], "thi": 3, "tool": 21, "topaero": 4, "tranform": 3, "tranform_altitud": [0, 3], "tranform_height": [0, 3], "transform": [2, 3, 8, 10, 13, 14, 15, 21], "transform_dtm": [0, 12], "transform_geodesi": [0, 24], "transform_pt_proj": [0, 3], "transform_shot": [0, 12], "transform_worksit": [0, 12], "transform_world_imag": [0, 24], "transformgeodesi": [0, 3], "transit": 3, "true": [1, 10, 14, 17, 21, 22], "tubl": 15, "tupl": [2, 9, 13, 15, 17, 18, 21], "two": [1, 15, 18], "txt": [4, 9, 11, 22], "type": [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20, 21, 22], "type_dtm": 1, "type_input": 4, "type_m": 18, "type_output": 4, "type_point": [9, 11, 15, 21], "type_process": 15, "type_pt": 17, "type_z": [1, 17, 21], "type_z_data": [1, 14], "type_z_input": [3, 14], "type_z_output": [3, 14], "type_z_shot": [1, 14], "u": 18, "u1": 18, "u2": 18, "u3": 18, "union": [3, 14, 17], "unit": [1, 6, 10, 17, 21, 22], "unit_angl": [1, 10, 17, 21, 22], "unit_data": 2, "unit_z_data": 2, "unit_z_shot": 2, "uniti": 2, "up": [1, 15, 18, 21], "us": [1, 3, 15, 21], "usr": [2, 6, 7, 8, 20], "util": [0, 24], "v": 18, "val": 20, "valid": 3, "valu": [1, 3, 15], "var": 11, "variabl": 17, "variat": 15, "variou": 17, "vect1": 15, "vect2": 15, "vector": [15, 17, 18], "verif": 17, "visibl": 15, "want": [1, 3, 14, 15, 21], "we": 18, "wgs84": [2, 22], "what": [15, 21], "when": [2, 22], "where": [15, 21], "which": [1, 3, 9, 15, 18], "whit": 1, "whose": 19, "width": [0, 1, 15], "without": [1, 17], "wkt": 4, "woksit": 15, "work": [6, 7, 8, 9, 10, 11, 12, 15, 18, 22], "workdata": [0, 21, 24], "worksid": 10, "worksit": [0, 1, 3, 6, 7, 8, 9, 10, 11, 14, 15, 22, 24], "world": [1, 2, 3, 6, 8, 11, 13, 14, 15, 21, 22], "world_image_dtm": [0, 12], "world_image_shot": [0, 12], "world_image_work": [0, 12], "world_norm": 2, "world_to_eucli": [0, 3], "world_to_imag": [12, 13, 14], "worldimagedtm": [1, 12, 13], "worldimageshot": [12, 14], "worldimagework": [12, 15], "worldintersect": [12, 15], "worldleastsquar": [12, 15], "write": [0, 2, 6, 7, 11, 20, 22], "write_df_to_txt": [0, 22], "write_stat": [0, 11], "writer": [0, 24], "writer_con": [0, 24], "writer_df_to_txt": [0, 24], "writer_opk": [0, 24], "writer_rpc": [0, 24], "x": [1, 2, 3, 13, 14, 15, 17, 21], "x_carto": 3, "x_central": [0, 3], "x_col": 14, "xml": [0, 2, 9, 16], "y": [1, 2, 3, 13, 14, 15, 17, 21], "y_carto": 3, "y_central": [0, 3], "y_line": 14, "you": [1, 3, 14, 15, 21], "your": 21, "z": [1, 2, 3, 9, 14, 15, 17, 21], "z_nadir": 1}, "titles": ["borea package", "borea.datastruct package", "borea.format package", "borea.geodesy package", "borea.geodesy.projectionlist package", "borea.process package", "borea.process.p_add_data package", "borea.process.p_format package", "borea.process.p_func package", "borea.reader package", "borea.reader.orientation package", "borea.stat package", "borea.transform_world_image package", "borea.transform_world_image.transform_dtm package", "borea.transform_world_image.transform_shot package", "borea.transform_world_image.transform_worksite package", "borea.utils package", "borea.utils.check package", "borea.utils.miscellaneous package", "borea.utils.singleton package", "borea.utils.xml package", "borea.worksite package", "borea.writer package", "Welcome to Pink_Lady\u2019s documentation!", "borea"], "titleterms": {"": 23, "approx_euclidean_proj": 3, "borea": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24], "camera": 1, "check": 17, "check_args_opk": 17, "check_args_reader_pt": 17, "check_arrai": 17, "check_head": 17, "check_order_ax": 17, "conl": 2, "content": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "conversion_coor_shot": 14, "datastruct": 1, "document": 23, "dtm": 1, "euclidean_proj": 3, "format": 2, "gcp": 1, "geodesi": [3, 4], "image_world_intersect": 15, "image_world_least_squar": 15, "image_world_shot": 14, "image_world_work": 15, "indic": 23, "local_euclidean_proj": 3, "manage_read": 10, "manage_writ": 22, "miscellan": 18, "modul": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "orient": 10, "p_add_data": 6, "p_add_shot": 6, "p_control": 8, "p_file_gcp2d": 6, "p_file_gcp3d": 6, "p_format": 7, "p_func": 8, "p_gen_param": 6, "p_image_world": 8, "p_proj": 6, "p_pt2d": 6, "p_pt3d": 6, "p_read_opk": 7, "p_spaceresect": 8, "p_tf_proj_pt": 8, "p_unit_shot": 6, "p_world_imag": 8, "p_write": 6, "p_write_con": 7, "p_write_opk": 7, "p_write_rpc": 7, "packag": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "param_bundl": 18, "pink_ladi": 23, "process": [5, 6, 7, 8], "proj_engin": 3, "projectionlist": 4, "reader": [9, 10], "reader_camera": 9, "reader_opk": 10, "reader_point": 9, "rpc": 2, "search_proj": 4, "shot": 1, "singleton": 19, "space_resect": 15, "spars": 18, "stat": 11, "statist": 11, "submodul": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22], "subpackag": [0, 3, 5, 9, 12, 16], "tabl": 23, "transform_dtm": 13, "transform_geodesi": 3, "transform_shot": 14, "transform_worksit": 15, "transform_world_imag": [12, 13, 14, 15], "util": [16, 17, 18, 19, 20], "welcom": 23, "workdata": 1, "worksit": 21, "world_image_dtm": 13, "world_image_shot": 14, "world_image_work": 15, "writer": 22, "writer_con": 22, "writer_df_to_txt": 22, "writer_opk": 22, "writer_rpc": 22, "xml": 20}}) \ No newline at end of file diff --git a/docs/sphinx/borea.process.p_add_data.rst b/docs/sphinx/borea.process.p_add_data.rst index 9b05c973..a7f6cb8e 100644 --- a/docs/sphinx/borea.process.p_add_data.rst +++ b/docs/sphinx/borea.process.p_add_data.rst @@ -36,6 +36,14 @@ borea.process.p\_add\_data.p\_gen\_param module :undoc-members: :show-inheritance: +borea.process.p\_add\_data.p\_proj module +----------------------------------------- + +.. automodule:: borea.process.p_add_data.p_proj + :members: + :undoc-members: + :show-inheritance: + borea.process.p\_add\_data.p\_pt2d module ----------------------------------------- diff --git a/docs/sphinx/borea.process.p_func.rst b/docs/sphinx/borea.process.p_func.rst index f3ae399f..7671a8bf 100644 --- a/docs/sphinx/borea.process.p_func.rst +++ b/docs/sphinx/borea.process.p_func.rst @@ -28,6 +28,14 @@ borea.process.p\_func.p\_spaceresection module :undoc-members: :show-inheritance: +borea.process.p\_func.p\_tf\_proj\_pt module +-------------------------------------------- + +.. automodule:: borea.process.p_func.p_tf_proj_pt + :members: + :undoc-members: + :show-inheritance: + borea.process.p\_func.p\_world\_image module -------------------------------------------- From dffad7dfefbfa8daa8e7f23ef20db9f380923b39 Mon Sep 17 00:00:00 2001 From: ACornuIGN Date: Mon, 30 Sep 2024 15:02:16 +0200 Subject: [PATCH 16/16] fix: remove file to change name --- borea_tools/transfom_proj_points.py | 30 ----------------------------- 1 file changed, 30 deletions(-) delete mode 100644 borea_tools/transfom_proj_points.py diff --git a/borea_tools/transfom_proj_points.py b/borea_tools/transfom_proj_points.py deleted file mode 100644 index 5b9a93c2..00000000 --- a/borea_tools/transfom_proj_points.py +++ /dev/null @@ -1,30 +0,0 @@ -""" -Main to transform projection of 3D points. -""" -# pylint: disable=import-error, wrong-import-position, line-too-long -import argparse -import sys -import os - -sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) -from borea.process.p_func.p_tf_proj_pt import args_tf_proj_param, process_tf_proj_param # noqa: E402, E501 - - -def transform_proj_pt(): - """ - Transforms the projection of a point file by pyproj. - """ - parser = argparse.ArgumentParser(description='Transform coordinate projection of the 3D points' - ' file.') - - # Args - parser = args_tf_proj_param(parser) - - args = parser.parse_args() - - # Process data - process_tf_proj_param(args) - - -if __name__ == "__main__": - transform_proj_pt()