Changes between Version 4 and Version 5 of Nl:Help/Plugin/Scripting/Python
- Timestamp:
- 2017-10-10T14:31:50+02:00 (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Nl:Help/Plugin/Scripting/Python
v4 v5 1 [[TranslatedPages(revision=1 1)]]1 [[TranslatedPages(revision=13)]] 2 2 Nog enkele voorbeelden in Python: 3 3 4 Exporteer een verzameling routes naar een Garmin GPX-bestand: 4 Exporteer een verzameling routes naar een Garmin GPX-bestand (geen bijzonder goed voorbeeld, omdat er geen relaties voor colllections meer bestaan): 5 5 6 6 … … 9 9 ''' 10 10 RWN2Garmin.py - Numbered networks to Garmin GPX file converter 11 This code is released under the GNU General 12 Public License v2 or later. 11 This code is released under the GNU General Public License v2 or later. 13 12 14 13 The GPL v3 is accessible here: 15 14 http://www.gnu.org/licenses/gpl.html 16 15 17 The GPL v2 is accessible here:18 http://www.gnu.org/licenses/old-licenses/gpl-2.0.html19 20 16 It comes with no warranty whatsoever. 21 22 This code illustrates how to use Jython to:23 * work with selected items or how to process all the primitives of a certain kind (node, way, relation)24 17 25 18 ''' … … 34 27 import time 35 28 36 def getMapView():37 if Main.main and Main.main.map:38 return Main.main.map.mapView39 else:40 return None41 42 mv = getMapView()43 29 f = open('C:/export.gpx', 'w') 44 30 f.write('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n') 45 31 f.write('<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="OSM Route Manager" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">\n') 46 32 f.write('<!-- All data by OpenStreetMap, licensed under cc-by-sa-2.0 (http://creativecommons.org/licenses/by-sa/2.0/). -->\n') 47 if mv and mv.editLayer and mv.editLayer.data: 48 #selectedNodes = mv.editLayer.data.getSelectedNodes()49 #selectedWays = mv.editLayer.data.getSelectedWays()33 34 editLayer = Main.getLayerManager().getEditLayer() 35 if editLayer and editLayer.data: 50 36 selectedRelations = mv.editLayer.data.getSelectedRelations() 51 37 … … 53 39 JOptionPane.showMessageDialog(Main.parent, "Please select a collection relation") 54 40 else: 55 # nodetype = Node().getType()56 41 print 57 42 for collection in selectedRelations: … … 119 104 120 105 This code illustrates how to use Jython to: 121 * Download all referrer for an element 106 * Download all referrers for an element 122 107 123 108 ''' 124 109 from javax.swing import JOptionPane 125 110 from org.openstreetmap.josm import Main 126 import org.openstreetmap.josm.data.osm.Node as Node127 import org.openstreetmap.josm.data.osm.Way as Way128 import org.openstreetmap.josm.data.osm.Relation as Relation129 import org.openstreetmap.josm.data.osm.TagCollection as TagCollection130 import org.openstreetmap.josm.data.osm.DataSet as DataSet131 import org.openstreetmap.josm.data.osm.RelationMember as RelationMember132 111 import org.openstreetmap.josm.actions.DownloadReferrersAction as DownloadReferrersAction 133 #import org.openstreetmap.josm.actions.downloadtasks.DownloadReferrersTask as DownloadReferrersTask; 134 135 def getMapView(): 136 if Main.main and Main.main.map: 137 return Main.main.map.mapView 138 else: 139 return None 140 141 mv = getMapView() 142 if mv and mv.editLayer and mv.editLayer.data: 143 selectedElements = mv.editLayer.data.getSelected() 112 113 editLayer = Main.getLayerManager().getEditLayer() 114 if editLayer and editLayer.data: 115 selectedElements = editLayer.data.getSelected() 144 116 145 117 if not(selectedElements): 146 JOptionPane.showMessageDialog(Main.parent, " Please select an element")118 JOptionPane.showMessageDialog(Main.parent, "Selecteer een element") 147 119 else: 148 DownloadReferrersAction.downloadReferrers( mv.editLayer, selectedElements)120 DownloadReferrersAction.downloadReferrers(editLayer, selectedElements) 149 121 }}} 150 122 151 123 152 124 Download ontbrekende leden van de relatie: 153 154 125 155 126 {{{#!python … … 182 153 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask as DownloadRelationMemberTask 183 154 184 def getMapView(): 185 if Main.main and Main.main.map: 186 return Main.main.map.mapView 187 else: 188 return None 189 190 mv = getMapView() 191 if mv and mv.editLayer and mv.editLayer.data: 192 selectedRelations = mv.editLayer.data.getSelectedRelations() 155 editLayer = Main.getLayerManager().getEditLayer() 156 if editLayer: 157 selectedRelations = editLayer.data.getSelectedRelations()) 193 158 194 159 if not(selectedRelations): 195 JOptionPane.showMessageDialog(Main.parent, " Please select a node")160 JOptionPane.showMessageDialog(Main.parent, "Selecteer een relatie") 196 161 else: 197 162 for relation in selectedRelations: … … 199 164 #print dir(relation) 200 165 print dir(DownloadRelationMemberTask) 201 DownloadRelationMemberTask.run(DownloadRelationMemberTask(relation, relation.getIncompleteMembers(), mv.editLayer ))166 DownloadRelationMemberTask.run(DownloadRelationMemberTask(relation, relation.getIncompleteMembers(), editLayer )) 202 167 203 168 }}} … … 420 385 http://www.gnu.org/licenses/gpl.html 421 386 422 The GPL v2 is accessible here:423 http://www.gnu.org/licenses/old-licenses/gpl-2.0.html424 425 387 It comes with no warranty whatsoever. 426 388 427 389 This code Loops through selected turn restriction relations, trying to remove ways split from originally the same way (with to / from roles) under turn restriction relations which should no longer remain as members of these relations, as a result of a Potlatch issue: https://trac.openstreetmap.org/ticket/3254 428 390 429 Only work for turn restrictions with one via node 391 Only works for turn restrictions with one via node 430 392 431 393 e.g. Original : from: Way1, via: Node, to:Way2 … … 454 416 class RestrictionError(Exception): 455 417 pass 456 457 def getMapView():458 if Main.main and Main.main.map:459 return Main.main.map.mapView460 else:461 return None462 418 463 419 def getMembers (restriction): … … 596 552 597 553 validrestrictiontypes = ('only_straight_on', 'only_right_turn', 'only_left_turn', 'no_right_turn', 'no_left_turn', 'no_straight_on', 'no_u_turn') 598 mv = getMapView()599 if mv and mv.editLayer andmv.editLayer.data:600 selectedRelations = mv.editLayer.data.getSelectedRelations()554 editLayer = Main.getLayerManager().getEditLayer() 555 if editLayer and editLayer.data: 556 selectedRelations = editLayer.data.getSelectedRelations() 601 557 602 558 if not(selectedRelations): … … 607 563 if relation.get('type') == "restriction" and relation.get('restriction') in validrestrictiontypes: 608 564 try: 609 memberlist = getMembers (relation) 610 #print "".join(v * len(memberlist[v]) for v in memberlist.keys()) 565 memberlist = getMembers (relation) 611 566 if (len (memberlist["from"])) > 1 or (len (memberlist["to"])) > 1 : 612 567 # Repair attempt