¿Cómo trazar una capa de línea (red de carreteras) a través de puntos?

8

Tengo una red de carreteras (púrpura), archivos de puntos (verde) y un punto de inicio (amarillo).

Quiero rastrear los archivos de puntos basados ​​en la red de carreteras. Piense en los puntos como postes telefónicos, pero lo que quiero es un mapa que muestre las líneas telefónicas (archivo de forma de línea). Existe un esquema de numeración para los "postes telefónicos", pero no es excelente y, en este caso, supongo que no están numerados.

¿Alguien tiene una solución? Uno que se ve bastante bien es simplemente amortiguar los puntos y luego recortar la red de carreteras de los amortiguadores. Pero quiero algo más completo. Necesita ser automatizado ya que hay 12,000 de los "postes telefónicos"

ingrese la descripción de la imagen aquí

Thad
fuente
1
¿Cómo diferiría la solución que busca, por ejemplo, simplemente seleccionando las características de la carretera que están lo suficientemente cerca de cualquier punto? ¿Qué quiere decir exactamente con "más completo"?
whuber
Bueno, el segmento de la carretera puede extenderse pasando el punto 1000 pies. Solía ​​completar porque cuando recortaba de los buffers la red estaba entrecortada. Lo que debería haber dicho fue más preciso.
Thad
1
¡Tienes razón, no quieres cortar de los buffers! Parece que quiere retraer de alguna manera los segmentos de la carretera en los que se pueden colocar los postes para que esos segmentos no se extiendan demasiado más allá de las carreras de los postes. Pero, ¿cómo distinguirías una brecha a lo largo de una carrera larga de dos carreras distintas? ¿Puede proporcionar un criterio para esto?
whuber
Bueno, la brecha no creo que sea un problema. Las líneas negras representan áreas de miniservicio que son internas al área. Bueno, la razón, aparte de tenerlo solo para visualización, es para la planificación, y posiblemente eventualmente agregue más información dentro de los archivos de línea de la que podría almacenarse (utilizable) dentro de los archivos de puntos (por ejemplo, diámetro).
Thad

Respuestas:

9

Hay muchas formas de lidiar con esto, pero algunas se destacan como generales y efectivas. Para entender esto, enumeremos algunos de los problemas que podrían tener que ser tratados:

  • Podría haber brechas entre los polos que son tan grandes que el algoritmo podría ver las brechas como rupturas reales en el sistema de transmisión.

  • Puede haber algunos segmentos cortos de carretera, cruciales para conectar las carreteras a una red, que sin embargo no tienen postes cerca de ellos. Estos segmentos no se seleccionarían por proximidad a los polos, pero son una parte necesaria de la solución.

  • Puede haber postes no accesibles por carretera desde el punto central. Estos polos pueden ser partes de otras redes de transmisión que se originan en otros puntos centrales.

También estoy adoptando la postura de que, dado que ya tiene una red de polilínea (las carreteras), sería ventajoso explotarla en lugar de conectar los puntos de polo con una polilínea completamente nueva, que probablemente no sea paralela a las carreteras muy bien.

Estas consideraciones sugieren que los ingredientes de una buena solución incluirían algunos pasos clave:

  1. Calcule las distancias del camino desde el punto central a todos los polos.

  2. Identifique los polos que tienen distancias máximas localmente a lo largo de su segmento de carretera particular : es decir, ninguno de sus vecinos a lo largo del mismo segmento tiene distancias mayores.

  3. Forme los caminos más cortos desde estos máximos locales hasta el punto central.

La unión de estos caminos más cortos trazaría la red de transmisión. (De hecho, el paso 2 no es realmente necesario, pero reduciría en gran medida el cálculo involucrado en el paso 3.)

Los pasos 1 y 3 se pueden llevar a cabo utilizando una representación de red (en Network Analyst) o una representación ráster (en Spatial Analyst, utilizando un cálculo de CostDistance o FlowAccumulation). El paso 2 es un resumen directo de la base de datos: después del paso 1, cada polo tendrá su segmento de carretera y distancia como atributos. Encuentre la distancia máxima por segmento de carretera y seleccione los polos que alcanzan esas distancias máximas.

Hay algunas posibles situaciones problemáticas:

  1. Algunos postes pueden no estar cerca de las carreteras. No hay nada en la declaración del problema que nos diga qué se debe hacer al respecto. Se pueden manejar automáticamente con cálculos ráster (una cuadrícula de costos apropiada asignará altas impedancias a las celdas que no son de carretera, pero no impedancias infinitas, lo que permite que los polos aislados se conecten a las carreteras más cercanas, pero desafortunadamente no entre sí). Al menos, después de obtener la solución en el paso 3, puede seleccionar todos los polos que no están en esa red y considerar cómo se deben manejar (tal vez creando conexiones manualmente para ellos o tal vez con una solución de árbol de expansión mínima euclidiana).

  2. Si algunos segmentos de la carretera forman bucles, debe omitir el paso 2, de lo contrario, podrían perderse partes de esos bucles.

  3. Las polilíneas viales podrían no formar realmente una red conectada. Puede haber pequeños espacios entre los segmentos de la carretera (a veces de solo milímetros) que dividen una red que parece conectada visualmente. Este es un problema de calidad de datos que plagaría cualquier solución, excepto algunas basadas en ráster.


En un momento mencioné FlowAccumulation de pasada. Esto puede sorprender a la gente: ¿qué tiene que ver este problema con los arroyos y las cuencas hidrográficas? Mira fijamente la imagen por un rato. Imagine el punto de origen como el punto bajo en un paisaje y las carreteras con postes telefónicos como rastros de corrientes que fluyen hacia ese punto bajo. Si podemos crear una superficie para la cual los caminos realmente sonlas corrientes, entonces podemos dejar caer un poco de "lluvia" en la ubicación de cada poste y fluir cuesta abajo. Los puntos que se mojan son la solución que buscamos: conectan los polos de manera eficiente en una red que sigue las carreteras. Un cálculo apropiado de CostDistance, con una baja impedancia distinta de cero a lo largo de las carreteras y una impedancia extremadamente alta pero no infinita fuera de las carreteras, creará exactamente ese tipo de superficie. Otra forma de crear esa superficie es desde la cuadrícula de distancia euclidiana para las carreteras. Eso es perfecto, excepto que las carreteras están niveladas. Tienen que inclinarse; para esto, agregue un múltiplo extremadamente pequeño de las distancias a lo largo de los caminos a la cuadrícula de distancia euclidiana. (La distancia de la carretera todavía requiere un cálculo de CostDistance, que es costoso, pero esta vez solo debe realizarse para las celdas de la carretera, en lugar de todas las celdas de la cuadrícula, lo que lo acelerará en órdenes de magnitud. Eso nos permite usar una cuadrícula de resolución extremadamente alta si lo deseamos, evitando así posibles errores de discretización realizados con cuadrículas gruesas).

whuber
fuente
7

Básicamente, siguiendo el enfoque de Whuber, intentaría esto:

  1. Divida la carretera en el punto de partida (amarillo).
  2. Agregue tres campos a las carreteras: FROMDIST, TODIST y PARENTROAD_ID. FROMDIST almacenará la distancia desde el punto de partida para el nodo de origen de la polilínea, del mismo modo para TODIST. PARENTROAD_ID almacenará el ROAD_ID de la carretera que está más cerca del punto de partida.
  3. Construya un árbol de expansión mínimo compuesto por secciones de carretera, luego calcule los valores FROMDIST, TODIST y PARENTROAD_ID en consecuencia.
  4. Agregue tres campos a la clase de entidad de puntos: ROAD_ID, DISTANCE y PARENTPOINT_ID.
  5. Para cada punto, encuentre la entidad de carretera más cercana, luego interpole un valor DISTANCE basado en FROMDIST y TODIST de la polilínea junto con la distancia a lo largo de la polilínea calculada a través de ICurve.QueryPointandDistance .
  6. Para cada punto, calcule PARENTPOINT_ID, que representa la ID del siguiente punto más cercano al punto de partida.
  7. Para cada punto, cree un linesegment entre sí y el punto referenciado por PARENTPOINT_ID. Escriba esta polilínea en una clase de entidad de salida.
Kirk Kuykendall
fuente
3

Me parece que realmente estás buscando una red geométrica en una geodatabase.

¿Qué pasaría si creara una red geométrica donde sus carreteras servirían como sus "líneas troncales" y luego simplemente agregue "líneas de conexión" que corren perpendicularmente desde sus carreteras hasta sus puntos? Entonces debería ser capaz de " establecer y ver la dirección del flujo, cambiar la configuración del análisis, agregar indicadores y barreras a los análisis y realizar diversas tareas de rastreo " (consulte la sección llamada "Barra de herramientas de Network Analyst de utilidad"). Consulte también " Acerca del rastreo en redes geométricas " para obtener más detalles sobre otros tipos de análisis que puede hacer con una red geométrica.

Esto requeriría una pequeña configuración, pero al crear un proceso de automatización para conectar los puntos a la red, debería ser bastante rápido y fácil de actualizar a medida que se agregan nuevos puntos a la red.

NOTA : " Aunque las redes geométricas se pueden crear y editar en ArcInfo y ArcEditor, son de solo lectura en ArcView ". ( De "Construcción de una red geométrica a partir de clases de entidad simple existentes" )

RyanKDalton
fuente
1

Como entrante (no es la solución completa).
Probablemente necesitemos conocer el formato de datos, la versión y el nivel de licencia de sus arcgis.

Lo que veo es utilizar la red de carreteras como un sistema de referencia lineal y luego "volver a numerar" los polos en la secuencia correcta .
Entonces debería poder usar una de varias herramientas (estoy seguro de que la respuesta de otra persona lo definirá más claramente) para crear polilíneas a partir de los polos.
Aquí está el tutorial de arcgis 10 para referencias lineales

Brad Nesom
fuente
Formato de datos: ¿archivos de forma? tener arcinfo 10. También tener analista de red, pero solo en arc9.3 (versión de prueba). Interesante leeré sobre referencias lineales.
Thad