# importation du module principal d'OpenJump
from org.openjump.util.python.JUMP_GIS_Framework import *
# obtention des couches sélectionnées
couches = getSelectedLayers()
# fonctions disponibles pour les couches sélectionnées:
dir(couches)
['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']
# itération à travers les couches sélectionnées
for i in couches.iterator():
print couche.name
...
# fonctions disponibles pour une couche:
dir(couche)
['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']
### Applications ###
# itération à travers les géométries d'une couche
fc = couches[0].featureCollectionWrapper
for elem in range(fc.size):
obj = fc.features[elem]
geom = obj.getGeometry()
...
# fonctions disponibles pour la géométrie d'un élément (la 3D est reconnue par défaut):
dir(geom)
['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']
# d'où :
geom.geometryType
'Polygon'
# la géométrie
geom.envelope
POLYGON ((226023.7 18173, 226023.7 28173.5, 234026.3 28173.5, 234026.3 18173, 226023.7 18173))
# nombre de points
geom.getNumPoints()
5
# les coordonnées des points de la géométrie
geom.coordinates
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)])
geom.coordinate
(226023.7, 28173.5, NaN)
# le centroide
geom.getCentroid()
POINT (230024.86833801787 23173.222923277397)
# la limite extérieure de la géométrie
geom.getBoundaryDimension()
1
geom.getBoundary()
LINEARRING (226023.7 28173.5, 234025 28173.5, 234026.3 18173.1, 226024.5 18173, 226023.7 28173.5)
# ou
geom.exteriorRing
LINEARRING (226023.7 28173.5, 234025 28173.5, 234026.3 18173.1, 226024.5 18173, 226023.7 28173.5)
# les attributs
fonctions disponibles pour les attributs d'un élément:
>>> dir(obj)
['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']
# d'où
obj.attributes
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'])
# on retrouve donc la géométrie
obj.getGeometry()
POLYGON ((226023.7 28173.5, 234025 28173.5, 234026.3 18173.1, 226024.5 18173, 226023.7 28173.5))
# ou
obj.getAttribute(0)
POLYGON ((226023.7 28173.5, 234025 28173.5, 234026.3 18173.1, 226024.5 18173, 226023.7 28173.5))
# attributs éventuels (fonction de la liste obtenue)
obj.getAttribute(1)
'71/5'
obj.getString(3)
'225W'