Skip to content

WIP: Allow GDAL PDS format to be read#6023

Draft
chkim-usgs wants to merge 2 commits intoDOI-USGS:devfrom
chkim-usgs:gdal_pds
Draft

WIP: Allow GDAL PDS format to be read#6023
chkim-usgs wants to merge 2 commits intoDOI-USGS:devfrom
chkim-usgs:gdal_pds

Conversation

@chkim-usgs
Copy link
Copy Markdown
Contributor

@chkim-usgs chkim-usgs commented Apr 23, 2026

Description

Enables native support for virtual file systems and remote streaming (/vsicurl/) by using GDAL's VSI API. Local file usage performance should not be affected since VSI is basically a pass-through to standard C fopen calls.

Related Issue

Addresses #5864

How Has This Been Validated?

Tested /vsicurl URL:

$ISISROOT/bin/mroctx2isis from=/vsicurl/https://planetarydata.jpl.nasa.gov/img/data/mro/ctx/mrox_5011/data/V13_084840_0996_XN_80S159W.IMG to=./mroctx2.cub

Also ran mroctx2isis with the downloaded version to completion.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Documentation change (update to the documentation; no code change)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Infrastructure change (changes to things like CI or the build system that do not impact users)

Checklist:

  • I have read and agree to abide by the Code of Conduct
  • I have read the CONTRIBUTING document.
  • My change requires a change to the documentation and I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • I have added myself to the .zenodo.json document.
  • I have added my user impacting change to the CHANGELOG.md document.

Licensing

This project is mostly composed of free and unencumbered software released into the public domain, and we are unlikely to accept contributions that are not also released into the public domain. Somewhere near the top of each file should have these words:

This work is free and unencumbered software released into the public domain. In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain.

  • I dedicate any and all copyright interest in this software to the public domain. I make this dedication for the benefit of the public at large and to the detriment of my heirs and successors. I intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.

@github-actions
Copy link
Copy Markdown

The build and test suite have started for your pull request.

To view your build log, please reference the build with source version: "PR_6023".

Additionally, check the latest "dev" source version to identify existing test failures. Please note that you are not responsible for the test failures that exist on both your PR and the dev branch.

@github-actions
Copy link
Copy Markdown

The build and test suite have started for your pull request.

To view your build log, please reference the build with source version: "PR_6023".

Additionally, check the latest "dev" source version to identify existing test failures. Please note that you are not responsible for the test failures that exist on both your PR and the dev branch.

#include "SpecialPixel.h"
#include "UserInterface.h"

#include "cpl_vsi.h"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there documentation for this API? I'm not sure if this is something we want to commit ourselves to

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like enough of a documented API exists for this at:
https://gdal.org/en/stable/api/cpl.html#cpl-vsi-h

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that we do not want to use the VSI API directly, let GDAL handle it via /vsi prefixes.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may be the best way to handle this to be as minimally invasive as possible. The other option would be to add a new organiztion option to the importer specifically for vis. We would then have to add a custom member function to support ISIS functors

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking about this a bit more, I don't think the GDAL raster IO supports random byte access. Something to double check

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants