4 votos

¿Cómo construir objetos multiparche de cilindro o cubo en ArcGIS?

Estoy tratando de visualizar una serie de pozos de sondeo, que se componen de puntos sobre la superficie de la tierra, y de muestras de suelo de los valores tomados en 0,01 m de profundidad intervalos (en una tabla relacionada).

por ejemplo, en esta captura de pantalla, he seleccionado un pozo y se muestran sus muestras relacionadas en la tabla.

enter image description here

Idealmente me gustaría crear una serie de cilindros en 1m de profundidad segmentos, para representar el promedio de los valores de suelo, a través de ese segmento:

enter image description here

Puedo calcular el promedio de los valores de suelo para cualquier 1m sector, y sé que el inicio y el final de la profundidad de cada sector, y la anchura deseada (por ejemplo, 30 cm).

Mi pregunta: ¿Cómo puedo crear los cilindros?

Supongo que será preciso multiparches, pero no puedo ver nada en la Esri documentación sobre cómo crear los multiparches. Idealmente me gustaría script esta en arcpy como tengo miles de pozos para el proceso.

4voto

CodeSlave Puntos 7133

Es posible girar perforaciones (XYZ puntos) en polilíneas 3D. Escribí un sript un par de años atrás, que fue justo lo que hicieron, pero fue con ArcObjects. Cada grupo de puntos que tenía un valor único y acabo de bucle y construido las líneas 3D usando los puntos como Punto y FromPoint y se asigna el tipo de suelo de atributo para cada línea. Una vez finalizada la I simbolizado en el tipo de suelo utilizando el 3D de la línea de símbolo, que es un "cilindro". Usted puede convertir el 3D simbolizado líneas de multipatch pero no es necesario. Espero que esto ayude, yo tendría que cavar profundo para encontrar que la secuencia de comandos o volver a escribir desde cero. Yo también tuve una Exageración parámetro en la secuencia de comandos, de esta manera yo podría exagerar los sondeos, pero no en la superficie.

He encontrado una imagen del proyecto en el que he utilizado este enfoque. Esto fue hecho con ArcGIS 9.3 (ArcView) + 3D Analyst: enter image description here

3voto

Muchas gracias a @jakub por señalarme en la pista de la derecha. Voy a postear el código de Python fragmento de código que he utilizado en caso de que ayuda a nadie.

Yo en bucle a través de cada pozo para encontrar las coordenadas XY, luego de un bucle a través de la tierra lecturas para crear 0.5 m de profundidad segmentos.

Un consejo es que (parece ser) que es necesario para compensar uno de los vértices por una pequeña cantidad para evitar que se genere una longitud cero de la línea. Para cada fila:

point = json.loads(inRow[1].JSON)
x = point["x"]
y = point["y"]
z =inRow[2] #(elevation was stored as an attribute)
maxDepth = inRow[3] #Maximum depth of this borehole
bandDepth = 0.5 #Depth of each band/segment to create
numBands = int(round((maxDepth / bandDepth) + 0.5)) #number of bands to create
for band in range(0, numBands):

    top = band * bandDepth
    bottom = top + bandDepth
    vertices = [[x, y, (z - top)], [x + 0.001, y + 0.001, (z - bottom)]]
    pts = [arcpy.Point(*coords) for coords in vertices]
    line = arcpy.Polyline(arcpy.Array(pts), sr, True)

enter image description here

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