Troubleshooting#

Common issues#

  • Image is not geo-referenced: ImagePerspective requires camera, position, orientation, and crs. Missing geo-reference raises NotGeoreferencedError.

  • Mapper missing: mapping functions (map_points, map_footprint, map_center_point) require a mapper attached to the image or passed to the call. Missing mapper raises MapperMissingError.

  • No intersections found: - plane/raster mappers may return Issue.WRONG_DIRECTION when rays are parallel or point away, - raster/array mappers return Issue.OUTSIDE_RASTER when queries leave the raster extent, - raster mappers may return Issue.RASTER_NO_DATA when the ray touches no-data cells (holes) in the raster, - disk-backed raster ray intersection may return Issue.MAX_ITTERATION when the iterative solve does not converge, - mesh mapper can return Issue.NO_INTERSECTION when no triangles are hit.

  • Projection returns no valid pixels: ImagePerspective.project can fail with Issue.INVALID_PROJECTIIONS when all projected points lie outside the distortion validity border.

  • CRS problems: pass crs_s when projecting/mapping data in a different CRS; ensure your CRSs are truly 3D when heights matter; compound CRSs may require PROJ grids.

Debug helpers#

  • Log result.issues even when ok is True to spot partial validity.

  • Enable logging (logging.basicConfig(level=logging.DEBUG)) to surface pyproj and mapper diagnostics.

  • Inspect the distortion validity border via camera.distortion_border and test points with camera.undistorted_image_points_inside(...).

  • For batch processing, use ImageBatch.project(..., only_valid=True) to find which images actually see target points.