3 votos

¿Cómo comprobar si la geometría es consciente de M?

Estoy tratando de determinar si mi shapefile que paso está en M-aware (tiene valor M). Sigo recibiendo un error

Attribute Error: 'Polyline' object has no attribute 'hasM'

No sé qué estoy haciendo mal.

import arcpy

def ValidInputGeometry(feat):
    is_valid_poly_line = False
    is_m_enabled = False
    error_msg = None
    if feat.type == "polyline":
        if is_m_enabled == feat.hasM:
            is_valid_poly_line = True
        else:
            error_msg = "The input geometry is not M-Aware"
    else:
        error_message = "The input geometry is not a polyline"
    return (is_valid_poly_line, error_msg)

station_interval = 10000
in_polyline_m_layer = "C:/Users/Algorithm/LWOB_levee.shp"
target_feature_rows = arcpy.SearchCursor(in_polyline_m_layer, "FID = 0", "", "", "")
layer_description = arcpy.Describe(in_polyline_m_layer)
shape_field = layer_description.ShapeFieldName

for row in target_feature_rows:
    feat = row.getValue(shape_field)

    (Valid, Msg) = ValidInputGeometry(feat)

1voto

auramo Puntos 161

Parece que los objetos geométricos devueltos por los cursores no están completamente atribuidos (no hasM, hasZ, etc.) pero puede averiguar si la propia clase de rasgo admite valores M utilizando la clase de rasgo Describe del objeto hasM propiedad:

arcpy.Describe(yourFeatureClass).hasM

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X