Más

Cómo voltear una polilínea basándose en una clase de entidad de polilínea separada que está a la izquierda o a la derecha

Cómo voltear una polilínea basándose en una clase de entidad de polilínea separada que está a la izquierda o a la derecha


No puedo entrar en detalles sobre cuáles son realmente estas características, pero me referiré a ellas como la línea verde y la línea negra. Las líneas negras no pueden superponerse nunca a los polígonos azules. Las líneas negras tienen una orientación específica dependiendo de qué lado esté la línea verde más cercana.

Lo que estoy tratando de hacer es crear un script que pueda determinar si la línea verde más cercana es derecha o izquierda a la línea negra, luego determinar si la línea negra está orientada correctamente o no según las reglas que dibujé. dentro de la imagen adjunta. Si no es así, cambiaría la línea negra.

He utilizado la herramienta FeatureVerticesToPoints_management y la herramienta SplitLine_management para dividir las polilíneas en partes individuales y recuperar las coordenadas X e Y del punto medio, así como las coordenadas X e Y de los vértices individuales de ambas líneas.


He estado usando la fórmula (Bx - Ax) * (Cy - Ay) - (By - Ay) * (Cx - Ax) donde A y B son los vértices de la línea verde y C es el vértice del punto medio de la línea negra línea. Esto ha creado un valor positivo o negativo que significa qué punto lateral C está encendido en comparación con la línea, pero no sé cómo configurar las reglas sobre cómo se debe orientar la línea negra después. Creo que la respuesta está en verificar el acimut de la línea negra.

Mi idea original era que usando esa fórmula podía determinar de qué lado estaba la línea negra, luego verificar si el acimut de la línea negra está dentro de los 180 grados del acimut de la línea verde, y si no lo estuviera, se voltearía la línea negra. Pero dado que la línea verde se puede orientar en su dirección opuesta y ser aceptable, la regla de 180 grados se convierte en una regla de 360 ​​grados y la línea negra puede ir en la dirección que desee.

He estado calculando el acimut de cada línea usando:

def CalculaAzimuth (linea): if (hasattr (linea, 'tipo') y linea.type == 'polilínea'): xf = linea.firstPoint.X yf = linea.firstPoint.Y xl = linea.lastPoint.X yl = linea.lastPoint.Y dX = xl - xf dY = yl - yf PI = math.pi Azimut = 0 # Caso predeterminado, dX = 0 y dY> = 0 si dX> 0: Azimut = 90 - math.atan (dY / dX) * 180 / PI elif dX <0: Azimut = 270 - math.atan (dY / dX) * 180 / PI elif dY <0: Azimut = 180 return Azimuth else: return False

Espero haber entendido correctamente lo que está preguntando, aquí hay un método para determinar si un punto está a la izquierda oa la derecha de un vector.

Dado el triángulo creado a partir del primer y segundo punto de la línea negra y el punto más cercano de la línea verde.

Determinar si es en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj indicará si el punto más cercano está en el lado izquierdo o derecho del vector inicial.

Calculando el determinante donde x1, y1 = Punto 1; x2, y2 = Punto 2 y x3, y3 = Punto más cercano.

El valor positivo para(x2 * y3 + x1 * y2 + x3 * y1) - (x2 * y1 + x1 * y3 + x3 * y2)indica el lado izquierdo mientras que el negativo es el lado derecho.

Entonces, si esto arroja un valor positivo, deberá invertir su línea.


Dependiendo de la posición de los segmentos de línea, este proceso puede ayudar:

  1. Cree polígono utilizando puntos finales y el orden de puntos existente:

  1. Crear polígono usando puntos finales: orden existente de puntos para la línea negra, línea verde invertida:
  2. Compara las áreas de 2 polígonos. Se muestran como etiquetas rojas en las imágenes. Tenga en cuenta que es más pequeño para segmentos de dirección "iguales". También puede comparar el recuento de piezas de las formas resultantes.

Este int no cambia el valor cuando su aplicación está dibujando las polilíneas para cada ruta. Si desea diferentes colores para diferentes polilíneas, deberá realizar cambios para que cambie el valor de esta variable. Por ejemplo, podría tener un contador establecido inicialmente en 0 en el bucle for que se incrementa cada vez que se dibuja una polilínea. Luego, puede agregar un condicional para establecer el color según el recuento. Volveré a escribir su función onDirectionsFinderSuccess:

Relacionada

Preguntas de Hot Network


Estoy en Maximo Spatial 7.6.0.3 pero no debería estar muy lejos ya que los conceptos y el diseño siguen siendo los mismos.

CALCULATEDX y CALCULATEDY son campos que Maximo Anywhere utiliza para trazar órdenes de trabajo en un mapa móvil. Se actualizan mediante la tarea cron WoAutoLocateCronTask. Estos dos campos, al menos en la versión en la que estoy, no serán utilizados por Maximo para representar nada en la pestaña del mapa.

Debe tener cualquiera de estas referencias disponibles para trazar una orden de trabajo en el mapa:

  • Dirección de servicio con longitudex y latitud poblada
  • Una clase de entidad en su orden de trabajo que la vincula a su SIG
  • Un activo que está vinculado a su SIG a través de una clase de entidad.
  • Una ubicación que está vinculada a su SIG a través de una clase de entidad.

Nota: en los últimos tres casos anteriores, la información de geometría vive en GIS, no es necesario almacenarlos en Maximo.

Maximo Spatial 7.6.x vincula sus objetos MBO a sus características GIS a través de servicios web publicados en un servidor GIS (sé que ha habido algunos cambios en Spatial 7.6.1 pero, básicamente, todavía usa servicios web para ubicar sus registros).

Lo que hace la función de creación automática es agregar un registro a su tabla de entidades GIS y generar el enlace a través del atributo de clase de entidad. Naturalmente, debe tener sus servicios de mapas, clases de entidades y todo lo demás configurado en la aplicación Administrador de mapas. La creación automática intentará determinar la geometría mirando la dirección del servicio (si tiene LONGITUDEX y LATITUDEY pobladas) o la referencia de activo / ubicación (si están vinculados a una característica en GIS). La creación automática debe comenzar en algún lugar, no puede simplemente crear un par de coordenadas de la nada para una orden de trabajo.

Maximo Spatial no almacena la geometría en Maximo. Se basa en GIS para mostrarlos en el mapa. Definitivamente puede escribir lógica para obtener la geometría de una función GIS. Si desea utilizar esa información para mostrar sus órdenes de trabajo en el mapa, debe almacenarlas en los campos LONGITUDEX y LATITUDEY de la dirección de servicio asociada, no en los atributos de órdenes de trabajo CALCULATEDX y CALCULATEDY.


2 respuestas 2

Intente obtener la geometría directamente del objeto IPointCollection, algo como esto:

Aplique la geometría a la propiedad de la forma usando la interfaz IFeature:

Por cierto: si está creando una entidad dentro de una clase de entidad, ¿por qué no utilizar las interfaces IFeature e IFeatureClass, en lugar de ITable e IRow? Hay muchos problemas al usar la cadena "Forma" directamente para obtener el campo de forma, debido a que el nombre depende del tipo de base de datos.

Hay algunas cosas en su código que no mencionaré en los comentarios para facilitar su lectura.

En primer lugar, definitivamente debería cobrar los resultados de la búsqueda de un campo. No se recomienda hacer esto dentro de un bucle.

Sin embargo, y este es el segundo punto, no necesitará buscar el campo de forma, simplemente puede tomar el campo de geometría de la clase de entidad, sin necesidad de lanzar a ITable.

En tercer lugar, su bucle nunca termina ya que su referencia a _outVertex es siempre la misma. Supongo que desea obtener el siguiente vértice dentro de su colección usando _enumVertex.Next (out _outVertex, out partIndex, out vertexIndex).

En cuarto lugar, no es necesario enviar a IGeometry como ya debería hacerlo IPoint. heredar esa interfaz. Por lo tanto, todo lo que implemente este último también debería implícitamente implementar la interfaz anterior.

En quinto y último lugar, puede acceder directamente e iterar el IPointCollection sin convertirlo en IEnumVertex.


8 Respuestas 8

¡Sí tu puedes! Solo probé esto y funciona muy bien, ¡esto es increíble! Todavía no funciona con html, pero sí con svg.

Y mi test.svg se ve así:

Puede agregar el SVG como imagen de fondo de un vacío: después o: antes.

asegúrese de que su svg no contenga comillas dobles y codifique cualquier símbolo #.

Herramienta conveniente para codificación de URL-codificador SVG

El uso de sprites CSS y uri de datos brinda beneficios extra interesantes como una carga rápida y menos solicitudes Y obtenemos soporte para IE8 mediante el uso de image / base64:

Para ampliar más este tema. En caso de que quieras agregar Font Awesome 5 iconos que necesita para agregar algo de CSS adicional.

Los iconos por defecto tienen clases svg-inline - fa y fa-w- *.

También hay clases de modificadores como fa-lg, fa-rotate- * y otras. Debe verificar el archivo svg-with-js.css y encontrar el CSS adecuado para eso.

Debe agregar su propio color al ícono de CSS; de lo contrario, será negro de forma predeterminada, por ejemplo, fill = '% 23f00' donde% 23 está codificado #.

Tenga cuidado de que todas las otras respuestas tengan algún problema en IE.

Tengamos esta situación: botón con el ícono antepuesto. Todos los navegadores manejan esto correctamente, pero IE toma el ancho del elemento y escala el contenido anterior para ajustarlo. JSFiddle

La solución es establecer el tamaño antes del elemento y dejarlo donde está:

Las soluciones de imagen de fondo + tamaño de fondo también funcionan, pero son poco prácticas, ya que debe especificar los mismos tamaños dos veces.


CONCLUSIONES

Este documento introdujo un método automatizado para la evaluación de la precisión de las características de las crestas y los valles utilizando DEM de alta resolución, como los derivados de datos LiDAR en el aire. También se presentó el desarrollo de una barra de herramientas complementaria de Python para la evaluación automatizada de la precisión de las entidades de crestas y valles en ArcGIS. En comparación con algunos métodos existentes para la evaluación de la precisión posicional de las características lineales, el nuevo método tiene dos características principales: (1) Dado que los puntos de referencia se obtienen de un DEM de alta resolución sobre la marcha, no es necesario disponer fácilmente de una fuente de referencia. disponible como una capa de características lineales en SIG y (2) el nuevo método no solo produce resultados estadísticos de precisión posicional siguiendo el Estándar Nacional de Precisión de Datos Espaciales, sino que también identifica ubicaciones donde ocurren inexactitudes. La segunda función permite a los usuarios ejecutar una evaluación de precisión, identificar y corregir los errores y volver a ejecutar la evaluación de precisión hasta que se produzcan resultados de precisión satisfactorios. Los experimentos iniciales del complemento Python utilizando DEM derivados de LiDAR de dos áreas de estudio muestran que solo se necesitan segundos para completar todo el proceso descrito en el pseudocódigo para ∼100 puntos aleatorios.

Aquí se analizan algunas limitaciones del método. En primer lugar, se deben tener en cuenta la escala y la resolución de la fuente y la referencia probadas. Por ejemplo, comparar características de crestas y valles a escala regional (pequeña escala) con DEM de alta resolución (menos de 5 m) puede no ser adecuado porque los cambios menores en la fuente probada (como la generalización de polilíneas) pueden crear grandes errores posicionales cuando en comparación con los DEM de alta resolución. En segundo lugar, incluso para las polilíneas de valle a gran escala, el método funciona mejor para los valles en forma de V que para los valles en forma de U, porque los valles en forma de U pueden tener múltiples mínimos locales que dificultan la evaluación automatizada. Se necesitan más estudios para abordar la segunda limitación.


5 respuestas 5

Este es un ejemplo simple y directo que usa un ícono Font Awesome codificado en base64 como imagen de fondo para el cuadro de selección.

Además, un enlace a la aplicación Icomoon, que se utiliza para crear la imagen png del icono utilizado.

El navegador dibuja el icono de flecha de selección predeterminado. No hay una API para que le diga al navegador que reemplace el ícono de flecha, por lo que deberá cambiar el estilo del elemento seleccionado y superponer sus propias flechas. Puede dibujar sus propias flechas que tengan un estilo idéntico a las flechas de su navegador, pero recuerde que el icono predeterminado será diferente para otros navegadores y sistemas operativos.

Para cambiar el estilo del elemento seleccionado utilizando solo CSS, deberá apuntar tanto al elemento seleccionado como a su elemento p principal. La selección tiene una ID, que es fácil de orientar, pero apuntar a ese elemento p específico no es fácil solo con el código que ha proporcionado. Sin embargo, mirando el enlace del sitio de Wordpress provisto, hay una etiqueta justo antes de la p, con el formato & ltlabel for = "search-box-filter_31" & gtName of Institution & lt / label & gt. Esto significa que el elemento p se puede orientar utilizando la etiqueta del selector CSS [for = search-box-filter_31] + p.

Primero debe asegurarse de tener suficiente espacio para su nueva flecha. Esto se logra aumentando el ancho de la selección por el ancho de sus nuevas flechas y agregando la misma cantidad al relleno derecho del padre p. Una forma de cambiar el ancho de la selección es usando calc (100% + 30px). Si sus nuevas flechas tienen el mismo ancho que los iconos predeterminados, es posible que no necesite hacer esto, pero en algunas configuraciones sus flechas pueden superponerse al contenido de la selección.

Además, el elemento p debe encogerse para adaptarse a su contenido. Hay algunas formas de hacer esto, pero en su situación, la que tiene menos probabilidades de romper el formato es configurar display: table.

Finalmente, puede usar el pseudo elemento :: after en p para crear las flechas deseadas y superponerlo al final de su elemento seleccionado, ocultando la flecha predeterminada. En el siguiente ejemplo, creé las flechas con SVG en línea, pero puede usar cualquier imagen de fondo que mejor se adapte a su situación. Configure el elemento :: after para que tenga la posición: absoluta y modifíquelo para que se ajuste exactamente al lado derecho de la selección. Para crear el fondo degradado azul debajo de las flechas que tiene en su imagen, use varios fondos, siendo el primero sus flechas y el segundo un degradado CSS.

Tenga en cuenta que dado que el elemento :: after está en la parte superior de la selección, al hacer clic en las flechas no se mostrarán las opciones. Puede configurar eventos de puntero: ninguno para pasar los clics, pero esto no funcionará en IE.

El CSS está debajo, o alternativamente puede verlo en el codepen https://codepen.io/jla-/pen/ZqbWMj

El resultado (seguido de la selección predeterminada tal como aparece en Firefox en Linux):


Cómo invertir una polilínea en función de una clase de entidad de polilínea separada que se encuentra a la izquierda o la derecha de ella - Sistemas de información geográfica

Si lo desea, aún puede usar su cuenta de Servicios para iniciar sesión. Sin embargo, con las opciones de autenticación de certificados y Kerberos ahora disponibles, puede reducir la cantidad de veces que necesita escribir su contraseña a lo largo de su semana laboral. Siga leyendo para ver qué opción es la adecuada para usted. -> Puede elegir cualquiera de las siguientes opciones para acceder a una aplicación habilitada para SSO

Servicios Nombre de usuario y contraseña - Defecto

Sistema Fermi Windows en el sitio - Recomendado para usuarios que
- son en el sitio (o iniciado sesión en VPN) y
- utilizar una computadora con Windows en el dominio FERMI (esto incluye la gran mayoría de las computadoras con Windows de propiedad de Fermilab) y - usar un navegador Internet Explorer, Edge o Chrome

Kerberos (FERMI o FNAL) - Recomendado para usuarios que
- son en el sitio (o iniciado sesión en VPN) y
- use una computadora Mac o Linux / Unix y
- utilice un navegador configurado para la autenticación Kerberos y
- tener un ticket Kerberos válido del reino FNAL.GOV o FERMI.WIN.FNAL.GOV

Certificado Fermilab CILogon - Recomendado para usuarios que
- usar una contraseña o un dispositivo o computadora protegida de otra manera, que no se comparte con otros y
- utilizar cualquier navegador en cualquier sistema operativo, incluidos dispositivos móviles y
- tener un certificado CILogon Silver CA importado en su navegador que se obtuvo con las credenciales de Fermilab


Abstracto

El escaneo a BIM de edificios existentes tiene una gran demanda en la industria de la construcción. Sin embargo, la creación de estos modelos es costosa y requiere mucho tiempo. La automatización de este proceso todavía es objeto de investigación en curso. Los obstáculos actuales incluyen la interpretación y reconstrucción de datos de nubes de puntos sin procesar, lo que se complica por la complejidad de las estructuras construidas, la gran cantidad de datos a procesar y la variedad de objetos en el entorno construido. Esta investigación tiene como objetivo superar los obstáculos actuales y reconstruir la estructura de los edificios de manera no supervisada. Más específicamente, se presenta un método novedoso para reconstruir automáticamente los objetos de pared BIM y su topología. Las contribuciones clave del método son la capacidad de reconstruir diferentes ejes de pared y tipos de conexión y el procesamiento simultáneo de estructuras completas de varios pisos. El método está validado con el conjunto de datos de semántica 2D-3D de Stanford (2D-3D-S).


Comparación de productos

Chief Architect Premier and Interiors incluye diseño 2D, elevaciones, secciones transversales, diseño 3D, visualización 3D y herramientas de dibujo de construcción.

Chief Architect Premier es el mejor producto de software para el diseño comercial ligero o residencial completo, todo lo que se encuentra dentro y fuera de la casa. Premier incluye todas las características de Interiors.

Chief Architect Interiors es ideal para cocinas, baños y diseño de interiores y todo lo que hay dentro de la casa. Se excluyen las herramientas de encuadre y exteriores como el terreno. Chief Architect Interiors es totalmente compatible con Premier.

Representación y visualización 3D

Herramientas de cámara 3D ortográfica y de perspectiva

Cree vistas de presentación 3D y vistas técnicas 2D utilizando herramientas de cámara para representaciones en tiempo real de sus diseños. Utilice capas para activar o desactivar diferentes elementos, como el encuadre. Las vistas de la cámara se pueden nombrar, editar, guardar y copiar. Utilice los controles de configuración 3D para ajustar las opciones y la configuración de la pantalla.

Herramientas de navegación 3D y recorridos virtuales

Cree vistas 3D y navegue, gire, gire, paneo, orbite, incline y avance o retroceda. Utilice las herramientas de dirección de vista para configurar rápidamente la vista en ángulos de arriba hacia abajo, del lado izquierdo, del lado derecho o del fondo.

Ocultar automáticamente las paredes exteriores durante la navegación

Configure las vistas de la cámara de navegación para ocultar automáticamente la parte posterior de las paredes que impiden ver el interior de una habitación pequeña. Utilice las herramientas Ocultar paredes exteriores orientadas a la cámara para navegar fácilmente por habitaciones pequeñas.

Muestra las vistas que se cortan desde la parte superior, inferior, frontal, posterior, izquierda y derecha. Ajuste la cantidad cortada del modelo.

Cree grabaciones detalladas de recorridos a lo largo de rutas que puede guardar y compartir en formatos de video estándar. Agregue fotogramas clave en cualquier punto de la spline para controlar la dirección de la vista, subir o bajar escaleras rápidamente y recorrer el recorrido entre los pisos.

Exportar vistas esféricas de 360 ​​°

Las cámaras Ray Traced y Rendered se pueden compartir localmente y en la nube, y en aplicaciones e integrarse en sitios web para una navegación interactiva. Exportar vistas de renderizado a una resolución de hasta 8192 x 4096.

Técnicas de representación artística

Los modos de renderizado Estándar 3D, Basado en la física, Acuarela, Dibujo de líneas onduladas, Ilustración técnica, Pintura, Vista vectorial, Casa de cristal y DuoTone transforman la apariencia de una escena en tiempo real.

Importe imágenes desde el sitio de construcción o use una escena genérica para agregar fondos realistas a sus representaciones. Configure las cámaras guardadas para aprovechar diferentes fondos para mostrar diferentes escenas para diferentes cámaras en el mismo proyecto.

Representación de trazado de rayos realista de foto

El renderizado de Ray Trace utiliza varios procesadores centrales con iluminación y materiales que se pueden configurar para un renderizado fotográfico realista. Obtenga una vista previa de las representaciones de trazas de rayos a medida que refinan e iteran la calidad de la imagen, exporte la imagen en cualquier momento o definan la duración total de las trazas de rayos. Pause y reanude Ray Traces y ponga en cola varias escenas para su procesamiento. Exporte formatos de imagen comunes para presentaciones y uso de marketing.

Configure los valores predeterminados de la cámara para aprovechar los conjuntos predeterminados en sus planos de plantilla y, para proyectos, por ejemplo, controle los valores predeterminados de dimensiones utilizados para elevaciones de muros frente a secciones transversales.

Vea diseños desde cualquiera de los ocho ángulos de visión isométricos estándar.

Controle la oscuridad de las sombras en las vistas de vectores y las vistas de ilustración técnica mediante un control deslizante de intensidad.

Secciones transversales y elevaciones

Secciones transversales, secciones transversales recortadas hacia atrás y elevaciones

Utilice cámaras ortográficas para crear vistas en alzado o en sección transversal. Las vistas de sección transversal recortada hacia atrás controlan la distancia de corte generada para una sección transversal. Las secciones transversales también se pueden recortar a los lados para controlar el ancho de la vista.

Acotar, anotar y detallar secciones transversales y vistas de alzado

Utilice las herramientas de texto, flecha, dimensión y CAD para agregar detalles completos a sus vistas de sección transversal y elevación. Seleccione y edite, elimine, cambie el tamaño o mueva objetos. Elija entre más de 500 CAD Details en el catálogo premium SSA para superponerlo en su diseño. Utilice la herramienta Auto-Detail para agregar detalles CAD a las vistas de sección transversal y alzado.

Configure fácilmente las llamadas de vista directamente desde el objeto de la cámara. Muestre cámaras de elevación, sección y sección transversal como llamadas en vistas en planta. Agregue etiquetas de rótulos y descripciones. Los rótulos permanecen cuando se envían al diseño.

Complete automáticamente las llamadas de la cámara con información de la página de diseño

Elija incluir la etiqueta de la página de diseño en el texto de la segunda línea de la llamada de la cámara. La información de la llamada se actualiza automáticamente si se cambia la etiqueta de diseño.

Etiquetas automáticas en elevaciones

Genere rótulos y etiquetas de programación para ventanas, puertas, gabinetes y otros elementos en las vistas de sección transversal y alzado.


Ver el vídeo: Invertir líneas o polilíneas en Autocad