Mapa 2D que muestra el análisis de ráfagas

Autor: doremi

En la actualidad, la mayor parte de la gestión del sistema de tuberías se realiza mediante el uso del cliente 3D, y el análisis de rotura de tuberías también se muestra en el cliente 3D. Pero recientemente, ha habido muchas llamadas de clientes preguntando cómo implementar algunas funciones de análisis de tuberías en mapas bidimensionales. Por lo tanto, este artículo presentará algunas ideas y el proceso de implementación de cómo realizar un análisis de squib en un mapa bidimensional.
#### 1. Preparación de datos
Datos 3D
Aunque se dice que el análisis de rotura de tubería se realiza en el mapa 2D, el módulo de análisis de red 3D todavía se llama, por lo que es necesaria la preparación de datos 3D.
Usaré los datos de muestra del análisis de red 3D que viene con iServer, incluidos los datos de puntos 3D, los datos de línea 3D y los datos de red 3D.
Tabla de atributos de datos de red 3D:
Escriba la descripción de la imagen aquí
datos 2D
Dado que la consulta de datos 3D no contiene información geométrica, no se puede dibujar en la parte frontal, por lo que se necesita una pieza de datos 2D para completar la consulta y el dibujo. Los datos 3D se pueden convertir en datos 2D a través de la herramienta de conversión de tipo que viene con el software SuperMap iDesktop. El conjunto de datos convertido en líneas de puntos bidimensionales se guarda como un mapa.
Escriba la descripción de la imagen aquí
#### 2. Servicio de publicación
Publique el espacio de trabajo preparado como servicio de mapas y servicio de análisis de red 3D.
#### 3. El código realiza
la carga del mapa bidimensional como mapa base

Layer = new SuperMap.Layer.TiledDynamicRESTLayer("底图", url, {transparent: true, cacheEnabled: true},{maxResolution:"auto"});

El análisis de voladura primero necesita seleccionar el tubo de voladura. Teniendo en cuenta que no es tan conveniente seleccionar la línea con el mouse, recomiendo usar la consulta de distancia para seleccionar el punto de voladura.

	//查询二维地图的数据,保存查询到的爆管ID
	queryParam = new SuperMap.REST.FilterParameter({name: "PipeLine2D@Pipe3D"});
	queryByGeometryParameters = new SuperMap.REST.QueryByDistanceParameters({
                    queryParams: [queryParam],
					isNearest:true,		//选择最近查询,并且只返回一个
					expectCount:1,		
                    geometry: drawGeometryArgs.feature.geometry,
					distance:0.0001    //设置距离范围,超过此范围就不返回结果
                });

Escriba la descripción de la imagen aquí

También es necesario enumerar la matriz de ID de nodos de instalaciones especificadas en el análisis de red de instalaciones 3D; en términos generales, es la válvula

Var sourceNodeIDs='[24,25,34,37,53,61,64,67,73,78,125,127,132,152,161,196,209,212,221,269,276,283,294,299,315,332,349,367,383,423,435,438,444,473,488]';

Consulte la válvula más cercana aguas arriba de la tubería de explosión y las instalaciones aguas abajo de la válvula.
Llame a SuperMap.REST.FacilityAnalystUpstream3DService las instalaciones clave aguas arriba para encontrar la clase de servicio del recurso.

var parameter = new SuperMap.REST.FacilityAnalystUpstream3DParameters({
sourceNodeIDs: sourceNodeIDs, //三维设施网络分析中指定的设施结点ID数组,也就是阀门,上面定义了一部分节点,不能为空,如 [84,85]
					edgeID: BP, //上一步保存的爆管ID
					nodeID: null,
					isUncertainDirectionValid: true //三维设施网络分析中指定不确定流向是否有效
				});

Procesamiento de resultados, el resultado devuelto es la matriz de ID de la válvula más cercana aguas arriba de la posición del cebo y el segmento de tubería aguas abajo de la válvula

function facilityAnalystUpstream_processCompleted(facilityAnalystUpstream3DEventArgs) {
				var result = facilityAnalystUpstream3DEventArgs.result;
				var edgeID = result.edges;
				var nodeID = result.nodes[0];   //只返回了ID,所以还得查询二维数据
				queryBySQL(nodeID,edgeID);
				//alert("需要关闭的最近阀门是:"+nodeID+","+"\n"+"该阀门下游管段:"+edgeID);

Dado que la consulta de datos tridimensionales no devuelve objetos geométricos, es necesario guardar el ID de borde y el ID de nodo y realizar otra consulta en los datos bidimensionales. Cabe señalar que el resultado devuelto por el análisis 3D es una cadena, que debe procesarse.

	//查询节点
	queryParam1 = new SuperMap.REST.FilterParameter({
                    name: "PipePoint2D@Pipe3D",
                    attributeFilter: "SMID="+nodeID
                });
    //查询弧段
	queryParam2=new SuperMap.REST.FilterParameter({
                    name: "PipeLine2D@Pipe3D",
                    attributeFilter: "SMID in "+str    //str为处理好的edgeID
                });
	//多条件同时查询
	queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({
                    queryParams: [queryParam,queryParam2],
                });

Finalmente, agregue los resultados de la consulta a vectorLayer para mostrarlos.
Escriba la descripción de la imagen aquí

Ráfaga de tuberías seguimiento de instalaciones aguas abajo
Llame a SuperMap.REST.FacilityAnalystTracedown3DService clase de servicio de recurso de seguimiento aguas abajo
Parámetros:

var parameter = new SuperMap.REST.FacilityAnalystTracedown3DParameters({
					edgeID: BP,  //爆管ID
					nodeID: null,
					weightName: 'SMLENGTH',	//三维设施网络分析中指定的权值字段名称
					isUncertainDirectionValid: true
				});

El procesamiento de resultados es el mismo que el análisis de válvula reciente, guarde el ID de arco de resultado devuelto por el análisis, consulte los datos bidimensionales y muéstrelos en vectorLayer.Escriba la descripción de la imagen aquí

Lo anterior es el proceso de visualización e implementación de los métodos de análisis más comunes en el análisis de tuberías rotas en el mapa bidimensional. Otros, como la búsqueda de sumideros y la búsqueda de fuentes, consulte la documentación de la API, y la idea de implementación es la misma. .
Se adjunta el enlace del programa de demostración http://support.supermap.com.cn/product/CodeLibrary.aspx?id=531

Supongo que te gusta

Origin blog.csdn.net/supermapsupport/article/details/50698860#comments_27045047
Recomendado
Clasificación