Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions imap/lib/convertor.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

from imap.lib.draw import draw_line, show
from imap.lib.convex_hull import convex_hull, aabb_box
from imap.lib.proj_helper import latlon2utm
from imap.lib.proj_helper import latlon2projected


# Distance between stop line and pedestrian crossing
Expand Down Expand Up @@ -167,7 +167,9 @@ def convert_proj_txt(self, proj_txt):
self.pb_map.header.projection.proj = "+proj=utm +zone={} +ellps=WGS84 " \
"+datum=WGS84 +units=m +no_defs".format(0)
else:
self.origin_x, self.origin_y, zone_id = latlon2utm(lat, lon)
# use projTxt run latlon2projected
self.origin_x, self.origin_y, zone_id = latlon2projected(
lat, lon, self.xodr_map.header.geo_reference.text)
if x_0:
self.origin_x = self.origin_x - x_0
if y_0:
Expand Down
27 changes: 19 additions & 8 deletions imap/lib/proj_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,30 @@
import math


def utm2latlon(x, y, zone):
def projected2latlon(x, y, zone_id=None, proj_txt=None):
"""utm to latlon"""
proj = pyproj.Proj(proj='utm', zone=zone, ellps='WGS84')
if proj_txt is None:
# Default: Inverse Standard UTM
if zone_id is None:
raise ValueError(
"For default inverse UTM, 'zone_id' parameter is required.")
proj = pyproj.Proj(proj='utm', zone=zone_id, ellps='WGS84')
else:
proj = pyproj.Proj(proj_txt)
lon, lat = proj(x, y, inverse=True)
return lat, lon


def latlon2utm(lat, lon):
"""latlon to utm"""
zone = latlon2utmzone(lat, lon)
projector2 = pyproj.Proj(proj='utm', zone=zone, ellps='WGS84')
x, y = projector2(lon, lat)
return x, y, zone
def latlon2projected(lat, lon, proj_txt=None):
"""latlon to utm use proj info"""
zone_id = latlon2utmzone(lat, lon)
if proj_txt is None:
# Default: Standard UTM
proj = pyproj.Proj(proj='utm', zone=zone_id, ellps='WGS84')
else:
proj = pyproj.Proj(proj_txt)
x, y = proj(lon, lat)
return x, y, zone_id


def latlon2utmzone(lat, lon):
Expand Down
Loading