@@ -434,6 +434,7 @@ <h1>Source code for pyinterpolate.core.data_models.blocks</h1><div class="highli
434434< span class ="sd "> - Package doesn't read data files, data must be loaded into DataFrame and</ span >
435435< span class ="sd "> then passed into the Blocks object.</ span >
436436< span class ="sd "> """</ span >
437+ < span class ="kn "> import</ span > < span class ="nn "> copy</ span >
437438< span class ="kn "> from</ span > < span class ="nn "> typing</ span > < span class ="kn "> import</ span > < span class ="n "> Union</ span > < span class ="p "> ,</ span > < span class ="n "> Hashable</ span > < span class ="p "> ,</ span > < span class ="n "> Dict</ span >
438439< span class ="kn "> from</ span > < span class ="nn "> numpy.typing</ span > < span class ="kn "> import</ span > < span class ="n "> ArrayLike</ span >
439440
@@ -927,10 +928,9 @@ <h1>Source code for pyinterpolate.core.data_models.blocks</h1><div class="highli
927928 < span class ="k "> return</ span > < span class ="n "> df</ span > < span class ="o "> .</ span > < span class ="n "> loc</ span > < span class ="p "> [</ span > < span class ="n "> block_id</ span > < span class ="p "> ,</ span > < span class ="n "> other_blocks</ span > < span class ="p "> ]</ span > </ div >
928929
929930
930- < span class ="c1 "> # TODO manage copying and inplace transformations</ span >
931931< div class ="viewcode-block " id ="Blocks.transform_crs ">
932932< a class ="viewcode-back " href ="../../../../api/core/core.html#pyinterpolate.Blocks.transform_crs "> [docs]</ a >
933- < span class ="k "> def</ span > < span class ="nf "> transform_crs</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> target_crs</ span > < span class ="p "> ):</ span >
933+ < span class ="k "> def</ span > < span class ="nf "> transform_crs</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> target_crs</ span > < span class ="p "> , </ span > < span class =" n " > inplace </ span > < span class =" o " > = </ span > < span class =" kc " > True </ span > < span class =" p " > ):</ span >
934934< span class ="w "> </ span > < span class ="sd "> """Function transforms Blocks CRS</ span >
935935
936936< span class ="sd "> Parameters</ span >
@@ -940,23 +940,46 @@ <h1>Source code for pyinterpolate.core.data_models.blocks</h1><div class="highli
940940< span class ="sd "> :meth:`pyproj.CRS.from_user_input()</ span >
941941< span class ="sd "> <pyproj.crs.CRS.from_user_input>`,</ span >
942942< span class ="sd "> such as an authority string (eg "EPSG:4326") or a WKT string.</ span >
943+
944+ < span class ="sd "> inplace : bool, default = True</ span >
945+ < span class ="sd "> When set to `True` then transform object's instance on the fly,</ span >
946+ < span class ="sd "> otherwise return modified object and do leave the old instance</ span >
947+ < span class ="sd "> unchanged.</ span >
943948< span class ="sd "> """</ span >
944949 < span class ="c1 "> # Transform core dataset</ span >
945- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> ds</ span > < span class ="o "> .</ span > < span class ="n "> to_crs</ span > < span class ="p "> (</ span > < span class ="n "> target_crs</ span > < span class ="p "> ,</ span > < span class ="n "> inplace</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> )</ span >
950+ < span class ="k "> if</ span > < span class ="n "> inplace</ span > < span class ="p "> :</ span >
951+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> ds</ span > < span class ="o "> .</ span > < span class ="n "> to_crs</ span > < span class ="p "> (</ span > < span class ="n "> target_crs</ span > < span class ="p "> ,</ span > < span class ="n "> inplace</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> )</ span >
946952
947- < span class ="c1 "> # representative points</ span >
948- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _get_representative_points</ span > < span class ="p "> ()</ span >
949- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _points_to_floats</ span > < span class ="p "> ()</ span >
953+ < span class ="c1 "> # representative points</ span >
954+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _get_representative_points</ span > < span class ="p "> ()</ span >
955+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _points_to_floats</ span > < span class ="p "> ()</ span >
950956
951- < span class ="c1 "> # distances</ span >
952- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> distances</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> calculate_distances_between_rep_points</ span > < span class ="p "> (</ span >
953- < span class ="n "> update</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span >
954- < span class ="p "> )</ span >
957+ < span class ="c1 "> # distances</ span >
958+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> distances</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> calculate_distances_between_rep_points</ span > < span class ="p "> (</ span >
959+ < span class ="n "> update</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span >
960+ < span class ="p "> )</ span >
961+
962+ < span class ="c1 "> # angles</ span >
963+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> angles</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> calculate_angles_between_rep_points</ span > < span class ="p "> (</ span >
964+ < span class ="n "> update</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span >
965+ < span class ="p "> )</ span >
966+ < span class ="k "> return</ span > < span class ="kc "> None</ span >
967+ < span class ="k "> else</ span > < span class ="p "> :</ span >
968+ < span class ="n "> new_object</ span > < span class ="o "> =</ span > < span class ="n "> copy</ span > < span class ="o "> .</ span > < span class ="n "> deepcopy</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> )</ span >
969+
970+ < span class ="n "> new_object</ span > < span class ="o "> .</ span > < span class ="n "> ds</ span > < span class ="o "> .</ span > < span class ="n "> to_crs</ span > < span class ="p "> (</ span > < span class ="n "> target_crs</ span > < span class ="p "> ,</ span > < span class ="n "> inplace</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> )</ span >
971+ < span class ="n "> new_object</ span > < span class ="o "> .</ span > < span class ="n "> _get_representative_points</ span > < span class ="p "> ()</ span >
972+ < span class ="n "> new_object</ span > < span class ="o "> .</ span > < span class ="n "> _points_to_floats</ span > < span class ="p "> ()</ span >
973+
974+ < span class ="n "> new_object</ span > < span class ="o "> .</ span > < span class ="n "> distances</ span > < span class ="o "> =</ span > < span class ="n "> new_object</ span > < span class ="o "> .</ span > < span class ="n "> calculate_distances_between_rep_points</ span > < span class ="p "> (</ span >
975+ < span class ="n "> update</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span >
976+ < span class ="p "> )</ span >
977+
978+ < span class ="n "> new_object</ span > < span class ="o "> .</ span > < span class ="n "> angles</ span > < span class ="o "> =</ span > < span class ="n "> new_object</ span > < span class ="o "> .</ span > < span class ="n "> calculate_angles_between_rep_points</ span > < span class ="p "> (</ span >
979+ < span class ="n "> update</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span >
980+ < span class ="p "> )</ span >
955981
956- < span class ="c1 "> # angles</ span >
957- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> angles</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> calculate_angles_between_rep_points</ span > < span class ="p "> (</ span >
958- < span class ="n "> update</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span >
959- < span class ="p "> )</ span > </ div >
982+ < span class ="k "> return</ span > < span class ="n "> new_object</ span > </ div >
960983
961984
962985 < span class ="k "> def</ span > < span class ="nf "> _delete</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> block_index</ span > < span class ="p "> :</ span > < span class ="n "> Union</ span > < span class ="p "> [</ span > < span class ="nb "> str</ span > < span class ="p "> ,</ span > < span class ="n "> Hashable</ span > < span class ="p "> ]):</ span >
0 commit comments