Modify

#15216 closed defect (fixed)

WMTS imagery fails with mismatching projection

Reported by: SanderH Owned by: team
Priority: normal Milestone: 17.08
Component: Core imagery Version:
Keywords: template_report wmts projection Cc:

Description

What steps will reproduce the problem?

  1. Set projection to Mercator in Preferences
  2. Add the WMTS imagery layer https://geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts?request=GetCapabilities (available from defaults layers as NL:PDOK aerial imagery Beeldmateriaal.nl 25cm (WMTS))
  3. Choose one of the EPSG:28992 layers
  4. JOSM will crash

What is the expected result?

JOSM shows the WMTS layers (maybe a bit misplaced because of projection mismatch, but no crashing)

What happens instead?

JOSM crashes

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

Maybe it's also an idea to filter out the projections from the WMTS list to choose from to only the ones that match the current projection for each layer available and only show all projections for the layers which do not have a projection matching the current projection.

URL:http://josm.openstreetmap.de/svn/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2017-07-31 01:02:55 +0200 (Mon, 31 Jul 2017)
Build-Date:2017-07-31 01:53:17
Revision:12545
Relative:URL: ^/trunk

Identification: JOSM/1.5 (12545 en) Windows 10 64-Bit
OS Build number: Windows 10 Enterprise 1703 (15063)
Memory Usage: 1071 MB / 10667 MB (840 MB allocated, but free)
Java version: 1.8.0_131-b11, Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM
Screen: \Display0 1920x1080
Maximum Screen Size: 1920x1080
VM arguments: [-Djava.net.useSystemProxies=true]

Plugins:
+ ejml (32680)
+ geojson (52)
+ geotools (33380)
+ jts (32699)
+ ods-bag (0.6.12)
+ opendataservices (0.6.12)
+ utilsplugin2 (33328)

Last errors/warnings:
- W: No url returned for: {0}, skipping
- W: java.lang.IllegalArgumentException: No url returned
- W: No url returned for: {0}, skipping
- W: java.lang.IllegalArgumentException: No url returned
- W: No url returned for: {0}, skipping
- W: java.lang.IllegalArgumentException: No url returned
- W: No url returned for: {0}, skipping
- W: java.lang.IllegalArgumentException: No url returned
- W: No url returned for: {0}, skipping
- W: java.lang.IllegalArgumentException: No url returned


=== 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
	at org.openstreetmap.josm.data.imagery.WMTSTileSource$Layer.access$400(WMTSTileSource.java:155)
	at org.openstreetmap.josm.data.imagery.WMTSTileSource.initProjection(WMTSTileSource.java:686)
	at org.openstreetmap.josm.gui.layer.WMTSLayer.projectionChanged(WMTSLayer.java:100)
	at org.openstreetmap.josm.Main.fireProjectionChanged(Main.java:1090)
	at org.openstreetmap.josm.Main.setProjection(Main.java:1068)
	at org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference.setProjection(ProjectionPreference.java:473)
	at org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference.ok(ProjectionPreference.java:426)
	at org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane$PluginDownloadAfterTask.run(PreferenceTabbedPane.java:92)
	at org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.savePreferences(PreferenceTabbedPane.java:424)
	at org.openstreetmap.josm.gui.preferences.PreferenceDialog$OKAction.actionPerformed(PreferenceDialog.java:187)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.WaitDispatchSupport$2.run(Unknown Source)
	at java.awt.WaitDispatchSupport$4.run(Unknown Source)
	at java.awt.WaitDispatchSupport$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(Unknown Source)
	at java.awt.Dialog.show(Unknown Source)
	at java.awt.Component.show(Unknown Source)
	at java.awt.Component.setVisible(Unknown Source)
	at java.awt.Window.setVisible(Unknown Source)
	at java.awt.Dialog.setVisible(Unknown Source)
	at org.openstreetmap.josm.gui.preferences.PreferenceDialog.setVisible(PreferenceDialog.java:127)
	at org.openstreetmap.josm.actions.PreferencesAction.run(PreferencesAction.java:112)
	at org.openstreetmap.josm.actions.PreferencesAction.actionPerformed(PreferencesAction.java:101)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.AbstractButton.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Attachments (0)

Change History (5)

comment:1 Changed 21 months ago by Don-vip

Owner: changed from team to SanderH
Status: newneedinfo

Probably fixed in r12550, can you please check with latest?

comment:2 Changed 21 months ago by SanderH

Tested with version 12707 and there it's better as it doesn't crash, but just no tiles being loaded as it cannot find a URL.
In the console log I see:

2017-09-01 16:29:04.818 WARNING: No default layer selected, choosing first layer.
2017-09-01 16:29:08.342 INFO: Registered toolbar action fixaddresses/selectaddressesinmap overwritten: org.openstreetmap.josm.plugins.fixAddresses.gui.actions.SelectAddressesInMapAction gets org.openstreetmap.josm.plugins.fixAddresses.gui.actions.SelectAddressesInMapAction
2017-09-01 16:29:08.343 INFO: Registered toolbar action fixaddresses/guessaddressdata overwritten: org.openstreetmap.josm.plugins.fixAddresses.gui.actions.GuessAddressDataAction gets org.openstreetmap.josm.plugins.fixAddresses.gui.actions.GuessAddressDataAction
2017-09-01 16:29:08.349 INFO: Registered toolbar action fixaddresses/applyallguesses overwritten: org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ApplyAllGuessesAction gets org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ApplyAllGuessesAction
2017-09-01 16:29:08.350 INFO: Registered toolbar action fixaddresses/removeaddresstags overwritten: org.openstreetmap.josm.plugins.fixAddresses.gui.actions.RemoveAddressTagsAction gets org.openstreetmap.josm.plugins.fixAddresses.gui.actions.RemoveAddressTagsAction
2017-09-01 16:29:08.519 INFO: AbstractTileSourceLayer: estimated visible tiles: 54, estimated cache size: 216
2017-09-01 16:29:08.591 INFO: AbstractTileSourceLayer: estimated visible tiles: 54, estimated cache size: 216
2017-09-01 16:29:08.592 INFO: AbstractTileSourceLayer: estimated visible tiles: 54, estimated cache size: 216
2017-09-01 16:29:08.600 INFO: Allocate for tile source layer: 54 MB of memory. Available: 3,506 MB.
2017-09-01 16:29:08.602 WARNING: No url returned for: PDOK aerial imagery Beeldmateriaal.nl 25cm (WMTS):EPSG:3857, skipping
2017-09-01 16:29:08.604 WARNING: java.lang.IllegalArgumentException: No url returned

Strange thing is that it complains about the no url for EPSG:3857 while having selected the EPSG:28992. Shouldn't it find the url for the 28992 projection and show that?

Could be prevented when the dialog would hide the unsuitable layers as suggested in this ticket, so that users are less likely to choose a wrong projections and as a bonus having a list with less items making it easier to find the desired layer.

comment:3 Changed 21 months ago by Don-vip

Keywords: wmts projection added
Owner: changed from SanderH to team
Status: needinfonew

comment:4 Changed 21 months ago by Don-vip

Milestone: 17.08

comment:5 Changed 21 months ago by Don-vip

Resolution: fixed
Status: newclosed

In 12709/josm:

fix #15216 - choose first compatible wmts layer in case several are found, instead of null

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.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.