31
31
[("url" , object ), ("bounds" , "float64" , 4 ), ("scale_offset" , "float64" , 2 )]
32
32
)
33
33
34
+ def get_crs (item , default = None ) -> Optional [int ]:
35
+ props = item .get ("properties" , {})
36
+ crs = props .get ("proj:code" )
37
+ if isinstance (crs , str ) and crs .startswith ("EPSG:" ):
38
+ crs = int (crs .split (":" )[1 ])
39
+ else :
40
+ crs = props .get ("proj:epsg" )
41
+ if crs is None :
42
+ crs = default
43
+ return crs
34
44
35
45
class Mimetype (NamedTuple ):
36
46
type : str
@@ -131,7 +141,7 @@ def prepare_items(
131
141
raise ValueError ("Zero asset IDs requested" )
132
142
133
143
for item_i , item in enumerate (items ):
134
- item_epsg = item [ "properties" ]. get ( "proj:epsg" )
144
+ item_epsg = get_crs ( item )
135
145
item_bbox = item ["properties" ].get ("proj:bbox" )
136
146
item_shape = item ["properties" ].get ("proj:shape" )
137
147
item_transform = item ["properties" ].get ("proj:transform" )
@@ -143,7 +153,7 @@ def prepare_items(
143
153
except KeyError :
144
154
continue
145
155
146
- asset_epsg = asset . get ( "proj:epsg" , item_epsg )
156
+ asset_epsg = get_crs ( asset , item_epsg )
147
157
asset_bbox = asset .get ("proj:bbox" , item_bbox )
148
158
asset_shape = asset .get ("proj:shape" , item_shape )
149
159
asset_transform = asset .get ("proj:transform" , item_transform )
0 commit comments