sentinel-hub/sentinelhub-py

[BUG] CRS parser fails to parse urn:ogc:def:crs:OGC:1.3:CRS84

garychen2002 opened this issue · 1 comments

Describe the bug

I tried to load a geojson with the crs property name of urn:ogc:def:crs:OGC:1.3:CRS84 and it did not work.

To Reproduce

Steps to reproduce the behavior:

  1. create a geojson with the CRS property "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }
  2. load geojson as a json
  3. use Geometry.from_geojson to try to create a new Geometry object from the geojson

Expected behavior

The new object should be created successfully.

Environment

Python 3.11.5

Stack trace or screenshots
image

If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Windows 10

Additional context

I believe the issue is related to this line where the CRS is parsed with a regex pattern:

crs_template = re.compile(r"urn:ogc:def:crs:.+::(?P<code>.+)", re.IGNORECASE)

crs_template = re.compile(r"urn:ogc:def:crs:.+::(?P<code>.+)", re.IGNORECASE)

The end of the pattern has two colons at +:: where there should only be one.

HI @garychen2002, thanks for reporting.

It seems like the issue is a bit different, because (according to name schemes) both urn:ogc:def:crs:EPSG::3163 and urn:ogc:def:crs:OGC:1.3:CRS84 are valid CRS definitions. Parsing EPSG codes is easy and thus implemented by us, but it seems like we could catch some more cases by replacing :: with :.*: in the pattern.

But in any case, I'll mark this on our to-do list.