Skip to Content

traitements avec le module Jython d'OpenJump

  1. # importation du module principal d'OpenJump
  2. from org.openjump.util.python.JUMP_GIS_Framework import *
  3. # obtention des couches sélectionnées
  4. couches = getSelectedLayers()
  5. # fonctions disponibles pour les couches sélectionnées:
  6. dir(couches)
  7. ['add', 'addAll', 'class', 'clear', 'clone', 'contains', 'containsAll', 'empty', 'ensureCapacity', 'equals', 'get', 'getClass', 'hashCode', 'indexOf', 'isEmpty', 'iterator', 'lastIndexOf', 'listIterator', 'notify', 'notifyAll', 'remove', 'removeAll', 'retainAll', 'set', 'size', 'subList', 'toArray', 'toString', 'trimToSize', 'wait']
  8.  
  9. # itération à travers les couches sélectionnées
  10. for i in couches.iterator():
  11. print couche.name
  12. ...
  13. # fonctions disponibles pour une couche:
  14. dir(couche)
  15. ['FIRING_APPEARANCE_CHANGED_ON_ATTRIBUTE_CHANGE', 'addStyle', 'addUndo', 'basicStyle', 'blackboard', 'class', 'cloneStyles', 'dataSourceQuery', 'defaultLineColor', 'description', 'dispose', 'drawingLast', 'editable', 'equals', 'featureCollection', 'featureCollectionModified', 'featureCollectionWrapper', 'fireAppearanceChanged', 'fireLayerChanged', 'getBasicStyle', 'getBlackboard', 'getClass', 'getDataSourceQuery', 'getDescription', 'getFeatureCollectionWrapper', 'getLabelStyle', 'getLayerManager', 'getMaxScale', 'getMinScale', 'getName', 'getStyle', 'getStyles', 'getTask', 'getVertexStyle', 'hasReadableDataSource', 'hashCode', 'isDrawingLast', 'isEditable', 'isFeatureCollectionModified', 'isReadonly', 'isScaleDependentRenderingEnabled', 'isSelectable', 'isSynchronizingLineColor', 'isVisible', 'labelStyle', 'layerManager', 'maxScale', 'minScale', 'name', 'notify', 'notifyAll', 'readonly', 'removeStyle', 'scaleDependentRenderingEnabled', 'selectable', 'setDataSourceQuery', 'setDescription', 'setDrawingLast', 'setEditable', 'setFeatureCollection', 'setFeatureCollectionModified', 'setLayerManager', 'setMaxScale', 'setMinScale', 'setName', 'setReadonly', 'setScaleDependentRenderingEnabled', 'setSelectable', 'setStyles', 'setSynchronizingLineColor', 'setVisible', 'styles', 'synchronizingLineColor', 'task', 'toString', 'tryToInvalidateEnvelope', 'vertexStyle', 'visible', 'wait']
  16.  
  17. ### Applications ###
  18. # itération à travers les géométries d'une couche
  19. fc = couches[0].featureCollectionWrapper
  20. for elem in range(fc.size):
  21. obj = fc.features[elem]
  22. geom = obj.getGeometry()
  23. ...
  24.  
  25. # fonctions disponibles pour la géométrie d'un élément (la 3D est reconnue par défaut):
  26. dir(geom)
  27. ['SRID', 'apply', 'area', 'boundary', 'boundaryDimension', 'buffer', 'centroid', 'class', 'clone', 'compareTo', 'contains', 'convexHull', 'coordinate', 'coordinates', 'coveredBy', 'covers', 'crosses', 'difference', 'dimension', 'disjoint', 'distance', 'empty', 'envelope', 'envelopeInternal', 'equals', 'equalsExact', 'equalsNorm', 'equalsTopo', 'exteriorRing', 'factory', 'geometryChanged', 'geometryType', 'getArea', 'getBoundary', 'getBoundaryDimension', 'getCentroid', 'getClass', 'getCoordinate', 'getCoordinates', 'getDimension', 'getEnvelope', 'getEnvelopeInternal', 'getExteriorRing', 'getFactory', 'getGeometryN', 'getGeometryType', 'getInteriorPoint', 'getInteriorRingN', 'getLength', 'getNumGeometries', 'getNumInteriorRing', 'getNumPoints', 'getPrecisionModel', 'getSRID', 'getUserData', 'hashCode', 'interiorPoint', 'intersection', 'intersects', 'isEmpty', 'isRectangle', 'isSimple', 'isValid', 'isWithinDistance', 'length', 'norm', 'normalize', 'notify', 'notifyAll', 'numGeometries', 'numInteriorRing', 'numPoints', 'overlaps', 'precisionModel', 'rectangle', 'relate', 'reverse', 'setSRID', 'setUserData', 'simple', 'symDifference', 'toString', 'toText', 'touches', 'union', 'userData', 'valid', 'wait', 'within']
  28. # d'où :
  29. geom.geometryType
  30. 'Polygon'
  31. # la géométrie
  32. geom.envelope
  33. POLYGON ((226023.7 18173, 226023.7 28173.5, 234026.3 28173.5, 234026.3 18173, 226023.7 18173))
  34. # nombre de points
  35. geom.getNumPoints()
  36. 5
  37. # les coordonnées des points de la géométrie
  38. geom.coordinates
  39. array(com.vividsolutions.jts.geom.Coordinate,[(226023.7, 28173.5, NaN), (234025.0, 28173.5, NaN), (234026.3, 18173.1, NaN), (226024.5, 18173.0, NaN), (226023.7, 28173.5, NaN)])
  40. geom.coordinate
  41. (226023.7, 28173.5, NaN)
  42. # le centroide
  43. geom.getCentroid()
  44. POINT (230024.86833801787 23173.222923277397)
  45. # la limite extérieure de la géométrie
  46. geom.getBoundaryDimension()
  47. 1
  48. geom.getBoundary()
  49. LINEARRING (226023.7 28173.5, 234025 28173.5, 234026.3 18173.1, 226024.5 18173, 226023.7 28173.5)
  50. # ou
  51. geom.exteriorRing
  52. LINEARRING (226023.7 28173.5, 234025 28173.5, 234026.3 18173.1, 226024.5 18173, 226023.7 28173.5)
  53.  
  54. # les attributs
  55. fonctions disponibles pour les attributs d'un élément:
  56. >>> dir(obj)
  57. ['ID', 'attributes', 'class', 'clone', 'compare', 'compareTo', 'equals', 'geometry', 'getAttribute', 'getAttributes', 'getClass', 'getDouble', 'getGeometry', 'getID', 'getInteger', 'getSchema', 'getString', 'hashCode', 'isModified', 'modified', 'notify', 'notifyAll', 'schema', 'setAttribute', 'setAttributes', 'setGeometry', 'setModified', 'setSchema', 'toString', 'wait']
  58.  
  59. # d'
  60. obj.attributes
  61. array(java.lang.Object,[POLYGON ((226023.7 28173.5, 234025 28173.5, 234026.3 18173.1, 226024.5 18173, 226023.7 28173.5)), '71/5', '71', '225W', 'LAMORTEAU', 'LAMORTEAU - RUETTE', '71/5-6'])
  62. # on retrouve donc la géométrie
  63. obj.getGeometry()
  64. POLYGON ((226023.7 28173.5, 234025 28173.5, 234026.3 18173.1, 226024.5 18173, 226023.7 28173.5))
  65. # ou
  66. obj.getAttribute(0)
  67. POLYGON ((226023.7 28173.5, 234025 28173.5, 234026.3 18173.1, 226024.5 18173, 226023.7 28173.5))
  68. # attributs éventuels (fonction de la liste obtenue)
  69. obj.getAttribute(1)
  70. '71/5'
  71. obj.getString(3)
  72. '225W'