Más

¿Usar geometría de entidades Z y M para crear gráficos de líneas en ArcPy / Python?


Soy un novato de Python (v2.6.5) que intenta trazar una serie de polilíneas 3D en gráficos. Hasta ahora se me ocurrió:

# Importar módulos del sistema import arcpy, os, sys, string desde arcpy import env print "Módulos importados". # Establecer la configuración del entorno arcpy.env.overwriteOutput = True arcpy.env.workspace = r "X:  HaulRoad  SpatialData" arcpy.env.scratchWorkspace = r "X:  HaulRoad  SpatialData" imprimir "Conjunto de espacios de trabajo". # Establecer variables locales infc = " HaulRd.gdb  Treatment  XS_2009BEBRklnTerr_interpZ_Rte_isect" graph_template = r " XS  XS_Seg02.55.grf" # gráfico de plantilla creado originalmente con la herramienta de perfil 3d Analyst, personalizado en Propiedades avanzadas, luego exportado a formato grf imprimir "Conjunto de variables locales". # crear una lista de campos de interés de FC o de la tabla de campos de interés = ['SegID', 'STA_calc', 'shape.Z', 'shape.M'] #crear una lista vacía para que el cursor llene la lista = [] imprimir " Se crearon una tabla y una lista vacía ". # use el cursor de búsqueda para obtener el valor del campo para un registro dado filas = arcpy.SearchCursor (infc, "", "", "SegID; STA_calc") para filas en filas: list.append (row.SegID) list.append (row .STA_calc) del row, las filas imprimen "Filas agregadas a la tabla temporal. Lista eliminada". #remove duplicates from list list = dict.fromkeys (list) list = list.keys () print "Duplicados eliminados". #create una variable de memoria temporal memoryFC = "in_memory" + "" + "virtualFC" print "Característica de memoria creada". para n en la lista: arcpy.TableSelect_analysis (infc, memoryFC, "STA_calc =" + str (n)) out_Seg = fields [0] out_STA = fields [1] out_graph_name = n out_graph_pdf = r " XS  Script  XS_chart_Seg" + str (out_Seg) + str (out_STA) + ".pdf" graph_data = memoryFC # Crear una capa de entidades temporal arcpy.MakeFeatureLayer_management (infc, "XS_lyr") # Crear el gráfico a partir de una capa de entidades temporal graph = arcpy.Graph () # Especificar la título del gráfico graph.graphPropsGeneral.title = "Segment" + out_Seg # Especifica el subtítulo del gráfico graph.graphPropsGeneral.subtitle = "Station" + out_STA # Especifica el título del eje izquierdo graph.graphAxis [0] .title = "Elevation (ft)" # Especifica el título del gráfico del eje inferior .graphAxis [2] .title = "Station (ft)" # Agrega una serie de barras verticales al gráfico graph.addSeriesLineVertical ("XS_lyr", shape.Z, shape.M) # Genere un gráfico, que se crea en la memoria arcpy.MakeGraph_management (graph_template, graph, out_graph_name) # Guarde el gráfico como PDF arcpy.SaveGraph_management ( out_graph_name, out_graph_pdf, "MAINTAIN_ASPECT_RATIO", 800, 600) #clean in-memory arcpy.Delete_management ("in_memory") imprime "PDF creados y memoria limpia".

Recibo un error en la línea 82 donde estoy agregando la serie de líneas verticales. Supongo que el problema es que estoy tratando de trazar valores basados ​​en la geometría de la característica en lugar de los valores en la tabla de atributos.

¿Es esto posible sin alguna conversión intermedia (por ejemplo, convertir vértices en puntos)?

Los datos de origen son una clase de entidad de polilínea con valores Z y M en una geodatabase de archivos Arc 10.0 SP4.


Mi intención general se comunicó en una publicación anterior: ¿Crear títulos de gráficos dinámicos en ArcMap? No tuve éxito en mis intentos de actuar desde dentro de Arc.


A continuación, aparece el mensaje de error que recibo en IDLE:
Traceback (última llamada más reciente): Archivo "C: temp MakeGraphTest_v100_20140616.py", línea 82, en graph.addSeriesLineVertical ("XS_lyr", shape.Z, shape.M) NameError: el nombre 'shape' no está definido


shape.Z y shape.M no son campos, son propiedades del campo de forma. Si desea trazar Z y M, debe exportarlos a nuevos campos y usar los nuevos campos enarcpy.graph.addSeriesLineVertical.


¿Buena biblioteca de geometría en Python? [cerrado]

¿Quieres mejorar esta pregunta? Actualice la pregunta para que esté relacionada con el tema de Stack Overflow.

Estoy buscando una biblioteca buena y bien desarrollada para manipulaciones geométricas y evaluaciones en Python, como:

  • evaluar la intersección entre dos líneas en 2D y 3D (si está presente)
  • evaluar el punto de intersección entre un plano y una línea, o la línea de intersección entre dos planos
  • evaluar la distancia mínima entre una línea y un punto
  • encontrar lo ortonormal a un plano que pasa por un punto
  • rotar, trasladar, reflejar un conjunto de puntos
  • hallar el ángulo diedro definido por cuatro puntos

Tengo un libro compendio para todas estas operaciones, y podría implementarlo pero desafortunadamente no tengo tiempo, así que disfrutaría de una biblioteca que lo haga. La mayoría de las operaciones son útiles para juegos, por lo que estoy seguro de que algunas de estas funcionalidades se pueden encontrar en bibliotecas de juegos, pero preferiría no incluir funcionalidades (como gráficos) que no necesito.


Propiedades

Devuelve una representación JSON de la geometría como una cadena.

La cadena devuelta se puede convertir a un diccionario usando la función json.loads de Python.

Devuelve la representación binaria conocida (WKB) para la geometría OGC. Proporciona una representación portátil de un valor de geometría como un flujo contiguo de bytes.

Devuelve la representación de texto conocido (WKT) para la geometría OGC. Proporciona una representación portátil de un valor de geometría como una cadena de texto.

El área de una entidad poligonal. Vacío para todos los demás tipos de funciones.

El verdadero centroide si está dentro o sobre la entidad, de lo contrario, se devuelve el punto de etiqueta. Devuelve un objeto puntual.

La extensión de la geometría.

El primer punto de coordenadas de la geometría.

Una cadena delimitada por espacios de los pares de coordenadas del rectángulo convexo del casco.

Es cierto, si el número de piezas de esta geometría es más de uno.

El punto en el que se encuentra la etiqueta. El labelPoint siempre se encuentra dentro o sobre una característica.

La última coordenada de la función.

La longitud de la característica lineal. Cero para tipos de entidades puntuales y multipunto.

La longitud 3D de la entidad lineal. Cero para tipos de entidades puntuales y multipunto.

El número de piezas de geometría de la operación.

El número total de puntos para la función.

La referencia espacial de la geometría.

El centro de gravedad de una función.

El tipo de geometría: polígono, polilínea, punto, multipunto, multiparche, dimensión o anotación.


Methodenübersicht

Construye el límite de la geometría.

Construye un polígono a una distancia especificada de la geometría.

Construye la intersección de la geometría y la extensión especificada.

Gibt an, ob die Basisgeometrie die Vergleichsgeometrie entusiasmo.

contiene ist das Gegenteil von dentro.

En esta ilustración solo se muestran las relaciones verdaderas.

Construye la geometría que es el polígono delimitador mínimo de manera que todos los ángulos externos son convexos.

Gibt an, ob die beiden Geometrien sich in einer Geometrie mit einem geringeren Shape-Typ überschneiden.

Zwei Polylinien kreuzen sich, wenn sie nur Punkte gemeinsam haben, von denen mindestens einer kein Endpunkt ist. Eine Polylinie und ein Polygon kreuzen sich, wenn sie im Inneren des Polygons eine Polylinie oder einen Punkt (für eine vertikale Linie) gemeinsam haben, die bzw. der nicht der gesamten Polylinie entspricht.

En esta ilustración solo se muestran las relaciones verdaderas.

Divide esta geometría en una parte a la izquierda de la polilínea de corte y una parte a la derecha.

Cuando se corta una polilínea o un polígono, se divide donde se cruza con la polilínea de corte. Cada pieza se clasifica como izquierda o derecha del cortador. Esta clasificación se basa en la orientación de la línea de corte. Las partes de la polilínea de destino que no se cruzan con la polilínea de corte se devuelven como parte de la derecha del resultado para esa polilínea de entrada. Si no se corta una geometría, la geometría de la izquierda estará vacía (Ninguna).

Construye la geometría que se compone solo de la región exclusiva de la geometría base, pero que no forma parte de la otra geometría. La siguiente ilustración muestra los resultados cuando el polígono rojo es la geometría de origen.

Gibt an, ob die Basis- und die Vergleichsgeometrie keine gemeinsamen Punkte aufweisen.

Zwei Geometrien überschneiden sich, wenn disjoint den Wert False zurückgibt.

En esta ilustración solo se muestran las relaciones verdaderas.

Devuelve la distancia mínima entre dos geometrías. Si las geometrías se cruzan, la distancia mínima es 0.

Ambas geometrías deben tener la misma proyección.

Indica si las geometrías base y de comparación son del mismo tipo de forma y definen el mismo conjunto de puntos en el plano. Esta es una comparación 2D, solo se ignoran los valores M y Z.

En esta ilustración solo se muestran las relaciones verdaderas.

Devuelve el área de la entidad mediante un tipo de medida.

Devuelve la longitud de la función mediante un tipo de medida.

Devuelve una matriz de objetos puntuales para una parte particular de la geometría o una matriz que contiene varias matrices, una para cada parte.

Construye una geometría que es la intersección geométrica de las dos geometrías de entrada. Se pueden usar diferentes valores de dimensión para crear diferentes tipos de formas.

La intersección de dos geometrías del mismo tipo de forma es una geometría que contiene solo las regiones de superposición entre las geometrías originales.

Para obtener resultados más rápidos, pruebe si las dos geometrías están disjuntas antes de llamar a intersect.

Devuelve una medida desde el punto de inicio de esta línea hasta in_point.

Gibt an, üb die Überschneidung der beiden Geometrien denselben Shape-Typ wie eine der Eingabegeometrien aufweist, aber keiner der Eingabegeometrien entspricht.

En esta ilustración solo se muestran las relaciones verdaderas.

Devuelve un punto en una línea a una distancia especificada desde el principio de la línea.

Proyecta una geometría y opcionalmente aplica una geotransformación.

Para proyectar, la geometría debe tener una referencia espacial y no tener un UnknownCoordinateSystem. El nuevo sistema de referencia espacial pasado al método define el sistema de coordenadas de salida. Si se desconoce alguna de las referencias espaciales, las coordenadas no se cambiarán. El método ProjectAs no cambia los valores de medida y Z-.

Encuentra el punto en la polilínea más cercano al in_point y la distancia entre esos puntos. También devuelve información sobre el lado de la línea en el que se encuentra el in_point, así como la distancia a lo largo de la línea donde se encuentra el punto más cercano.

Devuelve un nuevo punto basado en in_point ajustado a esta geometría.

Construye la geometría que es la unión de dos geometrías menos la intersección de esas geometrías.

Las dos geometrías de entrada deben ser del mismo tipo de forma.

Gibt an, ob sich die Grenzen der Geometrien überschneiden.

Zwei Geometrien berühren sich, wenn die Schnittmenge der Geometrien nicht leer, die Schnittmengen der Innenbereiche jedoch leer ist. Ein Punkt berührt beispielsweise eine Polylinie nur, wenn der Punkt lagegleich mit einem der Endpunkte der Polylinie ist.

En esta ilustración solo se muestran las relaciones verdaderas.

Construye la geometría que es la unión de la teoría de conjuntos de las geometrías de entrada.

Las dos geometrías que se unen deben ser del mismo tipo de forma.

Gibt an, ob sich die Basisgeometrie innerhalb der Vergleichsgeometrie befindet.

Der within -Operator stellt das Gegenteil von contiene dar.

En esta ilustración solo se muestran las relaciones verdaderas.


a tu figura de TikZ. Obtendrás esto:

No entiendo por qué necesita / quiere usar estas propiedades de eje solo para hacer esta imagen, así que tuve que proponer una respuesta más simple, usando ángulos, bibliotecas de citas. Con esta solución, no necesita ningún cálculo propio, simplemente coloque nodos y dibuje el ángulo entre ellos.

También puede hacer esto usando la biblioteca tkz-euclide.

Tenga en cuenta que puede cambiar las propiedades del ángulo (si no desea que se llene, etc.)


Graficar planaridad y método de suma de ruta de Hopcroft-Tarjan para pruebas de planaridad

Gráficos planos desempeñan un papel central en muchos problemas de geometría computacional. La determinación del isomorfismo de estructuras químicas se simplifica si las estructuras son planas. Otro ejemplo es cuando un ingeniero desea incrustar una red de componentes en un chip. Los componentes están representados por cables y no se pueden cruzar dos cables sin crear un cortocircuito. Este problema se puede resolver tratando la red como un gráfico y encontrando una incrustación plana de la misma.

A continuación se presentan algunos conceptos básicos necesarios. Un gráfico G = (V, E) es planar si es posible dibujarlo en un plano de modo que ningún borde se cruce, excepto en los puntos finales. Tal dibujo se llama incrustación plana. Un ejemplo de gráfico plano es K4, la gráfica completa de 4 vértices (Figura 1).

No todos los gráficos son planos. La Figura 2 da ejemplos de dos gráficos que no son planos. Son conocidos como K5, el gráfico completo en cinco vértices, y K_, el gráfico bipartito completo en dos conjuntos de tamaño 3. No importa qué tipo de curvas convolutas se elijan para representar los bordes, el intento de incrustarlas siempre falla cuando el último de los bordes no se puede insertar sin cruzar otro borde, como se ilustra en la figura.

Una secuencia de aristas consecutivas que se conectan tu y v se llama un sendero de GRAMO desde tu para v. Un camino es simple si todos sus vértices son distintos. Un camino desde un vértice a sí mismo es un camino cerrado. Un camino cerrado desde v para v con uno o más bordes es un ciclo si todos sus bordes son distintos y el único vértice que aparece dos veces es v. Usamos p: u* v para denotar que pag es un camino desde tu para v en GRAMO.

Un árbol (dirigido, enraizado) T es un gráfico dirigido con una raíz r, de modo que cada vértice en T es accesible desde r, no entran bordes r, y exactamente una arista entra en cada otro vértice en T. La relación "(v, w) es una ventaja en T " se denota por vw. La relación "hay un camino de v a w en T"" Se denota por v* w. Si vw, v es el padre de w y w es un hijo de v. Si v* w, v es un antepasado de w y w es un descendiente de v. Cada vértice es un antepasado y un descendiente de sí mismo. Si GRAMO es un gráfico dirigido, un árbol T es un árbol de expansión de GRAMO Si T es un subgrafo de GRAMO que contiene todos los vértices de GRAMO.

A subdivisión de un borde (x, y) de un gráfico se obtiene creando un nuevo nodo zy reemplazando (x, y) con nuevos bordes (x, z) y (z, y). A subdivisión de un gráfico es cualquier gráfico que pueda obtenerse de él mediante una secuencia de operaciones de subdivisión.

Ya que K5 y K_ no son planas, es obvio que las subdivisiones de estos gráficos tampoco son planas. Por lo tanto, un gráfico que tiene un subgráfico que es una subdivisión de K5 o K_ como subgrafo no debe ser plano. Se dice que tal subgrafo es homeomorfo a un K_ o una K5. Un resultado famoso en la teoría de grafos es el teorema de Kuratowski, que establece que la ausencia de una subdivisión de un K5 o un K_ también es suficiente para que un gráfico sea plano.

En general, los algoritmos de gráficos requieren una forma sistemática de explorar un gráfico. La técnica más importante y común utilizada por los algoritmos de prueba de planaridad es la Primera búsqueda en profundidad.

Profundidad primera búsqueda (DFS) es un método para visitar todos los vértices de un gráfico GRAMO de una manera específica. Comienza desde un vértice elegido arbitrariamente de GRAMO como un nodo raíz, y continúa moviéndose desde el vértice actual a un vecino adyacente inexplorado. Cuando el vértice actual no tiene vértices adyacentes inexplorados, el recorrido retrocede al primer vértice con vértices adyacentes inexplorados. Mire las figuras a continuación para ver un ejemplo de DFS.

Los bordes utilizados por el DFS para llegar a los vértices de GRAMO formar un árbol de expansión T de GRAMO, llamada Palmera, o Árbol DFS. Entonces la búsqueda de alguna manera convierte GRAMO en un gráfico dirigido. La raíz de T es el vértice desde el que se inicia la visita. Los bordes de T son llamados bordes de árboles, mientras que los bordes restantes de GRAMO son llamados bordes traseros y se indican mediante una curva punteada en la palmera. La búsqueda en profundidad es importante porque la estructura de los caminos en una palmera es muy simple.

Un gráfico no dirigido G es conectado si, para cada par de vértices tu y v, GRAMO contiene un camino desde tu para v. A componente conectado de un gráfico es un subgráfico conectado máximo.

Un vértice de articulación en un gráfico hay un vértice cuya eliminación desconecta el gráfico. Un gráfico es biconectado si no tiene vértice de articulación. A componente biconectado de un gráfico es un subgráfico biconectado máximo.

Subgrafo de Kuratowski es un subgrafo que tiene una subdivisión de K5 o K_ <3, 3>.

Teorema de Kuratowski (Kuratowski [Ku30]) Un gráfico finito es plano si y solo si no contiene el subgrafo de Kuratowski.

Una demostración de este teorema por Dirac y Schuster (1954) se puede encontrar en [BM76]. La demostración es bastante extensa, en la que tanto los dos lemas principales como la principal prueba del teorema utilizaron la contradicción. Otra prueba de que el uso de la inducción sobre el número de vértices se debe a Thomassen (1980) [GT87]. Aunque esta prueba no es la más corta ni la más sencilla, es muy esclarecedora porque también arroja otros resultados sobre incrustaciones planas. Un resultado es el teorema de Fary de que los bordes de una incrustación plana de un grafo simplicial pueden elegirse como líneas rectas (otros son el teorema de Tutte y el teorema de Whitney). Además, la demostración de Thomassen se convierte fácilmente en un algoritmo de planaridad que es polinomial en el número de vértices.

Algoritmo ingenuo para pruebas de planaridad

Cabría preguntarse si el elegante teorema anterior de Kuratowski podría usarse como un criterio para probar la planicidad del gráfico de una manera ingenua. La respuesta es sí, y el algoritmo ingenuo basado en este teorema tiene un tiempo de ejecución exponencial, como se ilustra a continuación.

El grado o valencia de un vértice es el número de aristas incidentes de ese vértice. Dejar tu ser un vértice de grado 2 en un gráfico G = (V, E), y deja e1 y e2 ser los bordes incidentes en tu, decir e1 = (u, v), e2 = (u, w). El gráfico obtenido al "suavizar en tu"Tiene como conjunto de vértices V/ y por su juego de bordes mi/ más una nueva ventaja entre v y w. Subdividir este nuevo borde invertiría la operación de suavizado en tu. Entonces tenemos el siguiente resultado, que es una consecuencia de Teorema de Kuratowski:

Dejar GRAMO ser un gráfico. Para cada subconjunto de mi cuya eliminación deja solo un componente no trivial H, construya el "gráfico de suavizado" H ^ suavizando sucesivamente cada vértice de valencia 2 en H, excepto posiblemente por un último vértice si H es un ciclo. Si algun H ^ es isomorfo a K5 o K_ entonces el gráfico no es plano, de lo contrario, GRAMO es plano.

Puesto que hay 2 ^ subconjuntos de bordes a considerar, este algoritmo ingenuo tiene un tiempo de ejecución exponencial.

Algoritmo de adición de ruta de Hopcroft y Tarjan

El mejor enfoque para el problema de planaridad parece ser un intento de construir una representación de una incrustación plana del gráfico dado. Si dicha presentación se puede completar, entonces el gráfico es plano; de lo contrario, el gráfico no es plano. Uno de esos algoritmos es el método de adición de ruta de Hopcroft y Tarjan [HT74]. Fueron los primeros en demostrar que las pruebas de planaridad se pueden realizar en tiempo lineal.

Antes de dar el boceto del algoritmo, podríamos hacer algunas observaciones para restringir la clase del gráfico considerado. GRAMO. Es obvio que una gráfica es plana si y solo si todos sus componentes conectados son planos. Por tanto, podemos suponer que GRAMO está conectado.

Un gráfico es plano si y solo si todos sus componentes biconectados son planos ([Be64]). Además, los vértices de articulación se pueden encontrar en tiempo lineal ([HT73], [Ta72]), por lo que basta con incrustar cada componente biconectado por separado y luego conectarlos por sus vértices de articulación contiguos. Por lo tanto, podemos suponer que GRAMO está biconectado.

El siguiente resultado es el conocido teorema de Euler:

(Euler 1750) Sea GRAMO ser un grafo plano conectado, y sea n, m, f denotar respectivamente el número de vértices, aristas y caras de GRAMO. Luego n-m + f = 2.

Este teorema se puede demostrar por inducción sobre el número de aristas metro. Lo que necesitamos es el siguiente corolario:

Si GRAMO es un gráfico plano con n (≥ 3) vértices y metro bordes, entonces m ≤ 3n - 6.

Ahora estamos listos para dar el esquema del método de adición de ruta.

Bosquejo del algoritmo

  • Cuente el número de aristas, si | E | & gt 3 | V | - 6 entonces no es plano (usando el corolario anterior para deshacerse de gráficos con demasiados bordes).
  • Aplica DFS, convirtiendo la gráfica en una T de palmera y numerando los vértices.
  • Busque un ciclo en el árbol y elimínelo, dejando un conjunto de piezas desconectadas (Use Auslander, Parter, el algoritmo de Goldstein, [AP61], [Go63]).
  • Compruebe la planicidad de cada pieza más el ciclo original (aplicando el algoritmo de forma recursiva).
  • Determina si las incrustaciones de las piezas se pueden combinar para dar una incrustación de todo el gráfico.

Cada llamada recursiva al algoritmo requiere encontrar un ciclo y agregarle una ruta simple a la vez. Cada una de estas nuevas rutas conecta dos viejos vértices a través de nuevos bordes y vértices (a veces, piezas enteras se voltean, alrededor de alguna línea para hacer esto, necesitamos usar un corolario del conocido Teorema de la curva de Jordan: una simple curva cerrada divide el plano en exactamente dos regiones conectadas). Eso explica el nombre de "método de adición de ruta". Eso también explica el importante uso de DFS para dividir el gráfico en rutas simples que pueden ensamblarse en los ciclos necesarios para la prueba de planaridad. Tomaré el ejemplo del gráfico GRAMO y DFS árbol T de la figura 3 arriba para ilustrar.

Ahora considere el primer ciclo C. Consistirá en una secuencia de bordes de árboles seguidos de un borde posterior en T. La numeración de vértices es tal que los vértices están ordenados por número a lo largo del ciclo. Entonces, en este ejemplo, el ciclo C es 1234581. Cuándo C es removido, GRAMO cae en varias piezas conectadas. Cada pieza que no forme parte del ciclo constará de un solo borde posterior (v, w) (trozo s1 en este ejemplo), o del borde de un árbol (v, w) más un subárbol con raíz w, más todos los bordes posteriores que parten del subárbol (pieza s2 en este caso). Cada pieza puede ir "adentro" o "afuera" C por el Teorema de la curva de Jordan. Cuando agregamos una pieza, algunas otras piezas deben moverse o `` voltearse '' de adentro hacia afuera o viceversa si es necesario (para mantener la planaridad) hasta que no se pueda agregar una pieza o todo el gráfico esté incrustado en el plano. . Este ejemplo no muestra el caso "invertido", pero se puede consultar la Figura 4 y 5 en el artículo a modo de ilustración. Una modificación de DFS ayudará a generar un orden de rutas de manera que todas las rutas de una pieza se generen antes que las de cualquier otra pieza (s1 tiene un camino y s2 tiene tres caminos en este caso), y las piezas se exploran en orden decreciente de v donde v es el punto de partida de la ruta como arriba.

Una pieza debe estar completamente incrustada en un lado de C por el teorema de la curva de Jordan. Para insertar un segmento (digamos s2), encontramos un camino pag en eso. Elegimos un lado, digamos el izquierdo, en el que incrustar pag. Comparamos pag con bordes traseros previamente incrustados para determinar si pag se puede incrustar. Si no, movemos piezas que tienen bordes traseros bloqueando pag de izquierda a derecha. Si pag se puede incrustar después de mover piezas, lo incrustamos. Sin embargo, si movemos piezas de izquierda a derecha, es posible que tengamos que mover otras piezas de derecha a izquierda. Por lo tanto, puede ser imposible incrustar pag. Si es así, declaramos que el gráfico no es plano. Si pag se puede incrustar, intentamos incrustar el resto de la pieza (s2) utilizando el algoritmo de forma recursiva. Luego intentamos incrustar la siguiente pieza. En este ejemplo, la pieza s2 necesita ser transformado en pieza s2 y # x27 como se muestra en la Figura 5.

Aunque el funcionamiento interno del algoritmo se basa en la búsqueda de una representación plana del gráfico de entrada, no se describió cómo producir realmente una incrustación plana del mismo. Veinte años más tarde, Mehlhorn y Mutzel llenaron el vacío y describieron cómo recopilar, durante la fase de prueba, la información necesaria para construir la incrustación plana que se utilizó implícitamente para mostrar la planaridad [MM96].

Los gráficos planos y las pruebas de planaridad juegan un papel esencial en varios problemas de geometría computacional, incluidos los sistemas de información geográfica y la ubicación de puntos. Por ejemplo, el diseño de circuitos integrados requiere saber cuándo se puede incrustar un circuito en un plano.

En 1974, Hopcroft y Tarjan [HT74] propusieron el primer algoritmo de prueba de planaridad en tiempo lineal. Este algoritmo, también llamado algoritmo de adición de ruta, comienza a partir de un ciclo y le agrega una ruta a la vez. Sin embargo, el algoritmo es tan complejo y difícil de implementar que varias otras contribuciones siguieron su avance. Por ejemplo, unos veinte años después de [HT74], Mehlhorn y Mutzel [MM96] contribuyeron con un artículo para aclarar cómo construir la incrustación de un gráfico que resulta ser plano por el algoritmo original de Hopcroft y Tarjan.

[AP61] Auslander, L. y Parter, S. V., Sobre la incrustación de gráficos en el avión, J. Math. y Mech. 10, 517-523, 1961.

[Be64] Berge, C., La teoría de los gráficos y sus aplicaciones, Alision Doig. Methuen, Londres, 1964.

[BM76] J. A. Bondy, U. S. R. Murty, Teoría de grafos con aplicaciones, Holanda Septentrional, 1982.

[Ir63] Goldstein, A. J., Un algoritmo eficiente y constructivo para probar si un gráfico se puede incrustar en un plano., Graph and Combinatorics Conf., Contrato No. NONR 1858- (21), 1963.

[GT87] Jonathan L. Gross, Thomas W. Tucker, Teoría de grafos topológicos, Wiley-Interscience, 1987.

[HT73] Hopcroft, J. y Tarjan, R., Algoritmos eficientes para la manipulación de gráficos, Com. ACM 16, 372–378, 1973.

[HT74] Hopcroft, John Tarjan, Robert E., Prueba de planaridad eficiente, Revista de la Asociación de Maquinaria de Computación 21 (4): 549-568, 1974.

[Ku30] Kuratowski, C., Sur le probleme des corbes gauches en topologie, Fundamenta Mathematicae 15, 271-283, 1930.

[MM96] Kurt Mehlhorn y Petra Mutzel., En la fase de incrustación del algoritmo de prueba de planaridad de Hopcroft y Tarjan., Algorithmica, 16: 233–242, 1996.

[Ta72] Tarjan, R., Búsqueda de profundidad primero y algoritmos de gráficos lineales, SIAM J. Comput. 1, 2 146-159, 1972.


Segmentación semántica de edificios 3D basada en gráficos para análisis de sostenibilidad

Se propone un método basado en gráficos para segmentar los modelos de construcción 3D en componentes semánticamente independientes. Para cada edificio, primero creamos un gráfico (N, E) en el que los nodos N representan la superficie del modelo de construcción 3D y los bordes E estándar para las líneas compartidas entre dos nodos de superficie. Luego, el gráfico se simplifica agregando las superficies coplanares conectadas. A continuación, se detectan los puntos de articulación del gráfico simplificado y se eliminan la literalidad para segmentar el gráfico en componentes biconectados. Los atributos semánticos de cada componente se detectan de acuerdo con sus características geométricas y la relación espacial con los demás. Finalmente, los componentes del edificio con información semántica y geométrica se utilizan para simular el proceso de sostenibilidad de la ciudad, como el consumo de energía. Según los resultados experimentales, el método propuesto puede extraer de forma eficaz los datos semánticos de los modelos de construcción LoD3 / LoD2 para herramientas de simulación de sostenibilidad como EnergyPlus.


Palabras clave

Xu Yang nació en China en 1995. Actualmente está trabajando para obtener el doctorado. Licenciado en el Departamento de Ciencia y Tecnología Informática, Universidad de Minería y Tecnología de China, Xuzhou, China, donde está investigando los sistemas de medición distribuida, big data y redes de sensores.

Qiang Zhu Actualmente está trabajando para obtener el título de Doctor en Medicina en el Departamento de Ciencia y Tecnología de la Computación, Universidad de Minería y Tecnología de China, Xuzhou, China, donde investiga la localización de interiores y las redes de sensores.

Peihao Li nació en China en 1994. Actualmente está trabajando para obtener el título de Doctor en Medicina en el Departamento de Ciencia y Tecnología Informática de la Universidad de Minería y Tecnología de China, Xuzhou, China, donde investiga la localización de interiores y las redes de sensores.

Pengpeng Chen nació en China en 1983. Recibió el Ph.D. Licenciatura en 2011 del Departamento de Ciencia y Tecnología de la Computación, Ocean University of China, Qingdao, China. Actualmente es profesor en el Departamento de Ciencia y Tecnología de la Computación, Universidad de Minería y Tecnología de China, Xuzhou, China. Sus principales intereses de investigación son las redes de sensores, los sistemas de medición distribuida, la red de observación del océano y el modelado de datos. Ha publicado más de 20 artículos académicos en importantes revistas académicas nacionales y extranjeras. Ha presidido la National Natural Science Foundation, la China Postdoctoral Science Foundation, el State Key Laboratory Open Fund y otros proyectos.

Qiang Niu nació en 1974 en China. Recibió el Ph.D. Licenciatura del Departamento de Ciencia y Tecnología de la Computación, Universidad de Minería y Tecnología de China, Xuzhou, China. Actualmente es profesor y decano asociado del Departamento de Ciencia y Tecnología de la Computación, Universidad de Minería y Tecnología de China, Xuzhou, China. También es subdirector del Centro de Investigación de Ingeniería de Información de Minas en la Industria del Carbón de China. Sus principales intereses de investigación son el procesamiento inteligente de información, la inteligencia artificial y el reconocimiento de patrones, el aprendizaje automático y la minería de datos y otros aspectos de la investigación. Ha publicado más de 20 artículos académicos recuperados por SCI.


¿Qué programas de software se utilizan para dibujar diagramas de física y cuáles son sus méritos relativos?

Sin duda, la gente usa una variedad de programas para dibujar diagramas de física, pero no estoy familiarizado con muchos de ellos. Por lo general, dibujo cosas a mano en GIMP, que es poderoso en algunos aspectos, pero lleva mucho tiempo hacer cosas como dibujar círculos o flechas porque las hago a partir de herramientas más primitivas. También es difícil ser preciso.

Sé que algunas personas usan LaTeX, pero no estoy muy seguro de cuán versátil o fácil es. Las únicas otras herramientas que conozco son Microsoft Paint y las herramientas integradas en Microsoft Office.

Entonces, ¿qué herramientas suelen utilizar los físicos? ¿Cuáles son sus puntos buenos y malos (características, facilidad de uso, portabilidad, etc.)?

Estoy buscando una herramienta con alta flexibilidad y mínima curva de aprendizaje / tiempo de desarrollo. Si bien me gustaría dibujar a mano y arrastrar y soltar formas prefabricadas, también quiero especificar las ubicaciones exactas de curvas y formas con ecuaciones cuando necesito una mayor precisión. Además, la funcionalidad de programación mínima sería una buena característica adicional (es decir, la capacidad de ejecutar un bucle que dibuja una serie de líneas con un parámetro variable).

Por favor recomiende algunas piezas de software si son buenas para diferentes situaciones.


    La creación de diagramas (incluido el trazado de funciones) se puede lograr utilizando PSTricks (recomendado porque es más rápido y más fácil de aprender pero poderoso) o TikZ u otros. El código anterior está escrito en PSTricks, necesita cargar usepackage .

Defina un lienzo en el que dibujará.

(-4.25, -1.25) representa el punto inferior izquierdo de su lienzo y (4.25,2.25) es el punto superior derecho.

Defina la función a graficar.

En este ejemplo, elegí y = sin (2x) +1/2.

En PSTricks, podemos especificar un punto de varias formas. (* & ltx-value & gt ) es uno de ellos. Así (* 1 < f (x) +0.5>) matemáticamente significa un punto (x, y) donde x = 1 y y = f (1) +0.5.

Compile el archivo de entrada con xelatex o la secuencia combinada latex-dvips-ps2pdf.


Ver el vídeo: EXPORTAR de SketchUp a AutoCad. Plantas Vistas Cortes Secciones Alzados Fachadas Planos 2D (Octubre 2021).