Skip to content

Commit 45ef3e0

Browse files
zhuabaguaidaohu527
andauthored
update latlon2utm & convert_proj_txt (#121)
* update latlon2utm & convert_proj_txt * chore: Modify latlon2utm to support multiple coordinates --------- Co-authored-by: daohu527 <[email protected]>
1 parent 30ca00e commit 45ef3e0

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

imap/lib/convertor.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
from imap.lib.draw import draw_line, show
3434
from imap.lib.convex_hull import convex_hull, aabb_box
35-
from imap.lib.proj_helper import latlon2utm
35+
from imap.lib.proj_helper import latlon2projected
3636

3737

3838
# Distance between stop line and pedestrian crossing
@@ -167,7 +167,9 @@ def convert_proj_txt(self, proj_txt):
167167
self.pb_map.header.projection.proj = "+proj=utm +zone={} +ellps=WGS84 " \
168168
"+datum=WGS84 +units=m +no_defs".format(0)
169169
else:
170-
self.origin_x, self.origin_y, zone_id = latlon2utm(lat, lon)
170+
# use projTxt run latlon2projected
171+
self.origin_x, self.origin_y, zone_id = latlon2projected(
172+
lat, lon, self.xodr_map.header.geo_reference.text)
171173
if x_0:
172174
self.origin_x = self.origin_x - x_0
173175
if y_0:

imap/lib/proj_helper.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,30 @@
3434
import math
3535

3636

37-
def utm2latlon(x, y, zone):
37+
def projected2latlon(x, y, zone_id=None, proj_txt=None):
3838
"""utm to latlon"""
39-
proj = pyproj.Proj(proj='utm', zone=zone, ellps='WGS84')
39+
if proj_txt is None:
40+
# Default: Inverse Standard UTM
41+
if zone_id is None:
42+
raise ValueError(
43+
"For default inverse UTM, 'zone_id' parameter is required.")
44+
proj = pyproj.Proj(proj='utm', zone=zone_id, ellps='WGS84')
45+
else:
46+
proj = pyproj.Proj(proj_txt)
4047
lon, lat = proj(x, y, inverse=True)
4148
return lat, lon
4249

4350

44-
def latlon2utm(lat, lon):
45-
"""latlon to utm"""
46-
zone = latlon2utmzone(lat, lon)
47-
projector2 = pyproj.Proj(proj='utm', zone=zone, ellps='WGS84')
48-
x, y = projector2(lon, lat)
49-
return x, y, zone
51+
def latlon2projected(lat, lon, proj_txt=None):
52+
"""latlon to utm use proj info"""
53+
zone_id = latlon2utmzone(lat, lon)
54+
if proj_txt is None:
55+
# Default: Standard UTM
56+
proj = pyproj.Proj(proj='utm', zone=zone_id, ellps='WGS84')
57+
else:
58+
proj = pyproj.Proj(proj_txt)
59+
x, y = proj(lon, lat)
60+
return x, y, zone_id
5061

5162

5263
def latlon2utmzone(lat, lon):

0 commit comments

Comments
 (0)