Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Daniel Scheffler
py_tools_ds
Commits
e20e3ea5
Commit
e20e3ea5
authored
Aug 26, 2020
by
Daniel Scheffler
Browse files
Reveal KeyError in geotransform2mapinfo()
Signed-off-by:
Daniel Scheffler
<
danschef@gfz-potsdam.de
>
parent
3ee2314c
Pipeline
#11904
failed with stage
in 13 minutes and 45 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
py_tools_ds/geo/map_info.py
View file @
e20e3ea5
...
...
@@ -244,41 +244,43 @@ def geotransform2mapinfo(gt, prj):
:returns: ENVI geo info, e.g. [ UTM , 1 , 1 , 256785.0 , 4572015.0 , 30.0 , 30.0 , 43 , North , WGS-84 ]
:rtype: list
"""
try
:
return
Geocoding
(
gt
=
gt
,
prj
=
prj
).
to_mapinfo
()
except
KeyError
:
# KeyError: 'datum' - in case of, e.g., ETRS/LAEA projection
fn_bsq
=
"py_tools_ds__geotransform2mapinfo_temp.bsq"
fn_hdr
=
os
.
path
.
splitext
(
fn_bsq
)[
0
]
+
'.hdr'
fdir
=
os
.
path
.
join
(
os
.
path
.
abspath
(
os
.
curdir
))
try
:
ds_out
=
gdal
.
GetDriverByName
(
'ENVI'
).
Create
(
fn_bsq
,
2
,
2
,
1
,
gdal
.
GDT_Int32
)
ds_out
.
SetGeoTransform
(
gt
)
ds_out
.
SetProjection
(
prj
)
ds_out
.
FlushCache
()
del
ds_out
with
open
(
fn_hdr
,
'r'
)
as
inF
:
content
=
inF
.
read
()
if
'map info'
in
content
:
res
=
re
.
search
(
"map info = {(.*?)}"
,
content
,
re
.
I
).
group
(
1
)
map_info
=
[
i
.
strip
()
for
i
in
res
.
split
(
','
)]
for
i
,
ele
in
enumerate
(
map_info
):
try
:
map_info
[
i
]
=
float
(
ele
)
except
ValueError
:
pass
else
:
map_info
=
[
'Arbitrary'
,
1.0
,
1.0
,
0.0
,
0.0
,
1.0
,
1.0
]
finally
:
for
fn
in
[
fn_bsq
,
fn_hdr
]:
if
os
.
path
.
exists
(
os
.
path
.
join
(
fdir
,
fn
)):
gdal
.
Unlink
(
os
.
path
.
join
(
fdir
,
fn
))
return
map_info
# try:
return
Geocoding
(
gt
=
gt
,
prj
=
prj
).
to_mapinfo
()
# except KeyError: # KeyError: 'datum' - in case of, e.g., ETRS/LAEA projection
# fn_bsq = "py_tools_ds__geotransform2mapinfo_temp.bsq"
# fn_hdr = os.path.splitext(fn_bsq)[0] + '.hdr'
# fdir = os.path.join(os.path.abspath(os.curdir))
#
# try:
# ds_out = gdal.GetDriverByName('ENVI').Create(fn_bsq, 2, 2, 1, gdal.GDT_Int32)
# ds_out.SetGeoTransform(gt)
# ds_out.SetProjection(prj)
# ds_out.FlushCache()
#
# # noinspection PyUnusedLocal
# ds_out = None
#
# with open(fn_hdr, 'r') as inF:
# content = inF.read()
# if 'map info' in content:
# res = re.search("map info = {(.*?)}", content, re.I).group(1)
# map_info = [i.strip() for i in res.split(',')]
#
# for i, ele in enumerate(map_info):
# try:
# map_info[i] = float(ele)
# except ValueError:
# pass
# else:
# map_info = ['Arbitrary', 1.0, 1.0, 0.0, 0.0, 1.0, 1.0]
#
# finally:
# for fn in [fn_bsq, fn_hdr]:
# if os.path.exists(os.path.join(fdir, fn)):
# gdal.Unlink(os.path.join(fdir, fn))
#
# return map_info
def
mapinfo2geotransform
(
map_info
):
...
...
@@ -300,7 +302,9 @@ def mapinfo2geotransform(map_info):
ds_out
=
gdal
.
GetDriverByName
(
'ENVI'
).
Create
(
fn_bsq
,
2
,
2
,
1
)
ds_out
.
GetRasterBand
(
1
).
WriteArray
(
np
.
array
([[
1
,
2
],
[
2
,
3
]]))
ds_out
.
FlushCache
()
del
ds_out
# noinspection PyUnusedLocal
ds_out
=
None
with
open
(
fn_hdr
,
'r'
)
as
InHdr
:
lines
=
InHdr
.
readlines
()
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment