Modify

Opened 17 months ago

Closed 17 months ago

Last modified 16 months ago

#22519 closed defect (fixed)

Selecting a geotagged image from a second layer causes an Exception

Reported by: antoine.riche@… Owned by: team
Priority: normal Milestone: 22.12
Component: Core image mapping Version: latest
Keywords: template_report Cc:

Description

What steps will reproduce the problem?

  1. Load two folders of geotagged images : this produces 2 image layers Important note: one layer contains 360° images, the other flat images.
  2. Select a picture on the map : it is displayed on the image viewer (so far so good)
  3. Select a picture from the other image layer on the map

What is the expected result?

View the image in the viewer and be able to carry on.

What happens instead?

The image is displayed in a new tab of the image layer and the error dialog pops up. After closing the dialog, selecting an image makes the dialog pop up again.
Selecting the option "Remove this error for this session" does not stop the error dialog to pop-up again.
Selecting the option "Hide the next error windows for this session" results in JOSM hanging.

Please provide any additional information below. Attach a screenshot if possible.

Note I have the option geoimage.one-layer-per-folder set to true.
Could this relate to https://josm.openstreetmap.de/ticket/21605 ?

Relative:URL: ^/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2022-11-22 14:37:25 +0100 (Tue, 22 Nov 2022)
Revision:18603
Build-Date:2022-11-23 02:30:57
URL:https://josm.openstreetmap.de/svn/trunk

Identification: JOSM/1.5 (18603 fr) Linux Ubuntu 18.04.6 LTS
Memory Usage: 1124 MB / 4000 MB (611 MB allocated, but free)
Java version: 18-ea+17-1015, Oracle Corporation, OpenJDK 64-Bit Server VM
Look and Feel: javax.swing.plaf.metal.MetalLookAndFeel
Screen: :0.0 1920×1080 (scaling 1.00×1.00) :0.1 1920×1080 (scaling 1.00×1.00)
Maximum Screen Size: 1920×1080
Best cursor sizes: 16×16→16×16, 32×32→32×32
Environment variable LANG: fr_FR.UTF-8
System property file.encoding: UTF-8
System property sun.jnu.encoding: UTF-8
Locale info: fr_FR
Numbers with default locale: 1234567890 -> 1234567890
Desktop environment: ubuntu:GNOME
libcommons-compress-java: libcommons-compress-java:all-1.18-1~18.04
libcommons-logging-java: libcommons-logging-java:all-1.2-2
fonts-noto: fonts-noto:all-20171026-2
VM arguments: [-Djosm.pref=<josm.pref>/]
Dataset consistency test: No problems found

Plugins:
+ Mapillary (2.0.1)
+ PicLayer (1.0.2)
+ apache-commons (36034)
+ apache-http (35924)
+ buildings_tools (36011)
+ changeset-viewer (v0.0.6)
+ ejml (35924)
+ geotools (36028)
+ jackson (36034)
+ jaxb (35952)
+ jna (36005)
+ jts (36004)
+ opendata (36025)
+ photo_geotagging (35933)
+ photoadjust (36011)
+ reverter (36011)
+ shrinkwrap (v1.0.4)
+ todo (30306)
+ undelete (36011)
+ utilsplugin2 (36011)

Tagging presets:
+ https://github.com/kendzi/Simple3dBuildingsPreset/releases/download/0.9_2018-05-08/s3db-preset.zip
+ ${HOME}/Bureau/Gares21/tools/JOSM/Gares21-preset.xml

Map paint styles:
+ ${HOME}/Bureau/Gares21/tools/JOSM/railway-station.mapcss
- https://josm.openstreetmap.de/josmfile?page=Styles/Sidewalks&zip=1
+ https://josm.openstreetmap.de/josmfile?page=Styles/SidewalksPlus&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/SidewalksAndFootways&zip=1
- ${HOME}/Bureau/Gares21/railway-station.mapcss
- ${HOME}/Carto'Cité/Projets/1-Cloud/EPA Marne/3D/zonage.mapcss

Validator rules:
+ ${HOME}/Bureau/Gares21/tools/JOSM/railway-station.validator.mapcss

Last errors/warnings:
- 00008.550 E: Skipping to the next rule, because of an error:
- 00008.554 E: org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException: Encountered " <IDENT> "des "" at line 201, column 21.
- 00008.583 W: Initializing map style ${HOME}/Bureau/Gares21/tools/JOSM/railway-station.mapcss terminé(e)s en 40 ms (1 errors, 0 warnings)
- 00008.599 W: Échec du chargement des styles de rendu de '${HOME}/Bureau/Gares21/railway-station.mapcss'. Lʼexception était : java.nio.file.NoSuchFileException: ${HOME}/Bureau/Gares21/railway-station.mapcss
- 00008.600 E: java.nio.file.NoSuchFileException: ${HOME}/Bureau/Gares21/railway-station.mapcss
- 00043.076 W: Unable to convert property fill-color to type class java.awt.Color: found  of type class java.lang.String!
- 00052.079 W: Unable to convert property fill-color to type class java.awt.Color: found  of type class java.lang.String!
- 00053.866 W: Unable to convert property fill-color to type class java.awt.Color: found  of type class java.lang.String!
- 00080.851 W: Unable to convert property fill-color to type class java.awt.Color: found  of type class java.lang.String!
- 00087.544 E: Handled by bug report queue: java.lang.NullPointerException: Cannot invoke "org.openstreetmap.josm.gui.util.imagery.CameraPlane.getRotation()" because "this.cameraPlane" is null



=== REPORTED CRASH DATA ===
BugReportExceptionHandler#handleException:
No data collected.

Warning issued by: BugReportExceptionHandler#handleException

=== STACK TRACE ===
Thread: AWT-EventQueue-0 (21) of main
java.lang.NullPointerException: Cannot invoke "org.openstreetmap.josm.gui.util.imagery.CameraPlane.getRotation()" because "this.cameraPlane" is null
	at org.openstreetmap.josm.gui.layer.geoimage.viewers.projections.Equirectangular.getRotation(Equirectangular.java:59)
	at org.openstreetmap.josm.gui.layer.geoimage.ImageDisplay.getRotation(ImageDisplay.java:1001)
	at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.getRotation(ImageViewerDialog.java:887)
	at org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer.paint(GeoImageLayer.java:460)
	at org.openstreetmap.josm.gui.layer.AbstractMapViewPaintable$CompatibilityModeLayerPainter.paint(AbstractMapViewPaintable.java:27)
	at org.openstreetmap.josm.gui.MapView.paintLayer(MapView.java:469)
	at org.openstreetmap.josm.gui.MapView.drawMapContent(MapView.java:584)
	at org.openstreetmap.josm.gui.MapView.paint(MapView.java:491)
	at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:962)
	at java.desktop/javax.swing.JComponent.paint(JComponent.java:1138)
	at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5321)
	at java.desktop/javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:246)
	at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1336)
	at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5269)
	at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5079)
	at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:878)
	at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:861)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:861)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:834)
	at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:784)
	at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1897)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Attachments (0)

Change History (6)

comment:1 by skyper, 17 months ago

Component: CoreCore image mapping

comment:2 by taylor.smock, 17 months ago

Resolution: fixed
Status: newclosed

In 18604/josm:

Fix #22519: NPE in Equirectangular#getRotation

This is due to cameraPlane being null initially, and only being updated once
the parent component changes size.

comment:3 by taylor.smock, 17 months ago

Milestone: 22.11

comment:4 by antoine.riche@…, 17 months ago

Thanks for such an efficient fix up !
May I ask whether there is an option to enable/disable the multiple tabs in the image viewer ? I couldn't find it and this could be useful: having multiple selected images on the map can be cnofusing when working with multiple image layers (up to 4 at times).

in reply to:  4 comment:5 by taylor.smock, 17 months ago

I'm reworking the tabs right now, but if you rename the layer before clicking on the image, it will help you keep track.

Otherwise, there isn't currently a way to enable/disable multiple tabs in the image viewer.

comment:6 by taylor.smock, 16 months ago

Milestone: 22.1122.12

Milestone renamed

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain team.
as The resolution will be set.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.