diff --git a/appveyor.yml b/appveyor.yml
index c3ad46ae265e837379b7870c58c43f0c54dbec56..f095e330aac99385ab6f916b06dabe869824815b 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -4,15 +4,30 @@ branches:
 
 version: '0.1.0.{build}'
 
+platform:
+  - x64
+  - x86
+
 environment:
   matrix:
     - PYTHON: "C:\\Miniconda35-x64\\Scripts\\activate.bat"
       PYTHON_VERSION: 3.5
     - PYTHON: "C:\\Miniconda36-x64\\Scripts\\activate.bat"
       PYTHON_VERSION: 3.6
+    - PYTHON: "C:\\Miniconda35\\Scripts\\activate.bat"
+      PYTHON_VERSION: 3.5
+    - PYTHON: "C:\\Miniconda36\\Scripts\\activate.bat"
 
-platform:
-  - x64
+matrix:
+  exclude:
+    - PYTHON: "C:\\Miniconda35-x64\\Scripts\\activate.bat"
+      platform: x86
+    - PYTHON: "C:\\Miniconda36-x64\\Scripts\\activate.bat"
+      platform: x86
+    - PYTHON: "C:\\Miniconda35\\Scripts\\activate.bat"
+      platform: x64
+    - PYTHON: "C:\\Miniconda36\\Scripts\\activate.bat"
+      platform: x64
 
 configuration:
   - Release
@@ -21,19 +36,19 @@ install:
   - cmd: call %PYTHON%
   - cmd: conda config --set always_yes yes --set changeps1 no
   - cmd: conda update -q conda
-  - cmd: conda install conda-build anaconda-client 
+  - cmd: conda install conda-build anaconda-client
   - cmd: conda create -q -n test_env python=%PYTHON_VERSION%
   - cmd: activate test_env
   - cmd: conda config --add channels conda-forge
   - cmd: conda install -c conda-forge pvl protobuf gdal numpy pandas sqlalchemy pyyaml networkx affine h5py scipy
-  - cmd: conda install pytest-cov
+  - cmd: conda install -c conda-forge pytest pytest-cov
   # https://pythonhosted.org/CodeChat/appveyor.yml.html
   - cmd: python -m pip install -U pip
   - cmd: python -m easy_install -U setuptools
 
 build_script:
   - cmd: python setup.py install
-  
+
 test_script:
   - cmd: pytest plio/
 
diff --git a/plio/examples/SocetGXP/out_InSightE08_XW.gpf b/plio/examples/SocetGXP/out_InSightE08_XW.gpf
new file mode 100644
index 0000000000000000000000000000000000000000..2e9cc29e23cefd2e2bdfd0c90f460a519def25fb
--- /dev/null
+++ b/plio/examples/SocetGXP/out_InSightE08_XW.gpf
@@ -0,0 +1,803 @@
+GROUND POINT FILE
+160
+point_id,stat,known,lat_Y_North,long_X_East,ht,sig(3),res(3)
+1 1 1
+0.08538133869186999         2.38013146162178         -2697.2374469465
+0.0 0.0 1.707214
+16.348041000000002 -13.917623 -0.151001
+
+2 1 1
+0.08508542650082002         2.3808135855714703         -2702.0
+0.0 0.0 1.0
+15.983285999999998 -16.869508 0.103341
+
+3 1 1
+0.08626480095809         2.3870838392611         -2714.16003756809
+0.0 0.0 3.828854
+12.831839 -34.360639 -2.2058459999999998
+
+4 1 1
+0.08568717143105001         2.38669347579564         -2720.3873574332
+0.0 0.0 2.06082
+13.102864 -34.063651 0.334757
+
+5 1 1
+0.08077770259688         2.3838894311434102         -2692.00307359153
+0.0 0.0 2.768034
+15.876249 -23.172029000000002 -0.461974
+
+6 1 1
+0.08125893072767999         2.38445721412659         -2691.71435885471
+0.0 0.0 1.707214
+15.410701999999999 -25.944881 0.225806
+
+7 1 1
+0.07483240230363         2.3814261265746297         -2668.18002134863
+0.0 0.0 1.353607
+17.789075 -15.211119 0.087284
+
+8 1 1
+0.07443515640509         2.38212146862         -2664.7747769489906
+0.0 0.0 1.353607
+17.273365 -18.001185999999997 0.323137
+
+9 1 1
+0.07495055817805         2.3884619283655804         -2700.63760007568
+0.0 0.0 1.707214
+14.324904 -35.58345 -0.288152
+
+10 1 1
+0.07519371955078         2.38757259631679         -2694.18565786937
+0.0 0.0 1.353607
+14.771196 -33.010921 -0.08018600000000001
+
+11 1 1
+0.07010083277386         2.3849213916922003         -2668.62598527203
+0.0 0.0 2.414427
+15.933368 -22.780039000000002 -0.579354
+
+12 1 1
+0.06957324833251         2.3853276647149904         -2670.6045801106907
+0.0 0.0 1.707214
+15.773589999999999 -23.804103 -0.330565
+
+13 1 1
+0.06563711957712         2.3825780897637503         -2652.6543697460706
+0.0 0.0 1.707214
+16.419539 -15.919385 0.250239
+
+14 1 1
+0.0664454678652         2.38304264645782         -2658.85707321604
+0.0 0.0 1.353607
+16.313481 -17.239438 0.11514
+
+15 1 1
+0.06649272348884999         2.38951682947442         -2692.0
+0.0 0.0 1.0
+12.517966 -36.540841 -0.063341
+
+16 1 1
+0.06706972009678         2.38873585114457         -2692.0
+0.0 0.0 1.0
+13.078013 -34.602107000000004 0.027464999999999996
+
+D18_034427_1842_XN_04N223W_28 1 0
+0.06642563152224999         2.38304560848777         -2652.7379931980295
+0.0 0.0 0.0
+16.347926 -16.786457000000002 202.26425
+
+D18_034427_1842_XN_04N223W_29 1 0
+0.06701245416812         2.38319472448874         -2655.8936787285143
+0.0 0.0 0.0
+16.345939 -17.39285 202.351222
+
+D18_034427_1842_XN_04N223W_30 1 0
+0.06714286922356         2.38459540070318         -2666.2181217736006
+0.0 0.0 0.0
+15.56071 -21.543285 206.451357
+
+D18_034427_1842_XN_04N223W_31 1 0
+0.06699131624733         2.38537597452635         -2667.917382767097
+0.0 0.0 0.0
+15.129148999999998 -23.909211 208.666933
+
+D18_034427_1842_XN_04N223W_32 1 0
+0.0668897961665         2.38667024343657         -2676.4753153168867
+0.0 0.0 0.0
+14.271489 -27.786033000000003 212.56778599999998
+
+D18_034427_1842_XN_04N223W_33 1 0
+0.06725333266900001         2.3873695967267903         -2680.2541795701445
+0.0 0.0 0.0
+13.938915 -30.138825 214.17239500000002
+
+D18_034427_1842_XN_04N223W_34 1 0
+0.06734814823241         2.38802769571932         -2689.8761881734445
+0.0 0.0 0.0
+13.586741 -32.256271999999996 215.92250499999997
+
+D18_034427_1842_XN_04N223W_37 1 0
+0.06827861281198999         2.38281829913636         -2654.651058159914
+0.0 0.0 0.0
+16.734595000000002 -16.750685 200.728446
+
+D18_034427_1842_XN_04N223W_38 1 0
+0.06785042142429         2.38358220068826         -2655.152592163299
+0.0 0.0 0.0
+16.371177 -18.807863 203.084628
+
+D18_034427_1842_XN_04N223W_39 1 0
+0.06848531606765         2.3842691958979         -2665.4967618571454
+0.0 0.0 0.0
+16.028295 -21.041457 204.98470600000002
+
+D18_034427_1842_XN_04N223W_40 1 0
+0.06835459149418         2.38523660668123         -2670.27617625958
+0.0 0.0 0.0
+15.360716 -23.872982999999998 207.75411599999998
+
+D18_034427_1842_XN_04N223W_41 1 0
+0.06848765704014         2.3864536869340096         -2675.9421768906273
+0.0 0.0 0.0
+14.686125 -27.652577 211.133186
+
+D18_034427_1842_XN_04N223W_42 1 0
+0.06853528389166999         2.3871649779555         -2677.442308160816
+0.0 0.0 0.0
+14.326697 -29.917028000000002 213.039612
+
+D18_034427_1842_XN_04N223W_43 1 0
+0.06812356483517999         2.3881815525258796         -2687.8001243238173
+0.0 0.0 0.0
+13.665585 -32.992428000000004 215.977587
+
+D18_034427_1842_XN_04N223W_46 1 0
+0.06910953643377         2.38271848114252         -2656.715912874613
+0.0 0.0 0.0
+17.002323 -16.719943 199.939328
+
+D18_034427_1842_XN_04N223W_47 1 0
+0.06912052519181         2.38317372399279         -2659.6259584890695
+0.0 0.0 0.0
+16.7234 -18.02816 201.397423
+
+D18_034427_1842_XN_04N223W_48 1 0
+0.06921287603448         2.38370782097352         -2662.599411605864
+0.0 0.0 0.0
+16.459808 -19.611708 202.954937
+
+D18_034427_1842_XN_04N223W_49 1 0
+0.06941422430034         2.38536468483276         -2676.429047836165
+0.0 0.0 0.0
+15.563282000000001 -24.595201 207.76693799999998
+
+D18_034427_1842_XN_04N223W_50 1 0
+0.06972642994167999         2.38581920841575         -2685.039536273431
+0.0 0.0 0.0
+15.397463 -26.084508 208.858854
+
+D18_034427_1842_XN_04N223W_51 1 0
+0.06934741459200999         2.38710391506758         -2684.774432824858
+0.0 0.0 0.0
+14.491313 -29.952594 212.70436400000003
+
+D18_034427_1842_XN_04N223W_52 1 0
+0.06942432539212         2.38733818383773         -2685.8420333989134
+0.0 0.0 0.0
+14.360056 -30.699132000000002 213.376721
+
+D18_034427_1842_XN_04N223W_55 1 0
+0.07042311025238         2.38254966475176         -2652.3577409452973
+0.0 0.0 0.0
+17.241636 -16.68754 198.783423
+
+D18_034427_1842_XN_04N223W_56 1 0
+0.0710517242282         2.38321132895148         -2652.7501214722947
+0.0 0.0 0.0
+16.922747 -18.710957999999998 200.57691200000002
+
+D18_034427_1842_XN_04N223W_57 1 0
+0.07056080973178999         2.3835543556055803         -2660.4572360640773
+0.0 0.0 0.0
+16.751189 -19.618982 201.807268
+
+D18_034427_1842_XN_04N223W_58 1 0
+0.07096187128716999         2.38487692065399         -2677.687606349641
+0.0 0.0 0.0
+16.047975 -23.608642 205.74328500000001
+
+D18_034427_1842_XN_04N223W_59 1 0
+0.07108077399242         2.3859380288014         -2675.2442799303685
+0.0 0.0 0.0
+15.485341 -26.866797 208.752177
+
+D18_034427_1842_XN_04N223W_60 1 0
+0.07115124246621         2.38657444101636         -2682.8816229984386
+0.0 0.0 0.0
+15.132392000000001 -28.854257 210.517027
+
+D18_034427_1842_XN_04N223W_61 1 0
+0.07077295848888         2.38786580634713         -2696.8819496211686
+0.0 0.0 0.0
+14.357418 -32.808412 214.19962
+
+D18_034427_1842_XN_04N223W_64 1 0
+0.07148971840912         2.38247259758759         -2620.89438652133
+0.0 0.0 0.0
+17.305942 -16.7511 198.286489
+
+D18_034427_1842_XN_04N223W_65 1 0
+0.07202055149403         2.38255638944198         -2615.5720527991343
+0.0 0.0 0.0
+17.268113 -17.157173 198.467782
+
+D18_034427_1842_XN_04N223W_66 1 0
+0.07216060168744001         2.3838290740342596         -2656.665119201533
+0.0 0.0 0.0
+16.631242 -20.879829 202.222367
+
+D18_034427_1842_XN_04N223W_67 1 0
+0.07232352446967999         2.38470773377977         -2668.9659520065584
+0.0 0.0 0.0
+16.209736 -23.514046 204.924653
+
+D18_034427_1842_XN_04N223W_68 1 0
+0.07269790506316001         2.38565779012721         -2678.9349270785033
+0.0 0.0 0.0
+15.710246 -26.538726 207.417412
+
+D18_034427_1842_XN_04N223W_69 1 0
+0.07199351427375         2.3865242686286203         -2678.942698191817
+0.0 0.0 0.0
+15.232723000000002 -28.952780999999998 210.11350699999997
+
+D18_034427_1842_XN_04N223W_70 1 0
+0.07287457185955999         2.38740913225819         -2689.383386504829
+0.0 0.0 0.0
+14.790548999999999 -32.056628 212.276935
+
+D18_034427_1842_XN_04N223W_73 1 0
+0.07282103502438         2.38224105347397         -2658.9086849075047
+0.0 0.0 0.0
+17.508243 -16.49175 197.259326
+
+D18_034427_1842_XN_04N223W_74 1 0
+0.0736051230051         2.3823626596671         -2653.237004469596
+0.0 0.0 0.0
+17.380384 -17.141116 197.206208
+
+D18_034427_1842_XN_04N223W_75 1 0
+0.07379170560024001         2.38384099669321         -2672.8644993645244
+0.0 0.0 0.0
+16.64967 -21.459742000000002 201.683498
+
+D18_034427_1842_XN_04N223W_76 1 0
+0.07382062370162         2.38409005492065         -2675.049868637645
+0.0 0.0 0.0
+16.539460000000002 -22.201383 202.42708100000002
+
+D18_034427_1842_XN_04N223W_77 1 0
+0.07373556771058         2.38535831527985         -2681.031323697884
+0.0 0.0 0.0
+15.794412 -25.889234 206.354471
+
+D18_034427_1842_XN_04N223W_78 1 0
+0.07413489106961998         2.38652925036891         -2689.011926074597
+0.0 0.0 0.0
+15.311494 -29.705488 209.40125700000002
+
+D18_034427_1842_XN_04N223W_79 1 0
+0.07424012184321001         2.38724097889804         -2692.0540176576637
+0.0 0.0 0.0
+14.971244 -31.978009000000004 211.354569
+
+D18_034427_1842_XN_04N223W_82 1 0
+0.07465980169223         2.38199709172594         -2660.382836778674
+0.0 0.0 0.0
+17.458551999999997 -16.379278 195.823681
+
+D18_034427_1842_XN_04N223W_83 1 0
+0.07480666965683999         2.38294587119221         -2662.107046549235
+0.0 0.0 0.0
+17.012866 -19.120053 198.73936
+
+D18_034427_1842_XN_04N223W_84 1 0
+0.07486208263203999         2.3834573505507         -2665.6739994721297
+0.0 0.0 0.0
+16.754496 -20.610599 200.295491
+
+D18_034427_1842_XN_04N223W_85 1 0
+0.07524574930831         2.38443916455468         -3067.0699559090967
+0.0 0.0 0.0
+16.388751 -23.622301999999998 203.165592
+
+D18_034427_1842_XN_04N223W_86 1 0
+0.07532253697328001         2.38497620501387         -2562.067272943178
+0.0 0.0 0.0
+16.118722 -25.275464000000003 204.691139
+
+D18_034427_1842_XN_04N223W_87 1 0
+0.07541028942         2.38609511438821         -2689.0762846417138
+0.0 0.0 0.0
+15.566456 -28.711112 207.924363
+
+D18_034427_1842_XN_04N223W_88 1 0
+0.07502083927259         2.38712713096084         -2686.0309107394964
+0.0 0.0 0.0
+14.974822 -31.788203999999997 210.917769
+
+D18_034427_1842_XN_04N223W_91 1 0
+0.07544271458467         2.38190763446656         -2663.1885343123454
+0.0 0.0 0.0
+17.530485000000002 -16.373877 195.285223
+
+D18_034427_1842_XN_04N223W_92 1 0
+0.07609298537421001         2.38284082344542         -2669.991112381614
+0.0 0.0 0.0
+16.981026 -19.17163 198.221173
+
+D18_034427_1842_XN_04N223W_93 1 0
+0.07569262450294999         2.3835948505035898         -2664.363012905885
+0.0 0.0 0.0
+16.725125 -21.260144 200.48741
+
+D18_034427_1842_XN_04N223W_94 1 0
+0.07568183382181         2.38386104647574         -2638.070608008627
+0.0 0.0 0.0
+16.59471 -22.044769 201.26955900000002
+
+D18_034427_1842_XN_04N223W_95 1 0
+0.07643679545117         2.3855276120427797         -2690.565595600588
+0.0 0.0 0.0
+15.675845 -27.23565 206.195255
+
+D18_034427_1842_XN_04N223W_96 1 0
+0.07623428585877999         2.3860131459160296         -2694.2605774758485
+0.0 0.0 0.0
+15.544069 -28.698193 207.536093
+
+D18_034427_1842_XN_04N223W_97 1 0
+0.07631737925585001         2.3869597835395697         -2686.270688960265
+0.0 0.0 0.0
+15.10268 -31.678234000000003 210.172179
+
+D18_034427_1842_XN_04N223W_100 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D18_034427_1842_XN_04N223W_101 1 0
+0.07710648816635         2.38244666710461         -2674.757113262216
+0.0 0.0 0.0
+17.175873 -18.333013 196.741651
+
+D18_034427_1842_XN_04N223W_102 1 0
+0.07688652201011001         2.38274290176313         -2677.261035660838
+0.0 0.0 0.0
+17.020941 -19.135099 197.73838500000002
+
+D18_034427_1842_XN_04N223W_103 1 0
+0.07698732512291999         2.38368560312227         -2672.8058123786263
+0.0 0.0 0.0
+16.564778 -21.904031 200.604555
+
+D18_034427_1842_XN_04N223W_104 1 0
+0.07725781409317         2.38541132577514         -2678.9729946217353
+0.0 0.0 0.0
+15.715968 -27.142064 205.653107
+
+D18_034427_1842_XN_04N223W_105 1 0
+0.07754700778458999         2.38608822128795         -2685.902288063236
+0.0 0.0 0.0
+15.399054999999999 -29.288173999999998 207.53491599999998
+
+D18_034427_1842_XN_04N223W_106 1 0
+0.07765166471801         2.3868567142168797         -2692.2502406341946
+0.0 0.0 0.0
+15.016573000000001 -31.7198 209.68493999999998
+
+D18_034427_1842_XN_04N223W_109 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D18_034427_1842_XN_04N223W_110 1 0
+0.07825589007503         2.3814746987964903         -2682.0369870914246
+0.0 0.0 0.0
+17.451342 -15.97556 193.541643
+
+D18_034427_1842_XN_04N223W_111 1 0
+0.0777909671343         2.3821813449905         -2684.2976023432325
+0.0 0.0 0.0
+17.201581 -17.824538 195.72653799999998
+
+D18_034427_1842_XN_04N223W_112 1 0
+0.07895148846825999         2.3838995301463903         -2680.283464869887
+0.0 0.0 0.0
+16.217541 -23.119061 200.94688100000002
+
+D18_034427_1842_XN_04N223W_113 1 0
+0.07880061008219         2.38515205025766         -2681.0689323457127
+0.0 0.0 0.0
+15.663326000000001 -26.827882000000002 204.67450300000002
+
+D18_034427_1842_XN_04N223W_114 1 0
+0.07912751338502         2.38567210517307         -2680.5241761832826
+0.0 0.0 0.0
+15.318241 -28.522911999999998 206.122973
+
+D18_034427_1842_XN_04N223W_115 1 0
+0.07923871661002001         2.3866391259865094         -2677.9957990335997
+0.0 0.0 0.0
+14.857852 -31.566578999999997 208.84844099999998
+
+D18_034427_1842_XN_04N223W_118 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D18_034427_1842_XN_04N223W_119 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D18_034427_1842_XN_04N223W_120 1 0
+0.07909884220494999         2.38200418824725         -2690.5838255001736
+0.0 0.0 0.0
+17.126492000000002 -17.662860000000002 195.032487
+
+D18_034427_1842_XN_04N223W_121 1 0
+0.07958915360864001         2.38399498135818         -2686.9644558180007
+0.0 0.0 0.0
+16.080707 -23.583734 201.09865
+
+D18_034427_1842_XN_04N223W_122 1 0
+0.08009889425597999         2.38481478771522         -2679.8546293676136
+0.0 0.0 0.0
+15.554520000000002 -26.148241 203.564889
+
+D18_034427_1842_XN_04N223W_123 1 0
+0.08046910387407001         2.38552789985923         -2672.557670133197
+0.0 0.0 0.0
+15.188120999999999 -28.462495 205.52240700000002
+
+D18_034427_1842_XN_04N223W_124 1 0
+0.08061159131957         2.3864289699855         -2675.5407470919668
+0.0 0.0 0.0
+14.758322 -31.292753 208.080307
+
+D18_034427_1842_XN_04N223W_127 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D18_034427_1842_XN_04N223W_128 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D18_034427_1842_XN_04N223W_129 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D18_034427_1842_XN_04N223W_130 1 0
+0.0807587589976         2.38374817253972         -2692.5341627782573
+0.0 0.0 0.0
+15.903652 -23.15444 200.29195900000002
+
+D18_034427_1842_XN_04N223W_131 1 0
+0.08141052509445         2.3846218021322096         -2690.646176145482
+0.0 0.0 0.0
+15.367770000000002 -25.971438 202.863648
+
+D18_034427_1842_XN_04N223W_132 1 0
+0.0810025822268         2.38538947599592         -2678.6318727962107
+0.0 0.0 0.0
+15.170943 -28.178753999999998 205.07906599999998
+
+D18_034427_1842_XN_04N223W_133 1 0
+0.08107923559935001         2.3863856082821         -2672.625395576906
+0.0 0.0 0.0
+14.625275 -31.282871999999998 207.987084
+
+D18_034427_1842_XN_04N223W_136 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D18_034427_1842_XN_04N223W_137 1 0
+0.08263285059475         2.38133461572435         -2683.0003819636645
+0.0 0.0 0.0
+16.588435999999998 -16.809387 192.530755
+
+D18_034427_1842_XN_04N223W_138 1 0
+0.08279974960992999         2.3825064680589705         -2690.3086972013957
+0.0 0.0 0.0
+16.003621 -20.154424 196.259151
+
+D18_034427_1842_XN_04N223W_139 1 0
+0.08261031901177         2.3835085239362406         -2696.6597455666833
+0.0 0.0 0.0
+15.646648999999998 -23.032201 199.362676
+
+D18_034427_1842_XN_04N223W_140 1 0
+0.08251437752552         2.3847056707278         -2690.2849407961357
+0.0 0.0 0.0
+15.117034 -26.57193 203.05957800000002
+
+D18_034427_1842_XN_04N223W_141 1 0
+0.08252178672164         2.3849717266292303         -2687.889644801681
+0.0 0.0 0.0
+14.987132999999998 -27.369891 203.871116
+
+D18_034427_1842_XN_04N223W_142 1 0
+0.08273138568844         2.38618775838929         -2677.185140199846
+0.0 0.0 0.0
+14.37331 -31.187855 207.33795600000002
+
+D18_034427_1842_XN_04N223W_145 1 0
+0.08314384168538         2.38103274708381         -2675.8459256381375
+0.0 0.0 0.0
+16.548911999999998 -16.154316 191.48131
+
+D18_034427_1842_XN_04N223W_146 1 0
+0.08317744168997         2.3812028045342797         -2677.1145496460754
+0.0 0.0 0.0
+16.473178 -16.631674 192.031276
+
+D18_034427_1842_XN_04N223W_147 1 0
+0.08412341655091         2.3823527317424         -2694.7548330566738
+0.0 0.0 0.0
+15.647117999999999 -20.139863000000002 195.774669
+
+D18_034427_1842_XN_04N223W_148 1 0
+0.08396046283667         2.38332546147269         -2703.6142848311583
+0.0 0.0 0.0
+15.352435 -22.811291 198.892823
+
+D18_034427_1842_XN_04N223W_149 1 0
+0.08382969551064         2.3845423499065603         -2700.1447135786443
+0.0 0.0 0.0
+14.804625 -26.475214 202.404746
+
+D18_034427_1842_XN_04N223W_150 1 0
+0.08415135552261001         2.38500847163554         -2682.707299494345
+0.0 0.0 0.0
+14.501748000000001 -27.899921999999997 203.943382
+
+D18_034427_1842_XN_04N223W_151 1 0
+0.08420659528157001         2.38557536272079         -2709.074688761304
+0.0 0.0 0.0
+14.19581 -29.662759 205.593161
+
+D18_034427_1842_XN_04N223W_154 1 0
+0.08445366128885001         2.38086053908945         -2693.5493187345555
+0.0 0.0 0.0
+16.318131 -16.01231 190.99998200000002
+
+D18_034427_1842_XN_04N223W_155 1 0
+0.08446746372827         2.38108913070666         -2694.488567373283
+0.0 0.0 0.0
+16.202373 -16.637541 191.756412
+
+D18_034427_1842_XN_04N223W_156 1 0
+0.08516972192796002         2.3822109242128597         -2711.8555271208647
+0.0 0.0 0.0
+15.437729000000001 -20.014731 195.299337
+
+D18_034427_1842_XN_04N223W_157 1 0
+0.08531133572734         2.38318096403792         -2714.270351478282
+0.0 0.0 0.0
+14.951564999999999 -22.858547 198.323136
+
+D18_034427_1842_XN_04N223W_158 1 0
+0.08487854784258998         2.3844528838834504         -2715.6725443945274
+0.0 0.0 0.0
+14.556977 -26.474738000000002 202.239417
+
+D18_034427_1842_XN_04N223W_159 1 0
+0.08495335374929999         2.38469780263608         -2716.062106547546
+0.0 0.0 0.0
+14.428042000000001 -27.25546 202.936374
+
+D18_034427_1842_XN_04N223W_160 1 0
+0.08508087148994001         2.38571223426977         -2717.83392672337
+0.0 0.0 0.0
+13.891814000000002 -30.403139000000003 205.89565100000002
+
+D17_033939_1843_XN_04N223W_4 1 0
+0.06625014491544         2.3845841181489797         -2660.090675836453
+0.0 0.0 0.0
+15.424957000000001 -21.243929 206.8327
+
+D17_033939_1843_XN_04N223W_5 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_9 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_13 1 0
+0.06914475802492         2.38849791571965         -2691.9104235633968
+0.0 0.0 0.0
+13.677446 -34.329995000000004 216.544848
+
+D17_033939_1843_XN_04N223W_20 1 0
+0.07092973369266001         2.3876529657743504         -2692.5617023619434
+0.0 0.0 0.0
+14.425557999999999 -32.17475 213.546801
+
+D17_033939_1843_XN_04N223W_21 1 0
+0.07124567527532001         2.3879127853347404         -2698.292857413034
+0.0 0.0 0.0
+14.314792 -33.073778000000004 214.155417
+
+D17_033939_1843_XN_04N223W_25 1 0
+0.07208759676714001         2.3881288650845898         -2688.160938871417
+0.0 0.0 0.0
+14.385124 -34.098183 214.372349
+
+D17_033939_1843_XN_04N223W_29 1 0
+0.07311197710963001         2.38369244257928         -2669.107756395676
+0.0 0.0 0.0
+16.732203 -20.749382 201.564945
+
+D17_033939_1843_XN_04N223W_30 1 0
+0.0733029335397         2.3849744268966804         -2679.8137082315743
+0.0 0.0 0.0
+16.086261999999998 -24.61359 205.332402
+
+D17_033939_1843_XN_04N223W_31 1 0
+0.07330334944136001         2.3873609578731902         -2698.739011087669
+0.0 0.0 0.0
+14.742326 -32.001938 212.12347200000002
+
+D17_033939_1843_XN_04N223W_32 1 0
+0.07338955731292         2.38770126601367         -2689.596935094261
+0.0 0.0 0.0
+14.587051999999998 -33.119208 212.982204
+
+D17_033939_1843_XN_04N223W_36 1 0
+0.07421918441302         2.38784091138244         -2692.7956947421035
+0.0 0.0 0.0
+14.609923 -33.847834999999996 213.049021
+
+D17_033939_1843_XN_04N223W_40 1 0
+0.07549747478812         2.38735704567769         -2691.9114083993104
+0.0 0.0 0.0
+14.872268 -32.659216 211.512798
+
+D17_033939_1843_XN_04N223W_41 1 0
+0.07150549700838         2.38544854881654         -2675.675300437365
+0.0 0.0 0.0
+15.709075 -25.469598 207.255396
+
+D17_033939_1843_XN_04N223W_42 1 0
+0.07475390508307         2.38388723029626         -2661.9128925963423
+0.0 0.0 0.0
+16.603867 -21.807993 201.602253
+
+D17_033939_1843_XN_04N223W_43 1 0
+0.07488635602731         2.38476634230257         -2586.856823673883
+0.0 0.0 0.0
+16.132327 -24.459763 204.19101
+
+D17_033939_1843_XN_04N223W_47 1 0
+0.07695260085138         2.38601355619879         -2683.893964122806
+0.0 0.0 0.0
+15.475879999999998 -28.909091999999998 207.41083899999998
+
+D17_033939_1843_XN_04N223W_48 1 0
+0.07711389195528         2.3875087777435         -2693.8573397565838
+0.0 0.0 0.0
+14.709003 -33.643352 211.559756
+
+D17_033939_1843_XN_04N223W_51 1 0
+0.07754022960353         2.38686883133015         -2692.849990156094
+0.0 0.0 0.0
+14.944764000000001 -31.743209000000004 209.693445
+
+D17_033939_1843_XN_04N223W_54 1 0
+0.07785708479223         2.38253471372513         -2681.754856027621
+0.0 0.0 0.0
+17.079795 -18.841307 196.83134099999998
+
+D17_033939_1843_XN_04N223W_55 1 0
+0.07855211987842001         2.38691355057712         -2690.664971166216
+0.0 0.0 0.0
+14.702332 -32.182937 209.71213600000002
+
+D17_033939_1843_XN_04N223W_57 1 0
+0.07889926268603         2.3823819719857595         -2695.2530979748667
+0.0 0.0 0.0
+16.826406 -18.666045999999998 196.39186
+
+D17_033939_1843_XN_04N223W_58 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_62 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_63 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_66 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_67 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_68 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_69 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_70 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_73 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_74 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_75 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_79 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_82 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_83 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_84 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_85 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
+D17_033939_1843_XN_04N223W_86 0 0
+0.0         0.0         0.0
+0.0 0.0 0.0
+0.0 0.0 0.0
+
diff --git a/plio/io/io_gpf.py b/plio/io/io_gpf.py
index 5b46938668db3936bb70d2c5a1d1ad1998356211..c7e7e65ee0b62bba753b3a136e5deeb711c72773 100644
--- a/plio/io/io_gpf.py
+++ b/plio/io/io_gpf.py
@@ -1,4 +1,7 @@
+<<<<<<< HEAD
 import math
+=======
+>>>>>>> upstream/master
 import numpy as np
 import pandas as pd
 
@@ -44,3 +47,49 @@ def read_gpf(input_data):
     assert int(cnt) == len(df)
 
     return df
+<<<<<<< HEAD
+=======
+
+def save_gpf(df, output_file):
+    """
+    Write a socet gpf file from a gpf-defined pandas dataframe
+
+    Parameters
+    ----------
+    df          : pd.DataFrame
+                  Pandas DataFrame
+
+    output_file : str
+                  path to the output data file
+    
+    Returns
+    -------
+    int         : success value
+                  0 = success, 1 = errors
+    """
+
+    # Check that file can be opened
+    try:
+        outGPF = open(output_file, 'w', newline='\r\n')
+    except:
+        print ('Unable to open output gpf file: {0}'.format(output_file))
+        return 1
+        
+    #grab number of rows in pandas dataframe
+    numpts = len(df)
+    
+    #Output gpf header
+    outGPF.write('GROUND POINT FILE\n')
+    outGPF.write('{0}\n'.format(numpts))
+    outGPF.write('point_id,stat,known,lat_Y_North,long_X_East,ht,sig(3),res(3)\n')
+
+    for index,row in df.iterrows():
+        #Output coordinates to gpf file
+        outGPF.write('{0} {1} {2}\n'.format(row['point_id'], row['stat'], row['known']))
+        outGPF.write('{0}         {1}         {2}\n'.format(row['lat_y_North'], row['long_X_East'], row['ht']))
+        outGPF.write('{0} {1} {2}\n'.format(row['sigma0'], row['sigma1'], row['sigma2']))
+        outGPF.write('{0} {1} {2}\n\n'.format(row['res0'], row['res1'], row['res2']))
+        
+    outGPF.close()
+    return 0
+>>>>>>> upstream/master
diff --git a/plio/io/tests/test_gpf.py b/plio/io/tests/test_io_gpf.py
similarity index 54%
rename from plio/io/tests/test_gpf.py
rename to plio/io/tests/test_io_gpf.py
index 95379e277407997993e20c88d1f6d2eed64d45d0..74793379e6d96848d051e63c75e02e2d3e851888 100644
--- a/plio/io/tests/test_gpf.py
+++ b/plio/io/tests/test_io_gpf.py
@@ -1,8 +1,11 @@
+import filecmp
+
 import numpy as np
 import pandas as pd
 from pandas.util.testing import assert_frame_equal
 
 from plio.io.io_gpf import read_gpf
+from plio.io.io_gpf import save_gpf
 from plio.examples import get_path
 
 import pytest
@@ -10,8 +13,11 @@ import pytest
 @pytest.fixture
 def insight_gpf():
     return get_path('InSightE08_XW.gpf')
+@pytest.fixture
+def out_insight_gpf():
+    return get_path('out_InSightE08_XW.gpf')
 
-@pytest.fixture()
+@pytest.fixture()
 def insight_expected():
     return pd.read_csv(get_path('InSightE08_XW.csv'))
 
@@ -19,3 +25,9 @@ def insight_expected():
 def test_read_gfp(gpf, expected):
     df = read_gpf(gpf)
     assert_frame_equal(df, expected)
+
+@pytest.mark.parametrize('gpf, out_gpf', [(insight_gpf(),out_insight_gpf())])
+def test_write_gfp(gpf, out_gpf):
+    df = read_gpf(gpf)
+    val = save_gpf(df, out_gpf)
+    assertTrue(filecmp.cmp(gpf, out_gpf, shallow=True), "save_gpf does not create an equal file.")