From b4b37c375cb8161ec8ec7ea0bab30debd6318604 Mon Sep 17 00:00:00 2001 From: Adam Paquette <acpaquette@usgs.gov> Date: Mon, 14 May 2018 18:54:53 -0700 Subject: [PATCH] Fixed system to cooperate with isis programs. --- bin/isis2socet | 17 + bin/socet2isis | 11 +- notebooks/Socet2ISIS.ipynb | 637 +++++++++++++++++++++++++++++++++-- plio/io/io_controlnetwork.py | 1 + 4 files changed, 639 insertions(+), 27 deletions(-) create mode 100644 bin/isis2socet diff --git a/bin/isis2socet b/bin/isis2socet new file mode 100644 index 0000000..29b75d8 --- /dev/null +++ b/bin/isis2socet @@ -0,0 +1,17 @@ +#!/usr/bin/env python +import argparse +import os + +def parse_args(): + parser = argparse.ArgumentParser() + + # Add args here + + return parser.parse_args() + + +def main(args): + print('Do some stuff') + +if __name__ == '__main__': + main(parse_args()) diff --git a/bin/socet2isis b/bin/socet2isis index 2fe0580..a32aa0f 100644 --- a/bin/socet2isis +++ b/bin/socet2isis @@ -20,6 +20,7 @@ def parse_args(): parser.add_argument('at_file', help='Path to the .atf file for a project.') parser.add_argument('cub_file_path', help='Path to cube files related to ipf files.') parser.add_argument('cub_ipf_map', help='Path to map file for all ipfs and cubes.') + parser.add_argument('target_name', help='Name of the target body used in the control net') parser.add_argument('--outpath', help='Directory for the control network to be output to.', required = False) @@ -73,10 +74,10 @@ def main(args): # Define column remap for socet dataframe column_remap = {'l.': 'y', 's.': 'x', - 'res_l': 'LineResidual', 'res_s': 'SampleResidual', 'known': 'Type', - 'lat_Y_North': 'AprioriY', 'long_X_East': 'AprioriX', 'ht': 'AprioriZ', - 'sig0': 'AprioriLatitudeSigma', 'sig1': 'AprioriLongitudeSigma', - 'sig2': 'AprioriRadiusSigma'} + 'res_l': 'LineResidual', 'res_s': 'SampleResidual', 'known': 'Type', + 'lat_Y_North': 'AprioriY', 'long_X_East': 'AprioriX', 'ht': 'AprioriZ', + 'sig0': 'AprioriLatitudeSigma', 'sig1': 'AprioriLongitudeSigma', + 'sig2': 'AprioriRadiusSigma'} # Rename the columns using the column remap above socet_df.rename(columns = column_remap, inplace=True) @@ -86,7 +87,7 @@ def main(args): serial_dict = serial_numbers(image_dict, cub_path) # creates the control network - cn.to_isis(os.path.join(outpath, cnet_out + '.net'), socet_df, serial_dict) + cn.to_isis(os.path.join(outpath, cnet_out + '.net'), socet_df, serial_dict, targetname = args.target_name) if __name__ == '__main__': main(parse_args()) diff --git a/notebooks/Socet2ISIS.ipynb b/notebooks/Socet2ISIS.ipynb index a0e5788..a75564b 100644 --- a/notebooks/Socet2ISIS.ipynb +++ b/notebooks/Socet2ISIS.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 56, "metadata": {}, "outputs": [], "source": [ @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 85, "metadata": {}, "outputs": [], "source": [ @@ -82,6 +82,7 @@ " return files_dict\n", "\n", "# converts columns l. and s. to isis\n", + "# no transform applied\n", "def line_sample_size(record, path):\n", " with open(os.path.join(path, record['ipf_file'] + '.sup')) as f:\n", " for i, line in enumerate(f):\n", @@ -107,6 +108,7 @@ " return sample_size, line_size, img_index\n", " \n", "# converts known to ISIS keywords\n", + "# transform\n", "def known(record):\n", " if record['known'] == 0:\n", " return 'Free'\n", @@ -119,6 +121,7 @@ " return num % 360\n", "\n", "# ocentric to ographic latitudes\n", + "# transform but unsure how to handle\n", "def oc2og(dlat, dMajorRadius, dMinorRadius):\n", " try: \n", " dlat = math.radians(dlat)\n", @@ -129,6 +132,7 @@ " return dlat\n", "\n", "# ographic to ocentric latitudes\n", + "# transform but unsure how to handle\n", "def og2oc(dlat, dMajorRadius, dMinorRadius):\n", " try:\n", " dlat = math.radians(dlat)\n", @@ -197,22 +201,30 @@ " \"\"\"\n", " Given geospatial coordinates, desired accuracy sigmas, and an equitorial radius, compute a 2x3\n", " sigma covariange matrix.\n", + " \n", " Parameters\n", " ----------\n", " lat : float\n", " A point's latitude in degrees\n", + " \n", " lon : float\n", " A point's longitude in degrees\n", + " \n", " rad : float\n", " The radius (z-value) of the point in meters\n", + " \n", " latsigma : float\n", " The desired latitude accuracy in meters (Default 10.0)\n", + " \n", " lonsigma : float\n", " The desired longitude accuracy in meters (Default 10.0)\n", + " \n", " radsigma : float\n", " The desired radius accuracy in meters (Defualt: 15.0)\n", + " \n", " semimajor_axis : float\n", " The semi-major or equitorial radius in meters (Default: 1737400.0 - Moon)\n", + " \n", " Returns\n", " -------\n", " rectcov : ndarray\n", @@ -261,7 +273,7 @@ " rectcov[1,1] = mat[1,2]\n", " rectcov[1,2] = mat[2,2]\n", " \n", - " return rectcov\n", + " return np.array(rectcov)\n", "# return np.array([[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]])\n", "\n", "\n", @@ -270,7 +282,7 @@ " return cov_matrix.ravel().tolist()\n", "\n", "# applys transformations to columns\n", - "def apply_transformations(atf_dict, df):\n", + "def apply_two_isis_transformations(atf_dict, df):\n", " prj_file = os.path.join(atf_dict['PATH'], atf_dict['PROJECT'])\n", " \n", " eRadius, pRadius = get_axis(prj_file)\n", @@ -285,7 +297,7 @@ " df['lat_Y_North'] = ecef[1][0]\n", " df['ht'] = ecef[2][0] \n", " df['aprioriCovar'] = df.apply(compute_cov_matrix, semimajor_axis = eRadius, axis=1)\n", - " df['ignore'] = df.apply(ignore_toggle, axis=1)\n", + "# df['ignore'] = df.apply(ignore_toggle, axis=1)\n", " \n", "def socet2isis(prj_file):\n", " # Read in and setup the atf dict of information\n", @@ -314,17 +326,17 @@ " socet_df = ipf_df.merge(gpf_df, left_on='pt_id', right_on='point_id')\n", " \n", " # Apply the transformations\n", - " apply_transformations(atf_dict, socet_df)\n", + "# apply_two_isis_transformations(atf_dict, socet_df)\n", " \n", " # Define column remap for socet dataframe\n", - " column_remap = {'l.': 'y', 's.': 'x',\n", - " 'res_l': 'lineResidual', 'res_s': 'sampleResidual', 'known': 'Type',\n", - " 'lat_Y_North': 'AprioriY', 'long_X_East': 'AprioriX', 'ht': 'AprioriZ',\n", - " 'sig0': 'AprioriLatitudeSigma', 'sig1': 'AprioriLongitudeSigma', 'sig2': 'AprioriRadiusSigma',\n", - " 'sig_l': 'linesigma', 'sig_s': 'samplesigma'}\n", + "# column_map = {'pt_id': 'id', 'l.': 'y', 's.': 'x',\n", + "# 'res_l': 'lineResidual', 'res_s': 'sampleResidual', 'known': 'Type',\n", + "# 'lat_Y_North': 'aprioriY', 'long_X_East': 'aprioriX', 'ht': 'aprioriZ',\n", + "# 'sig0': 'aprioriLatitudeSigma', 'sig1': 'aprioriLongitudeSigma', 'sig2': 'aprioriRadiusSigma',\n", + "# 'sig_l': 'linesigma', 'sig_s': 'samplesigma'}\n", " \n", " # Rename the columns using the column remap above\n", - " socet_df.rename(columns = column_remap, inplace=True)\n", + "# socet_df.rename(columns = column_map, inplace=True)\n", " \n", " # Return the socet dataframe to be converted to a control net\n", " return socet_df\n", @@ -337,35 +349,616 @@ " snum = sn.generate_serial_number(os.path.join(path, image + extension))\n", " snum = snum.replace('Mars_Reconnaissance_Orbiter', 'MRO')\n", " serial_dict[image] = snum\n", - " return serial_dict\n", - "\n" + " return serial_dict" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 86, "metadata": { "scrolled": true }, "outputs": [], "source": [ "# Setup stuffs for the cub information namely the path and extension\n", - "path = '/path/where/cub/files/are/'\n", - "\n", + "path = '/home/acpaquette/repos/plio/test_cubes'\n", + "targetname = 'Mars'\n", "# Extension of your cub files\n", - "extension = '.something.cub'\n", + "extension = '.8bit.cub'\n", "\n", "# Path to atf file\n", - "atf_file = ('/path/to/atf/file')\n", + "atf_file = ('/home/acpaquette/repos/plio/plio/examples/SocetSet/Relative.atf')\n", "\n", "socet_df = socet2isis(atf_file)\n", "\n", - "images = pd.unique(socet_df['ipf_file'])\n", + "# images = pd.unique(socet_df['ipf_file'])\n", "\n", - "serial_dict = serial_numbers(images, path, extension)\n", + "# serial_dict = serial_numbers(images, path, extension)\n", "\n", "# creates the control network\n", - "cn.to_isis('/path/you/want/the/cnet/to/be/in/cn.net', socet_df, serial_dict)" + "# cn.to_isis('/home/acpaquette/repos/plio/plio/examples/SocetSet/cn.net', socet_df, serial_dict, targetname = targetname)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [], + "source": [ + "return_df = cn.from_isis(\"/home/acpaquette/repos/plio/plio/examples/SocetSet/cn.net\")\n", + "\n", + "columns = []\n", + "column_index = []\n", + "\n", + "for i, column in enumerate(list(return_df.columns)):\n", + " if column not in columns:\n", + " column_index.append(i)\n", + " columns.append(column)\n", + "\n", + "return_df = return_df.iloc[:, column_index]" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [], + "source": [ + "column_map = {'pt_id': 'id', 'l.': 'y', 's.': 'x',\n", + " 'res_l': 'lineResidual', 'res_s': 'sampleResidual', 'known': 'Type',\n", + " 'lat_Y_North': 'aprioriY', 'long_X_East': 'aprioriX', 'ht': 'aprioriZ',\n", + " 'sig0': 'aprioriLatitudeSigma', 'sig1': 'aprioriLongitudeSigma', 'sig2': 'aprioriRadiusSigma',\n", + " 'sig_l': 'linesigma', 'sig_s': 'samplesigma'}\n", + "\n", + "column_map = {k: v for v, k in column_map.items()}\n", + "return_df.rename(columns = column_map, inplace=True)\n", + "return_df.drop(['chooserName', 'datetime', 'referenceIndex', 'jigsawRejected', 'editLock', 'aprioriSurfPointSource', 'aprioriSurfPointSourceFile','aprioriRadiusSource', 'aprioriRadiusSourceFile'] , axis = 1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>lat_Y_North</th>\n", + " <th>long_X_East</th>\n", + " <th>ht</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>139525.230749</td>\n", + " <td>3.390974e+06</td>\n", + " <td>4506.496945</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>139525.230749</td>\n", + " <td>3.390974e+06</td>\n", + " <td>4506.496945</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>139489.278045</td>\n", + " <td>3.390969e+06</td>\n", + " <td>4516.454802</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>139489.278045</td>\n", + " <td>3.390969e+06</td>\n", + " <td>4516.454802</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>139823.489797</td>\n", + " <td>3.390990e+06</td>\n", + " <td>4536.274914</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5</th>\n", + " <td>139823.489797</td>\n", + " <td>3.390990e+06</td>\n", + " <td>4536.274914</td>\n", + " </tr>\n", + " <tr>\n", + " <th>6</th>\n", + " <td>139772.738004</td>\n", + " <td>3.390936e+06</td>\n", + " <td>4518.050219</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7</th>\n", + " <td>139772.738004</td>\n", + " <td>3.390936e+06</td>\n", + " <td>4518.050219</td>\n", + " </tr>\n", + " <tr>\n", + " <th>8</th>\n", + " <td>139575.914815</td>\n", + " <td>3.390952e+06</td>\n", + " <td>3816.666542</td>\n", + " </tr>\n", + " <tr>\n", + " <th>9</th>\n", + " <td>139575.914815</td>\n", + " <td>3.390952e+06</td>\n", + " <td>3816.666542</td>\n", + " </tr>\n", + " <tr>\n", + " <th>10</th>\n", + " <td>139614.756296</td>\n", + " <td>3.390953e+06</td>\n", + " <td>3791.232717</td>\n", + " </tr>\n", + " <tr>\n", + " <th>11</th>\n", + " <td>139614.756296</td>\n", + " <td>3.390953e+06</td>\n", + " <td>3791.232717</td>\n", + " </tr>\n", + " <tr>\n", + " <th>12</th>\n", + " <td>139912.041374</td>\n", + " <td>3.390914e+06</td>\n", + " <td>3875.608660</td>\n", + " </tr>\n", + " <tr>\n", + " <th>13</th>\n", + " <td>139912.041374</td>\n", + " <td>3.390914e+06</td>\n", + " <td>3875.608660</td>\n", + " </tr>\n", + " <tr>\n", + " <th>14</th>\n", + " <td>139909.452033</td>\n", + " <td>3.390930e+06</td>\n", + " <td>3845.361327</td>\n", + " </tr>\n", + " <tr>\n", + " <th>15</th>\n", + " <td>139909.452033</td>\n", + " <td>3.390930e+06</td>\n", + " <td>3845.361327</td>\n", + " </tr>\n", + " <tr>\n", + " <th>16</th>\n", + " <td>139669.826849</td>\n", + " <td>3.391120e+06</td>\n", + " <td>3270.672620</td>\n", + " </tr>\n", + " <tr>\n", + " <th>17</th>\n", + " <td>139669.826849</td>\n", + " <td>3.391120e+06</td>\n", + " <td>3270.672620</td>\n", + " </tr>\n", + " <tr>\n", + " <th>18</th>\n", + " <td>139694.517017</td>\n", + " <td>3.391205e+06</td>\n", + " <td>3289.744506</td>\n", + " </tr>\n", + " <tr>\n", + " <th>19</th>\n", + " <td>139694.517017</td>\n", + " <td>3.391205e+06</td>\n", + " <td>3289.744506</td>\n", + " </tr>\n", + " <tr>\n", + " <th>20</th>\n", + " <td>139968.793338</td>\n", + " <td>3.391126e+06</td>\n", + " <td>3274.711397</td>\n", + " </tr>\n", + " <tr>\n", + " <th>21</th>\n", + " <td>139968.793338</td>\n", + " <td>3.391126e+06</td>\n", + " <td>3274.711397</td>\n", + " </tr>\n", + " <tr>\n", + " <th>22</th>\n", + " <td>139979.200780</td>\n", + " <td>3.391138e+06</td>\n", + " <td>3298.297228</td>\n", + " </tr>\n", + " <tr>\n", + " <th>23</th>\n", + " <td>139979.200780</td>\n", + " <td>3.391138e+06</td>\n", + " <td>3298.297228</td>\n", + " </tr>\n", + " <tr>\n", + " <th>24</th>\n", + " <td>139688.031217</td>\n", + " <td>3.391041e+06</td>\n", + " <td>4253.956077</td>\n", + " </tr>\n", + " <tr>\n", + " <th>25</th>\n", + " <td>139688.031217</td>\n", + " <td>3.391041e+06</td>\n", + " <td>4253.956077</td>\n", + " </tr>\n", + " <tr>\n", + " <th>26</th>\n", + " <td>139686.910823</td>\n", + " <td>3.391089e+06</td>\n", + " <td>4216.743792</td>\n", + " </tr>\n", + " <tr>\n", + " <th>27</th>\n", + " <td>139686.910823</td>\n", + " <td>3.391089e+06</td>\n", + " <td>4216.743792</td>\n", + " </tr>\n", + " <tr>\n", + " <th>28</th>\n", + " <td>139786.205284</td>\n", + " <td>3.390979e+06</td>\n", + " <td>3579.127600</td>\n", + " </tr>\n", + " <tr>\n", + " <th>29</th>\n", + " <td>139786.205284</td>\n", + " <td>3.390979e+06</td>\n", + " <td>3579.127600</td>\n", + " </tr>\n", + " <tr>\n", + " <th>30</th>\n", + " <td>139785.010997</td>\n", + " <td>3.391002e+06</td>\n", + " <td>3546.549796</td>\n", + " </tr>\n", + " <tr>\n", + " <th>31</th>\n", + " <td>139785.010997</td>\n", + " <td>3.391002e+06</td>\n", + " <td>3546.549796</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " lat_Y_North long_X_East ht\n", + "0 139525.230749 3.390974e+06 4506.496945\n", + "1 139525.230749 3.390974e+06 4506.496945\n", + "2 139489.278045 3.390969e+06 4516.454802\n", + "3 139489.278045 3.390969e+06 4516.454802\n", + "4 139823.489797 3.390990e+06 4536.274914\n", + "5 139823.489797 3.390990e+06 4536.274914\n", + "6 139772.738004 3.390936e+06 4518.050219\n", + "7 139772.738004 3.390936e+06 4518.050219\n", + "8 139575.914815 3.390952e+06 3816.666542\n", + "9 139575.914815 3.390952e+06 3816.666542\n", + "10 139614.756296 3.390953e+06 3791.232717\n", + "11 139614.756296 3.390953e+06 3791.232717\n", + "12 139912.041374 3.390914e+06 3875.608660\n", + "13 139912.041374 3.390914e+06 3875.608660\n", + "14 139909.452033 3.390930e+06 3845.361327\n", + "15 139909.452033 3.390930e+06 3845.361327\n", + "16 139669.826849 3.391120e+06 3270.672620\n", + "17 139669.826849 3.391120e+06 3270.672620\n", + "18 139694.517017 3.391205e+06 3289.744506\n", + "19 139694.517017 3.391205e+06 3289.744506\n", + "20 139968.793338 3.391126e+06 3274.711397\n", + "21 139968.793338 3.391126e+06 3274.711397\n", + "22 139979.200780 3.391138e+06 3298.297228\n", + "23 139979.200780 3.391138e+06 3298.297228\n", + "24 139688.031217 3.391041e+06 4253.956077\n", + "25 139688.031217 3.391041e+06 4253.956077\n", + "26 139686.910823 3.391089e+06 4216.743792\n", + "27 139686.910823 3.391089e+06 4216.743792\n", + "28 139786.205284 3.390979e+06 3579.127600\n", + "29 139786.205284 3.390979e+06 3579.127600\n", + "30 139785.010997 3.391002e+06 3546.549796\n", + "31 139785.010997 3.391002e+06 3546.549796" + ] + }, + "execution_count": 129, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "return_df[['lat_Y_North', 'long_X_East', 'ht']]" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>lat_Y_North</th>\n", + " <th>long_X_East</th>\n", + " <th>ht</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>0.095708</td>\n", + " <td>2.356167</td>\n", + " <td>-2342.889214</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>0.095708</td>\n", + " <td>2.356167</td>\n", + " <td>-2342.889214</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>0.095920</td>\n", + " <td>2.355564</td>\n", + " <td>-2349.638414</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>0.095920</td>\n", + " <td>2.355564</td>\n", + " <td>-2349.638414</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>0.096339</td>\n", + " <td>2.361186</td>\n", + " <td>-2314.316425</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5</th>\n", + " <td>0.096339</td>\n", + " <td>2.361186</td>\n", + " <td>-2314.316425</td>\n", + " </tr>\n", + " <tr>\n", + " <th>6</th>\n", + " <td>0.095954</td>\n", + " <td>2.360368</td>\n", + " <td>-2370.502882</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7</th>\n", + " <td>0.095954</td>\n", + " <td>2.360368</td>\n", + " <td>-2370.502882</td>\n", + " </tr>\n", + " <tr>\n", + " <th>8</th>\n", + " <td>0.081058</td>\n", + " <td>2.357037</td>\n", + " <td>-2363.989968</td>\n", + " </tr>\n", + " <tr>\n", + " <th>9</th>\n", + " <td>0.081058</td>\n", + " <td>2.357037</td>\n", + " <td>-2363.989968</td>\n", + " </tr>\n", + " <tr>\n", + " <th>10</th>\n", + " <td>0.080518</td>\n", + " <td>2.357691</td>\n", + " <td>-2360.922571</td>\n", + " </tr>\n", + " <tr>\n", + " <th>11</th>\n", + " <td>0.080518</td>\n", + " <td>2.357691</td>\n", + " <td>-2360.922571</td>\n", + " </tr>\n", + " <tr>\n", + " <th>12</th>\n", + " <td>0.082311</td>\n", + " <td>2.362733</td>\n", + " <td>-2388.123298</td>\n", + " </tr>\n", + " <tr>\n", + " <th>13</th>\n", + " <td>0.082311</td>\n", + " <td>2.362733</td>\n", + " <td>-2388.123298</td>\n", + " </tr>\n", + " <tr>\n", + " <th>14</th>\n", + " <td>0.081668</td>\n", + " <td>2.362678</td>\n", + " <td>-2371.973499</td>\n", + " </tr>\n", + " <tr>\n", + " <th>15</th>\n", + " <td>0.081668</td>\n", + " <td>2.362678</td>\n", + " <td>-2371.973499</td>\n", + " </tr>\n", + " <tr>\n", + " <th>16</th>\n", + " <td>0.069458</td>\n", + " <td>2.358505</td>\n", + " <td>-2193.309629</td>\n", + " </tr>\n", + " <tr>\n", + " <th>17</th>\n", + " <td>0.069458</td>\n", + " <td>2.358505</td>\n", + " <td>-2193.309629</td>\n", + " </tr>\n", + " <tr>\n", + " <th>18</th>\n", + " <td>0.069861</td>\n", + " <td>2.358862</td>\n", + " <td>-2106.769773</td>\n", + " </tr>\n", + " <tr>\n", + " <th>19</th>\n", + " <td>0.069861</td>\n", + " <td>2.358862</td>\n", + " <td>-2106.769773</td>\n", + " </tr>\n", + " <tr>\n", + " <th>20</th>\n", + " <td>0.069543</td>\n", + " <td>2.363543</td>\n", + " <td>-2174.971745</td>\n", + " </tr>\n", + " <tr>\n", + " <th>21</th>\n", + " <td>0.069543</td>\n", + " <td>2.363543</td>\n", + " <td>-2174.971745</td>\n", + " </tr>\n", + " <tr>\n", + " <th>22</th>\n", + " <td>0.070044</td>\n", + " <td>2.363710</td>\n", + " <td>-2162.103231</td>\n", + " </tr>\n", + " <tr>\n", + " <th>23</th>\n", + " <td>0.070044</td>\n", + " <td>2.363710</td>\n", + " <td>-2162.103231</td>\n", + " </tr>\n", + " <tr>\n", + " <th>24</th>\n", + " <td>0.090342</td>\n", + " <td>2.358866</td>\n", + " <td>-2269.610862</td>\n", + " </tr>\n", + " <tr>\n", + " <th>25</th>\n", + " <td>0.090342</td>\n", + " <td>2.358866</td>\n", + " <td>-2269.610862</td>\n", + " </tr>\n", + " <tr>\n", + " <th>26</th>\n", + " <td>0.089550</td>\n", + " <td>2.358814</td>\n", + " <td>-2222.328983</td>\n", + " </tr>\n", + " <tr>\n", + " <th>27</th>\n", + " <td>0.089550</td>\n", + " <td>2.358814</td>\n", + " <td>-2222.328983</td>\n", + " </tr>\n", + " <tr>\n", + " <th>28</th>\n", + " <td>0.076012</td>\n", + " <td>2.360565</td>\n", + " <td>-2328.281125</td>\n", + " </tr>\n", + " <tr>\n", + " <th>29</th>\n", + " <td>0.076012</td>\n", + " <td>2.360565</td>\n", + " <td>-2328.281125</td>\n", + " </tr>\n", + " <tr>\n", + " <th>30</th>\n", + " <td>0.075320</td>\n", + " <td>2.360529</td>\n", + " <td>-2305.362047</td>\n", + " </tr>\n", + " <tr>\n", + " <th>31</th>\n", + " <td>0.075320</td>\n", + " <td>2.360529</td>\n", + " <td>-2305.362047</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " lat_Y_North long_X_East ht\n", + "0 0.095708 2.356167 -2342.889214\n", + "1 0.095708 2.356167 -2342.889214\n", + "2 0.095920 2.355564 -2349.638414\n", + "3 0.095920 2.355564 -2349.638414\n", + "4 0.096339 2.361186 -2314.316425\n", + "5 0.096339 2.361186 -2314.316425\n", + "6 0.095954 2.360368 -2370.502882\n", + "7 0.095954 2.360368 -2370.502882\n", + "8 0.081058 2.357037 -2363.989968\n", + "9 0.081058 2.357037 -2363.989968\n", + "10 0.080518 2.357691 -2360.922571\n", + "11 0.080518 2.357691 -2360.922571\n", + "12 0.082311 2.362733 -2388.123298\n", + "13 0.082311 2.362733 -2388.123298\n", + "14 0.081668 2.362678 -2371.973499\n", + "15 0.081668 2.362678 -2371.973499\n", + "16 0.069458 2.358505 -2193.309629\n", + "17 0.069458 2.358505 -2193.309629\n", + "18 0.069861 2.358862 -2106.769773\n", + "19 0.069861 2.358862 -2106.769773\n", + "20 0.069543 2.363543 -2174.971745\n", + "21 0.069543 2.363543 -2174.971745\n", + "22 0.070044 2.363710 -2162.103231\n", + "23 0.070044 2.363710 -2162.103231\n", + "24 0.090342 2.358866 -2269.610862\n", + "25 0.090342 2.358866 -2269.610862\n", + "26 0.089550 2.358814 -2222.328983\n", + "27 0.089550 2.358814 -2222.328983\n", + "28 0.076012 2.360565 -2328.281125\n", + "29 0.076012 2.360565 -2328.281125\n", + "30 0.075320 2.360529 -2305.362047\n", + "31 0.075320 2.360529 -2305.362047" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "socet_df[['lat_Y_North', 'long_X_East', 'ht']]" ] }, { diff --git a/plio/io/io_controlnetwork.py b/plio/io/io_controlnetwork.py index a52d580..cebe7e6 100644 --- a/plio/io/io_controlnetwork.py +++ b/plio/io/io_controlnetwork.py @@ -187,6 +187,7 @@ class IsisStore(object): header_bytes = find_in_dict(pvl_header, 'HeaderBytes') point_start_byte = find_in_dict(pvl_header, 'PointsStartByte') version = find_in_dict(pvl_header, 'Version') + if version == 2: point_attrs = [i for i in cnf._CONTROLPOINTFILEENTRYV0002.fields_by_name if i != 'measures'] measure_attrs = [i for i in cnf._CONTROLPOINTFILEENTRYV0002_MEASURE.fields_by_name] -- GitLab