[Gvsig_desarrolladores] Número de geometrías de una multigeometría

Francisco Puga fpuga en icarto.es
Mie Abr 5 18:46:56 CEST 2017


Hola,

Quería obtener de forma rápida el número de geometrías (primitivas) de cada
feature de un shape.

No se si hay alguna forma de hacerlo directamente en gvSIG pero me hice un
script superrapido tal que así:

import gvsig

def main(*args):
    features = gvsig.currentLayer().features()
    for feature in features:
      code = feature['id1']
      num_geometries = feature.geometry().getPrimitivesNumber()
      # num_geometries = feature.geometry().getNumVertices()
      print '{}: {}'.format(code, num_geometries)

Pero da el error.

AttributeError: 'org.gvsig.fmap.geom.jts.primitive.curve.line.Line2' object
has no attribute 'getPrimitivesNumber'

No se si es porque el método getPrimitivesNumber no está en la interfaz
Geometry si no en Aggregate
<http://downloads.gvsig.org/download/gvsig-desktop-testing/dists/2.3.0/javadocs/html/org/gvsig/fmap/geom/aggregate/Aggregate.html>
que sólo heredan las geometrías multi. Si es así podría ser útil que este
método estuviera disponible para todas las geometrías para evitar tener que
hacer comprobaciones de tipo. Por ejemplo Postgis lo hace así con
ST_NumGeometries <http://postgis.net/docs/manual-2.1/ST_NumGeometries.html>.
De todas formas en las propiedades de la capa está declarada MultiCurve:2D.

También relacionado con esto. Si paso el script sobre otra capa que tengo,
en este caso un Multicurve:·3DM no me va ni el método getPrimitivesNumber()
ni el método getNumVertices()

Estoy en gvSIG 2.3.1.

Un saludo.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20170405/4634d128/attachment.html>


Más información sobre la lista de distribución gvSIG_desarrolladores