Commit f5c647b5 authored by Lauren Adoram-Kershner's avatar Lauren Adoram-Kershner
Browse files

consolidating pyproj calls to go through reproject func, update reproject to 360 domain

parent 1eac748e
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ from collections import defaultdict, MutableMapping, Counter
import numpy as np
import pandas as pd
import networkx as nx
import pyproj
# import pyproj
from scipy.spatial.distance import cdist
from shapely.geometry import Point
import sqlalchemy
@@ -19,7 +19,7 @@ from autocnet.matcher import subpixel as sp
from autocnet.matcher import cpu_ring_matcher
from autocnet.transformation import fundamental_matrix as fm
from autocnet.transformation import homography as hm
from autocnet.transformation import spatial
from autocnet.transformation.spatial import reproject
from autocnet.vis.graph_view import plot_edge, plot_node, plot_edge_decomposition, plot_matches
from autocnet.cg import cg
from autocnet.io.db.model import Images, Keypoints, Matches,\
@@ -239,7 +239,7 @@ class Edge(dict, MutableMapping):
            ic = csmapi.ImageCoord(coords[i][0], coords[i][1])
            ground = camera.imageToGround(ic, 0)
            gnd[i] = [ground.x, ground.y, ground.z]
        lon, lat, alt = spatial.reproject(gnd.T, semimajor, semiminor,
        lon, lat, alt = reproject(gnd.T, semimajor, semiminor,
                                    'geocent', 'latlon')
        if srid:
            geoms = []
@@ -975,13 +975,14 @@ class NetworkEdge(Edge):
        session.close()

    def get_overlapping_indices(self, kps):
        ecef = pyproj.Proj(proj='geocent',
        # ecef = pyproj.Proj(proj='geocent',
			               a=self.parent.config['spatial']['semimajor_rad'],
			               b=self.parent.config['spatial']['semiminor_rad'])
        lla = pyproj.Proj(proj='longlat',
        # lla = pyproj.Proj(proj='longlat',
			              a=self.parent.config['spatial']['semiminor_rad'],
			              b=self.parent.config['spatial']['semimajor_rad'])
        lons, lats, alts = pyproj.transform(ecef, lla, kps.xm.values, kps.ym.values, kps.zm.values)
        # lons, lats, alts = pyproj.transform(ecef, lla, kps.xm.values, kps.ym.values, kps.zm.values)
        lons, lats, alts = reproject([kps.xm.values, kps.ym.values, kps.zm.values], semi_major, semi_minor, 'geocent', 'latlon')
        points = [Point(lons[i], lats[i]) for i in range(len(lons))]
        mask = [i for i in range(len(points)) if self.intersection.contains(points[i])]
        return mask
+7 −4
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ import shapely.wkb as swkb
import shapely.ops


import pyproj
# import pyproj

from plio.io.io_controlnetwork import to_isis, from_isis
from plio.io import io_hdf, io_json
@@ -44,6 +44,7 @@ from autocnet.vis.graph_view import plot_graph, cluster_plot
from autocnet.control import control
from autocnet.spatial.overlap import compute_overlaps_sql
from autocnet.spatial.isis import point_info
from autocnet.transformation.spatial import reproject

#np.warnings.filterwarnings('ignore')

@@ -1822,8 +1823,8 @@ WHERE

    def place_points_from_cnet(self, cnet):
        semi_major, semi_minor = config["spatial"]["semimajor_rad"], config["spatial"]["semiminor_rad"]
        ecef = pyproj.Proj(proj='geocent', a=semi_major, b=semi_minor)
        lla = pyproj.Proj(proj='latlon', a=semi_major, b=semi_minor)
        # ecef = pyproj.Proj(proj='geocent', a=semi_major, b=semi_minor)
        # lla = pyproj.Proj(proj='latlon', a=semi_major, b=semi_minor)

        if isinstance(cnet, str):
            cnet = from_isis(cnet)
@@ -1854,7 +1855,9 @@ WHERE

            row = cnetpoint.iloc[0]
            x,y,z= row.adjustedX, row.adjustedY, row.adjustedZ
            lon, lat, alt = pyproj.transform(ecef, lla, x, y, z)
            # lon, lat, alt = pyproj.transform(ecef, lla, x, y, z)
            lon, lat, alt = reproject([x, y, z], semi_major, semi_minor, 'geocent', 'latlon')


            point = Points(identifier=id,
                           ignore=row.pointIgnore,
+0 −1
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ from sqlalchemy.ext.declarative import declarative_base
import geopandas as gpd
import plio
import pvl
import pyproj
import pysis

from gdal import ogr
+8 −5
Original line number Diff line number Diff line
@@ -11,9 +11,9 @@ from autocnet import config, dem, Session
from autocnet.cg import cg as compgeom
from autocnet.io.db.model import Images, Measures, Overlay, Points, JsonEncoder
from autocnet.spatial import isis

from autocnet.transformation.spatial import reproject
from plurmy import Slurm
import csmapi



# SQL query to decompose pairwise overlaps
@@ -154,8 +154,8 @@ def place_points_in_overlap(nodes, geom, cam_type="csm",
    points = []
    semi_major = config['spatial']['semimajor_rad']
    semi_minor = config['spatial']['semiminor_rad']
    ecef = pyproj.Proj(proj='geocent', a=semi_major, b=semi_minor)
    lla = pyproj.Proj(proj='latlon', a=semi_major, b=semi_minor)
    # ecef = pyproj.Proj(proj='geocent', a=semi_major, b=semi_minor, lon_wrap=180)
    # lla = pyproj.Proj(proj='latlon', a=semi_major, b=semi_minor, lon_wrap=180)
    valid = compgeom.distribute_points_in_geom(geom, **distribute_points_kwargs)
    if not valid:
        warnings.warn('Failed to distribute points in overlap')
@@ -173,7 +173,10 @@ def place_points_in_overlap(nodes, geom, cam_type="csm",
            height = dem.read_array(1, [px, py, 1, 1])[0][0]

        # Get the BCEF coordinate from the lon, lat
        x, y, z = pyproj.transform(lla, ecef, lon, lat, height)
        # x, y, z = pyproj.transform(lla, ecef, lon, lat, height)
        x, y, z = reproject([lon, lat, height], semi_major, semi_minor,
                            'latlon', 'geocent')

        geom = shapely.geometry.Point(x, y, z)
        point = Points(apriori=geom,
                       adjusted=geom,
+2 −2
Original line number Diff line number Diff line
@@ -35,8 +35,8 @@ def reproject(record, semi_major, semi_minor, source_proj, dest_proj, **kwargs):
      Transformed coordinates as y, x, z

    """
    source_pyproj = pyproj.Proj(proj = source_proj, a = semi_major, b = semi_minor)
    dest_pyproj = pyproj.Proj(proj = dest_proj, a = semi_major, b = semi_minor)
    source_pyproj = pyproj.Proj(proj=source_proj, a=semi_major, b=semi_minor, lon_wrap=180)
    dest_pyproj = pyproj.Proj(proj=dest_proj, a=semi_major, b=semi_minor, lon_wrap=180)

    y, x, z = pyproj.transform(source_pyproj, dest_pyproj, record[0], record[1], record[2], **kwargs)
    return y, x, z